运营商 WLAN

运营商 WLAN 是 Android 9 中引入的一项功能,该功能可让设备自动连接到运营商实现的 WLAN 网络。在高度拥塞或信号覆盖范围较小的区域(如体育场或地铁站),运营商 WLAN 可用于改善用户的连接体验和分载流量。

实现

要实现运营商 WLAN,设备制造商和运营商必须执行以下操作。

制造商

在运营商配置管理器中,为每个运营商配置以下参数:

  • KEY_CARRIER_WIFI_STRING_ARRAY:一个字符串数组,其中各字符串条目是以 Base64 编码的 WLAN SSID 和 EAP 类型(中间由逗号隔开,EAP 类型是一个整数)(请参阅 https://www.iana.org/assignments/eap-numbers/eap-numbers.xhtml)。例如,以下配置针对使用 EAP-AKA 的 SOME_SSID_NAME 和使用 EAP-SIM 的 Some_Other_SSID:

    config {
      key: "carrier_wifi_string_array"
      text_array {
        item: "U09NRV9TU0lEX05BTUUK,23"
        item: "U29tZV9PdGhlcl9TU0lECg==,18"
      }
    }
    
  • IMSI_KEY_AVAILABILITY_INT:标识用于 IMSI 加密的密钥是适用于 WLAN(设置位 1)还是 EPDG(设置位 0),或两者都适用(同时设置位 0 和位 1)。例如,以下配置指示 IMSI 加密适用于 WLAN,但不适用于 EPDG:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • IMSI_KEY_DOWNLOAD_URL_STRING:从中下载 proto(包含用于 IMSI 加密的运营商公钥)的网址。例如,以下配置提供了特定的网址:

    config {
      key: "imsi_key_download_url_string"
      text_value: "https://www.some_company_name.com:5555/some_directory_name/"
    }
    

运营商

要实现运营商 WLAN,运营商必须支持加密的 IMSI 并提供一个公钥。

支持加密的 IMSI

更改 WLAN 网络配置以确保可处理加密的 IMSI。EAP-SIM 中使用的身份格式为:

Prefix | [IMSI || Encrypted IMSI] | @realm | {, Key Identifier AVP}

其中“|”(单竖线)表示串联,“||”(双竖线)表示专有值,“{}”(大括号)表示可选值,领域是根据 3GGP 规范 (TS23.003) 从指定 MNC/MCC 派生的 3GPP 网络域名。

Prefix 值包括:

  • \0”:加密身份
  • 0”:EAP-AKA 身份
  • 1”:EAP-SIM 身份
  • 6”:EAP-AKA' 身份

Encrypted IMSI 的格式为:

Base64{RSA_Public_Key_Encryption{eapPrefix | IMSI}}

其中“|”表示串联。

eapPrefix 值包括:

  • 0”- EAP-AKA 身份
  • 1”- EAP-SIM 身份
  • 6”- EAP-AKA' 身份

提供公钥

提供托管运营商证书的公开网址,其中:

  1. 公钥(和到期日期)可从证书中提取
  2. 信息采用如下所示的 JSON 格式:
{
"carrier-keys" : [ {
  "key-identifier" : "CertificateSerialNumber=5xxe06d4",
  "certificate" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----",
  "key-type" : "WLAN"
} ]
}

自定义

运营商 WLAN 默认处于关闭状态(除非在运营商配置管理器中针对每个运营商对其进行配置)。如果该功能处于开启状态,则设备会自动尝试连接到网络。在初次尝试时,系统会发送一条通知。