IKEv2:鍵の再生成と再認証の違い — 接続が後から切れる理由
一方は鍵素材を更新し、もう一方は本人確認をやり直す。セッションが越えた境界が、何を直すべきかを決める。
トンネルは朝に立ち上がり、何時間も動き続ける。やがて切れ、一度の再試行でつながり直し、翌日も同じことを繰り返す。ネットワークに変化はなく、誰もパスワードに触れていない。更新の境界で失敗するセッションは、通常、二つの異なる操作のどちらかを越えており、資格情報を再確認するのはそのうち一方だけだ。どちらが発動したかを読み取ることが、診断そのものである。
外から見ると似ている二つの操作
鍵の再生成は、プロトコルが定める交換の範囲でセキュリティアソシエーションや鍵素材を置き換える。認証は繰り返されないため、セッション開始時に受け入れられた身元はそのまま引き継がれる。
再認証はさらに進む:新たに認証された関係を確立するので、資格情報がもう一度評価される。期限切れ、失効、ディレクトリでの変更は、その瞬間に可視化される。
鍵の再生成が実際に置き換えるもの
IKEv2 は別々のライフサイクルを持つ二種類のアソシエーションを保つ。IKE SA が制御チャネルを守り、CHILD SA が実際のトラフィックを守る。片方を再生成することは、クライアントを再接続することの同義語ではない。
この分離がよくあるパターンを説明する:トラフィックは順調に流れ、その後 CHILD SA が再生成され、数週間前に片側でフェーズ 2 を編集したために提案が合わなくなる。その変更は、再生成が試すまで無害にそこにあった。
寿命の不一致も同じように振る舞う。先に上限に達した側が交換を始め、もう一方はそれを受け入れなければならない。
再認証が評価し直すもの
再認証では、ログイン時に有効だったクライアント証明書がすでに期限切れかもしれない。失効した資格情報、ローテーションされたパスワード、利用できない第二要素は、どれも再生成の時ではなくここで表面化する。
だからこそ、あらゆる寿命を延ばすことは修正のように感じられて、修正ではない。検査を通過する代わりに先送りしたのだ。次の更新は同じ欠陥を伴い、それに気づくための停止時間は短くなる。
実装によっては、再認証の間に古い状態と新しい状態を重ねる。短い空白を生むものもある。そのため、同じ設定でもベンダーが違えば利用者の体験は変わりうる。標準がそう定めていると決めつけず、挙動を試すべきだ。
何かを変える前にタイムスタンプを読む
障害の瞬間を、アソシエーションの前後の状態とともに記録する。古いアソシエーションが認証交換なしに置き換えられたなら、更新の境界にいた。障害の直前に AUTH 交換が現れるなら、再認証の最中にいた。
strongSwan はこれを別々の設定として公開している:rekey は鍵の再生成を制御し、reauth は新しい認証を行うかどうかを制御し、margin の値がそれぞれ期限のどれだけ前から始まるかを決める。再生成のドキュメントがその相互作用を説明しており、フォーラムの投稿から寿命をコピーする前に読む価値がある。
これらすべてを単なるネットワーク損失と区別する。切断されたリンクは、ピア死検出のイベントや再送の嵐を生むのであって、提案が一致するきれいな交換ではない。
失敗したものを変える
資格情報の拒否なら身元の問題を直す必要がある:証明書を更新し、アカウントを復元し、要素を再登録する。提案や寿命の不一致なら、両側でパラメータを比較する必要がある。
症状を避けるために寿命を伸ばすのは、いつも効いたように見えて決して効かない唯一の選択肢だ。
制御された更新を試す
一日待つのではなく、更新を強制する。次に、配備が対応していれば再認証で繰り返し、両端を観察する。
初回ログインの成功は、このどれも練習しない。その後のライフサイクルこそ、こうした配備が実際に壊れる場所だ。