Skip to main content

15. Security Considerations (安全考虑)

NTP的安全要求比大多数其他分布式服务更加严格,因为认证机制和时间同步机制密不可分。

15.1. 安全挑战

时间与信任的循环依赖:

  • 可靠的时间同步需要有时间限制的加密密钥
  • 但时间间隔的执行需要可靠的时间同步

层级信任模型:

  • NTP子网具有层级结构
  • 时间和信任从根部的主服务器流向叶子节点的客户端
  • 客户端只有在到主服务器路径上的所有服务器都经过认证时,才能声称拥有可信时间

15.2. 潜在攻击类型

1. 归档攻击: 入侵者可以永久拦截和存档数据包以及所有公共值。

2. 资源耗尽攻击: 入侵者可以生成比服务器、网络或客户端处理速度更快的数据包,尤其是需要昂贵加密计算的数据包。

3. 窃听攻击: 入侵者可以拦截、修改和重放数据包,但无法永久阻止原始数据包的传输。

4. 中间人或伪装攻击: 入侵者位于服务器和客户端之间,可以拦截、修改和重放数据包并阻止原始数据包的传输,但没有服务器私钥。

15.3. 内置防御机制

协议层防御:

  • 线上时间戳交换方案固有地抵抗欺骗、数据包丢失和重放攻击
  • 时钟过滤器算法
  • 选择和聚类算法设计用于防御拜占庭叛徒的恶意集团

架构层防御:

  • 多服务器关联和一致性算法
  • 真时钟(truechimers)与假时钟(falsetickers)的区分
  • 统计方法识别和排除异常值

15.4. 安全限制

认证不等于准确性:

  • NTP中的认证不一定意味着时间是正确的
  • 认证仅验证数据包来源的真实性
  • 时间准确性需要通过多服务器一致性算法确保

需要额外保护:

  • 内置机制不能安全地识别和认证服务器到客户端
  • 没有特定的进一步保护,入侵者可以实施各种攻击
  • 建议使用加密认证机制(如Autokey或对称密钥认证)

15.5. 安全建议

实施建议:

  1. 使用加密认证机制保护服务器-客户端通信
  2. 维护安全的密钥分发和管理系统
  3. 配置多个独立的时间源以提高可靠性
  4. 实施访问控制列表限制数据包源
  5. 监控异常的时间偏移和网络行为
  6. 定期更新密钥以限制密钥泄露的影响

架构建议:

  • 从多个独立的主服务器获取时间
  • 使用冗余路径提高可靠性
  • 部署本地主服务器减少对外部源的依赖
  • 实施分层信任模型,逐级验证时间源

NTP的安全性是一个持续演进的领域,需要在性能、复杂性和安全性之间权衡。