零信任网络安全:软件定义边界SDP技术架构指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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必须经过验证。设备验证弱化了用户密码被盗导致的伪装者攻击威胁。