NTS:Meta 的经过身份验证的时间服务

📌 One-Sentence Summary
Meta 已在 nts.meta.com 上线了一项支持 NTS 的时间服务,为设备提供经过身份验证、防篡改的时间同步,并开源了协议实现。
📝 Summary
Meta 的新 NTS 服务解决了无身份验证 NTP 的关键漏洞,提供了安全、可靠的时间源。服务使用两阶段过程:首先通过 TLS 握手建立密钥,然后通过经过身份验证的 UDP 数据包进行时间同步,确保时间数据既准确又可信。实现是无状态的,并且是开源的,旨在鼓励广泛采用,以提高依赖时间的互联网操作的安全性。
💡 Main Points
无身份验证 NTP 的漏洞
当前的 NTP 协议缺乏身份验证,容易受到中间人攻击,攻击者可以伪造时间响应。这对依赖精确时间进行证书验证和令牌过期的系统构成严重风险。
NTS 协议概述
网络时间安全(NTS)是一个两阶段协议,首先通过安全的 TLS 连接交换会话密钥,然后使用这些密钥对通过 UDP 发送的时间数据包进行身份验证。这确保了时间数据在传输过程中没有被篡改。
无状态设计与可伸缩性
Meta 的 NTS 服务器不保存任何客户端状态:会话密钥来自 TLS 握手,封装 cookie 的密钥则由共享主密钥和自纪元起的天数经 HKDF 派生,不存储也不复制,任何服务器都能打开其他服务器签发的 cookie,便于扩展且没有可被耗尽的状态。
虽然一些服务器实现支持 NTS,但它在主要移动操作系统(Android 和 iOS)中基本缺失。Meta 呼吁这些平台采用 NTS,以确保它们控制的数十亿台设备能够与安全、经过身份验证的时间源进行同步。
💬 Key Quotes
自 1985 年以来,NTP 就一直是无身份验证的,就像互联网上的许多基础协议一样。但它也是验证每个证书、令牌和签名的依据。
客户端发送 48 字节,某方发回 48 字节,然后客户端就相信了。这里没有签名,没有身份。
RTC 电池耗尽的设备在进行首次握手之前仍然必须获得大致正确的时间。
如果你运营公共时间服务,应该打开 NTS。如果你维护 NTP 客户端,就要实现 RFC 8915。如果你拥有移动操作系统中的时间栈,这正是需要弥补的差距。
📊 Article Meta
AI Screening: 91
Featured: Yes
Source: Engineering at Meta
Author: Engineering at Meta
Category: 软件编程
Language: 英文
Read Time: 10 min
Word Count: 2427
Tags:
编程与工程 , 安全 , 开源项目 , 分布式系统 , 系统设计
这篇文章分析得很透彻,收藏了!
这个观点很中肯,深有同感。
看完了,收获满满,期待更多更新。
点赞,必须点赞
整理得太全面了,省了我不少时间。