最終更新日: 2012年6月30日

IPSec

IPSecはIPネットワーク環境における暗号化通信の実装です。 通常、IPパケットそのものにはデータの暗号化が行われていないため※1 ネットワーク上の途中経路で盗聴やデータ改ざんの危険性が存在します。現在のようにインターネットを使ったショッピングや組織における拠点間接続を行うには、何らかのデータ暗号化を実施した上でデータのやり取りがセキュリティ上は重要になってきます。
こ のような暗号化の方法としては、Webブラウザなどで良く利用されるSSL、メールなどで利用されるS/MIMEやPGP、そして主にルータなどのゲート ウェイ製品で採用されているIPSecなどといったそれぞれの環境に適合した方法で暗号化を実施して、安全にデータのやり取りすることが一般的です。

本ページでは、IPSecを利用した暗号化についてその概要とともに、ルータを使ったIPSecの設定について説明を行っていきます。
なお、ルータでのIPSecの設定例では同一メーカ同士の設定例は多くのサイトに存在することから、ここでは可能な限り複数ベンダ製品を組み合わせた設定例を載せて いきます。また、IPSecにはルータ間でのIPSecを念頭に、IPSecのトンネルモードについて説明を行います。

設定例


IPSecに関する基本知識

IPSecが難しく感じられる理由は、IPSecを構成するために色々な用語やその役割を理解しなくてはならないことが原因かも知れません。 以下ではIPSecを設定する上で覚えておいた方が良いと思われる用語の意味について簡単に説明します。

SA(Security Association)

SAは、IPSecを難しく感じさせる言葉の一つかも知れません。 SAについて詳しい説明は本ページの目的ではないのでするつもりはありません。
単に概念としてSAを理解していれば十分だと思いますので、以下ではSAを次のように説明します。

SAとはルータ間の暗号化された経路(トンネル)のことを意味します。 
IPSecのSAには通信の方向があり、例えば東京と大阪間でIPSecで暗号化されたルータを設置すると、電車の線路のように上りと下りの経路が作成されます。(ログなどを確認する場合に、SAの向きに注意する必要があるという事ですね)
SAはIPSecを実施する機器間ごとに必要なので、仮に東京を中心として大阪と札幌を東京のルータで接続するなら、東京-大阪(上りと下りで2つのSA)、東京-札幌(上りと下りでつの2SA)の併せて4つのSAが必要になります。
各SA はそれぞれ暗号化のパラメータを別個で管理できるので、例えば大阪と札幌で暗号化の方式を変えた設計をすることも技術的には可能です。(しかし、管理が大変 になるのでそんな事はしない方が良いでしょう。セキュリティ関連の黄金則は、セキュリティに関するデフォルト値は強固にして、ただし設定パラメータは見通しが良い事! につきます)
な お、IPSecにおけるSAは手動で設定すると面倒な上、管理が大変なことから、現在はSAの管理はIKE(Internet Key Exchange)という方法で自動的にSAを生成させる設定を行うことが一般的で、これによってIPSecの方向などを気にすることなくIPSecを利 用できる環境を構築するようになっています。
なお、上記のIPSecのSA以外に、IKEの情報を管理しているSAも別途に存在するので、SAにはIKE-SAとIPSec-SAがあることになります。

IKE(Internet Key Exchange)

上でも説明したようにIPSecを利用することは即ちIPSec用SAを設定することに他なりませんが、IPSec用SAを手動で設定するのはルータの数が増えるほど手間になってきますし、設定ミスの要因にもなってきます。
IKEを利用すると、IPSec-SA用のパラメータをIKEによって動的に与えることで必要に応じて自動的にIPSec-SAを作成するでき、一定期間か経過したIPSec-SAを破棄して新たに秘密鍵とSAを作り直すといった事ができるため安全面でもIKEを利用する事が推奨されます。 
なお、IKEを設定する際に共通鍵(Pre-Shared Key)の設定を行いますが、この共通鍵はIPSec-SA間で利用されている秘密鍵とは関係無く、ルータ間同士の認証をする為だけに利用されるものです。 なお、IKEのを利用すると、IPSecの最初のやりとりで、IKE用のトンネル(IKE-SA)が作成されて、これを使ってその後に、IPSec-SAが作成されます。

フェーズ(Phase)1、フェーズ(Phase)2

IPSecでは通信機器間でSAを確立するまでの手順として、Phase1、Phase2という2つの状態が存在します。
Phase1では、IKE上のやり取りを行いお互いのIKE-SAを構築して、IPSec-SAを作成する手前までの手続きを実施して、以後のIPSec-SA確立をする準備を行います。
Phase2では、IPSec-SAを確立を実施して、実際の暗号化トンネルを構築します。 各SAには生存可能時間があり、一定時間が経過すると使用 中のSAは破棄されて、新たにSAが自動的に構築されてるようになっているので、ログなどで確認するとPhase2は何度も構築されることが確認できるこ とと思います。
通常、フェーズ1の生存期間はフェーズ2より長い時間を設定します。

