WEPについて(★)

初期のIEEE802.11に採用された暗号方式にWEP(Wired Equivalent Protocol)があります。WEPは、APとSTAの両方で同じ暗号鍵を持っていて(共通鍵方式)、平文を暗号化します。
WEPでは、RC4という暗号アルゴリズムでデータパケットを暗号化し、Open認証もしくはShared認証という認証方式で認証します。

データパケットの暗号化

WEPで暗号化されたデータパケットは下記のようになります。

IV
(24bit)
暗号化されたデータ
(Nbyte)
ICV
(24bit)
  • IVは、Initial Vectorといって、パケット毎に変わるランダムな値です(特に規定はないので、変えなくてもいいです。普通は1ずつ増えていきます)。IVは、暗号鍵とくっつけて、RC4暗号化アルゴリズムに利用されます。
    このIVは、暗号化されないでパケットに付けられます。
  • 暗号化されたデータは、IVと暗号鍵を合わせた種をRC4のアルゴリズムに入れて出てきたデータ系列と、平文データを、XORを取ることで得られます。

    XORを取るだけですので、もとの平文と同じ長さです。RC4に入れる種が暗号鍵だけですと、RC4から出てくるデータ列は毎回同じ系列になってしまうため、IVを加えて変化をだしています。
  • ICVは、Integrity Check Valueといって、平文データにCRC32をかけて得られる値です。パケットが改ざんされてないかチェックをするものです。ICVも平文と同様に暗号化されています。

WEPのOpen認証

WEPのOpen認証は下記のようなシーケンスになります。Open認証は、認証なしという意味で、この認証シーケンスは必ず成功します。

Authenticationパケットには、Authentication Algorithm値(図中のAlg)と、シーケンス番号(図中のSeq)の要素が含まれます。
Open認証の場合は、Authentication Algorithmは0です。シーケンス番号は、順に1,2と付けられます。
なお、これらのAutheticationパケットは、暗号化はされていません。
その後、通信状態に入ると、データパケットは、STAとAPで予め決められた暗号鍵で暗号化され、通信します。

WEPのShared認証

WEPのShared認証は下記のようなシーケンスになります。Shared認証では、Challenge Response方式の認証を行います。

Shared認証の場合は、Authentication Algorithmは1です。シーケンス番号は、順に1,2,3,4と付けられます。
これらのAutheticationパケットは、Seq=3のパケット以外は、暗号化はされていません。
Seq=2のパケットで、Challenge Text(128バイトのランダムなデータ)を付加しています。Seq=3のパケットでは、パケットごとWEP暗号化を行い、IV, ICVを付けて返します(データパケットとまったく同じ処理です)。その受信側で、ICVが正しければ、Seq=4のパケットでSuccessを返します。
その後、通信状態に入ると、データパケットは、STAとAPで予め決められた暗号鍵で暗号化され、通信します。

この方式の問題は、Seq=2のパケットとSeq=3のパケットがあれば、暗号化される前のデータと暗号化された後のデータがわかっていますので、簡単に暗号鍵を導出できてしまいます。

WEPの問題点

Open認証、Shared認証に関わらず、WEPは、同じIVのパケットが2つあると解読できてしまうという脆弱性を持っています。普通は、IVは1ずつインクリメントしていくので、2^24パケットごとに同じIVが現れます。
WEP暗号化は、暗号鍵とIVを種にRC4に入れて暗号のもととなるデータ系列を作り、それを平文データとXORをすることで暗号化データを作っています。
そのため、同じIVとなるパケット2つのXORを取ると、その平文データどうしのXORの値が出てしまいます。
それだけでは、平文データは復号できませんが、パケット長などからデータの中身を予測し(ARPやTCP SYNなどでは、パケット長が決まっているため)、平文データを割り出すことが比較的簡単にできてしまいます。

これ以外にも、下記の点で非常に問題があります。

  • 暗号鍵は、接続毎に毎回同じものを利用している。そのため、ある時点の暗号鍵を解読されると、それ以降、永遠に解読されてしまう。
  • すべてのSTAとの通信で同じ暗号鍵を使っている。そのため、一人が暗号鍵を解読されると、そのアクセスポイントに繋がっているすべての通信が傍受されてしまう。

このようなこともあって、WEPは現在使われることはないです。