本页内容
NTP 支持网络时间安全 (NTS)
NTS为网络时间同步提供加密安全性,并支持NTP的客户端-服务器模式。
NTS概览
NTS为网络时间同步提供加密安全性,并支持NTP的客户端-服务器模式。NTS 使用传输层安全 (TLS) 协议和带关联数据的身份验证加密 (AEAD),以经过身份验证的方式向用户获取网络时间。NTS 还支持对 NTP 扩展字段的加密。
最重要的安全流程取决于准确的时间。来自恶意来源的网络时间同步会导致严重后果。启用 NTS 可确保设备上实现准确的网络时间同步。
从 Junos OS 演化版 24.2R1 开始,支持在 ACX 系列、QFX 系列和 PTX 系列设备上使用网络时间协议 (NTP) 符合 RFC 8915 标准,以实现网络时间安全 (NTS)。NTS 为网络时间同步提供加密安全性,并支持 NTP 的客户端/服务器模式。
此 RFC 8915 合规性功能支持:
- 为服务器配置本地证书,为客户端配置证书验证选项。
- 验证 x.509 证书以在客户端和服务器之间建立 TLS 通道。
- 支持 TLS NTS-KE 协议。
- 在服务器和客户端上支持 NTS 安全的客户端-服务器 NTP 通信。
NTS 的优势
- 提供强大的加密保护,抵御各种安全攻击,例如数据包操纵、欺骗、DDOS 放大攻击和重放攻击
- 确保来自可靠来源的准确网络时间同步
- 提供可扩展性:服务器可以为多个客户端提供服务,而无需手动预配置任何特定于客户端的配置。由于使用了cookie,服务器不需要在本地存储特定于客户端的数据,例如密钥和AEAD算法
- 阻止跟踪移动设备
使用 NTS 实现网络时间同步
NTS 由两个协议组成,NTS 密钥建立协议 (NTS-KE) 和使用 NTS 扩展字段的 NTP 时间同步。
NTS-KE 协议
NTS 密钥建立协议 (NTS-KE) 使用 TLS 协议按以下顺序管理服务器的初始身份验证、NTS 参数协商和通过 TLS 建立密钥:
- 客户端与 NTS-KE 服务器执行 TLS 握手并成功验证证书。
-
客户端通过受 TLS 保护的通道与服务器执行 NTS 参数协商。协商的密码算法是 AEAD 方法,用于在第二阶段保护 NTP 数据包。
-
客户端和服务器成功建立通信密钥材料。
-
服务器还向客户端发送初始 cookie 以供下一阶段使用。
-
TLS 通道关闭,NTP 进入下一阶段,在该阶段发生实际时间数据交换。
NTS 仅支持 TLS 版本 1.3。较旧的 TLS 版本在 NTS-KE 协议阶段会被拒绝。
使用 NTS 扩展字段的 NTP 时间同步
此阶段通过 NTP 数据包中的扩展字段按以下顺序管理 NTP 时间同步期间的加密和身份验证:
-
客户端使用 NTS 扩展字段向 NTP 服务器查询有关时间的信息。这些扩展字段包括 Cookie 和身份验证标记,这些标记使用协商的 AEAD 算法和从 NTS-KE 握手中提取的密钥材料计算。
受 NTS 保护的 NTP 客户端请求包含以下 NTS 扩展字段:
-
唯一标识符扩展字段:包含随机生成的数据,并提供 NTS 级别的重放保护手段。
-
NTS Cookie 扩展字段:包含有关在 NTS-KE 阶段建立的密钥材料的信息,以及协商的加密算法。Cookie 在请求中仅使用一次,以防止跟踪。
-
NTS Cookie 占位符扩展字段:(可选)向服务器传达客户端希望在响应数据包中接收其他 Cookie 的信息。
-
NTS 身份验证器和加密扩展字段:使用 AEAD 算法生成,并在 NTS-KE 期间建立密钥。此字段为 NTP 报头和之前的所有扩展字段提供完整性保护。
不断刷新 Cookie 可以保护设备在更改网络地址时不被跟踪。例如,移动设备在不同网络之间移动。由于缺少任何可识别的数据,攻击者无法确定通过不同网络地址发送的两个数据包是否来自同一客户端。
-
-
当服务器收到来自客户端的 NTS 安全请求时,服务器会使用主密钥解密 cookie。
-
服务器提取协商的 AEAD 算法和 cookie 中可用的密钥。使用此密钥,服务器检查 NTP 数据包的完整性,以确保数据包未受到任何操作。
-
服务器生成一个或多个新 Cookie,并创建 NTP 响应数据包。对于客户端在请求数据包中添加的每个 Cookie 占位符扩展字段,服务器至少会生成一个新 Cookie 和一个附加 Cookie。
响应数据包包含两个 NTS 扩展字段:
- 唯一标识符扩展字段,其内容与请求数据包中的唯一标识符字段相同。
- NTS 身份验证器和加密扩展字段,它使用提取的密钥保护 NTP 报头和以前的扩展字段。
-
服务器还对 cookie 进行加密,并将其包含在 NTS 身份验证器和加密扩展字段中。此过程还可以防止客户端跟踪,因为攻击者无法从响应消息中提取 Cookie。
-
服务器完成响应数据包,并将数据包发送给客户端。
-
客户端接收响应数据包。
-
客户端检查“唯一标识符”字段,并验证“唯一标识符”是否与未完成的请求匹配。
-
客户端使用密钥和 AEAD 算法成功执行数据包完整性检查。
-
客户端解密 cookie 并将其添加到其池中,并处理从服务器收到的时间信息。