Точка доступа (точка доступа 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 . Заявитель обеспечивает поддержку стандарта 802.11u, в частности функций обнаружения и выбора сети, таких как служба общей рекламы (GAS) и протокол запроса сети доступа (ANQP).

Выполнение

Андроид 11 или выше

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

Android 10 или более ранняя версия

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

  • Платформа: включить 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, а также закрытый ключ и сертификаты должны быть представлены в виде открытого текста без пароля.

Раздел «Профиль» необходимо передать в виде 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), объявленного сетью через протокол запросов к сети доступа (ANQP), могут указать список полных доменных имен, разделенных точкой с запятой, в новом узле в поддереве Extension . . Это необязательный узел, и устройства под управлением Android версии 10 или ниже игнорируют этот узел.

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

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

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

Подготовка 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
  • OI Роумингового Консорциума (для роуминга)
  • Область установлена 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 (AP) оператора Carrier, что приводит к увеличению затрат на передачу данных. Любой пользователь с устройством, работающим в сети оператора связи, поддерживающей 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.

Поставщикам сетевых услуг рекомендуется внедрить обходной путь на стороне сети для максимально быстрого развертывания. Обходной путь на стороне устройства зависит от того, будут ли 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.х

Когда патч будет принят, OEM-производителям необходимо обновить устройства в полевых условиях.