Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Wi-Fi del operador

Carrier Wi-Fi es una función de conexión automática (usando IMSI encriptada) disponible en Android 9 y superior que permite que los dispositivos se conecten automáticamente a redes Wi-Fi implementadas por el operador. En áreas de gran congestión o con una cobertura celular mínima, como un estadio o una estación de tren subterráneo, se puede utilizar el Wi-Fi del operador para mejorar la experiencia de conectividad de los usuarios y descargar el tráfico.

Los dispositivos con la función Wi-Fi del operador se conectan automáticamente a las redes Wi-Fi del operador configuradas (redes con un certificado de clave pública). Cuando un usuario se desconecta manualmente de la red Wi-Fi de un operador, la red se incluye en la lista negra durante 24 horas (sin conexión automática). Los usuarios pueden conectarse manualmente a las redes incluidas en la lista negra en cualquier momento.

En dispositivos con Android 9 o superior con Wi-Fi de operador implementado, la conexión automática a través de Wi-Fi de operador está desactivada de forma predeterminada. Se envía una notificación al usuario cuando el dispositivo intenta conectarse a una red Wi-Fi del operador por primera vez.

Implementación

Los fabricantes de dispositivos y los operadores deben hacer lo siguiente para implementar el Wi-Fi del operador.

Fabricantes

Para los dispositivos con Android 11 y superior, utilice la API sugerencia Wi-Fi para agregar perfiles Wi-Fi para cada portadora.

Para dispositivos con 10 o más baja, añadir perfiles Wi-Fi mediante la configuración de la carrier_wifi_string_array parámetro para cada portadora en el gestor de configuración de portadora .

  • carrier_wifi_string_array : una matriz de cadenas, donde cada entrada de cadena es una codificación Base64 Wi-Fi SSID y un tipo de EAP separados por una coma, donde el tipo de EAP es un número entero (consulte Protocolo de autenticación extensible (EAP) Registro ). Por ejemplo, la siguiente configuración es para SOME_SSID_NAME usando EAP-AKA y Some_Other_SSID usando EAP-SIM:

    config {
      key: "carrier_wifi_string_array"
      text_array {
        item: "U09NRV9TU0lEX05BTUUK,23"
        item: "U29tZV9PdGhlcl9TU0lECg==,18"
      }
    }
    

En el gestor de configuración de portadora , configurar los siguientes parámetros para cada portadora:

  • imsi_key_availability_int : Identifica si la clave utilizada para el cifrado IMSI está disponible para WLAN (bit 1 es set), EPDG (bit 0 es set), o ambos (tanto bit 0 y el bit 1 son set). Por ejemplo, la siguiente configuración indica que el cifrado IMSI está disponible para WLAN pero no para EPDG:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string : URL desde la que se descarga el proto que contiene la clave pública del soporte utilizado para el cifrado IMSI. Por ejemplo, la siguiente configuración proporciona una URL específica:

    config {
      key: "imsi_key_download_url_string"
      text_value: "https://www.some_company_name.com:5555/some_directory_name/"
    }
    
  • allow_metered_network_for_cert_download_bool : Una bandera que indica si se debe permitir la descarga de la clave pública de la portadora sobre una red dosificada (celular). Si no se establece esta marca, un nuevo dispositivo sin conectividad Wi-Fi no podrá conectarse a la red Wi-Fi del operador porque no se le permitirá descargar la clave.

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

Transportistas

Para implementar Wi-Fi del operador, el operador debe habilitar la protección de privacidad IMSI y proporcionar una clave pública.

Protección de privacidad IMSI

Android protege la confidencialidad de la identidad permanente de un suscriptor (IMSI) mediante criptografía de clave pública. Implementos de Android la especificación Wireless Broadband Alliance (WBA) para IMSI contacto protección para Wi-Fi . Cuando la protección de privacidad de IMSI está habilitada para una conexión, la identidad del suscriptor permanente no se transmite claramente por aire.

Cifrado de identidad permanente

El formato de la identidad permanente cifrada es el siguiente:

  • La identidad permanente está en el formato de <IMSI>@<NAI realm> . El formato NAI reino es wlan.mnc XXX .mcc YYY .3gppnetwork.org donde XXX es reemplazado con el código de red móvil de la tarjeta SIM (MNC) y YYY es reemplazado por el código de país móvil (MCC).
  • La identidad permanente se cifra mediante una clave pública RSA proporcionada por el operador. La clave pública se incluye en un X.509 certificado.
  • El esquema de cifrado es RSAES-OAEP con SHA-256 como la función de hash criptográfica. Este esquema de cifrado garantiza un texto cifrado único cada vez que se utiliza el esquema, evitando así otra identidad persistente que pueda ser rastreada.
  • La longitud de la clave RSA es de 2048 bits.
  • El búfer de cifrado es de 256 bytes.
  • El texto cifrado se codifica con Base64 .
  • La longitud de la identidad permanente cifrada de salida es de 344 bytes.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<IMSI>@<NAI Realm>))
