Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Passpoint (Hotspot 2.0)

Passpoint è un protocollo Wi-Fi Alliance (WFA) che aiuta gli utenti a scoprire e autenticarsi su hotspot Wi-Fi per accedere a Internet. Passpoint si basa sulla tecnologia Hotspot 2.0 .

Supporto dispositivo

Per supportare Passpoint, i produttori di dispositivi devono implementare hardware/interfaces/wifi/supplicant/1.0 o versioni successive. Il linguaggio di progettazione dell'interfaccia HAL Wi-Fi (HIDL) fornito nel progetto Android Open Source (AOSP) definisce un HAL per il supplicante. Il supplicant fornisce supporto per lo standard 802.11u, in particolare funzionalità di rilevamento e selezione della rete come Generic Advertising Service (GAS) e access network query protocol (ANQP).

Implementazione

I produttori di dispositivi devono fornire sia il framework che il supporto HAL / firmware:

  • Framework: Abilita Passpoint (richiede un flag di funzionalità)
  • Firmware: supporto per 802.11u

Per supportare Passpoint, implementare l'HAL Wi-Fi e abilitare il flag funzione per Passpoint. In device.mk situato in device/<oem>/<device> , modifica la variabile di ambiente PRODUCT_COPY_FILES per includere il supporto per la funzionalità Passpoint:

 PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml
 

Tutti gli altri requisiti per supportare Passpoint sono inclusi in AOSP.

Validazione

Per convalidare l'implementazione della funzionalità Passpoint, utilizzare il set di unit test e test di integrazione forniti in Android Comms Test Suite (ACTS).

Test unitari

Eseguire i seguenti test unitari del pacchetto Passpoint.

Test di servizio:

 % ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh -e package
com.android.server.wifi.hotspot2
 

Test manager:

 % ./frameworks/base/wifi/tests/runtests.sh -e package android.net.wifi.hotspot2
 

Test di integrazione (ACTS)

La suite di test ACTS Passpoint, situata in tools/test/connectivity/acts/tests/google/wifi/WifiPasspointTest.py , implementa una serie di test funzionali.

Passpoint R1

Android supporta Passpoint R1 da Android 6.0, consentendo il provisioning delle credenziali Passpoint R1 (versione 1) tramite il download basato sul Web di un file speciale che contiene informazioni sul profilo e sulle credenziali. Il client avvia automaticamente un programma di installazione speciale per le informazioni Wi-Fi e consente all'utente di visualizzare parti delle informazioni prima di accettare o rifiutare il contenuto.

Le informazioni del profilo contenute nel file vengono utilizzate per la corrispondenza con i dati recuperati dai punti di accesso abilitati per Passpoint e le credenziali vengono automaticamente applicate a qualsiasi rete associata.

L'implementazione di riferimento di Android supporta EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA ed EAP-AKA '.

Meccanismo di download

Il file di configurazione Passpoint deve essere ospitato su un server Web e deve essere protetto con TLS (HTTPS) perché può contenere password di testo chiaro o dati della chiave privata. Il contenuto è costituito da testo MIME multipart avvolto rappresentato in UTF-8 e codificato nella codifica base64 secondo RFC-2045 sezione 6.8.

I seguenti campi di intestazione HTTP vengono utilizzati dal client per avviare automaticamente un programma di installazione Wi-Fi sul dispositivo:

  • Content-Type deve essere impostato su application/x-wifi-config .
  • Content-Transfer-Encoding deve essere impostato su base64 .
  • Content-Disposition non deve essere impostata.

Il metodo HTTP utilizzato per recuperare il file deve essere GET. Ogni volta che un HTTP GET dal browser riceve una risposta con queste intestazioni MIME, viene avviata l'app di installazione. Il download deve essere attivato toccando un elemento HTML come un pulsante (i reindirizzamenti automatici a un URL di download non sono supportati). Questo comportamento è specifico di Google Chrome; altri browser Web possono fornire o meno funzionalità simili.

Composizione del file

Il contenuto con codifica base64 deve essere costituito da contenuto multipart MIME con un Content-Type di contenuto multipart/mixed . Le seguenti parti costituiscono le singole parti del contenuto multipart.

Parte Tipo di contenuto (meno virgolette) necessario Descrizione
Profilo application/x-passpoint-profile Sempre Payload in formato OMA-DM SyncML contenente il MO formattato per HomeSP R1 PerProviderSubscription per HomeSP e Credential .
Certificato di fiducia application/x-x509-ca-cert Richiesto per EAP-TLS e EAP-TTLS Un singolo payload del certificato con codifica Base64 X.509v3.
Chiave EAP-TLS application/x-pkcs12 Richiesto per EAP-TLS Una struttura ASN.1 PKCS # 12 codificata in base64 contenente una catena di certificati client con almeno il certificato client e la chiave privata associata. Il contenitore PKCS 12, la chiave privata e i certificati devono essere tutti in chiaro e senza password.

La sezione Profilo deve essere trasferita come testo XML con codifica base64, codifica UTF-8 che specifica parti degli utenti HomeSP e Credential nella specifica tecnica Passpoint R2 versione 1.0.0, sezione 9.1.

Il nodo di livello superiore deve essere MgmtTree e il nodo MgmtTree immediato deve essere PerProviderSubscription . Un file XML di esempio viene visualizzato nel profilo di esempio XML OMA-DM .

I seguenti nodi di sottostruttura sono utilizzati in HomeSP :

  • FriendlyName : deve essere impostato; usato come testo di visualizzazione
  • FQDN : obbligatorio
  • RoamingConsortiumOI

