AH
IPsecを構成するプロトコルの1つ。パケットの完全性(改ざんの検出)と送信元の認証を行うが、暗号化は行わない。IPのプロトコル番号は51。
イマシルちゃんの解説
AHは、パケットに「書き換えられていません」っていうハンコを押す係なんだ。
途中で誰かが中身を書き換えたら、受け取った側がハンコを確かめたときにバレちゃう。
でも、AHは封筒には入れないから、中身は丸見えのままなんだよ。
秘密にしたいときは、ESPのほうを使うんだ!
より深い解説
定義
AH(Authentication Header)は、RFC 4302で定められた、IPsecのセキュリティプロトコルである。共有した鍵を使って、パケットから認証データ(ICV)を計算し、AHヘッダーに入れる。受信側は、同じ計算をして結果を比べ、パケットが改ざんされていないことと、正しい相手から送られたことを確かめる。
AHが提供する機能
| 機能 | 提供するか |
|---|---|
| 完全性(改ざんの検出) | する |
| 送信元の認証 | する |
| リプレイ攻撃の防止 | する(シーケンス番号) |
| 機密性(暗号化) | しない |
認証の範囲
AHの特徴は、IPヘッダーも含めたパケット全体を認証の対象にすることである。ただし、TTLやヘッダーチェックサムのように、転送の途中で変わることが前提のフィールドは、0とみなして計算する。
この性質のため、途中のNATでIPアドレスが書き換えられると、受信側で認証に失敗する。AHはNATを越えられない。
使われなくなった理由
| 理由 | 内容 |
|---|---|
| 暗号化ができない | 機密性が必要な場面では、どのみちESPを使う |
| ESPで完全性も確保できる | ESPは認証の機能も持つため、AHを併用する必要がほとんどない |
| NATとの相性 | NATを使うネットワークで使えない |
このため、現在のIPsecの実装では、ESPだけを使うのが一般的である。RFC 8221でも、AHよりESPの利用が推奨されている。
誤解しやすい点
| 誤解 | 正しくは |
|---|---|
| アルゴリズムを相手と決めるためにAHを使う | アルゴリズムと鍵の合意はIKEが行う。AHはパケットの認証を行う |
| AHで暗号化もできる | 暗号化はできない |
| AHの認証データにはHMACを使い、これが暗号化にあたる | HMACは改ざんを検出するためのメッセージ認証のアルゴリズムで、暗号化ではない |