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 メソッドが利用できます。
WifiManager#isWpa3SaeSupported
WifiManager#isWpa3SuiteBSupported
WifiManager#isEnhancedOpenSupported
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_SUITEB192
とCONFIG_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