Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Wi-Fi operator

Wi-Fi operator adalah fitur koneksi otomatis (menggunakan IMSI terenkripsi) yang tersedia di Android 9 dan lebih tinggi yang memungkinkan perangkat terhubung secara otomatis ke jaringan Wi-Fi yang diterapkan oleh operator. Di area dengan kemacetan tinggi atau dengan jangkauan seluler minimal seperti stadion atau stasiun kereta bawah tanah, Wi-Fi operator dapat digunakan untuk meningkatkan pengalaman konektivitas pengguna dan menurunkan lalu lintas.

Perangkat dengan fitur Wi-Fi operator secara otomatis menyambung ke jaringan Wi-Fi operator yang dikonfigurasi (jaringan dengan sertifikat kunci publik). Saat pengguna memutuskan secara manual dari jaringan Wi-Fi operator, jaringan tersebut masuk daftar hitam selama 24 jam (tidak ada koneksi otomatis). Pengguna dapat terhubung secara manual ke jaringan yang masuk daftar hitam kapan saja.

Pada perangkat yang menjalankan Android 9 atau lebih tinggi yang menerapkan Wi-Fi operator, koneksi otomatis melalui Wi-Fi operator dinonaktifkan secara default. Pemberitahuan dikirim ke pengguna saat perangkat mencoba menyambung ke jaringan Wi-Fi operator untuk pertama kalinya.

Penerapan

Produsen dan operator perangkat harus melakukan hal berikut untuk menerapkan Wi-Fi operator.

Produsen

Untuk perangkat yang menjalankan Android 11 dan lebih tinggi, gunakan API saran Wi-Fi untuk menambahkan profil Wi-Fi untuk setiap operator.

Untuk perangkat yang menjalankan 10 atau lebih rendah, tambahkan profil Wi-Fi dengan mengonfigurasi parameter carrier_wifi_string_array untuk setiap operator di pengelola konfigurasi operator .

  • carrier_wifi_string_array : Larik string di mana setiap entri string adalah SSID Wi-Fi carrier_wifi_string_array Base64 dan jenis EAP yang dipisahkan oleh koma, di mana jenis EAP adalah bilangan bulat (lihat Registri Extensible Authentication Protocol (EAP) ). Misalnya, konfigurasi berikut adalah untuk SOME_SSID_NAME menggunakan EAP-AKA dan Some_Other_SSID menggunakan EAP-SIM :

    config {
      key: "carrier_wifi_string_array"
      text_array {
        item: "U09NRV9TU0lEX05BTUUK,23"
        item: "U29tZV9PdGhlcl9TU0lECg==,18"
      }
    }
    

Di manajer konfigurasi operator , konfigurasikan parameter berikut untuk setiap operator:

  • imsi_key_availability_int : Mengidentifikasi apakah kunci yang digunakan untuk enkripsi IMSI tersedia untuk WLAN (bit 1 disetel), EPDG (bit 0 disetel), atau keduanya (bit 0 dan bit 1 disetel). Misalnya, konfigurasi berikut menunjukkan bahwa enkripsi IMSI tersedia untuk WLAN tetapi tidak untuk EPDG:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string : URL dari mana proto yang berisi kunci publik dari operator yang digunakan untuk enkripsi IMSI diunduh. Misalnya, konfigurasi berikut menyediakan URL tertentu:

    config {
      key: "imsi_key_download_url_string"
      text_value: "https://www.some_company_name.com:5555/some_directory_name/"
    }
    
    .dll
  • allow_metered_network_for_cert_download_bool : Bendera yang menunjukkan apakah akan mengizinkan pengunduhan kunci publik operator melalui jaringan terukur (seluler). Jika tanda ini tidak disetel, perangkat baru tanpa konektivitas Wi-Fi tidak akan dapat terhubung ke jaringan Wi-Fi Operator karena tidak akan diizinkan untuk mengunduh kunci.

    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 memberikan kunci publik.

Perlindungan privasi IMSI

Android melindungi kerahasiaan identitas permanen pelanggan (IMSI) menggunakan kriptografi kunci publik. Android menerapkan spesifikasi Wireless Broadband Alliance (WBA) untuk IMSI Privacy Protection untuk Wi-Fi . Ketika perlindungan privasi IMSI diaktifkan untuk koneksi, identitas pelanggan permanen tidak dikirim secara jelas melalui udara.

Enkripsi identitas permanen

