Passpoint è un WFA (Wi-Fi Alliance) che consente ai dispositivi mobili di rilevare e autenticare le reti Wi-Fi hotspot che forniscono accesso a internet.
Assistenza per i dispositivi
Per supportare Passpoint, i produttori di dispositivi devono implementare
l'interfaccia Supplicant. A partire da Android 13,
l'interfaccia utilizza AIDL per la definizione dell'HAL.
Per le release precedenti ad Android 13:
le interfacce e le partizioni dei fornitori usano il protocollo HIDL.
I file HIDL si trovano in hardware/interfaces/supplicant/1.x
mentre i file AIDL si trovano in hardware/interfaces/supplicant/aidl
.
Il supplicante fornisce assistenza per
lo standard 802.11u, in particolare
funzionalità di rilevamento e selezione della rete, come il servizio pubblicitario generico
(GAS) e il protocollo ANQP (Network Query Protocol).
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 firmware per 802.11u. Tutti gli altri requisiti per il supporto di Passpoint sono inclusi in AOSP.
Android 10 o versioni precedenti
Per i dispositivi con Android 10 o versioni precedenti, i produttori devono fornire sia framework che HAL/firmware:
- Framework: Abilita Passpoint (richiede un flag di funzionalità)
- Firmware: Supporto per 802.11u
Per supportare Passpoint, implementa l'HAL Wi-Fi e attiva il flag funzionalità per
Passpoint. Modifica il valore nella colonna device.mk
situata in device/<oem>/<device>
la variabile di ambiente PRODUCT_COPY_FILES
per includere il supporto
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 il supporto di Passpoint sono inclusi in AOSP.
Convalida
Per convalidare l'implementazione della funzionalità Passpoint, esegui quanto segue Test delle unità del pacchetto Passpoint:
Test di servizio:
atest com.android.server.wifi.hotspot2
Test del gestore:
atest android.net.wifi.hotspot2
Provisioning Passpoint R1
Android supporta Passpoint R1 a partire da Android 6.0, consentendo il provisioning di credenziali Passpoint R1 (release 1) attraverso il download basato sul web di un file speciale contenente informazioni su profilo e credenziali. Il cliente 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 contenuti.
Le informazioni del profilo contenute nel file vengono utilizzate per la corrispondenza con i dati recuperate da punti di accesso abilitati per Passpoint e le credenziali vengono applicati automaticamente a qualsiasi rete corrispondente.
L'implementazione di riferimento Android supporta EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA ed EAP-AKA".
Meccanismo di download
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 e i dati della chiave privata. I contenuti sono costituiti da testo MIME criptato e multiparte. rappresentati in UTF-8 e codificati nella codifica Base64 in base alla sezione 6.8 di RFC-2045.
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 suapplication/x-wifi-config
.Content-Transfer-Encoding
deve essere impostato subase64
.Content-Disposition
non deve essere impostato.
Il metodo HTTP utilizzato per recuperare il file deve essere GET. Ogni volta che viene inviata una richiesta HTTP GET il browser riceve una risposta con queste intestazioni MIME, l'app di installazione a iniziare. Il download deve essere attivato toccando un elemento HTML come i reindirizzamenti automatici a un URL di download non sono supportati). Questo comportamento sono specifiche di Google Chrome; altri browser web potrebbero o meno fornire funzionalità.
Composizione dei file
I contenuti codificati in Base64 devono essere costituiti da contenuti MIME multiparte con un
Content-Type
di multipart/mixed
. Le seguenti parti compongono la singola
dei contenuti multiparte.
Pezzo | Tipo di contenuto (meno virgolette) | Obbligatorie | Descrizione |
---|---|---|---|
Profilo |
application/x-passpoint-profile
|
Sempre | Payload in formato OMA-DM SyncML contenente il Passpoint R1
OM con formato PerProviderSubscription per HomeSP
e Credential . |
Certificato di attendibilità |
application/x-x509-ca-cert
|
Obbligatorio per EAP-TLS ed EAP-TTLS | Un singolo payload del certificato X.509v3 con codifica Base64. |
Chiave EAP-TLS |
application/x-pkcs12
|
Obbligatorio per EAP-TLS | Una struttura ASN.1 PKCS #12 con codifica base64 contenente un certificato client con almeno il certificato client e la chiave privata associata. Il container PKCS 12, la chiave privata e i certificati devono devono essere tutte in chiaro senza password. |
La sezione Profilo deve essere trasferita come XML con codifica Base64 e UTF-8
che specifica parti dei sottoalberi HomeSP
e Credential
della
Specifiche tecniche Passpoint R2 Versione 1.0.0, sezione 9.1.
Il nodo di primo livello deve essere MgmtTree
e il sottonodo immediato deve essere
PerProviderSubscription
. Un file XML di esempio viene visualizzato
Esempio di profilo OMA-DM XML.
In HomeSP
vengono utilizzati i seguenti nodi secondari:
FriendlyName
: deve essere impostato; utilizzato come testo visualizzatoFQDN
: campo obbligatorioRoamingConsortiumOI
In Credential
vengono utilizzati i seguenti nodi secondari:
Realm
: deve essere una stringa non vuotaUsernamePassword
: obbligatorio per EAP-TTLS con i seguenti nodi impostati:Username
: stringa che contiene il nome utentePassword
: stringa con codifica Base64 (impostata sucGFzc3dvcmQ=
, il valore stringa con codifica base64 per "password", nell'esempio riportato di seguito)EAPMethod/EAPType
: deve essere impostato su21
EAPMethod/InnerMethod
: il valore deve essere impostato suPAP
,CHAP
,MS-CHAP
, oMS-CHAP-V2
DigitalCertificate
: obbligatorio per EAP-TLS. Devono essere impostati i seguenti nodi:CertificateType
impostato alle orex509v3
CertSHA256Fingerprint
impostato sul digest SHA-256 corretto del client certificato nella sezione MIME della chiave EAP-TLS
SIM
: obbligatorio per EAP-SIM, EAP-AKA ed EAP-AKA". Il campoEAPType
deve essere impostato sul tipo EAP appropriato eIMSI
deve corrispondere a un IMSI di uno dei le schede SIM installate sul dispositivo al momento del provisioning. IMSI una stringa può essere composta interamente da cifre decimali per forzare la piena uguaglianza o di 5 o 6 cifre decimali seguite da un asterisco (*) per allentare la corrispondenza dell'IMSI solo al Centro clienti/MNC. Ad esempio, la stringa IMSI 123456* corrisponde a qualsiasi scheda SIM con Centro clienti come 123 e MNC come 456.
Android 11 introduce funzionalità che per rendere più flessibile il provisioning di Passpoint R1.
- Nome di dominio distinto per autenticazione, autorizzazione e contabilità (AAA)
Amministratori di rete Passpoint che richiedono un nome di dominio AAA specificato indipendentemente dal nome di dominio completo (FQDN) pubblicizzato dal tramite Access Network Query Protocol (ANQP) è possibile specificare elenco delimitato da punti e virgola di nomi di dominio completi in un nuovo nodo in il sottoalbero
Extension
. Questo è un nodo facoltativo e i dispositivi che eseguono Android versione 10 o precedente ignora questo nodo.
Android
: sottoalbero dell'estensione AndroidAAAServerTrustedNames
: obbligatorio per i nomi attendibili dei server AAA con i seguenti nodi impostati:FQDN
: stringa che contiene i nomi attendibili del server AAA. Utilizza le funzionalità di e virgola per separare i nomi attendibili. Ad esempio:example.org;example.com
.
- CA radice private autofirmate
- Amministratori di rete di Passpoint che gestiscono internamente i certificati può eseguire il provisioning dei profili con una CA privata autofirmata per l'autenticazione AAA.
- Consenti l'installazione di profili senza un certificato CA radice
- Il certificato CA radice allegato al profilo viene utilizzato per AAA autenticazione del server. Amministratori di rete di Passpoint che vogliono le CA radice pubbliche attendibili per l'autenticazione del server AAA possono eseguire il provisioning profili senza un certificato CA radice. In questo caso, il sistema verifica Certificati server AAA in base ai certificati CA radice pubblici installati in l'archivio attendibilità.
Provisioning Passpoint R2
Android 10 ha introdotto il supporto per Passpoint R2 le funzionalità di machine learning. Passpoint R2 implementa la registrazione online (OSU), un metodo standard per eseguire il provisioning dei nuovi profili Passpoint. Android 10 e versioni successive supporta il provisioning di profili EAP-TTLS utilizzando il protocollo SOAP-XML apri OSU ESS.
Le funzionalità di Passpoint R2 supportate richiedono solo il codice di riferimento AOSP (non è richiesto supporto aggiuntivo di driver o firmware). Il codice di riferimento AOSP include anche un'implementazione predefinita dell'interfaccia utente Passpoint R2 nelle Impostazioni dell'app.
Quando Android rileva un punto di accesso Passpoint R2, il framework Android:
- Mostra un elenco dei fornitori di servizi pubblicizzati dall'AP nella rete Wi-Fi (oltre a visualizzare gli SSID).
- Chiede all'utente di toccare uno dei fornitori di servizi per configurare un Passpoint profilo.
- Guida l'utente nel flusso di configurazione del profilo Passpoint.
- Installa il profilo Passpoint risultante al completamento dell'operazione.
- Si associa alla rete Passpoint utilizzando il Passpoint di cui è stato eseguito il provisioning di recente profilo.
Funzionalità di Passpoint R3
Android 12 introduce il Passpoint R3 che migliorano l'esperienza utente e consentono alle reti di rispettare leggi locali:
- Termini e condizioni
L'accettazione dei Termini e condizioni è obbligatoria per legge in alcune località e locali per fornire l'accesso alla rete. Questa funzione consente ai deployment di rete sostituire i captive portal non sicuri, che utilizzano reti aperte, con un Rete Passpoint. Viene visualizzata una notifica per l'utente quando condizioni dell'account.
L'URL dei Termini e condizioni deve indirizzare a un sito web sicuro utilizzando HTTPS. Se l’URL rimanda a un sito web non sicuro, il framework disconnette e blocca la rete.
- URL informazioni sulla sede
Consente agli operatori di rete e alle sedi di fornire informazioni aggiuntive per l'utente, come mappe dei luoghi, directory promozioni e coupon. Viene visualizzata una notifica all'utente quando che la rete sia connessa.
L'URL delle informazioni sul luogo deve indirizzare a un sito web sicuro tramite HTTPS. Se l'URL rimanda a un sito web non sicuro, il framework ignora l'URL e non mostra alcuna notifica.
Altre funzionalità di Passpoint
Android 11 introduce il seguente Passpoint che migliorano l'esperienza utente, l'utilizzo dell'energia e il deployment una maggiore flessibilità.
- Applicazione e notifica della data di scadenza
- L'applicazione di date di scadenza ai profili consente al framework di evitare la connessione automatica ai punti di accesso con credenziali scadute, non va a buon fine. In questo modo si evita l'utilizzo del tempo di trasmissione e si risparmia batteria e backend e la larghezza di banda. Il framework mostra una notifica all'utente quando una rete il profilo corrispondente è nell'intervallo e il profilo è scaduto.
- Più profili con nome di dominio completo identico
- Operatori che distribuiscono reti Passpoint e utilizzano più dispositivi mobili terrestri pubblici di rete (PLMN) possono eseguire il provisioning di più profili Passpoint con lo stesso FQDN, uno per ogni ID PLMN, che viene associato automaticamente al valore scheda SIM installata e utilizzata per connettersi alla rete.
Android 12 introduce il seguente Passpoint che migliorano l'esperienza utente, l'utilizzo dell'energia e il deployment flessibilità:
- Prefisso identità decorato
- Quando esegui l'autenticazione sulle emittenti con una decorazione del prefisso, il prefisso di identità consente agli operatori di rete di aggiornare l'accesso alla rete identificatore (NAI) per eseguire l'instradamento esplicito attraverso più all'interno di una rete AAA (vedi RFC 7542). Android 12 implementa questa funzionalità secondo 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 usata per autenticarsi in rete per un (specificata attraverso 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 questa funzionalità potrebbe tentare di riconnettersi alla rete quando il servizio non è disponibile.
Esempi di profili XML OMA-DM PerProviderSubscription-MO
Profilo con credenziale nome utente/password (EAP-TTLS)
L'esempio seguente mostra un profilo per una rete con:
- Nome compatibile con la rete impostato su
Example Network
- FQDN impostato su
hotspot.example.net
- OI del consorzio di roaming (per il roaming)
- Credenziale con nome utente
user
, passwordpassword
codificata con Base64, con area di autenticazione impostata suexample.net
- Metodo EAP impostato su
21
(EAP-TTLS) - Metodo interno della fase 2 impostato su
MS-CHAP-V2
- Nomi di dominio AAA alternativi impostati su
trusted.com
etrusted.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:
- Nome compatibile con la rete impostato su
GlobalRoaming
- FQDN impostato su
globalroaming.net
- OI del Roaming Consortium (per il roaming)
- Area di autenticazione impostata su
users.globalroaming.net
- Credenziale con un certificato digitale con la fingerprint 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 credenziale SIM (EAP-AKA)
L'esempio seguente mostra un profilo per una rete con:
- Nome compatibile con la rete impostato su
Purple Passpoint
- FQDN impostato su
wlan.mnc888.mcc999.3gppnetwork.org
- Credenziale SIM con ID PLMN
999888
- Metodo EAP impostato su
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>
Avvertenza per l'autenticazione
Dispositivi con Android 8.x o Android 9 con Passpoint R1 EAP-SIM, EAP-AKA o EAP-AKA" profilo non si connetterà automaticamente alla rete Passpoint. Questo interessa utenti, operatori e servizi riducendo l'offload Wi-Fi.
Segmento | Impatto | Dimensione dell'impatto |
---|---|---|
Operatori e fornitori di servizi Passpoint | Carico elevato sulla rete mobile. | Qualsiasi operatore che utilizza Passpoint R1. |
Utenti | Hai perso l'opportunità di connetterti automaticamente ai punti di accesso Wi-Fi dell'operatore con conseguente aumento dei costi dei dati. | Qualsiasi utente con un dispositivo che supporta la rete di un operatore Passpoint R1. |
Causa dell'errore
Passpoint specifica un meccanismo di corrispondenza con 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 sul EAP-SIM/AKA/AKA errori:
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 osservato alcuna corrispondenza per fornitori di servizi funzionanti, quindi i dispositivi Passpoint non si collegavano automaticamente.
Soluzioni alternative
Per aggirare il problema della modifica dei criteri di corrispondenza, gli operatori e i provider di servizi devono aggiungere l'area di autenticazione Network Access Identifier (NAI) le informazioni pubblicate dall'AP Passpoint.
La soluzione consigliata è che i provider di servizi di rete implementino un soluzione alternativa lato rete per velocizzare il deployment. Lato dispositivo La soluzione alternativa dipende dal fatto che gli OEM recuperino un elenco modifiche (CL) da AOSP aggiornare i dispositivi sul campo.
Correzione di rete per operatori e fornitori di servizi Passpoint
La soluzione alternativa lato rete richiede la riconfigurazione della rete per aggiungere il NAI l'elemento ANQP dell'area di autenticazione come specificato di seguito. Le specifiche Passpoint non richiedono l'elemento ANQP dell'area di autenticazione NAI, ma l'aggiunta di questa proprietà è conforme alle specifiche Passpoint, quindi il cliente conforme alle specifiche le implementazioni non dovrebbero interrompersi.
- Aggiungi l'elemento ANQP dell'area di autenticazione NAI.
- Imposta il campo secondario dell'area di autenticazione NAI in modo che corrisponda al valore
Realm
del profilo installato sul dispositivo. Imposta le seguenti informazioni in base a ciascun tipo di EAP:
- EAP-TTLS: imposta
EAPMethod(21)
e tipi di autenticazione interni supportati (PAP
,CHAP
,MS-CHAP
oMS-CHAP-V2
) - EAP-TLS: imposta
EAPMethod(13)
- EAP-SIM: imposta
EAPMethod(18)
- EAP-AKA: imposta
EAPMethod(23)
- EAP-AKA': Imposta
EAPMethod(50)
- EAP-TTLS: imposta
Correzione dispositivo/AOSP per gli OEM
Per implementare una soluzione alternativa lato dispositivo, gli OEM devono scegliere il CL della patch aosp/718508 Questa patch può essere applicata in aggiunta alle seguenti release (non si applica a Android 10 o versioni successive):
- Android 9
- Android 8.x
Una volta ottenuta la patch, gli OEM devono aggiornare i dispositivi sul campo.