1.6.5 协议缺陷
前面讨论的是在系统完全正常工作的情况下发生的攻击。但是,有些认证协议本身就有安全缺陷,这些缺陷的存在会直接导致攻击的发生。
例如,攻击者可对TCP发起序列号攻击。由于在建立连接时所生成的初始序列号的随机性不够,攻击者很可能发起源地址欺骗攻击。为了做到公平,TCP的序列号在设计时并没有考虑抵御恶意的攻击。其他基于序列号认证的协议也可能遭受同样的攻击。这样的协议有很多,如DNS和许多基于RPC的协议。
在密码学上,如何发现协议中存在的安全漏洞是非常重要的研究课题。有时错误是由协议的设计者无意造成的,但更多的安全漏洞是由不同的安全假设所引发的。对密码协议的安全性进行证明非常困难,人们正在加强这方面的研究工作。现在,各种学术刊物、安全公司网站和操作系统开发商经常公布一些新发现的安全漏洞,我们必须要对此加以重视。
安全协议取决于安全的基础。例如,安全壳协议(SSH,Secure Shell)是一个安全的远程存取协议。SSH协议具有这样一个特点:用户可以指定一个可信的公钥,并将其存储于authorized keys文件中。如果客户机知道相应的私钥,该用户不用输入口令就能登录。在UNIX系统中,该文件通常位于用户主目录下的.ssh目录中。现在来考虑这样一种情况:有人使用SSH登录到某个加载了NFS主目录的主机上。在这种情况下,攻击者就可以欺骗NFS将一个伪造的authorized keys文件注入其主目录中。
802.11无线数据通信标准中的WEP协议在设计上也存在缺陷。目前,针对WEP协议的攻击软件在网络上随处可见。这一切说明,真正的安全是很难做到的。工程师在设计密码协议时,应当多向密码学家咨询,而不是随意地进行设计。信息安全对人的技术素质要求非常高,没有进行专业学习和受过专门培训的人员很难胜任此项工作。