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) и Access Network Query Protocol (ANQP).
Выполнение
Реализация точки доступа зависит от версии Android.
Android 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Подготовка точки доступа R1
Android поддерживает Passpoint R1 начиная с версии 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. При получении ответа от браузера с этими MIME-заголовками запускается приложение установки. Загрузка должна запускаться нажатием на HTML-элемент, например, кнопку (автоматическое перенаправление на URL-адрес загрузки не поддерживается). Это поведение характерно только для Google Chrome; другие веб-браузеры могут предоставлять аналогичную функциональность, а могут и не предоставлять.
Состав файлов
Содержимое, закодированное в Base64, должно представлять собой MIME-контент типа multipart/mixed с Content-Type . Следующие части составляют отдельные элементы этого многокомпонентного контента.
| Часть | Content-Type (без кавычек) | Необходимый | Описание |
|---|---|---|---|
| Профиль | application/x-passpoint-profile | Всегда | OMA-DM SyncML-форматированная полезная нагрузка, содержащая MO-объект в формате PerProviderSubscription для HomeSP и Credential используемый в Passpoint R1. |
| Сертификат доверительного управления | application/x-x509-ca-cert | Требуется для EAP-TLS и EAP-TTLS | Один сертификат, закодированный в формате Base64 (X.509v3). |
| Ключ EAP-TLS | application/x-pkcs12 | Требуется для EAP-TLS | Структура PKCS #12 ASN.1, закодированная в base64, содержащая цепочку клиентских сертификатов, включающую как минимум клиентский сертификат и связанный с ним закрытый ключ. Контейнер PKCS 12, а также закрытый ключ и сертификаты должны быть в открытом виде без пароля. |
Раздел «Профиль» должен быть передан в виде XML-текста, закодированного в base64 и UTF-8, который описывает части поддеревьев HomeSP и Credential в разделе 9.1 технической спецификации Passpoint R2 версии 1.0.0.
Узел верхнего уровня должен быть MgmtTree , а непосредственный дочерний узел — PerProviderSubscription . Пример XML-файла приведен в разделе «Пример профиля OMA-DM XML» .
В рамках HomeSP используются следующие узлы поддерева:
-
FriendlyName: Необходимо задать; используется в качестве отображаемого текста. -
FQDN: Обязательно -
RoamingConsortiumOI
В разделе Credential используются следующие узлы поддерева:
-
Realm: Должна быть непустой строкой UsernamePassword: Обязательно для EAP-TTLS при настройке следующих узлов:-
Username: строка, содержащая имя пользователя. -
Password: строка, закодированная в Base64 (установлено значениеcGFzc3dvcmQ=, строка, закодированная в Base64, для слова "password" в следующем примере). -
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. Например, строка IMSI123456*соответствует любой SIM-карте с MCC равным123и MNC равным456.
В Android 11 появились возможности, которые делают процесс подготовки точек доступа Passpoint R1 более гибким.
- Отдельное доменное имя для аутентификации, авторизации и учета (AAA).
Администраторы сети Passpoint, которым требуется указать доменное имя AAA независимо от полного доменного имени (FQDN), передаваемого сетью через протокол запросов сети доступа (ANQP), могут указать список FQDN, разделенных точкой с запятой, в новом узле в поддереве
Extension. Это необязательный узел, и устройства под управлением Android версии 10 или ниже игнорируют его.Android: Поддерево расширений AndroidAAAServerTrustedNames: Обязательно для указания доверенных имен AAA-сервера при наличии следующих заданных узлов:-
FQDN: Строка, содержащая доверенные имена серверов AAA. Используйте точки с запятой для разделения доверенных имен. Например,example.org;example.com.
-
- Самоподписанные частные корневые центры сертификации
Администраторы сети Passpoint, управляющие своими сертификатами внутри компании, могут создавать профили с использованием частного самоподписанного центра сертификации для аутентификации AAA.
- Разрешить установку профилей без корневого сертификата центра сертификации.
Корневой сертификат центра сертификации (ROC), прикрепленный к профилю, используется для аутентификации сервера AAA. Сетевые администраторы Passpoint, которые хотят полагаться на общедоступные доверенные корневые центры сертификации для аутентификации сервера AAA, могут создавать профили без корневого сертификата центра сертификации. В этом случае система проверяет сертификаты сервера AAA по общедоступным корневым сертификатам центра сертификации, установленным в хранилище доверенных сертификатов.
Подготовка точки доступа 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 выполняет следующие действия:
- Отображает список поставщиков услуг, рекламируемых точкой доступа в окне выбора сети Wi-Fi (помимо отображения SSID).
- Предлагает пользователю выбрать одного из поставщиков услуг для создания профиля Passpoint.
- Пошагово описывает процесс настройки профиля Passpoint.
- После успешного завершения процесса устанавливается полученный профиль Passpoint.
- Сотрудники подключаются к сети Passpoint, используя недавно созданный профиль Passpoint.
Характеристики Passpoint R3
В Android 12 представлены следующие функции Passpoint R3, которые улучшают пользовательский опыт и позволяют сетям соблюдать местные законы:
- Условия и положения
В некоторых местах и на некоторых площадках для предоставления доступа к сети требуется принятие условий и положений. Эта функция позволяет заменить небезопасные порталы авторизации, использующие открытые сети, на защищенную сеть Passpoint. Пользователю отображается уведомление, когда необходимо принять условия и положения.
URL-адрес, указанный в условиях использования, должен вести на защищенный веб-сайт, использующий протокол HTTPS. Если URL-адрес ведет на незащищенный веб-сайт, платформа немедленно отключает и блокирует сеть.
- URL-адрес информации о месте проведения мероприятия
Позволяет операторам сетей и площадкам предоставлять пользователю дополнительную информацию, такую как карты площадок, справочники, рекламные акции и купоны. При подключении к сети пользователю отображается уведомление.
URL-адрес информации о месте проведения мероприятия должен указывать на защищенный веб-сайт, использующий протокол HTTPS. Если URL-адрес указывает на незащищенный веб-сайт, платформа игнорирует его и не отображает уведомление.
Другие функции Passpoint
В Android 11 представлены следующие возможности Passpoint, которые улучшают пользовательский опыт, снижают энергопотребление и повышают гибкость развертывания.
- Контроль за соблюдением срока годности и уведомление
- Установка сроков действия для профилей позволяет системе избегать автоматического подключения к точкам доступа с просроченными учетными данными, которые неизбежно приведут к сбоям. Это предотвращает расход эфирного времени, экономит заряд батареи и пропускную способность серверной части. Система отображает пользователю уведомление, когда сеть, соответствующая его профилю, находится в зоне действия, но срок действия профиля истек.
- Несколько профилей с одинаковым полным доменным именем (FQDN).
- Операторы связи, развертывающие сети Passpoint и использующие несколько идентификаторов общедоступных наземных мобильных сетей (PLMN), могут создавать несколько профилей Passpoint с одним и тем же полным доменным именем (FQDN), по одному для каждого идентификатора 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 - ОИ роумингового консорциума (для роуминга)
- Учетные данные с именем
user,passwordpassword, закодированным в 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.
Рекомендуемое решение заключается в том, чтобы поставщики сетевых услуг внедрили обходное решение на стороне сети для максимально быстрого развертывания. Обходное решение на стороне устройства зависит от того, получат ли производители оборудования список изменений (CL) от AOSP и затем обновят устройства в полевых условиях.
Исправлена ошибка в сети для операторов связи и поставщиков услуг Passpoint.
Для обхода проблемы на стороне сети требуется перенастроить сеть, добавив элемент ANQP области NAI следующим образом. Спецификации Passpoint не требуют наличия элемента ANQP области NAI, но добавление этого свойства соответствует спецификациям Passpoint, поэтому соответствующие спецификации клиентские реализации не должны нарушать работу.
- Добавьте элемент ANQP в область NAI.
- Установите для подполя NAI realm значение, соответствующее
Realmпрофиля, установленного на устройстве. - Укажите следующую информацию в зависимости от типа программы EAP:
- EAP-TTLS : Установить
EAPMethod(21)и поддерживаемые типы внутренней аутентификации (PAP,CHAP,MS-CHAPилиMS-CHAP-V2) - EAP-TLS : Установить
EAPMethod(13) - EAP-SIM : Установить
EAPMethod(18) - EAP-AKA : Set
EAPMethod(23) - EAP-AKA' : Set
EAPMethod(50)
- EAP-TTLS : Установить
Исправление для устройств/AOSP для OEM-производителей
Для реализации обходного решения на стороне устройства производителям оборудования необходимо выбрать патч CL aosp/718508 . Этот патч можно применять поверх следующих версий (не применяется к Android 10 и выше):
- Android 9
- Android 8.x
После установки исправления производителям оборудования необходимо обновить устройства, находящиеся в эксплуатации.