WPA2弊社でもWi-Fiの技術を扱っていますので、WPA2の脆弱性について書かれているKRACKの論文を確認しました。影響についてはインターネットのいろいろなところで書かれてますので、技術的な点について説明をしたいと思います。CCMPでは、テンポラリー鍵(以下PTK)とPacketNumber(以下PN。48bit)とMACアドレスを種に、AESのアルゴリズムを動かしています。そのAESのアルゴリズムから暗号系列が出てきますので、それと平文のXORを取って、暗号文としています。ここで、PTKとMACアドレスはセッション中は固定ですので、PNによってAES暗号系列が決まってしまいます。PNは、パケット毎に1ずつ増加させていきます。PNは48bitありますので、1msに1packetを投げたとしても、9000年近くかかります。普通の人には関係ない時間ですので、MAXまで行って、戻った時の心配はしなくてもよいです。絶対に同じ値にならないように設計されていました。handshakeのMessage3が来た場合に暗号鍵をインストールしてください」と書かれてます。「新しい暗号鍵をインストールしたら、PNを1にしてください。」と書かれてもあります。いう仕様に基づいて、下記のようなシーケンスが発生するとします。シーケンスを説明すると、APはMessage3をSTAに送り、STAはPTKをインストールします。それと同時にPN=1とします。STAが送ったMessage4が妨害者によりAPに届くのを妨害されます。HTTPのデータ)を送り始めます。ここでも妨害者によりAPに届くのを妨害されます。APはしばらく経ってもMessage4が届かないので、Message3を再送します。STAは、PTKを再度インストールします。それと同時にPN=1とします。IP層など上位のレイヤとWPAのレイヤは独立で動作しているため、PTKがインストールされたことなど、上位のレイヤにはわかりません。STAは、続くユーザーデータをどんどん送信します。ところが、これらのユーザーデータのPNは、以前に送ったPNと同じになってしまっています。最初に説明しましたように、PNが同じであると作られるAES系列が同じになってしまいます。AES系列2になってしまいます。AES系列2上記の2式をXORを取ると、下記の式が成り立ってしまいます。暗号文2は、無線で送信されてわかっていますので、平文1がわかってしまうと、平文2もわかってしまうということです。これだけでは、平文1がわからなければ、平文2はわからないので安全に思えますが、そうでもありません。一般的には、通信の一番最初のパケットはARPやDHCPなど決まったパケットです。パケット長からもその内容を予想できてしまいます。なると、もう一方の平文2も解読ができてしまいます。handshakeを繰り返すので、いくらでも情報が得られると書いてあります。ここでなんでDeauthenticationメッセージを偽造できるんだという疑問が浮かびますが、なんとIEEE802.11の仕様では最近までDeauthentionフレームを含むマネージメントフレームには暗号化がかかっておらず、暗号化をかける方法もありませんでした。いくらでも中間者攻撃ができてしまいました。Frame)というマネージメントフレームを暗号化する仕様をサポートしてますので、この攻撃はできなくなっています。KRACKの対処方法は、いろいろできますが、単純にSTA側で2回目のMessage3は捨てればいいだけです(相手のPNがヘッダーに入っているので1回目かはわかります)。LoRa等の無線通信に関する製品開発やサービス開発を行っております。無線に関するサービス、技術については、お気軽にお問い合わせください。