Passpoint adalah protokol Wi-Fi Alliance (WFA) yang memungkinkan perangkat seluler menemukan dan mengautentikasi ke hotspot Wi-Fi yang menyediakan akses internet.
Dukungan perangkat
Untuk mendukung Passpoint, produsen perangkat perlu mengimplementasikan hardware/interfaces/wifi/supplicant/1.0
atau lebih tinggi. Bahasa desain antarmuka HAL Wi-Fi (HIDL) yang disediakan di Android Open Source Project (AOSP) mendefinisikan HAL untuk pemohon. Pemohon menyediakan dukungan untuk standar 802.11u, khususnya fitur penemuan dan pemilihan jaringan seperti Layanan Iklan Generik (GAS) dan protokol kueri jaringan akses (ANQP).
Penerapan
Android 11 atau lebih tinggi
Untuk mendukung Passpoint pada perangkat yang menjalankan Android 11 atau lebih tinggi, produsen perangkat perlu menyediakan dukungan firmware untuk 802.11u. Semua persyaratan lain untuk mendukung Passpoint termasuk dalam AOSP.
Android 10 atau lebih rendah
Untuk perangkat yang menjalankan Android 10 atau lebih rendah, produsen perangkat perlu menyediakan dukungan framework dan HAL/firmware:
- Kerangka: Aktifkan Passpoint (memerlukan tanda fitur)
- Firmware: Dukungan untuk 802.11u
Untuk mendukung Passpoint, terapkan Wi-Fi HAL dan aktifkan tanda fitur untuk Passpoint. Di device.mk
terletak di device/<oem>/<device>
, ubah variabel lingkungan PRODUCT_COPY_FILES
untuk menyertakan dukungan fitur Passpoint:
PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml
Semua persyaratan lain untuk mendukung Passpoint termasuk dalam AOSP.
Validasi
Untuk memvalidasi penerapan fitur Passpoint, gunakan rangkaian pengujian unit dan pengujian integrasi yang disediakan di Android Comms Test Suite (ACTS).
Tes unit
Jalankan pengujian unit paket Passpoint berikut.
Tes layanan:
atest com.android.server.wifi.hotspot2
Tes manajer:
atest android.net.wifi.hotspot2
Tes integrasi (ACTS)
Rangkaian pengujian ACTS Passpoint, yang terletak di tools/test/connectivity/acts_tests/tests/google/wifi/WifiPasspointTest.py
, mengimplementasikan serangkaian pengujian fungsional.
Penyediaan Passpoint R1
Android telah mendukung Passpoint R1 sejak Android 6.0, memungkinkan penyediaan kredensial Passpoint R1 (rilis 1) melalui pengunduhan berbasis web dari file khusus yang berisi informasi profil dan kredensial. Klien secara otomatis meluncurkan penginstal khusus untuk informasi Wi-Fi dan memungkinkan pengguna untuk melihat bagian dari informasi sebelum menerima atau menolak konten.
Informasi profil yang terdapat dalam file digunakan untuk mencocokkan dengan data yang diambil dari titik akses yang diaktifkan Passpoint, dan kredensial secara otomatis diterapkan untuk jaringan yang cocok.
Implementasi referensi Android mendukung EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA, dan EAP-AKA'.
Mekanisme unduh
File konfigurasi Passpoint harus di-host di server web dan harus dilindungi dengan TLS (HTTPS) karena mungkin berisi kata sandi teks yang jelas atau data kunci pribadi. Konten terdiri dari teks MIME multi-bagian yang dibungkus yang diwakili dalam UTF-8 dan dikodekan dalam pengkodean base64 per RFC-2045 bagian 6.8.
Bidang header HTTP berikut digunakan oleh klien untuk meluncurkan penginstal Wi-Fi secara otomatis di perangkat:
-
Content-Type
harus disetel keapplication/x-wifi-config
. -
Content-Transfer-Encoding
harus disetel kebase64
. -
Content-Disposition
tidak boleh disetel.
Metode HTTP yang digunakan untuk mengambil file harus GET. Setiap kali HTTP GET dari browser menerima respons dengan header MIME ini, aplikasi penginstalan dimulai. Unduhan harus dipicu dengan mengetuk elemen HTML seperti tombol (pengalihan otomatis ke URL unduhan tidak didukung). Perilaku ini khusus untuk Google Chrome; browser web lain mungkin atau mungkin tidak menyediakan fungsi serupa.
Komposisi file
Konten yang disandikan Base64 harus terdiri dari konten multi-bagian MIME dengan Content-Type
multipart/mixed
. Bagian-bagian berikut membentuk bagian-bagian individual dari konten multi-bagian.
Bagian | Content-Type (kurang tanda kutip) | Diperlukan | Keterangan |
---|---|---|---|
Profil | application/x-passpoint-profile | Selalu | Muatan berformat OMA-DM SyncML yang berisi MO berformat PerProviderSubscription untuk HomeSP dan Credential . |
Sertifikat kepercayaan | application/x-x509-ca-cert | Diperlukan untuk EAP-TLS dan EAP-TTLS | Payload sertifikat dengan enkode base64 X.509v3 tunggal. |
Kunci EAP-TLS | application/x-pkcs12 | Diperlukan untuk EAP-TLS | Struktur PKCS #12 ASN.1 berenkode base64 yang berisi rantai sertifikat klien dengan setidaknya sertifikat klien dan kunci pribadi terkait. Wadah PKCS 12 serta kunci pribadi dan sertifikat semuanya harus dalam teks yang jelas tanpa kata sandi. |
Bagian Profil harus ditransfer sebagai teks XML berenkode base64, UTF-8 yang menentukan bagian dari subpohon HomeSP
dan Credential
di Spesifikasi Teknis Passpoint R2 Versi 1.0.0, bagian 9.1.
Node tingkat atas harus MgmtTree
dan subnode langsung harus PerProviderSubscription
. Contoh file XML muncul di Contoh profil OMA-DM XML .
Node subtree berikut digunakan di bawah HomeSP
:
-
FriendlyName
: Harus disetel; digunakan sebagai teks tampilan -
FQDN
: Wajib -
RoamingConsortiumOI
Node subtree berikut digunakan di bawah Credential
:
-
Realm
: Harus berupa string yang tidak kosong UsernamePassword
: Diperlukan untuk EAP-TTLS dengan kumpulan node berikut:-
Username
Pengguna : String yang berisi nama pengguna -
Password
: String yang disandikan Base64 (diatur kecGFzc3dvcmQ=
, string yang disandikan base64 untuk "kata sandi", dalam contoh di bawah) -
EAPMethod/EAPType
: Harus disetel ke21
-
EAPMethod/InnerMethod
: Harus disetel ke salah satu dariPAP
,CHAP
,MS-CHAP
, atauMS-CHAP-V2
-
DigitalCertificate
: Diperlukan untuk EAP-TLS. Node berikut harus disetel:- Jenis
CertificateType
disetel kex509v3
-
CertSHA256Fingerprint
disetel ke intisari SHA-256 yang benar dari sertifikat klien di bagian MIME kunci EAP-TLS
- Jenis
SIM
: Wajib untuk EAP-SIM, EAP-AKA, dan EAP-AKA'. BidangEAPType
harus disetel ke jenis EAP yang sesuai danIMSI
harus cocok dengan IMSI salah satu kartu SIM yang terpasang di perangkat pada saat penyediaan. String IMSI dapat terdiri seluruhnya dari angka desimal untuk memaksa pencocokan kesetaraan penuh, atau nol atau lebih angka desimal diikuti dengan tanda bintang (*) untuk mengendurkan pencocokan IMSI ke awalan saja. Misalnya, string IMSI 123* cocok dengan kartu SIM apa pun dengan IMSI yang dimulai dengan 123.
Android 11 memperkenalkan kemampuan yang membuat penyediaan Passpoint R1 lebih fleksibel.
- Nama domain otentikasi, otorisasi, dan akuntansi (AAA) terpisah
Administrator jaringan titik akses yang memerlukan nama domain AAA yang ditentukan secara independen dari nama domain yang sepenuhnya memenuhi syarat (FQDN) yang diiklankan oleh jaringan melalui Access Network Query Protocol (ANQP) dapat menentukan daftar FQDN yang dipisahkan titik koma di node baru di bawah subpohon
Extension
. Ini adalah node opsional dan perangkat yang menjalankan Android versi 10 atau lebih rendah mengabaikan node ini.
Android
: Subpohon ekstensi AndroidAAAServerTrustedNames
: Diperlukan untuk nama tepercaya server AAA dengan kumpulan node berikut:-
FQDN
: String yang berisi nama tepercaya server AAA. Gunakan titik koma untuk memisahkan nama tepercaya. Misalnya,example.org;example.com
.
-
- Root CA pribadi yang ditandatangani sendiri
- Administrator jaringan titik akses yang mengelola sertifikat mereka secara internal dapat menyediakan profil dengan CA yang ditandatangani sendiri secara pribadi untuk autentikasi AAA.
- Izinkan pemasangan profil tanpa sertifikat CA Root
- Sertifikat CA Root yang dilampirkan ke profil digunakan untuk otentikasi server AAA. Administrator jaringan Passpoint yang ingin mengandalkan Root CA tepercaya publik untuk autentikasi server AAA mereka dapat menyediakan profil tanpa sertifikat Root CA. Dalam hal ini, sistem memverifikasi sertifikat server AAA terhadap sertifikat CA Root publik yang diinstal di toko kepercayaan.
Penyediaan Passpoint R2
Android 10 memperkenalkan dukungan untuk fitur Passpoint R2. Passpoint R2 mengimplementasikan pendaftaran online (OSU), metode standar untuk menyediakan profil Passpoint baru. Android 10 dan yang lebih tinggi mendukung penyediaan profil EAP-TTLS menggunakan protokol SOAP-XML melalui OSU ESS yang terbuka.
Fitur Passpoint R2 yang didukung yang didukung hanya memerlukan kode referensi AOSP tidak diperlukan driver atau dukungan firmware tambahan). Kode referensi AOSP juga menyertakan implementasi default Passpoint R2 UI di aplikasi Pengaturan.
Saat Android mendeteksi titik akses Passpoint R2, kerangka kerja Android:
- Menampilkan daftar penyedia layanan yang diiklankan oleh AP di pemilih Wi-Fi (selain menampilkan SSID).
- Meminta pengguna untuk mengetuk salah satu penyedia layanan untuk mengatur profil Passpoint.
- Memandu pengguna melalui alur penyiapan profil Passpoint.
- Menginstal profil Passpoint yang dihasilkan pada penyelesaian yang berhasil.
- Mengaitkan ke jaringan Passpoint menggunakan profil Passpoint yang baru disediakan.
Fitur Passpoint R3
Android 12 memperkenalkan fitur Passpoint R3 berikut yang meningkatkan pengalaman pengguna dan memungkinkan jaringan untuk mematuhi undang-undang setempat:
- Syarat dan Ketentuan
Penerimaan syarat dan ketentuan secara hukum diperlukan di beberapa lokasi dan tempat untuk menyediakan akses jaringan. Fitur ini memungkinkan penyebaran jaringan untuk menggantikan portal tawanan yang tidak aman, yang menggunakan jaringan terbuka, dengan jaringan Passpoint yang aman. Pemberitahuan ditampilkan kepada pengguna ketika syarat dan ketentuan harus diterima.
URL syarat dan ketentuan harus mengarah ke situs web yang aman menggunakan HTTPS. Jika URL mengarah ke situs web yang tidak aman, kerangka kerja akan segera memutus dan memblokir jaringan.
- URL informasi tempat
Memungkinkan operator jaringan dan tempat untuk memberikan informasi tambahan kepada pengguna, seperti peta tempat, direktori, promosi, dan kupon. Pemberitahuan ditampilkan kepada pengguna saat jaringan terhubung.
URL informasi tempat harus mengarah ke situs web yang aman menggunakan HTTPS. Jika URL mengarah ke situs web yang tidak aman, kerangka kerja akan mengabaikan URL dan tidak menampilkan pemberitahuan.
Fitur Passpoint lainnya
Android 11 memperkenalkan kemampuan Passpoint berikut yang meningkatkan pengalaman pengguna, penggunaan daya, dan fleksibilitas penerapan.
- Penegakan dan pemberitahuan tanggal kedaluwarsa
- Menerapkan tanggal kedaluwarsa pada profil memungkinkan kerangka kerja untuk menghindari koneksi otomatis ke titik akses dengan kredensial kedaluwarsa, yang pasti akan gagal. Ini mencegah penggunaan airtime, dan menghemat baterai dan bandwidth backend. Kerangka kerja menampilkan pemberitahuan kepada pengguna ketika jaringan yang cocok dengan profil mereka berada dalam jangkauan dan profil telah kedaluwarsa.
- Beberapa profil dengan FQDN identik
- Operator yang menyebarkan jaringan Passpoint dan menggunakan beberapa ID PLMN dapat menyediakan beberapa profil Passpoint dengan FQDN yang sama, satu untuk setiap ID PLMN, yang secara otomatis dicocokkan dengan kartu SIM yang dipasang dan digunakan untuk menghubungkan jaringan.
Android 12 memperkenalkan kemampuan Passpoint berikut yang meningkatkan pengalaman pengguna, penggunaan daya, dan fleksibilitas penerapan:
- Awalan identitas yang didekorasi
- Saat mengautentikasi ke jaringan dengan dekorasi awalan, awalan identitas yang didekorasi memungkinkan operator jaringan memperbarui Pengenal Akses Jaringan (NAI) untuk melakukan perutean eksplisit melalui beberapa proxy di dalam jaringan AAA (lihat RFC 7542 ). Android 12 mengimplementasikan fitur ini sesuai dengan spesifikasi WBA untuk ekstensi PPS-MO .
- Penanganan segera deautentikasi
- Mengizinkan operator jaringan memberi sinyal ke perangkat bahwa layanan tidak tersedia untuk kredensial yang digunakan untuk mengautentikasi ke jaringan selama durasi tertentu (ditentukan melalui penundaan waktu habis). Setelah menerima sinyal ini, perangkat tidak akan mencoba menyambung kembali ke jaringan dengan kredensial yang sama hingga setelah waktu tunda habis. Sebaliknya, perangkat yang tidak mendukung fitur ini mungkin mencoba menyambung kembali ke jaringan berulang kali saat layanan tidak tersedia.
Contoh profil XML OMA-DM PerProviderSubscription-MO
Profil dengan kredensial nama pengguna/sandi (EAP-TTLS)
Contoh berikut menunjukkan profil untuk jaringan dengan:
- Nama ramah jaringan disetel ke
Example Network
- FQDN disetel ke
hotspot.example.net
- OI konsorsium roaming (untuk roaming)
- Kredensial dengan nama
user
, kata sandi katapassword
yang dikodekan dengan Base64, dan ranah disetel keexample.net
- Metode EAP disetel ke
21
(EAP-TTLS) - Metode bagian dalam fase-2 diatur ke
MS-CHAP-V2
- Nama domain AAA alternatif diatur ke
trusted.com
dantrusted.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 dengan kredensial sertifikat digital (EAP-TLS)
Contoh berikut menunjukkan profil untuk jaringan dengan:
- Nama ramah jaringan disetel ke
GlobalRoaming
- FQDN disetel ke
globalroaming.net
- OI Konsorsium Roaming (untuk roaming)
- Realm diatur ke
users.globalroaming.net
- Kredensial dengan sertifikat digital yang memiliki sidik jari yang ditentukan
<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 dengan kredensial SIM (EAP-AKA)
Contoh berikut menunjukkan profil untuk jaringan dengan:
- Nama ramah jaringan disetel ke
Purple Passpoint
- FQDN disetel ke
wlan.mnc888.mcc999.3gppnetwork.org
- Kredensial SIM dengan ID PLMN
999888
- Metode EAP disetel ke
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>
Penasihat autentik
Perangkat yang menjalankan Android 8.x atau Android 9 dengan profil Passpoint R1 EAP-SIM, EAP-AKA, atau EAP-AKA tidak akan terhubung otomatis ke jaringan Passpoint. Masalah ini memengaruhi pengguna, operator, dan layanan dengan mengurangi offload Wi-Fi.
Segmen | Dampak | Ukuran dampak |
---|---|---|
Operator dan penyedia layanan Passpoint | Peningkatan beban pada jaringan seluler. | Setiap operator menggunakan Passpoint R1. |
Pengguna | Kesempatan yang hilang untuk terhubung secara otomatis ke titik akses (AP) Wi-Fi Operator, mengakibatkan biaya data yang lebih tinggi. | Setiap pengguna dengan perangkat yang berjalan di jaringan operator yang mendukung Passpoint R1. |
Penyebab kegagalan
Passpoint menentukan mekanisme untuk mencocokkan penyedia layanan yang diiklankan (ANQP) dengan profil yang diinstal pada perangkat. Aturan pencocokan berikut untuk EAP-SIM, EAP-AKA, dan EAP-AKA' adalah kumpulan sebagian aturan yang berfokus pada kegagalan 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.
Kriteria kedua telah dimodifikasi di Android 8.0:
Else: If the PLMN ID (3GPP Network) matches AND the NAI Realm matches
then the service is a Roaming Service Provider.
Dengan modifikasi ini, sistem mengamati tidak ada kecocokan untuk penyedia layanan yang bekerja sebelumnya, sehingga perangkat Passpoint tidak terhubung secara otomatis.
Solusi
Untuk mengatasi masalah kriteria pencocokan yang dimodifikasi, operator dan penyedia layanan perlu menambahkan ranah network access identifier (NAI) ke informasi yang diterbitkan oleh Passpoint AP.
Solusi yang disarankan adalah bagi penyedia layanan jaringan untuk menerapkan solusi sisi jaringan untuk waktu penyebaran tercepat. Solusi sisi perangkat bergantung pada OEM yang mengambil daftar perubahan (CL) dari AOSP dan kemudian memperbarui perangkat di lapangan.
Perbaikan jaringan untuk operator dan penyedia layanan Passpoint
Solusi sisi jaringan memerlukan konfigurasi ulang jaringan untuk menambahkan elemen ANQP ranah NAI seperti yang ditentukan di bawah ini. Spesifikasi Passpoint tidak memerlukan elemen ANQP ranah NAI, tetapi penambahan properti ini sesuai dengan spesifikasi Passpoint, jadi implementasi klien yang sesuai spesifikasi tidak boleh rusak.
- Tambahkan elemen ANQP ranah NAI.
- Setel subbidang ranah NAI agar sesuai dengan
Realm
profil yang diinstal pada perangkat. Tetapkan informasi berikut berdasarkan setiap jenis EAP:
- EAP-TTLS: Setel
EAPMethod(21)
dan mendukung jenis auth dalam (PAP
,CHAP
,MS-CHAP
, atauMS-CHAP-V2
) - EAP-TLS: Setel
EAPMethod(13)
- EAP-SIM: Setel
EAPMethod(18)
- EAP-AKA: Setel
EAPMethod(23)
- EAP-AKA': Setel
EAPMethod(50)
- EAP-TTLS: Setel
Perbaikan perangkat/AOSP untuk OEM
Untuk menerapkan solusi sisi perangkat, OEM perlu memilih patch CL aosp/718508 . Patch ini dapat diterapkan di atas rilis berikut (tidak berlaku untuk Android 10 atau lebih tinggi):
- Android 9
- Android 8.x
Saat tambalan diambil, OEM perlu memperbarui perangkat di lapangan.