加密、解密算法总的来说可以分称对称密钥加密以及非对称密钥加密算法。
对称密钥加密算法要求加密和解密都用同一把密钥。这可能是对称密码体制的主要弱点(为了让对方能够解开密文,可能需要将密文与密钥一同发送)。在非对称加密算法或公钥算法中没有这样的问题。使用公钥加密的信息只有私钥才能解开,而使用私钥加密的信息只有使用公钥才能解开。通常,其中一个密钥由个人秘密持有(私钥),从而避免了对安全性的威胁。第二个密钥,即所谓的公钥,需要让尽可能多的人知道。
通过公钥体制可以做到消息收发双方的身份确认。例如:A在向B发送消息时,先用A的私钥加密信息,然后再将加密的结果用B的公钥二次加密,然后将密文发送给B。B在受到消息后,先用自己的私钥解密信息,再用A的公钥二次解密就可以得到明文。如果B能够正确解得结果,说明发送方与接受方的身份无误。
但是,在实际情况下,这一密钥交换协议容易受到伪装攻击,即所谓中间人(middle-person)攻击,我们也称为是公钥体系的Achilles脚跟。其主体思想就是通过拦截A、B之间的通讯,让双方都误认为C的公钥是对方的公钥,这样C就在中间有机可乘,破译并修改信息。如下图:
为了防止这种情况,1992 年 Diffie 和其他人一起开发了经认证的 Diffie-Hellman 密钥协议。在这个协议中,必须使用现有的私钥/公钥对以及与公钥元素的相关数字证书,由数字证书验证交换的初始公共值。解决了整个问题。