IKEv1 と IKEv2 の PSK 認証:何が違うのか
どちらの版も事前共有鍵を送らずにその知識を証明するが、異なるハッシュに異なる入力を与えている。二つのトレースを並べて比べる。
同じ事前共有鍵で設定された二つのゲートウェイがハンドシェイクを完了し、パケットキャプチャには回線上を秘密が渡る様子は映らない。人が覚えているのはそこだ。面白いのは、各版が秘密の知識を証明するために実際に何を計算しているかで、IKEv1 と IKEv2 はその証明を別々の入力から組み立て、その過程で別々の情報を露出する。二つのトレースを並べて読めば、違いは見た目だけのものではなくなる。
証明が果たすべきこと
Diffie-Hellman は双方に共通の値を与えるが、その公開半分は観察者でも計算できる。それ自体は身元について何も証明しない:鍵交換を完了した攻撃者は、あなたのゲートウェイと同じ共通値を持つ。認証の段階は、その交換を、意図した双方だけが持つ秘密と、合意した身元およびパラメータに結び付けるためにある。
その結び付きがあるからこそ、ハッシュは鍵以上のものを覆う。秘密だけを覆うなら、攻撃者はそれを別の身元や提案を持つ交換へ再生できてしまう。
IKEv1 メインモード:SKEYID を導出し、それから証明する
メインモードは六つのメッセージを実行する。最初の組がセキュリティアソシエーションを交渉し、二番目が Diffie-Hellman の公開値と nonce を交換し、三番目が確立直後の暗号化の下で身元と認証ハッシュを運ぶ。RFC 2409 がこの構成を定めており、事前共有鍵認証では、SKEYID は秘密と二つの nonce から導出され、後続の鍵素材は SKEYID、Diffie-Hellman の共通値、クッキー、定数から導出される。
五番目と六番目のメッセージのハッシュは、Diffie-Hellman 値、二つのクッキー、提案、送信者の身元を対象に、SKEYID を鍵として計算される。受信側は自分の設定した秘密で計算し直す。一致しなければ交換は終了し、秘密そのものがペイロードになることは決してない。
アグレッシブモードは同じ作業を三つのメッセージに圧縮し、つまり暗号化された経路ができる前に、身元と認証ハッシュが流れる。推測できる秘密にとっては現実の露出であり、秘密が送られたかどうかとは別の話だ。IKEv1 は RFC 9395 で非推奨とされているので、古いトレースは診断の演習であって配備の対象ではない。
IKEv2:別の導出と別の AUTH ペイロード
IKEv2 は IKEv1 の鍵スケジュールを再利用しない。初期の IKE 鍵は nonce と Diffie-Hellman の共通値から作った種から生まれ、子のセキュリティアソシエーションはそこから導出される。事前共有鍵はその種にまったく入らない。
認証はその後 AUTH ペイロードとして現れる。共有鍵認証では、RFC 7296 が秘密の埋め込み形式を定めており、固定の文字列Key Pad for IKEv2で秘密をハッシュし、その埋め込んだ鍵で署名済みの交換データと身元をハッシュする。検証側は同じ値を再構築できるが、観察者には秘密なしではできない。
何が変わったかに注目してほしい。IKEv1 では認証ハッシュが存在する前に秘密が鍵スケジュールへ練り込まれるが、IKEv2 では鍵スケジュールは秘密から独立しており、証明は署名済みオクテットに結び付いた独立のペイロードだ。概念上の保証は同じで仕組みが違い、だからこそパラメータ名とキャプチャは一対一に対応しない。
観察者が実際に知ることは何か
Diffie-Hellman の公開値、提案、nonce、クッキーはどちらの版でも見える。身元は IKEv1 アグレッシブモードでは見え、それ以外では保護される。秘密は決して見えない。
最後の一文には述べておくべき限界がある。弱い人間任せの秘密は推測で攻撃できる:攻撃者は候補の秘密に対して認証値がどうなるかを計算し、比べる。IKEv1 アグレッシブモードは証拠が平文で出るためこれを最も安くし、標準も一般に低エントロピーの秘密を警告している。秘密を送らないことは、悪い秘密を安全にすることとは違う。
この比較をどう使うか
相手の組ごとに一つだけ固有の秘密を使い、乱数源から生成し、配布したのと同じ配備経路で更新する。秘密が各拠点へ配られる設定テンプレートに入っているなら、一拠点の侵害は全部の侵害だ。
運用コストが許すところでは、共有秘密を推測される問題が消え、各相手に固有の身元が与えられるので、証明書ベースの認証を優先したい。事前共有鍵を残す場合は長く保ち、範囲を狭め、IKE の版を相互運用の細部ではなくセキュリティの判断として扱う。