概要
IPsec(Security Architecture for Internet Protocol)とは、暗号化によってパケットの秘匿や改ざん検知を行うネットワーク層(第3層)のプロトコルで、インターネットVPN(Virtual Private Network)として広く利用されています。
IPsecは、IPv4、IPv6のどちらでも利用することができ、IPv6では実装が必須となっています。
主な機能
IPsecにより提供される主な機能は以下になります。
- IPアドレス/ポート番号によるアクセス制御
- MAC(メッセージ認証コード)による改ざん検知
- MACによるデータ送信元の認証
- 通信データの暗号化
※トランスポートモードはIPヘッダは暗号化しない
接続形態
IPsecには以下のような接続形態があります。
- 各拠点に設置されたVPN装置を介して接続する拠点間接続
- モバイル端末などからIPSを介して接続する端末対拠点間接続
暗号化モード
2つの暗号化モードは以下になります。
- トランスポートモード
- トンネルモード
トランスポートモード
トランスポートモードは、IPパケットのペイロードのみを暗号化し、IPヘッダは暗号化しません。このモードは、IPsecに対応した端末同士が直接エンドツーエンドの通信を行うことを前提としています。
トンネルモード
トンネルモードは、IPヘッダを含めたIPパケット全体を暗号化(カプセル化)します。このモードは、各端末の間にVPN装置が入り、その間で暗号化通信を行うことを想定しています。この場合、VPN装置で新しいIPヘッダ(IPアドレス)がパケットに付加されます。
認証プロトコル
2つの認証プロトコルは以下になります。
- AH(Authentication Header:認証ヘッダ)
- ESP(Encapsulated Security Payload:暗号化ペイロード)
AH
AHは通信データの認証のために使用されるプロトコルで、暗号化の機能はありません。AHでは、IPヘッダの後にAHヘッダが挿入されます。
MAC(メッセージ認証コード)を用いてIPヘッダを含めたパケット全体のICV(Integrity Check Value)を生成し、AHヘッダにセットします。ICVは、データの完全性をチェックするためのハッシュ値です。MACの種類は選択が可能です。
AHではパケット全体のICVを使用するため、完全性チェックの精度は高くなりますが、NAT(Network Address Translation)が使われている場合は、正常性が正しく行えないという問題があります。
ESP
ESPは通信データの認証と暗号化の両方の機能があります。ESPでは、IPヘッダの後にESPヘッダ、データ部の後にESPトレーラとESP認証データが挿入されます。
AHと同じくMACを使ってICVを生成しますが、IPアドレスを含めないため、NATを行ってもICVは影響を受けません。ICVはESP認証データに格納されます。
通信プロトコル
通信を開始する場合は、送信元と送信側が安全な接続を確立するための要件を決定し、鍵交換を行います。
SA
SA(Security Association)はIPsecにおける論理的コネクション(通信路)で、以下の順に作成されます。
- ISAKMP SA(制御用):IPsecゲートウェイ間で1つ作成(上り下り兼用)
- IPsec SA(データ通信用):通信の方向やプロトコル毎にホスト間で作成
IPsec SA を識別するための情報として、宛先IPアドレス、プロトコル種別(AH、ESP)、SPI(Security Parameter Index)が使用されます。SPIは、SAの識別のための32ビットの値です。
IKE
IKE(Internet Key Exchange)は、SAの作成や暗号化鍵の交換に使用されます。IKEは、SAと鍵管理の仕様を規定したISAKMP(Internet Security Association & Key Management Protocol)を実装したプロトコルです。IKEのパケット構成は以下になります。
IP ヘッダ |
UDP ヘッダ |
ISAKMP ヘッダ |
ISAKMP ペイロード |
ISAKMP ペイロード |
・・・ |
ISAKMPヘッダには、イニシエータクッキー、レスポンダクッキー、交換タイプ(メインモード/アグレッシブモード/クイックモード)などの情報が含まれます。ISAKMPペイロードにはいくつかの種類があり、通信毎に必要なものが随時セットされます。
ISAKMP SAの作成にはメインモードかアグレッシブモード、IPsec SAの作成にはクイックモードが使用されます。
メインモード
送信側(イニシエータ)と受信側(レスポンダ)が、次の3往復のパケット交換によりISAKMP SAを作成します。
- ネゴシエーション
イニエータがISAKMPパラメタ(暗号化アルゴリズム・ハッシュアルゴリズム・認証方式など)を提案し、レスポンダがその中から対応可能なものを選択。 - 秘密対象鍵の生成・交換
イニエータとレスポンダがDiffie-Hellman鍵交換アルゴリズムにより、秘密鍵(DH秘密鍵)を共有。 - 相手の認証
IDと認証用ハッシュ値により相手を認証し、ISAKMP SAが確立。
アグレッシブモード
送信側と受信側が、次の1往復半のパケット交換によりISAKMP SAを作成します。
- イニシエータ→レスポンダ
ISAKMPパラメタ、DH公開値、ID、認証用乱数を送信。メインモードと異なり、最初のパケットでIDを送るため、暗号化されていません。 - レスポンダ→イニシエータ
受諾するISAKMPパラメタ、DH公開値、ID、認証用乱数、認証用ハッシュ値を送信。これによりイニシエータとレスポンダは、DH秘密鍵を共有することができます。 - イニシエータ→レスポンダ
認証用ハッシュ値を送信。これによりレスポンダがイニシエータを認証し、ISAKMP SAが確立されます。
クイックモード
イニシエータとレスポンダが、次の1往復半のパケット交換によりIPsec SAを作成します。この通信はISAKMP SAを使って行われるため、パケットのデータ部分が暗号化されます。
- イニシエータ→レスポンダ
IPsec SAパラメタ、認証用乱数、認証用ハッシュ値を送信。 - レスポンダ→イニシエータ
受諾するIPsec SAパラメタ、認証用乱数、認証用ハッシュ値を送信します。イニシエータとレスポンダはIPsec SAで使用する秘密対象鍵を生成。 - イニシエータ→レスポンダ
認証用のハッシュ値を送信。