Point de passe (Point d'accès 2.0)

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Passpoint est un protocole Wi-Fi Alliance (WFA) qui permet aux appareils mobiles de découvrir et de s'authentifier auprès des points d'accès Wi-Fi qui fournissent un accès Internet.

Prise en charge de l'appareil

Pour prendre en charge Passpoint, les fabricants d'appareils doivent implémenter l'interface Supplicant. À partir d'Android 13, l'interface utilise AIDL pour la définition HAL. Pour les versions antérieures à Android 13, les interfaces et les partitions du fournisseur utilisent HIDL. Les fichiers HIDL sont dans hardware/interfaces/supplicant/1.x et les fichiers AIDL sont dans hardware/interfaces/supplicant/aidl . Le demandeur prend en charge la norme 802.11u, en particulier les fonctionnalités de découverte et de sélection de réseau telles que le service de publicité générique (GAS) et le protocole de requête de réseau d'accès (ANQP).

Mise en œuvre

Android 11 ou supérieur

Pour prendre en charge Passpoint sur les appareils exécutant Android 11 ou une version ultérieure, les fabricants d'appareils doivent fournir une prise en charge du micrologiciel pour 802.11u. Toutes les autres conditions requises pour la prise en charge de Passpoint sont incluses dans AOSP.

Android 10 ou inférieur

Pour les appareils exécutant Android 10 ou une version antérieure, les fabricants d'appareils doivent fournir à la fois une prise en charge du framework et de HAL/firmware :

  • Framework : Activer Passpoint (nécessite un indicateur de fonctionnalité)
  • Micrologiciel : Prise en charge de 802.11u

Pour prendre en charge Passpoint, implémentez le Wi-Fi HAL et activez l'indicateur de fonctionnalité pour Passpoint. Dans device.mk situé dans device/<oem>/<device> , modifiez la variable d'environnement PRODUCT_COPY_FILES pour inclure la prise en charge de la fonctionnalité Passpoint :

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

Toutes les autres conditions requises pour la prise en charge de Passpoint sont incluses dans AOSP.

Validation

Pour valider votre implémentation de la fonctionnalité Passpoint, utilisez l'ensemble de tests unitaires et de tests d'intégration fournis dans Android Comms Test Suite (ACTS).

Tests unitaires

Exécutez les tests unitaires suivants du package Passpoint.

Essais de service :

atest com.android.server.wifi.hotspot2

Épreuves du gestionnaire :

atest android.net.wifi.hotspot2

Tests d'intégration (ACTS)

La suite de tests ACTS Passpoint, située dans tools/test/connectivity/acts_tests/tests/google/wifi/WifiPasspointTest.py , implémente un ensemble de tests fonctionnels.

Approvisionnement Passpoint R1

Android prend en charge Passpoint R1 depuis Android 6.0, permettant la fourniture d'informations d'identification Passpoint R1 (version 1) via le téléchargement Web d'un fichier spécial contenant des informations de profil et d'informations d'identification. Le client lance automatiquement un programme d'installation spécial pour les informations Wi-Fi et permet à l'utilisateur de visualiser certaines parties des informations avant d'accepter ou de refuser le contenu.

Les informations de profil contenues dans le fichier sont utilisées pour faire correspondre les données extraites des points d'accès compatibles Passpoint, et les informations d'identification sont automatiquement appliquées pour tout réseau correspondant.

L'implémentation de référence Android prend en charge EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA et EAP-AKA'.

Mécanisme de téléchargement

Le fichier de configuration Passpoint doit être hébergé sur un serveur Web et doit être protégé par TLS (HTTPS) car il peut contenir un mot de passe en texte clair ou des données de clé privée. Le contenu est composé d'un texte MIME en plusieurs parties encapsulé représenté en UTF-8 et encodé en base64 conformément à la section 6.8 de la RFC-2045.

Les champs d'en-tête HTTP suivants sont utilisés par le client pour lancer automatiquement un programme d'installation Wi-Fi sur l'appareil :

  • Content-Type doit être défini sur application/x-wifi-config .
  • Content-Transfer-Encoding doit être défini sur base64 .
  • Content-Disposition ne doit pas être défini.

La méthode HTTP utilisée pour récupérer le fichier doit être GET. Chaque fois qu'un HTTP GET du navigateur reçoit une réponse avec ces en-têtes MIME, l'application d'installation est lancée. Le téléchargement doit être déclenché en appuyant sur un élément HTML tel qu'un bouton (les redirections automatiques vers une URL de téléchargement ne sont pas prises en charge). Ce comportement est spécifique à Google Chrome ; d'autres navigateurs Web peuvent ou non fournir des fonctionnalités similaires.

Composition du dossier

Le contenu encodé en Base64 doit consister en un contenu multipart MIME avec un Content-Type de multipart/mixed . Les parties suivantes constituent les parties individuelles du contenu en plusieurs parties.

Partie Content-Type (moins les guillemets) Obligatoire La description
Profil application/x-passpoint-profile Toujours Charge utile au format OMA-DM SyncML contenant le MO au format Passpoint R1 PerProviderSubscription pour HomeSP et Credential .
Certificat de confiance application/x-x509-ca-cert Requis pour EAP-TLS et EAP-TTLS Une seule charge utile de certificat encodé X.509v3 base64.
Clé EAP-TLS application/x-pkcs12 Requis pour EAP-TLS Une structure PKCS #12 ASN.1 encodée en base64 contenant une chaîne de certificats client avec au moins le certificat client et la clé privée associée. Le conteneur PKCS 12 ainsi que la clé privée et les certificats doivent tous être en texte clair sans mot de passe.

La section Profile doit être transférée sous forme de texte XML codé en base64 et UTF-8 qui spécifie des parties des sous- HomeSP et Credential dans la spécification technique Passpoint R2 version 1.0.0, section 9.1.

Le nœud de niveau supérieur doit être MgmtTree et le sous-nœud immédiat doit être PerProviderSubscription . Un exemple de fichier XML apparaît dans Exemple de profil OMA-DM XML .

Les nœuds de sous-arborescence suivants sont utilisés sous HomeSP :

  • FriendlyName : doit être défini ; utilisé comme texte d'affichage
  • FQDN : Obligatoire
  • RoamingConsortiumOI

Les nœuds de sous-arborescence suivants sont utilisés sous Credential :

  • Realm : Doit être une chaîne non vide
  • UsernamePassword : requis pour EAP-TTLS avec les nœuds suivants définis :

    • Username d'utilisateur : chaîne contenant le nom d'utilisateur
    • Password de passe : chaîne encodée en base64 (définie sur cGFzc3dvcmQ= , la chaîne encodée en base64 pour "mot de passe", dans l'exemple ci-dessous)
    • EAPMethod/EAPType : Doit être défini sur 21
    • EAPMethod/InnerMethod : doit être défini sur PAP , CHAP , MS-CHAP ou MS-CHAP-V2
  • DigitalCertificate : Requis pour EAP-TLS. Les nœuds suivants doivent être définis :

    • CertificateType défini sur x509v3
    • CertSHA256Fingerprint définie sur le résumé SHA-256 correct du certificat client dans la section MIME de la clé EAP-TLS
  • SIM : Requis pour EAP-SIM, EAP-AKA et EAP-AKA'. Le champ EAPType doit être défini sur le type EAP approprié et IMSI doit correspondre à un IMSI de l'une des cartes SIM installées dans l'appareil au moment de l'approvisionnement. La chaîne IMSI peut être entièrement constituée de chiffres décimaux pour forcer une correspondance d'égalité complète, ou de zéro ou plusieurs chiffres décimaux suivis d'un astérisque (*) pour assouplir la correspondance IMSI au préfixe uniquement. Par exemple, la chaîne IMSI 123* correspond à n'importe quelle carte SIM avec un IMSI commençant par 123.

Android 11 introduit des fonctionnalités qui rendent le provisionnement Passpoint R1 plus flexible.

Nom de domaine d'authentification, d'autorisation et de comptabilité (AAA) séparé

Les administrateurs réseau Passpoint qui ont besoin d'un nom de domaine AAA spécifié indépendamment du nom de domaine complet (FQDN) annoncé par le réseau via le protocole ANQP (Access Network Query Protocol) peuvent spécifier une liste de FQDN délimitée par des points-virgules dans un nouveau nœud sous la sous-arborescence Extension . Il s'agit d'un nœud facultatif et les appareils exécutant Android version 10 ou inférieure ignorent ce nœud.

  • Android : sous-arborescence des extensions Android

    • AAAServerTrustedNames : requis pour les noms de confiance de serveur AAA avec les nœuds suivants définis :

      • FQDN : chaîne qui contient les noms de confiance du serveur AAA. Utilisez des points-virgules pour séparer les noms de confiance. Par exemple, example.org;example.com .
Autorités de certification racine privées auto-signées
Les administrateurs réseau Passpoint qui gèrent leurs certificats en interne peuvent fournir des profils avec une autorité de certification privée auto-signée pour l'authentification AAA.
Autoriser l'installation de profils sans certificat d'autorité de certification racine
Le certificat de l'autorité de certification racine attaché au profil est utilisé pour l'authentification du serveur AAA. Les administrateurs réseau Passpoint qui souhaitent s'appuyer sur des autorités de certification racine de confiance publiques pour leur authentification de serveur AAA peuvent provisionner des profils sans certificat d'autorité de certification racine. Dans ce cas, le système vérifie les certificats du serveur AAA par rapport aux certificats publics de l'autorité de certification racine installés dans le magasin de confiance.

Approvisionnement Passpoint R2

Android 10 a introduit la prise en charge des fonctionnalités Passpoint R2. Passpoint R2 implémente l'inscription en ligne (OSU), une méthode standard pour fournir de nouveaux profils Passpoint. Android 10 et versions ultérieures prennent en charge le provisionnement de profils EAP-TTLS à l'aide du protocole SOAP-XML sur un ESS OSU ouvert.

Les fonctionnalités Passpoint R2 prises en charge ne nécessitent que le code de référence AOSP (aucune prise en charge de pilote ou de micrologiciel supplémentaire n'est requise). Le code de référence AOSP inclut également une implémentation par défaut de l'interface utilisateur Passpoint R2 dans l'application Paramètres.

Lorsqu'Android détecte un point d'accès Passpoint R2, le framework Android :

  1. Affiche une liste des fournisseurs de services annoncés par le point d'accès dans le sélecteur Wi-Fi (en plus d'afficher les SSID).
  2. Invite l'utilisateur à appuyer sur l'un des fournisseurs de services pour configurer un profil Passpoint.
  3. Guide l'utilisateur tout au long du processus de configuration du profil Passpoint.
  4. Installe le profil Passpoint résultant en cas de réussite.
  5. S'associe au réseau Passpoint à l'aide du nouveau profil Passpoint.

Fonctionnalités de Passpoint R3

Android 12 introduit les fonctionnalités Passpoint R3 suivantes qui améliorent l'expérience utilisateur et permettent aux réseaux de se conformer aux lois locales :

Termes et conditions

L'acceptation des termes et conditions est légalement requise dans certains endroits et lieux pour fournir un accès au réseau. Cette fonctionnalité permet aux déploiements réseau de remplacer les portails captifs non sécurisés, qui utilisent des réseaux ouverts, par un réseau Passpoint sécurisé. Une notification est affichée à l'utilisateur lorsque les termes et conditions doivent être acceptés.

L'URL des termes et conditions doit pointer vers un site Web sécurisé utilisant HTTPS. Si l'URL pointe vers un site Web non sécurisé, le framework se déconnecte immédiatement et bloque le réseau.

URL des informations sur le lieu

Permet aux opérateurs de réseaux et aux sites de fournir des informations supplémentaires à l'utilisateur, telles que des plans de sites, des répertoires, des promotions et des coupons. Une notification s'affiche pour l'utilisateur lorsque le réseau est connecté.

L'URL des informations sur le lieu doit pointer vers un site Web sécurisé utilisant HTTPS. Si l'URL pointe vers un site Web non sécurisé, le framework ignore l'URL et n'affiche pas de notification.

Autres fonctionnalités Passpoint

Android 11 introduit les fonctionnalités Passpoint suivantes qui améliorent l'expérience utilisateur, la consommation d'énergie et la flexibilité de déploiement.

Application et notification de la date d'expiration
L'application de dates d'expiration sur les profils permet au framework d'éviter la connexion automatique aux points d'accès avec des informations d'identification expirées, qui sont vouées à l'échec. Cela empêche l'utilisation du temps d'antenne et économise la batterie et la bande passante principale. Le cadre affiche une notification à l'utilisateur lorsqu'un réseau correspondant à son profil est à portée et que le profil a expiré.
Plusieurs profils avec un FQDN identique
Les opérateurs qui déploient des réseaux Passpoint et utilisent plusieurs ID de réseau mobile terrestre public (PLMN) peuvent fournir plusieurs profils Passpoint avec le même FQDN, un pour chaque ID PLMN, qui est automatiquement associé à la carte SIM installée et utilisé pour se connecter au réseau.

Android 12 introduit les fonctionnalités Passpoint suivantes qui améliorent l'expérience utilisateur, la consommation d'énergie et la flexibilité de déploiement :

Préfixe d'identité décoré
Lors de l'authentification sur des réseaux avec une décoration de préfixe, le préfixe d'identité décoré permet aux opérateurs de réseau de mettre à jour l'identifiant d'accès au réseau (NAI) pour effectuer un routage explicite via plusieurs proxys à l'intérieur d'un réseau AAA (voir RFC 7542 ). Android 12 implémente cette fonctionnalité conformément à la spécification WBA pour les extensions PPS-MO .
Traitement imminent de la désauthentification
Permet aux opérateurs de réseau de signaler à un appareil que le service n'est pas disponible pour les informations d'identification utilisées pour s'authentifier sur le réseau pendant une certaine durée (spécifiée par un délai d'expiration). Après avoir reçu ce signal, les appareils ne tenteront pas de se reconnecter au réseau avec les mêmes informations d'identification tant que le délai d'expiration n'aura pas expiré. En revanche, les appareils qui ne prennent pas en charge cette fonctionnalité peuvent tenter de se reconnecter à plusieurs reprises au réseau lorsque le service n'est pas disponible.

Exemples de profils XML OMA-DM PerProviderSubscription-MO

Profil avec identifiant/mot de passe (EAP-TTLS)

L'exemple suivant illustre un profil pour un réseau avec :

  • Nom convivial du réseau défini sur Example Network
  • FQDN défini sur hotspot.example.net
  • IO du consortium d'itinérance (pour l'itinérance)
  • Identifiant avec nom d'utilisateur user , mot de passe mot de password encodé avec Base64 et domaine défini sur example.net
  • Méthode EAP définie sur 21 (EAP-TTLS)
  • Méthode interne de phase 2 définie sur MS-CHAP-V2
  • Noms de domaine AAA alternatifs définis sur trusted.com et 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>

Profil avec un identifiant de certificat numérique (EAP-TLS)

L'exemple suivant illustre un profil pour un réseau avec :

  • Nom convivial du réseau défini sur GlobalRoaming
  • FQDN défini sur globalroaming.net
  • OI du consortium d'itinérance (pour l'itinérance)
  • Domaine défini sur users.globalroaming.net
  • Identifiant avec un certificat numérique qui a l'empreinte digitale spécifiée
<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>

Profil avec identifiant SIM (EAP-AKA)

L'exemple suivant illustre un profil pour un réseau avec :

  • Nom convivial du réseau défini sur Purple Passpoint
  • Nom de domaine complet défini sur wlan.mnc888.mcc999.3gppnetwork.org
  • Identifiant SIM avec ID PLMN de 999888
  • Méthode EAP définie sur 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>

Avis d'authentification

Les appareils exécutant Android 8.x ou Android 9 avec un profil Passpoint R1 EAP-SIM, EAP-AKA ou EAP-AKA ne se connecteront pas automatiquement au réseau Passpoint. Ce problème affecte les utilisateurs, les opérateurs et les services en réduisant le déchargement Wi-Fi.

Segment Impact Taille de l'impact
Opérateurs et fournisseurs de services Passpoint Augmentation de la charge sur le réseau cellulaire. Tout transporteur utilisant Passpoint R1.
Utilisateurs Occasion manquée de se connecter automatiquement aux points d'accès (AP) Wi-Fi de l'opérateur, ce qui entraîne des coûts de données plus élevés. Tout utilisateur disposant d'un appareil fonctionnant sur un réseau d'opérateur prenant en charge Passpoint R1.

Cause de l'échec

Passpoint spécifie un mécanisme pour faire correspondre un fournisseur de services annoncé (ANQP) à un profil installé sur l'appareil. Les règles de correspondance suivantes pour EAP-SIM, EAP-AKA et EAP-AKA' sont un ensemble partiel de règles se concentrant sur les échecs 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.

Le deuxième critère a été modifié dans Android 8.0 :

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

Avec cette modification, le système n'a observé aucune correspondance pour les fournisseurs de services qui travaillaient auparavant, de sorte que les appareils Passpoint ne se sont pas connectés automatiquement.

Solutions de contournement

Pour contourner le problème des critères de correspondance modifiés, les opérateurs et les fournisseurs de services doivent ajouter le domaine de l'identifiant d'accès au réseau (NAI) aux informations publiées par le point d'accès Passpoint.

La solution recommandée consiste pour les fournisseurs de services réseau à mettre en œuvre une solution de contournement côté réseau pour un déploiement plus rapide. Une solution de contournement côté appareil dépend du fait que les OEM récupèrent une liste de modifications (CL) auprès d'AOSP, puis mettent à jour les appareils sur le terrain.

Correctif réseau pour les opérateurs et les fournisseurs de services Passpoint

La solution de contournement côté réseau nécessite de reconfigurer le réseau pour ajouter l'élément ANQP du domaine NAI comme spécifié ci-dessous. Les spécifications Passpoint ne nécessitent pas l'élément ANQP du domaine NAI, mais l'ajout de cette propriété est conforme aux spécifications Passpoint, de sorte que les implémentations client conformes aux spécifications ne doivent pas être interrompues.

  1. Ajoutez l'élément ANQP du domaine NAI.
  2. Définissez le sous-champ de domaine NAI pour qu'il corresponde au Realm du profil installé sur l'appareil.
  3. Définissez les informations suivantes en fonction de chaque type EAP :

    • EAP-TTLS : EAPMethod(21) et les types d'authentification interne pris en charge ( PAP , CHAP , MS-CHAP ou MS-CHAP-V2 )
    • EAP-TLS : définir EAPMethod(13)
    • EAP-SIM : Définir EAPMethod(18)
    • EAP-AKA : Définir EAPMethod(23)
    • EAP-AKA' : Définir EAPMethod(50)

Correctif de périphérique/AOSP pour les OEM

Pour implémenter une solution de contournement côté appareil, les OEM doivent choisir le correctif CL aosp/718508 . Ce correctif peut être appliqué en plus des versions suivantes (ne s'applique pas à Android 10 ou supérieur) :

  • Androïde 9
  • Android 8.x

Lorsque le correctif est récupéré, les OEM doivent mettre à jour les appareils sur le terrain.