WPA2の脆弱性について

今週月曜に,「WPA2の脆弱性」が話題になったので,
最低限語れるよう,キーワードを一通り学習することにした.
今回はいつも以上に嘘を言っている可能性があります.

まずは大元となっているサイトとしてはこちら.
KRACK Attacks: Breaking WPA2

テーマとなっているWPA2とは無線通信におけるプロトコル(仕様).
そこに問題を見つけましたよ,というのが,今回の発見の主旨となる.

通常の通信では,そこから更にHTTPSによるプロテクトをかけていて,
「だから言うほど脅威じゃないんだよ」という意見もあるが,
発見者は「HTTPS通信も突破された前科はあるので,油断しちゃダメ」
とは言っている.まあ,これはあくまで「warn(警告)」ではある.

Although websites or apps may use HTTPS as an additional layer of protection, we warn that this extra protection can (still) be bypassed in a worrying number of situations. For example, HTTPS was previously bypassed in non-browser software, in Apple's iOS and OS X, in Android apps, in Android apps again, in banking apps, and even in VPN apps.

今回の攻撃のメインターゲットとなったのは
WPA2プロトコル上の「4-way handshake」と呼ばれるやり取り.
3-wayは良く聞くけど,これは初耳だった.
IEEE 802.11i-2004 - Wikipedia
……うん,さっぱりわからん.
とりあえず,通信用の一時共通鍵(Pairwise Transient Key:PTK)を
アクセスポイントとクライアントの双方で生成するためのやり取り,
という理解で良いんじゃないかな.

なるほど!このPTKを解読しちゃう攻撃なんだな!
……と思ったら,そういうわけでもないみたい.

Note that our attacks do not recover the password of the Wi-Fi network. They also do not recover (any parts of) the fresh encryption key that is negotiated during the 4-way handshake.

今回の攻撃の最終目的は,あくまで
パケットの一意番号であるナンス(nonce)をリセットさせること,だそうだ.
そうすると,クラッカーに攻撃の絶好のチャンスを与えてしまう,らしい.
理由は良くわからなかった.

By forcing nonce reuse in this manner, the encryption protocol can be attacked, e.g., packets can be replayed, decrypted, and/or forged.

このナンスは,鍵をインストールした時点で初期化されるので,
無理やり再インストールさせることで,上記目的を達成できるとのこと.
以下あたりが詳細になるかな.ここだけ訳も書いておく.

It will install this key after receiving message 3 of the 4-way handshake. Once the key is installed, it will be used to encrypt normal data frames using an encryption protocol. However, because messages may be lost or dropped, the Access Point (AP) will retransmit message 3 if it did not receive an appropriate response as acknowledgment. As a result, the client may receive message 3 multiple times. Each time it receives this message, it will reinstall the same encryption key, and thereby reset the incremental transmit packet number (nonce)
クライアントは4-way handshakeの3つめのメッセージを受領した時点で鍵をインストールする.この鍵を用いて暗号化を行うことになる.しかし,アクセスポイントはクライアントから適切なACKメッセージを受領できなかった場合,メッセージロストの可能性を踏まえて4-way handshakeの3つ目のメッセージを再送する.結果として,クライアントはこの3つ目のメッセージを複数回受領することとなる.その都度,クライアントは同一の鍵を再インストールすることになるため,ナンスをリセットする

なお,LinuxAndroidで使われているwpa_supplicantは,
この攻撃に際してオール0の鍵を再インストールするらしいので,
更に致命的に危険,とのこと.

Our attack is especially catastrophic against version 2.4 and above of wpa_supplicant, a Wi-Fi client commonly used on Linux. Here, the client will install an all-zero encryption key instead of reinstalling the real key.

対策として,この再インストールを防ぐためのパッチ適用が必要.
そのあたりはIPAがメッセージ出しているので,そちらを参照した方が良いかな.
WPA2 における複数の脆弱性について:IPA 独立行政法人 情報処理推進機構


こういう脆弱性見つけたときってめっちゃ興奮するんだろうなぁ.