Trail of Bits 如何验证 Signal 聊天记录的完整性
How Trail of Bits helps verify the integrity of Signal chats

原始链接: https://blog.trailofbits.com/2026/08/11/how-trail-of-bits-helps-verify-the-integrity-of-your-signal-chats/

Signal 引入了“自动密钥验证”(Automatic Key Verification)功能。这是一项“密钥透明度”特性,通过确保公钥的全球一致性,防止服务器通过伪造公钥拦截加密消息。此前,用户必须手动验证安全码;现在,应用程序会自动检查收到的密钥是否与全球一致的记录相符。 该系统依赖于 Signal、Cloudflare 和 Trail of Bits 三家独立的审计机构,以确保公钥映射诚实、一致且未被篡改。Trail of Bits 运行着一个开源审计程序,利用默克尔树(Merkle tree)持续监控这些记录。 当用户开启该功能后,其 Signal 客户端会获取并验证来自这些审计机构的签名。如果服务器试图提供不一致的信息,签名验证将失败,应用程序会向用户发出警报。如果系统无法确认密钥,用户应恢复使用手动安全码验证。 Trail of Bits 自愿提供此项服务且不收取任何报酬,旨在加强端到端加密的安全性。用户可以在 Signal 应用的“设置 > 隐私 > 高级”中启用此功能。

Hacker News 最新 | 过往 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 Trail of Bits 如何帮助验证 Signal 聊天记录的完整性 (trailofbits.com) 8 分,dgroshev 发布于 1 小时前 | 隐藏 | 过往 | 收藏 | 1 条评论 帮助 chews 5 分钟前 [–] 我曾与 Trail of Bits 合作过,他们的密码学团队是顶尖的。不过,我对 Signal 仍持有深深的怀疑。使用它有更安全的方法,比如从不接收推送通知。我认为他们的工作值得敬佩,但他们需要通过短信来引导用户这一点是个陷阱……他们现在有了用户名,但即使有了用户名,你仍然必须用手机号/身份来完成引导。 回复 准则 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索:
相关文章

原文

Every Signal chat starts the same way: the client asks the Signal server for the public key associated with your contact’s phone number. But how do you know the server gave you the right key? A compromised server could provide a false public key, allowing the client to encrypt messages to an attacker rather than the intended recipient.

Until now, the only way to detect such malfeasance was to verify safety numbers with your contact in person or over a trusted channel. Signal recently launched an alternative: Automatic Key Verification, a feature that helps validate that your chats are secure without requiring direct safety number comparison. Trail of Bits built and operates one of the three auditors that make this system trustworthy. Our auditor, which is an independent implementation written from scratch, continuously checks that the Automatic Key Verification system behaves honestly.

How key verification works

Automatic Key Verification is a form of “key transparency” that makes mismatch attacks harder to hide by creating a globally consistent view of the set of public keys associated with each phone number. The Signal app now performs a periodic self-check to ensure that all keys stored in the global map for your account belong to your devices. If the app is unable to verify the log, or finds that not all keys are expected, the user is presented with a warning that “Automatic Key Verification is currently unavailable for your device.” Automatic Key Verification may also be unavailable for other reasons, as outlined in Signal’s documentation.

What our auditor does

Automatic Key Verification depends on external auditors. Trail of Bits helps this system function by providing external verification that the user ↔ public key map is globally consistent and well formed, and does not hide any entries. Each time a new entry is added, we update our local copy of the map, stored as a Merkle tree. Periodically, we sign the head of the tree using a signing key that only we know. Because we commit to only ever signing one consistent lineage of Merkle trees, clients know that they are seeing the same set of public keys as everyone else in the system. Clients currently require signatures from each of three auditors: one operated by Signal, one operated by Cloudflare, and one operated by Trail of Bits.

When Automatic Key Verification is turned on, the Signal client periodically fetches Merkle tree heads from the Signal key transparency server. The client requires that each tree head belong to a lineage endorsed by all registered auditors within the last seven days. If the server does not present valid auditor signatures, the client will raise a warning and Automatic Key Verification will fail. A fully malicious server may therefore maintain a split view of the system for at most one week before client applications start to display warning messages.

We chose to implement our auditor from scratch, based on the specification, to provide independent verification; the code is open source. Signal also publishes a reference implementation.

We will provide updates to this blog post if we need to make substantive changes to our signing policy, such as resetting the state of our auditor or rotating our signing key. Our current public key is:

7fe5d91de235188486d8fb836a6da37e625e2b10eb6d144185b9364cc83cbbb6

How to use Automatic Key Verification

You can enable Automatic Key Verification in Signal by going to “Settings > Privacy > Advanced” and enabling Automatic Key Verification. In supported chats, you can verify the public key of your counterparty by visiting the safety number verification screen and clicking “Verify Automatically.” Automatic Key Verification often does not support chats where you started the conversation by searching for a recipient’s username. See Signal’s help page for more information. If automatic verification fails, users should fall back on safety number comparison.

Why we’re doing this

We believe that free and private communication is a critical public good. We are not paid by Signal or any other party for this service; we operate it in the interest of users and the community broadly.

Some form of public key integrity is an important component of any full end-to-end encryption system. If you would like to implement key transparency or end-to-end encryption generally, contact us.

联系我们 contact @ memedata.com