Punto di accesso (hotspot 2.0)

Passpoint è una connessione Wi-Fi Alliance (WFA) protocollo che consente dispositivi mobili per scoprire e autenticazione di hotspot Wi-Fi che forniscono l'accesso a internet.

Supporto per dispositivi

Per supportare Passpoint, i produttori di dispositivi devono implementare hardware/interfaces/wifi/supplicant/1.0 o superiore. Il Wi-Fi linguaggio di design di interfaccia HAL (HIDL) previsto nel progetto Open Source Android (AOSP) definisce un HAL per il richiedente. Il richiedente fornisce supporto per lo standard 802.11u, in particolare per le funzioni di rilevamento e selezione della rete come Generic Advertisement Service (GAS) e Access Network Query Protocol (ANQP).

Implementazione

Android 11 o versioni successive

Per supportare Passpoint sui dispositivi con Android 11 o versioni successive, i produttori di dispositivi devono fornire il supporto del firmware per 802.11u. Tutti gli altri requisiti per supportare Passpoint sono inclusi in AOSP.

Android 10 o versioni precedenti

Per i dispositivi con Android 10 o versioni precedenti, 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 della funzione per Passpoint. In device.mk situato nel device/<oem>/<device> , modificare la PRODUCT_COPY_FILES variabile ambiente per includere il supporto per la funzione 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.

Convalida

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

Test unitari

Eseguire i seguenti unit test del pacchetto Passpoint.

Test di servizio:

atest com.android.server.wifi.hotspot2

Test manager:

atest android.net.wifi.hotspot2

Test di integrazione (ACTS)

Gli atti suite di test Passpoint, che si trova in tools/test/connectivity/acts/tests/google/wifi/WifiPasspointTest.py , implementa una serie di test funzionali.

Approvvigionamento Passpoint R1

