公钥密码体制(又称为非对称密码体制)
前面已经讲过对称密码体制的基本概念,下面是对应的思维导图
我们现在知道,对称密码体制的一个很大的缺点就是(当然它也有优点,后面再述):密钥必须由多人共享(这也是为什么叫对称密钥的原因),安全性不完全可控。先不考虑共享密钥被主观泄露的可能,单从客观角度看,密钥泄露的可能性大小就与共享密钥的人数成正比(可以类比一下:A的钱包中有N张银行卡,B的钱包中有1张银行卡,如果两人钱包都丢了,谁会觉得更麻烦?)。另外,如果A要和多方通信,需要维护多份对称密钥,也很麻烦。
有没有一种办法能够克服以上对称密钥的弊端呢?
1976年,Whitfield Diffie与Martin Hellman两位学者发表开创性的论文,提出公开密钥密码学(简称公钥密码学,或公钥密码体制)的概念,其核心内容是:从一个人的角度出发(而不是从通信双方的角度),对于加密和解密两个过程,分别用两个不同的密钥来完成,其中加密密钥用于加密,解密密钥用于解密,它们各不相同。最为关键的是:加密密钥对所有人公开(因而又称为公开密钥,简称公钥)。当然,解密密钥则不公开(因而称为私有密钥,简称私钥),由自己保存。公钥、私钥通常合称为公私钥对,或密钥对。
当然引入这些概念后,还需要有一定的约束,最基本的一条就是:任何消息用公钥加密后,只能用与之对应的私钥解密。这说明公钥和私钥之间有着紧密的联系,但是它们也不能太紧密,仅由公钥和加/解密算法或其它信息,必须不能推出私钥(请注意,根据前面的讨论结果--还记得Kerckhoffs原则吗--加/解密算法都是公开的)。
有人马上会问:这种加/解密算法(或者体制)存在吗?
答案是:存在的,后面会用较大篇幅讲解其中的一个优秀实例:RSA算法。
我们先讨论一下,引入公钥密码学后,对称密钥的上述问题是如何解决的。
首先,密钥的安全性得到可控,公钥公开出去,是为了给别人用来加密发给自己的消息,解密用的私钥是另外一个,只要自己好好保管,就不会有什么问题(丝毫不用担心私钥被别人共享泄露的问题)。另外,密钥维护也变得十分简单,原则上每个人只要保管好自己的一个私钥就行了。
下面是公钥密码学对应的思维导图。