プロローグ - Noise Protocol Framework (11)
Noiseプロトコルを使用する各パーティはプロローグというデータを事前に決めておきます(プロローグなしでもよい)。
このデータをハンドシェイク時にハッシュ化して、(SymmetricStateオブジェクトの)h値として使用します。相手側で復号できない場合はハンドシェイクが失敗します。
事前に決められたデータでハッシュを生成することにより、関係者(アプリケーション)間でのみ通信ができるようになります。
当事者間での同一性を確認するのに役に立ちますが、プロローグ自体は秘密のデータという訳ではないということに注意してください。
当事者間で秘密のデータを使って、強化されたハンドシェイクを行いたい場合は(プロローグを秘密にするのではなく)、pskモードを使用するようにしてください。(事前共有鍵(PSK) - Noise Protocol Framework (12))
例:
Lightning Networkでは"lightning"という文字列がプロローグとして使用されています。
https://github.com/lightningnetwork/lightning-rfc/blob/master/08-transport.md#handshake-state-initialization
WireGuardでは"WireGuard v1 zx2c4 Jason@zx2c4.com"が使用されています。
https://github.com/WireGuard/WireGuard/blob/master/src/noise.c#L29