15. Security Considerations (安全考虑)
NTP的安全要求比大多数其他分布式服务更加严格,因为认证机制和时间同步机制密不可分。
15.1. 安全挑战
时间与信任的循环依赖:
- 可靠的时间同步需要有时间限制的加密密钥
- 但时间间隔的执行需要可靠的时间同步
层级信任模型:
- NTP子网具有层级结构
- 时间和信任从根部的主服务器流向叶子节点的客户端
- 客户端只有在到主服务器路径上的所有服务器都经过认证时,才能声称拥有可信时间
15.2. 潜在攻击类型
1. 归档攻击: 入侵者可以永久拦截和存档数据包以及所有公共值。
2. 资源耗尽攻击: 入侵者可以生成比服务器、网络或客户端处理速度更快的数据包,尤其是需要昂贵加密计算的数据包。
3. 窃听攻击: 入侵者可以拦截、修改和重放数据包,但无法永久阻止原始数据包的传输。
4. 中间人或伪装攻击: 入侵者位于服务器和客户端之间,可以拦截、修改和重放数据包并阻止原始数据包的传输,但没有服务器私钥。
15.3. 内置防御机制
协议层防御:
- 线上时间戳交换方案固有地抵抗欺骗、数据包丢失和重放攻击
- 时钟过滤器算法
- 选择和聚类算法设计用于防御拜占庭叛徒的恶意集团
架构层防御:
- 多服务器关联和一致性算法
- 真时钟(truechimers)与假时钟(falsetickers)的区分
- 统计方法识别和排除异常值
15.4. 安全限制
认证不等于准确性:
- NTP中的认证不一定意味着时间是正确的
- 认证仅验证数据包来源的真实性
- 时间准确性需要通过多服务器一致性算法确保
需要额外保护:
- 内置机制不能安全地识别和认证服务器到客户端
- 没有特定的进一步保护,入侵者可以实施各种攻击
- 建议使用加密认证机制(如Autokey或对称密钥认证)
15.5. 安全建议
实施建议:
- 使用加密认证机制保护服务器-客户端通信
- 维护安全的密钥分发和管理系统
- 配置多个独立的时间源以提高可靠性
- 实施访问控制列表限制数据包源
- 监控异常的时间偏移和网络行为
- 定期更新密钥以限制密钥泄露的影响
架构建议:
- 从多个独立的主服务器获取时间
- 使用冗余路径提高可靠性
- 部署本地主服务器减少对外部源的依赖
- 实施分层信任模型,逐级验证时间源
NTP的安全性是一个持续演进的领域,需要在性能、复杂性和安全性之间权衡。