Identificador de clave

El identificador de clave es un par de valor de atributo opcional que el operador adjunta a un certificado para permitir que el servidor localice la clave privada adecuada durante la autenticación. Un ejemplo de un identificador de clave es CertificateSerialNumber=123456 . Si se proporciona el identificador de clave, se envía sin cifrar como parte del proceso de autenticación.

Modificaciones a los métodos de autenticación EAP basados ​​en SIM

Cuando la protección de la privacidad IMSI está habilitado en una conexión, el sistema no envía la identidad permanente a la recepción de EAP-Request/Identity , sino que responde con un inicio de sesión anónimo:

SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>

<prefix> es opcional. Si el enable_eap_method_prefix_bool configuración de portadora se establece en true , el primer carácter de la identidad (antes anonymous ) notifica al servidor sobre el tipo de método EAP utilizado antes de que comience el intercambio EAP.

  • 0 - EAP-AKA
  • 1 - EAP-SIM
  • 6 - EAP-AKA'

Si la configuración del portador se establece en false , este prefijo no está incluido en el mensaje.

En respuesta, el servidor envía un EAP-Request/AKA-Identity mensaje y responde el sistema en el siguiente formato:

SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"

El primer carácter de la identidad notifica al servidor que se utiliza una identidad cifrada o el tipo de método EAP que está configurado:

  • \0 - encriptado identidad permanente
  • 0 - EAP-AKA
  • 1 - EAP-SIM
  • 6 - EAP-AKA'

El par de valor de atributo de identificador de clave es opcional y no se agrega al final de la identidad permanente encriptada si no está en uso.

En este punto, el servidor localiza la clave privada del identificador de clave (si se proporciona), descifra la identidad cifrada utilizando la clave privada del operador y continúa con el flujo EAP normal.

Tras la autenticación exitosa, el servidor puede proporcionar una identidad de reautenticación rápida o una identidad temporal (seudónimo), que se utiliza en conexiones posteriores. Si el servidor no proporciona identidades temporales, el sistema envía la identidad cifrada en la conexión posterior.

Recuperación, caducidad y revocación de certificados de operador

En el caso en que no hay ningún certificado está instalado en el sistema, el sistema utiliza la dirección URL proporcionada en el imsi_key_download_url_string configuración de portadora para descargar un certificado. El sistema utiliza datos de telefonía móvil sólo si el allow_metered_network_for_cert_download_bool configuración portador se establece en true . De lo contrario, el sistema descarga el certificado solo cuando hay una conexión Wi-Fi disponible.

El sistema aplica la caducidad del certificado. El sistema comienza a intentar renovar los certificados 21 días antes de la fecha de vencimiento del certificado y usa la misma URL para descargar el nuevo certificado.

En el caso de que el certificado ha sido revocado o si el servidor no es capaz de descifrar la identidad cifrada, el servidor envía una EAP-Request/AKA-Notification de mensaje con el AT_NOTIFICATION código de General failure (16385) para terminar el intercambio EAP. En respuesta, el sistema elimina el certificado e intenta descargar un nuevo certificado desde la misma URL.

Proporcionar la clave pública

Proporcione una URL pública a un servidor, preferiblemente usando HTTP sobre TLS, que aloje el certificado del operador donde:

  1. La clave pública y la caducidad se pueden extraer del certificado.
  2. La información del servidor está en formato JSON de la siguiente manera:

    Property: key-identifier
    Type: String
    Encoding: UTF-8
    Description: Specifies an identifier that the carrier would like to attach to the certificate.
    Optional: Yes
    
    Property: certificate
    Property alternative name: public-key
    Type: String
    Encoding: Base64
    Description: The content of the carrier's X.509 certificate.
    Optional: No
    
    Property: key-type
    Type: String
    Encoding: UTF-8
    Description: Specifies the module that will use the key. The value for type must be either WLAN or EPDG.
    Optional: Yes. If the key-type property isn't included, then its value defaults to WLAN.
    

    El siguiente es un ejemplo de clave pública.

    {
    "carrier-keys" : [ {
      "key-identifier" : "CertificateSerialNumber=5xxe06d4",
      "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----"
    } ]
    }