3.9 小结
密码是更广泛意义上的安全协议概念的一种(简单)实例。协议规定了主体用于在系统中建立信任关系的一系列步骤,比如认证身份的声明、展示凭据的所有权,或者承认对某资源的声明。加密身份验证协议,不管是单工(比如使用随机Nonce)还是双工(质询-应答)的,被更广泛地用于这些目的,范围包括从基本的实体身份验证到为分布式系统(其中的信任关系可以从其存在的地方提取到需要的地方)提供的基础设施。安全协议在所有这些系统中都已经发挥作用,从遥控车锁到军事IFF系统,以及分布式计算机系统中的身份验证等。
设计一个有效的安全协议是很困难的。安全协议面临很多潜在的问题,包括中间人攻击、修改攻击、反射攻击和重放攻击等。这些威胁可能会与系统的实现时漏洞相互影响,比如脆弱的随机数生成器。使用数学技术来认证协议的正确性可能有所助益,但是并不能解决所有问题,一些致命的失败是由于设计协议的环境悄然改变,以至于其所提供的保护机制失效而导致的。
3.10 研究问题
在过去20年中的几个时段,有人觉得协议已经“做好”了,应该转向新的研究课题,然而,这种判断每一次都被新的协议应用程序中涌现的大量新错误和攻击方法证明是错误的。在20世纪90年代早期,形式化方法焕发出勃勃生机,之后是密钥管理协议;在20世纪90年代中期,人们忙于提出电子商务中的各种建议和草案;到了90年代末期,提出了关于在 Internet上保护版权的整套机制,使人们有了新的研究目标。自2000年以来,协议研究的一个方向包含很多经济学的气息,因为安全机制越来越多地用于支持商务模型,设计者的“敌人”经常是商业上的竞争对手,甚至是客户。另一个方向是使用协议分析工具来检验应用程序接口的安全性,这一主题后面将进行讨论。
是继续开发出不完善的协议让别人来攻击,还是设法首先找到一个设计正确协议的方法论?形式化方法(还有其他数学方法,比如随机预言模型)的真正用途和局限性是什么?
在系统层,鲁棒性协议的原则是每件事情都要指定并检查(主体的名字、角色、安全策略陈述、协议版本、时间、日期、序列号、安全上下文,甚至祖母家厨房洗菜盆的制造者),而系统工程的原则是优秀规范不应该过多地约束实现者,怎样缓解这两者之间的关系?