NIP-04: 暗号化ダイレクトメッセージ(非推奨)
NIP-04はAES-256-CBC暗号化を使用した暗号化ダイレクトメッセージを定義しています。Nostrにおけるプライベートメッセージングの元々の方法でしたが、重大なプライバシー上の制限のためNIP-17に置き換えられ、非推奨となりました。
仕組み
メッセージはkind 4イベントを使用し、以下の暗号化スキームを採用しています:
- 受信者の公開鍵と送信者の秘密鍵を使用したECDHで共有シークレットを生成
- メッセージをAES-256-CBCで暗号化
- 暗号文を初期化ベクトルを付加してbase64エンコード
pタグで受信者の公開鍵を識別
セキュリティ上の制限
NIP-04には重大なプライバシー上の欠陥があります:
- メタデータの漏洩 - 送信者のpubkeyがすべてのメッセージで公開される
- 送信者のプライバシーがない - 誰が誰にメッセージを送っているか誰でも見られる
- 正確なタイムスタンプ - メッセージのタイミングがランダム化されていない
- 非標準的な実装 - 標準的なSHA256ハッシュではなく、ECDHポイントのX座標のみを使用
仕様書は「暗号化通信の最先端には程遠い」と明確に警告しています。
非推奨ステータス
NIP-04はNIP-17に置き換えられ非推奨となりました。NIP-17はNIP-59のギフトラッピングを使用して送信者の身元を隠します。新しい実装ではプライベートメッセージングにNIP-17を使用すべきです。
主要な情報源:
関連記事:
関連項目: