2009年8月、我々は一般の無線LAN機器でWEPよりもセキュアとされるWPA-TKIPを利用する際も脆弱性があることを示した。しかし、「中間者攻撃という必ずしも現実的でない環境を仮定したこと」、「MIC鍵を得ているという仮定の下で偽造パケットを1分以内に生成できること」が誤解を与え、その脆弱性の深刻さを十分伝えることができなかった。したがって、現在でも一部ではWPA-TKIPには深刻な脆弱性がないと認識されている。
その認識を改めるべく、我々は2010年8月に開催されたJWIS2010で「WPA-TKIPに深刻な脆弱性が存在すること」、「その脆弱性を突いて容易にシステムダウンさせることが可能なこと」を具体的な方法を交えて示した。WPA-TKIPには深刻な脆弱性が存在するのである。
WEPはもはや暗号ではない、ではWPA-TKIPは?
2008年10月、我々のグループはわずか4万パケット程度を得るだけで、WEPの104ビット鍵(パスフレーズ)を瞬時に導く方法を明らかにした。さらに、その方法に基づく、WEP鍵導出ソフトウェア「KOBECRACK」を開発した。公開されているaircrack-ngの最新バージョンでも同等の方法が実装されているが、8万パケット程度が必要である。
4万パケットとは、例えば数分のYouTube動画を観賞する程度の量であり、メールやWebしか見ない人たちでも複数が同時に利用すれば短時間で収集できるパケット量である。個人ではなく企業などでWEPを利用する場合、IEEE 802.1x/EAP(Extensible Authentication Protocol)と呼ばれる認証プロトコルを組み合わせ、認証と共にWEP鍵を定期的に変更する方式が用いられることが多い。この時、デフォルトでは変更時間が60分程度に設定していることが多く、4万パケットを優に超える。
また、たとえ2万パケット以下で鍵が変更されたとしても、十分な計算環境さえあれば、数時間から数日でWEP鍵を導出でき、その間の通信内容を解読することができる。実際、我々は1万パケットから2万パケット以下の観測で数時間から数日のうちにWEP鍵を導出する方法を研究している。
すなわち、WEPによっていかなる方法をとろうと通信内容(データ)を守ることはできなくなったのだ。さらに、WEPの後継であるWPA-TKIPについても脆弱性が報告されている。しかし、その脆弱性はWEPほど深刻にとらえられておらず、その認識も必ずしも正しくない。
上述したように、我々は昨年にWPA-TKIPの脆弱性について発表したが、いくつかの誤解を与える結果となり、その脆弱性を十分認識させるに至らなかった。そこで、今年8月に改めてWPA-TKIPの脆弱性に関する発表を行った。以下、その際に発表した、ほぼすべての無線LAN装置において、WPA-TKIPを用いた場合に現実的な環境で容易にシステムダウン(無線LAN全体を通信不能)が可能な手段を紹介しよう。
WEPの脆弱性を解消したWPA-TKIPの特徴
2008年11月、ドイツのセキュリティ研究者であるM.BeckとE.Tewsは「WEPの後継のWPA-TKIPにさえ脆弱性が存在する」ことを示した。まずは、WPA-TKIPについて簡単に説明しよう。WPA-TKIPを一言で表すと、「WEPのセキュリティ強化版」となる。WEP対応の無線LAN機器であれば、そのファームウェアを更新するだけでWPA-TKIPに対応可能だ。
WEPとの大きな違いは、WEPの深刻な脆弱性であり、その鍵が解読される原因であったIV(初期化ベクトル)と暗号化鍵との関係を改善したところにある。この改善でWEPでは容易だったWEP鍵自体の導出が極めて困難になった。さらにパケットの認証も改善された。これには、DoS攻撃や不正なパケットの授受によるシステム破壊を防ぐ目的があり、正当なパケットか否かを暗号技術により保証することを試みている。特に偽造パケットを排除するため、結果的に「3重の認証化」を行っている。以下が、WPA-TKIPによる送信パケットの暗号化および認証処理の仕組みだ。
3重の認証化とは、TKIP-IV認証・チェックサム認証・MIC認証である。TKIP-IV認証は過去に使用したパケットを偽造して再送する攻撃、すなわちリプレイ攻撃を防ぐための検査である。具体的には、TSCカウンタと呼ばれる値を保有することでリプレイ攻撃を防ぐ。TSCカウンタとは、過去に送信されたIVの値の中で最も大きな値を保持するカウンタである。TSCカウンタよりも小さなIVを有するパケットが受信された場合、このパケットはリプレイ攻撃の疑いがあるため破棄される。チェックサム認証はCRC32という誤り検出用の符号を利用して、通信路上での誤りを検出する。MIC認証はパケットの完全性を保証するための検査である。マスター鍵から生成されるMIC鍵とMICHAELと呼ばれる関数によって、パケットが改竄されているか否かを検査する。