■ IP通信のセキュリティ
おね〜さんと、
ほげたんのっ!!
3 Minutes Networking、
Supplement !!
さってと、今回からはIP通信のセキュリティについてのお話〜。
わ〜、パチパチパチ〜。
具体的に言うと、IPsecのお話。
ん〜っと、まず。IPネットワークは歴史的な経緯から、「セキュリティ? なにそれおいしい?」だったのは知ってる?
歴史的な経緯? ARPANETが始まりだったって話?
もともとが軍用・研究用だったからとか、いろいろあって初期のTCP/IPプロトコルには、まぁ、そのほとんどが今でも使われているんだけど、セキュリティの発想がないプロトコルが多いわけね。
あー、そうかも。HTTP、FTP、TELNET、DNS、SMTP…。確かにないね。
んでね、「それってまずくね?」って話になったわけ。インターネットの商業利用もはじまり…あれ?商業利用はそのあとだったっけな? まぁ、ともかく。IPネットワークのセキュア化が必要だと論じられたわけね。
TCP/IPとインターネットの歴史は各自調べること。
そうね。あんまり詳しく話すとそれだけで1回終わっちゃうからね。
で、「IPネットワークのセキュア化」って簡単に言ったけど、具体的に「セキュア化」って何?
セキュリティを考慮したネットワークにすること?
いや、もうちょっと具体的に? PKIの話を思い出して?
PKIの話? あぁ、盗聴・改ざん・なりすまし・否認の脅威を防ぐってこと?
そうそう。なんか「セキュア」っていうと、盗聴防止の暗号化だけの話になりがちだけど、そうじゃないと声を大にして言いたいわけね。
あ、あぁ。確かに「通信のセキュア」っていうとそうなりがちだよね。
ともかく、「盗聴・改ざん・なりすまし・否認」という脅威の対抗策は?
あーっと、「暗号化」「署名」「認証」、だよね。
そうね。ただ、「署名」はPKIでの手法だから、IPsecでは別の方法を使うけど、それはまぁ、また後の話ね。んでね、IPsecの「セキュア化」の特徴なんだけど。「盗聴・改ざん・なりすまし・否認」を行うだけなら、PKIでもいいじゃない?でもPKIには弱点があるわよね。
弱点? なんかあったっけ?
PKIって結局なんだったっけ?
「公開鍵暗号化による暗号・署名を正しく使うための電子証明書とCAによる信頼システム」だよ。
そうよね、つまり、「システム」として存在しないとダメってこと。単独では使えない。ちゃんとCAから何からそろってないと動かないってこと。
ん〜、「インフラ」だもんね。基盤がないと確かにダメだ。
でしょう? IPsecのいいところはそこらへんがなくてもちゃんと動くってこと。
それと、PKIはアプリケーションやプロトコルに組み込まれる必要があるでしょ。
ん〜っと、そうかな?
電子証明書の使用を前提に作られていないとダメなのがPKIなんだけど。IPsecは上位プロトコルに対し透過的ってのが最大の特徴かな?
上位プロトコルに透過的? どういう意味?
つまり、上位プロトコルの変更なしで使用できるってこと。レイヤ3だけでおさまってるってことね。
例えば、同じセキュリティプロトコルの代表格のSSL/TLS。これは、HTTP、FTP、TELNETなどをセキュア化してくれるけど、ユーザが「セキュア化を行うことを明示的に示す」ことが必要よね?
ん、ん〜。そうかな。「http://」を「https://」に変えたり、TELNETクライアントじゃなくてSSHクライアントを使ったりしなきゃダメだよね、確かに。
つまり、ユーザがSSL/TLSを使った上位プロトコルを選んでる(変更している)ことになるでしょ。
一方、IPsecは上位プロトコルはそのままで、HTTPならHTTPのままでセキュア化が可能ってことね。
[FigureSP21-01:IPsecによる透過的なセキュア化]
大雑把に図示すると上図のようになるのね。
ん〜っと、つまり。TCP/UDP通信そのものをセキュア化するIPsecと、アプリケーションプロトコルをセキュア化するSSL/TLS?
ま、今のところはその解釈でいいわ。実際はIP通信もセキュア化しちゃったりするけど。
だから、普通SSL/TLSはTCPのプロトコルばっかりしかセキュア化しないけど、IPsecならUDP通信もセキュア化しちゃうわけよ。
そういえば、SSL/TLSでセキュア化するのって、TCPばっかりかなぁ。
でしょ。はい、とりあえずまとめるわよ。
IPsecはIP通信を透過的にセキュア化する。で、セキュア化ってなんだっけ?
んと。つまり、盗聴・改ざん・なりすまし・否認をIP通信で防ぐってこと?
おけおけ。まずは「IPsecが何のためにあるのか」ってことを把握しといてね、という話。
了解だよ、おね〜さん。
■ IPsecの構造
さてさて、実際にIPsecが行うことについて説明しましょ。
そ・の・ま・え・に。「認証」という言葉の定義をしないと。
んあ? 認証? オーセンティケーション? あれでしょ、「ユーザが誰であるか」とか「送信元が誰であるか」を調べることでしょ? 「ユーザの身元を照合する」って前いってなかった?
あー、うん。Kerberosの時はそう言ったかな? まぁ、それは間違ってないんだけど。
より正確に言うとね、正当であることを証明すること、ね。
正当であることを証明する? 「ユーザの身元を照合する」=「ユーザが認められた正当なユーザであることを証明する」って意味?
そうそう。でね、「何が」正当であるか証明するかによって、認証には種類があるんだけど、IPsecでの「認証」は次の2つね。
- ユーザ認証 … ユーザの正当性を証明する
- メッセージ認証 … メッセージの正当性を証明する
ユーザ認証はわかるけど、メッセージ認証? メッセージの正当性を証明する?
そう、つまりメッセージ(データ)が改ざんなどされていない=正当であるってこと。それを証明するのが、メッセージ認証。つまり?
つまり? … メッセージ認証により、改ざんを防止するってこと?
そゆことね。つまり、「盗聴・改ざん・なりすまし・否認」を防ぐために、IPsecは次の事を実行するってこと。
- 暗号化 … 盗聴防止
- 認証 … なりすまし・改ざん・否認防止
- アクセス制御 … 特定の送信元・宛先、プロトコルを許可/拒否する
ふむふむ。暗号化と、認証と、アクセス制御?
そう。宛先や送信元、使用プロトコルを見てそれらのIP通信の許可/拒否を決定するってことね。
さて、実際にIPsecの話に移るけど。ほげたん、IPsecとは何?
いや、それを教えてもらおうとしてるんだけど?
そういやそうね。え〜っと、RFC的にはRFC4301で定義されている、Security Architecture for the Internet Protocolの事ね。 ▼ link
セキュリティアーキテクチャ フォー IP? IPのためのセキュリティアーキテクチャ?
そう、「IPのセキュリティ設計」とでも訳すのがいいんじゃないかな?
アーキテクチャ。プロトコルじゃないんだね?
う〜ん、超絶意訳すると、「IPのセキュア拡張手法」かな? プロトコルじゃないわね。
拡張手法?
そう。現在あるIPはそのままで、セキュアを追加したって形かな? だから、「拡張」ってわけね。
IPを置換して使うわけじゃなくて、IPはそのままでそれに追加するってことだね。
うん、そう。んで、簡単に言うと、IPsecは4つの技術から成り立ってるの。
技術 | 主なRFC | |
---|---|---|
セキュリティプロトコル | IP認証ヘッダ[IP Authentication Header] | RFC4302 |
IP暗号化ペイロード[IP Encapsulating Security Payload] | RFC4303 | |
鍵管理 | インターネット鍵交換[Internet Key Exchange] | RFC4306 |
セキュリティアソシエーション [Security Association] | RFC4301 | |
認証・暗号化アルゴリズム | RFC4305、RFC4307など |
[TableSP21-01:IPsecの4つの技術]
ま、普通は省略して、AH、ESP、IKEって呼ばれる3つのプロトコルと、それを管理するSA。そして、それ用の認証と暗号化のアルゴリズムからIPsecは成立しているってことね。 ▼ link
あぅ? さっきプロトコルじゃないって。あと、SAって何?
IPsecそのものはプロトコルじゃないわよ。AHやESPやIKEは、IP通信のセキュア化のためのIPsecという拡張技術で使われるプロトコルってこと。あくまでもAHなどはIPsecのパーツであって、全体じゃないの。
う〜ん。じゃあSAは? セキュリティ協会?
あはは。確かにAssociateionは「協会」の意味もあるけど、ここではそうね、「つながり」とか「かかわり」とかの意味の方が理解しやすいかな。
「セキュリティ」の「つながり」?
そうね。鍵管理やセキュアプロトコルを使うための「つながり」がSAかな? もしくはセキュアに作られた通信路そのものがSAと呼ぶかな。
う〜ん。ますますわからない。
そうねぇ。SAは「つながり」っていったでしょ? ぶっちゃけると、IPsec用のコネクションがSAかな。
コネクション? TCPのアレ?
そう、TCPは「信頼性を保証する通信」のため、コネクションを設定するわけでしょ。一方、IPsecは、「セキュアなIP通信」のためにコネクションを設定するってこと。
え? いや待って。IP自体はコネクションレスだよ?
それはTCPでも同じよね。
う…、確かに。さっきの図の[FigureSP21-01:IPsecによる透過的なセキュア化]を見ると、IPの上にIPsecがあるから、立場的にはTCPとIPsecは同じ? 「IPを使った通信の信頼性を保証する」TCPと、「IPを使った通信のセキュア化」のIPsec…。
そういうこと。つまり、セキュアのための通信路がSAと考えておくといいかな? TCPみたいに事前にスリーウェイハンドシェイクのようなことはしないけどね。
あ、しないんだ。じゃあどうやってコネクションを設定するの?
それはまたSAを説明するときに話すわ。そして、そのSAによって設定されたコネクションを使って、AH/ESPを使った通信が行われるわけね。イメージ的にはこんな感じ?
[FigureSP21-02:SAとセキュアプロトコル]
SAでできたコネクションの中をAH/ESPのセキュアプロトコルでセキュア化されたデータグラムが流れる?
TCPのコネクションもそうでしょ? スリーウェイハンドシェイクにより、「仮想的な通信路」をつくりだしてるわけだから。「信頼性が保証された仮想的な通信路」が「TCPコネクション」ね。
その「TCPコネクション」の中を流れるTCPセグメントは、「信頼性が保証される」…。
一方、IPsecのSAにより作られたコネクションは「セキュアのための仮想的な通信路」なわけ。だから?
だから、SAのコネクションの中を流れるデータグラムは「セキュア」である?
ま。イメージ的な話ね。そうねぇ、役割的にいえば、SAはTCPのスリーウェイハンドシェイクかな?スリーウェイハンドシェイクは、ホスト間の「信頼性を保証」するための事前のやり取りでしょ。
じゃあ、SAもホスト間の「セキュア化」のための事前のやり取り?
実際はやりとりしないけどね。スリーウェイハンドシェイクにより、信頼性保証のための「合意」を行ってるわけでしょ。SAもセキュア化のためのホスト間の合意ってところかな?
合意…。
スリーウェイハンドシェイクでの合意により、コネクションが生成される。これと同じようにSAでの合意により、コネクションが生成される、ってこと。詳しくは後でね。
う、うん。とりあえず、SAによりコネクションを作るんだね。
■ 2つのプロトコル・2つのモード
さて、SAによって作られた「セキュアなコネクション」で、実際のデータグラムが運ばれるわけだけど。この時、AH、ESPを使って運ばれるわけね。
さっき出てきた、IPsecの「セキュリティプロトコル」の、AHとESPだね。
そう。この2つがIPsecでのデータのやりとりの、まぁ、プロトコルだから手順ってわけね。
ふ〜ん。どう違うの?
AH、ESPでは実現するセキュリティが異なるの。だから、機能に合わせてどちらかを選ぶことになるわけね。
セキュリティ機能 | AH | ESP |
---|---|---|
送信元IPアドレスの改ざん防止 | ○ | |
ペイロードの改ざん防止 | ○ | △ |
送信元認証 | ○ | ○ |
アクセス制御 | ○ | ○ |
リプレイ防止 | ○ | ○ |
ペイロードの暗号化 | ○ |
「ペイロードの改ざん防止」のESPの△はどういう意味?
あぁ、ESPではオプションなのよ。
ふ〜ん・・・…。あんまり変わらないような気がするけど?
違うでしょ、全然。つまり、改ざん防止(メッセージ認証)を持つAHと、機密性保護(暗号化)を持つESPってこと。
あ、なるほど。でも、ペイロードの改ざん防止はESPでも持つんでしょ?
もともとはAHだけだったらしいんだけどね。ESPの方でも必要ってことになって、オプションとして使えるようになったらしいわよ。だから、基本は認証のAH、暗号化のESPね。
で、どっちかを使うってことだね。
そういうこと。どちらを使うのかは「セキュリティポリシー」で決まるんだけど、それは先の話にしましょ。
あい。
で、この2つのセキュリティプロトコルは、2つのモードで動作するの。
- トランスポートモード
- トンネルモード
モード? トランスポートとトンネル?
じゃ、まずトランスポートモードから。
[FigureSP21-03:トランスポートモード]
え、えっと〜。AH/ESPヘッダを挿入する?
そう、AHなら改ざん防止の認証情報のAHヘッダ。ESPならペイロードの暗号化と、そのための情報のESPヘッダね。
AH/ESPヘッダにより、ペイロードがセキュア化される?
そゆこと。トランスポートモードはペイロードに対し、認証/暗号化するってことね。
「トランスポートモードはペイロードをセキュア化する」。うん、わかる。
じゃあ、トンネルモードは?
トンネルモードはこっち。
[FigureSP21-04:トンネルモード]
セキュリティゲートウェイ?
IPsec機能を搭載した中継機器ね、普通はルータやファイアウォール、UTMがなるわ。
んで、IPパケット全体に対し、セキュア化するんだ。
そうね、セキュリティゲートウェイ間でIPパケット全体をセキュア化するのがトンネルモードってことね。
……VPN?
そうね、VPNで主に使われているのがトンネルモードね。で、セキュリティゲートウェイ間の、パケットがセキュア化されている部分が、IPsecトンネルってことね。ま、VPNについてはまた別の機会で。
うん。了解。
つまり、このモードとセキュリティプロトコル、それぞれ2つずつあるわけだから。合計4パターンあるわけね。
「AH・トランスポート」「AH・トンネル」「ESP・トランスポート」「ESP・トンネル」の4つだね。
そういうこと。ん〜、まず最初はこんなもんかなぁ。
というわけで、IPsecの話をしばらくするからね。
結構大変そうだね。
ん? そうかな? そうかも。ま、がんばってみましょ。
あいあい。
んふふ。じゃ、また次回。
おね〜さんと、
ほげたんのっ!!
3分間ネットワーク、
サプリメントでした〜〜〜っ!!