前回の「無線セキュリティ──WEP暗号化の仕組み」ではWEP暗号化の仕組みについて説明した。今回は、WPAとWPA2で暗号化方式がどのように改良されているかを見てみよう。
2001年までに、WEPに対するハッカーの攻撃が増大し、無線セキュリティの強化が緊急課題となった。IEEEは改良規格である802.11iの標準化作業を開始。2003年にWi-Fi Allianceが、この規格の最終承認を待たずにWPA(Wi-Fi Protected Access)を開発した。WPAはIEEE 802.11iの当時の最新ドラフト仕様のサブセットをベースにしていた。
WPAはハードウェアアップグレードの必要がないように配慮して設計された。初期のアクセスポイント(AP)は、処理能力が非常に限られているものが多かった。RC4暗号方式がWEPで採用されたのは、強力なCPUが不要なためだった。WPAでは引き続きRC4が採用されているが、WEP暗号化の弱点に対処するために、以下の機能が追加されている。
WPAは、「パーソナル」か「エンタープライズ」いずれかのモードで利用できる。
EAPは、RFC 3748で定義されている拡張可能なプロトコルだ。特定の認証プロトコルを規定するものではなく、一連の機能とフォーマットを定めている。そのため多数のEAP方式が定義されており、Wi-Fi Allianceは利用可能な方式のサブセットを選定している。

キーが再利用されると、マスターキーの特定につながるデータをハッカーに大量に与えてしまうことになる。WEPでは、すべてのステーションが同じマスターキーを使う。また、24ビットのIVは1600万通りの値しか生成しないため、通信が活発に行われるネットワークでは数時間の間に同じIVが再利用されてしまう。だが、WPAでは48ビットのIVが採用されており、その取り得る値が使い尽くされるのには何年もかかる。
WPAでは、IVの長さが拡張されているだけでなく、脆弱なIVの問題がTKIPによって解決されている。WEPのIVが取り得る1600万通りのうち、約9000通りの値は「弱いIV」と呼ばれている。これらのIVを使うと、ほかのIVの場合と比べて、マスターキーについてより多くの情報を明かしてしまうからだ。TKIPアルゴリズムは、弱いIVを一掃する。
エンタープライズモードでは、IEEE 802.1xサーバが各クライアントに異なるマスターキーを提供する。だがパーソナルモードでは、マスターキーは前述のようにすべて同一だ。TKIPアルゴリズムは、マスターキーと送信元のMACアドレスを組み合わせ、これにIVを組み合わせた上で、さらにシーケンスカウンタを追加する。MACアドレスをキーに含めることで、同じ組み合わせキーがほかのクライアントで使われることがなくなる。また、パケットのシーケンス番号を表すシーケンスカウンタを含めることで、以降のパケットごとに異なる組み合わせキーが生成されることになる。
シーケンス番号を利用することはリプレイ攻撃を防ぐのにも役立つ。受信ステーションは、受信パケットごとにシーケンス番号が大きくなっていないという異変があった場合、これを検知できる。
WEPで使われるCRC32チェックサムは、十分な保護を提供しない。ハッカーはWEPパケットの1つ以上のビットを変更し、対応する変更をチェックサムに加えることで、WEPパケットを改ざんすることが可能だ。WPAではMichaelと呼ばれるMICアルゴリズムが使われる。MICは限られたプロセッサリソースしか必要としないが、CRC32よりも強力な保護を提供する。
IEEE 802.11i規格は2004年6月に最終承認された。Wi-Fi Allianceは、この規格の必須要件の実装をWPA2と呼んでいる。Wi-Fi Allianceは2006年春から、Wi-Fi認定ロゴを製品に添付する条件としてWPA2のサポートを求めている。
WPA2では、AES(Advanced Encryption Standard)アルゴリズムをベースにしたCCMP(Counter Mode with Cipher Block Chaining Message Authentication Code Protocol)が認証とデータ暗号化に利用される。TKIPではWEPの場合と比べて無線トラフィックが非常に傍受されにくくなっているが、CCMPはRC4とTKIPの組み合わせよりも安全だ。ただし、CCMPはRC4より多くのプロセッササイクルを必要とするため、WPA2にアップグレードするには、APやクライアントをより性能のいいものに交換しなければならないかもしれない。
WPA2でも、パーソナルモードとエンタープライズモードがサポートされている。パーソナルモードでは、手動で設定される事前共有キー(PSK:Pre-Shared Key)がSSID(Service Set IDentifier)と組み合わされ、PMKが生成される。クライアントとAPはPMKを使ってメッセージを交換し、PTK(Pairwise Transient Key)を生成する。
エンタープライズモードでは、EAP方式のいずれかを用いて認証が成功した後、クライアントとAPは801.1xサーバからメッセージを受信し、これを使ってPMKを生成する。そして、メッセージを交換してPTKを生成する。以後、PTKはメッセージの暗号化と復号に使われる。
パーソナルとエンタープライズいずれのモードでも、クライアントとAPのメッセージ交換の際にGTK(Group Temporal Key)が生成される。GTKは、ブロードキャストメッセージとマルチキャストメッセージの復号に使われる。
また、WPA2ではクライアントがAP間を移動する際のハンドオーバーを高速化する方法も追加されている。802.1xサーバによる認証とキーの生成のプロセスは、気になるレベルの無線音声通信の途切れを発生させてしまうほど時間がかかる。WPA2ではクライアントがあらかじめ近隣のAPとの認証を行う方法が規定されている。さらに、WPA2ではクライアントが以前に利用したAPのエリアに戻ったときにすぐに通信を再開できるように、APとクライアントにキーを保持させておくことも可能だ。
本稿筆者のデビッド・B・ジェイコブズ氏はThe Jacobs Groupを経営し、ネットワーキング業界で20年以上の経験を持つ。フォーチュン500企業ならびにソフトウェア分野の新興企業を顧客として、最先端のソフトウェア開発プロジェクトの管理やコンサルティングを手掛けてきた。