加密和解密基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加密和解密基础相关的知识,希望对你有一定的参考价值。

1. 互联网通信为什么需要加密?

2. 加密算法

3. 加密协议


1. 互联网通信为什么需要加密?

??
互联网通信的安全要求:
??通讯数据的保密性、可靠性、可用性。
影响互联网通信安全性的攻击:
??影响保密性:窃听、通信量分析
??影响可靠性:更改、伪装、重放(截取双方通信的报文,并重复发送)、否认(发送报文,但是否认自己发送了)
??影响可用性:Dos、DDos
??
解决方案:通过技术和服务两方面来实现
技术方面:
??加密解密
????传统加密方法:替换加密、置换加密
????现代加密方法:块加密。把整个数据切割成数个等大小的块,前后块之前还要建立起关联关系(块与块之间做与运算后发送)。
服务方面:
??认证机制、访问控制机制
??


2. 加密算法

一、 对称加密:
??特点: 原始数据分割成为固定大小的块(最后一个块比前面块小时,在结尾附加随机数据以填充至相同大小),逐个进行加密;加密、解密时使用同一个密钥;算法公开、计算量小、加密速度快、加密效率高。
??应用场景: 通常在消息发送方需要加密大量数据时使用。
??常用算法:
????DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)、TDEA、Blowfish、Twofish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等
??缺点:
??由于加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。
??在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

二、 公钥加密:
??公钥:从私钥中提取产生;可公开给所有人;pubkey
??私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key
??特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然
??用途:
????1、 数字签名:主要在于让接收方确认发送方的身份
????2、 密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
????3、 数据加密:私钥拥有方对数据加密得到的结果就是数字签名
??常用公钥加密算法:
????RSA, DSA(Digital Signature Algorithm), ELGamal
三、单向加密
??即提出数据指纹(即特征码)。只能加密,不能解密。
??功能:确定数据完整性
??特性:
????1、 定长输出:无论文件大小,输出的特征码长度一定。
????2、 雪崩效应:只要文件内容有改变,输出的特征码就会变化。
??常用算法:
????md5:Message Digest 5, 128bits
????sha1:Secure Hash Algorithm 1, 160bits
????sha224, sha256, sha384, sha512

四、密钥交换: IKE(Internet Key Exchange)
??实现方法常用的有两种:
????1、 公钥加密:用对方公钥加密数据,对方收到后可以用私钥解密。
????2、 DH(Deffie-Hellman): 可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容
五、密钥交换过程:
??加密
????1、甲用单向加密方法计算出要传输数据的特征码(用于数据完整性检验)
????2、甲用私钥加密这段特征码(数字签名),并将结果附加在数据后面(身份验证)
????3、甲生成一个临时的对称密钥,并用密钥加密整段数据(数据加密)
????4、甲获取乙的公钥,用此公钥加密临时的对称密钥,并附加在数据后面,发送给乙。
技术分享图片
??解密:
????1、乙先用自己的私钥解密对称密钥
????2、乙用对称密钥解密整段加密的内容
????3、乙用甲的公钥去解密特征码,能解密,甲的身份得到验证
????4、乙用同样的对称加密算法,计算数据的特征码,如果和解密得到的特征码相同,数据的完整性得到保证。
????漏洞:如何可靠地获取对方的公钥


3. 加密协议

PKI:Public Key Infrastructure(公钥基础设施)
组成:
  签证机构:CA
  注册机构:RA
  证书吊销列表:CRL
  证书存取库:CB
证书的结构以及认证协议标准:由X.509v3定义,包括以下内容
  版本号
  序列号
  签名算法ID
  发行者名称:哪个CA给签发证书
  有效期限
  主体名称
  主体公钥
  发行者的惟一标识
  主体的惟一标识
  扩展
  发行者的签名
SSL:Secure sockets Layer
  Netscape于1994提出的基于 WEB 应用的安全协议。
  版本:V1.0(从未公开过), V2.0, V3.0 (91年发布)
  SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下:
技术分享图片
  SSL协议可分为两层:
    SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持
    SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

TLS: Transport Layer Security传输层安全协议
  用于两个应用程序之间提供保密性和数据完整性。
  TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。
  分层设计:
    1、最底层:基础算法原语的实现,aes, rsa, md5
    2、向上一层:各种算法的实现;
    3、再向上一层:组合算法实现的半成品;
    4、用各种组件拼装而成的各种成品密码学协议软件;

以上是关于加密和解密基础的主要内容,如果未能解决你的问题,请参考以下文章

加密解密技术基础,PKI以及创建私有CA

加密和解密技术基础PKI及创建私有CA

加密和解密技术基础与OpenSSL

数据加密解密基础过程;

加密和解密基础

PHP 基础篇 - PHP 中 DES 加解密详解