NIP-104: Double Ratchet DMs
NIP-104は、Double Ratchetプロトコル(Signalのアーキテクチャに基づく)を使用したエンドツーエンド暗号化ダイレクトメッセージを定義し、Nostrの会話にforward secrecyとpost-compromise securityを提供します。
なぜ重要なのか
既存のNostr DMソリューションには制限があります:
- NIP-04:コンテンツを暗号化しますが、メタデータが漏洩します
- NIP-17 + NIP-59:gift-wrappingによりメタデータ漏洩を解決しますが、forward/backward secrecyがありません
NIP-104は全体像を完成させます:ユーザーの秘密鍵が侵害された場合、攻撃者は過去のメッセージを読むことができず(forward secrecy)、将来のメッセージを無期限に読み続けることもできません(post-compromise security)。
仕組み
初期セットアップ(X3DH)
二者間でアイデンティティキーとprekeysを使用した拡張トリプルDiffie-Hellman交換を行い、初期の共有ルートキーを導出します。
Double Ratchet
- DH Ratchet:当事者がメッセージを交換するたびに、新しいDiffie-Hellmanキーが生成され、新しいルートキーとチェーンキーが生成されます
- Symmetric Ratchet:送信と受信の別々のチェーンが、各メッセージの個別のメッセージキーを導出します
この継続的なキーローテーションにより、1つのキーが侵害されても最小限のメッセージコンテンツしか明らかになりません。
Event Kinds
- Kind 442:X3DH初期化のためのユーザーprekeysを公開
- Kind 443:暗号化された最初のメッセージを含む初期会話セットアップ
- Kind 444:確立された会話での後続の暗号化メッセージ
すべての暗号化メッセージは、メタデータ保護のためにkind 1059 GiftWrapイベントでラップされます。
主要なタグ
p- 受信者の公開鍵prekey- DH計算のための受信者のprekeydh_sending- 現在のDH送信公開鍵current_index- チェーン内のメッセージ番号previous_length- 前のメッセージチェーンの長さ
制限事項
メッセージはデバイス-クライアントペアごとに機能します。複数のデバイス間での同期には、各デバイスに対して個別の初期化が必要であり、これはセキュリティ強化のためのトレードオフです。
主要ソース:
言及:
関連項目: