Taşıyıcı Wi-Fi

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 ; burada XXX , SIM kartın mobil ağ koduyla (MNC) ve YYY , 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:

  1. Ortak anahtar ve son kullanma tarihi sertifikadan çıkarılabilir.
  2. 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-----"
    } ]
    }