所谓协议,就是通信双方约定好的一些传递信息的方法和过程。这如同两个人打电话一样,摘机→互报姓名→双方讲话→挂机,这个过程就是通话协议。密码学中用“交互”一词来表示用户之间来回传递信息。
实际中,应用密码算法实现特定安全功能十分复杂,不同的使用环境需用不一样的密码协议。不同的安全功能,也由不同的密码协议实现。因此,密码技术中有多种多样的密码协议,如身份认证协议、密钥协商协议、电子支付协议等。
如果一个人想要向另一个人确认自己的身份,用简单的“口令”显然是极不安全的。利用对称密码算法(一般指加密与解密用相同密钥的密钥算法)则可实现一个安全的身份认证协议。实现A和B两人之间,A确认B身份的认证协议由以下步骤组成:
(1)A和B拥有一个相同的密钥。
(2)A向B发送一个随机的明文消息串。
(3)B收到后,用密钥把明文加密,再把密文发送给A。
(4)A收到密文后,用密钥解密,若得到与原来相同的明文,说明B有相同的密钥,即拥有合法的身份;如果和原来明文不一致,则说明B没有合法的身份。
如何建立上述协议中的相同密钥呢?除了当面协商外,还可用相应的密钥协商协议在线协商产生。密钥协商协议就是通信双方互不见面,但通过协商,建立一个只有双方知道的密钥,也叫共享密钥。Diffie-Hellman密钥协商协议就是基于离散对数的困难问题,建立共享密钥的密码协议。
密码协议的安全性对密码应用至关重要,密码协议不安全,尽管密码算法再安全,密码应用仍是不安全的。密码协议的安全性,一方面由所用密码算法的安全性决定,另一方面由交互规则的安全性决定。实际上协议的漏洞往往存在于交互方式之中。因此,协议中常加入随机数、时间戳等参数,防止消息重用和中间人攻击等。