無線LANのセキュリティ WEPの脆弱性

WEPの脆弱性の原因

前回、WEPによる暗号化の仕組みについて解説しました。一見、データの完全性と暗号化が機能しそうに思えますが、いくつかの脆弱性があります。脆弱性がある原因は、主に次の2つです。

  • IV空間が小さい
  • ICVにCRC32を利用するため改ざんが比較的容易

IV空間が小さい

IVは24ビットの大きさで定義されています。無線LANのIEEE802.11規格では、IVについて明確な規定がないのですが、仮に1フレームごとにIVの値を1ずつ増やす実装の場合、2^24個(≒1600万個)のフレームを送信するとIVの値が一巡して、同じIVを利用することになります。これをIVのコリジョンといいます。
1600万個のフレームは相当な数のように思えますが、IEEE802.11aやIEEE802.11gといった54Mbpsの高速な無線LANでは、最短で10分ほどでやり取りされるフレーム数です。IEEE802.11bでも数時間程度で1600万個ぐらいのフレームのやり取りを行います。つまり、10分~長くても数時間程度、無線LANのフレームをキャプチャすれば、IVのコリジョンが発生します。
また、WEPによる暗号化のフレームフォーマットを見ると、わかるようにIVは「暗号化されない状態」でフレームに付加されています。そして、WEPキーは固定です。そのため、しばらくの間、WEPによる暗号化がされているフレームをキャプチャすれば、IVのコリジョンが発生し、そのときのキーストリームは同じであることが簡単にわかってしまいます。

ただし、IVのコリジョンが発生して、同じキーストリームを使っていることがわかったからといって、すぐにWEPキーそのものや平文データがわかるわけではありません。ただし、同じキーストリームを使っている平文データ同士の排他的論理和がわかります。
このことについて、排他的論理和の規則を踏まえながら、具体的に見てみます。平文データM1とM2があり、それをキーストリームKで排他的論理和をとったものをE1、E2とします。

E1=M1 XOR K
E2=M2 XOR K

このE1とE2の排他的論理和をとると、

E1 XOR E2
= ( M1 XOR K) XOR (M2 XOR K)
= (M1 XOR M2) XOR K XOR K
= (M1 XOR M2) XOR 0
= M1 XOR M2

※XORは積算のように順序を入れ替えられる
※同じものをXORすると0になる
※0とXORすると同じ値になる

と、上記のように、平文データ同士のXORがわかるようになります。
平文データ同士のXORがわかっても、すぐにはそれぞれの平文データの中身はわかりません。ですが、TCP/IPを利用していると、Webアクセスのときには「http://」が含まれるように、ある程度、決まった文字列が含まれていることが多くなります。そのため、平文データ同士のXORから平文データそのものを推定できてしまう確率が高くなります。

ICVにCRC32を利用するため改ざんが比較的容易

データの完全性をチェックするために、データからCRC32というアルゴリズムでICVを計算しています。ICVは元の平文データよりも小さいサイズなので、ICVから元の平文データを再現することはできません。
しかし、IPSecで同じ目的で利用するMD5やSHA-1に比べると、何らかの変更があった場合の計算結果を比較的推測しやすくなっています。特に特定のビットを反転させる操作(ビットフリップ)を行った場合、その結果、計算されるCRC32の値を完全に予測できます。
つまり、WEPのICVは、元のデータの任意のビットを反転させたとしても正しい値を再計算することができます。これを悪用して、WEPのフレームを改ざんすることを「ビットフリッピング攻撃」と呼びます。データの完全性を保証するためにICVを計算しているのですが、その計算アルゴリズムにCRC32を利用しているために、実質的にはデータが改ざんされたとしてもそれを検出できない場合があるわけです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA