図●IPsecの通信例
図●IPsecの通信例
[画像のクリックで拡大表示]

 IPsec(security architecture for Internet Protocol)はインターネットの基盤プロトコルであるIPに、セキュリティ技術を加えたもの。IPパケットを安全にやり取りするために考案された。認証、鍵交換、暗号化などの複数のセキュリティ技術が組み合わされている。

 ここではIPsecの仕組みを、よく使われる「インターネットVPN」を例に説明しよう。インターネットVPNは、インターネット上で仮想的に専用線を構築する技術だ。IPsecを使ってインターネット上の2地点間に仮想的なトンネルを作り、その中にIPパケットを流す。インターネット上に構築したトンネルを自分だけの専用線のように使うことができる。

 IPsecでデータをやり取りするには、三つの手順が必要だ。具体的には、(1)制御用のトンネルを作る、(2)実際の通信に使うトンネルを作る、(3)出来上がったトンネルで通信する――という手順になる。

 安全にデータを交換するため、(1)の手順となる制御用トンネルの構築はセキュアに行わなければならない。そこでトンネルを構築するゲートウエイ同士が、Diffie-Hellman(ディフィーヘルマン)鍵交換方式を使って鍵のもととなる情報を交換し、秘密鍵を生成する。生成した秘密鍵と、ゲートウエイ間で交換した変数を組み合わせて、今度は暗号鍵を生成する。この暗号鍵を使ってIDと認証用のハッシュを暗号化し、ゲートウエイ同士で交換するのだ。また、以降の通信で使う暗号化/認証アルゴリズムも決めておく。こうして無事認証が済むと、制御用トンネルが確立される。

 ここからが(2)の手順となる。ゲートウエイ同士は、確立した制御用トンネルを使って情報を交換し、新たに暗号鍵の生成などを実行しながら、上り/下りそれぞれの通信用のトンネルを作る。

 IPパケットを送受信する際は、ゲートウエイが暗号化してからトンネルに送り出す。トンネルはあくまで仮想的なものなので、現実にはトンネルの外のパケットと一緒にインターネットを流れる。すると、パケットの中身が誰かに盗聴されるかもしれない。そこで暗号化することで、トンネルを流れるパケットの内容を第三者に見えなくするのである。IPsecではDES、3DES、AESなどの暗号化アルゴリズムを利用する。

 最後に(3)の実際の通信手順となる。ゲートウエイは、送信するIPパケット全体(IPヘッダーとデータ部分)を暗号化する(図)。ところが、まるごと暗号化したパケットをそのまま送り出すと、経路上のルーターは宛先IPアドレスを判断できない。そのため、ゲートウエイは新しいIPヘッダーを付与してからパケットを送信する。受信側のゲートウエイは、受け取ったパケットを復号する。そのほか、パケットの区別や整合性のチェック、トンネルの管理なども行っている。