期待のネット新技術

2003年までの実装が必須だった「WPA」で採用された「TKIP」の4つの特徴

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

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

 今回は、Wi-Fiの暗号化方式である「WPA」に採用された技術や、ユーザーの認証と暗号鍵交換の方法などについて解説していく。(編集部)

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

“2003年までの実装”をはじめとしたWPAの設計目標要求

 「WPA(Wi-Fi Protected Access)」は、結果として以下のような目標に基づくかたちで、その設計が行われることになった。

・暗号的な脆弱性を持たないこと
 WEPでは、そもそも暗号鍵の強度が不足している上、Key Streamが固定されている関係で、数万パケットの傍受で鍵を割り出しやすいという欠点があり、こうした欠点をなくすことが目標とされた。

・Authentification Serverを利用しないことが可能なこと
 これは前回説明した通りで、Authentification Serverの機能をアクセスポイント側に持たせることが要求された。

・ユーザーベースの認証が可能になること
 これも認証サーバーの話に絡むが、本来IEEE 802.1Xはユーザーベースの認証が可能であり、これをサポートすることが求められた。

・鍵の配布のサポート
 これは説明が長くなるので後で改めるが、簡単に言えば、「PMK(Pairwise Master Key)」を配布する機能が求められている。これはWEPでは存在しない機能である。

・ソフトウェアアップデート可能なこと
 これは機能追加というよりも、問題があった場合の対処が、WEP時代のアクセスポイント(や一部のクライアント)では不可能、という事態があったことに起因する。クライアントなどであれば、ドライバーを更新すれば対処できそうなものだが、何ともならない製品が存在したらしい。ちなみに、WPA2へのアップグレードという話は、この時点では考慮されていなかった模様だ。

・2003年中に実装可能なこと
 これがある意味一番厳しい条件だったかもしれない。市場になるべく早く投入するためには、2003年中に実装まで終わって製品出荷できることが、設計目標として要求されていた。

 さて、こうした要求の一部は、完全には実現し切れなかったものの、妥協できるレベルにこぎ着けたのがWPAである。まずは通信におけるデータの脆弱性については、暗号化方式そのものはWEPと同じくRC4を利用している。ただし、暗号鍵は128bitが必須となり、IVは48bitへと拡張されている。

 さらに、「TKIP(Temporal Key Integrity Protocol)」と呼ばれる一時キーを利用する方式を新たに採用した。このTKIPの特徴は、IV空間の48bit化以外に、IVシーケンスの規定、パケットごとのmixing、それと「Michael MIC(Message Integrity Code)」の採用などが挙げられる。

IV空間の48bit化、IVシーケンスの規定、パケットのmixing、Michael MICの採用が、TKIPの特徴

 まずIV空間については、WEPでは24bitまで、組み合わせ総数にして1677万強でしかなかったものだ。以前なら、これでも十分と思われたが、実際には「FMS Attack」と呼ばれる技法により、数百万パケットの収集で104bitのWEPキーの推定が可能なことが示されてしまった。そこで、IVを48bitへと拡張することで、FMS Attackを利用する場合に必要なパケット数を桁違いに増やすことによって対応した。その数は理論上は1677万倍だが、実際はそこまでいかなくても解読できるはずとされる。「はず」というのは、計算量が多すぎて実証できないためだ。

 次が、IVシーケンスの規定である。本来、IEEE 802.1XのAuthentification Serverを利用する場合、クライアントごとに異なる「PMK(Pairwise Master Key)」をAuthentification Serverが提供する。このため、同一のアクセスポイントに繋がっていても、キーそのものはクライアントごとに異なるものとなる。

 WPAにおいても、エンタープライズモードではこの方式がそのまま採用されるが、それはAuthentification Serverを利用する場合の話だ。これを利用しないパーソナルモードでは、PMKは1つだけとなる。そこでTKIPではPMKとクライアントのMACアドレス、さらにシーケンスカウンター(パケットのシーケンス番号を示すもの)までを組み合わせることで、クライアントごとに異なる上に、パケットごとにも異なるキーを生成することにした。

 この仕組みをまとめたものが、以下の図だ。まずTK(一時キー)とTA(クライアントのMACアドレス)、それとシーケンスカウンターの上位32bitを組み合わせ、80bitの中間値を生成する。これとシーケンスカウンターの下位16bit、それに再びTKを組み合わせて最終的に128bitのRC4キーを生成する。これが、前回WEPで示した図におけるKey Streamに相当しており、あとはデータとXORを行えばいいというわけだ。

 ここで問題になるのはTKで、これがずっと同じままだと意味がない。そこで、これを一定時間ごとに変更する機能が搭載されている。一定時間の期間は、ある程度実装任せとはなるが、実際にWPAを実装するルーターの設定を確認すると、10分間隔程度がデフォルトになっていることが多い。あまり長いと、それだけ多数のパケットが収集できるため、手掛かりを多く与えてしまうことになるし、逆に短ければ、キー配布のオーバーヘッドが増えてしまうので、この程度が落としどころとして選ばれたのだろう。

 最後のMichael MICは、パケットの改ざん検出のために追加された方式で、これにはRC4とは別の暗号化方式が利用されている。元々の128bitの鍵を基に64bitのMIC鍵が生成され、これと平文を組み合わせて、64bitのMICが作成される。この作成のアルゴリズムにMichaelという名前が付けられている。

 RC4の暗号化の際には、データの後ろにこのMICを付加したかたちで暗号化が行われる。受け取った方は、まずCRC-32を確認してエラーがないことを確認した後に復号化を行うが、この際にMICの領域を再びMichaelによって展開し、平文が一致しているかどうかを確認する。これが一致していれば、データの改ざんがないと判断できるわけだ。

 こうした手法により、パケットの傍受による暗号鍵の推定や、パケットを改ざんして送り込むなどの手法の防止(というか、困難化)が可能になっている。ただし、そもそもの鍵の交換をどうするのか? という問題が残ったままである。

 上の手順からも分かるが、もともと暗号鍵に相当するものは、WEP時代と異なり暗号化のシーケンスには出てこない。だからこそ安全という話ではあるのだが、「ではどのように通信をはじめるのか」という点が問題になる。これを解決するのが、もともとはIEEE 802.1Xで標準化された鍵交換のメカニズムだ。

WPAにおけるユーザー認証と鍵交換のメカニズム

 TKIPというかWPAの場合、おおもとになるのは先に出てきたPMKであるが、これは直接的には通信には利用されない。WPAではPMKのほかに「PTK(Pairwise Transient Key)」「GTK(Group Transient Key)」、それと先ほど出てきたTemporal Key/MIC Keyが利用される。通信に使われるのはPTK以降で、PMKはPMK以下を生成するためにしか使われない。

 この辺りもパケットから鍵を分析されないための重要なファクターであるが、そうなると、アクセスポイントとクライアントの間で同じPMKを使わないと、そもそも通信ができないことになってしまう。これを解決するのが鍵交換のシーケンスとなるわけだ。

 WPAでは、ユーザー認証と鍵交換を以下のシーケンスで行う。

1.Link確立

 これはアクセスポイントとクライアントを、とりあえず繋ぐためのシーケンスである。クライアントからはSSIDを埋め込んだProbe Requestをアクセスポイントに送る。受け取ったアクセスポイントはSSIDが一致していたら、そのクライアントにProbe Responseを返す。

 ちなみにこのResponseには「RSN IN(Robust Security Network Information Element)」が付加されている。このRSN INには、アクセスポイントがサポートしている暗号化方式や改ざん検出方式が情報として含まれており、ここからクライアント側で利用できる暗号化方式を判断できる。

2.アソシエーション

 これは前々回に、WEPの認証メカニズムとして説明した共通鍵認証の方式である。実質的には意味がないため、なぜこれが残されたのかはっきりとは分からないが、とりあえず、このアソシエーションの手続きは、以下の手順で行われる。

  • クライアントからアクセスポイントに認証要求(Authentication Request)
  • アクセスポイントからクライアントに認証返答(Authentication Response)
  • クライアントからアクセスポイントにアソシエーション要求(Association Request)
  • アクセスポイントからクライアントにアソシエーション返答(Association Response)

 このアソシエーションの返答には、さまざまな付加情報が格納されている。最近はだいぶ減った気がするが、アクセスポイントとクライアントの相性問題が出る場合には、この付加情報の解釈の違いが原因であることが多いと言われている。

3.認証

 これが本番である。ここでは「4-way Handshake」と呼ばれる方法で、PMKの交換が行われる。具体的な手順は以下のようになっている。

  • クライアントからアクセスポイントにアソシエーション要求(Association Request)
  • アクセスポイントからクライアントにアソシエーション返答(Association Response)
  • アクセスポイントからクライアントに鍵メッセージ1を送信
  • クライアントからアクセスポイントに鍵メッセージ2を送信
  • アクセスポイントからクライアントに鍵メッセージ3を送信
  • クライアントからアクセスポイントに鍵メッセージ4を送信

 前半が鍵交換の準備作業、後半が鍵の交換である。これが正常に行われると、アクセスポイントとクライアントの間で、同じPMKが共有されることになる。

 一度PMKが共有されると、まずそのPMKから、クライアントとアクセスポイントの1:1の通信で利用するためのPTKが生成され、そこから1:1通信用のTemporal KeyとMIC Keyが生成される。

 次に、すべてのクライアントとアクセスポイントの間でもう一度通信が行われ、ここでGTKが生成される。このGTKを元に、ブロードキャス通信用のTemporal KeyとMIC Keyが生成される。これで、通信のために必要となるすべての鍵の準備ができたというわけだ。

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

大原 雄介

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