はじめに
Wi-Fi Allianceでは、Wi-Fi需要の高まりに伴うセキュリティー向上の観点からWi-Fi CERTIFIED WPA3™を発表しました。
その後、認証試験においてはWPA3はオプショナルの状態でしたが2020年7月1日から必須の項目となります。
今回は、WPA3のWPA3-personalをQualcomm社のWi-Fi製品を使用し動作させてみます。
その際のコンソールやログを確認してWPA3-personalで接続できたかの確認方法、
WPA2-PSKとどのように変わっているのか?などを解説したいと思います。
WPA3とは?
WPA2の後継となる、Wi-Fiのセキュリティープロトコルです。
パスワード保護機能/高度な暗号化プロトコル/PMF(ProtectedeManagementFrame)を用い、強度を高めたセキュリティーを提供します。
WPA3では、WPA2-PSKに相当するWPA3-personalとWPA2-EAPに相当するWPA3-Enterpriseを提供します。
また、Transition modeによりWPA2との互換性を維持し古いデバイスとの接続性を保証します。
WPA3-personalとは?
WPA2-PSKの後継となる、パスワード(PSK:Pre-Shared Key)を利用したWPA3でのセキュリティープロトコルです。
WPA2-PSKまでは主にアクセスポイントに記載されているパスワード(PSK)をユーザーが入力しPSKから固定のPMK(Pairwise Master Key)を生成していました(PSK=PMK)が、WPA3-personalでは鍵交換プロトコルにSAEアルゴリズムを利用することにより、PSKから接続毎に異なるPMKを生成するようになりました。
※同様の技術がWi-Fi CERTIFIED Enhanced Open™でも使用されています。
これにより、以下の改善が図られました。
安易なパスワードの解読による危険性を下げ辞書攻撃による耐性を向上
パスワードの漏洩による過去の通信データの復号化の防止
その他、PMFによるマネージメントフレームの暗号化も提供されています。
また、WPA2とWPA3の両方をカバーするTransition modeをサポートすることによりWPA2-PSKでの接続性も維持しています。
今回は、Qualcomm社のQCA9377の評価ボードを使用しWPA3-personalでの接続方法をご紹介いたします。
事前準備
今回は、Qualcomm社のQCA9377のUSBインターフェースのモジュールを使用しました。
※SDIOインターフェースのモジュールもありますが、PC側にSDIOポートが必要なので今回はUSBのモジュールを使用します。
Qualcomm社のWi-Fi製品のラインナップについてはこちらのリンクからご確認ください。

QCA9377 USBインターフェースモジュール
QCA9377モジュール/SDK/セットアップマニュアルをご要望の場合は、ページ下部の問い合わせボタンより弊社までお問い合わせ下さい。
今回はUSBモジュールを使用するので、PCにQualcomm社推奨のUbuntu14.04+kernel4.14をセットアップしておきます。
SDKを展開しマニュアルの手順で進めると、WLANドライバー/Firmware/wpa_supplicantが生成されます。
以下のパスに成果物をコピー
/lib/modules/wlan.ko
/lib/firmware/wlan/qcom_cfg.ini
/lib/firmware/*.bin
/bin/wpa_supplicant
WPA3-personalを利用するには、以前のWLANドライバー/ファームウェア/wpa_supplicantからそれぞれ追加の設定/処理が必要になります。
QualcommSDKによりそれらの設定/処理がされたモジュールが生成されます。
wpa_supplicant.confにネットワーク情報を追加
network={
ssid="wpa3-ap"
key_mgmt=SAE
psk="1234567890"
pairwise=CCMP
priority=10
ieee80211w=2
}
WPA3-personalで接続するためにWPA2-PSKと異なる必須の項目は”key_mgmt”と”ieee80211w”です。
WPA3ではPMFが必須(Transition modeを除く)となるため“ieee80211w=2(Required)”の設定が必要です。
アクセスポイント側の設定
アクセスポイントの設定を変更します。
機種によって設定方法が異なります。
※2020年6月現在、様々なメーカーからWPA3-personal対応製品が出ています。
接続
それでは接続してみます。
今回は、wpa_supplicant.confのネットワーク情報にすでにアクセスポイントの情報を入力していますので、wpa_supplicant起動直後のスキャンで自動で接続されます。
$sudo service network-manager stop
$sudo modprobe cfg80211
$sudo insmod /lib/modules/wlan.ko
$sudo wpa_supplicant -ddd -K -i wlan0 -D nl80211 -c <wpa_supplicant.confのパス> &
接続情報の確認
wpa_cliを使用して接続情報を確認してみます。
$sudo wpa_cli -i wlan0 status

key_mgmtがSAEになっているのが確認できます。
pmfはTransition mode以外は必須を意味する’2(Required)’に設定されます。
(ステーション側の設定(ieee80211w=2)とアクセスポイント側の設定のネゴシエーションで決まります。)
以下の2つのパラメーターは未設定のため初期値が使用されます。
mgmt_group_cipher=BIP
sae_group=19
wpa_supplicantのログ
wpa_supplicantの起動パラメーターに”-K”オプションを設定することでキー情報(PMK)がログに出力されます。

1回目の接続

2回目の接続
WPA2-PSKではユーザーが入力したパスワードから毎回同じPMKを生成しますが、WPA3-personalではパスワードをもとにAuthenticationフェーズでSAEを使用し毎回異なるPMKを生成します。
これによりパスワードが漏洩したとしてもPMKが毎回変更されるため盗聴・過去の通信記録の復号化がされなくなります。
WiresharkでSnifferログを確認

WPA2のAuthentication frameではAuthentication algorithmに”Open System”を指定します。
WPA3では”Simultaneous Authentication of Equals(SAE)”を指定し、Authentication frameを2回(Commit,Confirm)やり取りします。
この間にDragonfly Key Exchangeを使用しキー(PMK)を生成します。
Authentication frameのやり取りが完了すると、Association frameのAKMでSAEを指定します。
その後、WPA2同様4wayハンドシェイクでフレームの暗号化で使用する各種キーを生成します。
まとめ
WPA3-personalはSAEを採用することでPMKの推測を不可能にし、パスワード認証に対するセキュリティを向上させました。
今後は、Wi-Fi Alliance認証試験でWPA3が必須項目となり、WPA3に対する市場の要求の高まりが予想されます。
Qualcomm社ではWPA3-personal対応製品のラインナップを揃えております。
ご興味がありましたら以下までお問い合わせください。
お問い合わせ
本記事に関してご質問などありましたら、以下より問い合わせください。
Qualcomm メーカー情報Topへ
Qualcomm メーカー情報Topページへ戻りたい方は、以下をクリックください。