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

Android 12 では、Transition Disable インジケーションがサポートされています。これは、デバイスに WPA2 を使用せず、WPA3 を使用するように指示する仕組みです。デバイスは、このインジケーションを受信すると、WPA3 を使用して、移行モードをサポートする WPA3 ネットワークに接続します。Android 12 は、WPA3 Hash-to-Element(H2E)認証交換もサポートしています。詳しくは、WPA3 の仕様をご覧ください。

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

実装

WPA3 と Wi-Fi Enhanced Open をサポートするには、サプリカントの HAL インターフェースを実装します。Android 13 以降では、このインターフェースは AIDL を HAL の定義に使用します。Android 13 より前のリリースでは、インターフェースとベンダー パーティションは HIDL を使用します。HIDL インターフェースは hardware/interfaces/wifi/supplicant/1.3/ に、AIDL インターフェースは hardware/interfaces/wifi/supplicant/aidl/ にあります。

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

VTS テスト

HIDL インターフェースが実装されている場合は、次のコマンドを実行します。

atest VtsHalWifiSupplicantV1_3TargetTest

AIDL インターフェースが実装されている場合は、次のコマンドを実行します。

atest VtsHalWifiSupplicantStaIfaceTargetTest