Android supporta Passpoint R1 da Android 6.0, consentendo il provisioning delle credenziali di Passpoint R1 (release 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 sul profilo contenute nel file vengono utilizzate per la corrispondenza con i dati recuperati dai punti di accesso abilitati per Passpoint e le credenziali vengono applicate automaticamente per qualsiasi rete corrispondente.

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

Scarica il meccanismo

Il file di configurazione di Passpoint deve essere ospitato su un server Web e deve essere protetto con TLS (HTTPS) perché potrebbe contenere password in chiaro o dati di chiavi private. Il contenuto è costituito da testo MIME multiparte 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 impostato.

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 o meno fornire funzionalità simili.

Composizione file

La Base64 codificato contenuto deve essere costituito da contenuti multipart MIME con Content-Type di multipart/mixed . Le seguenti parti costituiscono le singole parti del contenuto multiparte.

Parte Tipo di contenuto (meno virgolette) Necessario Descrizione
Profilo application/x-passpoint-profile Sempre OMA-DM SyncML payload formattato contenente la Passpoint R1 PerProviderSubscription formattato MO 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.
Tasto EAP-TLS application/x-pkcs12 Richiesto per EAP-TLS Una struttura PKCS #12 ASN.1 con codifica base64 contenente una catena di certificati client con almeno il certificato client e la chiave privata associata. Il contenitore PKCS 12, la chiave privata ei certificati devono essere tutti in chiaro senza password.

La sezione Profilo deve essere trasferito come codifica Base64, testo XML UTF-8-encoded che specifica le parti del HomeSP e Credential sottostrutture in Passpoint R2 Specifiche Tecniche Versione 1.0.0, sezione 9.1.

Il nodo di livello superiore deve essere MgmtTree e sottonodi immediato deve essere PerProviderSubscription . Un file di esempio XML appare in Esempio profilo OMA DM-XML .

I seguenti nodi sottostruttura sono utilizzati sotto HomeSP :

  • FriendlyName : Deve essere impostato; usato come testo di visualizzazione
  • FQDN : Richiesto
  • RoamingConsortiumOI

I seguenti nodi sottostruttura sono utilizzati sotto Credential :

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

    • Username : stringa che contiene il nome utente
    • Password : stringa di codifica Base64 (insieme a cGFzc3dvcmQ= , la stringa con codifica Base64 per "password", nell'esempio qui sotto)
    • EAPMethod/EAPType : Deve essere impostato su 21
    • EAPMethod/InnerMethod : Deve essere impostato a uno di PAP , CHAP , MS-CHAP o MS-CHAP-V2
  • DigitalCertificate : Necessario per EAP-TLS. Devono essere impostati i seguenti nodi:

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

Android 11 introduce funzionalità che rendono il provisioning di Passpoint R1 più flessibile.

Nome di dominio separato di autenticazione, autorizzazione e contabilità (AAA)

Gli amministratori di rete Passpoint che richiedono un nome di dominio AAA specificato indipendentemente dal nome di dominio completo (FQDN) pubblicizzato dalla rete attraverso il Network Access Query Protocol (ANQP) può specificare un elenco virgola delimitato di nomi di dominio completo in un nuovo nodo sotto l' Extension sottostruttura . Questo è un nodo facoltativo e i dispositivi che eseguono Android versione 10 o precedente ignorano questo nodo.

  • Android : sottostruttura estensione Android

    • AAAServerTrustedNames : Richiesto per server AAA fiducia nomi con i seguenti nodi indicati:

      • FQDN : String che contiene il server AAA fiducia nomi. Utilizzare il punto e virgola per separare i nomi attendibili. Ad esempio, example.org;example.com .
CA root private autofirmate
Gli amministratori di rete Passpoint che gestiscono i propri certificati internamente possono fornire i profili con una CA privata autofirmata per l'autenticazione AAA.
Consenti l'installazione di profili senza un certificato CA radice
Il certificato della CA radice allegato al profilo viene utilizzato per l'autenticazione del server AAA. Gli amministratori di rete Passpoint che desiderano fare affidamento su CA radice pubbliche affidabili per l'autenticazione del server AAA possono fornire profili senza un certificato CA radice. In questo caso, il sistema verifica i certificati del server AAA rispetto ai certificati della CA principale pubblica installati nel truststore.

Fornitura Passpoint R2

Android 10 ha introdotto il supporto per le funzionalità di Passpoint R2. Passpoint R2 implementa la registrazione online (OSU), un metodo standard per fornire nuovi profili Passpoint. Android 10 e versioni successive supportano il provisioning di profili EAP-TTLS utilizzando il protocollo SOAP-XML su OSU ESS aperto.

Le funzionalità di Passpoint R2 supportate richiedono solo il codice di riferimento AOSP, non è richiesto alcun driver aggiuntivo o supporto firmware). Il codice di riferimento AOSP include anche un'implementazione predefinita dell'interfaccia utente di Passpoint R2 nell'app Impostazioni.

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

  1. Visualizza un elenco dei fornitori di servizi pubblicizzati dall'AP nel selettore Wi-Fi (oltre a visualizzare gli SSID).
  2. Richiede 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 con successo.
  5. Si associa alla rete Passpoint utilizzando il profilo Passpoint appena fornito.

Caratteristiche di Passpoint R3

Android 12 introduce le seguenti funzionalità di Passpoint R3 che migliorano l'esperienza dell'utente e consentono alle reti di conformarsi alle leggi locali:

Termini e Condizioni
L'accettazione dei termini e delle condizioni è legalmente richiesta in alcune località e sedi per fornire l'accesso alla rete. Questa funzionalità consente alle implementazioni di rete di sostituire i captive portal non sicuri, che utilizzano reti aperte, con una rete Passpoint sicura. Viene visualizzata una notifica all'utente quando è necessario accettare termini e condizioni.
URL delle informazioni sulla sede
Consente agli operatori di rete e alle sedi di fornire informazioni aggiuntive all'utente, come mappe delle sedi, elenchi, promozioni e coupon. Una notifica viene visualizzata all'utente quando la rete è connessa.

Altre funzionalità di Passpoint

Android 11 introduce le seguenti funzionalità Passpoint che migliorano l'esperienza utente, il consumo energetico e la flessibilità di distribuzione.

Applicazione e notifica della data di scadenza
L'imposizione delle date di scadenza sui profili consente al framework di evitare l'autoconnessione ai punti di accesso con credenziali scadute, che sono destinate a fallire. Ciò impedisce l'utilizzo del tempo di trasmissione e consente di risparmiare batteria e larghezza di banda del backend. Il framework visualizza una notifica all'utente quando una rete corrispondente al suo profilo è nell'intervallo e il profilo è scaduto.
Profili multipli con FQDN identico
I gestori che distribuiscono reti Passpoint e utilizzano più ID di rete mobile terrestre pubblica (PLMN) possono fornire più profili Passpoint con lo stesso FQDN, uno per ogni ID PLMN, che viene automaticamente abbinato alla scheda SIM installata e utilizzato per connettere la rete.

Android 12 introduce le seguenti funzionalità Passpoint che migliorano l'esperienza utente, il consumo energetico e la flessibilità di distribuzione:

Prefisso identificativo decorato
Quando l'autenticazione per le reti con una decorazione prefisso, il prefisso identità decorato consente agli operatori di rete di aggiornare il Network Access Identifier (NAI) per eseguire il routing esplicito attraverso più proxy all'interno di una rete di AAA (vedi RFC 7542 ). Android 12 implementa questa funzione in base alla specifica WBA per le estensioni PPS-MO .
Gestione imminente della deautenticazione
Consente agli operatori di rete di segnalare a un dispositivo che il servizio non è disponibile per la credenziale utilizzata per l'autenticazione alla rete per una determinata durata (specificata tramite un ritardo di timeout). Dopo aver ricevuto questo segnale, i dispositivi non tenteranno di riconnettersi alla rete con le stesse credenziali fino alla scadenza del ritardo di timeout. Al contrario, i dispositivi che non supportano questa funzionalità potrebbero tentare di riconnettersi ripetutamente alla rete mentre il servizio non è disponibile.

Esempi di profili XML OMA-DM PerProviderSubscription-MO

Profilo con credenziali nome utente/password (EAP-TTLS)

L'esempio seguente mostra un profilo per una rete con:

  • Rete nome descrittivo insieme a Example Network
  • Nome di dominio completo set di hotspot.example.net
  • OI del consorzio di roaming (per il roaming)
  • Credenziali con nome utente user , la password password codificati con Base64, e insieme regno di example.net
  • Metodo EAP impostato a 21 (EAP-TTLS)
  • Fase-2 metodo interno insieme al MS-CHAP-V2
  • I nomi di dominio AAA alternativi impostati trusted.com e trusted.net
<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.net</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>
        <NodeName>Extension</NodeName>
        <Node>
            <NodeName>Android</NodeName>
            <Node>
                <NodeName>AAAServerTrustedNames</NodeName>
                <Node>
                    <NodeName>FQDN</NodeName>
                    <Value>trusted.com;trusted.net</Value>
                </Node>
            </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

Profilo con una credenziale di certificato digitale (EAP-TLS)

L'esempio seguente mostra un profilo per una rete con:

  • Rete set nome descrittivo per GlobalRoaming
  • Nome di dominio completo set di globalroaming.net
  • Roaming Consortium OIs (per il roaming)
  • Realm insieme a users.globalroaming.net
  • Credenziale con un certificato digitale con l'impronta digitale specificata
<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>GlobalRoaming</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>globalroaming.net</Value>
        </Node>
        <Node>
          <NodeName>RoamingConsortiumOI</NodeName>
          <Value>FFEEDDCC0,FFEEDDCC1,009999,008888</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>users.globalroaming.net</Value>
        </Node>
        <Node>
          <NodeName>DigitalCertificate</NodeName>
          <Node>
            <NodeName>CertificateType</NodeName>
            <Value>x509v3</Value>
          </Node>
          <Node>
            <NodeName>CertSHA256Fingerprint</NodeName>
            <Value>0ef08a3d2118700474ca51fa25dc5e6d3d63d779aaad8238b608a853761da533</Value>
          </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

Profilo con una credenziale SIM (EAP-AKA)

L'esempio seguente mostra un profilo per una rete con:

  • Rete nome descrittivo insieme a Purple Passpoint
  • Nome di dominio completo set di wlan.mnc888.mcc999.3gppnetwork.org
  • Credenziale SIM con PLMN ID di 999888
  • Metodo EAP impostato a 23 (EAP-AKA)
<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>Purple Passpoint</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>purplewifi.com</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>wlan.mnc888.mcc999.3gppnetwork.org</Value>
        </Node>
        <Node>
          <NodeName>SIM</NodeName>
          <Node>
            <NodeName>IMSI</NodeName>
            <Value>999888*</Value>
          </Node>
          <Node>
            <NodeName>EAPType</NodeName>
            <Value>23</Value>
          </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

Avviso di autenticazione

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

Segmento Impatto Dimensione dell'impatto
Corrieri e fornitori di servizi Passpoint Aumento del carico sulla rete cellulare. Qualsiasi vettore che utilizza Passpoint R1.
Utenti Occasione mancata per la connessione automatica ai punti di accesso (AP) Wi-Fi dell'operatore, con conseguente aumento dei costi dei dati. Qualsiasi utente con un dispositivo che funziona su una rete di operatori che supporta Passpoint R1.

Causa del fallimento

Passpoint specifica un meccanismo per abbinare un provider di servizi pubblicizzato (ANQP) a un profilo installato sul dispositivo. Le seguenti regole di corrispondenza per EAP-SIM, EAP-AKA e 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 con i fornitori di servizi precedentemente attivi, quindi i dispositivi Passpoint non si sono collegati automaticamente.

Soluzioni alternative

Per aggirare il problema dei criteri di corrispondenza modificati, i gestori ei fornitori di servizi devono aggiungere l'ambito dell'identificatore di accesso alla rete (NAI) alle informazioni pubblicate da Passpoint AP.

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

Correzione della rete per operatori e fornitori di servizi Passpoint

La soluzione alternativa sul lato rete richiede la riconfigurazione della rete per aggiungere l'elemento ANQP dell'area di autenticazione NAI come specificato di seguito. Le specifiche di Passpoint non richiedono l'elemento ANQP dell'area di autenticazione NAI, ma l'aggiunta di questa proprietà è conforme alle specifiche di Passpoint, quindi le implementazioni client conformi alle specifiche non dovrebbero interrompersi.

  1. Aggiungere l'elemento ANQP del regno NAI.
  2. Impostare il regno sottocampo NAI per abbinare il Realm del profilo installato sul dispositivo.
  3. Imposta le seguenti informazioni in base a ciascun tipo di EAP:

    • EAP-TTLS: Insieme EAPMethod(21) e sostenuti tipi di autenticazione interne ( PAP , CHAP , MS-CHAP o MS-CHAP-V2 )
    • EAP-TLS: Set EAPMethod(13)
    • EAP-SIM: Set EAPMethod(18)
    • EAP-AKA: Set EAPMethod(23)
    • EAP-AKA ': Set EAPMethod(50)

Correzione dispositivo/AOSP per OEM

Per implementare una soluzione lato dispositivo, OEM bisogno per scegliere la patch CL AOSP / 718.508 . Questa patch può essere applicata alle seguenti versioni (non si applica ad Android 10 o versioni successive):

  • Android 9
  • Android 8.x

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