3.4.4. Integrity Check Value Verification (完全性チェック値検証)
受信者は, 指定された完全性アルゴリズムを使用して, パケットの適切なフィールドに対してICVを計算し, それがパケットのICVフィールドに含まれるICVと同じであることを検証します。計算の詳細は以下に示します。
計算されたICVと受信されたICVが一致する場合, データグラムは有効であり, 受け入れられます。テストが失敗した場合, 受信者は受信したIPデータグラムを無効として破棄しなければなりません (MUST)。これは監査可能なイベントです。監査ログエントリには, SPI値, 受信日時, 送信元アドレス, 宛先アドレス, および (IPv6の場合) フローIDを含めるべきです (SHOULD)。
実装上の注意:
実装は, 以下のステップのセットと同じ結果をもたらす任意のステップのセットを使用できます。ICV値を保存し, それを (ICVフィールドパディングではなく) ゼロで置き換えることから始めます。転送中に変更された可能性のある他のすべてのフィールドをゼロにします。(ICV計算を実行する前にゼロ化されるフィールドの説明については, セクション3.3.3.1「可変フィールドの処理」を参照してください。) このSAに対してESNオプションが選択されている場合, パケットの最後の後にESNの上位32ビットを追加します。(上記で説明したように) パケットの全体的な長さをチェックし, 完全性アルゴリズムの要件に基づいて暗黙的なパディングが必要な場合, (存在する場合はESNの後に) パケットの最後に必要に応じてゼロで埋められたバイトを追加します。ICV計算を実行し, アルゴリズム仕様で定義されている比較ルールを使用して, 結果を保存された値と比較します。(例えば, ICV計算にデジタル署名と一方向ハッシュが使用されている場合, 一致プロセスはより複雑になります。)