通信の暗号化(2)
IPsec
IPsecとは
インターネットなどのTCP/IPネットワークで暗号通信を行うためのプロトコルの一つ。いくつかの要素技術の組み合わせとして実現され、通信相手を確認して成りすましの防止・通信途上での改ざんを防止するAH、伝送するデータの暗号化を行うESP、公開鍵暗号を用いて安全に暗号鍵の交換・共有を行うIKEなどが利用される。
IPsecの概要
【特徴】
- パケットをインターネット層でカプセル化し、暗号化する
- 上位層のアプリケーションに依存せずに暗号化通信が可能
- VPNゲートウェイ製品などを用いた拠点間通信によるIPsecVPNでは、ユーザは暗号化通信を行っていることを意識する必要がない
- IPv4、IPv6のどちらでも利用することができ、IPv6ではIPsecの実装が必須となっている
IPsecVPNの機能や使用
IPsecVPN
通信の暗号化にIPsecを用いるVPN技術。ネットワーク層のプロトコルであるIPの段階で暗号化を行う方式。インターネットを通じて拠点間接続を行うインターネットVPNやリモートアクセスで用いられる。
各拠点の広域回線網との端点にIPsecゲートウェイを設置し、LAN内を流れるIPパケットを暗号化して拠点間で送受信する。各ネットワークはIPレベルで透過的に接続されているため、トランスポート層(TCP/UDP)より上のプロトコルやソフトウェアは特別な対応をする必要がない。
拠点間接続によるIPsecVPN
- 各拠点のネットワークにVPNゲートウェイ装置を設置し、接続に必要な設定を行う。ファイアウォールがVPNゲートウェイを兼ねる場合もある
- ファイアウォールにはIPsecで使用するポートを許可するように設定する(UDP500番ポート他)
- LANに接続されたクライアント環境には特に手を加える必要はない
- VPNゲートウェイを経由すればアプリケーションに依存せず暗号化通信を行える
拠点対端末接続におけるIPsecVPN
モバイルPCやSOHOからいったんISPに接続し、インターネットを介して組織のネットワークに接続する場合に使用
- 組織内のネットワークにVPNゲートウェイ装置を設置し、拠点間接続と同様に接続に必要な設定を行う
- ファイアウォールについても拠点間接続と同様にIPsecで使用するポートを許可するように設定する
- クライアント環境には必要に応じて専用のVPNクライアントソフトウェアを導入し、接続に必要なパラメータなどを設定する
- IPsecにおける接続先相手の認証プロセスにおいて留意する
2つの通信モード
IPsecには、パケットを暗号化する対象部分によってトランスポートモードとトンネルモードの2つの通信モードがある。
主流はトンネルモード。(LANとWANの境界にあるルータ(VPN装置)にIPsecの設定をすれば、LAN内のPCにIPsecの設定を個別にする必要がないため)
トランスポートモード
- 端末間でIPsec通信を行う。
- パケットのもとのIPヘッダは変更されない。
- パケットのLayer4以上のデータ部のみを暗号化する。
- パケットの元のIPヘッダに基づいてパケットが転送される。
- ゲートウェイ間の通信経路上だけではなく、送信ホストと受信ホストとの間の全経路上でメッセージが暗号化される。
トンネルモード
- VPN装置間でIPsec通信を行う
- パケットのもとのIPヘッダは暗号化される
- パケットのLayer4以上のデータ部も暗号化する
- もとのパケットに新たなIPヘッダが付加される
- 新たに加えられたIPヘッダに基づいてパケットが転送される
IPsecの提供機能
アクセス制御機能
発信元アドレス、あて先アドレス、あて先ポート番号、プロトコル種別などによって、IPsecを使用するか否か、使用する機能(暗号化、メッセージ認証など)を制御する
メッセージ認証機能
メッセージ認証コード(MAC)によって通信データの改ざんの有無を確認し、安全性を保証する
送信元認証機能
MACを用いてデータ送信元の正当性を確認する
通信データ重複検知機能
通信データの盗聴によるリブレイアタックを防ぐことが可能
通信データ暗号化機能
ペイロード、ヘッダ情報の暗号化機能がある
・トランスポートモード | : | ペイロード、TCPヘッダのみ暗号化 |
・トンネルモード | : | ペイロード、TCPヘッダ、IPヘッダの暗号化 |
IPsecを構成する機能
SPD(セキュリティポリシーデータベース)
セキュリティポリシーを適用する際のデータベースのこと
IPsecでは、セキュリティポリシーを決め、そのポリシー に従って認証や暗号アルゴリズムを適用するか否かを決定する。システムはパケットに対して、セキュリティポリシーを適用するか否かを判断する際にセキュリティポリシーデータベース(SPD)を検索し、以下のことを行う。
判断の条件
- 送信、受信アドレス
- 使用するプロトコル
- 送信、受信ポート番号
- 名前(ユーザ名やFQDN)
選択する処理
- IPsecを適用する
- IPsecを適用せずに通過させる
- 破棄する
セレクタでの設定
- IPsecの適用の有無
- 使用するプロトコル(AH、ESP)
- 使用する転送モード(トランスポートモード、トンネルモード)
- 暗号化アルゴリズム
- メッセージ認証のアルゴリズム
SA(セキュリティアソシエーション)
ネットワーク上の2つのノード間の一意の接続のこと。IPsecにおける論理的なコネクション(トンネル)。
制御用に用いるISAKMP SAと、実際の通信データを送るために用いるIPsec SAがある。
IPsecゲートウェイ同士が通信を始める時には、最初に制御用のISAKMP SAが作られ、次にIPsec SAが作られる。
ISAKMP SAはIPsecゲートウェイ間で一つ(上り下り兼用)で作られるが、IPsec SAは通信を行う各ホスト間において、通信の方向や使用するプロトコル(AH、ESP)ごとに別々のSAか作られる。
IPsec SAは実質的にはIPsecのパラメータのセットのことになる。
- SPI
- プロトコル:AH or ESP
- IPsec通信モード:トンネルorトランスポート
- 暗号化:DES or 3DES or AES
- 暗号鍵認証:HMAC-MD5 or SHA1
- 認証鍵
- シーケンス番号カウンター
- DSCP値
- Path MTU
- トンネルエンドポイントのIPアドレス
- SAのライフタイム など
SPI
SAを識別するために用いる32ビットの値
IPsec通信の通信手順
IPsec通信の通信手順は、IKE 2つ(フェーズ1、フェーズ2)と、実際の暗号化通信1つの順に行う
IKEを使った鍵交換
IKEには、フェーズ1とフェーズ2と呼ばれる2つの段階がある。
フェーズ1
ISAKMP SAと呼ばれるフェーズ2における交換内容を保護するためのSAを確立する。
次に、事前共有鍵(PresharedKey)やデジタル署名などを使用して相手を認証する。
※SA(Security Association)とは、セッションと考えればよい。
フェーズ2
IPsecで使用するIPsec SAを確立する。
※フェーズは1つでもいいのだが、より高速にするためにあえて分けている。
ESPプロトコルを使ったIPsecの通信
鍵交換のフェーズ2で決めた暗号化(例えば3DESやAES)や認証の方式(例えばMD5やSHA-1)を用い、作成した鍵を使ってIPsecSAにてIPsecの通信をする。
IPsecのプロトコル
AH(認証ヘッダ)
- セキュリティプロトコル
- 認証のみの機能を持ち、通信データを暗号化する機能はないため、あまり利用されていない
- MACを用いてIPヘッダも含めたパケット全体をAHヘッダの認証データにセットする。このため、完全性チェックの精度を高めることが可能
- NATを使用している場合、経路上でIPアドレスが変更されてしまうため、完全性チェックが正常に行えない
AHのパケット構成
トランスポートモード
IPヘッダとTCPヘッダの間にAHヘッダが挿入される
トンネルモード
元のIPヘッダの前に新たに付加されるIPヘッダとAHヘッダがセットされる
AHヘッダのレイアウト
ESP(暗号化ペイロード)
- セキュリティプロトコル
- 暗号化と認証の両方の機能を持つ
- IPパケットの暗号化と、送信データの改ざん検出を同時に行うためのプロトコル
- IPパケットを暗号化できる
- 認証範囲にあて先IPアドレスが含まれない
- NAT(アドレスのみの変換)を行ってもICVは影響を受けなくて済む
- NAPTにてついては正常に行えないため、対処が必要となる
ESPのパケット構成
トランスポートモード
IPヘッダとTCPヘッダの間にESPヘッダが挿入され、ペイロードの後ろにESPトレーラ、ICVが付加される
トンネルモード
元のIPヘッダの前に新たに付加されるIPヘッダとAHヘッダがセットされ、ペイロードの後ろにESPトレーラ、ICVが付加される
ESPヘッダのレイアウト
ESPが全てのセキュリティサービスを実装できるにも関わらず、AHも実装させることがある理由
- AHがESPより負荷がかからない
- AHに輸出規制がない
- AHはIPv6コンプライアンスに必須である
IKE(Internet Key Exchange)
IPsecで暗号化通信を行うのに先立って、暗号鍵を交換するために利用される通信プロトコル。その場限りの暗号化通信を行って、IPsecに必要な暗号化アルゴリズムの決定と暗号鍵の共有を行う。
Diffie-Hellman鍵交換によって暗号鍵を交換し、IKE限定の暗号化通信を行う。その際にIPsecでの通信に必要な各種の情報の交換などの手続きが行われ、IPsecによる通信を開始する。IKEの通信を盗み見られても、それ自体が暗号化されているため、IPsecの通信を解読される恐れはない
タイプ値 | ペイロードのタイプ名 | タイプ値 | ペイロードのタイプ名 |
---|---|---|---|
0 | ペイロードなし | 8 | ハッシュ(Hash) |
1 | SA (Security Association) | 9 | 署名(Signature) |
2 | Proposal | 10 | 乱数(Nonce) |
3 | Transform | 11 | 通知(Notification) |
4 | 鍵交換(KeyExchange) | 12 | 削除( Delete ) |
5 | ID (Identification) | 13 | ベンダID (VendorID) |
6 | 証明書(Certificate) | 14 | 属性 |
7 | 証明書要求(CertificateRequest) |
ISAKMPヘッダのレイアウト
通信相手の認証
以下の表のいずれかの手段で、通信相手がせいとうであるかどうかを確認する
認証方式 | 概要 |
---|---|
事前共有認証 (Pre-Shared Key認証) | 通信を行う者同士が、あらかじめ鍵を共有しておき、それによって相手を認識する方式。もっと簡便な方式。広く使用されている |
デジタル署名認証 | 通信を行う者同士が、お互いのデジタル署名を検証することで相手を認証する方式。公開鍵証明書を取得している必要がある。 |
公開鍵暗号認証 | 通信を行う者同士が、相手の公開鍵を入手してIDペイロードと乱数ペイロードを暗号化・送信し、受信側が自身の秘密鍵で復号することによって相手を認証する方式 公開鍵証明書は使用しない。ほとんど普及していない。 |
改良型公開鍵暗号認証 | 公開鍵で暗号化する部分を乱数ペイロードのみにし、IDと鍵交換のペイロードは生成した秘密対称鍵を用いて暗号化する。従来の公開鍵暗号認証の処理を高速化したもの。 |
SAの作成と管理
IKEは@ISAKMP SA、AIPsec SAの順でSAを作成する。
各SAの作成においては、パケットの交換方法によっていくつかの交換タイプがある
良く使用されるタイプ
ISAKMP SAの作成 :メインモードorアグレッシブモード
IPsec SAの作成 :クイックモード
最も一般的な認証:事前共有鍵
IKEの実行モード
メインモード
ISAKMP SAの作成に利用する
IPsec接続先のIPアドレスも認証情報として利用する(端末のIPアドレスをIDとし、それに事前共有鍵を割り当てる)。したがって、双方とも固定IPアドレスでなければ認証ができない。その分、下のアグレッシブモードに比べ、メインモードの方がセキュリティは強固(認証情報であるIPアドレスは偽装が難しいから)。
両端が固定IPアドレスであることが要件。
メインモードによるISAKMP SAの作成イメージ
6つのメッセージ交換を行う。
@、A: | ISAKMP SAのパラメータのネゴシエーション | |
@: | イニシエータが、自身のセキュリティポリシーにあった複数の | |
パラメータのセットに優先順位をつけてレスポンダに提案する | ||
A: | 応答者がその中から自身のセキュリティポリシーにあった | |
ものを1つ選択する | ||
B、C: | ISAKMP SAで使用する暗号化用の鍵と認証用の鍵のセットアップ | |
を行う。 | ||
D、E: | それぞれのID(IPアドレスやホスト名、ユーザ名など)を交換し、 | |
その認証情報を交換することで、相手の認証が行われる。 (例:デジタル署名認証方式を使用している場合は、ここで公開鍵証明書と署名を交換) @・Aでネゴシエーションされたアルゴリズムと、B・Cでセットアップされた鍵を使用して、 暗号化とメッセージ認証が施される。このため、交換されるIDの内容を第三者に知られることはない。 |
※ISAKMPパラメータ:暗号化アルゴリズム、ハッシュアルゴリズム、認証方式などのこと
アグレッシブモード
ISAKMP SAの作成に利用する
IPsec接続先のIPアドレスは認証情報として利用しない(利用者のIDなど運用者が独自に設定したIDに対して事前共有鍵を割り当てる)。したがって、動的IPでも認証できる。固定IPアドレスは費用がかかるので、コスト面でアグレッシブモードを選ぶ企業も多い。
ネゴシエーションできるパラメータが制限される、IDが保護されないといった問題がある。
事前共有鍵認証を行う場合、IDは暗号化されないが、最初に送信されるため、IDにFQDNなどを使用して事前共有鍵との対応付けを行うことが可能。そのため、IPアドレスが動的に設定されるモバイルPCなどでも使用可能。
動的IPを利用するときには、アグレッシブモードを利用しなければならない
XAUTHというIKEの拡張機能で認証を強化する場合がある。リモートアクセスユーザが不正な第三者でないか判断するために、VPN装置がRADIUSサーバと連携して認証を行う。
アグレッシブモードによるISAKMP SAの作成イメージ
3つのメッセージを使用する。
- イニシエータが、ISAKMPパラメータ、鍵交換パラメータ(DH公開値)、ID、認証用乱数を送信
※メインモードとは違い、秘密対称鍵を生成する前にIDを送る為、暗号化されない - レスポンスが受諾するパラメータ、DH公開値、ID、認証用乱数、認証用ハッシュ値を送信
イニシエータとレスポンスがDH秘密鍵を共有し、4つの秘密対称鍵を生成する - イニシエータが、認証用のハッシュ値をレスポンスに送信する
レスポンスはイニシエータを認証し、ISAKMP SAが確立する
クイックモード
IPsecの作成に使用する
前フェーズで確立されたISAKMP SAを使用するため、パケットのペイロード部分が暗号化される
IPsec SAで使用する秘密対称鍵は前フェーズで生成されたものが使用されるため、通常、新たに生成されない。
※セキュリティ確保のため、IPsec通信の開始後もSAが定期的に更新され、両ホスト間で再認証と秘密対称鍵の更新が行われる
クイックモードによるIPsec SAの作成イメージ
3つのメッセージを交換する。
@、A: | IPsec SAのパラメータのネゴシエーションと、IPsec SAで使用する |
鍵のセットアップ、IPsecを適用するトラフィック(送信元IPアドレス、宛先IPアドレス、プロトコル等)の確認を行う | |
B: | イニシエータからレスポンダにSAのセットアップが完了したことを |
示すメッセージ(認証用ハッシュ値)が送信される。 |
リモートアクセスにおける留意点・対策
以上のようなIPsecの機能を利用することで、拠点間VPNを構築することが可能である。しかし、リモートアクセスVPNで利用するには、このようなIPsecの通常の機能だけでは難しい。 具体的には
- モートアクセス端末を認証することはできても、それを使用するユーザを認証することができない。
PC を盗まれてしまうと、悪意のある第三者が社内ネットワークにアクセスできてしまう。 - 接続を許可する IPsec クライアントの数だけトンネルインタフェースを静的に設定しておく必要があるため、IPsec クライアントの数が増えると、設定作業が繁雑になる。
- VPN 内で使用する IP アドレスやネットワークの情報を動的に割り当てることができない。
といった問題が発生する。
これらの問題を解決するため、IPsecの実装を拡張し、以下の4つの機能を追加する必要がある。
XAUTH によるユーザ認証
IKEの Phase1 認証が完了した後、XAUTHによるユーザ認証を行なう。
XAUTH
リモートアクセスVPNの際に使用するIPsecの拡張技術。IKEのメッセージ交換時にVPNサーバとVPNクライアント間で、ユーザ認証に必要な情報をやりとりする。XAUTHは、Mode Configと同様にIKEフェーズ1が終了した後にやりとりされるので、ユーザ認証に必要な情報はISAKMP SA上で暗号化してやりとりされるため、ユーザ名やパスワードは安全にやりとりされる。
VPNクライアントは持ち運びが可能なPCであることが多く、PCを紛失してしまうと不正にVPN接続されてしまう。このような事態を回避するために、IKEフェーズ1による機器認証に加えてその機器の使用者が正当であるか確認するために、ユーザ名とパスワード認証するXAUTHの実装でセキュリティが高められる。
RADIUS サーバによる、ユーザ情報と事前共有鍵の管理
- XAUTH によるユーザ認証を行なう際、ユーザ情報の管理方法として、ルータに直接ユーザ ID とパスワードを設定する方法に加えて、RADIUS サーバに設定された認証情報を参照して認証を行なう方法をサポートする。
- 同じくルータに設定しておく必要のあった事前共有鍵についても、IPsec クライアント名をキーして、各 IPsec クライアントに対応する事前共有鍵を RADIUS サーバから取得できるようになる。
これらにより、繁雑なユーザ情報の管理を、RADIUS サーバを用いて一括管理すること可能。
tunnel template の新規追加
複数のトンネル設定の共通部分を抜き出し、テンプレートとして記述できるようにすることで、設定作業を簡単に行なうことができるようになる。
ISAKMP Configuration Method(mode-cfg) を用いた
IPsec クライアントへのアドレス付与
mode-cfg を用いて、セキュリティゲートウェイ側から IPsec クライアントの使用する内部 IP アドレスを割りあてることができるようになる。
使用可能な方式
- イニシエータが必要な情報をレスポンダに要求し、受け取る方式
- イニシエータが具体的な設定内容をレスポンダに通知し、了解を得る方式
通常、リモートアクセスでは、 RADIUSベースのユーザ認証が利用されるが、IPsecにおいては標準ではサポートされていない 接続先のネットワーク情報を取得して設定する機能も標準ではサポートされていない これらの機能は、XAUTHやmode-cfg(IKE-CFG)などの標準ではない機能を利用することで実現することが可能となる |
NAT、NAPTを使用する際の留意点
NAT/NAPTデバイスを経由した通常のIPsecの通信はAH、 ESP、IKE のどれにおいても以下の表のように問題が発生する。
アドレス 変換方式 | プロトコル | 暗号化モード | 説明 |
---|---|---|---|
NAT | AH | トランスポート | IPヘッダが認証の対象となるため、IPアドレス情報が書き換えられると改ざんされたパケットとみなされ認証エラーが発生 |
トンネル | |||
ESP | トランスポート | ・認証の対象にIPヘッダが含まれないため問題は発生しない ・暗号化の対象にTCP/UDPヘッダが含まれているため、変更することができない | |
トンネル | 認証の対象にIPヘッダが含まれないため問題は発生しない | ||
IKE | −−− | アドレスが変更されても特に問題は発生しない | |
NAPT | AH | トランスポート | IPヘッダが認証の対象となるため、IPアドレス情報が書き換えられると改ざんされたパケットとみなされ認証エラーが発生 |
トンネル | |||
ESP | トランスポート | 暗号化の対象にTCP/UDPヘッダが含まれているため、ポート番号の変更を行うとポート番号を読取れない。これによりカプセル化されたパケットはネットワーク機器を通過する事ができない。 | |
トンネル | |||
IKE | −−− | ISAKMPメッセージは、送信元ポートも宛先ポートもUDP500番を使用するとRFC2408で定められているため、ポート番号500を変換してパケットを転送することはできない。 |
このようにAH、ESP、IKEともに問題が発生するため、IPsecのパケットはNAT/NAPTデバイスを通過させるために、インターネットドラフトが提案されている。
NAPT環境への対応
IETFでは、NAPT環境下でIPsecを使用するためのインターネットドラフトが提案されている。現在多くのVPNベンダが採用しているドラフトは以下の2つである。
NAT Traversal(Negotiation of NAT-Traversal in the IKE)
- VPNゲートウェイとVPNクライアント間にアドレス変換が存在しているか否かの検証
- VPNゲートウェイとVPNクライアントのどちら側にNAT装置が存在するのかの検証
UDP encapsulation(UDP Encapsulation of IPsec Packets)
- NAT装置上でのNAPTに対応するために、経路上でNATあるいはNAPTが検出された場合にESPパケットをUDPでカプセル化する
- NAT装置上では、追加されたUDPヘッダ内のポート番号を変換する
NATトラバーサル
NAT/NAPTを使用しているネットワーク環境においてIPsec通信を問題なく実現するIPsecの拡張技術。ESPパケットをUDPでカプセル化することにより、この付加されたUDPヘッダは暗号化の対象となっていないことから、NAPT機器でポート番号の書き換えを可能にしている。
UDP encapsulation(UDPのカプセル化)
NAT などの影響で ESP が通過できない環境で IPsec の通信を確立するために、ESP を UDP でカプセル化して送受信できるようにする。このコマンドの設定は双方のルータで一致させる必要がある。 本コマンドは IKEv2 により確立された SA を伴う IPsec 通信には影響を与えない。
@: | UDPヘッダを付加してカプセル化 |
(ファイアウォールにACLを追加しなくても済むようにIKEと同じポートを使用する) | |
A: | 本来のIKEパケットと区別するためにNon-IKEフラグをセット |
(IKEパケットにNon-ESPフラグを付加して区別する場合もある) |
NAT(Network Address Translation)
ネットワークアドレス変換とは、IPアドレスを別のIPアドレスに変換する技術のこと。
プライベートIPアドレス(ローカルIPアドレス)を割り当てられたコンピュータに対し、プライベートIPアドレスとグローバルIPアドレスを変換して、インターネットにアクセス可能にする際に使われることが多い。
※@: | LAN側からインターネットへパケットが送信されるとNATの機能に |
より、送信元IPアドレスが変更される | |
※A: | 変更されたIPアドレス宛にパケットが届くと、元のIPアドレスに変更 |
される |
NAPT(Network Address Port Translation)
アドレスに加えてポート番号も変換するという技術。
プライベートIPアドレスをグローバルIPアドレスに変換する際、加えてポート番号も変換する。この時、プライベートIPアドレスごとに異なるポート番号に変換する。
※@: | LAN側からインターネットへパケットが送信されるとNAPTの機能に |
より、送信元IPアドレスが変更される | |
※A: | 変更されたIPアドレス宛にパケットが届くと、ポート番号から送信 |
したPCのIPアドレスが分かるので、そのIPアドレスに変更される |
 

