ITの教科書検索
入門・発展ページ読了 約12分

IPsecとは ― AH・ESP・IKEとVPNの仕組み

IPsecとは、IPパケットを暗号化・認証して守る規格群です。AHとESPの違い、トンネルモード、IKEの鍵交換、NATトラバーサルを図と切り替えで解説します。

目次
  1. IPsecとは
  2. IPsecを構成するプロトコル:ESP・AH・IKE
  3. AHとESPの違い
  4. トンネルモードとトランスポートモード
  5. SA:通信の前に決めておく取り決め
  6. IKEで鍵を取り決める流れ
  7. NATトラバーサル:NAPTを越える仕組み
  8. IPsec-VPNとSSL-VPNの違い
  9. 練習問題

IPsecとは、IPパケットそのものを暗号化・認証する仕組み

IPsecは、IPパケットを暗号化し、改ざんされていないかを確かめる規格群です。インターネットVPNで拠点同士をつなぐときに、広く使われています。

IPsecは、ネットワーク層でIPパケットを守ります。そのため、上で動くWebやメールなどのアプリは、IPsecを意識せずに守られます。全体の設計はRFC 4301に書かれています。

以下では、ESPとAHの違い、鍵を取り決めるIKEの流れ、NAPTを越える仕組みを説明します。

IPsecを構成するプロトコル:ESP・AH・IKE

IPsecは、1つのプロトコルではありません。データを守るプロトコルと、その準備をするプロトコルの組み合わせです。データを守るのは、ESPとAHの2つです。準備をするのが、IKEです。

プロトコル役割使う番号
ESP暗号化と改ざん検知IPのプロトコル番号50
AH改ざん検知だけIPのプロトコル番号51
IKE相手の認証と鍵の取り決めUDP 500番(NATを越えるときは4500番)

ESPはEncapsulating Security Payload、AHはAuthentication Headerの略です。IKEはInternet Key Exchangeの略で、名前のとおり鍵を交換します。データを送る前に、IKEが相手を確かめ、鍵を決めておきます。

ESPとAHにはポート番号がない

表の番号のうち、ESPとAHの番号はポート番号ではありません。IPヘッダには、次に続くものが何かを示す欄があります。この欄の値をプロトコル番号と呼びます。

IPヘッダのプロトコル番号次に続くものポート番号
6TCPある
17UDPある
50ESPない
51AHない

TCPやUDPは、IPヘッダのすぐ後ろに続き、自分のヘッダにポート番号を持ちます。ESPとAHも、IPヘッダのすぐ後ろに続きます。ただし、TCPやUDPを使わないので、ポート番号の欄がありません。ポート番号そのものの意味は、ポート番号の記事で説明しています。

一方、IKEはUDPの上で動くので、ポート番号を持ちます。この違いが、後で見るNAPTとの相性に関わってきます。

AHとESPの違い:暗号化するかどうか

AHとESPは、どちらも受け取った側で、パケットが書き換えられていないかを確かめられます。送る側は、鍵を使ってパケットから検査用の値を計算します。その値をパケットに付けて送ります。受け取った側が同じ計算をして値が合わなければ、途中で書き換えられたと分かります。

違いは、暗号化の有無です。ESPは暗号化と改ざん検知の両方を行えますが、AHは改ざん検知だけを行います。AHで守ったパケットは、経路上から中身を読めます。

もう1つの違いは、守る範囲です。AHは、IPヘッダのうち途中で変わらない欄まで改ざん検知の対象にします。ESPは、自分より前にあるIPヘッダを対象にしません。

実際に使われるのは、ほとんどがESPです。RFC 4301は、IPsecの実装にESPを必須とし、AHは任意としています。ESPだけで、必要な守りをほぼ満たせるためです。

トンネルモードとトランスポートモード

ESPとAHには、パケットの包み方が2通りあります。元のIPパケットをヘッダごと保護して、新しいIPヘッダを付ける包み方をトンネルモードと呼びます。元のIPヘッダを残し、その後ろだけを保護する包み方は、トランスポートモードです。

トンネルモードの新しいIPヘッダには、VPNゲートウェイ同士のアドレスが入ります。VPNの記事の図に出てくる外側ヘッダが、これにあたります。拠点間VPNのように、ゲートウェイが通信の端になるときは、原則としてトンネルモードを使います。

トランスポートモードは、通信する2台のホストが、直接お互いを守るときに使います。IPヘッダを1枚足さない分、パケットは小さくなります。ただし元のIPヘッダが残るので、通信している2台のアドレスは経路上から見えます。

切り替えて確かめる:どこが暗号化され、どこが守られるか

