RFC4106 に従って、ガロア/カウンター モードで aes を使用して、トランスポート モードで ESP の形式で IPSEC を実装しようとしています。
変換されたパケットの暗号文の直前に初期化ベクトルを配置することになっています。
認証された(ただし暗号化されていない)データの一部であるべきですか?(暗号化しないと仮定しています...)
RFC でこれが指定されている場所がわかりません。それは明白であるべきですか?
RFC4106 に従って、ガロア/カウンター モードで aes を使用して、トランスポート モードで ESP の形式で IPSEC を実装しようとしています。
変換されたパケットの暗号文の直前に初期化ベクトルを配置することになっています。
認証された(ただし暗号化されていない)データの一部であるべきですか?(暗号化しないと仮定しています...)
RFC でこれが指定されている場所がわかりません。それは明白であるべきですか?
GCMの定義を理解している限り、関連付けられたデータに初期化ベクトルを含める必要はありません。異なる初期化ベクトルを使用すると、異なる暗号化結果と異なる整合性チェック値の両方が得られます。
これは、認証された暗号化モードを組み合わせて使用する利点です。MAC に初期化ベクトルを含めることを気にする必要はありません。
したがって、GCM で ESP のパケットをエンコードするには、次のようにします。
AES-GCM-ESPの場合、IV(8バイトのesp iv)はAADの一部ではありません。AADは単なるESPヘッダーです。AES_GCMに渡されるIVは、salt(4バイト)+ iv(特に8バイトのiv)の連結であることに注意してください。一部のハードウェア暗号化エンジンはIVを16バイトとして使用します。この場合、最後の4バイトを0x0にパディングする必要があります。
このドキュメントを確認してください。かなりきれいです http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf
どうやら、明白な答えの両方が正しいようです。
ENCR_NULL_AUTH_AES_GMAC (暗号化なしの認証) を指定するRFC 4543 に従って、IV を含めます。
ただし、同じ RFC によると、AES-GCM-ESP (暗号化と認証) についてはそうではありません。
この情報があれば、RFC 4106 (実際には AES-GCM-ESP を指定している) も同様であることは明らかですが、最初はそう解釈していませんでした。