
2026/09/12 20:27
Trail of Bits が Signal チャットの整合性をどのように検証するか
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Signal は、すべてのユーザーにとってエンドツーエンド暗号化をより容易かつ堅牢にするために設計された画期的な「自動鍵検証」機能の導入を発表しました。以前は、安全なチャットを保証するために連絡先と安全性の数値を手動で比較する必要がありましたが、このプロセスはしばしば見落とされたり誤用されたりしていました。この新しいシステムは、公開鍵のグローバルデータベースを使用して接続のセキュリティを自動的に検証することで、そのような手間を解消します。このデータベースが信頼できることを保証するために、Signal は Cloudflare や Trail of Bits のような独立した監査機関と提携しています。これらの専門家は、梅ツリー(要するにデジタル指紋)を使用して鍵データの署名されたコピーを維持し(Trail of Bits がオープンソースコードを用いて 3 つの監査機関のうち 1 つを運用)、監査人が過去 7 日以内に現在の鍵を検証できない場合、アプリは即座にアラートを出します。この「鍵の透明性」のアプローチにより、ハッカーが検知されずにサーバー側を見方を操作する余地を大幅に縮小し(悪意のあるサーバーの影響を最大 1 週間に制限)ます。ユーザーは現在、プライバシー設定でこれをオンにすることで、手動チェックなしに継続的なセキュリティを保証でき、必要に応じて従来の方法に戻ることができます。究極的には、このアップデートは、個人の警戒だけに頼るのではなく、第三者による監督を通じて検証を標準化することによって信頼性を強化します。Trail of Bits の監査機関の現在の公開鍵は 7fe5d91de235188486d8fb836a6da37e625e2b10eb6d144185b9364cc83cbbb6 です。
本文
Signal の「自動鍵検証」機能と Trail of Bits の監査者について
背景:公開鍵の妥当性確認の課題
すべての Signal チャットは、クライアントが連絡先の電話番号に対応する公開鍵を Signal サーバーから照会することで始まります。しかし、この公開鍵が真正であることをどう確認すべきかという課題があります。
- リスク: 侵害されたサーバーが偽の公開鍵を提供すると、ユーザーは無意識に攻撃者へメッセージを送り続けてしまいます。
- 従来の方法: これまで、不正を検出する唯一の方法は、信頼できるチャネル(対面など)で安全番号を手動で確認することのみでした。
- Signal の新機能: 現在、**「自動鍵検証(Automatic Key Verification)」**機能が導入され、対面での比較なしにチャットの安全性を検証できるようになりました。
「自動鍵検証」の仕組み
この機能は「鍵の透視(Key Transparency)」を採用し、各電話番号に関連する公開鍵のセットについて、全体として一貫したグローバルな視点を創出します。これにより、不一致攻撃を防ぐのが困難になります。
- 自己チェック: Signal アプリは定期的にログを検証し、「すべてのユーザー端末上の鍵がグローバルマップと一致しているか」を確認します。
- ログ検証不可または予期しない鍵が存在すると、「自動鍵検証機能が利用できません」と警告が出ます。
- その他、ドキュメントに記載されているケースで自動的に使えない場合もあります。
監査者の役割と Trail of Bits の取り組み
このシステムは外部の独立した監査者に依存しています。Trail of Bitsはこの 3 つの監査者のうちの 1 つとして、以下の役割を果たします。
- 独立性: 私たちはゼロから書いた独立系の実装を使用し、常にシステムの誠実な動作を監視し続けています。
- 検証内容: ユーザーと公開鍵のマッピングがグローバルに一貫しており、かつエントリ隠しがないことを保証します。
- Merkle Tree の運用:
- 新しいエントリが追加されるたびに、ローカルのマップコピー(Merkle tree)を更新します。
- ツリーの頭部(Root)は、私どものみが知る署名鍵を使用して定期的に署名されます。
- 系譜(Lineage)の署名にコミットしているため、他のすべてのユーザーと同じ公開鍵セットを見ていれば安全です。
3 つの監査者による承認
クライアントは、システム内の信頼性を確保するために以下の 3 つの監査者からすべて署名を取得する必要があります:
- Signal が運用するもの
- Cloudflare が運用するもの
- Trail of Bits が運用するもの(本記事提供元)
承認フローとセキュリティ保証
- クライアントは定期的に Merkle tree の頭部を取得します。
- 要件: その頭部は、過去7 日以内に登録されたすべての監査者によって承認された系譜である必要があります。
- 攻撃の不可能性: もしサーバーが有効な監査者署名を欠くと、クライアントは警告を表示し自動検証を失敗判定します。これにより、悪意あるサーバーも最大1 週間程度しか分断したビュー(異なる視点)を維持できないことが保証されます。
オープンソースと公開鍵
- 私たちは仕様に基づいて監査者を実装し、コードはオープンソースです。(Signal も参考実装を提供)
- 署名ポリシーの本質的変更(リセットや鍵ローテーションなど)については、別途ブログ記事で通知します。
Trail of Bits の現在の公開鍵:
7fe5d91de235188486d8fb836a6da37e625e2b10eb6d144185b9364cc83cbbb6
自動鍵検証の使い方
機能の有効化と確認手順は以下の通りです。
有効化手順
- Signal の設定から「設定 > プライバシー > 高度な設定」へ移動します。
- 「自動鍵検証」をオンにします。
検証手順
対応しているチャットの場合:
- 対話相手の公開鍵を検証する画面を開きます(安全番号確認画面)。
- **「自動的に検証する」**をクリックします。
制限事項と注意点
- 検索からのチャット: 受信者のユーザー名から検索して開始したチャットでは、この機能はサポートされていません(詳しくは Signal ヘルプページをご確認ください)。
- 失敗時の対処: 自動検証に失敗した場合は、必ず安全番号を手動で比較してください。
我々の理念とメッセージ
自由かつプライバシーを尊重する通信は不可欠な公的財であると信じています。
- 無償の提供: 私たちは Signal や他組織から支払いは受けていません。ユーザー、コミュニティ、そして社会全体の利益のために運営しています。
- 重要な構成要素: 公開鍵の整合性は、完全なエンドツーエンド暗号化システムにおいて不可欠です。
- ご提案歓迎: もし鍵透視や E2EE の実装に興味がある場合は、ぜひご連絡ください。