Wireless・のおと

サイレックスの無線LAN 開発者が語る、無線技術についてや製品開発の秘話、技術者向け情報、新しく興味深い話題、サイレックスが提供するサービスや現状などの話題などを配信していきます。

前の記事:「WoWのはなし」へ

KRACKのはなし

2017年10月24日 10:00
YS
「WPA2のプロトコル設計根本に関わる脆弱性論文(KRACK)」が発表されて、無線LAN業界のみならずSNSなどでも騒がれているようです。今回はそのお話です。
はじめに
KRACK脆弱性の論文(ccs2017.pdf)のタイトルは「Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2」...「WPA2におけるNonce値の再利用を強制することによるキー再設定攻撃」とあります。これだけでは何のことだかわかりませんね。
あえて箇条書きで概略を示すと、KRACKで示されている脆弱性は次のようなものです。

1. マスター鍵(PMK)の解読ができるものではない。
2. 通信暗号鍵(PTK)の解読ができるわけでもない、ただし例外あり(後述)。
3. WEP脆弱性と異なり、受動的な傍受で解読できるわけではない。通信の中継、少なくとも妨害を前提としている。
4. WEP脆弱性と異なり、暗号強度そのものの脆弱性ではない。脆弱性はAP接続直後、あるいは鍵更新に伴う4-way handshake手順に関連する。
5. 4-way handshake手順はPSKでもEAP認証(WPA2-Enterprise)でも基本的に同じなので、脆弱性のある実装系ならば認証方式に関わらず攻撃を受け得る。

ということです。では「何ができるのか(どうするのか)」というと、

A. 攻撃は基本的に通信仲介(Man in the Middle attack, MitM)を前提としている。例えば真APと同じMACアドレス、同じSSIDで異なるチャネルの偽APを設置し、何らかの方法でクライアントをそこに接続させる。
B. 偽APは基本的に真APとクライアントの間を素通しで中継する。ただし4-way handshakeのなかで、APから返送されるMSG3(r+1)はあえて中継せずに保持する。
C. MSG3(r+1)が遮断されるので、クライアントからのMSG4は返らない。真APは一定時間後にMSG3(r+2)を再送する。偽APは保持しておいた1番目のMSG3(r+1)と2番めのMSG3(r+2)を立て続けに送信する。
D. クライアントは1番目のMSG3(r+1)を受けて平文MSG4(r+1)を返送したあと暗号化モードに遷移するが、その直後に2番目のMSG3(r+2)を受ける。クライアントはNonce=1で暗号化したEnc1{MSG4(r+2)}を返送したあと同じ鍵で暗号化モードに再遷移し、そのときNonce=1に再設定される。
E. 次にクライアントが暗号化パケットを送信するとき、先ほどEnc1{MSG4(r+2)}の暗号化に使ったのと同じPTK・同じNonce=1で暗号化して送信する(Enc1{Data...})。
F. 攻撃者はMSG4(r+1)とEnc1{MSG4(r+2)}の差分から暗号パターンを再生し、Enc1{Data...}に適用することでDataの内容を解読し得る。

ということです。解読以外にも再送や偽造、応用でグループ鍵GTKや802.11R高速ローミング(FT)も攻撃できるとありますが、詳細は省きます。
つまり、わざわざ偽APを設定して「何らかの方法で」接続を誘導して、「解読したいデータの送信直前にMSG3再送を送り込む」ことで「そのパケットが解読できる(かもしれない)」というものです。「偽APに接続させて中継する」以外にも、正規の通信をMSG3送信のタイミングで妨害し「偶発事故に見せかけて」再送を発生させることでNonce再利用を起こすこともできるとありますが、この場合は「解読したいパケットの送信直前にMSG3を注入する」選択ができないため、攻撃者にとって欲しい情報を入手できる可能性はぐっと狭まります。


