Точка доступа (точка доступа 2.0)

Passpoint — это протокол Wi-Fi Alliance (WFA) , позволяющий мобильным устройствам обнаруживать и аутентифицироваться в точках доступа Wi-Fi, предоставляющих доступ в Интернет.

Поддержка устройств

Для поддержки Passpoint производителям устройств необходимо реализовать интерфейс Supplicant. Начиная с Android 13, интерфейс использует AIDL для определения HAL. Для выпусков до Android 13 интерфейсы и разделы поставщиков используют HIDL. Файлы HIDL находятся в hardware/interfaces/supplicant/1.x , а файлы AIDL находятся в hardware/interfaces/supplicant/aidl . Supplicant обеспечивает поддержку стандарта 802.11u, в частности функций обнаружения и выбора сети, таких как Generic Advertisement Service (GAS) и протокол запросов к сети доступа (ANQP).

Выполнение

Android 11 или выше

Для поддержки Passpoint на устройствах с Android 11 или выше производители устройств должны обеспечить поддержку прошивки для 802.11u. Все остальные требования для поддержки Passpoint включены в AOSP.

Android 10 или ниже

Для устройств под управлением Android 10 или ниже производители устройств должны обеспечить поддержку как фреймворка, так и HAL/прошивки:

  • Framework: Включить Passpoint (требуется флаг функции)
  • Прошивка: Поддержка 802.11u

Для поддержки Passpoint реализуйте Wi-Fi HAL и включите флаг функции для Passpoint. В device.mk , расположенном в device/<oem>/<device> , измените переменную среды PRODUCT_COPY_FILES , чтобы включить поддержку функции Passpoint:

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

Все остальные требования для поддержки Passpoint включены в AOSP.

Проверка

Чтобы проверить реализацию функции Passpoint, запустите следующие модульные тесты пакета Passpoint:

Сервисные испытания:

atest com.android.server.wifi.hotspot2

Тесты менеджера:

atest android.net.wifi.hotspot2

Предоставление Passpoint R1

Android поддерживает Passpoint R1 с Android 6.0, позволяя предоставлять учетные данные Passpoint R1 (выпуск 1) через веб-загрузку специального файла, содержащего информацию о профиле и учетных данных. Клиент автоматически запускает специальный установщик для информации Wi-Fi и позволяет пользователю просматривать части информации, прежде чем принять или отклонить контент.

Информация профиля, содержащаяся в файле, используется для сопоставления с данными, полученными из точек доступа с поддержкой Passpoint, а учетные данные автоматически применяются для любой сопоставленной сети.

Реализация эталонной ОС Android поддерживает EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA и EAP-AKA'.

Механизм загрузки

Файл конфигурации Passpoint должен быть размещен на веб-сервере и должен быть защищен с помощью TLS (HTTPS), поскольку он может содержать открытый текст пароля или данные закрытого ключа. Содержимое состоит из упакованного многокомпонентного текста MIME, представленного в UTF-8 и закодированного в кодировке base64 согласно разделу 6.8 RFC-2045.

Следующие поля заголовка HTTP используются клиентом для автоматического запуска установщика Wi-Fi на устройстве:

  • Content-Type должен быть установлен на application/x-wifi-config .
  • Content-Transfer-Encoding должен быть установлен на base64 .
  • Content-Disposition не должен быть установлен.

HTTP-метод, используемый для получения файла, должен быть GET. Каждый раз, когда HTTP GET от браузера получает ответ с этими заголовками MIME, запускается приложение установки. Загрузка должна быть запущена нажатием на элемент HTML, такой как кнопка (автоматические перенаправления на URL загрузки не поддерживаются). Такое поведение характерно для Google Chrome; другие веб-браузеры могут предоставлять или не предоставлять аналогичные функции.

Состав файла

Содержимое, закодированное в Base64, должно состоять из многокомпонентного содержимого MIME с Content-Type multipart/mixed . Следующие части составляют отдельные части многокомпонентного содержимого.

Часть Content-Type (без кавычек) Необходимый Описание
Профиль application/x-passpoint-profile Всегда Полезная нагрузка в формате OMA-DM SyncML, содержащая MO в формате Passpoint R1 PerProviderSubscription для HomeSP и Credential .
Сертификат доверия application/x-x509-ca-cert Требуется для EAP-TLS и EAP-TTLS Единая полезная нагрузка сертификата, закодированная в формате X.509v3 base64.
Ключ EAP-TLS application/x-pkcs12 Требуется для EAP-TLS Структура PKCS #12 ASN.1, закодированная в base64, содержащая цепочку клиентских сертификатов, содержащую как минимум клиентский сертификат и связанный с ним закрытый ключ. Контейнер PKCS 12, а также закрытый ключ и сертификаты должны быть представлены в виде открытого текста без пароля.

Раздел Profile должен быть передан как XML-текст в кодировке base64 и UTF-8, который определяет части поддеревьев HomeSP и Credential в технической спецификации Passpoint R2 версии 1.0.0, раздел 9.1.

Узел верхнего уровня должен быть MgmtTree , а непосредственный подузел должен быть PerProviderSubscription . Пример XML-файла приведен в Пример профиля OMA-DM XML .

В HomeSP используются следующие узлы поддерева:

  • FriendlyName : Обязательно должно быть установлено; используется как отображаемый текст
  • FQDN : Обязательно
  • RoamingConsortiumOI

В разделе Credential используются следующие узлы поддерева:

  • Realm : Должна быть непустой строкой
  • UsernamePassword : требуется для EAP-TTLS со следующим набором узлов:

    • Username : строка, содержащая имя пользователя.
    • Password : строка в кодировке Base64 (в примере ниже задано значение cGFzc3dvcmQ= , строка в кодировке base64 для «пароля»)
    • EAPMethod/EAPType : необходимо установить значение 21
    • EAPMethod/InnerMethod : необходимо установить одно из значений PAP , CHAP , MS-CHAP или MS-CHAP-V2
  • DigitalCertificate : Требуется для EAP-TLS. Должны быть установлены следующие узлы:

    • CertificateType установлен на x509v3
    • CertSHA256Fingerprint установлен на правильный дайджест SHA-256 клиентского сертификата в разделе MIME ключа EAP-TLS
  • SIM : Требуется для EAP-SIM, EAP-AKA и EAP-AKA'. Поле EAPType должно быть установлено на соответствующий тип EAP, а IMSI должен соответствовать IMSI одной из SIM-карт, установленных в устройстве во время подготовки. Строка IMSI может либо состоять полностью из десятичных цифр, чтобы принудительно обеспечить полное совпадение, либо из 5 или 6 десятичных цифр, за которыми следует звездочка (*), чтобы смягчить сопоставление IMSI только до MCC/MNC. Например, строка IMSI 123456* соответствует любой SIM-карте с MCC 123 и MNC 456.

В Android 11 реализованы возможности, которые делают настройку Passpoint R1 более гибкой.

Отдельное доменное имя для аутентификации, авторизации и учета (AAA)

Администраторы сети Passpoint, которым требуется доменное имя AAA, указанное независимо от полностью квалифицированного доменного имени (FQDN), объявленного сетью через протокол Access Network Query Protocol (ANQP), могут указать разделенный точкой с запятой список FQDN в новом узле в поддереве Extension . Это необязательный узел, и устройства под управлением Android версии 10 или ниже игнорируют этот узел.

  • Android : поддерево расширений Android

    • AAAServerTrustedNames : требуется для доверенных имен сервера AAA со следующим набором узлов:

      • FQDN : Строка, содержащая доверенные имена сервера AAA. Используйте точку с запятой для разделения доверенных имен. Например, example.org;example.com .
Самоподписанные частные корневые центры сертификации
Администраторы сети Passpoint, которые управляют своими сертификатами изнутри, могут предоставлять профили с помощью частного самоподписанного центра сертификации для аутентификации AAA.
Разрешить установку профилей без сертификата корневого центра сертификации
Сертификат Root CA, прикрепленный к профилю, используется для аутентификации сервера AAA. Администраторы сети Passpoint, которые хотят полагаться на общедоступные доверенные корневые центры сертификации для аутентификации своего сервера AAA, могут предоставлять профили без сертификата Root CA. В этом случае система проверяет сертификаты сервера AAA по общедоступным сертификатам Root CA, установленным в хранилище доверия.

Предоставление Passpoint R2

В Android 10 появилась поддержка функций Passpoint R2. Passpoint R2 реализует онлайн-регистрацию (OSU), стандартный метод предоставления новых профилей Passpoint. Android 10 и выше поддерживает предоставление профилей EAP-TTLS с использованием протокола SOAP-XML через открытый OSU ESS.

