RP4BをWPA3でWi-Fi接続するにあたって発生した問題を調査中に収集した情報をまとめ。
この記事で言うWPA3とはWPA3-SAE、またはWPA3-Personalと呼ばれるものを指す。
TL;DR
- WPA3-SAEにはPWEの生成方式が2つ定義されている
- Hunting and Pecking方式
- Hash-to-Element方式
- Wi-Fi6E以降、6GHz帯での通信ではもっぱらH2E方式が使用される
- SAE認証に失敗しているときはPWE算出方式にも注目や!
WPA3とは
Wi-Fi Protected Access 3
その名の通り、Wi-Fiのセキュリティを担保する認証方式の一つ。
Wi-Fi Allianceが定めるセキュリティ規格のことも指す。
WPA, WPA2とあり、こいつで3代目。
この記事で主題とするPersonalと、対になるEnterpriseがある。
これらの認証方式が担うセキュリティの守備範囲は「通信の暗号化」であり、その暗号化に使用する「鍵の配送」がメイントピックになる。
無線通信技術は常に中間者攻撃の脅威に晒されており、その対抗策にあたる。
WPA3-PersonalではSAEと呼ばれる方式によってステーション(クライアント、サプリカントとも。 以下 STA)とアクセスポイント(以下 AP)間の鍵交換を行う。
SAEとは
Simultaneous Authentication of Equals
同等性同時認証、と訳されるらしいが、たいていSAEって呼ばれてる。
WPA2-PSKで露見していたサイドチャネル攻撃等への脆弱性を克服するために採用された鍵交換方式。
SAEではSTA/AP間の認証、及び共通鍵の生成にあたって、事前に共有したパスフレーズ(PSK)とMACアドレスから、楕円曲線関数から算出される値を使用する。
ここで算出される値をPassword Element(以下 PWE)という。
このPWEの算出方法について以下の2つの方式がある。
- Hunting and Pecking方式(以下 HnP方式)
- Hash-to-Element方式(以下 H2E方式)
HnPとH2E
この2者は、楕円曲線問題の解に当たる2値を算出するための方式を指している。
WPA3登場時に採用されていた方式がHnPで、H2Eはその後発に当たる。
両者ともIEEE 802.11で規定されている。
また、両者に互換性はない。
HnPに比べH2Eのほうが決定論的に解が出るためパフォーマンスに優れ、加えてHnPでは脆弱性(通称 Dragonblood)が発見されていることから、現在はH2Eを使用するのが推奨されている。
この「現在はH2Eを使用することが推奨」が、今回の問題の要因だった。
Wi-Fi6E
Wi-Fi6EはIEEE 802.11ax 通称 Wi-Fi6の拡張(Extended)として登場した通信規格。日本では2022年9月から法的に解禁された。
最大の特徴は、これまで使用されてきた2.4/5GHz帯に加え6GHz帯を使用することが出来るようになった点。
これにより、更に高速・大容量での通信が可能になるという触れ込み。
そしてここでPWE算出方式の問題に立ち返るのだが、6GHz帯ではHnP方式を認めないWi-Fi製品がほとんどになっている。
2.4/5GHzについては、後方互換性のため両方式を認めているケースがほとんどのようだが、流石に最新規格では廃されつつある模様。
たとえばCisco製ルータではPWE算出方式の指定が可能なのだが、6GHz帯を使用する場合はH2Eが強制されるようだ。
ただし、これについて明示的なソースを見つけられなかったので、あくまで「業界の風向き」に過ぎないのかも。
今回発生していた問題
色々端折るが、RP4B、というかRaspOSが標準で使用するネットワークマネージャであるNetworkManager v1.42.1がPWE算出方式の指定に関するバグを抱えており、デフォルトでHnP方式を使用してしまう問題が発生しており、そのためAPとWPA3による認証が実施できていなかった。
加えて、通信を試みていたAPが6GHz帯を指定していたためにH2Eの使用を強制しており、認証がうまくいかなかった次第。
おわりに
NW調査は最終着地地点が低レイヤになりがちなんで大変。
今回はLinux(RaspOS)だったけど、WindowsのWPAサプリカントが通常どの方式でやってんのかは知らないよ~~~~!!!!
多分、STA側は両方式実施になってると思うけどね……。
参考にしたサイト
-
WPA3のはなし|Wireless・のおと|サイレックス・テクノロジー株式会社
- めちゃくちゃ勉強になりますた