ESPとAH、2つのモードの組み合わせは4通りです。赤い部分が暗号化される範囲、下の線が改ざん検知の対象になる範囲です。ESPの最後のICVは、受け取った側で照らし合わせる検査用の値です。

  1. 新しいIPヘッダ対象外
  2. ESPヘッダ検知
  3. 元のIPヘッダ暗号化検知
  4. TCP/UDP+データ暗号化検知
  5. ESPトレーラ暗号化検知
  6. ICV対象外
経路上から見える情報
新しいIPヘッダにある、ゲートウェイ同士のアドレスとプロトコル番号50です。ESPヘッダのSPIと通し番号も見えます。
家庭用ルータのNAPTを通れるか
そのままでは通れません。ポート番号が暗号化の中にあるからです。UDP 4500番で包むと通れます。
拠点間VPNで使う形です。元のPCとサーバのアドレスも、暗号化の中に隠れます。

ESPのトンネルモードでは、元のIPヘッダまで暗号化の中に入ります。経路上から読めるヘッダは、ゲートウェイ同士のアドレスが入った新しいIPヘッダと、ESPヘッダだけです。AHを選ぶと、どちらのモードでも中身はそのまま読めます。

新しいIPヘッダで元のパケットを包む並びは、暗号化をしないGREも同じです。GREとESPのトンネルモードの違いは、GREトンネルの記事の図で比べています。

SA:通信の前に決めておく取り決め

ESPで暗号化するには、両端が同じ暗号方式と同じ鍵を知っている必要があります。こうした取り決めのひとまとまりをSAと呼びます。SAは、Security Associationの略です。

SAは片方向です。拠点Aから拠点Bへの通信と、拠点Bから拠点Aへの通信は、別々のSAで守ります。そのため、ふつうの双方向の通信では、SAを1組2つ作ります。

ゲートウェイは、たくさんのSAを同時に持つことがあります。ESPヘッダには、どのSAで処理するかを示す番号が入っています。この番号をSPIと呼びます。受け取った側は、SPIを見て使う鍵を選びます。

IKEで鍵を取り決める流れ

SAの中身は、手で両端に設定することもできます。ただし鍵を定期的に変えるには、自動で決める仕組みが要ります。この自動の取り決めを行うのがIKEで、今の版はIKEv2です。仕様はRFC 7296です。

IKEv2は、ふつう4つのメッセージで準備を終えます。次の図は、VPNの記事と同じ2つの拠点の例です。

拠点Aゲートウェイ198.51.100.20拠点Bゲートウェイ192.0.2.10鍵で暗号化UDP 500① IKE_SA_INIT 要求方式の候補・DH値・乱数② IKE_SA_INIT 応答選んだ方式・DH値・乱数③ IKE_AUTH 要求名乗り・認証・SAの提案④ IKE_AUTH 応答名乗り・認証・SAの確定両端で鍵を計算ESPでデータを送る番号50
①②で暗号方式を決め、鍵の材料を送り合います。③④はその鍵で暗号化して送り、互いを認証してデータ用のSAを決めます。ここまでの4通はUDP 500番を使い、その後のデータはESPで流れます。
  1. 1

    IKE_SA_INIT:方式を決め、鍵の材料を送り合う

    開始する側が、使える暗号方式の候補を送ります。応答する側は、その中から1つ選んで返します。このとき両端は、Diffie-Hellmanという方法で鍵の材料を送り合います。送り合う値を盗み見られても、第三者には同じ鍵を計算できません。

  2. 2

    IKE_AUTH:相手を認証し、データ用のSAを決める

    次のやり取りは、1で計算した鍵で暗号化して送ります。両端は名乗り合い、事前共有鍵や証明書で、本当にその相手かを確かめます。証明書の検証の仕組みは、電子証明書とPKIの記事にあります。同じやり取りの中で、データを運ぶESPのSAも1組決めます。

準備が終わると、データはESPで流れます。この準備のやり取りを守るSAを、IKE SAと呼びます。データ用のSAは、IKEv2ではChild SAと呼びます。

IKEv1のフェーズ1・フェーズ2との対応

参考書や設定の画面では、IKEのフェーズ1・フェーズ2という言葉もよく出ます。これは、古い版のIKEv1で使われていた呼び方です。

IKEv1(RFC 2409)IKEv2(RFC 7296)
鍵交換のための通り道を作るフェーズ1(メインモードかアグレッシブモード)IKE_SA_INIT と IKE_AUTH
データ用のSAを作るフェーズ2(クイックモード)IKE_AUTH の中で最初の1組を作る
今の位置づけ古い版。RFC 4306で廃止現在の標準

