(機能)
インターネットを仮想的専用線として用いるネットワーク
通信に先立って、相互の認証と暗号用秘密鍵を共有するため、 IKEで SA(Security Association)を確立する。
(特徴)
【IKE】
【フェーズ1】
ISAKMP SA (Internet Security Association and Key Management Protocol SA)の生成
① イニシエータがレスポンダに SAパラメータ(暗号化、ハッシュ、認証アルゴリズム、 D-Hグループなど)をグループ化して提案する
② レスポンダはグループ化されたパラメータを選択して、イニシエータに返信する
③ イニシエータは DH鍵素材 (g-xi)と乱数 (Ni_b)をレスポンダへ、レスポンダは DH鍵素材 (g-xr)と乱数 (Nr_b)をイニシエータに送信する (DH共通鍵 g_xyを共有できる )
(事前共有秘密鍵方式の場合)
④ SKEYID = prf(事前共有秘密鍵 , Ni_b | Nr_b)【prf :疑似乱数発生関数】により SKEYIDを算出
⑤ IPSecで利用する暗号鍵: SKEYID_d = prf(SKEYID , g_xy | CKY-I | CKY-R | 0)
フェーズ 2で利用する暗号鍵: SKEYID_a = prf(SKEYID , SKEYID_d | g_xy | CKY-I | CKY-R | 1)
フェーズ 1で利用する暗号鍵: SKEYID_e = prf(SKEYID , SKEYID_a | g_xy | CKY-I | CKY-R | 1)
※ CKY-I:イニシエータクッキー、CKY-R:レスポンダクッキー
IKEの通信方法を取り決めるためのパケットのヘッダの先頭に位置するフィールドを生成する
---ここからは暗号化通信 --
⑥ イニシエータは IPアドレスとハッシュ値をレスポンダに送信
⑦ レスポンダはイニシエータから受信したハッシュ値と、自分で求めたハッシュ値を比較して、一致したら鍵
交換とイニシエータ認証が完了する
⑧ 同様に、レスポンダからイニシエータに IPアドレスとハッシュ値を送信、イニシエータで認証を行う
(電子署名認証方式の場合)
④ SKEYID = prf(Ni_b | Nr_b , g_xy)【prf :疑似乱数発生関数】により SKEYIDを算出
⑤ IPSecで利用する暗号鍵: SKEYID_d = prf(SKEYID , g_xy | CKY-I | CKY-R | 0)
フェーズ 2で利用する暗号鍵: SKEYID_a = prf(SKEYID , SKEYID_d | g_xy | CKY-I | CKY-R | 1)
フェーズ 1で利用する暗号鍵: SKEYID_e = prf(SKEYID , SKEYID_a | g_xy | CKY-I | CKY-R | 1)
※ CKY-I:イニシエータクッキー、CKY-R:レスポンダクッキーを生成する
--- ここからは暗号化通信 --
⑥ イニシエータは電子証明書、電子署名(ハッシュ値をイニシエータの秘密鍵で暗号化)を送信
⑦ レスポンダは受信した電子署名を復号し、自分が求めたハッシュ値と比較して、一致したら鍵交換とイニシエータ認証が完了する
⑧ 同様に、レスポンダからイニシエータに電子証明書、電子署名を送信、イニシエータで認証を行う
【フェーズ2】
① イニシエータがレスポンダに IPSecに使用する SAパラメータ(暗号化、ハッシュ、認証アルゴリズム、 D-Hグループ、有効期限)をグループ化して提案する
② イニシエータ IDペイロード (IPSecで通信する相手の情報:イニシエータ側のローカルネットワークアドレスなど)
③ レスポンダからも同様にデータを送信する
④ イニシエータはレスポンダから情報を受信すると、再びハッシュ値をレスポンダに送信する(イニシエータがネットワーク上に生存していることを証明する)
※ IKEによって決定した有効期限を「ハードライフタイム」、SAが確立してから新たな SAを確立するまでの間隔を「ソフトライフタイム」と呼ぶ
※セキュリティゲートウェイは、ハードライフタイムに達する前に新たな SAを確立するためにサイトやり取りをする (Re-Key)
【補足】 Diffie-Hellmanのかぎ配送方式
① 通信を行う A,B間で大きな素数 qと 1~(q-1)の範囲からαを決める
② Aは 1~(q-1)の範囲から aを選び Ka=α**a(mod q)を、 Bは 1~(q-1)の範囲から bを選びKb=α**b(mod q)を計算し、相互に送信する
③ A,Bともに K=α**ab(mod q)がわかるので、これを共有かぎとする
※お互いに通信相手を確認していないと、中間攻撃をされても気づかない。
【AHにおける通信の流れ】
① IKEで SAを確立 (秘密鍵の交換、認証アルゴリズムの確認など )
② パソコンからの IPパケットを VPN装置へ送信
③ HMAC-MD5などを利用してハッシュ化(送信元 IPアドレス、宛先 IPアドレスなど)をおこない、 AHヘッダの認証データとして付加して、 IPヘッダと TCPヘッダの間に AHヘッダ( SPI、シーケンス番号、認証データ)を挿入する
④ 送信先 VPN装置は、認証確認を行い、問題なければパソコンにデータを送る
※ IPヘッダや AHヘッダも認証の対象パケット転送中に値が変化するフラグ、 TTL、チェックサムなどは対象外また、 AHヘッダの認証データはすべて 0とみなしてハッシュ演算を行う
チェック!
送信元、あて先 IPアドレスを含めて認証の対象とするため、厳密な認証ができる反面、 NATルータなどでアド
レス変換がおこなわれると、送信元 IPアドレスが書き換えられ受信側で認証に失敗する(AHは認証範囲は
パケット全体なため、受信側でハッシュ演算を行うと、認証データとはちがう演算結果となる)
【ESPトンネリングモードにおける通信の流れ】
① パソコンは、データに IPヘッダ(送信元 IP +宛先 IP = 8バイト)を付加する
② IPパケットに ESPトレーラ(パディング:データを 32ビットの倍数に調整するためのデータ、次ヘッダフィールド)を付加する
③ VPN装置は、パソコンから受け取った IPヘッダ + IPペイロード + ESPトレーラの暗号化を行う
④ 暗号化したデータに、 ESPヘッダ( SPI、シーケンス番号)を付加する
⑤ ESPヘッダ、暗号化したパケットからハッシュ値を計算し、 ESP認証データとしてパケットに付加する
⑥ VPN装置は、自身の IPヘッダを付加して送信する
⑦ 宛先の VPN装置は認証確認後、暗号化されたデータを復号する
⑧ 宛先パソコンは、復号されたデータを受け取る
【ESPトランスポートモードにおける通信の流れ】
① パソコンは、データに IPヘッダ(送信元 IP +宛先 IP = 8バイト)を付加する
② VPN装置は、送信元 IPを自分の IPに変換する
③ IPパケットに ESPトレーラ(パディング:データを 32ビットの倍数に調整するためのデータ、次ヘッダフィールド)を付加する
④ VPN装置は、パソコンから受け取った IPペイロード + ESPトレーラの暗号化を行う
⑤ 暗号化したデータに、 ESPヘッダ( SPI、シーケンス番号)を付加する
⑥ ESPヘッダ、暗号化したパケットからハッシュ値を計算し、 ESP認証データとしてパケットに付加する
⑦ 宛先の VPN装置は認証確認後、暗号化されたデータを復号し、宛先 IPをパソコンの IPに変換する
⑧ 宛先パソコンは、復号されたデータを受け取る
チェック!
トランスポートモードを使用して、 NAT変換を行う場合、送信側の TCPチェックサムの計算結果(プライベー
ト IPアドレス)と、受信側の TCPチェックサムの計算結果( NAT変換後の IPアドレス)が一致しなくなるた
め、 NAT変換は利用できない
よって、プライベート IPアドレスを使用しているネットワーク同士で暗号化通信を行う場合は、トンネルモー
ドを利用する必要がある。
※ TCPチェックサム
TCPセグメント全体と、 IPヘッダにある送信元、あて先 IPアドレスを疑似ヘッダとして対象にする
(問題点など)
1. VPNと NAPT(IPマスカレード)の併用によって起こる問題点
IPマスカレードを利用する際、 TCPヘッダは暗号化されているため、ポート番号の書き換えが行われずに動作しない
【解決策】
その1. NATトラバーサル
ESPパケットを UDPでカプセル化して NAT変換を行うことで、 ESP認証に関する問題を解決する方法
① IKEにおいて、暗号アルゴリズムなどを決定するネゴシエーションで、 NATトラバーサルを行うかを決定する
② VPN装置は、 ESPパケットを UDPでカプセル化する
③ ブロードバンドルータは、 UDPパケットを NAPT処理し、送信元 IPアドレスを自分の IPアドレスに書き換え、送信元ポート番号も自分で設定したものに書き換える
④ 宛先 VPN装置は、 UDPパケットからデータを復号して、宛先のパソコンへデータを送る
その2. IPsecパススルー
ブロードバンドルータは、 VPN装置から送られたパケットの宛先ポート番号、送信元ポート番号がいずれも 500番の場合は、 NAT変換を行わずにそのままデータを送信することで、 NAT変換による ESP認証の問題を解決する
2. VPNとファイアウォールの併用による長所・短所
(VPN装置をファイアウォールの内側に置く場合)
【長所】
・ VPN装置でカプセル化されるため、アプリケーションによる制約がない
・外部からの攻撃に対し、 VPN装置を守ることができる
【短所】
・ファイアウォールを通過するパケットは、暗号化されているため、パケットフィルタリングや IPマスカレードの実現に不都合である。
・ファイアウォールに VPNで使用するポート( ESP:50、AH:51、IKE:500)をあける必要がある
(VPN装置をファイアウォールの外側に置く場合)
【長所】
・ファイアウォール通過後に暗号化されるため、パケットフィルタリングやロギングなどの機能を利用できる。
・ VPN装置で認証に成功した IPパケットのみの通過となるため、セキュリティが高まる
【短所】
・ファイアウォールを通過できるアプリケーションしか使用できない。
・ VPN装置がインターネット上に公開されてしまい、攻撃を受ける可能性がある。
http://jsecuritysp.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88vpnインターネットVPN
PR