Wi-Fi operator adalah fitur koneksi otomatis (menggunakan IMSI terenkripsi) yang tersedia di Android 9 dan yang lebih baru yang memungkinkan perangkat terhubung secara otomatis ke Wi-Fi yang diterapkan operator jaringan. Di area dengan kemacetan tinggi atau dengan cakupan sel yang minimal seperti stadion atau stasiun kereta bawah tanah, Wi-Fi operator dapat digunakan untuk meningkatkan pengguna konektivitas dan untuk melimpahkan lalu lintas data.
Perangkat yang memiliki fitur Wi-Fi operator akan otomatis terhubung ke jaringan Wi-Fi operator yang dikonfigurasi (jaringan dengan public key certificate). Kapan pengguna memutuskan secara manual dari jaringan Wi-Fi operator, jaringan masuk daftar hitam selama 24 jam (tidak ada sambungan otomatis). Pengguna dapat terhubung secara manual ke jaringan yang ada dalam daftar hitam.
Pada perangkat yang menjalankan Android 9 atau yang lebih tinggi dengan implementasi Wi-Fi operator, koneksi otomatis melalui Wi-Fi operator dinonaktifkan secara default. Notifikasi dikirim ke pengguna saat perangkat mencoba terhubung ke Wi-Fi operator jaringan untuk pertama kalinya.
Implementasi
Produsen dan operator perangkat harus melakukan hal berikut untuk menerapkan operator Wi-Fi.
Produsen
Untuk perangkat yang menjalankan Android 11 dan yang lebih baru, gunakan API saran Wi-Fi menambahkan profil Wi-Fi untuk setiap operator.
Untuk perangkat yang menjalankan 10 atau lebih rendah, tambahkan profil Wi-Fi paling lambat
mengonfigurasi parameter carrier_wifi_string_array
untuk setiap operator di
pengelola konfigurasi operator.
carrier_wifi_string_array
: Array string dengan setiap entri string adalah SSID Wi-Fi berenkode Base64 dan jenis EAP yang dipisahkan dengan koma, di mana jenis EAP adalah bilangan bulat (lihat Registry Protokol Autentikasi yang Dapat Diperluas (EAP)). Misalnya, konfigurasi berikut adalah untuk SOME_SSID_NAME menggunakan EAP-AKA dan Some_Other_SSID yang menggunakan EAP-SIM:config { key: "carrier_wifi_string_array" text_array { item: "U09NRV9TU0lEX05BTUUK,23" item: "U29tZV9PdGhlcl9TU0lECg==,18" } }
Di kolom operator konfigurasi operator, konfigurasikan parameter berikut untuk setiap ekspedisi:
imsi_key_availability_int
: Mengidentifikasi apakah kunci yang digunakan untuk enkripsi IMSI tersedia untuk WLAN (bit 1 diatur), EPDG (bit 0 diatur), atau keduanya (keduanya ditetapkan). Misalnya, konfigurasi berikut menunjukkan bahwa IMSI enkripsi tersedia untuk WLAN namun tidak untuk EPDG:config { key: "imsi_key_availability_int" int_value: 2 }
imsi_key_download_url_string
: URL tempat proto yang berisi kunci publik operator yang digunakan untuk Enkripsi IMSI telah didownload. Misalnya, konfigurasi berikut menyediakan URL spesifik:config { key: "imsi_key_download_url_string" text_value: "https://www.some_company_name.com:5555/some_directory_name/some_filename.json" }
allow_metered_network_for_cert_download_bool
: Flag yang menunjukkan apakah untuk memungkinkan download kunci publik operator melalui (seluler). Jika tanda ini tidak ditetapkan, berarti perangkat baru tanpa Wi-Fi konektivitas tidak dapat terhubung ke jaringan Wi-Fi Operator karena akses itu tidak akan diizinkan untuk mengunduh kuncinya.config { key: "allow_metered_network_for_cert_download_bool" bool_value: true }
Operator
Untuk menerapkan Wi-Fi operator, operator harus mengaktifkan perlindungan privasi IMSI dan menyediakan kunci publik.
Perlindungan privasi IMSI
Android melindungi kerahasiaan identitas permanen pelanggan (IMSI) menggunakan kriptografi kunci publik. Android mengimplementasikan {i>Wireless Broadband<i} Spesifikasi Alliance (WBA) untuk IMSI Privacy Protection for Wi-Fi. Jika perlindungan privasi IMSI diaktifkan untuk koneksi, identitas pelanggan tidak dikirimkan secara terbuka melalui udara.
Enkripsi identitas permanen
Format identitas permanen terenkripsi adalah sebagai berikut:
- Identitas permanen memiliki format
<EAP-Method><IMSI>@<NAI realm>
. - Awalan Metode EAP adalah oktet tunggal
yang mendefinisikan metode EAP yang
digunakan untuk otentikasi:
0
: EAP-AKA1
: EAP-SIM6
: EAP-AKA
- Format realm NAI adalah
wlan.mncXXX.mccYYY.3gppnetwork.org
di manaXXX
diganti dengan kode jaringan seluler (MNC) kartu SIM danYYY
adalah diganti dengan kode negara seluler (MCC). - Identitas permanen dienkripsi menggunakan kunci publik RSA yang disediakan oleh operator. Kunci publik disertakan dalam sebuah X.509.
- Skema enkripsinya adalah RSAES-OAEP SHA-256 sebagai fungsi kriptografi {i>hash<i}. Skema enkripsi ini menjamin teks penyandian yang unik setiap kali skema itu digunakan, sehingga menghindari satu lagi identitas persisten yang dapat dilacak.
- Panjang kunci RSA adalah 2048 bit.
- Buffer enkripsi adalah 256 byte.
- Teks tersandi{i> <i}dikodekan dengan Base64.
- Panjang identitas permanen terenkripsi output adalah 344 byte.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
ID kunci
ID kunci adalah pasangan nilai atribut opsional yang dipasang oleh operator
ke sertifikat untuk memungkinkan server
menemukan kunci pribadi yang tepat selama
autentikasi. Contoh ID kunci adalah
CertificateSerialNumber=123456
. Jika ID kunci tersedia, ID tersebut akan dikirim
di proses otentikasi sebagai
bagian dari proses otentikasi.
Modifikasi pada metode autentikasi EAP berbasis SIM
Jika perlindungan privasi IMSI diaktifkan di koneksi, sistem tidak akan mengirim
identitas permanen setelah menerima EAP-Request/Identity
, bukan
merespons dengan login anonim:
SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>
<prefix>
bersifat opsional. Jika operator enable_eap_method_prefix_bool
disetel ke true
, karakter pertama dari identitas (sebelum
anonymous
) memberi tahu server tentang jenis metode EAP yang digunakan sebelum
Pertukaran EAP dimulai.
0
: EAP-AKA1
: EAP-SIM6
: EAP-AKA
Jika konfigurasi operator disetel ke false
, awalan ini tidak akan disertakan dalam
menulis pesan.
Sebagai respons, server akan mengirimkan pesan EAP-Request/AKA-Identity
dan
sistem merespons dalam format berikut:
SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"
Karakter pertama dari identitas memberi tahu server bahwa alamat email digunakan, atau jenis metode EAP yang dikonfigurasi:
\0
: Identitas permanen terenkripsi0
: EAP-AKA1
: EAP-SIM6
: EAP-AKA
Pasangan nilai atribut ID kunci bersifat opsional dan tidak ditambahkan ke akhir identitas permanen terenkripsi jika tidak digunakan.
Di tahap ini, server menemukan kunci pribadi dari pengidentifikasi kunci (jika disediakan), membongkar enkripsi identitas terenkripsi menggunakan kunci pribadi operator, dan melanjutkan alur EAP normal.
Setelah otentikasi berhasil, server dapat memberikan identitas otentikasi ulang cepat atau identitas sementara (pseudonim), yang yang digunakan di koneksi berikutnya. Jika tidak ada identitas sementara yang disediakan oleh server, sistem akan mengirimkan identitas terenkripsi di koneksi berikutnya.
Pengambilan, masa berlaku, dan pencabutan sertifikat operator
Jika tidak ada sertifikat yang diinstal dalam sistem, sistem akan menggunakan
URL yang disediakan di konfigurasi operator imsi_key_download_url_string
untuk
mendownload sertifikat menggunakan metode GET HTTP. Sistem menggunakan data seluler
hanya jika operator allow_metered_network_for_cert_download_bool
konfigurasi disetel ke true
. Jika tidak, sistem akan mendownload sertifikat
hanya saat koneksi Wi-Fi tersedia.
Akhir masa berlaku sertifikat diberlakukan oleh sistem. Sistem mulai mencoba memperpanjang sertifikat 21 hari sebelum tanggal habis masa berlaku sertifikat, dan menggunakan URL yang sama untuk mengunduh sertifikat baru.
Jika server tidak dapat mendekripsi
identitas terenkripsi, server akan
mengirim pesan EAP-Request/AKA-Notification
dengan kode AT_NOTIFICATION
General Failure
(16384) untuk menghentikan pertukaran EAP.
Jika sertifikat dicabut atau habis masa berlakunya, server akan mengirimkan
Pesan EAP-Request/AKA-Notification
dengan kode AT_NOTIFICATION
Certificate Replacement Required
(16385) untuk menghentikan pertukaran EAP.
Sebagai respons, sistem menerapkan heuristik internal
untuk menentukan apakah akan
menghapus sertifikat dan mencoba
mengunduh sertifikat baru dari
.
Berikan kunci publik
Sediakan URL publik ke server, sebaiknya gunakan HTTP daripada TLS, yang menghosting sertifikat ekspedisi jika:
- Kunci publik dan masa berlaku dapat diekstrak dari sertifikat.
Informasi dari server tersedia dalam format JSON sebagai berikut:
Property: key-identifier Type: String Encoding: UTF-8 Description: Specifies an identifier that the carrier would like to attach to the certificate. Optional: Yes Property: certificate Property alternative name: public-key Type: String Encoding: Base64 Description: The content of the carrier's X.509 certificate. Optional: No Property: key-type Type: String Encoding: UTF-8 Description: Specifies the module that will use the key. The value for type must be either WLAN or EPDG. Optional: Yes. If the key-type property isn't included, then its value defaults to WLAN.
Berikut adalah contoh kunci publik.
{ "carrier-keys" : [ { "key-identifier" : "CertificateSerialNumber=5xxe06d4", "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----" } ] }