ガジェカツ~在宅SEのガジェット活動ブログ~

在宅SEな筆者がガジェットネタやIT、プログラミングネタを書き連ねるブログ

KRACKsについて簡単に解説してみた。

※qiitaからの移植記事です。元ネタはこちら
 ちょっと間違いもあると思いますが、簡単に概要だけふわっと理解するのにお使いください。

元ネタ翻訳している記事見つけました。要確認です!

https://qiita.com/Qithub/items/17871e7f26c308ef6514

具体的な攻撃

WPA2の暗号鍵を任意に再インストールさせる攻撃。
再インストールさせる鍵:ペア暗号鍵(PTK-TK)、グループ鍵(GTK)、整合性グループ鍵(IGTK)

攻撃の結果何ができるようになるのか

WPA2の暗号通信を解読したり、特定の暗号化の際は通信内容を改ざんすることができる。

なんで?

ここが一番理解の時間がかかったところ。
Q.
暗号鍵を任意に再インストールさせたからといって何故、通信が解読できるのか?
再インストールは平文で分かりやすいのか?

A.
平文で分かりやすいわけはない。
鍵をリセットしたことで通信ごとに利用されるワンタイムパスワード的なパケット番号*1が0になるため。
そのため、再インストールする前とまったく同じ通信をするとまったく同じ暗号化キーが利用される*2
その同じような通信を集めることで暗号鍵を導出させることができる。
ただし一般的に無線LAN*1と呼ばれる「事前共有キー」は最初のマスタ暗号生成でしか利用されないため、それはわからない。

1.nonce(ナンス)
2.過去にすでに使用されているnonceと同じ暗号化キーが使用されるということ(キーストリームの再利用)

もう少し説明すると?

WPA2は事前共有キーを元に暗号鍵を生成している。
ただその暗号鍵をそのまま使うと単純すぎて推測されうるため、パケット番号(nonce)も組み合わせて、暗号化キーを生成している。
それが「Group Transient Key(GTK)を生成するWPA2の4ウェイハンドシェイク」という初期化処理。

その初期化処理におけるキーの送信(メッセージ3)を収集しリプレイ攻撃をして再送信させることが出来るのが今回の脆弱性
→nonceのリセット

もう少し分かりやすくいうと?

WPA2の暗号鍵生成とその鍵の再配布を強制することで、そのタイミングでの暗号鍵を構成する要素のうち半分がわかる(nonce)
半分分かれば様々なパターンの暗号化データから残りの半分も足した”暗号鍵そのもの”が導出できる。

暗号鍵が導出出来れば事前共有キーはわからなくても、 *アクセスポイントとクライアント間の通信が傍受* できる。
もし暗号化アルゴリズムにWPA2-TKIP(RC4)を使っていれば *既存の脆弱性で通信を改ざん* もできる。

まとめ

KRACKsの解説がまだなかったため、元ネタをGoogle翻訳にかけて理解してきました。
よってこの記事は https://www.krackattacks.com/ 内の、
項「Key reinstallation attacks: concrete example against the 4-way handshake」をGoogle翻訳かけて理解した結果となります。
それに下記の参考文献(特に下から二つ目)を読みあさって書いた形となります。

一応各種日本語文献も読み漁ったため、大枠としてはあっているはずです。

鍵を再インストールさせてnonceをリセット。
nonce再利用によって暗号化キーの導出が容易になったので何度も繰り返して導出させる。

というのが大枠だと思っています。
とりあえずの殴り書きでもあるので間違っていたら突っ込みください。
個人的には高木浩光先生の解説を待っております。

参考文献

KRACK Attacks: Breaking WPA2
https://www.krackattacks.com/

WPA2の脆弱性「KRACKs」、同一Wi-Fi内で盗聴や通信内容の改ざんが可能 -INTERNET Watch
http://internet.watch.impress.co.jp/docs/news/1086486.html

WPA2の脆弱性「KRACKs」、ほぼすべてのWi-Fi通信可能な端末機器に影響 | トレンドマイクロ セキュリティブログ
http://blog.trendmicro.co.jp/archives/16162

WPA2の脆弱性「KRACKs」についてまとめてみた | Developers.IO
https://dev.classmethod.jp/security/wpa2-vulnerability-krack/

ストリーム暗号 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E6%9A%97%E5%8F%B7

Counter mode with Cipher-block chaining Message authentication code Protocol - Wikipedia
https://ja.wikipedia.org/wiki/Counter_mode_with_Cipher-block_chaining_Message_authentication_code_Protocol

wifi - How does a nonce reset allow for decryption? - Information Security Stack Exchange
https://security.stackexchange.com/questions/171381/how-does-a-nonce-reset-allow-for-decryption

cryptanalysis - How does one attack a two-time pad (i.e. one time pad with key reuse)? - Cryptography Stack Exchange
https://crypto.stackexchange.com/questions/2249/how-does-one-attack-a-two-time-pad-i-e-one-time-pad-with-key-reuse

*1:パスワード