運用
WEP暗号化の基礎と実践

1.無線LANの安全性を確保するWEP暗号化

井上孝司
2002/04/11


無線LANにおける暗号化の必要性

 電波を用いた無線通信は、ケーブルに縛られないという利点がある。特にノートPCを使用している場合、このメリットは大きい。

 しかし、無線通信には「電波が不必要なところまで飛んでいってしまう」という難点がある。IEEE802.11b無線LANで使用されている送信機の出力は50mW(1MHz当たり10mW)程度と、無線機としては比較的微弱なものだが、それでも見通し線上なら50〜100m程度は到達してしまう。つまり、その範囲内であれば、家庭やオフィスで使用している無線LANの通信内容を、だれかが傍受できる可能性があるということになる。

 実際、無線LAN電波の漏えいについては、筆者自身も以下のような経験をしている。

  • 筆者の自宅でWindows XPを使った無線LANの設定を行い、アクセス・ポイントの検出を実行すると、自宅に設置されたものとは異なる「SSID(Service Set ID、無線LANネットワークの識別名)」が常に表示されている。どうやら、近所にも無線LANを設置している家庭があるらしい。
  • 都心部のオフィス街で無線LANの検出を実行してみると、やはりSSIDがいくつも検出されることは珍しくない。
  • 実際、筆者が仕事でお世話になっている企業の中には、「無線LAN禁止令」が出ているところがある。

 さらにノートPCを持って外出し、自宅の近所で無線LANの検索を行ってみた。幸い筆者の自宅はマンションの7階という比較的高い位置にあるため、地平のレベルから筆者宅の無線LANは検出されなかったが、近所のマンションの上層階なら、恐らく検出可能だろう。周囲が開けた場所なら、意外と遠方まで電波が飛ぶ可能性がある。

 無線通信の性質上、無関係の第三者の元に通信(電波)が到達することは阻止できないので、何のセキュリティ対策も施していない無線LANを運用していると、以下の2つの問題が発生することになる。

・外部から無線LANに不正侵入される
 物理的にケーブルを接続しない限り通信ができない有線LANと異なり、無線LANでは電波による交信が可能な範囲なら、たとえ屋外からでも接続できる。そのため、オフィスや家庭の外から勝手に無線LANに接続し、LAN上のコンピュータに不正侵入を試みられる危険性が生じる。場合によっては、外部からワームなどによるアタックを受ける事態も考えられる。

・通信内容が第三者に漏えいする
 また、無線LANのクライアントから放射される電波を傍受する、あるいは無線LANに接続して通信内容をモニターする、といった方法で、無線LANを介してやりとりされている内容が第三者に漏えいする危険性がある。

 こうした事態に対処するため、たいていの無線LAN製品では、次のようなセキュリティ対策が用意されている。

  • SSIDの設定により、SSIDを知らないユーザーの接続を阻止する
  • アクセス・ポイントにMACアドレスを登録し、登録したもの以外の接続を拒否する(特定のMACアドレスの接続を明示的に拒否できるものもある)
  • 無線を通じてやりとりされる内容を暗号化し、傍受されても内容が分からないようにする(WEP暗号化)

 ただしこれらの対策のうち、SSIDはすでにセキュリティ対策としての意味を失っているといえる。SSIDを手作業で入力しなければならない無線LAN製品では、SSIDを知らないユーザーにとっては「接続不可能」を意味していた。しかしWindows XPも含めて、自動的にSSIDを検出する機能を持った設定ユーティリティを持つ製品が大半を占めている現在では、だれでもSSIDを知ることかできるからだ。

SSID「ANY」に注意
 IEEE802.11bの仕様では、クライアント側で「SSID(Service Set ID)」を「ANY」にセットすると、どのようなSSIDを持つ無線LANにも接続できることになっている。ホットスポットなどでの利便性を考慮したための仕様だが、セキュリティの面から見ると具合が悪い。
 無線LANのセキュリティに対する注目が高まってきているため、最近のアクセス・ポイント製品では、SSIDの検出に応答しないようにする、あるいはSSIDを「ANY」にセットしたクライアントからの接続を拒否する、といった機能を持たせていることが多い。

 次にMACアドレスによる接続拒否だが、これは無線LANに対する外部からの不正な侵入を防止する効果がある。ただしMACアドレスの登録はアクセス・ポイントに対して行うので、PC同士が直接通信する「アドホック・モード」では利用できない。また、PCやアクセス・ポイントから送信される電波を直接、傍受すれば、それを解析することが可能なので、通信内容の外部への漏えいを防止する役には立たない。

 そこで放射される電波そのものをセキュアにするためには、通信内容を暗号化する仕掛けが必須ということになる。それが、今回取り上げるWEPというわけだ。

無線LANに用いられる暗号化技術

 「WEP(Wired Equivalent Privacy、直訳すると『有線ネットワークと同等のプライバシー機能』というところか)」とは、IEEE802.11bやIEEE802.11a無線LANで使用される暗号化仕様の総称である。実際にデータを暗号化する際に用いられるのは、米RSA Security社が開発した共有鍵暗号「RC4」*1で、これと組み合わせる鍵生成メカニズムなどを含めて、WEPが構成されている。

*1 RC4――RC4は、1987年に米RSA DATA Security社(現RSA Security社)のRon Rivestが開発したストリーム暗号化システム。ストリーム暗号とは、暗号化の単位が(byte単位で)可変長である暗号化方式。入力されたデータ列を順次暗号化して、出力することができる暗号系(反対語はブロック暗号で、入力されたデータ列を8bytesとか16bytesなどという固定的なサイズに切り分け、そのブロックごとに暗号化処理を行う。DESなどが有名)。RC4では、固定長の暗号化キーを基にして、入力されたストリームを順次暗号化することができる。DESのような暗号系と比べると、非常に処理が軽量なのが特徴。SSLを始め、インターネットの多くのプロトコルで使用されている。

 なお、WEPはいわゆるデータリンク層で暗号化を行うので、上位プロトコルに関係なく暗号化が行われる。そのため、TCP/IPを使用していても、NetBEUIを使用していても、同じように暗号化が実行される。

 WEPを使用するには、ユーザーが暗号化の「キー(鍵)」となるASCII文字列を決めて、それをクライアントとアクセス・ポイントの双方に設定する必要がある。このASCII文字列は、長さが5bytesの場合と13bytesの場合があり、後者の方が「キー長」が長くなることから、秘匿性が向上する。

 実際に暗号化を行うには、このASCII文字列を16進数に変換したうえで、さらに24bitの長さを持つ「IV(Initialization Vector、初期化ベクタ)」を組み合わせて、64bit、あるいは128bit長とした値を使う。なお、このとき16進数に付加されるIVの値は、WEPを用いて通信する相手側にも送信される。

 市販の無線LAN製品では「40bit WEP対応」や「128bit WEP対応」などと表示しているが、これは実際にはIVを付加する前の値と後の値が混用されていて、正確には以下のような関係になっている。

