(一)背景
公钥密码存在两个很大的问题。
(1)公钥密码的处理速度远远低于对称密码。
(2)公钥密码难以抵御中间人攻击
(二)介绍
混合密码系统( hybrid cryptosystem)是将对称密码和公钥密码的优势相结合的方法。一般情况下,将两种不同的方式相结合的做法就称为混合( hybrid )。
混合密码系统中会先用快速的对称密码来对消息进行加密,这样消息就被转换为了密文,从而也就保证了消息的机密性。然后我们只要保证对称密码的密钥的机密性就可以了。这里就要轮到公钥密码出场了,我们可以用公钥密码对加密消息时使用的对称密码的密钥进行加密。
对称密码的密钥一般比消息本身要短,因此公钥密码速度慢的问题就可以忽略了。
将消息通过对称密码来加密,将加密消息时使用的密钥通过公钥密码来加密,这样的两步密码机制就是混合密码系统的本质。
具体步骤
1:用对称密码加密消息。
2:通过伪随机数生成器生成对称密码加密中使用的会话密钥。
3:用公钥密码加密会话密钥。
4:从混合密码系统外部赋予公钥密码加密时使用的密钥。
(三)注意事项
1:混合密码系统中,伪随机数生成器被用于产生会话秘钥。如果伪随机数生成器的算法很差,生成的会话秘钥就有可能被攻击者推测出来。
2:混合密码系统中,对称密码被用于加密消息。我们需要使用高强度的对称密码算法,并确保秘钥具有足够的长度。同样,也需要使用合适的分组密码模式。
3:混合密码系统中,公钥密码被用于加密会话秘钥。需要使用高强度的公钥密码算法,并确保秘钥具有足够的长度。
4:需要注意保证混合密码系统中各个密码技术的平衡。其中运用了对称密码和公钥密码,无论其中任何一方的秘钥过短,都可能遭到集中攻击,因此对称密码和公钥密码长度必须具备同等的强度。
5:一般来说,公钥密码的强度应该要高于对称密码,因为对称密码的会话秘钥被破译后只会影响本次通信的内容,而公钥密码一旦被破译,从过去到未来的(用相同的公钥加密的)所有通信内容就都能够被破译了。
(四)混合密码系统的加密和解密
加密
1:准备明文
2:通过伪随机数生成器构建会话秘钥,这个会话秘钥会作为对称加密的秘钥,同时也作为公钥加密的明文
3:右半部分中通过会话秘钥对明文消息进行对称加密,得到加密消息
4:左半部分中,此时拿到会话秘钥,在混合加密中此时的会话秘钥就是明文。此时采用公钥加密方式对会话秘钥进行加密,依然是公钥加密,私钥解密。
5:通过公钥密码中公钥对会话秘钥进行加密后得到密文
6:将采用对称加密得到的密文和采用公钥加密得到的密文组合起来,组成最终的混合系统的密文
7:此时加密过程已经结束,整体的部分需要注意使用到了相同的随机数生成器生成的会话密码,此外密文和明文加密密文会一起组合在最终的发送报文中
8:此时公钥密码的私钥还未进行任何的工作,他会用于后面的解密工作中
解密
1:接收者拿到密文,密文包括俩个部分,明文加密和秘钥加密信息
2:混合密码系统的密文是由“用公钥密码加密的会话密钥”和“用对称密码加密的消息”组合而成的,因此我们首先需要将两者分离。只要发送者和接收者事先约定好密文的结构,将两者分离的操作就很容易完成。
3:此时经过分离后拿到秘钥加密部分,此时我们通过公钥加密中的私钥对这部分进行解密,经过解密拿到加密过程中的对称加密的秘钥
4:拿到对称加密的秘钥后就可以对右半部分的消息密文进行解密,解密完成成功拿到明文