Operatör Kablosuz Ağı

Operatör kablosuz ağı, Android 9 ve sonraki sürümlerde bulunan ve cihazların operatör tarafından uygulanan kablosuz ağlara otomatik olarak bağlanmasına olanak tanıyan bir otomatik bağlantı özelliğidir (şifrelenmiş IMSI kullanılır). Kalabalık olan veya hücresel kapsama alanı minimum olan yerlerde (ör. stadyum veya yeraltı tren istasyonu) operatör kablosuz ağı, kullanıcıların bağlantı deneyimini iyileştirmek ve trafiği azaltmak için kullanılabilir.

Operatöre ait kablosuz ağ özelliğine sahip cihazlar, yapılandırılmış operatöre ait kablosuz ağlara (herkese açık anahtar sertifikası olan ağlar) otomatik olarak bağlanır. Kullanıcı bir operatör kablosuz ağı ile olan bağlantısını manuel olarak kestikten sonra ağ 24 saat boyunca kara listeye alınır (otomatik bağlantı yapılmaz). Kullanıcılar kara listeye eklenen ağlara istedikleri zaman manuel olarak bağlanabilir.

Uygulama

Cihaz üreticileri ve operatörler, operatör kablosuz ağlarını uygulamak için aşağıdakileri yapmalıdır.

Üreticiler

Android 11 ve sonraki sürümleri çalıştıran cihazlarda her operatör için kablosuz ağ profili eklemek üzere Kablosuz Ağ Önerisi API'sini kullanın.

10 veya daha eski sürümleri çalıştıran cihazlarda, operatör yapılandırma yöneticisinde her operatör için carrier_wifi_string_array parametresini yapılandırarak kablosuz ağ profilleri ekleyin.

  • carrier_wifi_string_array: Her dize girişinin Base64 kodlamalı bir kablosuz SSID ve virgül ile ayrılmış bir EAP türü olduğu bir dize dizisidir. EAP türü bir tam sayıdır (Extensible Authentication Protocol (EAP) Registry'ye bakın). Ö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 şifreleme için kullanılan anahtarın WLAN (1. bit ayarlanır), EPDG (0. bit ayarlanır) veya her ikisi için (hem 0. bit hem de 1. bit ayarlanır) kullanılıp kullanılamayacağını tanımlar. Örneğin, aşağıdaki yapılandırmada IMSI şifrelemenin WLAN için kullanılabildiği ancak EPDG için kullanılamadığı belirtilmektedir:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string: IMSI şifrelemesi için kullanılan operatörün herkese açık anahtarını içeren protonun 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 herkese açık anahtarının ücretli (hücresel) bir ağ üzerinden indirilip indirilmeyeceğini belirten bir işaret. Bu işaret ayarlanmazsa kablosuz bağlantısı olmayan yeni bir cihaz, anahtarı indirmesine izin verilmediğinden operatör kablosuz ağına bağlanamaz.

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

Operatörler

Operatör kablosuz bağlantısını uygulamak için operatörün IMSI gizlilik korumasını etkinleştirmesi ve herkese açık bir anahtar sağlaması gerekir.

IMSI gizlilik koruması

Android, abonenin kalıcı kimliğinin (IMSI) gizliliğini ortak anahtar kriptografisini kullanarak korur. Android, Kablosuz Ağlar için IMSI Gizlilik Koruması ile ilgili Wireless Broadband Alliance (WBA) spesifikasyonunu uygular. Bir bağlantı için IMSI gizlilik koruması etkinleştirildiğinde, kalıcı abone kimliği kablosuz olarak açık olarak iletilmez.

Kalıcı kimlik şifreleme

Şifrelenmiş kalıcı kimliğin biçimi aşağıdaki gibidir:

  • Kalıcı kimlik <EAP-Method><IMSI>@<NAI realm> biçimindedir.
  • EAP-Method ön eki, kimlik doğrulama için kullanılan EAP yöntemini tanımlayan tek bir sekizli karakterdir:
    • 0: EAP-AKA
    • 1: EAP-SIM
    • 6: EAP-AKA'
  • NAI alan adı biçimi wlan.mncXXX.mccYYY.3gppnetwork.org şeklindedir. Bu biçimde XXX, SIM kartın mobil ağ kodu (MNC) ile ve YYY, mobil ülke kodu (MCC) ile değiştirilir.
  • Kalıcı kimlik, operatör tarafından sağlanan bir RSA herkese açık anahtarı kullanılarak şifrelenir. Ortak anahtar, bir X.509 sertifikasına dahil edilir.
  • Şifreleme şeması, şifreleme karma işlevi olarak SHA-256 ile RSAES-OAEP'dir. Bu şifreleme şeması, her kullanıldığında benzersiz bir şifre metni sağlar. Böylece, izlenebilir olabilecek başka bir kalıcı kimlik oluşturulmaz.
  • RSA anahtar uzunluğu 2048 bittir.
  • Şifreleme arabelleği 256 bayttır.
  • Şifrelenmiş metin Base64 ile kodlanır.
  • Çıkıştaki şifrelenmiş 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ısı

Anahtar tanımlayıcısı, operatörün kimlik doğrulama sırasında sunucunun uygun özel anahtarı bulmasına izin vermek için sertifikaya eklediği isteğe bağlı bir özellik değeri çiftidir. Anahtar tanımlayıcı örneği CertificateSerialNumber=123456'tür. Anahtar tanımlayıcısı sağlanırsa kimlik doğrulama işlemi kapsamında açık metin olarak 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 aldıktan sonra kalıcı kimliği göndermez. Bunun yerine anonim girişle 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 operatör yapılandırması true olarak ayarlanmışsa kimliğin ilk karakteri (anonymous'den önce), EAP değişimi başlamadan önce sunucuya kullanılan EAP yöntemi 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 ön ek iletiye dahil edilmez.

Sunucu yanıt olarak 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: Şifrelenmiş kalıcı kimlik
  • 0: EAP-AKA
  • 1: EAP-SIM
  • 6: EAP-AKA'

Anahtar tanımlayıcı özellik değeri çifti isteğe bağlıdır ve kullanılmadığı takdirde şifrelenmiş kalıcı kimliğin sonuna eklenmez.

Bu noktada sunucu, anahtar tanımlayıcıdan (varsa) özel anahtarı bulur, operatör özel anahtarını kullanarak şifrelenmiş kimliğin şifresini çözer ve normal EAP akışına devam eder.

Kimlik doğrulama başarılı olduğunda sunucu, sonraki bağlantılarda kullanılan hızlı bir yeniden kimlik doğrulama kimliği veya geçici bir kimlik (takma ad) sağlayabilir. Sunucu tarafından geçici kimlik sağlanmazsa sistem, sonraki bağlantıda şifrelenmiş kimliği gönderir.

Operatör sertifikası alma, geçerlilik süresi ve iptal

Sisteme sertifika yüklenmemişse sistem, HTTP GET yöntemini kullanarak sertifika indirmek için imsi_key_download_url_string operatör yapılandırmasında sağlanan URL'yi kullanır. Sistem yalnızca allow_metered_network_for_cert_download_bool operatör yapılandırması true olarak ayarlanmışsa hücresel veri kullanır. Aksi takdirde sistem, sertifikayı yalnızca kablosuz bağlantı mevcut olduğunda indirir.

Sertifikanın geçerlilik süresi sistem tarafından zorunlu kılınmıştır. Sistem, sertifikaları geçerlilik bitiş tarihinden 21 gün önce yenilemeye başlar ve yeni sertifikayı indirmek için aynı URL'yi kullanır.

Sunucu, şifrelenmiş kimliğin şifresini çözemezse EAP değişimini sonlandırmak için AT_NOTIFICATION kodu General Failure (16384) 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 EAP-Request/AKA-Notification mesajı ile AT_NOTIFICATION kodunu (16385) gönderir.Certificate Replacement Required Sistem, sertifikanın kaldırılıp kaldırılmayacağını ve aynı URL'den yeni bir sertifika indirilip indirilmeyeceğini belirlemek için dahili sezgisel yöntemler uygular.

Ortak anahtarı sağlama

Aşağıdaki durumlarda, tercihen TLS üzerinden HTTP kullanarak operatörün sertifikasını barındıran bir sunucunun herkese açık URL'sini sağlayın:

  1. Ortak anahtar ve geçerlilik süresi sertifikadan çıkarılabilir.
  2. Sunucudan gelen bilgiler JSON biçimindedir:

    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, ortak anahtara dair bir örnek verilmiştir.

    {
    "carrier-keys" : [ {
      "key-identifier" : "CertificateSerialNumber=5xxe06d4",
      "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----"
    } ]
    }