I seguenti nodi sottostruttura sono utilizzati in Credential :

  • Realm : deve essere una stringa non vuota
  • UsernamePassword : richiesto per EAP-TTLS con i seguenti nodi impostati:

    • Username : stringa che contiene il nome utente
    • Password : stringa con codifica Base64 (impostata su cGFzc3dvcmQ= , la stringa con codifica base64 per "password", nell'esempio seguente)
    • EAPMethod/EAPType : deve essere impostato su 21
    • EAPMethod/InnerMethod : deve essere impostato su PAP , CHAP , MS-CHAP o MS-CHAP-V2
  • DigitalCertificate : richiesto per EAP-TLS. Devono essere impostati i seguenti nodi:

    • CertificateType impostato su x509v3
    • CertSHA256Fingerprint impostato sul digest SHA-256 corretto del certificato client nella sezione MIME della chiave EAP-TLS
  • SIM : necessaria per EAP-SIM, EAP-AKA e EAP-AKA '. Il campo EAPType deve essere impostato sul tipo EAP appropriato e l' IMSI deve corrispondere a un IMSI di una delle carte SIM installate nel dispositivo al momento del provisioning. La stringa IMSI può essere costituita interamente da cifre decimali per forzare la corrispondenza dell'uguaglianza completa o da zero o più cifre decimali seguite da un asterisco (*) per rilassare la corrispondenza IMSI solo al prefisso. Ad esempio, la stringa IMSI 123 * corrisponde a qualsiasi carta SIM con un IMSI che inizia con 123.

Profilo di esempio XML OMA-DM

 <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.com</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>
  </Node>
</MgmtTree>
 

Avviso consultivo

I dispositivi che eseguono Android 8.xo Android 9 con un profilo EAP-SIM, EAP-AKA o EAP-AKA Passpoint R1 non si collegheranno automaticamente alla rete Passpoint. Questo problema riguarda utenti, operatori e servizi riducendo l'offload Wi-Fi.

Segmento urto Dimensione dell'impatto
Gestori e fornitori di servizi Passpoint Aumento del carico sulla rete cellulare. Qualsiasi operatore che utilizza Passpoint R1.
utenti Occasione mancata per connettersi automaticamente ai punti di accesso (AP) del gestore telefonico, con conseguente aumento dei costi dei dati. Qualsiasi utente con un dispositivo che gira su una rete di supporto che supporta Passpoint R1.

Causa del fallimento

Passpoint specifica un meccanismo per abbinare un fornitore di servizi pubblicizzato (ANQP) a un profilo installato sul dispositivo. Le seguenti regole di corrispondenza per EAP-SIM, EAP-AKA ed EAP-AKA "sono un insieme parziale di regole incentrate sugli errori 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.
 

Il secondo criterio è stato modificato in Android 8.0:

 Else: If the PLMN ID (3GPP Network) matches AND the NAI Realm matches
    then the service is a Roaming Service Provider.
 

Con questa modifica, il sistema non ha riscontrato alcuna corrispondenza per i fornitori di servizi precedentemente funzionanti, quindi i dispositivi Passpoint non si sono connessi automaticamente.

soluzioni alternative

Per aggirare il problema dei criteri di abbinamento modificati, i vettori e i fornitori di servizi devono aggiungere il dominio identificatore di accesso alla rete (NAI) alle informazioni pubblicate da Passpoint AP.

La soluzione consigliata è per i fornitori di servizi di rete di implementare una soluzione alternativa a livello di rete per il tempo più rapido alla distribuzione. Una soluzione a livello di dispositivo dipende dal fatto che gli OEM raccolgano un elenco modifiche (CL) da AOSP e quindi aggiornino i dispositivi sul campo.

Correzione di rete per operatori e fornitori di servizi Passpoint

La soluzione alternativa sul lato della rete richiede la riconfigurazione della rete per aggiungere l'elemento ANQP realm NAI come specificato di seguito. Le specifiche Passpoint non richiedono l'elemento ANQP del realm NAI, ma l'aggiunta di questa proprietà è conforme alle specifiche Passpoint, pertanto le implementazioni client conformi alle specifiche non devono interrompere.

  1. Aggiungi l'elemento ANQP del realm NAI.
  2. Impostare il sottocampo del realm NAI in modo che corrisponda al Realm del profilo installato sul dispositivo.
  3. Impostare le seguenti informazioni in base a ciascun tipo di EAP:

    • EAP-TTLS: impostare EAPMethod(21) e tipi di autenticazione interna supportati ( PAP , CHAP , MS-CHAP o MS-CHAP-V2 )
    • EAP-TLS: impostare EAPMethod(13)
    • EAP-SIM: EAPMethod(18)
    • EAP-AKA: impostare il EAPMethod(23)
    • EAP-AKA ': Set EAPMethod(50)
Correzione dispositivo / AOSP per OEM

Per implementare una soluzione alternativa dal lato del dispositivo, gli OEM devono scegliere la patch CL aosp / 718508 . Questa patch può essere applicata su una delle seguenti versioni (non si applica ad Android 10 o versioni successive):

  • Android 9
  • Android 8.x

Quando viene ritirata la patch, gli OEM devono aggiornare i dispositivi sul campo.

Passpoint R2

Android 10 introduce il supporto per le funzionalità Passpoint R2. Passpoint R2 implementa l'iscrizione online (OSU), un metodo standard per il provisioning di nuovi profili Passpoint. Android 10 supporta il provisioning dei profili EAP-TTLS utilizzando SOAP-XML.

Le funzionalità Passpoint R2 supportate in Android 10 richiedono solo il codice AOSP (non è necessario alcun supporto driver o firmware aggiuntivo). Il codice AOSP include anche un'implementazione predefinita dell'interfaccia utente di Passpoint R2 nell'applicazione Impostazioni.

Quando Android rileva un punto di accesso Passpoint R2, il framework Android:

  1. Visualizza un elenco dei fornitori di servizi nel selettore Wi-Fi (oltre alla visualizzazione degli SSID).
  2. Chiede all'utente di toccare uno dei fornitori di servizi per impostare un profilo Passpoint.
  3. Guida l'utente attraverso il flusso di configurazione del profilo Passpoint.
  4. Installa il profilo Passpoint risultante al completamento corretto.
  5. Associato alla rete Passpoint utilizzando il profilo Passpoint appena fornito.