IKEv1では、フェーズ1で作るSAをISAKMP SAと呼んでいました。IKEv2のIKE SAにあたります。フェーズ2で作るIPsec SAは、IKEv2のChild SAにあたります。

NATトラバーサル:NAPTを越える仕組み

自宅のPCから、会社のVPNゲートウェイにIPsecでつなぐ場面を考えます。PCは 192.168.10.25 で、自宅ルータのグローバル側は 198.51.100.5 です。自宅ルータは、NAPTで送信元のアドレスとポート番号を書き換えます。

NAPTは、ポート番号で、どの内部機器の通信かを見分けます。ところがESPのパケットでは、TCPやUDPのヘッダが暗号化の中に入っています。外から見えるポート番号がないので、NAPTは戻りのパケットを振り分けられません。家庭用ルータには、IPsecパススルーという機能でESPを通せる製品もあります。ただし規格ではなく製品ごとの機能で、通せる台数にも制限があることが多いです。

AHは、さらに通しにくくなります。AHは外側のIPアドレスまで改ざん検知の対象にします。NAPTがアドレスを書き換えると、受け取った側では改ざんとして扱われます。

ESPをUDPで包んで通す

そこで、ESPのパケットの前にUDPヘッダを1枚足して送ります。この方法をNATトラバーサルと呼びます。ESPをUDPで包む形式はRFC 3948で決まっていて、ポート番号は4500番です。

ふつうのESPNAPTを通れないIPヘッダプロトコル50なしESPヘッダ暗号化された部分ポート番号も中UDPで包むNAPTを通れるIPヘッダプロトコル17UDPヘッダ4500番ESPヘッダ暗号化された部分中身は同じここに足すNAPTが書き換える
ふつうのESPには、NAPTが見分けに使うポート番号がありません。UDPヘッダを1枚足すと、NAPTはそのアドレスとポート番号を書き換えて通せます。ESPの中身は変わりません。

NAPTは、足されたUDPヘッダのポート番号を書き換えて通します。受け取ったゲートウェイは、UDPヘッダを外して、ふつうのESPとして処理します。AHはこの方法の対象外です。RFC 3948は、AHの守り方がNATと両立しないことを理由に挙げています。

NATがあるかはIKEが調べる

IKEv2では、最初のIKE_SA_INITで、両端が自分の見ているアドレスとポート番号から計算した値を送り合います。届いた値が手元の計算と合わなければ、途中でNATが書き換えたと分かります。NATを見つけたら、その後のIKEとESPは、どちらもUDPの4500番で送ります。

NAPTの変換表の記録は、通信が途絶えると一定時間で消えます。そのためNATの内側の端末は、データがない間も1バイトだけの小さなUDPパケットを送ります。こうして記録を残しておく仕組みを、NATキープアライブと呼びます。

会社側のファイアウォールでは、IPsecを通すためにUDPの500番と4500番を開けます。NATトラバーサルを使わない相手がいるなら、プロトコル番号50のESPも通します。ルールの考え方は、ファイアウォールの記事を読むと分かります。

IPsec-VPNとSSL-VPNの違い

IPsecを使って作るVPNを、IPsec-VPNと呼びます。よく比べられるSSL-VPNは、HTTPSの記事で説明したTLSで暗号化します。

IPsec-VPNSSL-VPN
守る単位IPパケットTLSの接続
使う番号の例ESP(50)、UDP 500・4500TCP 443
アプリへの影響アプリは意識しないブラウザだけで使える製品もある
多い使い方拠点間VPNリモートアクセスVPN

IPsec-VPNは、IPパケットそのものを守るので、どのアプリの通信もまとめてトンネルに通せます。拠点のLAN同士を常時つなぐ用途に向いています。その代わり、途中のファイアウォールでUDP 500・4500番などを通す必要があります。AWSのSite-to-Site VPNもIPsecを使います。暗号化しない専用の回線の上に重ねる使い方は、AWS Direct Connectの記事で説明しています。

SSL-VPNの多くは、HTTPSと同じTCPの443番を使います。443番はたいていのネットワークで外向きに開いているので、外出先からでもつながりやすくなります。このため、リモートアクセスVPNで多く使われます。どちらも典型的な使い方で、決まった規則ではありません。

練習問題(全6問)

Q1IPsecのAHとESPの違いとして正しいものは?
Q2IPsecのトンネルモードの説明として正しいものは?
Q3IPsecで使う番号の組み合わせとして正しいものは?
Q4家庭用ルータのNAPTを越えてIPsecを使うとき、ESPをUDPで包む理由として正しいものは?
Q5IKEの役割として正しいものは?
Q6IPsec-VPNとSSL-VPNの違いとして正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す