Wi-Fi operatore

Il Wi-Fi dell'operatore è una funzionalità di connessione automatica (tramite IMSI criptato) disponibile in Android 9 e versioni successive che consente ai dispositivi di connettersi automaticamente al Wi-Fi implementato dall'operatore reti. In zone con elevata congestione o con una copertura cellulare minima, come uno stadio o una stazione della metropolitana, il Wi-Fi dell'operatore può essere usato per migliorare utente di connettività e di non sovraccaricare il traffico.

I dispositivi con la funzionalità Wi-Fi dell'operatore si connettono automaticamente reti Wi-Fi dell'operatore configurate (reti con un certificato di chiave pubblica). Quando un utente si disconnette manualmente dalla rete Wi-Fi di un operatore, la rete nella blacklist per 24 ore (nessuna connessione automatica). Gli utenti possono connettersi manualmente a nelle blacklist in qualsiasi momento.

Sui dispositivi con Android 9 o versioni successive in cui è implementato il Wi-Fi dell'operatore: la connessione automatica tramite Wi-Fi dell'operatore è disattivata per impostazione predefinita. Una notifica viene inviato all'utente quando il dispositivo tenta di connettersi a un operatore Wi-Fi per la prima volta.

Implementazione

Per implementare l'operatore, i produttori di dispositivi e gli operatori devono: Wi-Fi.

Produttori

Per i dispositivi con Android 11 e versioni successive, utilizza la API di suggerimento Wi-Fi per aggiungere profili Wi-Fi per ogni operatore.

Per dispositivi con 10 o meno versioni, aggiungi profili Wi-Fi entro il configurando il parametro carrier_wifi_string_array per ogni operatore in gestore della configurazione dell'operatore.

  • carrier_wifi_string_array: Un array di stringhe in cui ogni voce di stringa corrisponde a un SSID Wi-Fi codificato in Base64 un tipo EAP separato da una virgola, dove il tipo EAP è un numero intero (fai riferimento a registro EAP (Extensible Authentication Protocol)). Ad esempio, la seguente configurazione riguarda SOME_SSID_NAME con EAP-AKA e Some_Other_SSID utilizzano EAP-SIM:

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

Nella carrier config manager, configurare i seguenti parametri per ogni operatore:

  • imsi_key_availability_int: Indica se la chiave utilizzata per la crittografia IMSI è disponibile per la WLAN (bit 1 impostato), EPDG (bit 0 impostato) o entrambi (entrambi bit 0 e bit 1 sono impostati impostata). Ad esempio, la seguente configurazione indica che IMSI la crittografia è disponibile per la WLAN, ma non per EPDG:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string: URL da cui il protocollo contenente la chiave pubblica dell'operatore utilizzato per Crittografia IMSI scaricata. Ad esempio, la seguente configurazione fornisce un URL specifico:

    config {
      key: "imsi_key_download_url_string"
      text_value: "https://www.some_company_name.com:5555/some_directory_name/some_filename.json"
    }
    
  • allow_metered_network_for_cert_download_bool: un flag che indica se per consentire il download della chiave pubblica dell'operatore tramite un piano (cellulare). Se questo flag non è impostato, significa che un nuovo dispositivo senza Wi-Fi la connettività non riuscirà a connettersi alla rete Wi-Fi dell'operatore perché non potrà scaricare la chiave.

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

Operatori

Per implementare il Wi-Fi dell'operatore, quest'ultimo deve attivare la protezione della privacy IMSI e che forniscono una chiave pubblica.

Protezione della privacy IMSI

Android protegge la riservatezza dell'identità permanente di un abbonato (IMSI) utilizzando la crittografia a chiave pubblica. Android implementa la banda larga wireless Specifica Alliance (WBA) per IMSI Privacy Protection for Wi-Fi. Quando la protezione della privacy IMSI è attivata per una connessione, lo stato permanente L'identità degli abbonati non viene trasmessa in chiaro over-the-air.

Crittografia permanente dell'identità

Il formato dell'identità permanente criptata è il seguente:

  • L'identità permanente è nel formato <EAP-Method><IMSI>@<NAI realm>.
  • Il prefisso EAP-Method è un singolo ottetto che definisce il metodo EAP utilizzata per l'autenticazione:
    • 0: EAP-AKA
    • 1: EAP-SIM
    • 6: EAP-AKA
  • Il formato dell'area di autenticazione NAI wlan.mncXXX.mccYYY.3gppnetwork.org dove Il numero XXX è stato sostituito con il codice di rete mobile (MNC) della scheda SIM e YYY è sostituito con il codice paese per dispositivi mobili (Centro clienti).
  • L'identità permanente è criptata usando una chiave pubblica RSA fornita da il vettore. La chiave pubblica è inclusa in X.509.
  • Lo schema di crittografia è RSAES-OAEP con SHA-256 come funzione hash crittografica. Questo schema di crittografia garantisce un testo crittografico univoco ogni volta che viene utilizzato lo schema, evitando così un'altra identità permanente che può essere monitorata.
  • La lunghezza della chiave RSA è 2048 bit.
  • Il buffer di crittografia è di 256 byte.
  • Il testo crittografato è codificato con Base64.
  • La lunghezza dell'identità permanente criptata di output è di 344 byte.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
Identificatore chiave

L'identificatore chiave è una coppia di valori di un attributo facoltativa che l'operatore collega a un certificato per consentire al server di individuare la chiave privata corretta autenticazione. Un esempio di identificatore chiave è CertificateSerialNumber=123456. Se viene fornito, l'identificatore chiave viene inviato in modo chiaro come parte del processo di autenticazione.

Modifiche ai metodi di autenticazione EAP basati su SIM

Quando la protezione della privacy IMSI è attiva su una connessione, il sistema non invia l'identità permanente alla ricezione di EAP-Request/Identity, risponde con dati di accesso anonimi:

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

Il campo <prefix> è facoltativo. Se l'operatore enable_eap_method_prefix_bool è impostata su true, il primo carattere dell'identità (prima anonymous) comunica al server il tipo di metodo EAP utilizzato prima che Inizia lo scambio EAP.

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

Se la configurazione dell'operatore è impostata su false, questo prefisso non è incluso il messaggio.

In risposta, il server invia un messaggio EAP-Request/AKA-Identity e risponde nel seguente formato:

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

Il primo carattere dell'identità comunica al server che oppure il tipo di metodo EAP configurato:

  • \0: identità permanente criptata
  • 0: EAP-AKA
  • 1: EAP-SIM
  • 6: EAP-AKA
di Gemini Advanced.

La coppia di valori dell'attributo dell'identificatore chiave è facoltativa e non viene aggiunta al parametro l'identità permanente criptata se non in uso.

A questo punto, il server individua la chiave privata nell'identificatore della chiave (se fornita), decripta l'identità criptata utilizzando la chiave privata dell'operatore e continua il normale flusso EAP.

Dopo l'autenticazione, il server può fornire una un'identità di riautenticazione rapida o un'identità temporanea (pseudonimo), che utilizzate nelle connessioni successive. Se non vengono fornite identità temporanee dalla server, il sistema invia l'identità criptata nella connessione successiva.

Recupero, scadenza e revoca del certificato del corriere

Nel caso in cui nel sistema non sia installato alcun certificato, il sistema utilizza URL fornito nella configurazione dell'operatore imsi_key_download_url_string per scaricare un certificato utilizzando il metodo GET HTTP. Il sistema utilizza la rete dati solo se l'operatore allow_metered_network_for_cert_download_bool è impostata su true. Altrimenti, il sistema scarica il certificato solo quando è disponibile una connessione Wi-Fi.

La scadenza del certificato viene applicata dal sistema. Il sistema inizia a tentare di rinnovare i certificati 21 giorni prima della data di scadenza e utilizza lo stesso URL per scaricare il nuovo certificato.

Nel caso in cui il server non sia in grado di decriptare l'identità criptata, invia un messaggio EAP-Request/AKA-Notification con il codice AT_NOTIFICATION General Failure (16384) per terminare lo scambio EAP.

Nel caso in cui il certificato sia revocato o scaduto, il server invia una Messaggio EAP-Request/AKA-Notification con il codice AT_NOTIFICATION Certificate Replacement Required (16385) per terminare lo scambio EAP. In risposta, il sistema applica un'euristica interna per determinare se rimuovere il certificato e provare a scaricarne uno nuovo dalla stessa URL.

Fornisci la chiave pubblica

Fornisci un URL pubblico a un server, preferibilmente utilizzando HTTP su TLS, che ospita il certificato del corriere in cui:

  1. La chiave pubblica e la scadenza possono essere estratte dal certificato.
  2. Le informazioni del server sono in formato JSON, come segue:

    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.
    

    Di seguito è riportato un esempio di chiave pubblica.

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