Поддерживаемые функции Passpoint R2 требуют только справочного кода AOSP (дополнительный драйвер или поддержка прошивки не требуются). Справочный код AOSP также включает реализацию по умолчанию пользовательского интерфейса Passpoint R2 в приложении «Настройки».

Когда Android обнаруживает точку доступа Passpoint R2, фреймворк Android:

  1. Отображает список поставщиков услуг, рекламируемых точкой доступа в средстве выбора Wi-Fi (в дополнение к отображению SSID).
  2. Предлагает пользователю нажать на одного из поставщиков услуг, чтобы настроить профиль Passpoint.
  3. Проводит пользователя через процесс настройки профиля Passpoint.
  4. При успешном завершении устанавливает полученный профиль Passpoint.
  5. Подключается к сети Passpoint, используя новый профиль Passpoint.

Возможности Passpoint R3

В Android 12 представлены следующие функции Passpoint R3, которые улучшают пользовательский опыт и позволяют сетям соответствовать местному законодательству:

Условия и положения

Принятие положений и условий является юридически обязательным в некоторых местах и ​​заведениях для предоставления доступа к сети. Эта функция позволяет сетевым развертываниям заменять небезопасные порталы захвата, которые используют открытые сети, на безопасную сеть Passpoint. Уведомление отображается пользователю, когда требуется принять положения и условия.

URL-адрес положений и условий должен указывать на защищенный веб-сайт, использующий HTTPS. Если URL-адрес указывает на небезопасный веб-сайт, фреймворк немедленно отключается и блокирует сеть.

URL-адрес места проведения мероприятия

Позволяет операторам сетей и заведениям предоставлять пользователю дополнительную информацию, такую ​​как карты заведений, каталоги, акции и купоны. Уведомление отображается пользователю при подключении к сети.

URL-адрес информации о месте проведения должен указывать на защищенный веб-сайт с использованием HTTPS. Если URL-адрес указывает на небезопасный веб-сайт, фреймворк игнорирует URL-адрес и не отображает уведомление.

Другие функции Passpoint

В Android 11 реализованы следующие возможности Passpoint, которые улучшают пользовательский интерфейс, энергопотребление и гибкость развертывания.

Обеспечение соблюдения срока действия и уведомление
Принудительное применение дат истечения срока действия профилей позволяет фреймворку избегать автоматического подключения к точкам доступа с просроченными учетными данными, которые обречены на сбой. Это предотвращает использование эфирного времени и экономит заряд батареи и пропускную способность бэкэнда. Фреймворк отображает уведомление пользователю, когда сеть, соответствующая его профилю, находится в зоне действия, а профиль истек.
Несколько профилей с идентичным полным доменным именем
Операторы, которые развертывают сети Passpoint и используют несколько идентификаторов сетей наземной мобильной связи общего пользования (PLMN), могут предоставлять несколько профилей Passpoint с одним и тем же полным доменным именем, по одному для каждого идентификатора PLMN, который автоматически сопоставляется с установленной SIM-картой и используется для подключения к сети.

В Android 12 представлены следующие возможности Passpoint, которые улучшают пользовательский интерфейс, энергопотребление и гибкость развертывания:

Украшенный идентификационный префикс
При аутентификации в сетях с декорированием префикса декорированный префикс идентичности позволяет сетевым операторам обновлять идентификатор доступа к сети (NAI) для выполнения явной маршрутизации через несколько прокси-серверов внутри сети AAA (см. RFC 7542 ). Android 12 реализует эту функцию в соответствии со спецификацией WBA для расширений PPS-MO .
Неизбежная обработка деаутентификации
Позволяет сетевым операторам сигнализировать устройству, что услуга недоступна для учетных данных, используемых для аутентификации в сети, в течение определенного периода времени (задается с помощью задержки тайм-аута). После получения этого сигнала устройства не будут пытаться повторно подключиться к сети с теми же учетными данными, пока не истечет задержка тайм-аута. Напротив, устройства, которые не поддерживают эту функцию, могут пытаться повторно подключиться к сети, пока услуга недоступна.

Примеры XML-профилей OMA-DM PerProviderSubscription-MO

Профиль с учетными данными имени пользователя и пароля (EAP-TTLS)

В следующем примере показан профиль для сети с:

  • Удобное сетевое имя установлено на Example Network
  • Полное доменное имя установлено на hotspot.example.net
  • Консорциум роуминга OI (для роуминга)
  • Учетные данные с именем user , password закодированным с помощью Base64, и областью, установленной на example.net
  • Метод EAP установлен на 21 (EAP-TTLS)
  • Внутренний метод фазы 2 установлен на MS-CHAP-V2
  • Альтернативные доменные имена AAA установлены на trusted.com и 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>

Профиль с цифровым сертификатом (EAP-TLS)

В следующем примере показан профиль для сети с:

  • Дружественное сетевое имя установлено на GlobalRoaming
  • Полное доменное имя установлено на globalroaming.net
  • ОИ консорциума роуминга (для роуминга)
  • Область установлена ​​на users.globalroaming.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>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>

Профиль с учетными данными SIM-карты (EAP-AKA)

В следующем примере показан профиль для сети с:

  • Сетевое имя установлено на Purple Passpoint
  • Полное доменное имя установлено на wlan.mnc888.mcc999.3gppnetwork.org
  • Данные SIM-карты с идентификатором PLMN 999888
  • Метод EAP установлен на 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>

Консультация по аутентификации

Устройства под управлением Android 8.x или Android 9 с профилем Passpoint R1 EAP-SIM, EAP-AKA или EAP-AKA' не будут автоматически подключаться к сети Passpoint. Эта проблема затрагивает пользователей, операторов и службы, снижая разгрузку Wi-Fi.

Сегмент Влияние Размер воздействия
Операторы и поставщики услуг Passpoint Увеличение нагрузки на сотовую сеть. Любой оператор, использующий Passpoint R1.
Пользователи Упущена возможность автоматического подключения к точкам доступа Wi-Fi оператора, что приводит к более высоким расходам на передачу данных. Любой пользователь с устройством, работающим в сети оператора, поддерживающей Passpoint R1.

Причина отказа

Passpoint определяет механизм сопоставления рекламируемого (ANQP) поставщика услуг с профилем, установленным на устройстве. Следующие правила сопоставления для EAP-SIM, EAP-AKA и EAP-AKA' являются частичным набором правил, ориентированных на сбои 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.

Второй критерий был изменен в Android 8.0:

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

После этой модификации система не обнаружила совпадений с ранее работавшими поставщиками услуг, поэтому устройства Passpoint не подключались автоматически.

Обходные пути

Чтобы обойти проблему измененных критериев соответствия, операторам связи и поставщикам услуг необходимо добавить область идентификатора доступа к сети (NAI) к информации, публикуемой Passpoint AP.

Рекомендуемое решение для поставщиков сетевых услуг — реализовать обходной путь на стороне сети для скорейшего развертывания. Обходной путь на стороне устройства зависит от OEM-производителей, которые получают список изменений (CL) от AOSP, а затем обновляют устройства на месте.

Исправление ошибок сети для операторов и поставщиков услуг Passpoint

Обходной путь на стороне сети требует перенастройки сети для добавления элемента ANQP области NAI, как указано ниже. Спецификации Passpoint не требуют элемента ANQP области NAI, но добавление этого свойства соответствует спецификациям Passpoint, поэтому реализации клиента, соответствующие спецификации, не должны нарушаться.

  1. Добавьте элемент ANQP области NAI.
  2. Установите подполе области NAI в соответствии с Realm профиля, установленного на устройстве.
  3. Установите следующую информацию на основе каждого типа EAP:

    • EAP-TTLS: установите EAPMethod(21) и поддерживаемые типы внутренней аутентификации ( PAP , CHAP , MS-CHAP или MS-CHAP-V2 )
    • EAP-TLS: Установить EAPMethod(13)
    • EAP-SIM: Установить EAPMethod(18)
    • EAP-AKA: Установить EAPMethod(23)
    • EAP-AKA: Установить EAPMethod(50)

Исправление ошибок устройства/AOSP для OEM-производителей

Чтобы реализовать обходной путь на стороне устройства, OEM-производителям необходимо выбрать патч CL aosp/718508 . Этот патч можно применить поверх следующих релизов (не применимо к Android 10 и выше):

  • Андроид 9
  • Андроид 8.x

После установки исправления OEM-производителям необходимо обновить устройства на месте.