为什么有混合密码系统
通过使用对称密码,我们就能够在通信中确保机密性。然而要实际中运用对称密码,就必须解决秘钥配送问题。
然后通过公钥密码,就可以避免解密密钥的配送,从而也就解决了对称密码的配送问题。
但是公钥密码要还有两个大问题:
- 公钥密码处理速度远远低于对称密码
- 公钥密码难以抵御中间人攻击
混合密码系统
混合密码系统(hybrid cryptosystem) 是将对称密码和公钥密码的优势相互结合的方法。一般情况下将两种不同的方式相结合的做法就称为混合。
混合密码系统中会先用快速的对称密码来对消息进行加密,这样消息就被转换成了密文,从而也保证了消息的机密性。我们只要保证对称密码密钥的机密性就可以了。这里就轮到了公钥密码出场了。我们可以用公钥密码对加密消息时使用的对称密码的密钥进行加密。由于对称密码的密钥一般比消息短,因此公钥密码速度慢的问题就可以被忽略了。
消息通过对称密码来加密
对称密码的密钥通过公钥密码来加密
混合密码系统组成机制
- 用对称密码加密消息
- 通过伪随机数生成器生成对称密码加密中使用的会话密钥
- 用公钥密码加密会话密钥
- 从混合密码系统外部赋予公钥密码加密使用的密钥
加密
加密消息
虚线内右半部分是“加密消息”(对称密码)。即使消息很长,也能通过对称密码(分组模式)快速加密。
左半部分是“加密会话秘钥”(公钥密码)
加密会话秘钥
左半部分是会话秘钥的生成和加密操作
会话秘钥(session key)是指为本次通信而生成的临时秘钥,它一般是通过伪随机数生成器产生。同时这个伪随机数生成器会作为对称密码的秘钥使用。
接下来公钥密码会对会话秘钥进行加密,公钥密码加密所使用的密钥是接受者的公钥。
会话秘钥是对称密码的秘钥,同时也是公钥密码的明文
解密消息
分离
混合密码系统的密文是由“用公钥密码加密的会话秘钥”和“用对称密码加密的消息”组合而成的,因此我们首先需要将两者分离。密文的结构需要发送者和接收者事先约定好。
解密会话密钥
会话密钥可以用公钥密码进行解密,也就是接收者的私钥。
解密后的会话密钥奖杯用作解密消息的密钥。
解密消息
用 接收者的私钥 解密的会话秘钥就是消息的解密密钥
怎么才算强度高的混合密码呢?
伪随机数生成器
伪随机数生成器被用来生产会话密钥。如果伪随机数生成器的算法很差,生成的密钥就有可能被攻击者推测出来。