IPSec

今更新しいこと覚えようとしてどうなるとか言うな。
来年受ける時に役立つかもしれないじゃないか・・・orz
 

IPSecの概要

IP(Internet Protocol)の拡張規格。ネットワーク層でパケットをカプセル化し、暗号通信を実現する。暗号化処理はネットワーク層ですべて完結するため、アプリケーションに依存せず利用可能。
実装方法としては、VPNゲートウェイを用いる方法が代表的。拠点間接続において安全な通信を実現できる。この場合のポイントは

  • VPNゲートウェイの設置以外にネットワーク構成変更の必要がない
  • ファイアウォールではVPNおよびIPSecで使用するポートを開放する必要がある。
  • クライアント環境ではVPNクライアントソフトを導入する必要がある

ということ。
どっちかというと、VPNの暗号化通信機能をより詳しく説明している感じ?
 
或いはモバイルやリモートアクセスでVPNを利用する場合にも使用可能。
この場合はクライアントがソフトウェアでVPN接続からIPSecによる暗号化までを行うことになる。
とはいえ、これもネットワーク層で完結する話なのでアプリケーション側から見れば特に変な意識をせずとも利用可能。
 
逆に言えば、「現在の利用環境をなるべく変更せずにリモートアクセスの安全性を高めたい」という状況で出題されそうなトピック ということでもある。
 

IPSecの暗号化モード

トランスポートモード

End-to-Endの通信で利用される方法。IPパケットのペイロードTCPヘッダを暗号化し、IPヘッダは平文のまま送信。ホストが両方ともIPSecに対応している必要がある。

トンネルモード

IPヘッダも一緒に暗号化する方法。暗号化したパケットには新たにIPヘッダを付けて送信する。VPNゲートウェイを用いる場合はこちらが使われる。
具体的には、VPNで使用するIPヘッダが暗号化され、VPNゲートウェイで経由するネットワークに合わせたIPヘッダが付加されるのだと思われ。
 

IPSecによりもたらされる機能

  • アクセスコントロール
  • メッセージ認証
  • 送信元認証
  • 重複検知機能
  • 暗号化機能

最初の二つは最後の機能が実現してくれるということでたぶんOK。送信元認証と重複検知認証は、後述するAHやESPで実現されている。
 

IPSec関連の用語

SPD (Security Policiy Database)

IPSecにおけるパケット処理に関するルールをまとめたもの。
これによってアクセスコントロールなども可能。機能としてはパケットフィルタリング方式のファイアウォールに酷似。なお、入出力で2種類作る。
 

SA (Security Association)

IPSecによる論理的コネクションのこと。利用されるプロトコル(後述)ごとにSAが作成され、宛先アドレス・プロトコル・SPI(Security Parameter Index)による区別が行われる。
 

AH (Authentication Header)

通信データの認証に使用されるプロトコル。トランスポートモードにおいてはIPヘッダとTCPヘッダの間にAHが挿入され、トンネルモードでは新たに付加されるIPヘッダと一緒にAHも付加される。
AHにはMAC(Message Authentication Code :MACアドレスとは別物なので注意。命名者は誰だ?ややこしい・・・)が含まれ、これが認証の基準となる。
それぞれAHより後方が認証対象となるため、トランスポートモードではIPヘッダが認証対象にならない。(トンネルモードでもVPNゲートウェイが付加するIPヘッダは対象外だが・・・)
なお、パケット全体のICV(Integrity Check Value)を利用するため、NATによるアドレス変換などでトラブルが発生する可能性がある。(まさに出題対象?)
 

ESP (Encapsulating Security Payload)

通信データの認証と暗号化の機能を提供するプロトコル。ちなみにAHは認証のみで暗号化機能がない。ESPヘッダはAHと同じ位置に挿入されるが、ICVとトレーラと呼ばれる情報がペイロードよりあとに挿入される。
なおESPのICVはIPヘッダを対象外とするためNATによるトラブルが発生しない。(ただし、NAPTを使用すると問題が生じる)

IKE (Internet Key Exchange)

暗号化用の鍵を交換するための規格。またSAの作成にも携わる。
詳細は略。
ただし一つ押さえておきたいところとして、相手ホスト認証にIPアドレスを基準とする場合が多いということ。これはクライアントのIPアドレスが動的なリモートアクセスではいささか問題となる。一応すべてで同一の鍵を用いるという解決策があるが、セキュリティ上望ましいとは言い難い。
 

NATとNAPTの問題

NATはIPアドレスを変換するためにIPヘッダを書き換える。
NAPTはIPアドレスとポート番号を変換するためにIPヘッダ、TCPヘッダを書き換える。
書き換えれば当然ICVが変化する。ICVが変化すればメッセージ認証に失敗する。
ということは・・・正常なメッセージでも以上検出される可能性がある(というかすべてがフォールネガティブに陥ることになる)
解決策としてはもう一段階のカプセル化を行いUDPヘッダを付けるというものがあるものの、まだ標準化が行われていないので注意が必要。
情報セキュリティエンジニアのD氏あたりが午後問題で指摘しそうなポイントなので要チェック。
 
 
おわりに、酒飲んだ頭でまとめたので明日どこまで覚えているか不安。
明日これ読んだ俺はしっかりと復習すること。忘れずに。 以上。