Passpoint (無線基地台 2.0)

Passpoint 指的是 Wi-Fi 聯盟 (WFA) 通訊協定,可讓行動裝置探索並驗證 Wi-Fi 提供網路連線的無線基地台

裝置支援

如要支援 Passpoint,裝置製造商 到提供介面自 Android 13 起, 介面會使用 AIDL 做為 HAL 定義 針對 Android 13 以下版本, 介面和供應商分區會使用 HIDL。 HIDL 檔案位於「hardware/interfaces/supplicant/1.x」中 AIDL 檔案則位於 hardware/interfaces/supplicant/aidl。 超級節點支援 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 功能的實作結果,請執行以下指令: Passpoint 套件單元測試:

服務測試:

atest com.android.server.wifi.hotspot2

管理員測試:

atest android.net.wifi.hotspot2

Passpoint R1 佈建

自 Android 6.0 版起,Android 已支援 Passpoint R1,以便進行佈建 並透過網頁下載 這個特殊檔案內含設定檔和憑證資訊。用戶端 會自動啟動特殊的 Wi-Fi 資訊安裝程式 使用者在接受或拒絕 內容。

檔案中包含的設定檔資訊會用來比對資料 且憑證會從已啟用 Passpoint 的存取點擷取而來,而憑證已 這個規則會自動套用到任何相符的聯播網

Android 參考實作支援 EAP-TTLS、EAP-TLS、EAP-SIM、 EAP-AKA 和 EAP-AKA'.

下載機制

Passpoint 設定檔必須由網路伺服器代管,且 受到 TLS (HTTPS) 保護,因為可能含有明文密碼或 私密金鑰資料內容是由包裝的多部分 MIME 文字組成 。

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

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

用來擷取檔案的 HTTP 方法必須為 GET。每當有 HTTP GET 要求 瀏覽器收到含有這些 MIME 標頭的回應,安裝應用程式 已開始。您必須輕觸 HTML 元素 (例如 按鈕 (不支援自動重新導向至下載網址)。這項行為 專屬於 Google Chrome也可能不會 功能。

檔案組成

Base64 編碼內容必須包含 MIME 多部分內容, 第 Content-Type 個,共 multipart/mixed 個。以下部分構成 分段組成內容

零件 Content-Type (較少引號) 必要 說明
個人資料 application/x-passpoint-profile 一律啟用 包含 Passpoint R1 的 OMA-DM SyncML 酬載 「PerProviderSubscription」格式化為「HomeSP」的 MO 和 Credential
信任憑證 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 容器以及私密金鑰和憑證 請全部為純文字,沒有密碼。

「設定檔」部分必須以 Base64 編碼和 UTF-8 編碼的 XML 轉移 可指定 HomeSPCredential 子樹狀結構中 Passpoint R2 技術規格 1.0.0 版,第 9.1 節。

頂層節點必須是 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-CHAP 或 或 MS-CHAP-V2
  • DigitalCertificate:EAP-TLS 為必要項目。必須設定下列節點:

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

Android 11 導入的功能 讓 Passpoint R1 佈建作業更具彈性

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

Passpoint 網路管理員需要指定 AAA 網域名稱 而不是受到 存取網路查詢通訊協定 (ANQP) 都能指定 新節點中以半形分號分隔的 FQDN 清單 Extension 子樹狀結構。這是選用節點和搭載 Android 的裝置 10 以下版本會忽略這個節點。

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

    • AAAServerTrustedNames:這是 AAA 伺服器信任的名稱的必要欄位 且設定下列節點:

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

Passpoint R2 佈建

Android 10 導入了 Passpoint R2 支援功能 接著介紹網際網路通訊層 包括兩項主要的安全防護功能Passpoint R2 會實作線上註冊 (OSU), 佈建新的 Passpoint 設定檔Android 10 以上版本 支援使用 SOAP-XML 通訊協定,使用 EAP-TTLS 設定檔佈建 EAP-TTLS 設定檔。 開啟 OSU ESS。

支援的 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 可以透過相同的 ID 佈建多個 Passpoint 設定檔 FQDN,每個 PLMN ID 各有一個 FQDN,會自動與 已安裝 SIM 卡,並用來連接網路。

Android 12 推出了下列 Passpoint 提升使用者體驗、耗電量和部署效率 靈活彈性:

裝飾身分前置字串
使用前置字元裝飾的網路進行驗證時, 身分前置字串可讓網路業者更新網路存取權 透過 ID (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 裝置不會自動連線。

解決方法

為解決條件經過修改、電信業者和 服務供應商必須將網路存取 ID (NAI) 領域 Passpoint AP 發布的資訊

建議的解決方案是讓網路服務供應商 縮短部署時間。裝置端 解決方法是使用原始設備製造商 (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) 必須更新實地裝置。