分類 ASCII文字列/16進数値の長さ 実際に暗号化に使われるキー長
いわゆる40bit WEP 5bytes(40bit) 64bit
いわゆる128bit WEP 13bytes(104bit) 128bit
WEPの暗号化キー長の表記
「IV(Initialization Vector、初期化ベクタ)」は、暗号化の際に使われる乱数列の基となる数値であり、長さは24bitとなっている。この長さを含むか含まないかでWEPの表記方法が異なる。

 つまり、ASCII文字列の長さを使って「40bit WEP/108bit WEP」とするか、あるいはIV付加後のキー長を使って「64bit WEP/128bit WEP」と表記するべきなのだが、両者が混同されているのが実情だ。

 WEPが使用しているRC4は、「キー」の内容がランダムであることを前提にして、「キー」から乱数列を作成し、それと「平文」をXOR演算した結果を「暗号文」として取り扱うストリーム暗号である。生成された「暗号文」に、暗号化の際に用いたのと同じ「キー」を使ってもう一度XOR演算すると、元の「平文」が取り出されるという原理を利用している。

 WEPの場合、ASCII文字列から生成される16進値とIVを組み合わせて生成された「キー」を「擬似乱数ジェネレータ(PRNG:Pseudo-Random Number Generator)」に通して、そこから出力される乱数と、LANでやりとりされるネットワーク・フレームの内容をXOR演算している。その結果と、「キー」を生成するために使用したIVの値を、電波に乗せて相手に送信している。

 このとき、通信開始時の認証手段として、「CHAP(Challenge Handshake Authentication Protocol)認証」*2を使用し、お互いが使用している「キー」が同じであるかどうかを確認している。また、送信されるデータの整合性チェックのため、送信時には「IA(Integrity Algorithm、一貫性アルゴリズム)」によってCRC-32の値が計算される。この値のことを「ICV(Integrity Check Value、一貫性検査値)」といい、IVや、暗号化されたデータと共に送信され、受信側でエラー検出に利用される。

*2 CHAP認証(チャレンジ&レスポンス認証)――お互いが持っている「パスワード」や「キー」などのデータを、平文のまま通信路に流すことなく、それらが同一であるかどうかを相互に確認する認証方法の1つ。PPP通信などでも使用されている。システムにログインしたり、リソースにアクセスするためには、パスワードやキーとなる文字列を相手に送信して認証してもらう必要があるが(WEP暗号化の場合は、お互いの持つ「キー」が同一かどうかを確認し、そうでなければ通信を行わないようになっている)、このときに重要なデータを平文のまま送信してしまっては、第三者にデータが漏えいする可能性がある。そこで認証サーバ側では「チャレンジ値」というランダムな値を送信し、受信したクライアント側ではその値を自分の持つキーで暗号化して、その結果をサーバ側に返信する。サーバ側でも、同様に送信したチャレンジ値を自分の持つキーで暗号化して、それを受信した暗号化の結果と比較する(もしくは自分のキーで復号化して、送信した値と同じかどうかを調べる)。もし同一であれば、両者の持つキーは一致しているとみなされ、認証の成功をクライアント側に返す。
 
WEPによる暗号化のプロセス
ASCII文字列を16進数値に変換してIV(Initialization Vector、初期化ベクタ)と混合し、暗号化のキーとする。ここでは例として“ascii”という文字列をキーにしている。これを基にしてIVと混合して擬似乱数列を発生させ、元の平文データ(ネットワーク・フレームのデータ)とXOR演算して暗号化を行う。送信フレームには、暗号化されたデータのほかに検査用のICV値ICV(Integrity Check Value、一貫性検査値)とIV値も含まれる。受信側では、IVから同様に擬似乱数列を生成し、暗号化されたデータとXOR演算して元の平文データとICVを取り出す。

 一方受信側では、自分が保持している40bitのキー文字列と、暗号化されたデータと共に受信したIVの内容を同様に擬似乱数ジェネレータに入力し、生成された乱数と受信したデータをXOR演算することで元のデータ(平文データとICV)を取り出している。

 こうした動作原理から分かるように、WEP暗号化がどれだけ安全なものになるかどうかは、ユーザーがキーとして設定するASCII文字列の内容に大きく依存している。だから、「総当り攻撃」によって解読されるような単純な英単語ではなく、できれば大文字/小文字/記号/数字などを混在させたものを指定することが望ましい。

 では、WEPによる暗号化を利用する手順を見てみよう。


 INDEX
  [運用]WEP暗号化の基礎と実践
  1.無線LANの安全性を確保するWEP暗号化
    2.アクセス・ポイント側のWEP設定
    3.SSIDが自動検出可能な場合のWindows XP側の設定
    4.SSIDが自動検出不可能な場合のWindows XP側の設定
    5.Windows XPにおける「利用できるネットワーク」と「優先するネットワーク」の違い
    6.Windows 2000におけるWEP暗号化の設定
    7.おわりに
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間