期待のネット新技術

暗号化方式に「AES」を採用した「IEEE 802.11i」や「WPA2」、11n普及とともに浸透

【利便性を向上するWi-Fi規格】(第10回)

 Wi-Fiにおける暗号化の方式は、当初用いられていた「WEP」から「WPA」「WPA2」へと変遷してきている。そして、現在は中心的な役割を担っているWPA/WPA2に発見された脆弱性“KRACKs”を受け、2018年後半には、新たなセキュリティ機能「WPA3」が提供される予定だ。

 今回は、無線LANの標準化技術である「IEEE 802.11i」や「WPA2」において、採用された暗号化方式「AES」と、これらの普及状況について解説していく。(編集部)

「利便性を向上するWi-Fi規格」記事一覧

IEEE 802.11iで本命の暗号化方式は「AES」、「WPA2」にも実装

 前回詳しく解説した「TKIP(Temporal Key Integrity Protocol)」そのものは、「IEEE 802.11i」の中でも"Short Term Solution"として位置付けられていた。その最大の理由は「RC4」の暗号化方式そのものが、それほど強固なものではないと、当時から考えられていたことだ。

 その対策として、暗号化方式には「AES(Advanced Encryption Standard)」を利用することが既定路線ではあった。ただ、AESの暗号化はRC4に比べ、かなり処理負荷が上がることになる。実際、WPA2に対応した当初のアクセスポイントでは、AESを使うとスループットが上がらない問題が起きたりもした。

 そんなわけで、IEEE 802.11iには、本命の暗号化方式となったAESを利用する「CCMP(Counter-Mode-CBC-MAC)」というプロトコルを実装することで作業が進み、2004年にその標準化が完了した。これを受けたWi-Fi Allianceは、CCMPに対応した暗号化方式を「WPA2(Wi-Fi Protected Access)」とし、これに向けた認証試験の準備やプロモーションを行い始めた。

