WPAの無線LANセキュリティ攻撃を避けるには
WPAのセキュリティが破られたことにより、企業ネットワークの安全が脅かされる恐れがある。この暗号攻撃の被害に遭わないためにはどうすればいいのか?
[Lisa Phifer,TechTarget]
http://techtarget.itmedia.co.jp/tt/news/0901/26/news01.html
IEEE 802.11の暗号化技術WEP(Wired Equivalent Privacy)が破られて7年になる。2003年後半以降は新たにWi-Fi認定された全製品に、WEPの初の代替であるWPA(Wi-Fi Protected Access)が義務付けられた。しかし先ごろ、WPAのクラッキング、具体的にはTKIP(Temporal Key Integrity Protocol)に使われているMessage Integrity Check(MIC)に対する新手の攻撃が報告された。この攻撃はWPAを使った無線LANを葬り去るものではないが、無線LANの防御において避けるべきものとして特筆に価する。
これまでの経緯
最新の攻撃に対応するためにはWEP、WPA、WPA2の違いを認識し、WPAクラッキングが802.11標準をどのように進化させたかを知る必要がある。
WEP
WEPはRC4(秘密鍵暗号化方式)を使って無線アクセスポイント(AP)とクライアントとの間で交わされるデータにスクランブル(暗号)を掛け、CRC(Cyclic Redundancy Check)チェックサムを適用してエラーを検出する。WEPで暗号化されたパケットは誰でも記録できるが、WEP鍵で暗号を解除しない限り判読はできない。残念ながら、攻撃者はすぐにWEP暗号パケットを分析してその鍵を推定(クラッキング)する方法を見つけた。すべてのクライアントは特定のAPに送られる全パケットの暗号化に同じWEP鍵を使っているため、この鍵を破れば送信者が誰であれ、以後すべてのパケットの暗号を解除できる。結果として、WEPでは現実的にIEEE 802.11のデータ盗聴を防ぐことはできない。
TKIP
TKIPはWEPによって欠陥が生じた旧式のAPとクライアントのための応急処置として作られた。すべてのパケットの暗号化に同じ鍵を使うのではなく、TKIPではパケットごとに違う鍵でRC4を利用する。これらパケットごとの鍵によってWEP暗号クラッキングは無力化される。加えて、TKIPはMICを使い、再生されたり改ざんされたりしたパケットを見つけ出す。傍受したり手を加えたりしたTKIP暗号パケットは誰でも送信(つまり挿入)できるが、パケットが運んでいるデータがMICとチェックサムで一致しないため、こうしたパケットは脱落する。TKIPを使っているAPは通常、不正なMICを最初に受信したときにエラーリポートを送信する。2番目の不正パケットが60秒以内に届いたら、APはそれ以上の通信をやめて無線LANの「鍵再生」を行い、MIC鍵とパケットごとの暗号鍵生成に新しいペアワイズマスターキー(PMK:Pairwise Master Key)を使うよう全クライアントに指示を出す。
これにより、WEPが残したセキュリティホールはふさがれた。すべてのWPA認定製品はTKIPとMICを使ってIEEE 802.11のデータ盗聴、改ざん、再生攻撃に対抗できる。しかし2003年の時点で、このセキュリティを提供するためのもっと効果的かつ手堅い手段があることを、IEEEは知っていた。TKIPとMICの代わりにAES(Advanced Encryption Standard)を使うCCMP(Cipher Block Chaining Message Authentication Code Protocol)をIEEE 802.11iが定義しているのはそのためだ。すべてのWi-Fi認定製品はWPA2(Wi-Fi Protected Access Version 2)対応が必須となり、ユーザーは無線LAN用の適切なセキュリティを選べるようになった。WPA対応のAPが旧式のクライアントと通信する場合はTKIPまたはAES-CCMPの混在を許容することもあるが、新しいクライアントとのみ通信する場合はAES-CCMPに固定できる。
WPAの完全性
暗号攻撃とその背景となる数学に興味がある向きは、研究者のマーティン・ベックとエリック・テューズの両氏が「PacSec 2008」で発表した「Practical attacks against WEP and WPA」(PDF文書)の一読をぜひお勧めする。本稿では被害防止の前段として、この最新の攻撃で何ができて何ができないのか、さわりの部分のみを紹介する。
過去数年でWEPクラッキングはますます巧妙化し、「Korek」「PTW」「Chopchop」といった奇抜な名称を付けた新しい手段を使い、WEP鍵を破る速度も大幅に速くなった。ベック、テューズの両氏は2008年11月の論文で、高速Chopchop式攻撃を使ってWEP鍵でもTKIP PMKでもなく、MIC鍵を破る方法を紹介した。MIC鍵を手にした攻撃者は、無線LANクライアントに送信される特定のTKIP暗号パケットに、手を加えたバージョンを挿入できる。例えば攻撃者がクライアントに偽のARP(あて先MACアドレスを問い合わせるプロトコル)レスポンスを送り、違うLAN接続機器にパケットを誤送信させることができてしまう。
この攻撃はどのように機能するのか。第一段階として、ほぼすべてが既知のデータを含んだTKIP暗号パケットを傍受する。ARPメッセージが好都合なのは、発信元とあて先のIPアドレスの末尾、そしてもちろんMICとチェックサムを除けば、簡単に認識できて予測可能なデータを運んでいることだ。
次にその暗号化されたパケットを再生し、正しいMICとチェックサムを推定する。もしチェックサムが違っていれば、APは送信エラーと判断し、黙ってそのパケットを破棄する。チェックサムが正しくてもMICが誤っていれば、APはMIC異常リポートフレームを送信する。このプロセスを繰り返して正しいMICを推定し、その時点で攻撃者はデータとMICの両方が分かるため、簡単にMIC鍵を算出できるようになる。
しかし実際の攻撃では、防御が働いて鍵が変更されないよう、素早く鍵を推定できなければならない。鍵が作り直されるのを防ぐためには、1分当たり1件の不正MICを送信すればいい。しかしWi-Fi Multimedia(WMM) Quality of Service(QoS)をサポートしているAPでは、各プライオリティレベルごとに違ったカウンタが適用され、1分当たり8件まで(プライオリティ当たり1件)、鍵が作り直されることなく不正MICが許容される。不明だった(MICとチェックサムの)12バイトはこうして12分足らずで推定できる。これはほとんどのWPA対応APが使っているデフォルトの鍵再生間隔よりもはるかに短い。
ベック、テューズの両氏はこの手法を確立しただけでなく、「tkiptun-ng」というコンセプト実証攻撃ツールを作成した。tkiptun-ngを使えば、大部分が分かっているパケットのMIC鍵を取得し、次に別のaircrack-ngツールを使ってそのパケットに手を加えたバージョンを再挿入して、WPAのインテグリティプロテクションの仕組みをかわすことができる。取得したMIC鍵は、APからターゲットとするクライアントに送信されるパケットにのみ、次に鍵が作り直されるまで適用できる。さらに、MIC鍵はほかのTKIPパケットの盗聴には利用できない。そのデータは依然、パケットごとの暗号鍵で守られている。
WPA攻撃を克服するには
自明のことから始めよう。この攻撃の被害に遭うのを避ける最善の方法は、TKIPの利用をやめることだ。この攻撃で悪用されているMICはCCMPでは使われていない。従って最も安全なのはWPA2を使い、AES-CCMPのみを許容する設定にすることだ。エンタープライズにおけるWPAとWPA2の導入に関するこのホワイトペーパー(PDF文書)では、同じ名前のネットワーク(SSID)上でTKIPとAES-CCMPクライアントの共存が可能になるWPA2混合モードを避ける方法について解説している。
WPA2はWi-Fi認定製品で長年義務付けられてきたため、多くの無線LANではそれを固持するという選択肢も十分あり得る。通常の機器入れ替えサイクルに従って古いクライアントをTKIPから移行させるなら、新手のインテグリティ攻撃は、古い結び付きを断ってTKIPを完全に排除するために必要な動機になるかもしれない。
しかし、無線LANに旧式のWPAオンリーの端末があり、WPA2対応の端末と入れ替えることができない場合でも、次のように対応できる方法はある。
対処法その1
AP(または無線LANコントローラー)にMIC失敗リポートを無効にできるオプションがあれば、APをその設定にする。今回取り上げたインテグリティ攻撃は、不正チェックサムと不正MICを区別するためにMIC失敗リポートを必要とする。リポートを無効にしておけば、無線LANに実質的な影響を及ぼすことなく攻撃をかわせる。
対処法その2
AP(または無線LANコントローラー)でWPA鍵作り直しの間隔を設定できる場合、間隔を短くして攻撃者にすべてのMIC鍵を推定される前にPMKが更新されるようにする。ベック、テューズの両氏は120秒を奨励している。Cisco SystemsではIEEE 802.1Xを使った無線LANのRADIUSサーバに与える影響を抑えるため、300秒を奨励している。
対処法その3
AP(または無線LANコントローラー)にWMMを無効にするか、使われていないプライオリティレベルに送られたパケットを破棄できるオプションがあれば、MIC鍵の推定にかかる時間を引き延ばせる可能性がある。しかし、攻撃を防ぐためにはこれだけでは不十分で、無線LANにとってセキュリティ的、機能的に優れた選択ではないかもしれない。
鍵再生の頻度を高めることによって引き起こされるオーバーヘッドを抑えるため、WPAクライアントをWPA2クライアントから切り離したいと思うかもしれない。WPAクライアントを専用のSSIDに移せば、その引退を計画する一助となり、どのデバイスがインテグリティ攻撃を受ける可能性があるかを把握しやすくなる。
これらSSIDをさらにじっくり監視すれば、特定のクライアントでチェックサムとMICエラーの急増がないかどうかチェックできる。こうしたエラーは無線LANには付き物で、それ自体は警戒を要するものではない。しかし、無線侵入防止システム(IPS)でtkiptun-ng攻撃の特徴を検出できるようになるまでに、そう長くはかからないかもしれない。
最後に、メッセージの完全性を保証する手段はWPAとWPA2だけではないということも覚えておきたい。IPsecやSSLのような上位層VPNプロトコルは、専用の鍵が掛かったメッセージ認証コードを適用して不正を検出する。上位層VPNプロトコルはARPのようなLANブロードキャストパケットには適用できないが、WPAインテグリティチェックに頼ることなくすべてのTCP/IPパケットをインテグリティ攻撃から守るために利用できる。