WEP脆弱性との違い
WEPではAPごと(正確にはAP群、ESSごと)に同じ鍵を共有し、全ノードに対する送受信が同じ鍵で暗号化されていました。パターン反復を防ぐためIVカウンタが使われていましたがWEP-IVは32bit幅で、これが最大値(0xffffffff)に達すると0に周回したので、受動的に傍受しているだけで解読データを収集することができました。しかもIVのビットパターンにはとりわけ鍵推定が容易な「Weak IV」が知られているため、通信量次第では分単位の時間でWEP鍵を逆算することができ、いちど逆算されると全ネットワークの通信が解読可能になってしまいました。
WPAではマスターキー(PMK)にMACアドレスなどの要素を加え、ノード毎に異なる暗号鍵(PTK)を作って暗号化に用います。なので1ノードのPTKが解読できたとしても、他のノードの通信は解読できません。WPAの暗号化では48bitのPN(Packet Number)値を含むNonce値が使われ、PNが最大値に達すると0には周回せずPTKの再設定(Re-Key)が行われます。なのでWEPのような「傍受によるパターン蓄積とそれに基づく鍵の逆推定」はできない、という理屈でした。

今回のKRACK論文は、特定の条件(4-way handshakeにおけるMSG3の再送信)においてPN値(ひいてはNonce値)のリセットが行われるので、同じ鍵・同じNonce値で異なるデータを暗号化して送信することを意図的に起こせる、という指摘です。ただしNonceの再利用があったからといって、すぐさま通信暗号鍵(PTK)が推定できるわけではありません。それを何千回か起こせばPTKが推定できるかも知れませんが、仮にPTKが判明してもマスター鍵(PMK)が推定できるわけではなく、PMKがわからない限り(WEPのように)全ネットワークが解読できるようにはなりません。あくまで、「解読したいパケットの直前にMSG3再送を注入することに成功すれば、直後に送信される暗号化パケットの内容を解読できる(かもしれない)」ということです。


おまけの脆弱性
KRACK論文には特に重篤なセキュリティ脆弱性として、上記2.で記した「例外」を挙げています。wpa_supplicantのv2.5および2.6にはバグがあり、MSG3の再送があるとPTKにオールゼロ値が設定されてしまうというもので、原文では「セキュリティを完全に無効化してしまう(completely voiding any security guarantees)」と書かれています。
「暗号鍵に既知の値が設定されてしまう」というのは確かに重大問題ではありますが、それが「機密だだ漏れ」になるでしょうか。この状態ではAP側に正規のPTK・子機側にゼロ鍵が設定された状態となるので、互いに相手の送ってくる暗号を復号できず通信が成立しません。これではIPも通らないのでDHCPによるアドレス取得にも至らないはずです。間に介在する偽APはゼロ鍵を使って子機と通信することができますが、偽APも正規のPTKを知らないのでやっぱり真APとは通信できず、「ゼロ鍵のまま知らん顔してパケットを中継し続ける」こともできません。偽APが真APを介さずに有線LANの基幹回線に接続できれば「知らん顔してパケット中継」もできるかもしれませんが、攻撃者(盗聴者)が基幹回線に接続できる状況での無線LANハックというのはどれだけ実現性があるものでしょうか。
この「All-Zero Encryption Key Vulnerability」も理論上は大きな穴であり塞いだほうが良いことは確かなのですが、今すぐその穴を突いて盗聴解読ができるかというと、そういう訳ではないようです。


まとめ
今回のKRACK論文、「既存の実装系は全て影響を受ける」「WPA2のプロトコル設計根本に関わる脆弱性」という枕詞でネットではかなり騒がれていましたが、実際に読んでみると「手間がかかる(偽APの設置と接続誘導が前提)割に大して有効な攻撃方法じゃない(PTKやPMKが解読できるわけじゃない)」と感じました。
「堤防も蟻の穴から」という言葉もあるように、この脆弱性を踏み台としてより高度な攻撃に持ち込む(TCP SYNに狙いを定めてMSG3を再送し接続先を偽のサーバにすり換えるとか)ことも理論上不可能ではないはずなので、塞いだほうが良いことではありますが、WEP脆弱性の時のように「解読ソフトを入れた機器を盗聴対象ネットワークの側に置いておくだけで全通信内容が筒抜けになる」という大穴ではなかったようです。

最新の記事

カテゴリ

バックナンバー