WPA2普及の原動力となった「IEEE 802.11n」

 もう1つ、WPA2を普及させることになった原動力は、「IEEE 802.11n」である。IEEE 802.11nは、紆余曲折などありつつ2009年に標準化が完了したが、そのドラフトの段階で、WEPあるいはWPA-TKIPを利用している場合に、高スループットでの通信を許さないという項目が追加されていた。

 要するに、WEPやTKIPベースのWPAを利用していた場合にはIEEE 802.11nでの通信は行わず、IEEE 802.11g(もしくはIEEE 802.11a/b)に切り替えて通信を行う仕様になっていた。IEEE 802.11nでの接続を行いたければ、WPA2(というか、CCMP)での通信が事実上必須になった。

 幸いにも、高速化を果たしたIEEE 802.11nの普及にあわせ、ユーザーはアクセスポイントやクライアントを購入し直すことが多く、新しく購入した製品の暗号化方式はデフォルトでWPA2になっているため、自然とWPA-TKIPからWPA2への移行が進んだ。

 さて、ここで採用されたAESという暗号化方式は、米NIST(米国立標準技術研究所)が2001年に標準暗号として採用した方式である。このAES以前には、1976年から「DES(Data Encryption Standard)」と呼ばれる暗号化方式が利用されていた。その暗号鍵の長さは、今から見れば恐ろしく短い56bitで、1970年代や80年代ならともかく、1990年代になると強度が十分とは言えず、1999年には実際に22時間15分で破られているという問題があった。

 一時的には、このDESを三重に掛ける「Triple DES」というかたちで運用されていたが、こちらも理論的には破り得るということで、米NISTはではさらに強力な暗号化方式を求めて1997年に公募を行う。最終的にベルギーにあるルーヴェン・カトリック大学のVincent Rijmen氏とJoan Daemen氏が開発した「Rijndael」というブロック暗号方式が標準化案に採択され、2001年11月に「AES」として標準化されることになった。

 余談ではあるが、この公募には全世界から15の方式が提案が行われ、日本からもNTTが「E2」という暗号化方式を提案している。ただ残念ながらE2は5方式に絞り込まれた最終候補には残ることができずに敗退している。もっとも、NTTはこれで懲りずに、E2で問題とされた実装の難しさなどを改善した「Camellia」という暗号化方式を2000年に発表している。しかし、残念ながらこちらも広く使われているとは言い難い。やはりNISTのお墨付きというのは、暗号化方式の普及には非常に重要ということだ。

 話を戻すが、AESはブロック暗号方式なので、RC4のようなストリーム暗号方式と異なり、データを一定のサイズにする必要がある。ただ、Wi-Fiのデータでこれを行うのは困難なので、CCMPでは「カウンターモード」と呼ばれる方式を取っている。これは、データとは別にあらかじめCounterを用意しておき、これを鍵を使って暗号化した後、この暗号化されたCounterとデータのXORを取って送り出す、という方式だ。

 このやり方ならば、データが来るよりも前にCounterの暗号化処理を済ませておき、あとはデータを適当なサイズに切ってXORをするだけで暗号化が行えることになる。ちなみに、カウンターモードの仕様そのものは、IEEE 802.11iではなく、なぜか「RFC3610」において"Counter with CBC-MAC(CCM)"として定義されている。

 暗号化と復号化の手順そのものは、TKIPによく似ている。以下が暗号化の方式だが、まず48bit長のPN(Packet Number)を自動生成し、このPNとA2(MPDUの中のAddress #2)、それをPriorityをキーに"Nonce"を生成する。Nonceというのは、WEPなどにおけるIVと同じ役割を果たすものだ。これと並行してAAD(Additional Authentication Data)をCCM用に作成する。これが全部用意できたら、AESの復号化を行うとともに、MIC(Message Integrity Code)を生成する。最後にこれとヘッダーを組み合わせ、暗号化が完了するというわけだ。

こう見ると複雑そうだが、やってることは意外に簡単である。問題はAESの暗号化そのものに時間が掛かることだ

 復号化は当然この逆で、ヘッダーからPN、A2、PriorityからNonceを再生成し、さらににヘッダーからAADをこれも再生成、これらをキーにAESの暗号化処理を行い、もともとのデータとXORを取ることで、元のデータが復元される。さらに復元されたPNが、受け取った側が保持している、つまり前のパケット処理の際のPNよりも数字が大きいことを確認し、処理が完了するわけだ。

当然ながら復号化は暗号化の逆の処理となる。出典は「n

 ちなみに、暗号化を開始する以前の話として、鍵の配布などに関しては、前回説明したWPAでの手順がそのまま利用される。特に、4-way HandshakeでPMKを受け渡す手順などは、完全に一緒である。これは、鍵の配布手順について、当時は問題ないと判断されていたためだ。そもそも4-way HandshakeはIEEE 802.1Xで採用された鍵交換の方式であり、これをそのまま引き継いだに過ぎないわけで、WPA2についても、当然そのまま利用されることになった。

 さて、IEEE 802.11iが2004年6月に標準化されたことを受け、Wi-Fi Allianceも同年9月1日、WPA2に対応した最初の製品群のアナウンスを行っている。もっとも、まだ市場にはWPAベースの製品が満ち溢れていたため、すぐにWPA2を必須の要件とすることはできなかった。

 Wi-Fi AllianceがWPA2の認証を受ける必須要件としたのは、2006年3月のことだ。暫定的に、WPA-TKIP準拠にもかかわらず暗号化方式がAES128など、おかしな製品もこの間にはあったりはしたが、2006年以降に出荷された製品は、ほぼAESを実装している。

 ハードウェアの側の進歩も目覚ましく、まだ2004年頃には、AESを汎用CPUコアで処理しているためにスループットが上がらないようなケースも見受けられたが、2006年頃からはルーターなどに使われるプロセッサーには、たいていAESのアクセラレーターが内蔵されるようになり、その処理負荷はあまり問題にならなくなりつつあった。

 もっとも、市場のトレンドがIEEE 802.11nからIEEE 802.11acに移っていく中で、通信のスループットがどんどん上がっていったため、これに合わせ、CPUコアだけでなくアクセラレーターの方でも、スループット向上を図る必要があり、その意味で内部は少しずつ変わっていたのだが、基本的な方式そのものは2017年あたりまで大きな変化もないまま使い続けられてきた。AESそのものへの攻撃も、さまざまな研究がなされているものの、今のところこれを直接破ることに成功した事例はない。

「利便性を向上するWi-Fi規格」記事一覧

大原 雄介

フリーのテクニカルライター。CPUやメモリ、チップセットから通信関係、OS、データベース、医療関係まで得意分野は多岐に渡る。ホームページはhttp://www.yusuke-ohara.com/