IPsecとは何か
IPsec(アイピーセック)は、インターネットのような公開ネットワーク上でも安全に通信できるようにするための仕組みです。ネットワーク層で動作し、データを暗号化したり、改ざんされていないかを確認したりする役割を持ちます。これにより、外部から盗聴されたり、データを書き換えられたりするリスクを大きく減らすことができます。IPsecを利用したVPN(仮想プライベートネットワーク)は、企業ネットワークの拠点間通信やリモートアクセスに広く利用されています。
IPsecは単独のプロトコルではなく、AH(認証ヘッダ)、ESP(暗号化ペイロード)、IKE(鍵交換)といった複数のプロトコルを組み合わせて動作します。試験でも頻出する部分なので、ここは確実に押さえておきましょう。
IPsecが動作するレイヤー
IPsecはネットワーク層(IP層)で動作します。そのため、上位層で使う通信方式がTCPであってもUDPであっても問題なく利用できます。つまり、アプリケーションごとに特別な設定をしなくても、IP通信であればすべて保護できる仕組みです。
一方で、SSL(現在ではTLSと呼ばれることが多い)はセッション層で動作します。そのため、特定のアプリケーション(例:HTTPS)に限定されるのに対し、IPsecはもっと下のレイヤーで動くため幅広い通信を守れるのが特徴です。
IPsecを構成するプロトコル
IPsecは複数の要素から成り立っています。それぞれの役割を整理すると理解しやすくなります。
| プロトコル | 主な役割 | 使用番号 |
|---|---|---|
| AH(Authentication Header) | パケットの改ざん防止(認証機能のみ)。暗号化は行わない。 | IPプロトコル番号 51 |
| ESP(Encapsulating Security Payload) | パケットの暗号化と改ざん防止(HMAC + 暗号化)。データ部分を守る。 | IPプロトコル番号 50 |
| IKE(Internet Key Exchange) | 通信相手と安全に鍵を交換するための仕組み。ISAKMPとOakleyをベースに動作し、Diffie-Hellman鍵交換を利用する。 | UDPポート番号 500 |
AHとESPの仕組み
AHとESPには、それぞれ専用のフィールドが用意されており、セキュリティを担保するために利用されます。
AHのフィールド
- Next Header:後続のプロトコル(TCP/UDPなど)を示す
- Payload Length:AHヘッダの長さ
- SPI(Security Parameters Index):どのセキュリティ設定を使うかを識別
- Sequence Number:リプレイ攻撃を防ぐための番号
- Authentication Data:改ざん検出のための値(HMACによるICV)
ESPのフィールド
- SPI:利用するセキュリティパラメータを識別
- Sequence Number:リプレイ攻撃対策
- Payload Data:暗号化されたデータ本体
- Padding / Pad Length:暗号アルゴリズムに合わせるための調整データ
- Next Header:次のプロトコルを示す
- Authentication Data:データ改ざんを防ぐHMACの値
IPsecを理解する全体像
IPsecは単なる枠組み(アーキテクチャ)であり、実際の通信では次のような選択を行う必要があります。
- AHかESPか、その両方を使うか
- どの暗号化方式を使うか(AES、3DESなど)
- 認証方式に何を使うか(HMAC-SHAなど)
- 鍵交換をどう行うか(IKEの利用)
このように複数の組み合わせでセキュアな通信を構築できるのがIPsecの特徴です。
IPsecの通信モード
IPsecには2つの通信モードがあり、それぞれどのような場面で使うかによって使い分けられます。モードを理解することで、VPNがどのようにデータを保護しているのかがイメージしやすくなります。
トランスポートモード
トランスポートモードでは、送信元パケットの元のIPヘッダはそのまま利用します。暗号化されるのは、IPヘッダ以降の上位層(トランスポート層以上)のデータ部分だけです。
- 元のIPヘッダは暗号化しない
- TCPやUDPなどのデータ部のみを暗号化する
- AHやESPを利用することで認証範囲が変わる
- 転送時は元のIPヘッダを使って宛先に届ける
この仕組みは、IPsecを直接実装したホスト同士の通信でよく利用されます。たとえばサーバとクライアントが直接IPsecを使って安全にやり取りするような場面です。
トンネルモード
トンネルモードでは、送信元パケットの元のIPヘッダごと暗号化します。その上に、新しいIPヘッダを付け加えてパケットを送信します。
- 元のIPヘッダも暗号化される
- 上位層のデータも含め、パケット全体が保護される
- 新しいIPヘッダを追加して転送される
- AHやESPで認証範囲が変わる
このモードは、拠点間を結ぶVPNルータ同士の通信で利用されるのが一般的です。ユーザのPCはIPsecを意識せず、通常のLAN通信を行うだけで、ルータ間で安全なトンネルを通してデータが送られる仕組みになります。
トランスポートモードとトンネルモードにおけるAHパケット
AH(Authentication Header)はパケットの改ざんを防ぐ認証用のヘッダです。トランスポートモードでは元のIPヘッダを残したまま認証が行われ、トンネルモードでは新しいIPヘッダが加わり、その下にあるパケット全体が認証対象となります。IPv4環境ではAHはあまり使われない点も覚えておくとよいでしょう。
トランスポートモードとトンネルモードにおけるESPパケット
ESP(Encapsulating Security Payload)は暗号化と認証の両方を担うため、IPsecで最もよく利用される形式です。トランスポートモードではデータ部分を暗号化し、トンネルモードでは元のIPヘッダを含むパケット全体を暗号化できます。現在のVPNの実装では、このESPを利用した構成が主流となっています。
AHとESPを組み合わせたパケット形式
AHとESPを同時に利用する方法もあります。この場合、ESPが暗号化を担当し、AHがパケット全体の認証を行います。ESPの認証機能は不要となり、セキュリティ機能を分担させる形になります。ただし、ヘッダが増えるためパケットが大きくなる点には注意が必要です。
SA(Security Association)
IPsecでは、パケットを暗号化したり認証したりするためにSA(セキュリティアソシエーション)という仕組みを使います。これはVPNゲートウェイ同士が「どんな方法で通信するか」を取り決めるためのコネクションのようなものです。IPsecの通信は必ずこのSAを利用して行われます。
SAは一方向の通信に対して設定されるため、データの送信と受信にはそれぞれ別のSAが必要になります。つまり、双方向で通信を行うためには最低でも2つのSAが確立されることになります。さらに、もしAHとESPの両方を使って通信する場合には、送受信それぞれに対してSAが必要になるため、合計で4つのSAが必要になります。
SAの識別と管理
実際にIPsec通信が行われると、複数のSAが同時に存在することになります。その中で「どのSAを使って処理すべきか」を識別するために、SPI(Security Parameters Index)というフィールドが利用されます。AHやESPのパケットヘッダに含まれるSPIの値によって、そのパケットがどのSAに基づく通信なのかを判別できる仕組みになっています。
各VPNゲートウェイは有効なSAの情報をSAデータベース(SAD: Security Association Database)に保存しており、SPIをキーとして適切な処理を行います。
SAを構成する要素
SAは単なる「接続の概念」ではなく、実際にはIPsec通信を行うためのパラメータの集合体です。その内容には次のようなものが含まれます。
- SPI(セキュリティパラメータインデックス)
- 利用するプロトコル(AH または ESP)
- 通信モード(トンネルモード または トランスポートモード)
- 暗号化方式(DES、3DES、AESなど)
- 暗号鍵
- 認証方式(HMAC-MD5、HMAC-SHA1など)
- 認証鍵
- シーケンス番号カウンタ(リプレイ攻撃防止用)
- DSCP値(サービス品質に関連)
- Path MTU(最大転送単位の管理)
- トンネルエンドポイントのIPアドレス
- SAのライフタイム(有効期間)
SPD(Security Policy Database)
SAと関連して、もう一つ重要なのがSPD(セキュリティポリシーデータベース)です。SPDは「どの通信をIPsecで処理するか」「どの通信はIPsecを通さないか」といったルールを定めたものです。Ciscoルータの設定では、このSPDはアクセスリスト(ACL)として表現され、対象となる通信を指定します。