第十八章 安全:可扩展身份认证协议、IP安全协议、传输层安全、DNS 安全、域名密钥识别邮件
安全的主题是广泛而有趣的,本章只涉及了一些简单的内容。主要了解安全通信的几个重要属性,通常这些属性是由机密性、可认证性、完整性以及不可否认性组合构成的。加密是实现上述信息安全属性最重要的工具。它包含一套算法与密钥。两种重要的加密方式是对称或 “密钥” 加密技术与公钥加密技术。前者拥有良好的计算性能但要求密钥保密,而后者要求每一个个体都拥有一对密钥,并将其中之一作为公钥。公钥密码技术能够提供认证与保障机密性的功能,并且还可以与对称密钥加密技术结合使用,从而获得更好的性能。其他与加密技术相关的数学算法还包括用于建立对称密钥的 Diffi-Hellman密钥协商协议,为密钥选择随机组件的伪随机函数,用于检验消息完整性的消息验证码。使用随机数的协议试图保证消息的时新性,它通过要求请求与响应都维护一个最近生成的公共数值来抵御重放攻击。混淆值用于干扰算法或算法的输出,从而使字典攻击更加难以实现。

    有些安全协议会针对某一个协议层,而有一些安全协议则会跨越多个协议层。虽然不会像 TCP/IP 协议那样被经常讨论,但是一些链路技术从第 2 层起就开始了保障安全的工作。在 TCP/IP 协议中,EAP 用于建立包含多种机制的身份验证,比如机器证书、用户证书、智能卡、密码等。EAP 常用于拥有后台认证或 AAA 服务器的企业设置。EAP 还可以用于其他协议的认证,比如 IPsec。

    沿协议栈向上查看,传输层安全保护了两个应用程序之间的信息。它拥有自己的内部分层,包含一个纪录层协议和三个信息交换协议:密码更改协议、警告协议、握手协议。此外,纪录协议支持应用数据。纪录层负责根据握手协议提供的参数加密数据并保障它们的完整性。密码更改协议用于将之前设定的挂起协议状态更改为活动协议状态。警告协议会指出错误或连接问题。与 TCP/IP 一起使用的 TLS 是使用最广泛的安全协议,并且它还支持加密的 Web 浏览器连接。TLS 的一个变种称为 DTLS ,它将 TLS 应用于数据报协议,比如 UDP 与 DCCP。

    安全协议的攻击不仅包含了那些常见的利用实现漏洞和不安全的设计的攻击,还包含了数学危害以及用于发现秘密信息的 “侧信道” 攻击。多年来,在用于安全通信的密码技术中,满足灵活性的需求已经成为明确的共识,因此我们讨论的绝大多数协议都提供了加密套件。这些加密套件会随着计算能力的提高与额外经验的获取而不断发展。许多看似安全的协议,即便受到专家的广泛审查,也已经成为一帮精力充沛的分析者的 “猎物”。这些分析者会寻找可以利用的错误,尤其是那些使中间人或其他主动攻击成为可能的错误。在设计新的安全协议及按照安全的方式运行现有协议时,需要格外小心。