見出し画像

使われなくても知って楽しい、その仕組み!IPsecのセキュリティ「AH」

はい、こんにちは~!専用線のように公衆回線を使って安全にデータを送受信する「VPN」の連載をしています。特にIPsecについて解説しております。

前回は、IPsecの通信手順である「IKEフェーズ1」の2つのモード、すなわち、「メインモード」と「アグレッシブモード」の違いについて、お話ししました。

拠点間VPNに用いる安全重視のモードが「メインモード」、動的IPでリモート端末が利用でき、効率重視のモードが「アグレッシブモード」でしたね。

IKEフェーズ1 メインモードの概念図

さて、今回から、IPsecのセキュリティプロトコル「AH」と「ESP」についてお話しましょう!IPsecにおけるセキュリティ対策のキモですから、丁寧にまとめていきたいと思います!

この記事では、「AH」に焦点をあてて解説します。

では、行ってみましょう!

IPsec上のセキュリティ対策

VPNは、専用線を使ったときのように、公衆回線上で安全にデータを送受信する仕組みでした。

具体的には、

  • 暗号化(機密性の確保)

  • 改ざん検知(完全性の確保)

  • 認証(真正性の確保)

が必要になります。ふむ、ここまでいいですね。

え、暗号化しない!?「AH」

では、まずはセキュリティプロトコルのうち、「AH」について見ていきましょう。

AHは、「Authentication Header」の略、訳せば「認証ヘッダ」です。その名のとおり、「認証ヘッダ」が付け加えられます。その「認証ヘッダ」の中身がどうなっているか、ここに注目しましょう。

ただ、この「AH」。現在ほとんど使われません。なぜなら、「暗号化しない」しないからです。認証と改ざん検知の機能だけで、(AHだけでは)機密が確保できないのです。

じゃあ、なんで「AH」なるものがわざわざ存在するのだろうか、と調べたら、「SEの道標」さんのウェブサイト(いつもありがたく拝見しております)には、「過去の政治的な話で「暗号化を禁止」する国があったため、その配慮として作られたもの」と紹介されていました。そういう理由だったか…。

さはさりながら、IPA情報処理技術者試験のテキスト類では、AHとESPを対比した説明が多いですね。一応、どんなプロトコルか知っておきましょう。

AHのフレーム構造はこうだ

では、AHで処理したフレームの構成を見てみましょう。

まず、処理前のIPパケットは、こんな感じです。

IPsec処理前のIPパケット

ふむ、いつものIPパケットの構成ですね。しかし、このIPパケットをIPsecで送るには、情報(パラメータ)を追加する必要があります。そして、IPヘッダなどにはそれらを入れる場所はありません。ならどうするか?

かくなる上は、AHヘッダを入れ込みましょう!ぐいっと。

AHヘッダをIPパケットに挿入(トランスポートモード)

ただ、動作モードはトランスポートとトンネルの二種類があり、それぞれAHの位置がちょっと違います。絵にすると次の通りです。トンネルモードはAHヘッダの位置が本来のIPヘッダの前に来ていますね。

AHフレームの構成(トランスポートとトンネルモード)

ここで私が疑問に思うのは、トンネルモードでの新IPヘッダをつけることです。う~ん、本来のIPヘッダもTCP/UDPヘッダも暗号化されないなら、この情報だけでもルーティングできそうで、新しくIPアドレスをつける理由があまりなさそうに見えます…。仕様かしら?

それはさておき、AHで処理した後のフレームの構成は分かりました。ちなみに、IPv6を使うなら、また少しフレーム構成も異なります。いろいろ複雑です…。

AHヘッダの中身はどうなっているの?

それでは、気になるAHヘッダは、どう構成されているのでしょう?絵にするとこうなります。

AHヘッダの構成

英語じゃよく分からないのでちょっと解説します。

  1. Next Header(次のヘッダ): このフィールドは、AHヘッダーの次に続くIPパケット内のヘッダーのタイプを示します。

  2. AH Length(ヘッダ長): AHヘッダーの長さを示します。これは、32ビット単位で、ヘッダーの長さを知るために使用されます。

  3. Reserved(予約済み): このフィールドは将来の使用のために予約されています。が、現在は使用されていません。通常、ゼロで埋められます。もうずっと使わないのでは?

  4. SPI (Security Parameters Index): これは、セキュリティアソシエーション(SA)を識別するために使用される一意の識別子です。

  5. Sequence Number(シーケンス番号): パケットのシーケンス番号を保持します。これは、リプレイ攻撃(盗聴したデータをそのまま使ってなりすます攻撃)を防ぎます。

  6. Authentication Data(認証データ): これは、パケットの完全性とデータの発信元の認証を保証するための、可変長のフィールドです。通常、ハッシュ値のようですが、それ以外のこともあるようです。

注目すべきは、Authentication Dataです。この中には、ICV(Integrity Check Vector)というチェックサムが入っています。これは、IPパケット全体(IPヘッダとペイロール)をハッシュ関数に投入して得られるハッシュ値です。

受信側で同様のハッシュ計算を行って突合することで、改ざん検知されます。一致しなければ、改ざんされたか、壊れたか、秘密鍵が一致しないのか…などと判断されて破棄されます。

ということはですよ、NATでIPアドレスが変わってしまった場合は、否認されます。IPsecは、NATとの関係がいろいろと難しいのです…。


はい、本日はここまで!本日は、IPsecのセキュリティプロトコルのうち、AHについて紹介しました。もはや使われないプロトコルに、思わず時間を割いてしまいました~。

自分の疑問点をいろいろ解消したかったものでして。

次回は、、、もう一つのセキュリティプロトコルで、主流の「ESP」をご紹介します。

では!



この記事が気に入ったらサポートをしてみませんか?