O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Wi-Fi da operadora

O Wi-Fi da operadora é um recurso de conexão automática (usando IMSI criptografado) disponível no Android 9 e superior que permite que os dispositivos se conectem automaticamente a redes Wi-Fi implementadas pela operadora. Em áreas de alto congestionamento ou com cobertura mínima de celular, como um estádio ou uma estação de trem subterrânea, o Wi-Fi da operadora pode ser usado para melhorar a experiência de conectividade dos usuários e descarregar o tráfego.

Dispositivos com o recurso Wi-Fi da operadora se conectam automaticamente às redes Wi-Fi configuradas da operadora (redes com um certificado de chave pública). Quando um usuário se desconecta manualmente de uma rede Wi-Fi da operadora, a rede fica na lista negra por 24 horas (sem conexão automática). Os usuários podem se conectar manualmente a redes na lista negra a qualquer momento.

Em dispositivos que executam o Android 9 ou superior com Wi-Fi da operadora implementado, a conexão automática por meio do Wi-Fi da operadora está desativada por padrão. Uma notificação é enviada ao usuário quando o dispositivo tenta se conectar a uma rede Wi-Fi da operadora pela primeira vez.

Implementação

Os fabricantes de dispositivos e operadoras devem fazer o seguinte para implementar o Wi-Fi da operadora.

Fabricantes

Para dispositivos com Android 11 e superior, use a API de sugestão de Wi-Fi para adicionar perfis de Wi-Fi para cada operadora.

Para dispositivos com 10 ou menos, adicione perfis de Wi-Fi configurando o parâmetro carrier_wifi_string_array para cada operadora no gerenciador de configuração de operadora .

  • carrier_wifi_string_array : uma matriz de string em que cada entrada de string é um SSID Wi-Fi codificado em Base64 e um tipo EAP separado por uma vírgula, onde o tipo EAP é um número inteiro (consulte o Registro do protocolo de autenticação extensível (EAP) ). Por exemplo, a seguinte configuração é para SOME_SSID_NAME usando EAP-AKA e Some_Other_SSID usando EAP-SIM :

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

No gerenciador de configuração da operadora , configure os seguintes parâmetros para cada operadora:

  • imsi_key_availability_int : identifica se a chave usada para criptografia IMSI está disponível para WLAN (o bit 1 está definido), EPDG (o bit 0 está definido) ou ambos (os bits 0 e 1 estão definidos). Por exemplo, a configuração a seguir indica que a criptografia IMSI está disponível para WLAN, mas não para EPDG:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string : URL de onde é feito o download do proto que contém a chave pública da operadora usada para criptografia IMSI. Por exemplo, a configuração a seguir fornece um URL específico:

    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 : Um sinalizador que indica se permite o download da chave pública da operadora em uma rede medida (celular). Se este sinalizador não estiver definido, um novo dispositivo sem conectividade Wi-Fi não será capaz de se conectar à rede Wi-Fi da operadora porque não terá permissão para fazer o download da chave.

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

Transportadoras

Para implementar o Wi-Fi da operadora, a operadora deve habilitar a proteção de privacidade IMSI e fornecer uma chave pública.

Proteção de privacidade IMSI

O Android protege a confidencialidade da identidade permanente do assinante (IMSI) usando criptografia de chave pública. O Android consegue isso com algumas modificações nos métodos de autenticação padrão EAP-SIM , EAP-AKA e EAP-AKA . Quando a proteção de privacidade IMSI está habilitada para uma conexão, a identidade do assinante permanente não é transmitida sem criptografia.

Criptografia de identidade permanente

