Carrier Wi-Fi, Android 9 ve üzeri sürümlerde bulunan ve cihazların operatör tarafından uygulanan Wi-Fi ağlarına otomatik olarak bağlanmasına olanak tanıyan bir otomatik bağlantı özelliğidir (şifreli IMSI kullanarak). Stadyum veya yer altı tren istasyonu gibi sıkışıklığın yoğun olduğu veya hücre kapsama alanının minimum olduğu alanlarda, kullanıcıların bağlantı deneyimini geliştirmek ve trafiği boşaltmak için taşıyıcının Wi-Fi'si kullanılabilir.
Operatör Wi-Fi özelliğine sahip cihazlar, yapılandırılmış operatör Wi-Fi ağlarına (ortak anahtar sertifikasına sahip ağlar) otomatik olarak bağlanır. Bir kullanıcı operatörün Wi-Fi ağıyla bağlantısını manuel olarak kestiğinde, ağ 24 saat boyunca kara listeye alınır (otomatik bağlantı olmaz). Kullanıcılar kara listedeki ağlara istedikleri zaman manuel olarak bağlanabilirler.
Operatör Wi-Fi'sinin uygulandığı Android 9 veya üzerini çalıştıran cihazlarda, operatör Wi-Fi üzerinden otomatik bağlantı varsayılan olarak kapalıdır. Cihaz ilk kez bir operatörün Wi-Fi ağına bağlanmayı denediğinde kullanıcıya bir bildirim gönderilir.
Uygulama
Cihaz üreticileri ve operatörler, operatör Wi-Fi'sini uygulamak için aşağıdakileri yapmalıdır.
Üreticiler
Android 11 ve sonraki sürümleri çalıştıran cihazlarda, her operatöre Wi-Fi profili eklemek için Wi-Fi öneri API'sini kullanın.
10 veya daha düşük sürüm çalıştıran cihazlar için, operatör yapılandırma yöneticisinde her operatör için carrier_wifi_string_array
parametresini yapılandırarak Wi-Fi profilleri ekleyin.
carrier_wifi_string_array
: Her dize girişinin Base64 kodlu bir Wi-Fi SSID'si ve virgülle ayrılmış bir EAP türü olduğu bir dize dizisi; burada EAP türü bir tam sayıdır (bkz . Genişletilebilir Kimlik Doğrulama Protokolü (EAP) Kaydı ). Örneğin, aşağıdaki yapılandırma EAP-AKA kullanan SOME_SSID_NAME ve EAP-SIM kullanan Some_Other_SSID içindir:config { key: "carrier_wifi_string_array" text_array { item: "U09NRV9TU0lEX05BTUUK,23" item: "U29tZV9PdGhlcl9TU0lECg==,18" } }
Operatör yapılandırma yöneticisinde her operatör için aşağıdaki parametreleri yapılandırın:
imsi_key_availability_int
: IMSI şifrelemesi için kullanılan anahtarın WLAN (bit 1 ayarlı), EPDG (bit 0 ayarlı) veya her ikisi (hem bit 0 hem de bit 1 ayarlı) için uygun olup olmadığını tanımlar. Örneğin, aşağıdaki yapılandırma IMSI şifrelemesinin WLAN için mevcut olduğunu ancak EPDG için mevcut olmadığını gösterir:config { key: "imsi_key_availability_int" int_value: 2 }
imsi_key_download_url_string
: IMSI şifrelemesi için kullanılan taşıyıcının genel anahtarını içeren protokolün indirildiği URL. Örneğin, aşağıdaki yapılandırma belirli bir URL sağlar: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
: Operatörün ortak anahtarının tarifeli (hücresel) ağ üzerinden indirilmesine izin verilip verilmeyeceğini belirten bir işaret. Bu işaret ayarlanmazsa, Wi-Fi bağlantısı olmayan yeni bir cihaz, anahtarı indirmesine izin verilmediğinden Carrier Wi-Fi ağına bağlanamayacaktır.config { key: "allow_metered_network_for_cert_download_bool" bool_value: true }
Taşıyıcılar
Operatör Wi-Fi'sini uygulamak için operatörün IMSI gizlilik korumasını etkinleştirmesi ve bir genel anahtar sağlaması gerekir.
IMSI gizlilik koruması
Android, genel anahtar şifrelemesini kullanarak abonenin kalıcı kimliğinin (IMSI) gizliliğini korur. Android , Wi-Fi için IMSI Gizlilik Koruması için Wireless Broadband Alliance (WBA) spesifikasyonunu uygular. Bir bağlantı için IMSI gizlilik koruması etkinleştirildiğinde, kalıcı abone kimliği kablosuz olarak aktarılmaz.
Kalıcı kimlik şifreleme
Şifrelenmiş kalıcı kimliğin formatı aşağıdaki gibidir:
- Kalıcı kimlik
<EAP-Method><IMSI>@<NAI realm>
biçimindedir. - EAP Yöntemi öneki, kimlik doğrulama için kullanılan EAP yöntemini tanımlayan tek bir sekizliden oluşur:
-
0
: EAP-AKA -
1
: EAP-SIM -
6
: EAP-AKA'
-
- NAI alanı formatı
wlan.mnc XXX .mcc YYY .3gppnetwork.org
; buradaXXX
, SIM kartın mobil ağ koduyla (MNC) veYYY
, mobil ülke koduyla (MCC) değiştirilir. - Kalıcı kimlik, taşıyıcı tarafından sağlanan bir RSA genel anahtarı kullanılarak şifrelenir. Genel anahtar bir X.509 sertifikasına dahildir.
- Şifreleme şeması, şifreleme karma işlevi olarak SHA-256 ile RSAES-OAEP'tir . Bu şifreleme şeması, şema her kullanıldığında benzersiz bir şifre metnini garanti eder, böylece takip edilebilecek başka bir kalıcı kimlikten kaçınılır.
- RSA anahtar uzunluğu 2048 bittir.
- Şifreleme arabelleği 256 bayttır.
- Şifreli metin Base64 ile kodlanmıştır.
- Çıkış şifreli kalıcı kimlik uzunluğu 344 bayttır.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
Anahtar tanımlayıcı
Anahtar tanımlayıcı, sunucunun kimlik doğrulama sırasında uygun özel anahtarı bulmasına izin vermek için taşıyıcının bir sertifikaya eklediği isteğe bağlı bir nitelik değeri çiftidir. Anahtar tanımlayıcıya örnek olarak CertificateSerialNumber=123456
verilebilir. Anahtar tanımlayıcı sağlanmışsa, kimlik doğrulama sürecinin bir parçası olarak açık bir şekilde gönderilir.
SIM tabanlı EAP kimlik doğrulama yöntemlerinde yapılan değişiklikler
Bir bağlantıda IMSI gizlilik koruması etkinleştirildiğinde, sistem EAP-Request/Identity
alındığında kalıcı kimliği göndermez, bunun yerine anonim bir oturum açmayla yanıt verir:
SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>
<prefix>
isteğe bağlıdır. enable_eap_method_prefix_bool
taşıyıcı yapılandırması true
olarak ayarlanmışsa, kimliğin ilk karakteri ( anonymous
önce), EAP değişimi başlamadan önce sunucuya kullanılan EAP yönteminin türü hakkında bilgi verir.
-
0
: EAP-AKA -
1
: EAP-SIM -
6
: EAP-AKA'
Operatör yapılandırması false
olarak ayarlanmışsa bu önek mesaja dahil edilmez.
Yanıt olarak sunucu bir EAP-Request/AKA-Identity
mesajı gönderir ve sistem aşağıdaki biçimde yanıt verir:
SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"
Kimliğin ilk karakteri, sunucuya şifrelenmiş bir kimliğin kullanıldığını veya yapılandırılan EAP yönteminin türünü bildirir:
-
\0
: Şifreli kalıcı kimlik -
0
: EAP-AKA -
1
: EAP-SIM -
6
: EAP-AKA'
Anahtar tanımlayıcı öznitelik değer çifti isteğe bağlıdır ve kullanımda değilse şifrelenmiş kalıcı kimliğin sonuna eklenmez.
Bu noktada sunucu, anahtar tanımlayıcısından (varsa) özel anahtarı bulur, taşıyıcı özel anahtarını kullanarak şifrelenmiş kimliğin şifresini çözer ve normal EAP akışını sürdürür.
Başarılı kimlik doğrulamanın ardından sunucu, hızlı bir yeniden kimlik doğrulama kimliği veya sonraki bağlantılarda kullanılan geçici bir kimlik (takma ad) sağlayabilir. Sunucu tarafından herhangi bir geçici kimlik sağlanmazsa sistem, şifrelenmiş kimliği sonraki bağlantıda gönderir.
Operatör sertifikasının alınması, süresinin dolması ve iptali
Sistemde herhangi bir sertifikanın yüklü olmadığı durumda sistem, HTTP GET yöntemini kullanarak bir sertifikayı indirmek için imsi_key_download_url_string
taşıyıcı yapılandırmasında sağlanan URL'yi kullanır. Sistem hücresel verileri yalnızca allow_metered_network_for_cert_download_bool
taşıyıcı yapılandırması true
olarak ayarlanmışsa kullanır. Aksi takdirde sistem sertifikayı yalnızca Wi-Fi bağlantısı mevcut olduğunda indirir.
Sertifika süresinin dolması sistem tarafından zorunlu kılınır. Sistem, sertifikanın sona erme tarihinden 21 gün önce sertifikaları yenilemeye çalışır ve yeni sertifikayı indirmek için aynı URL'yi kullanır.
Sunucunun şifrelenmiş kimliğin şifresini çözememesi durumunda, sunucu, EAP değişimini sonlandırmak için AT_NOTIFICATION
General Failure
(16384) kodunu içeren bir EAP-Request/AKA-Notification
mesajı gönderir.
Sertifikanın iptal edilmesi veya süresinin dolması durumunda sunucu, EAP değişimini sonlandırmak için AT_NOTIFICATION
kodlu Certificate Replacement Required
(16385) içeren bir EAP-Request/AKA-Notification
mesajı gönderir. Buna yanıt olarak sistem, sertifikanın kaldırılıp kaldırılmayacağını belirlemek ve aynı URL'den yeni bir sertifika indirmeyi denemek için dahili buluşsal yöntem uygular.
Genel anahtarın sağlanması
Aşağıdaki durumlarda operatörün sertifikasını barındıran, tercihen TLS üzerinden HTTP kullanan bir sunucuya genel bir URL sağlayın:
- Ortak anahtar ve son kullanma tarihi sertifikadan çıkarılabilir.
Sunucudan gelen bilgiler JSON formatında aşağıdaki gibidir:
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.
Aşağıda bir ortak anahtar örneği verilmiştir.
{ "carrier-keys" : [ { "key-identifier" : "CertificateSerialNumber=5xxe06d4", "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----" } ] }