Passpoint (無線基地台 2.0)

PasspointWi-Fi Alliance (WFA) 通訊協定,可讓行動裝置探索並驗證提供網際網路連線的 Wi-Fi 無線基地台。

裝置支援

如要支援 Passpoint,裝置製造商必須實作供應器介面。自 Android 13 起,介面會使用 AIDL 做為 HAL 定義。如果是 Android 13 以下版本,介面和供應商分區會使用 HIDL。HIDL 檔案位於 hardware/interfaces/supplicant/1.x,而 AIDL 檔案位於 hardware/interfaces/supplicant/aidl。該 Proxy 支援 802.11u 標準,特別是通用通告服務 (GAS) 和存取網路查詢通訊協定 (ANQP) 等網路探索和選取功能。

導入作業

Android 11 以上版本

如要在搭載 Android 11 以上版本的裝置上支援 Passpoint,裝置製造商必須支援 802.11u 的韌體。支援 Passpoint 的其他所有規定都已納入 Android 開放原始碼計畫中。

Android 10 以下版本

如果是搭載 Android 10 以下版本的裝置,裝置製造商必須同時提供架構和 HAL/韌體支援:

  • 架構:啟用 Passpoint (需要功能旗標)
  • 韌體:支援 802.11u

如要支援 Passpoint,請實作 Wi-Fi HAL 並啟用 Passpoint 功能旗標。在 device/<oem>/<device> 中的 device.mk 中,修改 PRODUCT_COPY_FILES 環境變數,以支援 Passpoint 功能:

PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml

支援 Passpoint 的其他所有規定都已納入 Android 開放原始碼計畫中。

驗證

如要驗證 Passpoint 功能的實作結果,請使用 Android Comms Test Suite (ACTS) 中提供的單元測試和整合測試組合。

單元測試

執行以下 Passpoint 套件單元測試。

服務測試:

atest com.android.server.wifi.hotspot2

管理員測試:

atest android.net.wifi.hotspot2

整合測試 (ACTS)

tools/test/connectivity/acts_tests/tests/google/wifi/WifiPasspointTest.py 中的 ACTS Passpoint 測試套件會實作一系列功能測試。

Passpoint R1 佈建

自 Android 6.0 版起,Android 已支援 Passpoint R1,可讓您透過網頁式下載含有設定檔和憑證資訊的特殊檔案來佈建 Passpoint R1 (版本 1) 憑證。用戶端會自動啟動專門用於 Wi-Fi 資訊的安裝程式,讓使用者先查看部分資訊,再決定是否接受或拒絕內容。

檔案中包含的設定檔資訊,可用來比對從已啟用 Passpoint 存取點擷取的資料,並自動將憑證套用到任何相符的網路。

Android 參照實作支援 EAP-TTLS、EAP-TLS、EAP-SIM、EAP-AKA 和 EAP-AKA'。

下載機制

Passpoint 設定檔必須託管於網路伺服器,且應使用傳輸層安全標準 (TLS) (HTTPS) 保護,因為其中可能包含明文密碼或私密金鑰資料。內容由包裝的多部分 MIME 文字組成,以 UTF-8 表示,並根據 RFC-2045 第 6.8 節使用 Base64 編碼進行編碼。

用戶端會使用下列 HTTP 標頭欄位自動在裝置上啟動 Wi-Fi 安裝程式:

  • Content-Type」必須設為「application/x-wifi-config」。
  • Content-Transfer-Encoding」必須設為「base64」。
  • 無法設定「Content-Disposition」。

用來擷取檔案的 HTTP 方法必須為 GET。只要瀏覽器的 HTTP GET 收到含有這些 MIME 標頭的回應,就會啟動安裝應用程式。您必須藉由輕觸按鈕 (例如按鈕) 的方式觸發下載作業 (系統不支援自動重新導向至下載網址)。這是 Google Chrome 特有的行為;其他網路瀏覽器不一定會提供類似功能。

檔案組成

Base64 編碼內容必須包含 MIME 多部分內容,且 Content-Typemultipart/mixed。下列部分會構成多部分內容的個別部分。

零件 Content-Type (較少引號) 必要 說明
設定檔 application/x-passpoint-profile 一律允許 採用 OMA-DM SyncML 格式的酬載,內含 Passpoint R1 PerProviderSubscription 格式化的 MO,適用於 HomeSPCredential
信任憑證 application/x-x509-ca-cert EAP-TLS 和 EAP-TTLS 的必要欄位 單一 X.509v3 Base64 編碼憑證酬載。
EAP-TLS 金鑰 application/x-pkcs12 EAP-TLS 的必要設定 採用 Base64 編碼的 PKCS #12 ASN.1 結構,內含至少具備用戶端憑證和相關聯私密金鑰的用戶端憑證鏈。PKCS 12 容器以及私密金鑰及憑證都必須採用純文字格式,且不需輸入密碼。

「Profile」區段必須以 Base64 編碼和 UTF-8 編碼的 XML 文字傳輸,且須在 Passpoint R2 技術規格 1.0.0 第 9.1 版中指定 HomeSPCredential 子樹狀結構的部分。

頂層節點必須是 MgmtTree,且立即子節點必須為 PerProviderSubscription。XML 檔案範例會顯示在設定檔 OMA-DM XML 中。

下列子樹狀結構節點於 HomeSP 下使用:

  • FriendlyName:必須設定,做為顯示文字
  • FQDN:必填
  • RoamingConsortiumOI

下列子樹狀結構節點於 Credential 下使用:

  • Realm:必須是非空白字串
  • UsernamePassword:已設定下列節點的 EAP-TTLS 必須提供此項目:

    • Username:包含使用者名稱的字串
    • Password:Base64 編碼字串 (設為 cGFzc3dvcmQ=,「password」的 Base64 編碼字串,如下方範例所示)
    • EAPMethod/EAPType:必須設為 21
    • EAPMethod/InnerMethod:必須設為 PAPCHAPMS-CHAPMS-CHAP-V2 其中之一
  • DigitalCertificate:EAP-TLS 為必要項目。必須設定下列節點:

    • CertificateType 已設為「x509v3
    • 在 EAP-TLS 金鑰 MIME 部分中,CertSHA256Fingerprint 已設為正確的用戶端憑證 SHA-256 摘要
  • SIM:EAP-SIM、EAP-AKA 和 EAP-AKA' 必須為此值。EAPType 欄位必須設為適當的 EAP 類型,且 IMSI 必須與佈建時安裝在裝置上的其中一個 SIM 卡的 IMSI 相符。IMSI 字串可完全由十進位數字組成,強制進行完全相等比對,也可以為 5 或 6 個十進位數字加上星號 (*),僅將 IMSI 比對結果放寬至 MCC/MNC。舉例來說,IMSI 字串 123456* 會比對使用 MCC 為 123 且 MNC 為 456 的任何 SIM 卡。

Android 11 導入多項功能,讓 Passpoint R1 佈建作業更具彈性。

獨立驗證、授權和會計 (AAA) 網域名稱

如果 Passpoint 網路管理員需要透過存取網路查詢通訊協定 (ANQP) 單獨指定 AAA 網域名稱 (由網路通告的完整網域名稱 (FQDN),可在 Extension 子樹狀結構下的新節點中指定以半形分號分隔的 FQDN 清單。這是選用節點,搭載 Android 10 以下版本的裝置會忽略這個節點。

  • Android:Android 擴充功能子樹狀結構

    • AAAServerTrustedNames:如果 AAA 伺服器信任名稱已設定下列節點,就必須這麼做:

      • FQDN:包含 AAA 伺服器信任名稱的字串。請使用分號分隔信任的名稱。例如 example.org;example.com
自行簽署的私人根 CA
Passpoint 網路管理員在內部管理憑證時,可以使用私人自行簽署的 CA 佈建設定檔,以便進行 AAA 驗證。
允許安裝沒有根 CA 憑證的設定檔
附加至設定檔的根 CA 憑證會用於 AAA 伺服器驗證作業。Passpoint 網路管理員若希望藉由公開信任的根 CA 進行 AAA 伺服器驗證,便可在沒有根 CA 憑證的情況下佈建設定檔。在這種情況下,系統會根據信任存放區安裝的公開根 CA 憑證驗證 AAA 伺服器憑證。

Passpoint R2 佈建

Android 10 開始支援 Passpoint R2 功能。Passpoint R2 會實作線上註冊 (OSU),這是佈建新 Passpoint 設定檔的標準方法。Android 10 以上版本支援使用與開放式 OSU ESS 上的 SOAP-XML 通訊協定佈建 EAP-TTLS 設定檔。

支援的 Passpoint R2 功能只需要 Android 開放原始碼計畫的參考代碼 (無需其他驅動程式或韌體支援)。Android 開放原始碼計畫的參考程式碼也在「設定」應用程式中,提供 Passpoint R2 UI 的預設實作方式。

當 Android 偵測到 Passpoint R2 存取點時,Android 架構會:

  1. 顯示 AP 在 Wi-Fi 選取器中公告的服務供應商清單 (以及顯示 SSID)。
  2. 提示使用者輕觸其中一個服務供應商來設定 Passpoint 設定檔。
  3. 引導使用者完成 Passpoint 設定檔設定流程。
  4. 在成功完成時安裝產生的 Passpoint 設定檔。
  5. 使用新佈建的 Passpoint 設定檔與 Passpoint 網路建立關聯。

Passpoint R3 功能

Android 12 推出了下列 Passpoint R3 功能,旨在改善使用者體驗,並允許網路遵守當地法律:

條款及細則

在某些地點和提供網路存取權的途徑中,您必須依法接受條款及細則。這項功能可讓網路部署項目以安全的 Passpoint 網路,取代使用開放網路的不安全網頁認證入口。需要接受條款及細則時,系統會向使用者顯示通知。

條款及細則網址必須指向使用 HTTPS 的安全網站。 如果網址指向不安全的網站,架構會立即中斷連線並封鎖網路。

場地資訊網址

允許網路業者和場地為使用者提供其他資訊,例如場地地圖、目錄、促銷和優待券。連上網路後,使用者會看到通知。

場地資訊網址必須指向使用 HTTPS 的安全網站。 如果網址指向不安全的網站,架構會忽略網址,且不會顯示通知。

其他 Passpoint 功能

Android 11 推出了下列 Passpoint 功能,改善使用者體驗、耗電量和部署彈性。

到期日強制執行和通知
強制設定設定檔的到期日,有助於架構避免因憑證過期,而自動連線至存取點,導致存取失敗。這樣可以防止播出時間,並節省電池和後端頻寬。只要符合個人資料的網路位於有效範圍內,且設定檔已過期,這個架構就會向使用者顯示通知。
使用相同 FQDN 的多個剖析檔
如果電信業者部署 Passpoint 網路,並使用多個公用土地行動網路 (PLMN) ID,即可佈建多個有相同 FQDN 的 Passpoint 設定檔 (每個 PLMN ID 都會與已安裝的 SIM 卡自動比對),並用來連線至網路。

Android 12 推出了下列 Passpoint 功能,可提升使用者體驗、耗電量和部署彈性:

裝飾身分前置字串
透過裝飾前置字串的網路進行驗證時,網路運算子可以更新網路存取識別碼 (NAI),以便透過 AAA 網路中的多個 Proxy 執行明確轉送作業 (請參閱 RFC 7542)。Android 12 會根據 PPS-MO 擴充功能的 WBA 規格實作這項功能。
即將進行解除驗證的立即處理
允許網路運算子向裝置發送信號,告知裝置在特定時間長度 (透過逾時延遲指定) 驗證網路時,這項服務無法使用該服務。收到這個信號後,在逾時延遲到期前,裝置不會嘗試使用相同憑證重新連線至網路。相反地,不支援這項功能的裝置可能會在服務無法使用時嘗試重複重新連上網路。

OMA-DM PerProviderSubscription-MO XML 設定檔範例

含有使用者名稱/密碼憑證 (EAP-TTLS) 的設定檔

以下範例說明含有下列內容的網路設定檔:

  • 網路友善名稱已設為「Example Network
  • FQDN 已設為「hotspot.example.net
  • 漫遊聯盟 OI (用於漫遊)
  • 使用者名稱 user 的憑證、使用 Base64 編碼的密碼 password,且運作範圍設為 example.net
  • EAP 方法已設為 21 (EAP-TTLS)
  • 第 2 階段內部方法已設為 MS-CHAP-V2
  • 已將其他 AAA 網域名稱設為「trusted.com」和「trusted.net
<MgmtTree xmlns="syncml:dmddf1.2">
  <VerDTD>1.2</VerDTD>
  <Node>
    <NodeName>PerProviderSubscription</NodeName>
    <RTProperties>
      <Type>
        <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
      </Type>
    </RTProperties>
    <Node>
      <NodeName>i001</NodeName>
      <Node>
        <NodeName>HomeSP</NodeName>
        <Node>
          <NodeName>FriendlyName</NodeName>
          <Value>Example Network</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>hotspot.example.net</Value>
        </Node>
        <Node>
          <NodeName>RoamingConsortiumOI</NodeName>
          <Value>112233,445566</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>example.net</Value>
        </Node>
        <Node>
          <NodeName>UsernamePassword</NodeName>
          <Node>
            <NodeName>Username</NodeName>
            <Value>user</Value>
          </Node>
          <Node>
            <NodeName>Password</NodeName>
            <Value>cGFzc3dvcmQ=</Value>
          </Node>
          <Node>
            <NodeName>EAPMethod</NodeName>
            <Node>
              <NodeName>EAPType</NodeName>
              <Value>21</Value>
            </Node>
            <Node>
              <NodeName>InnerMethod</NodeName>
              <Value>MS-CHAP-V2</Value>
            </Node>
          </Node>
        </Node>
      </Node>
      <Node>
        <NodeName>Extension</NodeName>
        <Node>
            <NodeName>Android</NodeName>
            <Node>
                <NodeName>AAAServerTrustedNames</NodeName>
                <Node>
                    <NodeName>FQDN</NodeName>
                    <Value>trusted.com;trusted.net</Value>
                </Node>
            </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

含有數位憑證憑證 (EAP-TLS) 的設定檔

以下範例說明含有下列內容的網路設定檔:

  • 網路友善名稱已設為「GlobalRoaming
  • FQDN 已設為「globalroaming.net
  • 漫遊聯盟 OI (用於漫遊)
  • 領域已設為「users.globalroaming.net
  • 具有指定指紋的數位憑證憑證
<MgmtTree xmlns="syncml:dmddf1.2">
  <VerDTD>1.2</VerDTD>
  <Node>
    <NodeName>PerProviderSubscription</NodeName>
    <RTProperties>
      <Type>
        <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
      </Type>
    </RTProperties>
    <Node>
      <NodeName>i001</NodeName>
      <Node>
        <NodeName>HomeSP</NodeName>
        <Node>
          <NodeName>FriendlyName</NodeName>
          <Value>GlobalRoaming</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>globalroaming.net</Value>
        </Node>
        <Node>
          <NodeName>RoamingConsortiumOI</NodeName>
          <Value>FFEEDDCC0,FFEEDDCC1,009999,008888</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>users.globalroaming.net</Value>
        </Node>
        <Node>
          <NodeName>DigitalCertificate</NodeName>
          <Node>
            <NodeName>CertificateType</NodeName>
            <Value>x509v3</Value>
          </Node>
          <Node>
            <NodeName>CertSHA256Fingerprint</NodeName>
            <Value>0ef08a3d2118700474ca51fa25dc5e6d3d63d779aaad8238b608a853761da533</Value>
          </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

含有 SIM 憑證 (EAP-AKA) 的設定檔

以下範例說明含有下列內容的網路設定檔:

  • 網路友善名稱已設為「Purple Passpoint
  • FQDN 已設為「wlan.mnc888.mcc999.3gppnetwork.org
  • SIM 憑證 (PLMN ID 為 999888)
  • EAP 方法已設為 23 (EAP-AKA)
<MgmtTree xmlns="syncml:dmddf1.2">
  <VerDTD>1.2</VerDTD>
  <Node>
    <NodeName>PerProviderSubscription</NodeName>
    <RTProperties>
      <Type>
        <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
      </Type>
    </RTProperties>
    <Node>
      <NodeName>i001</NodeName>
      <Node>
        <NodeName>HomeSP</NodeName>
        <Node>
          <NodeName>FriendlyName</NodeName>
          <Value>Purple Passpoint</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>purplewifi.com</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>wlan.mnc888.mcc999.3gppnetwork.org</Value>
        </Node>
        <Node>
          <NodeName>SIM</NodeName>
          <Node>
            <NodeName>IMSI</NodeName>
            <Value>999888*</Value>
          </Node>
          <Node>
            <NodeName>EAPType</NodeName>
            <Value>23</Value>
          </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

驗證建議

如果裝置搭載 Android 8.x 或 Android 9,且使用 Passpoint R1 EAP-SIM、EAP-AKA 或 EAP-AKA 設定檔,則無法自動連線至 Passpoint 網路。這項問題會減少 Wi-Fi 卸載,進而影響使用者、電信業者和服務。

區隔 影響 影響程度
電信業者和 Passpoint 服務供應商 行動網路的負載增加。 使用 Passpoint R1 的任何電信業者。
使用者 錯失自動連線至電信業者 Wi-Fi 存取點 (AP) 的商機,導致數據費用增加。 透過支援 Passpoint R1 的電信業者網路執行裝置的任何使用者。

失敗原因

Passpoint 會指定一種機制,將通告 (ANQP) 服務供應商與裝置上安裝的設定檔進行比對。下列適用於 EAP-SIM、EAP-AKA 和 EAP-AKA 的比對規則是一組特別著重在 EAP-SIM/AKA/AKA 失敗的規則:

If the FQDN (Fully Qualified Domain Name) matches
    then the service is a Home Service Provider.
Else: If the PLMN ID (3GPP Network) matches
    then the service is a Roaming Service Provider.

第二項條件已在 Android 8.0 中修改:

Else: If the PLMN ID (3GPP Network) matches AND the NAI Realm matches
    then the service is a Roaming Service Provider.

修改後,系統會觀察到與先前合作的服務供應商不相符,因此 Passpoint 裝置不會自動連線。

解決方法

為解決比對條件經過修改的問題,電信業者和服務供應商需要在 Passpoint AP 發布的資訊中加入網路存取 ID (NAI) 領域。

建議的解決方法是讓網路服務供應商實作網路端解決方法,縮短部署時間。裝置端的解決方法取決於原始設備製造商 (OEM) 從 Android 開放原始碼計畫挑選變更清單 (CL),然後更新欄位中的裝置。

為電信業者和 Passpoint 服務供應商提供網路修正服務

如要使用網路端解決方法,必須重新設定網路以新增 NAI 運作範圍 ANQP 元素,如下所示。Passpoint 規格不需要 NAI 領域 ANQP 元素,但加入這個屬性時符合 Passpoint 規格,因此符合規格的用戶端實作不應中斷。

  1. 新增 NAI 領域 ANQP 元素。
  2. 設定 NAI 領域子欄位,使其與裝置上安裝的設定檔 Realm 相符。
  3. 根據每種 EAP 類型設定下列資訊:

    • EAP-TTLS:設定 EAPMethod(21) 和支援的內部驗證類型 (PAPCHAPMS-CHAPMS-CHAP-V2)
    • EAP-TLS:設定 EAPMethod(13)
    • EAP-SIM:設定 EAPMethod(18)
    • EAP-AKA:設定 EAPMethod(23)
    • EAP-AKA':設定 EAPMethod(50)

針對原始設備製造商 (OEM) 的裝置/開放原始碼計畫修正項目

如要實作裝置端解決方法,原始設備製造商 (OEM) 需要選擇修補程式 CL aosp/718508。這個修補程式可套用在下列版本的基礎上 (不適用於 Android 10 以上版本):

  • Android 9
  • Android 8.x 版

收到修補程式後,原始設備製造商 (OEM) 必須更新實地裝置。