Passpoint (Hotspot 2.0)

Passpoint es un Wi-Fi Alliance (WFA) protocolo que permite que los dispositivos móviles descubran Wi-Fi y se autentiquen hotspots que proporcionan acceso a Internet.

Asistencia para dispositivos

Para admitir Passpoint, los fabricantes de dispositivos deben implementar la interfaz de Supplicant. A partir de Android 13, la interfaz usa el AIDL para la definición de la HAL. En las versiones anteriores a Android 13, y las particiones del proveedor usan HIDL. Los archivos HIDL se encuentran en hardware/interfaces/supplicant/1.x y los archivos AIDL están en hardware/interfaces/supplicant/aidl. El solicitante brinda apoyo para estándar 802.11u, específicamente el descubrimiento y la selección de redes, como el servicio de publicidad genérica (GAS) y acceder al protocolo de consulta de red (ANQP).

Implementación

Android 11 o versiones posteriores

Para admitir Passpoint en dispositivos que ejecutan Android 11 o versiones posteriores, haz lo siguiente: Los fabricantes de dispositivos deben proporcionar compatibilidad de firmware para 802.11u. AOSP incluye todos los demás requisitos para admitir Passpoint.

Android 10 o anterior

En el caso de los dispositivos con Android 10 o versiones anteriores, los fabricantes deben proporcionar compatibilidad con el framework y con HAL/firmware:

  • Framework: Habilita Passpoint (requiere una marca de función)
  • Firmware: Compatibilidad con 802.11u

Para admitir Passpoint, implementa la HAL de Wi-Fi y habilita la marca de función para Passpoint. En device.mk, ubicado en device/<oem>/<device>, modifica el PRODUCT_COPY_FILES para incluir compatibilidad con el Función de Passpoint:

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

AOSP incluye todos los demás requisitos para admitir Passpoint.

Validación

Para validar tu implementación de la función Passpoint, ejecuta el siguiente comando: Pruebas de unidades del paquete de Passpoint:

Pruebas de servicio:

atest com.android.server.wifi.hotspot2

Pruebas del administrador:

atest android.net.wifi.hotspot2

Aprovisionamiento R1 de Passpoint

Android es compatible con Passpoint R1 desde la versión 6.0, lo que permite el aprovisionamiento de las credenciales de Passpoint R1 (versión 1) mediante la descarga de un que contiene información de perfil y credenciales. El cliente inicia automáticamente un instalador especial para la información de Wi-Fi y permite que el usuario vea partes de la información antes de aceptar o rechazar el contenido.

La información del perfil que se incluye en el archivo se usa para buscar coincidencias con los datos. recuperados de puntos de acceso habilitados para Passpoint, y las credenciales se se aplican automáticamente a cualquier red coincidente.

La implementación de referencias de Android es compatible con EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA y EAP-AKA'.

Mecanismo de descarga

El archivo de configuración de Passpoint debe estar alojado en un servidor web y protegido con TLS (HTTPS), ya que puede contener contraseñas en texto no encriptado datos de clave privada. El contenido se compone de texto MIME multiparte unido. se representa en UTF-8 y se codifica en base64 según RFC-2045, sección 6.8.

El cliente usa los siguientes campos de encabezado HTTP para iniciar automáticamente un instalador de Wi-Fi en el dispositivo:

  • Content-Type debe configurarse como application/x-wifi-config.
  • Content-Transfer-Encoding debe configurarse como base64.
  • No se debe establecer Content-Disposition.

El método HTTP que se usa para recuperar el archivo debe ser GET. Cada vez que se realice una solicitud GET de HTTP el navegador recibe una respuesta con estos encabezados MIME, la aplicación de instalación se empezaste. La descarga debe activarse presionando un elemento HTML, como un (no se admiten los redireccionamientos automáticos a una URL de descarga). Este comportamiento es específica de Google Chrome; otros navegadores web pueden o no brindar funcionalidad.

Composición del archivo

El contenido codificado en Base64 debe consistir en contenido multiparte MIME con una Content-Type de multipart/mixed. Las siguientes partes conforman el individuo del contenido multiparte.

Parte Content-Type (menos comillas) Obligatorio Descripción
Perfil application/x-passpoint-profile Siempre Carga útil con formato OMA-DM SyncML que contiene Passpoint R1 Objetivo de marketing con formato PerProviderSubscription para HomeSP y Credential.
Certificado de confianza application/x-x509-ca-cert Obligatorio para EAP-TLS y EAP-TTLS Una única carga útil de certificado con codificación base64 X.509v3.
Clave EAP-TLS application/x-pkcs12 Obligatorio para EAP-TLS Una estructura PKCS #12 ASN.1 codificada en base64 que contiene un certificado de cliente con, al menos, el certificado de cliente y la clave privada asociada. Tanto el contenedor PKCS 12 como la clave privada y los certificados estén en texto claro y sin contraseña.

La sección del perfil se debe transferir como un archivo XML con codificación base64 o UTF-8. texto que especifica partes de los subárboles HomeSP y Credential en el Passpoint R2 Technical Specification versión 1.0.0, sección 9.1

El nodo de nivel superior debe ser MgmtTree y el subnodo inmediato debe ser PerProviderSubscription En este ejemplo, aparece un archivo en formato XML Perfil de ejemplo de OMA-DM XML.

Los siguientes nodos del subárbol se usan en HomeSP:

  • FriendlyName: Se debe establecer. se utiliza como texto visible
  • FQDN: Obligatorio
  • RoamingConsortiumOI

Los siguientes nodos del subárbol se usan en Credential:

  • Realm: Debe ser una string que no esté vacía
  • UsernamePassword: Obligatorio para EAP-TTLS con los siguientes nodos configurados:

    • Username: Es una cadena que contiene el nombre de usuario.
    • Password: string codificada en base64 (configurada en cGFzc3dvcmQ=, el con codificación base64 correspondiente a "password", en el siguiente ejemplo)
    • EAPMethod/EAPType: Se debe establecer en 21.
    • EAPMethod/InnerMethod: Se debe establecer en PAP, CHAP o MS-CHAP. o MS-CHAP-V2
  • DigitalCertificate: Obligatorio para EAP-TLS. Se deben configurar los siguientes nodos:

    • CertificateType definida como x509v3
    • Se configuró CertSHA256Fingerprint en el resumen SHA-256 correcto del cliente certificado en la sección de MIME de la clave EAP-TLS
  • SIM: Se requiere para EAP-SIM, EAP-AKA y EAP-AKA. El campo EAPType debe debe establecerse en el tipo de EAP adecuado, y IMSI debe coincidir con un IMSI de uno de las tarjetas SIM instaladas en el dispositivo en el momento del aprovisionamiento. El IMSI La cadena puede constar solo de dígitos decimales para forzar la igualdad total coincidencia, o de 5 o 6 dígitos decimales seguidos de un asterisco (*) para flexibilizar la coincidencia de IMSI solo a MCC/MNC. Por ejemplo, la cadena IMSI 123456* coincide con cualquier tarjeta SIM que tenga el MCC como 123 y el MNC como 456.

Android 11 presenta funciones que hacer que el aprovisionamiento R1 de Passpoint sea más flexible.

Nombre de dominio independiente de autenticación, autorización y contabilización (AAA)

Administradores de red de Passpoint que requieran un nombre de dominio AAA especificado independiente del nombre de dominio completamente calificado (FQDN) anunciado por el a través del protocolo de consulta de acceso a la red (ANQP) puede especificar una lista de FQDN delimitada por punto y coma en un nodo nuevo el subárbol Extension. Este es un nodo opcional y los dispositivos que ejecutan Android 10 o versiones anteriores ignoran este nodo.

  • Android: Subárbol de la extensión de Android

    • AAAServerTrustedNames: Se requiere para los nombres de confianza del servidor AAA. con los siguientes nodos configurados:

      • FQDN: Es una cadena que contiene los nombres de confianza del servidor AAA. Usa punto y coma para separar los nombres de confianza. Por ejemplo, example.org;example.com.
AC raíz privadas autofirmadas
Administradores de red de Passpoint que administran sus certificados de forma interna Puedes aprovisionar perfiles con una AC privada autofirmada para la autenticación AAA.
Permitir la instalación de perfiles sin un certificado de la AC raíz
El certificado de la AC raíz que se adjunta al perfil se usa para AAA autenticación del servidor. los administradores de red de Passpoint que quieran confiar las AC raíz públicas de confianza para la autenticación de servidores AAA pueden aprovisionar sin un certificado de la AC raíz. En este caso, el sistema verifica certificados de servidor AAA contra los certificados de la AC raíz pública instalados en el almacén de confianza.

Aprovisionamiento R2 de Passpoint

Android 10 introdujo compatibilidad con Passpoint R2 atributos. Passpoint R2 implementa el registro en línea (OSU), un método estándar para aprovisionar nuevos perfiles de Passpoint. Android 10 y versiones posteriores admite el aprovisionamiento de perfiles EAP-TTLS usando el protocolo SOAP-XML en abre OSU ESS.

Las funciones compatibles de Passpoint R2 solo requieren código de referencia de AOSP (no se requiere compatibilidad adicional con controlador o firmware). El código de referencia de AOSP También incluye una implementación predeterminada de la IU de R2 de Passpoint en la Configuración .

Cuando Android detecta un punto de acceso R2 de Passpoint, el framework de Android hace lo siguiente:

  1. Muestra una lista de los proveedores de servicios anunciados por el AP en la red Wi-Fi. selector (además de mostrar los SSID).
  2. Le solicita al usuario que presione uno de los proveedores de servicios para configurar un Passpoint. perfil.
  3. Explica al usuario el flujo de configuración del perfil de Passpoint.
  4. Instala el perfil de Passpoint resultante cuando se completa correctamente.
  5. Se asocia a la red de Passpoint con el Passpoint recién aprovisionado. perfil.

Funciones de Passpoint R3

Android 12 presenta el siguiente Passpoint R3 que mejoran la experiencia del usuario y permiten que las redes cumplan con leyes locales:

Términos y Condiciones

La aceptación de los Términos y Condiciones es un requisito legal en algunas ubicaciones y para proporcionar acceso a la red. Esta función permite que las implementaciones de red reemplazar los portales cautivos inseguros, que usan redes abiertas, por un red de Passpoint. Se muestra una notificación al usuario cuando las condiciones se deben aceptar todas las condiciones.

La URL de los Términos y Condiciones debe dirigir a un sitio web seguro con HTTPS. Si la URL dirige a un sitio web no seguro, el marco de trabajo inmediatamente desconecta y bloquea la red.

URL de información del lugar

Permite que los operadores de redes y lugares brinden información adicional al usuario, como mapas de lugares, directorios, promociones y cupones. Se muestra una notificación al usuario cuando red está conectada.

La URL de información del lugar debe dirigir a un sitio web seguro con HTTPS. Si la URL dirige a un sitio web no seguro, el framework ignora la URL y no muestra una notificación.

Otras funciones de Passpoint

Android 11 presenta el siguiente Passpoint que mejoran la experiencia del usuario, el uso de energía y la implementación y flexibilidad.

Aplicación y notificación de la fecha de vencimiento
Aplicar fechas de vencimiento en los perfiles permite que el framework evite la conexión automática a puntos de acceso con credenciales vencidas, que se que suelen fallar. Esto evita el uso del tiempo de comunicación y ahorra batería y backend ancho de banda. El framework muestra una notificación al usuario cuando una red que coinciden con su perfil está dentro del rango y el perfil venció.
Varios perfiles con FQDN idéntico
Operadores que implementan redes de Passpoint y utilizan múltiples dispositivos móviles públicos por tierra de red (PLMN) pueden aprovisionar múltiples perfiles de Passpoint con el mismo FQDN, uno para cada ID de PLMN, que coincide automáticamente con el tarjeta SIM instalada y se usa para conectar la red.

En Android 12, se introduce el siguiente Passpoint que mejoran la experiencia del usuario, el uso de energía y la implementación Flexibilidad:

Prefijo de identidad decorado
Cuando se autentica en redes con una decoración de prefijo, la decoración de identidad permite a los operadores de red actualizar la configuración (NAI) para realizar enrutamiento explícito a través de múltiples con proxies dentro de una red AAA (consulta el artículo RFC 7542). En Android 12, se implementa esta función de acuerdo con Especificación de WBA para extensiones de PPS-MO.
Manejo inminente de la desautenticación
Permite a los operadores de red indicarles a un dispositivo que el servicio no está disponible disponible para la credencial utilizada para autenticarse en la red de un determinado duración (especificada a través de un tiempo de espera retardado). Después de recibir esta señal, los dispositivos no intentarán volver a conectarse a la red con la misma credencial hasta que desaparezca el tiempo de espera. Por el contrario, los dispositivos que no admitir esta función podría intentar conectarse nuevamente a la red varias veces mientras el servicio no esté disponible.

Ejemplos de perfiles XML de OMA-DM PerProviderSubscription-MO

Perfil con una credencial de nombre de usuario y contraseña (EAP-TTLS)

En el siguiente ejemplo, se muestra un perfil para una red con lo siguiente:

  • Se estableció el nombre optimizado para la red en Example Network
  • FQDN configurado en hotspot.example.net
  • OI del consorcio de roaming (para roaming)
  • Credencial con nombre de usuario user y contraseña password codificada en Base64. y dominio establecido en example.net
  • El método EAP se estableció en 21 (EAP-TTLS)
  • El método interno de la fase 2 se estableció en MS-CHAP-V2
  • Nombres de dominio AAA alternativos configurados en trusted.com y 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>

Perfil con una credencial de certificado digital (EAP-TLS)

En el siguiente ejemplo, se muestra un perfil para una red con lo siguiente:

  • Se estableció el nombre optimizado para la red en GlobalRoaming
  • FQDN configurado en globalroaming.net
  • OI del consorcio de roaming (para roaming)
  • Se estableció el dominio en users.globalroaming.net
  • Credencial con un certificado digital que tiene la huella digital especificada
<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>

Perfil con una credencial de SIM (EAP-AKA)

En el siguiente ejemplo, se muestra un perfil para una red con lo siguiente:

  • Se estableció el nombre optimizado para la red en Purple Passpoint
  • FQDN configurado en wlan.mnc888.mcc999.3gppnetwork.org
  • Credencial SIM con ID de PLMN de 999888
  • El método EAP se estableció en 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>

Asesoría de autenticación

Dispositivos que ejecutan Android 8.x o Android 9 con una tarjeta Passpoint R1 EAP-SIM, EAP-AKA, o EAP-AKA no se conectará automáticamente a la red de Passpoint. Esta afecta a los usuarios, operadores y servicios al reducir la descarga de Wi-Fi.

Segmentar Impacto Tamaño del impacto
Operadores y proveedores de servicios de Passpoint Mayor carga en la red móvil Cualquier operador que use Passpoint R1.
Usuarios Se perdió la oportunidad de conectarse automáticamente a los puntos de acceso Wi-Fi del operador (AP), lo que da como resultado costos de datos más altos. Cualquier usuario que tenga un dispositivo que se ejecute en una red de operador que admita Passpoint R1.

Causa de la falla

Passpoint especifica un mecanismo para hacer coincidir un proveedor de servicios anunciado (ANQP). a un perfil instalado en el dispositivo. Las siguientes reglas de coincidencia para EAP-SIM, EAP-AKA y EAP-AKA es un conjunto parcial de reglas centradas en el EAP-SIM, también conocida como EAP-SIM, también conocida como EAP-SIM fallas:

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.

El segundo criterio se modificó en 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 esta modificación, el sistema no observó coincidencias con los datos proveedores de servicios en funcionamiento, por lo que los dispositivos de Passpoint no se conectaban automáticamente.

Soluciones alternativas

Para solucionar el problema de los criterios de coincidencia modificados, los operadores y proveedores de servicios deben agregar el dominio identificador de acceso a la red (NAI) la información publicada por Passpoint AP.

La solución recomendada es que los proveedores de servicios de red implementen una solución alternativa del lado de la red para lograr la implementación más rápida. Un lado del dispositivo La solución alternativa depende de que los OEM seleccionen una lista de cambios (CL) del AOSP y, luego, y actualizar dispositivos en el campo.

Solución de red para empresas de transporte y proveedores de servicios de Passpoint

La solución alternativa del lado de la red requiere volver a configurar la red para agregar el NAI. realm ANQP como se especifica a continuación. Las especificaciones de Passpoint no requiere el elemento ANQP del dominio de NAI, pero la adición de esta propiedad cumple con las especificaciones de Passpoint, por lo que los clientes que cumplen implementaciones no deben fallar.

  1. Agrega el elemento ANQP del dominio de NAI.
  2. Establece el subcampo de dominio de NAI para que coincida con el Realm del perfil. instalada en el dispositivo.
  3. Configura la siguiente información según cada tipo de EAP:

    • EAP-TTLS: Configura EAPMethod(21) y los tipos de autenticación interna compatibles (PAP, CHAP, MS-CHAP o MS-CHAP-V2)
    • EAP-TLS: establece EAPMethod(13)
    • EAP-SIM: Establecer EAPMethod(18)
    • EAP-AKA: Configurar EAPMethod(23)
    • EAP-AKA': Establece EAPMethod(50).

Corrección de dispositivo/AOSP para OEM

Para implementar una solución alternativa del dispositivo, los OEM deben elegir la CL del parche. (aosp/718508). Este parche se puede aplicar sobre las siguientes versiones (no se aplica a Android 10 o versiones posteriores):

  • Android 9
  • Android 8.x

Cuando se recupera el parche, los OEM deben actualizar los dispositivos en el campo.