Format identitas permanen terenkripsi adalah sebagai berikut:

  • Identitas permanen dalam format <IMSI>@<NAI realm> . Format ranah NAI adalah wlan.mnc XXX .mcc YYY .3gppnetwork.org mana XXX diganti dengan kode jaringan seluler (MNC) kartu SIM dan YYY diganti dengan kode negara seluler (MCC).
  • Identitas permanen dienkripsi menggunakan kunci publik RSA yang disediakan oleh operator. Kunci publik disertakan dalam sertifikat X.509 .
  • Skema enkripsi RSAES-OAEP dengan SHA-256 sebagai fungsi hash kriptografi. Skema enkripsi ini menjamin teks sandi unik setiap kali skema digunakan, sehingga menghindari identitas persisten lain yang dapat dilacak.
  • Panjang kunci RSA adalah 2048 bit.
  • Buffer enkripsi adalah 256 byte.
  • Teks sandi dikodekan dengan Base64 .
  • Panjang identitas permanen terenkripsi keluaran adalah 344 byte.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<IMSI>@<NAI Realm>))
Pengenal kunci

Pengenal kunci adalah pasangan nilai atribut opsional yang dilampirkan operator ke sertifikat untuk memungkinkan server menemukan kunci pribadi yang tepat selama otentikasi. Contoh pengenal kunci adalah CertificateSerialNumber=123456 . Jika pengenal kunci disediakan, itu akan dikirim dengan jelas sebagai bagian dari proses otentikasi.

Modifikasi pada metode otentikasi EAP berbasis SIM

Ketika perlindungan privasi IMSI diaktifkan pada koneksi, sistem tidak mengirim identitas permanen setelah menerima EAP-Request/Identity , melainkan merespons dengan login anonim:

SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>

<prefix> adalah opsional. Jika konfigurasi operator enable_eap_method_prefix_bool disetel ke true , karakter pertama identitas (sebelum anonymous ) memberi tahu server tentang jenis metode EAP yang digunakan sebelum pertukaran EAP dimulai.

  • 0 - EAP-AKA
  • 1 - EAP-SIM
  • 6 - EAP-AKA '

Jika konfigurasi operator disetel ke false , awalan ini tidak disertakan dalam pesan.

Sebagai tanggapan, server mengirim 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 identitas terenkripsi digunakan, atau jenis metode EAP yang dikonfigurasi:

  • \0 - Identitas permanen terenkripsi
  • 0 - EAP-AKA
  • 1 - EAP-SIM
  • 6 - EAP-AKA '

Pasangan nilai atribut pengenal kunci bersifat opsional dan tidak ditambahkan ke akhir identitas permanen terenkripsi jika tidak digunakan.

Pada titik ini, server menemukan kunci pribadi dari pengenal kunci (jika disediakan), mendekripsi identitas terenkripsi menggunakan kunci pribadi operator, dan melanjutkan aliran EAP normal.

Setelah otentikasi berhasil, server dapat memberikan identitas otentikasi ulang cepat atau identitas sementara (nama samaran), yang digunakan dalam koneksi berikutnya. Jika tidak ada identitas sementara yang disediakan oleh server, sistem mengirimkan identitas terenkripsi dalam koneksi berikutnya.

Pengambilan sertifikat operator, kedaluwarsa, dan pencabutan

Jika tidak ada sertifikat yang dipasang di sistem, sistem menggunakan URL yang disediakan dalam konfigurasi operator imsi_key_download_url_string untuk mengunduh sertifikat. Sistem menggunakan data seluler hanya jika konfigurasi operator allow_metered_network_for_cert_download_bool disetel ke true . Jika tidak, sistem mengunduh sertifikat hanya ketika koneksi Wi-Fi tersedia.

Masa berlaku sertifikat diberlakukan oleh sistem. Sistem mulai mencoba memperbarui sertifikat 21 hari sebelum tanggal kedaluwarsa sertifikat, dan menggunakan URL yang sama untuk mengunduh sertifikat baru.

Dalam kasus di mana sertifikat dicabut atau jika server tidak dapat mendekripsi identitas terenkripsi, server mengirimkan pesan EAP-Request/AKA-Notification dengan kode AT_NOTIFICATION General failure (16385) untuk menghentikan pertukaran EAP. Sebagai tanggapan, sistem menghapus sertifikat dan mencoba mendownload sertifikat baru dari URL yang sama.

Menyediakan kunci publik

Berikan URL publik ke server, sebaiknya menggunakan HTTP melalui TLS, yang menghosting sertifikat operator di mana:

  1. Kunci publik dan kedaluwarsa dapat diekstraksi dari sertifikat.
  2. Informasi dari server 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 ini 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-----"
    } ]
    }