O formato da identidade permanente criptografada é o seguinte:

  • A identidade permanente está no formato de <IMSI>@<NAI realm> . O formato do domínio NAI é wlan.mnc XXX .mcc YYY .3gppnetwork.org onde XXX é substituído pelo código de rede móvel do cartão SIM (MNC) e YYY é substituído pelo código de país móvel (MCC).
  • A identidade permanente é criptografada usando uma chave pública RSA fornecida pela operadora. A chave pública está incluída em um certificado X.509 .
  • O esquema de criptografia é RSAES-OAEP com SHA-256 como a função de hash criptográfica. Esse esquema de criptografia garante um texto cifrado exclusivo sempre que o esquema é usado, evitando, assim, outra identidade persistente que pode ser rastreada.
  • O comprimento da chave RSA é de 2048 bits.
  • O buffer de criptografia é de 256 bytes.
  • O texto cifrado é codificado com Base64 .
  • O comprimento da identidade permanente criptografada de saída é de 344 bytes.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<IMSI>@<NAI Realm>))
Identificador de chave

O identificador de chave é um par de valor de atributo opcional que a operadora anexa a um certificado para permitir que o servidor localize a chave privada adequada durante a autenticação. Um exemplo de identificador de chave é CertificateSerialNumber=123456 . Se o identificador de chave for fornecido, ele será enviado em aberto como parte do processo de autenticação.

Modificações nos métodos de autenticação EAP baseados em SIM

Quando a proteção de privacidade IMSI está habilitada em uma conexão, o sistema não envia a identidade permanente após o recebimento da EAP-Request/Identity , em vez disso, responde com um login anônimo:

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

<prefix> é opcional. Se a configuração da operadora enable_eap_method_prefix_bool for definida como true , o primeiro caractere da identidade (antes de anonymous ) notifica o servidor sobre o tipo de método EAP usado antes do início da troca EAP.

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

Se a configuração da operadora for definida como false , esse prefixo não será incluído na mensagem.

Em resposta, o servidor envia uma mensagem EAP-Request/AKA-Identity e o sistema responde no seguinte formato:

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

O primeiro caractere da identidade notifica o servidor que uma identidade criptografada é usada ou o tipo de método EAP que está configurado:

  • \0 - Identidade permanente criptografada
  • 0 - EAP-AKA
  • 1 - EAP-SIM
  • 6 - EAP-AKA '

O par de valores de atributo do identificador de chave é opcional e não é anexado ao final da identidade permanente criptografada se não estiver em uso.

Nesse ponto, o servidor localiza a chave privada do identificador de chave (se fornecido), descriptografa a identidade criptografada usando a chave privada da operadora e continua o fluxo EAP normal.

Após a autenticação bem-sucedida, o servidor pode fornecer uma identidade de reautenticação rápida ou uma identidade temporária (pseudônimo), que é usada em conexões subsequentes. Se nenhuma identidade temporária for fornecida pelo servidor, o sistema enviará a identidade criptografada na conexão subsequente.

Recuperação, expiração e revogação do certificado da operadora

No caso em que nenhum certificado está instalado no sistema, o sistema usa o URL fornecido na configuração da operadora imsi_key_download_url_string para baixar um certificado. O sistema usa dados de celular apenas se a configuração da operadora allow_metered_network_for_cert_download_bool estiver definida como true . Caso contrário, o sistema baixa o certificado apenas quando uma conexão Wi-Fi está disponível.

A expiração do certificado é imposta pelo sistema. O sistema começa a tentar renovar os certificados 21 dias antes da data de expiração do certificado e usa o mesmo URL para baixar o novo certificado.

No caso em que o certificado é revogado ou se o servidor é incapaz de descriptografar a identidade criptografada, o servidor envia uma mensagem de EAP-Request/AKA-Notification com o código AT_NOTIFICATION General failure (16385) para encerrar a troca EAP. Em resposta, o sistema remove o certificado e tenta fazer download de um novo certificado do mesmo URL.

Fornecendo a chave pública

Fornece um URL público a um servidor, de preferência usando HTTP sobre TLS, que hospeda o certificado da operadora onde:

  1. A chave pública e a expiração podem ser extraídas do certificado.
  2. As informações do servidor estão no formato JSON da seguinte forma:

    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.
    

    A seguir está um exemplo de uma chave pública.

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