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

  1. DH Ratchet:当事者がメッセージを交換するたびに、新しいDiffie-Hellmanキーが生成され、新しいルートキーとチェーンキーが生成されます
  2. Symmetric Ratchet:送信と受信の別々のチェーンが、各メッセージの個別のメッセージキーを導出します

この継続的なキーローテーションにより、1つのキーが侵害されても最小限のメッセージコンテンツしか明らかになりません。

Event Kinds

  • Kind 442:X3DH初期化のためのユーザーprekeysを公開
  • Kind 443:暗号化された最初のメッセージを含む初期会話セットアップ
  • Kind 444:確立された会話での後続の暗号化メッセージ

すべての暗号化メッセージは、メタデータ保護のためにkind 1059 GiftWrapイベントでラップされます。

主要なタグ

  • p - 受信者の公開鍵
  • prekey - DH計算のための受信者のprekey
  • dh_sending - 現在のDH送信公開鍵
  • current_index - チェーン内のメッセージ番号
  • previous_length - 前のメッセージチェーンの長さ

制限事項

メッセージはデバイス-クライアントペアごとに機能します。複数のデバイス間での同期には、各デバイスに対して個別の初期化が必要であり、これはセキュリティ強化のためのトレードオフです。


主要ソース:

言及:

関連項目: