期待のネット新技術

ボタンを押すとSSID&パスフレーズはどうやってやり取りされる? 「WPS」の接続手順

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

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

 今回は、ボタンを押すだけでESSIDとパスフレーズを交換する標準規格として、2007年1月にリリースされ、主流となった「WPS」における、ルーター/アクセスポイントとクライアントの間の接続手順について解説する。(編集部)

「WPS」でクライアントにパスフレーズを手入力したときの接続手順

 ESSID・パスフレーズ交換の標準規格として前回紹介した「WPS」は、どのようなプロトコルなのだろうか。WPSのSpecificationを読むと、さまざまなパターンが網羅されている。まずはアクセスポイントが、外部に認証サーバーを持たないスタンドアロンの場合に、パスフレーズを手入力した場合の接続手順が以下となる。

セットアップ済のアクセスポイントが「AP/Register」、このアクセスポイントに接続したいクライアントが「Enrollee」、操作を行うのが「User」となる。出典はWi-Fi Allianceの"Wi-Fi Protected Setup Specification Version 1.0h December 2006"

 セットアップ済のアクセスポイントである「AP/Register」は、定期的にBeaconを発信している。これを受信したクライアントの「Enrollee」は、アクセスポイントに対してProbeリクエストを送信し、これを受け取ったアクセスポイントはProbe-Responseを返す。

 ユーザーはこの段階で、クライアントの入力画面にパスフレーズ(パスワード)を入力しておく。さて、クライアントはまずEAPOL-Startメッセージを送信し、IEEE 802.1XのAuthentificationに準じた認証を開始する。これに続くEAP-Request/Identityと、その返答であるEAP-Response/Identityによって認証が完了し、クライアントがアクセスポイントのパスフレーズを正しく知っていることが確認できる流れだ。

 認証の完了に続き、一連の8way Message Handshakeが以下の手順で行われる。

  1. M1/M2:Public KeyとRF Bandを交換
  2. M3/M4:クライアントのパスフレーズのHashを前半と後半に分けて交換
  3. M5/M6:PMKのNonce 1/2を交換
  4. M7/M8:BSSIDとNetwork Key Indexなどを交換

 このケースは、そもそもアクセスポイントのパスフレーズをユーザーが知っている前提であって、それを入力する方式となるため、SSID/ESSIDやパスフレーズの交換といった手順は含まれていない。

 ちなみに、最後がEAP-Failで終了しているのは、これによってIEEE 802.1Xの認証作業を終了(中断)するという通知で、認証に失敗したというわけではない。

「WPS」でボタンを押したときの接続手順

 WPSでは、プッシュボタン操作のことを「PBC(Push Button Configuration)」と称している。WPSボタンでは、押して接続認証を行う場合に、以下のような流れとなることを想定している。

  1. クライアントがWPSボタンを押す(もしくはPCユーティリティのGUIなどからこれに相当する操作を行う)
  2. 「(クライアントからアクセスポイントまで)歩いて行く時間」として定められた120秒以内に、アクセスポイントのWPSボタンを押す
  3. クライアントはWPSボタンが押されたことを認識し、登録の動作を行う
  4. 無事登録できたら、クライアントとアクセスポイントはそれぞれそれを示す

 技術的には、クライアント側はWPS登録モードに入ったからといって、すぐさま登録の動作に入る必要はない。というか、アクセスポイント側でのボタン操作を待たないと、登録の動作には入れないわけだ。

 その代わり、近隣のアクセスポイントがPBCモードに入ったことを検知するため、IEEE 802.11のすべてのチャネルのスキャン動作を行うことが求められている。この際に、クライアントはDevice Password IDを送り出して、PBCモードに入っていることを示す。

 これを受信してPBCモードに入ったアクセスポイントは、PBC Device Password IDを入れたProbe Messageを送り出し、クライアントにPBC動作に入っていることを通知する。このProbe Messageを受け取ることで、アクセスポイントとクライアントが登録の動作を開始できる仕組みだ。

 なお、この際の制約事項として、クライアントが2つ以上のアクセスポイントがPBCモードに入っていることを検知した(Session Overlap)場合には、PBCモードを中断(Abort)することが必須となっている。

 これは当然と言えば当然の動作と言える。例えば、アクセスポイントとリピーターの組み合わせている場合や、複数のアクセスポイントを同一のESSIDで運用している場合、メッシュ構成にしている場合などもあり得るわけだ。さらに、デュアルバンドに対応するアクセスポイントには、2.4GHz帯と5GHzで同時にPCBモードによるレスポンスを返すものもある。しかし、複数ある周波数帯ごとにProbe Messageが返ってきても、アクセスポイントの送り出すBeaconのUUIDとProbeのUUIDが一致している場合に限って同一のものとして扱う、という例外規定もある。

 さて、めでたくクライアントとアクセスポイントがお互いにPBCモードに入った後の手順が以下となる。ここではアクセスポイントと認証サーバーが別個の「EAPモード」での図となるが、スタンドアロンの場合はAPとRegistrarが1つの箱に入っていると考えればいい。

 基本的な流れは、クライアントにパスフレーズを手入力したときの接続手順とほぼ同じで、最初にWPSボタンを押されたことに対応してUPnPイベントが発生する点が異なる程度だ。

 ただ、よく見ると、最後のEAP-Requestが、M8から、{M8,credentials}に変わっているのが分かるかと思う。PBCモードでない場合のM8の基本フォーマットは上の表の通りシンプルなものだが、PBCモードに入るとのところに、以下のような内容が追加される。

 これによって、ESSIDやパスフレーズなどがアクセスポイントからクライアントに渡され、以後はこれを利用して通信ができるようになるわけだ。ちなみに先ほどの説明で、M3/M4ではパスフレーズのHash、M5/M6ではPMKのNonceを交換しているが、PBCモードだとデバイス側は当然パスフレーズを知らないしPMKも作れない。このため、PBCモードに入っている場合、Device Passwordには“00000000”を使う、ということになっている。

登録完了を示すLED点灯の仕様

 ちなみに、PBCモードの最後は「無事登録できたら、クライアントとアクセスポイントはそれぞれそれを示す」とされているが、実はこれにも規定がある。以下の図がそれで、可能ならば赤/黄色/緑の3つのLEDを使い、接続中/エラー/Session Overlap/成功を示すというものだ。

 コスト面の要求からは、LED1つの場合の点灯パターンも示されてはいるが、色を変えた方が分かりやすいとは思う。例えば、筆者宅にあるネットギアジャパンのWi-Fiルーター「R6350」は、天面パネルにWi-FiとWPSのLEDが用意されていて、以下のように説明されている。

  • 緑点灯:Wi-Fiはオンの状態
  • 緑点滅:Wi-Fi通信中またはWPS接続中
  • 消灯:Wi-Fiはオフの状態

 つまり、エラーあるいはSesson Overlapの状態は示されないようだ。もっともこの状態表示は、仕様によれば必須とはされておらず、「WPSの認識に成功/失敗したことをユーザーにフィードバックする手段が必要」との緩い規定になっている。

 実際、ネットギアの製品では、WPSの設定をWebの設定画面で行うことを念頭に置いており、LED表示は最小限でいいと割り切っているようだ。

 ということで、こうしたWPSの仕様が2007年1月にリリースされ、国内外のメーカーが、これをサポートし始めた。バッファローの「AOSS」やNECアクセステクニカ(現NECプラットフォームズ)の「らくらく無線スタート」も、WPSと併用され、どちらを用いても接続可能となったことで、業界的にはこのWPSが主流になっていった。

 とはいっても、国内で言えばAOSSとらくらく無線スタートが圧倒的なシェアを握ってしまった関係で、例えば、バッファローは今でもAOSSの提供を継続している。一方、WPSは2010年に「WPS 2.0」へ進化し、2012年にはWPS 1.0の脆弱性も発見された。次回はこのあたりを解説しよう。

大原 雄介

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