WPA3 と Wi-Fi Enhanced Open

Android 10 では、Wi-Fi Alliance(WFA)による Wi-Fi Protected Access Version 3(WPA3)と Wi-Fi Enhanced Open の規格がサポートされています。詳しくは、WFA のサイトのセキュリティを参照してください。

WPA3 は、個人と企業のネットワーク向けの新たな WFA セキュリティ規格です。この規格は、最新のセキュリティ アルゴリズムや従来よりも強力な暗号スイートによる全般的な Wi-Fi セキュリティの向上を目的としています。WPA3 には、次の 2 つのパートがあります。

  • WPA3-Personal: 事前共有キー(PSK)の代わりに同時認証(SAE)を使用して、オフライン辞書攻撃、鍵回復攻撃、メッセージ偽造などの攻撃に対する強力なセキュリティによってユーザーを保護します。
  • WPA3-Enterprise: 機密性の高いセキュリティ環境のために、強力な認証方式、リンク層暗号化方式、オプションの 192 ビット セキュリティ モードを提供します。

Wi-Fi Enhanced Open は、Opportunistic Wireless Encryption(OWE)に基づいたパブリック ネットワークの新たな WFA セキュリティ規格です。カフェ、ホテル、レストラン、図書館などのパスワードで保護されていないオープン ネットワークにおいて、暗号化によるプライバシーを提供します。Enhanced Open には認証はありません。

WPA3 と Wi-Fi Enhanced Open は全般的な Wi-Fi セキュリティを改善し、既知の攻撃に対するプライバシーと堅牢性を向上させます。多くのデバイスはこうした規格にまだ対応していないため、あるいはこの機能をサポートするソフトウェア アップグレードがまだ行われていないため、WFA は次のような移行モードを提案しています。

  • WPA2 / WPA3 移行モード: サービスを提供するアクセス ポイント側で 2 つの規格を同時にサポートします。このモードでは、同一のアクセス ポイントに対して Android 10 デバイスは WPA3 を使用して接続を行い、Android 9 以前のデバイスは WPA2 を使用して接続します。
  • OWE 移行モード: サービスを提供するアクセス ポイント側で OWE とオープン規格を同時にサポートします。このモードでは、同一のアクセス ポイントに対して Android 10 デバイスは OWE を使用して接続を行い、Android 9 以下のデバイスは暗号化なしで接続します。

WPA3 と Wi-Fi Enhanced Open は、クライアント モードでのみサポートされます。

実装

WPA3 と Wi-Fi Enhanced Open をサポートするには、hardware/interfaces/wifi/supplicant/1.2/ にある Android Open Source Project(AOSP)で提供されているサプリカントの HAL Interface Design Language(HIDL)を実装します。

WPA3 と OWE をサポートするためには、次の要素が必要です。

  • SAE と OWE に対応する Linux カーネル パッチ

    • cfg80211
    • nl80211
  • SAE、SUITEB192、OWE に対応する wpa_supplicant

  • SAE、SUITEB192、OWE に対応する Wi-Fi ドライバ

  • SAE、SUITEB192、OWE に対応する Wi-Fi ファームウェア

  • WPA3 と OWE に対応する Wi-Fi チップ

Android 10 では、こうした機能がデバイスでサポートされているかどうかをアプリで判断できる公開 API メソッドが利用できます。

WifiConfiguration.java には、新たな鍵管理タイプ、ペアワイズ暗号、グループ暗号、グループ管理暗号、スイート B 暗号が含まれており、これらは OWE、WPA3-Personal、WPA3-Enterprise に必要です。

WPA3 と Wi-Fi Enhanced Open の有効化

Android フレームワークで WPA3-Personal、WPA3-Enterprise、Wi-Fi Enhanced Open を有効にする手順は次のとおりです。

  • WPA3-Personal: wpa_supplicant構成ファイルCONFIG_SAE のコンパイル オプションを含めます。

    # WPA3-Personal (SAE)
    CONFIG_SAE=y
    
  • WPA3-Enterprise: wpa_supplicant の構成ファイルに CONFIG_SUITEB192CONFIG_SUITEB のコンパイル オプションを含めます。

    # WPA3-Enterprise (SuiteB-192)
    CONFIG_SUITEB=y
    CONFIG_SUITEB192=y
    
  • Wi-Fi Enhanced Open: wpa_supplicant の構成ファイルに CONFIG_OWE のコンパイル オプションを含めます。

    # Opportunistic Wireless Encryption (OWE)
    # Experimental implementation of draft-harkins-owe-07.txt
    CONFIG_OWE=y
    

WPA3-Personal、WPA3-Enterprise、Wi-Fi Enhanced Open が有効ではない場合、ユーザーはこのタイプのネットワークを手動で追加、スキャン、接続することはできません。

検証

実装をテストするには、次のテストを実行します。

単体テスト

SupplicantStaIfaceHalTest を実行して、WPA3 と OWE の機能フラグの動作を確認します。

atest SupplicantStaIfaceHalTest

WifiManagerTest を実行して、この機能に対する公開 API の動作を確認します。

atest WifiManagerTest

統合テスト(ACTS)

統合テストを実行するには、tools/test/connectivity/acts/tests/google/wifi にある Android Comms Test Suite(ACTS)ファイル WifiWpa3OweTest.py を使用します。

VTS テスト

VtsHalWifiSupplicantV1_2Host を実行して、サプリカントの HAL v1.2 の動作をテストします。

vts-tradefed run commandAndExit vts --skip-all-system-status-check --primary-abi-only --skip-preconditions --module VtsHalWifiSupplicantV1_2Host