AH
IPsecを構成するプロトコルの1つ。パケットの完全性(改ざんの検出)と送信元の認証を行うが、暗号化は行わない。IPのプロトコル番号は51。
イマシルちゃんの解説
AHは、IP通信を保護するIPsecで使う認証用のプロトコルだよ。
送信側は相手と共有した秘密の鍵を使って、データのまとまりであるパケットから「認証データ」という確認用の値を計算するんだ。
その値をパケットに添えて送り、受信側でも同じ鍵を使って計算した値と比べるよ。
これで、保護対象の内容が途中で書き換えられていないかを調べられるの。
鍵を知らない相手は正しい値を作りにくいから、送り主の確認にも役立つんだ。
ただし内容は隠れないため、盗み読みを防ぐ暗号化とは役割が違うよ。
この解説はわかりやすかったですか?
より深い解説
定義
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は改ざんを検出するためのメッセージ認証のアルゴリズムで、暗号化ではない |
ヘッダーの値と設定情報を分ける
AHのSPI(Security Parameters Index)は、受信側が対応するSAを識別するための値である。シーケンス番号は再送された古いパケットを見分ける処理に、認証データは完全性と送信元の確認に使う。SPI自体が暗号化鍵や認証データになるわけではない。
| 要素 | 役割 |
|---|---|
| AH | パケットごとの完全性と認証 |
| SA | アルゴリズム、鍵、有効期間などの合意・管理情報 |
| IKE | 相手との合意や鍵の確立 |
| ESP | 暗号化や完全性保護に使うプロトコル |
SAを保存するデータベースをSADという。トランスポートモードとトンネルモードという区別があっても、AHが暗号化を提供することにはならない。