Passpoint adalah protokol Wi-Fi Alliance (WFA) yang memungkinkan perangkat seluler menemukan dan mengautentikasi hotspot Wi-Fi yang menyediakan akses internet.
Dukungan perangkat
Untuk mendukung Passpoint, produsen perangkat harus menerapkan
antarmuka Supplicant. Mulai dari Android 13,
antarmuka menggunakan AIDL untuk definisi HAL.
Untuk rilis sebelum Android 13,
antarmuka dan partisi vendor menggunakan HIDL.
File HIDL ada di hardware/interfaces/supplicant/1.x
dan file AIDL ada di hardware/interfaces/supplicant/aidl
.
Supplicant menyediakan dukungan untuk
standar 802.11u, khususnya
fitur penemuan dan pemilihan jaringan seperti Generic Advertisement Service
(GAS) dan access network query protocol (ANQP).
Implementasi
Android 11 atau yang lebih baru
Untuk mendukung Passpoint di perangkat yang menjalankan Android 11 atau yang lebih tinggi, produsen perangkat harus menyediakan dukungan firmware untuk 802.11u. Semua persyaratan lainnya untuk mendukung Passpoint disertakan dalam AOSP.
Android 10 atau yang lebih lama
Untuk perangkat yang menjalankan Android 10 atau yang lebih rendah, produsen perangkat harus menyediakan dukungan framework dan HAL/firmware:
- Framework: Mengaktifkan Passpoint (memerlukan tombol fitur)
- Firmware: Dukungan untuk 802.11u
Untuk mendukung Passpoint, terapkan Wi-Fi HAL dan aktifkan tanda fitur untuk
Passpoint. Di device.mk
yang terletak di device/<oem>/<device>
, ubah variabel lingkungan
PRODUCT_COPY_FILES
untuk menyertakan dukungan untuk 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 lainnya untuk mendukung Passpoint disertakan dalam AOSP.
Validasi
Untuk memvalidasi penerapan fitur Passpoint, jalankan pengujian unit paket Passpoint berikut:
Uji layanan:
atest com.android.server.wifi.hotspot2
Pengujian pengelola:
atest android.net.wifi.hotspot2
Penyediaan Passpoint R1
Android telah mendukung Passpoint R1 sejak Android 6.0, yang memungkinkan penyediaan kredensial Passpoint R1 (rilis 1) melalui download berbasis web dari file khusus yang berisi informasi profil dan kredensial. Klien secara otomatis meluncurkan penginstal khusus untuk informasi Wi-Fi dan memungkinkan pengguna melihat sebagian informasi sebelum menyetujui atau menolak konten.
Informasi profil yang ada dalam file digunakan untuk mencocokkan data yang diambil dari titik akses yang kompatibel dengan Passpoint, dan kredensial diterapkan secara otomatis untuk jaringan yang cocok.
Implementasi referensi Android mendukung EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA, dan EAP-AKA'.
Mekanisme download
File konfigurasi Passpoint harus dihosting di server web dan harus dilindungi dengan TLS (HTTPS) karena dapat berisi sandi teks biasa atau data kunci pribadi. Konten terdiri dari teks MIME multipart yang di-wrap yang ditampilkan dalam UTF-8 dan dienkode dalam encoding base64 per RFC-2045 bagian 6.8.
Kolom 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 ditetapkan.
Metode HTTP yang digunakan untuk mengambil file harus berupa GET. Setiap kali HTTP GET dari browser menerima respons dengan header MIME ini, aplikasi penginstalan akan dimulai. Download harus dipicu dengan mengetuk elemen HTML seperti tombol (pengalihan otomatis ke URL download tidak didukung). Perilaku ini khusus untuk Google Chrome; browser web lain mungkin atau mungkin tidak menyediakan fungsi serupa.
Komposisi file
Konten berenkode Base64 harus terdiri dari konten multipart MIME dengan
Content-Type
multipart/mixed
. Bagian berikut membentuk masing-masing
bagian konten multipart.
Bagian | Content-Type (tanpa tanda petik) | Wajib | Deskripsi |
---|---|---|---|
Profil |
application/x-passpoint-profile
|
Selalu | Payload berformat OMA-DM SyncML yang berisi MO berformat Passpoint R1
PerProviderSubscription untuk HomeSP
dan Credential . |
Sertifikat kepercayaan |
application/x-x509-ca-cert
|
Diperlukan untuk EAP-TLS dan EAP-TTLS | Payload sertifikat berenkode base64 X.509v3 tunggal. |
Kunci EAP-TLS |
application/x-pkcs12
|
Diperlukan untuk EAP-TLS | Struktur ASN.1 PKCS #12 berenkode base64 yang berisi rantai sertifikat klien dengan setidaknya sertifikat klien dan kunci pribadi terkait. Kontainer PKCS 12 serta kunci pribadi dan sertifikat harus berupa teks biasa tanpa sandi. |
Bagian Profil harus ditransfer sebagai teks XML berenkode UTF-8 dan berenkode base64 yang menentukan bagian subpohon HomeSP
dan Credential
dalam Passpoint R2 Technical Specification Version 1.0.0, bagian 9.1.
Node tingkat teratas harus berupa MgmtTree
dan subnode langsung harus berupa
PerProviderSubscription
. Contoh file XML muncul di
Contoh XML OMA-DM profil.
Node subpohon berikut digunakan di bawah HomeSP
:
FriendlyName
: Harus ditetapkan; digunakan sebagai teks tampilanFQDN
: Wajib diisiRoamingConsortiumOI
Node subpohon berikut digunakan di bawah Credential
:
Realm
: Harus berupa string yang tidak kosongUsernamePassword
: Diperlukan untuk EAP-TTLS dengan setelan node berikut:Username
: String yang berisi nama penggunaPassword
: String berenkode base64 (ditetapkan kecGFzc3dvcmQ=
, string berenkode base64 untuk "password", dalam contoh di bawah)EAPMethod/EAPType
: Harus ditetapkan ke21
EAPMethod/InnerMethod
: Harus ditetapkan ke salah satu dariPAP
,CHAP
,MS-CHAP
, atauMS-CHAP-V2
DigitalCertificate
: Diperlukan untuk EAP-TLS. Node berikut harus ditetapkan:CertificateType
disetel pukulx509v3
CertSHA256Fingerprint
ditetapkan ke digest SHA-256 yang benar dari sertifikat klien di bagian MIME kunci EAP-TLS
SIM
: Diperlukan untuk EAP-SIM, EAP-AKA, dan EAP-AKA'. KolomEAPType
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 dari angka desimal sepenuhnya untuk mencocokkan kesamaan penuh, atau dari 5 atau 6 angka desimal yang diikuti dengan tanda bintang (*) untuk melonggarkan pencocokan IMSI hanya ke MCC/MNC. Misalnya, string IMSI 123456* cocok dengan kartu SIM apa pun dengan MCC 123 dan MNC 456.
Android 11 memperkenalkan kemampuan yang membuat penyediaan Passpoint R1 lebih fleksibel.
- Nama domain autentikasi, otorisasi, dan akuntansi (AAA) terpisah
Administrator jaringan Passpoint yang memerlukan nama domain AAA yang ditentukan secara terpisah dari nama domain yang sepenuhnya memenuhi syarat (FQDN) yang diiklankan oleh jaringan melalui Access Network Query Protocol (ANQP) dapat menentukan daftar FQDN yang dibatasi titik koma dalam node baru di bawah subtree
Extension
. Ini adalah node opsional dan perangkat yang menjalankan Android versi 10 atau yang lebih rendah mengabaikan node ini.
Android
: Subpohon ekstensi AndroidAAAServerTrustedNames
: Diperlukan untuk nama tepercaya server AAA dengan set node berikut:FQDN
: String yang berisi nama tepercaya server AAA. Gunakan titik koma untuk memisahkan nama tepercaya. Misalnya,example.org;example.com
.
- CA Root pribadi yang ditandatangani sendiri
- Administrator jaringan Passpoint yang mengelola sertifikatnya secara internal dapat menyediakan profil dengan CA pribadi yang ditandatangani sendiri untuk autentikasi AAA.
- Mengizinkan penginstalan profil tanpa sertifikat CA Root
- Sertifikat CA Root yang dilampirkan ke profil digunakan untuk autentikasi server AAA. Administrator jaringan Passpoint yang ingin mengandalkan CA Root tepercaya publik untuk autentikasi server AAA mereka dapat menyediakan profil tanpa sertifikat CA Root. Dalam hal ini, sistem akan memverifikasi sertifikat server AAA terhadap sertifikat CA Root publik yang diinstal di trust store.
Penyediaan Passpoint R2
Android 10 memperkenalkan dukungan untuk fitur Passpoint R2. Passpoint R2 menerapkan 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 ESS OSU terbuka.
Fitur Passpoint R2 yang didukung hanya memerlukan kode referensi AOSP (tidak diperlukan dukungan driver atau firmware tambahan). Kode referensi AOSP juga menyertakan penerapan default UI Passpoint R2 di aplikasi Setelan.
Saat mendeteksi titik akses Passpoint R2, framework Android akan:
- Menampilkan daftar penyedia layanan yang diiklankan oleh AP di pemilih Wi-Fi (selain menampilkan SSID).
- Meminta pengguna mengetuk salah satu penyedia layanan untuk menyiapkan profil Passpoint.
- Memandu pengguna melalui alur penyiapan profil Passpoint.
- Menginstal profil Passpoint yang dihasilkan setelah berhasil diselesaikan.
- Terhubung 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 mematuhi hukum setempat:
- Persyaratan dan ketentuan
Persetujuan persyaratan dan ketentuan diwajibkan secara hukum di beberapa lokasi dan tempat untuk menyediakan akses jaringan. Fitur ini memungkinkan deployment jaringan untuk menggantikan captive portal yang tidak aman, yang menggunakan jaringan terbuka, dengan jaringan Passpoint yang aman. Notifikasi ditampilkan kepada pengguna ketika persyaratan dan ketentuan harus disetujui.
URL persyaratan dan ketentuan harus mengarah ke situs yang aman menggunakan HTTPS. Jika URL mengarah ke situs yang tidak aman, framework akan segera memutus koneksi dan memblokir jaringan.
- URL informasi tempat
Memungkinkan operator jaringan dan tempat memberikan informasi tambahan kepada pengguna, seperti peta tempat, direktori, promosi, dan kupon. Notifikasi ditampilkan kepada pengguna saat jaringan terhubung.
URL informasi tempat harus mengarah ke situs web yang aman menggunakan HTTPS. Jika URL mengarah ke situs yang tidak aman, framework akan mengabaikan URL tersebut dan tidak menampilkan notifikasi.
Fitur Passpoint lainnya
Android 11 memperkenalkan kemampuan Passpoint berikut yang meningkatkan pengalaman pengguna, penggunaan daya, dan fleksibilitas deployment.
- Notifikasi dan penerapan tanggal habis masa berlaku
- Dengan menerapkan tanggal habis masa berlaku pada profil, framework dapat menghindari sambungan otomatis ke titik akses dengan kredensial yang sudah tidak berlaku, yang pasti akan gagal. Hal ini mencegah penggunaan pulsa, serta menghemat bandwidth backend dan baterai. Framework akan menampilkan notifikasi kepada pengguna saat jaringan yang cocok dengan profilnya berada dalam jangkauan dan profil tersebut telah habis masa berlakunya.
- Beberapa profil dengan FQDN yang sama
- Operator yang men-deploy jaringan Passpoint dan menggunakan beberapa ID jaringan seluler publik (PLMN) dapat menyediakan beberapa profil Passpoint dengan FQDN yang sama, satu untuk setiap ID PLMN, yang secara otomatis dicocokkan dengan kartu SIM yang terpasang dan digunakan untuk menghubungkan jaringan.
Android 12 memperkenalkan kemampuan Passpoint berikut yang meningkatkan pengalaman pengguna, penggunaan daya, dan fleksibilitas deployment:
- Awalan identitas yang dihiasi
- Saat mengautentikasi ke jaringan dengan dekorasi awalan, awalan identitas yang didekorasi memungkinkan operator jaringan memperbarui Network Access Identifier (NAI) untuk melakukan perutean eksplisit melalui beberapa proxy di dalam jaringan AAA (lihat RFC 7542). Android 12 menerapkan fitur ini sesuai dengan spesifikasi WBA untuk ekstensi PPS-MO.
- Penanganan penonaktifan autentikasi yang akan segera terjadi
- Memungkinkan operator jaringan memberi sinyal kepada perangkat bahwa layanan tidak tersedia untuk kredensial yang digunakan untuk melakukan autentikasi ke jaringan selama durasi tertentu (ditentukan melalui penundaan waktu tunggu). Setelah menerima sinyal ini, perangkat tidak akan mencoba terhubung kembali ke jaringan dengan kredensial yang sama hingga penundaan waktu tunggu habis. Sebaliknya, perangkat yang tidak mendukung fitur ini mungkin mencoba terhubung 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 yang cocok untuk jaringan ditetapkan ke
Example Network
- FQDN ditetapkan ke
hotspot.example.net
- OI konsorsium roaming (untuk roaming)
- Kredensial dengan nama pengguna
user
, sandipassword
yang dienkode dengan Base64, dan realm yang ditetapkan keexample.net
- Metode EAP disetel ke
21
(EAP-TTLS) - Metode dalam Phase-2 ditetapkan ke
MS-CHAP-V2
- Nama domain AAA alternatif ditetapkan 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 yang cocok untuk jaringan ditetapkan ke
GlobalRoaming
- FQDN ditetapkan ke
globalroaming.net
- OI Konsorsium Roaming (untuk roaming)
- Realm ditetapkan ke
users.globalroaming.net
- Kredensial dengan sertifikat digital yang memiliki sidik jari tertentu
<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 yang cocok untuk jaringan ditetapkan ke
Purple Passpoint
- FQDN ditetapkan ke
wlan.mnc888.mcc999.3gppnetwork.org
- Kredensial SIM dengan ID PLMN
999888
- Metode EAP ditetapkan 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>
Saran otorisasi
Perangkat yang menjalankan Android 8.x atau Android 9 dengan profil EAP-SIM, EAP-AKA, atau EAP-AKA' Passpoint R1 tidak akan terhubung secara 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. | Operator mana pun yang menggunakan Passpoint R1. |
Pengguna | Peluang yang terlewat untuk terhubung secara otomatis ke titik akses (AP) Wi-Fi Operator, sehingga menyebabkan biaya data yang lebih tinggi. | Semua pengguna dengan perangkat yang berjalan di jaringan operator yang mendukung Passpoint R1. |
Penyebab kegagalan
Passpoint menentukan mekanisme untuk mencocokkan penyedia layanan (ANQP) yang diiklankan dengan profil yang diinstal di perangkat. Aturan pencocokan berikut untuk EAP-SIM, EAP-AKA, dan EAP-AKA' adalah sebagian dari kumpulan 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 diubah 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 tidak mengamati kecocokan untuk penyedia layanan yang sebelumnya berfungsi, sehingga perangkat Passpoint tidak terhubung secara otomatis.
Solusi
Untuk mengatasi masalah kriteria pencocokan yang diubah, operator dan penyedia layanan harus menambahkan realm ID akses jaringan (NAI) ke informasi yang dipublikasikan oleh AP Passpoint.
Solusi yang direkomendasikan adalah agar penyedia layanan jaringan menerapkan solusi sementara di sisi jaringan untuk waktu deployment tercepat. Solusi sisi perangkat bergantung pada OEM yang mengambil daftar perubahan (CL) dari AOSP, lalu mengupdate perangkat di lapangan.
Perbaikan jaringan untuk operator dan penyedia layanan Passpoint
Solusi sisi jaringan memerlukan konfigurasi ulang jaringan untuk menambahkan elemen ANQP realm NAI seperti yang ditentukan di bawah. Spesifikasi Passpoint tidak memerlukan elemen ANQP realm NAI, tetapi penambahan properti ini sesuai dengan spesifikasi Passpoint, sehingga implementasi klien yang sesuai dengan spesifikasi tidak akan terganggu.
- Tambahkan elemen ANQP realm NAI.
- Tetapkan sub-kolom realm NAI agar cocok dengan
Realm
profil yang diinstal di perangkat. Tetapkan informasi berikut berdasarkan setiap jenis EAP:
- EAP-TTLS: Tetapkan
EAPMethod(21)
dan jenis autentikasi dalam yang didukung (PAP
,CHAP
,MS-CHAP
, atauMS-CHAP-V2
) - EAP-TLS: Tetapkan
EAPMethod(13)
- EAP-SIM: Tetapkan
EAPMethod(18)
- EAP-AKA: Tetapkan
EAPMethod(23)
- EAP-AKA': Tetapkan
EAPMethod(50)
- EAP-TTLS: Tetapkan
Perbaikan Perangkat/AOSP untuk OEM
Untuk menerapkan solusi sementara di sisi perangkat, OEM harus memilih CL patch aosp/718508. Patch ini dapat diterapkan di atas rilis berikut (tidak berlaku untuk Android 10 atau yang lebih tinggi):
- Android 9
- Android 8.x
Saat patch diambil, OEM perlu mengupdate perangkat di lapangan.