これまでは、検疫ネットワークと侵入防止システム(IPS)といった、ワームなどの攻撃からシステムを防御するための技術を説明してきた。今回からは、データを盗聴や改ざんから保護するためのVPNで利用される、IPSecやPPTP、L2TP、SSL-VPNなどのプロトコルの仕組みについて、2回に分けて解説していく。
公衆網サービスを使いつつセキュリティを確保する方法として、公衆網上に仮想的に専用網を作るVPN(仮想プライベート・ネットワーク)がある。以下では、VPNを実現するプロトコルとして、IPSec(IP Security protocol)、PPTP(Point-to-Point Tunneling Protocol)、(Layer 2 Tunneling Protocol)の3種類を取り上げ、それぞれの概要とパケット構造、目的を解説する。
VPNの標準プロトコル「IPSec」
IPSecは、VPNを構築するための標準プロトコルである。認証ヘッダの「AH」(Authentication Header)、カプセル化の「ESP」(Encapsulating Security Payload)、データ圧縮の「IPComp」(IP Compression Protocol)、鍵交換の「IKE」(Internet Key Exchange)などのプロトコルから構成される。
AHは、認証コードの付与によってIPパケットの改ざんを防止するプロトコルであり、IPプロトコル番号51を使用する。ESPは、カプセル化により、IPパケットの改ざんを防止し機密性を確保するプロトコルであり、IPプロトコル番号50を使用する。IPCompは、圧縮効率を上げるためにデータの暗号化前にIPパケットを圧縮するプロトコルであり、IPプロトコル番号108を使用する。IKEは、これらのプロトコルで使用するアルゴリズムのネゴシエーションや鍵のセットアップを行うためのプロトコルであり、UDPの500番ポートを使用する。
AHやESPには、その配送方法によって、トンネルモードとトランスポートモードの2種類のモードがあるが、通常、IPSecによるVPNゲートウェイ機器などを用いるVPNでは、ESPのトンネルモードが使用される。ESPのトンネルモードでは、図1のように、オリジナルのIPパケット全体にESPトレーラを加えたものが、事前にIKEによってネゴシエーションされた共通鍵暗号によって暗号化される。
暗号化されたデータの先頭には、相手のVPN機器まで運ぶためのトンネルIPヘッダとESPヘッダが付加され、最後尾にESPヘッダと暗号化されたデータを範囲とするメッセージ認証コード(Message Authentication Code、MAC)が格納されたESP認証データが付加される。
この認証データを受信側で検証することにより、データの内容が第三者によって改ざんされていないことを確認することが可能となるのである。このメッセージ認証コードのアルゴリズムも、事前にIKEによってネゴシエーションされる。
メッセージ認証コードは、入力データを一方向ハッシュ関数にかけた結果である。ハッシュ関数は出力値(ハッシュ値)から入力値を求めることが困難である一方で、同じ入力値からは必ず同じ出力値が得られるという特徴を持つ。ハッシュ関数にはMD5などがある。
Microsoftが中心となって開発した「PPTP」
PPTPは、米Microsoftが中心となって開発したプロトコルであり、主にリモートアクセスによるVPN環境で利用される。PPTPでは、PPTPトンネルを制御するための「PPTP制御コネクションプロトコル」(1723/TCP)と、PPPフレームをIPネットワーク上で送信するための「PPTPトンネルプロトコル」(IPプロトコル番号47)の2種類のプロトコルを使用する。
PPTPを使用する場合には、最初にPPTP制御コネクションプロトコルを使用して、PPTPトンネルが確立される。そして、PPTPトンネル内でIPパケットを送信する場合には、図2のように、MPPEヘッダの後半2バイト分を構成するプロトコルフィールドが付加されたIPパケット全体がRC4で暗号化される。
加えて、暗号化されたデータにMPPEヘッダの前半2バイト分とPPPヘッダが付加され、PPPフレームが作成される。さらに、GREv1ヘッダと、相手のVPN機器まで運ぶためのトンネルIPヘッダが付加され、アクセス先拠点まで暗号化された状態で届けられるという仕組みである。
PPTPとL2Fを統合して標準化した「L2TP」
L2TPは、米Microsoftが中心となって開発したPPTPと、米Cisco Systemsが開発したL2F(Layer 2 Forwarding)を統合して標準化したプロトコルであり、主にリモートアクセスによるVPN環境で利用される。
前述したPPTPでは、制御用のプロトコルとデータ用のプロトコルには、それぞれ異なるプロトコルを使用する。一方、L2TPでは、「L2TP制御メッセージ」と「L2TPデータメッセージ」の両方に、UDPの1701番ポートを使用する。しかし、L2TPにはセキュリティを確保する機能が存在しないため、IPSecと組み合わせることになる。
L2TPを使用する場合には、最初にL2TP制御メッセージを使用してL2TPトンネルが確立される。この上で、L2TPトンネル内でIPパケットを送信する場合には、図3のように、送信するIPパケットの直前にPPPヘッダが付加され、PPPフレームが作成される。
これに加え、相手のVPN機器まで運ぶためのトンネルIPヘッダと、UDPヘッダ、L2TPヘッダが付加され、PPPフレームをカプセル化したL2TPパケットが作成される。さらに、この作成されたL2TPパケットに対し、トランスポートモードのESPが適用され、アクセス先拠点まで暗号化された状態で届けられるという流れである。
次回は、比較的最近登場し、話題となっているVPN技術である、SSL-VPNとSoftEtherの仕組みについて解説する。