NIP-04はAES-256-CBC暗号化を使用した暗号化ダイレクトメッセージを定義しています。Nostrにおけるプライベートメッセージングの元々の方法でしたが、重大なプライバシー上の制限のためNIP-17に置き換えられ、非推奨となりました。

仕組み

メッセージはkind 4イベントを使用し、以下の暗号化スキームを採用しています:

  1. 受信者の公開鍵と送信者の秘密鍵を使用したECDHで共有シークレットを生成
  2. メッセージをAES-256-CBCで暗号化
  3. 暗号文を初期化ベクトルを付加してbase64エンコード
  4. pタグで受信者の公開鍵を識別

セキュリティ上の制限

NIP-04には重大なプライバシー上の欠陥があります:

  • メタデータの漏洩 - 送信者のpubkeyがすべてのメッセージで公開される
  • 送信者のプライバシーがない - 誰が誰にメッセージを送っているか誰でも見られる
  • 正確なタイムスタンプ - メッセージのタイミングがランダム化されていない
  • 非標準的な実装 - 標準的なSHA256ハッシュではなく、ECDHポイントのX座標のみを使用

仕様書は「暗号化通信の最先端には程遠い」と明確に警告しています。

非推奨ステータス

NIP-04はNIP-17に置き換えられ非推奨となりました。NIP-17はNIP-59のギフトラッピングを使用して送信者の身元を隠します。新しい実装ではプライベートメッセージングにNIP-17を使用すべきです。


主要な情報源:

関連記事:

関連項目: