例によってリレーブログの時間です!前の僕の記事はこれ、前回の方のブログはこちらになります。
今回のテーマは「KRACKs」です。
KRACKsとは
KRACKsとは、Key Reinstallation AttaCKs(鍵再インストール攻撃)の略称です。2017年10月に公表されました。
内容としては、スマホなどの無線LANクライアントがWPA2でアクセスポイントと接続する際の「4ウェイハンドシェイク」という処理の仕様における脆弱性です。
「4ウェイハンドシェイク」では、クライアントがアクセスポイントとの間で暗号化通信を行うために認証や暗号鍵に関するメッセージをやりとりします。名前の通り、4つのメッセージをやりとりするものです(話の都合上1つ目、2つ目のメッセージについては省略します。)3つ目のメッセージがアクセスポイントからクライアント側に送られるもので、このメッセージによってクライアントに鍵がインストールされ、4つ目のメッセージが3つ目のメッセージの確認応答となっています。
4つ目のメッセージを送った後、クライアントは暗号化通信を開始します。
ここで、最後の4つ目のメッセージを中間者攻撃によって意図的に止めると、アクセスポイントは3つ目のメッセージがクライアントに届かなかったと判断して再送します。
クライアントは、3つ目のメッセージを受け取るたびに鍵を再インストールして暗号化通信のための処理をやり直すので、暗号文を送るのに使われるナンス(Number used ONCE: nonce、本来は一度しか使われない数)に同じものが使われてしまいます。
この3つ目のメッセージを意図的に再送させ続けることで、クライアントからアクセスポイント側へは本来は時間とともに変わるはずであったのに同じナンス、同じ秘密鍵で暗号文が送られることになるので、暗号化されたフレームを解析すれば暗号化パターンがわかり、通信データを盗聴できてしまいます。
対策
この脆弱性が発覚してから、セキュリティパッチが配布されるなどして対策が進んでいます。
また、webサイトを見るときはHTTPS(このSはセキュリティのSで、暗号化通信がされる)で接続していれば、WPA2での暗号化が破られても、HTTPSの暗号化はされているので、安全性が高まります。(WPA2とHTTPSで二重の暗号化)
また、WPA2の脆弱性に対処したWPA3という規格も2018年に発表されました。
WPA3は、4ウェイハンドシェイクの前にSAEとよばれる楕円曲線を用いたハンドシェイクの仕組みが導入されたもので、仮にパスワードが漏洩しても、そのときの鍵共有の結果はわからないものになっており、これによってKRACKsを無効化できるようになりました。
とはいえ、WPA3にも脆弱性が発見され、それに対策して...というのは続いています。
参考文献
次回はこちらです。