implementing-end-to-end-encryption-for-messaging について
X3DHとDouble Ratchetを用いた、Signal Protocol風の簡易メッセージ暗号化を実装するセキュリティスキルです。暗号化メッセージの開発者やセキュリティ担当者向けに、メッセージごとの鍵や順不同で届くメッセージの処理を扱います。
主な機能
- 01X25519鍵交換
- 02X3DHセッション合意
- 03Double Ratchet鍵管理
- 04AES-256-GCMメッセージ暗号化
- 05前方秘匿性
- 06順不同メッセージの処理
活用シーン
- 01暗号化メッセージセッションの構築
- 02メッセージ暗号化と復号のテスト
- 03前方秘匿性の挙動確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-end-to-end-encryption-for-messagingインストール後、Claude Code で/implementing-end-to-end-encryption-for-messagingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
メッセージング向けエンドツーエンド暗号化の実装
概要
エンドツーエンド暗号化(E2EE)は、通信当事者だけがメッセージを読めることを保証するもので、サーバーを含むいかなる仲介者もメッセージを復号できません。このスキルでは、Signal プロトコルの Double Ratchet アルゴリズムを簡略化した実装を行い、鍵交換には X25519、鍵導出には HKDF、メッセージ暗号化には AES-256-GCM を使用します。
使用するタイミング
- 環境においてメッセージング機能のエンドツーエンド暗号化を導入または設定するとき
- コンプライアンス要件に沿ったセキュリティ統制を確立するとき
- このドメインのセキュリティアーキテクチャを構築または改善するとき
- この実装が必要となるセキュリティアセスメントを実施するとき
前提条件
- 暗号技術の概念とツールに関する基礎知識があること
- 安全に実行するためのテストまたは検証環境にアクセスできること
- 必要な依存関係をインストール済みの Python 3.8 以上があること
- テスト活動に対する適切な承認を得ていること
目的
- セッション確立のために X25519 Diffie-Hellman 鍵交換を実装する
- Double Ratchet 鍵管理アルゴリズムを構築する
- メッセージごとの鍵でメッセージを暗号化・復号する
- 前方秘匿性を実装する(現在の鍵が漏えいしても過去のメッセージは露出しない)
- 順不同で届くメッセージを処理する
- X3DH(Extended Triple Diffie-Hellman)を用いて鍵合意を実装する
主要な概念
Signal プロトコルの構成要素
| 構成要素 | 目的 | アルゴリズム |
|---|---|---|
| X3DH | 初期鍵合意 | X25519 |
| Double Ratchet | 継続的な鍵管理 | X25519 + HKDF + AES-GCM |
| Sending Chain | メッセージごとの暗号化鍵 | HMAC-SHA256 チェーン |
| Receiving Chain | メッセージごとの復号鍵 | HMAC-SHA256 チェーン |
| Root Chain | DH ラチェット時に新しいチェーン鍵を導出 | HKDF |
前方秘匿性
各メッセージは、ラチェットチェーンから導出された固有の暗号化鍵を使用します。鍵は使用後に削除されるため、現在の状態が漏えいしても、過去に送受信したメッセージは露出しません。
セキュリティ上の考慮事項
- 復号直後にメッセージ鍵を削除する
- メッセージの順序制御とリプレイ攻撃対策を実装する
- すべてのメッセージに認証付き暗号(AES-GCM)を使用する
- ID 鍵はデバイスレベルのセキュリティで保護する
- ID 鍵は帯域外で検証する(安全番号)
検証基準
- X25519 鍵交換で共有秘密が生成される
- 2 者間でメッセージが正しく暗号化・復号される
- 異なるメッセージから異なる暗号文が生成される
- 前方秘匿性:古い鍵では新しいメッセージを復号できない
- 順不同のメッセージを復号できる
- 改ざんされたメッセージは認証によって拒否される
コメント
Markdown 対応