ESP(Encapsulation Security Payload)

IPSec-SAにて機器間が接続されると、IPパケットのデー タは暗号化されたESPという暗号化パケットでIPSec-SAの中を通ってデータのやり取りが行われます。 ESPによってデータが暗号化されたカプセル化がされることで、データは盗聴やデータ改ざんといったことから保護される事になります。

暗号化アルゴリズム

IPSecではデータを暗号化する際に使う暗号の方法(暗号アルゴリズム)をSA毎に設定できるようになっています。 現状ではIPSecの暗号化アルゴリズムとしては「DES」か「3DES」のどちらかを利用することになります。
通常は、DESに比べ強度の強い「3DES」を選べば良いと思われます。

認証用ハッシュアルゴリズム(ハッシュアルゴリズム)

IPSecでの認証用ハッシュアルゴリズムは幾つかの場面で出てきます。 当然、SA(暗号化通信データ)に対する認証用ハッシュアルゴリズムは必要ですが、これ以外にもIKEの利用においても認証用ハッシュアルゴリズムはSA用と違うパラメータとして指定できます。
このため、暗号化アルゴリズム、IPSec-SAの認証用ハッシュアルゴリズム、IKEの認証用ハッシュアルゴリズムをそれぞれ違う意味のものと理解できていないと混乱の原因となる部分ともいえます。
認証用ハッシュアルゴリズムには「MD5」、「SHA-1」、「SHA-1-HMAC(Hash-based Message Authentication: 鍵付きSHA-1)」などが選択できます。

セレクタ

IPSec はIPSec-SAを使って暗号化通信を行っていることは上の説明の通りですが、SAの部分でも説明したようにIPSec-SAは1つの機器に複数設定される可能性があります。 ということはパケットは、通信相手とつながるためのSAを何らかの方法で選択する必要があることを意味します。(IPパケットにおけるルーティングみたいなものです)
このSAを選択する方法をセレクタと呼び、セレクタとして利用できるものとしては「IPアドレス」、「プロトコル(UDPかTCPかなど)」、「送信元ポートと宛先ポート」、「ユーザ名やホスト名」」などが利用できるようになっています。
SAのポリシを設定した際に、これらセレクタを組み合わせて設定することで、任意の相手先とIPSecによる通信が行えるようになっています。

ライフタイム(lifetime)

IKE-SAおよびIPSec-SAは、それらが確立された瞬間よりlifetimeで定義された期間のあいだルータのメモリ内に存在し、以後はSAを通信のたびに作らずにメモリ上のSA情報を使い暗号化通信を行います。 lifetimeに期間が経過するとメモリからSA情報は破棄されて、必要に応じて再度作成され、再びlifetimeの期間はメモリに存在するようになります。

DPD(Dead Peer Detection)

その名が示すように、接続相手の死活監視を行う機能です。 従来から IKE Heartbeat という名前で各社ルータではIKEの通信断をリアルタイムに検出する機能を有していましたが、 IKE Heartbeat はRFCにドラフト提案まではされたものの結局標準化されない結果となってしまい、各社ルータメーカが独自に機能を実装するようになってしまいまいした。
この結果、異機種間でIPSecを行った場合、相手のルータ再起動などによる死活が監視できず、それまで使っていたトンネル情報(SA)が生存時間で定義された期間はそのまま残ってしまい、これが残っている間は手動でSAを消すなど消さない限りはIPSecが利用できない状態となってしまいます。 (これが、IPSec中にルータの電源を切ると、再接続に時間がかかる原因)
RFCでは IKE Heartbea に代わり、新たに死活監視の仕組みとして DPD (RFC3706) として標準化して、最近(2012年現在)のルータではこの機能が利用できるようになっています。
したがって、相互接続の観点では DPD を利用する方が問題が少ないといえます。

DPDが利用できない場合には、ICMP(PING)による死活監視をするか、 IKE の生存期間を30分 / IKE-SAの生存期間を10分とかにするような「技」で逃げてください。



以上が、取りあえずIPSecを利用する上で覚えておいた方が良い知識となります。 これ以外にもIPSecを利用する上では色々な言葉が出てきますが、ルータを使ったIPSecを実現する上では上記の内容を押さえておけば取りあえずは問題ないと思います。

以下からは、各メーカのIPSec対応ルータを使ったIPSec接続設定についての設定例を示していきます。

<サイトに戻る> <資料室に戻る>


 Mail to

Copyright(c) 2001-2012 ROBATA.ORG. All Right Reserved.


※1 IPv4の場合。 IPv6ではIPプロトコルそのものにIPSecが実装されているので、従来より安全な通信を利用できるようになると考えられます。