之前的文章我们讲了两种加密方式,一种是对称加密,一种是非对称加密。
对称加密可以解决通信的机密性的问题,但是不能解决密钥配送的问题。而非对称加密算法虽然可以解决密钥配送的问题,但是它的加密速度比较慢,并且无法抵御中间人攻击。
那么如果将对称加密算法和非对称加密算法结合起来,是不是就能够得到一种既不用配送密钥,加密速度又快的系统呢?
答案是肯定的,著名的SSL/TLS协议就是这样的加密系统。这样的系统就叫做混合加密系统。
在混合加密系统中,我们用对称加密来加密消息,用公钥来加密对称加密的密钥,通常来说对称加密的密钥是通过伪随机数生成器来生成的。
混合加密系统综合使用了伪随机数生成器,对称密码和公钥密码这三种技术组合而成。
加密
混合密码系统的加密过程如下:
- 使用伪随机数生成器生成会话密钥。
- 使用该会话密钥加密明文,生成密文。
- 使用之前约定好的公钥加密会话密钥。
- 将加密过后的会话密钥和密文合并,组成混合过后的密文。
解密
混合密码系统的解密过程如下:
- 接受者收到组合过后的密文,根据约定分别得到加密过后的会话密钥和密文。
- 接受者使用自己的私钥解密加密过后的会话密钥,得到会话密钥。
- 接受者使用会话密钥解密密文,得到明文。
混合密码系统的强度
在混合密码系统中,主要使用了伪随机数生成器,对称加密,公钥私钥加密三种方式。所以混合密码系统的强度和这三个方式有关。
伪随机数生成器主要生成的越随机越好,而加密算法则强度越高越好。
更多教程请参考 flydean的博客