WPA3-SAE の H2E(Hash-to-Element) サポート
Posted by: otsuka
nrc7394_sw_pkg に含まれる README-H2E.md の背景と、
BC-11AH-A で H2E を設定して使用する手順を説明します。
WPA3 は WPA/WPA2 に続く WiFi のセキュリティ仕様です。
nrc7394_sw_pkg は、
暗号化は行うがパスワードは使用しない
OWE (Opportunistic Wireless Encryption)
と
WPA3 の個人向け接続(WPA3-Personal)で標準の認証方式
SAE (Simultaneous Authentication of Equals)
に対応しています。
この WPA3-SAE には Dragonblood と呼ばれる脆弱性が発見されており、これに対処するため
パスワードから認証に使用する PWE を算出する方法に
"Hash-to-Element" (H2E) という方式が追加されました。
nrc7394_sw_pkg もこの "Hash-to-Element" (H2E) に対応はしているのですが、
初期状態では「意図的に」使用しない設定にされていました。(nrc7394_sw_pkg v1.3まで)
これは、
・Linux kernel の cfg80211 は 5.10.x 以降から対応されたが、それより古い kernel を使いたい人もいる。
・wpa_supplicant 2.10 以降から対応されたが、
Raspberry Pi OS 11 (buster)の wpa_supplicant の defaul version は 2.9 なので対応していない。
ためです。
BC-11AH-A を2台使用して AP と STA に設定する場合には両方とも H2E を使用しない設定になっていたので
接続に問題は発生しませんでしたが、
他社の 11ah 製品と接続をしようとしたときその製品が H2E を有効にしている場合は接続できないことになります。
この問題を解決するためには以下の3点が必要になります。
・Raspbery Pi OS は kernel 5.10.17 に更新された 2021-03-04 release 以降の buster ベースのものを使用する。
・上記の Raspberry Pi OS に UG-7394-018-Raspberry_Pi_setup.pdf に従って nrc7394_sw_pkg を設定した後、
UG-7394-001-EVK User Guide (Host Mode).pdf の
Appendix A.
Upgrade hostapd & wpa_supplicant for supporting WPA3
の記述に従って hostapd と wpa_suppilicant の 2.10 以降(2025年9月9日時点での最新は 2.11)をインストールします。
hostapd と wpa_supplicant は先に apt install で default の 2.9 をインストールしておきます。
その後追加する形で新しい hostapd と wpa_supplicant をソースからビルドしてインストールすると
default パッケージがインストールした systemd.service ファイルをそのまま利用して
新しい hostapd と wpa_supplicant の起動・再起動を行うことができます。
この状態で、
nrc_pkg/script/conf/JP/の下の、WPA3-SAE 設定ファイル
ap_halow_sae.conf map_halow_sae.conf mp_halow_sae.conf sta_halow_sae.confの中の設定項目
sae_pwe=2を対向の接続機器と同じになるようにして接続します。 設定値の意味も含めた説明は以下のようになります。
# SAE mechanism for PWE derivation # 0 = hunting-and-pecking loop only (default without password identifier) # 1 = hash-to-element only (default with password identifier) # 2 = both hunting-and-pecking loop and hash-to-element enabled # Note: The default value is likely to change from 0 to 2 once the new # hash-to-element mechanism has received more interoperability testing. # When using SAE password identifier, the hash-to-element mechanism is used # regardless of the sae_pwe parameter value. sae_pwe=2上記の各 conf ファイルに sae_pwe の設定項目がない場合は sae_pwe=0 と設定してあるのと同じ挙動になります。 nrc7394_sw_pkg v1.3.1 では WPA3-SAE 設定ファイルに最初から sae_pwe=2 が追加されていますので、 hostapd と wpa_supplicant を 2.10 以降に更新せず 2.9 のまま使用する場合には 逆にこの sae_pwe= の設定項目をコメントアウトするか削除していただく必要があります。 そうしないと start.py で hostapd や wpa_supplicant が実行される際にエラーが発生して正常に動作しません。