密码协议是密码学的重要内容。不严格地说,密码协议就是在消息处理环节采用了若干密码算法的协议,它是在密码算法的基础上为各种实践运用体系而规划的根据密码算法的交互计划。密码协议运行于计算机网络、分布式体系等运用环境中,经过一系列的步骤并凭借密码算法来实现密钥建立、身份认证、安全交易等目的。
密钥建立协议是密码协议的一个重要分支。这类协议的首要作用是为两个或多个参与者在网络上建立暂时的秘密会话密钥。密钥建立是确保后续通讯安全的一种重要机制。利用密钥建立协议得到的会话密钥,参与者们能够在敞开的网络中建立安全信道,然后确保传输信息的安全性。
密钥建立协议是密码学的根本组件,也是在不安全的网络上建立安全信道的最根本的需求。会话密钥是一种短期密钥,只运用于当次会话。运用短期会话密钥能够约束攻击者可能得到的有用密文的数量,然后削减由于会话密钥丢失形成的消息走漏带来的损失;暂时会话密钥还能够确保不相关的会话是彼此独立的。
根据会话密钥生成方式不同,密钥建立协议通常分为两种: 密钥分配(key distribution,KD)协议和密钥协商(key agreement,KA)协议。在密钥分配协议中,密钥的分发者(参与者或可信的第三方)生成一个会话密钥,并将其通过安全信道秘密地发送给各个参与者。这种做法的好处是简单,而且也有一些场合(如参与者不同时在线)必须依赖此类协议,但缺点也是显而易见的: 接收会话密钥的参与者需要信任密钥的分发者或者必须存在一个可信第三方,这种要求在现实中很难实现,或者需要较高的成本,另外,维护安全信道也加重了系统的负担。而在密钥协商协议中,会话密钥由所有的参与者共同协商而成, 其中任何一方在密钥协商结束前都无法预测或决定会话密钥的值。尽管这种做法有计算量和通信量相对较大的缺点,但密钥协商不需要参与会话密钥生成的可信第三方和安全信道,协议的参与者也无需信任其他参与者。
如果协议的参与者可以确信,除了指定的实体之外,其它任何参与者都不能得到秘密的会话密钥,我们则称此类密钥协商协议为认证密钥协商(authenticated key agreement,AKA)协议。