混合密码系统用对称密码来加密明文,用公钥密码来加密对称密码中所使用的密钥。通过使用混合密码系统,就能够在通信中将对称密码和公钥密码的优势结合起来。
对称密码与公钥密码
公钥密码的两大问题
- 公钥密码的处理速度远远低于对称密码
- 公钥密码难以抵御中间人攻击
混合密码系统能够解决上述处理速度慢的,但是如果要解决中间人攻击的问题,则需要对公钥进行认证(后面的文章会陆续更新)
混合密码系统
将消息通过对称密码来加密,将加密消息使用的密钥通过公钥密码来加密,这样的两步密码机制就是混合密码系统的本质。
注意:用公钥密码对加密消息时使用的对称密码的密钥进行加密,由于对称密码的密钥一般比消息本身要短,因此公钥密码速度慢的问题就可以忽略了。
混合密码的组成机制
- 用对称密码加密消息
- 通过伪随机数生成器生成对称密码加密中使用的会话密钥
- 用公钥密码加密会话密钥
- 从混合密码系统外部赋予公钥密码加密时使用的密钥
注意:混合密码系统运用了伪随机数生成器、对称密码和公钥密码这三种密码技术。正是通过这三种密码技术的结合,才创造出一种兼具对称密码和公钥密码优点的密码方式。
加密
加密消息
此图中,右半部分是加密消息的部分(对称密码),左半部分是加密会话密钥的部分(公钥密码)
消息的加密方法和对称密码的一般加密方法相同,当消息很长时,则需要使用分组密码的模式(后续文章更新会讲到),即便非常长的消息,也可以通过对称密码快速完成加密,这就是右半部分所进行的处理。
加密会话密钥
左半部分进行的是会话密钥的生成和加密操作。
会话密钥是指为本次通信而生成的临时密钥,它一般是通过伪随机数生成器产生的,伪随机数生成器所产生的会话密钥同时也会被传递给右半部分,作为对称密码的密钥使用。
会话密钥是对称密码的密钥,同时也是公钥密码的明文
解密
混合密码系统的密文是由“用公钥密码加密的会话密钥”和“用对称密码加密的消息”组合而成的,因此首先需要将两者分离(发送者和接收事先约定好密文的结构)
密钥长度的平衡
混合密码系统中运用了对称密码和公钥密码两种密码方式,无论其中任何一方的密钥过短,都可能遭到集中攻击,因此对称密码和公钥密码的密钥长度必须具备同等的强度。
然而,考虑到长期运用的情况,公钥密码的强度应该高于对称密码,因为对称密码的会话密钥被破译只会影响本次通信的内容,而公钥密码一旦被破译,从过去到未来的(用相同的公钥加密的)所有通信内容就都能够被破译了。