HN 日本語サマリー

← 一覧へ戻る
セキュリティ

Trail of BitsはどのようにSignalチャットの整合性検証を支援しているか

How Trail of Bits helps verify the integrity of Signal chats (blog.trailofbits.com)

67 pointsby dgroshev38 コメント

要約

Signalの自動キー検証機能は、サーバーが偽の公開鍵を提供した場合でも、ユーザーが安全な通信を行えるように支援します。Trail of Bitsは、このシステムの信頼性を支える3つの監査人のうちの1つとして、独立した監査システムを構築・運用しており、ユーザーと公開鍵のマッピングがグローバルに一貫しており、改ざんされていないことを継続的にチェックしています。

全文翻訳

Trail of BitsはSignalチャットの整合性検証をどのように支援しているか

すべてのSignalチャットは同じように始まります。クライアントはSignalサーバーに連絡先の電話番号に関連付けられた公開鍵を要求します。しかし、サーバーが正しい鍵を提供したことをどうやって知るのでしょうか? 侵害されたサーバーは偽の公開鍵を提供し、クライアントが意図した受信者ではなく攻撃者にメッセージを暗号化する可能性があります。

これまで、このような不正行為を検出する唯一の方法は、対面または信頼できるチャネルで連絡先と安全番号を確認することでした。Signalは最近、代替手段として自動キー検証をリリースしました。これは、直接の安全番号比較を必要とせずに、チャットが安全であることを検証するのに役立つ機能です。Trail of Bitsは、このシステムを信頼できるものにするための3つの監査人のうちの1つを構築・運用しています。私たちの監査人は、ゼロから書かれた独立した実装であり、自動キー検証システムが正直に動作しているかを継続的にチェックしています。

キー検証の仕組み

自動キー検証は「キー透明性」の一形態であり、電話番号に関連付けられた公開鍵のセットのグローバルに一貫したビューを作成することで、不一致攻撃を隠しにくくします。Signalアプリは現在、アカウントのグローバルマップに保存されているすべての鍵が自分のデバイスに属していることを確認するために、定期的な自己チェックを実行します。アプリがログを検証できない場合、またはすべての鍵が期待どおりでない場合、ユーザーには「お使いのデバイスでは現在、自動キー検証が利用できません」という警告が表示されます。Signalのドキュメントに概説されているように、自動キー検証は他の理由でも利用できない場合があります。

私たちの監査人が行うこと

自動キー検証は外部監査人に依存しています。Trail of Bitsは、ユーザーと公開鍵のマッピングがグローバルに一貫しており、適切に形成されており、エントリを隠していないという外部検証を提供することで、このシステムの機能に貢献しています。新しいエントリが追加されるたびに、Merkleツリーとして保存されているローカルコピーを更新します。定期的に、ツリーのヘッドを私たちだけが知っている署名鍵を使用して署名します。一貫したMerkleツリーの系統のみに署名することを約束するため、クライアントはシステム内の他のすべてのユーザーと同じ公開鍵セットを見ていることを知ることができます。クライアントは現在、3つの監査人からの署名を必要としています。1つはSignalが運用し、1つはCloudflareが運用し、1つはTrail of Bitsが運用しています。

自動キー検証がオンになっている場合、SignalクライアントはSignalキー透明性サーバーからMerkleツリーのヘッドを定期的に取得します。クライアントは、各ツリーヘッドが過去7日以内に登録済み監査人すべてによって承認された系統に属することを要求します。サーバーが無効な監査人の署名を提供しない場合、クライアントは警告を発し、自動キー検証は失敗します。したがって、完全に悪意のあるサーバーは、クライアントアプリケーションが警告メッセージを表示し始めるまで、最大1週間システムのスプリットビューを維持できます。

独立した検証を提供するために、仕様に基づいて、監査人をゼロから実装することを選択しました。コードはオープンソースです。Signalはリファレンス実装も公開しています。

署名ポリシーに実質的な変更を加える必要がある場合(監査人の状態をリセットしたり、署名鍵をローテーションしたりするなど)は、このブログ投稿を更新します。現在の公開鍵は次のとおりです。

7fe5d91de235188486d8fb836a6da37e625e2b10eb6d144185b9364cc83cbbb6

自動キー検証の使用方法

Signalで自動キー検証を有効にするには、「設定 > プライバシー > 詳細設定」に移動し、自動キー検証を有効にします。サポートされているチャットでは、安全番号検証画面にアクセスして「自動的に検証」をクリックすることで、相手の公開鍵を検証できます。自動キー検証は、ユーザー名で受信者を検索して会話を開始した場合、チャットでサポートされないことがよくあります。詳細については、Signalのヘルプページを参照してください。自動検証が失敗した場合は、安全番号比較にフォールバックする必要があります。

なぜこれを行うのか

私たちは、自由でプライベートなコミュニケーションが重要な公共財であると信じています。私たちは、Signalやその他のいかなる当事者からもこのサービスに対して報酬を得ていません。ユーザーとコミュニティ全体の利益のためにこれを運営しています。

公開鍵の整合性は何らかの形で、完全なエンドツーエンド暗号化システムの重要なコンポーネントです。キー透明性またはエンドツーエンド暗号化全般を実装したい場合は、お問い合わせください。