图解密码技术笔记(一)对称密码(共享密钥密码)——用相同的密钥进行加密和解密

来源:互联网 发布:李炎恢javascript笔记 编辑:程序博客网 时间:2024/05/22 17:41

最基本的6种密码技术总结:


对称密码:

是使用相同的密钥进行加密和解密的技术,用于确保信息的机密性。在对称密码的算法方面,DES和3DES曾被广泛使用,但今后将过度到AES。尽管对称密码能够确保消息的机密性,但需要解决将解密密钥配送给接收者的密钥配送问题


公钥密码:

是一种用不同密钥进行加密和解密的技术,和对称密码一样用于确保消息的机密性。使用最广泛的一种公钥密码算法是RSA,除此之外还有ELGamal和Rabin等算法,以及相关的Diffie-Hellman密钥交换技术。和对称密码相比,公钥密码的速度非常慢,因此一般都会和对称密码一起组成混合密码系统来使用。公钥密码能够解决对称密码中的密码交换问题,但存在在通过中间人攻击被伪装的风险,因此需要对带有数字签名的公钥进行认证


单向散列函数:

是一种将长消息转换为短散列值得技术,用于确保消息的完整性。在单向散列函数的算法方面,128比特的MD5和160比特的SHA-1曾被广泛使用,但今后将逐步使用能够产生长度更长的散列值得算法。单向散列函数可以单独使用,也可以作为消息认证码,数字签名以及伪随机数生成器等技术的技术的组成元素来使用。


信息认证码:

是一种能够识别通信对象发送的信息是否被篡改的认证技术,用于验证消息的完整性,以及对消息进行认证。消息认证码的算法中,最常用的是利用单向散列函数的HMAC。HMAC的构成不依赖于某一种具体的单向散列函数的算法。消息认证码能够对通信对象进行认证,但无法对第三方进行认证。此外,它也无法防止否认。


数字签名:

是一种能够对第三方进行消息认证,并能够防止通信对象做出否认的认证技术。数字签名的算法包括RSA,EIGamal和DSA。公钥基础设施(PKI)中使用的证书,就是对公钥加上认证机构的数字签名所构成的。要验证公钥的数字签名,需要通过某种途径获取认证机构自身的合法公钥。


伪随机数生成器:

是一种能够生成具备不可预测性的比特序列的技术,由密码和单向散列函数等技术构成。伪随机数生成器用于生成密钥和初始化向量等。




对称密码(共享密钥密码)——用相同的密钥进行加密和解密


一次性密码本(one-time pad):绝对不会被破译的密码

加密原理:将明文与一串随机的比特序列进行异或运算

解密原理:解密就是加密的反向运算,用密文和密钥进行异或运算

一次性密码本无法被破解的原因:无法判断正确的明文

一次性密码本没有被使用的原因:

1.密钥的配送:发送方需要把密钥发送给接收方,接收方才能解密,一次性密钥的长度和明文长度相同,如果如办法把密钥安全发送出去,为什么不直接用这种方法发送明文

2.密钥的保存:一次性密码本是指只是将“保存明文”问题转化成“保存和明文等长的密钥”而已

3.密钥的重用:密码本不能重用过去用过的随机比特序列,否则如果密钥泄露之前所有的通信都将会被解密

4.密钥的同步:明文很长时密钥也会一样长,如果密钥在同步时出现一点差错,所有将无法解密

5.密钥的生成:一次性密码本中,需要生成大量的随机数,这里的随机数不是计算机程序生成的伪随机数,而必须是无重现性的真正随机数


DES(data encryption standard)

DES的密钥长度是64比特,但每隔7比特会设置一个用于错误检验的比特,因此实际上密钥长度是56比特,目前DES以不安全

DES是以64比特的明文为一个单位进行加密的

DES的采用的基本结构为Feistel网络,DES是一种16轮循环的Feistel网络

Feistel网络的性质:

轮数可以任意增加

加密时无论使用任何函数作为轮函数都可以正确解密

加密和解密可以用完全相同的结构来实现

Feiste网络一轮的结构如下图:



三重DES(triple-DES)

3DES是为了增加DES强度,将DES重复3次得到的,3DES实际的密钥长度是56*3=168比特,3DES处理速度不高,安全性也存在一些问题

3DES的加密过程是加密-解密-加密,DES的加密和解密过程只是改变了子密钥的顺序,而实际进行的处理是相同的,这样做的目的是让3DES能兼容DES

3DES的解密过程和加密相反,是以密钥3,密钥2,密钥1的顺序执行解密-加密-解密


如果密钥1和密钥3使用相同的密钥,密钥2使用不同的密钥,这种3DES称为DES-EDE2

如果密钥1,密钥2,密钥3使用不同的密钥,这种3DES称为DES-EDE3


AES(advances encryption standard)

AES是通过竞争来实现的标准化,最终rijindael算法被选为AES算法

rijindael算法的分组长度是128比特,密钥长度可以是128比特,192比特,256比特,AES安全,快速能够在各种平台上工作

rijindael算法没有使用feistel网络,而是使用SPN结构,rijindael算法也是由多轮构成的





0 0
原创粉丝点击