- 追加された行はこの色です。
- 削除された行はこの色です。
- IPsec へ行く。
[[ネットワーク用語]] > IPsec
* IPsec [#sef930df]
IPsec = Internet Protocol Security (Security Architecture for Internet Protocol)
[[IPsec - Wikipedia>http://ja.wikipedia.org/wiki/IPsec]]
>IPsec(Security Architecture for Internet Protocol、アイピーセック)は、暗号技術を用いて、IPパケット単位でデータの改竄防止や秘匿機能を提供するプロトコルである。
これによって、暗号化をサポートしていない[[トランスポート層]]やアプリケーションを用いても、通信路の途中で通信内容を覗き見られたり改竄されることを防止できる。
>IPsecは[[AH]] (Authentication Header) による完全性、認証機構、[[ESP]] (Encapsulated Security Payload) によるデータ暗号化等のセキュリティプロトコルの他、[[IKE]] (Internet Key Exchange protocol) などによる鍵交換から構成されている。
>IPv4, IPv6両者で利用できる。
IPv6では専用の拡張ヘッダが定義されているが、IPv4ではIPヘッダオプションを利用する。
>IPsecの動作モードにはパケットデータ部のみを暗号化(ないしは認証)する[[トランスポートモード]]と、ヘッダを含めたパケット全体を丸ごと「データ」として暗号化(ないしは認証)し新たなIPヘッダを付加する[[トンネルモード]]がある。
トンネルモードは主として[[VPN]]で使用される。
** 通信モード [#w46e240b]
[[トランスポートモード/トンネルモード - マルチメディア振興センター>https://www.fmmc.or.jp/fm/nwts/nwmg/keyword02/vpn/mode.htm]]
>''IPsecの通信モード''
IPsecの通信モードには、データ部分のみの認証/暗号化を行い、元のIPヘッダは対象としない「トランスポートモード」とIPヘッダも含めて暗号化・カプセル化する「トンネルモード」の2つがあります。
トランスポートモードはエンド・ツー・エンドで認証や暗号化を行う場合に使用し、一方トンネルモードはネットワーク間の通信に対して認証や暗号化を行う場合に使用します。
CENTER:&ref(mode01.gif);
** トランスポートモード [#e257275c]
CENTER:&ref(mode02.gif);
** トンネルモード [#p4bd984b]
CENTER:&ref(mode03.gif);
----
[[IPsecらくらくマスター:ITpro>http://itpro.nikkeibp.co.jp/article/COLUMN/20071002/283514/]]
** 定番のケースに絞って攻略 [#o11e5d21]
IPsecが使われている典型的なケースを取り上げ,そのケースのやりとりだけに注目する。
&color(red){IPsecが実際に使われているパターンは,ルーター間でトンネルを作るために利用されるケースがほとんどで,使われている技術も定番がある。};
こうした定番のケースだけを集中的に理解することが,IPsecを実践的に理解する上で重要である。
CENTER:&ref(zu2s.jpg);
>●IPsecを理解するためのアプローチ
最初から勉強していくとなかなか理解が進まない。
そこで最初に,通信の全体像をざっくり把握する。
その上でIPsecの最終目的を押さえ,その目的を実現するために何をしているのかを順番に見ていく。
** 全体をつかんでから逆にたどる [#w20eb4d6]
IPsecのやりとりの流れは,
+ 情報を安全にやりとりするための土台作り(フェーズ1),
+ IPsecの暗号通信をするための準備(フェーズ2),
+ 実際のIPsecの暗号通信
──という3段階の流れになっている。
CENTER:http://program.sagasite.info/wiki/index.php?plugin=attach&refer=%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%AC%9B%E5%BA%A7-VPN&openfile=ipsec02.gif
最初に,この流れの全体像をつかむ。
全体像がわかったうえで個々を読み進めていけば,どこの部分の話なのかを見失うことはない。
続いて,通信の流れとは逆に,IPsecの暗号通信,フェーズ2,フェーズ1──の順番に解説をしていく。
まずIPsecの暗号通信のしくみを見ることで,IPsecの最終目的を見失わないようにする。
またそこで同時に「IPsecの暗号通信を実現するために必要なものは何か」を確認する。
すると,その次に見るフェーズ2がその答えになる。
次のフェーズ2でも,フェーズ2の流れを見ながら「フェーズ2の通信をするために必要なものは何か」を確認する。
するとその答えが次のフェーズ1を見ればわかるようになっている。
こうして,最終的にIPsecに関するやりとり全体を網羅する。
** ウォームアップ:全体像 [#dd7f2d18]
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284162/?P=1
やりとりは3段階に分かれる。まずは全体の流れをつかもう。
*** IPsecの処理は大きく三つ [#z69b5197]
IPsecの通信では10個のパケットをやりとりしている。
この10個のパケットは大きく,
フェーズ1((1)~(6)),
フェーズ2((7)~(9)),
IPsecの暗号通信((10)以降)
──の三つの部分に分かれている(図1-1)。
この三つは,最初の準備の部分ほどやりとりや処理が複雑で,IPsecの暗号通信に近づくほどシンプルになる。
IPsecの暗号通信,フェーズ2,フェーズ1の順番に見ていく。
CENTER:&ref(zu11s.jpg);
>図1-1●IPsecの通信の全体像
最初に,鍵交換のためのプロトコルであるIKEが実行される。
IKEのやりとりが終わったあとにIPsecの通信が実行される。
実際にIPパケットを安全にやりとりしているのが,(10)以降の「IPsecの暗号通信」である。
この状態がIPsecの本来の目的とする通信となる。
上り通信用と下り通信用のトンネル(通信用トンネル)を使って,インターネット上で安全にIPパケットをやりとりする。
このIPsecの暗号通信で使うトンネルを作るための準備をするのが,その前の「フェーズ2」である。
フェーズ2では,暗号通信をするために必要な情報を交換する。
ただし,そこでやりとりしている情報が,他人に知られてしまっては,暗号通信の信頼性に問題が生じる。
そこで,このフェーズ2のやりとりに関しても暗号化したトンネル(制御用トンネル)を使って安全に保護する。
そして,この制御用トンネルを作るのが最初の「フェーズ1」である。
フェーズ1では,そもそも通信相手が正しい相手かどうかも検証する。
*** 暗号通信を始めるまでの準備が主 [#v28c78dd]
つまり,本番のIPsecの暗号通信をするための準備がフェーズ2で,フェーズ2を安全にやりとりする準備がフェーズ1である。
結局フェーズ1とフェーズ2は,IPsecによって暗号通信するための準備なのだ。
ここが押さえられれば,IPsecの全体像はつかめたも同然だ。
なお,IPsecで使う通信用トンネルと,フェーズ2で使う制御用トンネルには寿命がある。
それぞれのトンネルの寿命が切れそうになると新しいトンネルを作り直す。
IPsecの暗号通信で使っている通信用トンネルの寿命が切れそうになると,フェーズ2のやりとりをして通信用トンネルを作り直す。
また,フェーズ2で使っている制御用トンネルの寿命が切れそうになると,最初のフェーズ1から再実行する。
IPsecではこのように,使うトンネルを定期的に更新して,やりとりの安全性を高めているのである。
*** お互いが秘密に同じ鍵を共有したい [#qaa59918]
IPsecの暗号通信に先立って処理されるフェーズ1とフェーズ2のやりとりは,IKEと呼ばれている。
[[IKE]]は,internet key exchangeの略。日本語に訳すと「インターネットでの鍵交換」である。
IPsecを理解するうえでのポイントが,この「鍵交換」である。
IPsecで暗号通信をするときは,通信する両者で同じ鍵を使う。
トンネルの両端に同じ鍵を用意して,トンネルの入口でパケットを暗号化し,トンネルの出口で暗号化されたパケットを復号するわけだ。
このIPsecの暗号化した通信を実現するための鍵を共有するのがフェーズ2で,その鍵の共有作業そのものを暗号化するための鍵を交換するのがフェーズ1である(図1-2)。
CENTER:&ref(zu12s.jpg);
>図1-2●「鍵交換」とは?
IPsecでは,暗号化と認証の鍵を使ってやりとりする。
通信する両者でこの鍵を共有するのが鍵交換である。
フェーズ1でフェーズ2で使う鍵を作り,フェーズ2でIPsecの暗号通信で使う鍵を作る。
***「鍵交換」ではなく「鍵共有」 [#p6042674]
「鍵交換」というと,鍵そのものを交換しているようにとらえがちだが,実際はそうではない。
実際は,鍵を作るのに必要な情報の一部をネットワーク上で交換し,それらの情報と自分の持っている情報を組み合わせて鍵を作っている。
仮にやりとりした情報が漏れても,お互い以外には同じ鍵を作れないようにすることで,安全に暗号通信ができるようにしているのである。
ここでは,フェーズ1とフェーズ2のやりとりで,鍵そのものではなく鍵の基となる情報をやりとりしているということだけを理解しておけばいいだろう。
つまり,「鍵交換」ではなく「鍵共有」と捉えた方が,実際のイメージに近い。
** ホップ:IPsecの暗号通信(パケット(10)以降) [#he392156]
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284162/?P=2
*** トンネルの出入口でパケットを処理,暗号化と改ざん確認で安全に通信 [#z1a010b1]
ここから先は,IPsecの暗号通信,フェーズ2,フェーズ1の順に,トンネルはどうやって使うのかと,通信で使う鍵はどうやって作るのかを見ていこう。
*** 決められた形にパケットを格納 [#td8c9e1b]
最初は,IPsecの最終目的である「IPsecの暗号通信」だ。
IPsecによってルーター同士で最終的にどのようなやりとりがなされるのかを見る。
さらに,IPsecの暗号通信をするために必要なものも確認しよう。
IPsecの暗号通信では,上り通信用と下り通信用の二つの通信用トンネルを使って,決められた形で暗号化したIPパケットをやりとりする。
そもそもトンネルというのは,あくまで仮想的なもの。
「外から中を流れる内容がわからない」ようにしたデータを「入口に入れたら出口から出てくる」ようにした通信のことである。
両者のルーターは,この二つの性質を備えたパケットを作る。通信の流れに沿って見てみよう(図2-1)。
CENTER:&ref(zu21_600.jpg);
>図2-1●IPsecの暗号通信
IPパケットを暗号化して,さらに改ざんをチェックできるようにした状態でやりとりする。
やりとりでは暗号/認証アルゴリズムと鍵が必要になるが,これらを一つ前の段階のフェーズ2で決める。
ルーターAにIPパケットが入ってきたら,ルーターAは,そのIPパケットを暗号化し,さらに改ざんチェック用のデータを付けてから,先頭にトンネル通信用のESPヘッダーとIPヘッダーを付けて送り出す。
ESPヘッダーにはトンネルの識別番号であるSPI値が入っており,IPヘッダーには相手ルーターのIPアドレスがあて先アドレスとして入っている。
この暗号化パケットはIPヘッダーの情報を基にインターネットで転送されて相手ルーターに届く。
暗号化パケットを受け取ったルーターBは,ESPヘッダーに記述されたSPI値を調べて,どのトンネルから来たパケットなのかを識別する。
その後で,改ざん検証用のデータをチェックしてIPパケットの正当性を検証し,暗号化されたIPパケットを復号する。以上がルーターAからルーターBへの通信の流れである。
*** 同じ鍵を使ってパケットを復号 [#uedcca97]
IPsecを理解するうえで,暗号化と認証(改ざんチェック)の理解は避けられない。
しくみを押さえよう(図2-2)。
CENTER:&ref(zu22.jpg);
>図2-2●データの暗号化と認証のしくみ
暗号化では,両者が同じ暗号アルゴリズムと暗号鍵を使う。
データ認証でも通信する両者で共通する認証アルゴリズムと認証鍵を使って,データが改ざんされていないかをチェックする。
暗号化は,暗号化したい対象(データ)を特定の暗号アルゴリズムで演算する。
このとき,暗号データを作成するために暗号鍵を使う。
暗号鍵の実体は,特定のビットが並んだものである。
この暗号鍵のビット情報を使ってデータを演算して,暗号データを作る。
IPsecではデータの暗号化に共通鍵暗号方式を使う。
これは,データの暗号化と復号に同じ鍵を使う方式である。
つまり,暗号化されたデータを復号するには,暗号化したときと同じ暗号アルゴリズムと暗号鍵を使う。
こうしてはじめて,お互いで暗号通信ができるようになるわけだ。
*** 鍵付きハッシュでパケットを認証 [#wf513825]
次に,改ざんをチェックするデータ認証のしくみを見てみよう。
データ認証とは,データが通信途中で改ざんされていないかを,データを受信した側で確認することである。
IPsecでは,データ認証にハッシュを使うのが一般的である。
あるデータをハッシュすると,どんな大きさのデータでも一定の長さのデータになって出力される。
入力データが同じなら,出力データ(ハッシュ値)は必ず同じになり,逆に入力データが少しでも違えば,ハッシュ値は全く異なる値になる。
つまり,受信側で受け取ったデータをハッシュし,そのハッシュ値とデータに添付されたハッシュ値が一致すれば,データは送信中に変化していないことがわかるのだ。
なお,IPsecで使うハッシュは,入力データに「認証鍵」を組み合わせてデータをハッシュをする「鍵付きハッシュ」である。
ハッシュする際にお互いしか知らない情報を加えることで,お互いにしか作れないハッシュ値を算出できるようにするわけだ。
つまり,IPsecの暗号通信で使うデータ認証のためのアルゴリズムや鍵も,両者で同じものを作る必要がある。
*** 「アルゴリズム」と「鍵」が必要 [#w46f6925]
まとめると,IPsecで暗号通信をするためには,パケットを暗号化するための「暗号アルゴリズム」と「暗号鍵」,そしてパケットを認証するための「認証アルゴリズム(ハッシュ)」と「認証鍵」が必要となる。
いろいろ解説してきたが,要はIPsecで使うこれらアルゴリズムと鍵は両者が同じものを使う,ということだけを頭に入れておけば大丈夫だ。
なお,トンネルは上り通信用と下り通信用の二つに分かれているので,暗号鍵と認証鍵は,上り通信用と下り通信用の二つずつを用意する必要がある。
これらを決めるのが,一つ前の段階であるフェーズ2になる。
** ステップ:フェーズ2(パケット(7)~(9)) [#o0070f0a]
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284162/?P=3
*** IPsecで使うトンネル情報はすべてここで決めておく [#u23fbbc6]
続いて,IPsecの暗号通信に必要な準備をするフェーズ2を見てみよう。
フェーズ2では,IPsecの暗号通信で使う暗号/認証アルゴリズムを決め,暗号と認証で使う鍵を作る(図3-1)。
このフェーズ2のやりとりは,10個のパケットのうちの(7)~(9)番目。
これも暗号化されたトンネル内でやりとりされる。
CENTER:&ref(zu31_600.jpg);
>図3-1●フェーズ2のやりとり
IPsecの暗号通信で使う暗号/認証アルゴリズムとこれらの鍵をここで決める。
ただ,ここでのやりとりは安全に実行する必要がある。
そのための鍵情報などを一つ前の段階のフェーズ1で決める。
*** IPsecで使う鍵はここで作る [#y4598ec7]
具体的には,(7)でルーターAが暗号/認証アルゴリズムをルーターBに提案する。
このとき,鍵の基となる情報(乱数とSPI値)も同時に送信する。
SPI値とは,トンネルを識別するためのもの。
ルーターが自分あてに通信するためのトンネル番号として通知するSPI値を,鍵の作成にも使っているのだ。
鍵の基となる乱数とSPI値を受け取ったルーターBは,送られてきた暗号/認証アルゴリズムと,自分に設定されている暗号/認証アルゴリズムを比較し,両者で一致するものを選ぶ。
ここで決めたアルゴリズムを,ルーターAに返信する(8)。
このときも同様に鍵の基となる情報(ルーターBで発生させた乱数とSPI番号)をルーターAに送る。
そして最後の(9)で,これまでのフェーズ2の通信((7)と(8))が正しいことを確認する。
ルーターAは(7)と(8)でやりとりした両者の乱数を自分でハッシュした値をルーターBに送信する。
ルーターBでも(7)と(8)で受け取った乱数をハッシュし,受け取ったハッシュ値と一致すれば,(7)~(9)の一連の通信が途中で改ざんされていないと判断できる。
*** 上り用と下り用の四つの鍵を作る [#r180a520]
これで,両者がそれぞれ作成した乱数とSPI値を共有できた。
両ルーターはこれらの情報を使ってIPsecで使う共通の鍵を作る。
具体的には,フェーズ1で作成した鍵を使って,SPI値と両者の乱数を鍵付きハッシュで演算し,出てきたハッシュ値を二つに分割する。
その一方を暗号鍵として使い,もう一方を認証鍵として使うのだ。
暗号鍵と認証鍵はトンネルごとに作るので,上りトンネル用と下りトンネル用の合計4個の鍵を作ることになる。
つまりトンネル用の鍵は,両ルーターが宣言したSPI値ごとに作る。
フェーズ2でやりとりした暗号アルゴリズムと認証アルゴリズムは,事前にユーザーがルーターに設定しておいた項目である。
実践編でルーターに設定した内容を確認してみると,認証アルゴリズムは「HMAC-SHA」,暗号アルゴリズムは「3DES-CBC」だった。
この設定項目がフェーズ2でやりとりされたわけだ(図3-2)。
CENTER:&ref(zu32_600.jpg);
>図3-2●ユーザーが設定した内容
ルーターに設定した暗号アルゴリズムや認証アルゴリズムはフェーズ2でやりとりされ,IPsecの暗号通信で使われていた。
ちょっと複雑に思えたかもしれないが,フェーズ2では,IPsecの暗号通信で使うアルゴリズムと鍵を作っているということが押さえられれば十分である。
*** トンネルの寿命も決めておく [#r3b30867]
これ以外にフェーズ2でやりとりする情報についても確認しておこう。
フェーズ2では,セキュリティ・プロトコル(パケット・フォーマット)の種類やライフタイム(トンネルの寿命)といった情報もやりとりしている。
誌上体験で使ったヤマハのルーター「RT107e」では,これらはデフォルト値をやりとりする仕様になっていた。
具体的には,セキュリティ・プロトコルはESPで,ライフタイムは2万8800秒(8時間)である。
前の「IPsecの暗号通信」で解説した「暗号化したパケットにESPヘッダーを付けて送信する」というのは,このフェーズ2で決めていたわけだ。
トンネルの寿命を示すライフタイム値を決めるのは,IPsecでずっと同じ鍵を使い続けて通信するのは危険だから。IPsecではトンネルの寿命を決めておいて,寿命が切れる直前に再びフェーズ2の通信を実行して,新しいトンネルを作り直す。
このときに乱数の値が変わるので,鍵も全く別のものになる。
*** 安全にやりとりするしくみが必要 [#if8dbf73]
フェーズ2でやりとりする情報は,最終的にIPsecの暗号通信で使うための鍵の基となる大切な情報である。
そのため,これらの情報が他人に見られてしまうと,暗号通信の安全性が損なわれる。
そこで,フェーズ2のやりとり自体を安全に実行する別の暗号通信のしくみ──「制御用トンネル」が必要になる。
この制御トンネルを使って(7)~(9)のパケットをやりとりすれば安全だ。
トンネル通信を実現するための要素は,基本的にIPsecの暗号通信のときと同じである。
やりとりする内容を暗号化するための「暗号アルゴリズム」と「暗号鍵」,そして,データの改ざんをチェックするための「認証アルゴリズム」と「認証鍵」である。
フェーズ2を始めるにあたって,これらをフェーズ1で決めておくわけだ。
** ジャンプ:フェーズ1(パケット(1)~(6)) [#h3001e72]
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284162/?P=4
*** 安全にやりとりする準備をする,接続相手はここで認証> [#z3e1da92]
ここではIPsecで最初に実行するフェーズ1を見てみよう。
フェーズ1の目的は,フェーズ2を暗号化して安全にやりとりする制御用トンネルを作るための情報を共有すること。
どうやって実現しているのかを見てみよう。
*** 鍵の基を“不思議な計算”で作る [#o821d0be]
フェーズ1のやりとりは,IPsecでやりとりされる10個のパケットのうちの(1)~(6)番目である。
一つの処理が一往復のやりとりになり,
(1)~(2)がフェーズ1とフェーズ2で使う暗号/認証アルゴリズムの決定,
(3)~(4)がフェーズ2で使う鍵の基となる情報の交換,
(5)~(6)が通信相手の認証
──である(図4-1)。
CENTER:&ref(zu41.jpg);
>図4-1●フェーズ1のやりとり
フェーズ2のやりとりをする制御用トンネルのための鍵を安全に作って共有する。
また,以降の通信で使う暗号/認証アルゴリズムを決めたり,通信相手の認証もする。
(1)~(2)では,暗号/認証アルゴリズムやライフタイム(トンネルの寿命)を決める。
決め方はフェーズ2と同じ。
ルーターAが提案して,ルーターBが自分の設定と一致するものを答える。
フェーズ1のポイントとなるのは(3)~(4)のやりとりである。
ここでは,Diffie-Hellmanと呼ばれる計算を使って,フェーズ2で使う鍵の基となる情報をお互いに共有する。
この計算は,ネットワーク上で通信して両者しか知らない秘密の値を安全に共有できる不思議なものだ。
IPsecを使う上でこの計算式を覚える必要はない。この特徴だけを頭に入れておけばいいだろう。
念のために,Diffie-Hellmanの計算を簡単に説明しておく。
両ルーターは,公開値と秘密値と呼ぶ二つの値を作る。
そして,このうち公開値だけをお互いに交換する。
それから,それぞれが相手の公開値,自分の秘密値,事前に決めておいた値を組み合わせて決められた計算をすると,両者で同じ計算結果が得られるのだ。
つまり,四つの値のうち二つの公開値だけをやりとりすれば,お互いに同じ値を安全に共有できる。
仮にネットワーク上で交換した二つの公開値を第三者に盗まれたとしても,秘密値がわからなければ最終的な計算結果は作れない。
こうして,両者にしかわからない値を安全に共有するのだ。
両ルーターは,このDiffie-Hellmanの計算で共有した秘密の値を使ってフェーズ2で使う鍵を3個作る。
具体的にはまず,事前共有鍵とお互いの乱数から鍵の基となる「鍵素材」を作る。
この鍵素材とDiffie-Hellmanの共有値を使ってハッシュし,3個の鍵を次々と作るのだ。
これらの鍵は,Diffie-Hellmanの計算で算出した秘密の値がわかっていないと作れない。
このため,両方のルーターだけがこれらの鍵を持っていることになる。
フェーズ1では,(5)~(6)で通信相手の検証もする。
ここでは,ユーザーがルーターに設定した「事前共有鍵」の情報が使われる。
「自分の接続相手が自分と同じ事前共有鍵を持っているか」で通信相手を認証するのだ。
IPsecを使うだけなら「事前共有鍵は両者に値を設定する」とだけ覚えておけばいいだろう。
ここでは理解を深めたい人のために,相手認証のしくみを紹介する。
*** 事前共有鍵で通信相手を確かめる [#af78572e]
今回のケースは,両ルーターに事前共有鍵として「nikkei1」という文字列を設定した(図4-2)。
ルーターAがルーターBに送るのは,自分のIPアドレスと,これまでやりとりした(1)~(4)の情報のハッシュ値である。
具体的には,(1)のペイロードと,(3)~(4)でやりとりしたDiffie-Hellmanの公開値とCookie値を,直前に作った鍵(鍵素材)でハッシュする。
そして,このハッシュ値と自分のIPアドレスを暗号化してルーターBに送信する。
CENTER:&ref(zu42_600.jpg);
>図4-2●通信相手を認証するしくみ
接続相手のIPアドレスが自分と同じ事前共有鍵を持っているかを確かめる。
接続相手が確かにこれまでやりとりしてきた相手かどうかもわかる。
以下は,(5)の内容を詳しく紹介したもの。
(6)では認証する側とされる側を入れ替えて同様の処理をする。
暗号データを受け取ったルーターBは,暗号部分を復号すると,相手のIPアドレスとハッシュ値が出てくる。
まずはIPアドレスをチェックして,なりすましがないことを確認する。
次に,ルーターB側でもルーターAと同じハッシュ計算をして,ハッシュ値が一致するかどうかを確かめる。
一致したら,通信相手は確かにこれまで(1)~(4)のやりとりをしてきた相手であり,なおかつ,自分と同じ事前共有鍵を持っていることがわかる。
これでルーターBは,接続相手であるルーターAを認証できた。
このあと認証する側と認証される側を入れ替えて同様の処理を実施し,ルーターAもルーターBを認証できれば,お互いの相手認証は成功だ。
*** 必要な値はすべて決めておく [#sb5080f0]
フェーズ1の通信をするために必要な暗号/認証アルゴリズムなどは,事前にルーターに設定されている。
誌上体験で使ったヤマハの「RT107e」では,これらの値はすべてデフォルトで決めた情報を使っている。
それもそのはず,フェーズ1はIPsecの暗号通信をするためのスタート地点。
暗号アルゴリズムや認証アルゴリズムもあらかじめすべて決めておく必要があるわけだ。
なお,フェーズ1で決めたフェーズ1と2で使う暗号/認証アルゴリズムと,IPsecの暗号通信で使う暗号/認証アルゴリズムは異なっていてもよい。
ここのフェーズ1で決めた暗号/認証アルゴリズムは,あくまでもフェーズ1と2の鍵交換のやりとりに使われる。
** クールダウン:まとめ [#r40d0251]
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284162/?P=5
*** ここまでわかれば大丈夫,もうIPsecは怖くない [#pf9b3f60]
これまでの説明で,IPsecの重要なポイントはすべて押さえた。
最後にまとめとして,IPsecの全体像を見ておこう。
*** 三つの技術がIPsecの定番 [#q25de731]
IPsecはさまざまな技術が使えるようになっており,そのカバー範囲は広い。
そのため,本特集で紹介した内容は,IPsecの仕様の中の一部の組み合わせにすぎない。
しかし,このケースが,現在一般的に使われているIPsecの通信である。
このことをもう少し具体的に見てみる。
本特集で説明したIPsecは,パケット・フォーマット(セキュリティ・プロトコル)に「ESP」,通信形態に「トンネル・モード」,フェーズ1に「メイン・モード」を使っている(図5-1)。
CENTER:&ref(zu51.jpg);
>図5-1●本特集で取り上げたIPsec(現在一般的に使われている組み合わせ)
これまで見てきたのは,ESP(パケットの仕様),トンネル・モード(通信形態のモード),メイン・モード(フェーズ1のモード)──という組み合わせ。
IPsecでは,ほぼこの組み合わせが使われている。
ほかにさまざまな組み合わせがあるが,いずれもあまり使われていない。
例えば,セキュリティ・プロトコルは,ESPのほかにAHというものがある。
ただしAHは暗号化機能を持っていないので,ほとんど使われていない。
また,通信のモードにはマシン対マシンの1対1通信で使われる「トランスポート・モード」もあるが,こちらも使われていない。
また,フェーズ1のやりとりを簡略化した「アグレッシブ・モード」も,ルーター間でIPsec通信をするケースでは,ほとんど使われない。
つまり,これまで解説してきたESP,トンネル・モード,アグレッシブ・モード──の組み合わせが理解できれば,実際に使うIPsecの大部分は攻略できたと言えるのだ。
ただ,フェーズ1の「アグレッシブ・モード」は,インターネット上のパソコンが,ルーターにリモート・アクセスするケースで使われている。
これは,実践編の図の下側で紹介した通信である。
*** リモート接続用のモードがある [#e3035fd8]
メイン・モードでは,通信途中のフェーズ1の(5)と(6)で通信相手を認証する。
それまでの間に通信相手を識別する情報は,通信相手のIPアドレスだけ。機器に一意に割り当てられるグローバルIPアドレスを認証に使うので信頼性が高い認証方法と言えるが,動的にIPアドレスが変わる相手を認証することはできない。
これに対して,接続する側のマシンのIPアドレスが変わるリモート・アクセス環境でもIPsecの通信ができるようにしたのが,アグレッシブ・モードである。
アグレッシブ・モードでは,やりとりの最初で認証情報(ID情報)を交換する(図5-2)。
通信の最初に身元情報を交換するので,ID情報にIPアドレス以外の情報を使うことができる。
IPアドレスを使わないので,接続してくるマシンのIPアドレスが変わる環境でも通信相手を認証できるわけだ。
CENTER:&ref(zu52s.jpg);
>図5-2●メイン・モードがわかればアグレッシブ・モードもわかる
リモート・アクセスが使われる環境では,フェーズ1のやりとりを簡略化したアグレッシブ・モードが使われる。
やりとりする内容は,両モードとも同じである。
[[実践編>http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284397/]]の下側のトンネル通信の設定を確認してみると,ルーターAには「PC1」という名前が設定してあり,ルーターBにも接続相手の識別に「PC1」と設定されている。
ルーターAは,ID情報としてこの「PC1」という名前をルーターBに通知し,ルーターBもこの名前で接続相手を認証するのである。
認証にIPアドレスではなく文字列を使っているので,パソコンのIPアドレスが変わる環境でもルーターBはパソコンを認証できるわけだ。
CENTER:&ref(zu1.jpg);
>http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284397/
図の上側にあるのが,インターネットにつながっている拠点Aと拠点Bのルーター同士でIPsecの通信をするケースである。
図の下側は,パソコンが拠点BのルーターにIPsecでアクセスするケースである。パソコンに「IPsecクライアント・ソフト」をインストールして,このIPsecクライアント・ソフトとルーターの間でIPsecによる暗号通信をする。
*** やりとりしている内容は同じ [#iccc1373]
メイン・モードでは,フェーズ1で6個のパケットをやりとりする。
一方のアグレッシブ・モードは3個のパケットをやりとりする。
そのため両モードは全く別のもののように思えるかもしないが,実際はそうではない。
アグレッシブ・モードは,メイン・モードで3回に分けて送っていた内容を,1回にまとめて送っているだけ。
やりとりする内容は,両モードで同じである。
アグレッシブ・モードを使っても,両者がやりとりした情報を基に,暗号/認証アルゴリズムを決め,鍵を作り,通信相手を認証するという処理をすることには変わりがない。
メイン・モードを押さえればアグレッシブ・モードも押さえられたと言っていい。
つまり,本特集の内容で,現場で使われている大半のIPsecはカバーしているのだ。
もうIPsecは怖くない。(キリッ)
**これで完璧! IPsecのやりとり完全版 [#qcdc1c4c]
http://itpro.nikkeibp.co.jp/article/COLUMN/20071012/284403/
*** IKE フェーズ1 [#jd6aa996]
CENTER:&ref(matome_zu1.jpg);
*** IKE フェーズ2 [#c429ddbd]
CENTER:&ref(matome_zu2.jpg);
** リンク [#l8d0a713]
[[VPN]]
[[トランスポートモード]]
[[トンネルモード]]
IPsec - トランスポートモード・トンネルモード -
http://www.infraexpert.com/study/ipsec6.html
IPsecの仕組み:ITpro
http://itpro.nikkeibp.co.jp/article/lecture/20070419/268961/
IPsecらくらくマスター:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20071002/283514/
技術解説:IT管理者のためのIPSec講座
http://www.atmarkit.co.jp/fpc/kaisetsu/ipsec/index.html