3.1 基本信息
1. 服务启动
一个或多个SDP控制器、IH、AH的服务启动方法不在本章讨论范围内,典型方法是通过CHEF、PUPPET或其他主机托管服务(如RightScale、AWS CloudFormation等)启动。
2. SPA
SPA用于在下列情况下启动通信:AH—控制器、IH—控制器和IH—AH。SPA提供下列安全防护。
(1)保护服务器:在提供真正的SPA前,服务器不会响应来自任何客户端的任何连接。
(2)缓解对TLS的拒绝服务攻击:面向互联网运行HTTPS的服务器极易受到拒绝服务攻击。SPA允许服务器在进行TLS握手前丢弃拒绝服务攻击数据包,以弱化此类攻击的威胁。
(3)攻击检测:从任何其他主机发送到AH的第一个数据包必须是SPA。如果AH接收到其他数据包,则应将其视为攻击。因此,SPA使SDP可以根据恶意数据包检测攻击。
3. 基于RFC 4226(HOTP)标准的参数
(1)客户端:指SPA数据包的生成器,在SDP架构中,客户端为IH或AH。
(2)服务器:指SPA数据包的验证者,在SDP架构中,服务器为SDP控制器或AH。
(3)种子:指通信双方(即AH—控制器、IH—控制器和IH—AH)共享的32位无符号整型数值,种子必须保密。
(4)计数器:是一个64位无符号整型数值,通信双方必须同步。在RFC4226中,通过“提前窗口”完成同步(因为RFC4226的典型用例是硬件OTP令牌)。但是,对于SDP协议来说,计数器可以在SDP数据包中发送,减少对提前窗口的需求及避免通信双方不同步。计数器不需要保密。
(5)密码:指由RFC4226加密算法生成的HOTP。
(6)密码长度:密码长度固定为8个字符。
对于SPA来说,当单个数据包从客户端发送到服务器时,服务器不需要回复。数据包格式如表3-1所示。
表3-1 数据包格式
收到数据包后,服务器必须允许客户端通过443端口的双向TLS连接,连接密文与明文如表3-2所示。
表3-2 连接密文与明文
对该规范的改进意见是可以增加一个明文客户端ID,以高效处理数据包。当前,正在设计二进制SPA格式,将创建描述该格式的RFC文档。
4. 双向TLS或IKE
在做进一步用户与设备身份验证前,需要保证所有主机之间的连接使用带有身份验证的TLS或IKE,以将该设备验证为SDP的授权设备。必须禁止所有弱密码套件和不支持双向身份验证的套件。
TLS客户端和服务器的根证书必须与已知的合法根证书绑定,且不应由被大多数用户浏览器信任的数百个根证书组成,以避免伪装者攻击(即攻击者可以通过被攻陷的证书颁发机构CA伪造证书)。将根证书安装到IH、AH和SDP控制器的方法不在本书讨论范围内。
TLS服务器应使用IETF工作草案《X.509v3扩展:OCSP连接所需的draft-hallambaker muststaple-00》中定义的OCSP响应连接(OCSP response stapling),该草案引用了RFC 4366《传输层安全性(TLS)扩展》中的连接实现。OCSP响应连接可以减少对OCSP响应的DoS攻击,还可以有效防止服务器证书吊销前,OCSP响应过时导致的中间人攻击。
5. 设备验证
双向TLS或IKE证明了请求访问SDP的设备具有未过期且未被吊销的私钥,但它不证明该密钥未被窃取。设备验证的目的是证明有需要的设备拥有私钥,且在设备上运行的软件是可信的。默认信任SDP控制器(因为SDP控制器处于最受控制的环境中),但IH和AH必须经过验证。设备验证弱化了用户密码被盗导致的伪装者攻击威胁。