TCP/IPは、安価なインフラを使って柔軟かつ堅固な通信環境を実現するための通信プロトコルであり、商用利用を前提に開発されたものではない。そのため、通信データの暗号化や改ざん検知などの機能を備えていなかった。インターネットの普及とともに、これらのセキュリティ機能を求める声が高まり、主としてHTTPによる通信を保護するプロトコルのSSL(Secure Sockets Layer)や、電子メールを保護するためのS/MIME(Secure MIME)規格などが作られた。しかし、より汎用性が高く、標準化されたセキュリティ・プロトコルの誕生が待ち望まれていた。
こうした要望にこたえるのがIPSec(Internet Protocol Security)だ。IPSecはRFC 2401〜2412、RFC 2451などで規定されているIPの拡張プロトコルである。1995年にIETFによって最初の標準化がなされた後、1998年に改訂されて現在に至る。現在広く使われているIP(IPv4)では、オプションとして利用可能な拡張だが、次世代IP(IPv6)では実装することが必須となっている。
IPSecの詳細については、別稿の「IT管理者のためのIPSec講座(PC Insider)」が詳しいので参考にしていただきたい。ここではごく簡単にその概要を説明しよう。IPSecは、次のセキュリティ機能を提供する。
IPSecにはAH(Authentication Header)とESP(Encapsulating Security Payload)という2つのプロトコルがあり、目的に応じていずれかを選んで利用する。AHは、発信元の認証、データの完全性(改ざんされていないこと)認証、リプレイ・アタックの阻止などの機能を提供する。リプレイ・アタックとは、送信されたデータを通信経路上で傍受して、同じものをあて先に送ることで、正規の発信元になりすます攻撃のことだ。ESPは、AHの機能に加えてデータの暗号化機能を提供する。AHは、データ通信の暗号化を禁じている国でIPSecの認証機能を利用する場合などを想定したものである。
IPSecでは、データの完全性を保証するための認証アルゴリズムや、ESPで利用する暗号化アルゴリズムは固定されておらず、任意のアルゴリズムを実装することが許されている。これは、現在は実用的な強度を持つアルゴリズムであっても、コンピュータの演算速度の向上によって、いずれ陳腐化することが明らかなためだ。ただし、認証アルゴリズムとしてHMAC-MD5とHMAC-SHAが、暗号化アルゴリズムとしてDES-CBCが最低限実装されていなければならない。Windows 2000/XPでは、ESPで使用する暗号化アルゴリズムにDES-CBCと、それよりも強固な3DES-CBCをサポートしている。ただし、Windows 2000で3DES-CBCを利用するためには、サービスパック2以降か、「高度暗号化パック」をインストールする必要がある(詳細は「PC TIPS―Windows 2000のIPSecで3DESによる暗号化を有効にする方法」を参照していただきたい)。
IPSecによる認証や暗号化を行うためには、最初に通信する双方で暗号鍵の交換を行わなければならない。通信を行う前に、安全な経路(フロッピー・ディスクなど)で暗号鍵の交換を行うことも可能だが、これでは鍵の管理にかかるコストが大きくあまり実用的な方法とはいえない。そのため、IPSecによる通信に先立ち、安全に鍵交換を行うためにIKE(Internet Key Exchange)というプロトコルが規定されており、通常はこの仕組みを利用する。なお、IKEでは、UDPのポート500番を利用する。
IPSecには、元のIPデータグラムのデータ部だけを認証/暗号化する「トランスポート・モード」と、元のIPデータグラム全体を認証/暗号化する「トンネル・モード」という2つのモードがある。
これら2つのモードとAH、ESPという2つのプロトコルにより、IPSecでの通信では次の4種類のパケットが存在することになる。それぞれの内容を見てみよう。
IPSecは、IPにセキュリティ機能を持たせたものであり、VPNの構築だけを目的に作られたプロトコルではない。すなわち、より広範で汎用的な使い方が可能なプロトコルだといえる。もちろん、VPNでの利用にも非常に有用なものだ。しかし、IPSecは通信装置同士の認証機能は持っているが、ユーザーごとのアカウント情報を認証する機能は持たない。また、IPXのような、IP以外のプロトコルはそのままでは運ぶことができない。そのため、IPSecとL2TPを組み合わせてVPNを構築するのが一般的になっている。Windows 2000/XPもL2TP+IPSecによるVPN機能を標準で備えており、これを利用することで、データの改ざんなどに対する防御ができないPPTPよりも安全なVPN環境を構築できる。なお、L2TP+IPSecについては、2001年にRFC 3193で標準化されている。
次回は、今回解説したプロトコルを使って、VPNで接続されたActive Directoryネットワーク環境を構築することにする。
「検証」
Copyright© Digital Advantage Corp. All Rights Reserved.