Wi-Fi operatora

Wi-Fi operatora to funkcja automatycznego łączenia (używająca szyfrowanego IMSI) dostępna w Android 9 lub nowszy który pozwala urządzeniom automatycznie łączyć się z sieciami Wi-Fi udostępnianymi przez operatora. sieci. w obszarach z dużym ruchem lub minimalnym zasięgiem sieci komórkowych, takich jak na stadionie lub stacji metra, może użyć sieci Wi-Fi operatora użytkowników połączenia i zmniejszać obciążenie ruchu.

Urządzenia z funkcją Wi-Fi operatora automatycznie łączą się z skonfigurowane sieci Wi-Fi operatora (sieci z certyfikatem klucza publicznego). Kiedy użytkownik ręcznie odłączy się od sieci Wi-Fi operatora, zablokowany przez 24 godziny (brak automatycznego połączenia). Użytkownicy mogą ręcznie łączyć się z z czarnej listy.

Na urządzeniach z Androidem 9 lub nowszym z zaimplementowanym modułem Wi-Fi operatora automatyczne połączenie przez Wi-Fi operatora jest domyślnie wyłączone. Powiadomienie jest wysyłana do użytkownika, gdy urządzenie próbuje połączyć się z siecią Wi-Fi operatora. po raz pierwszy.

Implementacja

Producenci urządzeń i operatorzy sieci muszą wykonać te czynności, aby zaimplementować operatora Wi-Fi.

Producenci

Na urządzeniach z Androidem 11 lub nowszym użyj Interfejs API sugestii Wi-Fi aby dodać profile Wi-Fi dla każdego operatora.

W przypadku urządzeń z systemem 10 lub starszym dodaj profile Wi-Fi przez konfigurując parametr carrier_wifi_string_array dla każdego operatora w menedżera konfiguracji operatora.

  • carrier_wifi_string_array: Tablica ciągu, w której każdy ciąg znaków to identyfikator SSID sieci Wi-Fi zakodowany w standardzie Base64 i typ EAP rozdzielone przecinkiem, gdzie typ EAP jest liczbą całkowitą (patrz Rejestr Extensible Authentication Protocol (EAP)). Na przykład ta konfiguracja dotyczy sieci SOME_SSID_NAME używającej EAP-AKA i Some_Other_SSID za pomocą EAP-SIM:

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

W carrier config Manager, skonfigurować dla każdego operatora te parametry:

  • imsi_key_availability_int: Wskazuje, czy klucz używany do szyfrowania IMSI jest dostępny przez sieć WLAN (ustawiony bit 1), EPDG (ustawiony bit 0) lub oba (bit 0 i bit 1) ustaw). Na przykład ta konfiguracja wskazuje, że IMSI szyfrowanie jest dostępne przez WLAN, ale nie w EPDG:

    config {
      key: "imsi_key_availability_int"
      int_value: 2
    }
    
  • imsi_key_download_url_string: Adres URL, z którego proto zawiera klucz publiczny operatora użytego do Szyfrowanie IMSI zostało pobrane. Na przykład ta konfiguracja podaje konkretny adres URL:

    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: flaga wskazująca, czy który umożliwia pobieranie klucza publicznego operatora w sieci sieci komórkowej. Jeśli ta flaga nie jest ustawiona, nowe urządzenie bez Wi-Fi połączenie nie może połączyć się z siecią Wi-Fi operatora, ponieważ nie będzie mieć możliwości pobrania klucza.

    config {
      key: "allow_metered_network_for_cert_download_bool"
      bool_value: true
    }
    

Operatorzy

Aby można było wdrożyć Wi-Fi operatora, operator musi włączyć ochronę prywatności IMSI oraz i udostępnić im klucz publiczny.

Ochrona prywatności IMSI

Android chroni poufność stałej tożsamości subskrybenta (IMSI) przy użyciu kryptografii klucza publicznego. Android wdraża łączność bezprzewodową Specyfikacja Alliance (WBA) na potrzeby IMSI Privacy Protection for Wi-Fi. Gdy dla połączenia włączona jest ochrona prywatności IMSI, trwałe informacje o tożsamości subskrybentów nie są przesyłane bezprzewodowo.

Trwałe szyfrowanie tożsamości

Format zaszyfrowanej stałej tożsamości jest następujący:

  • Stała tożsamość ma format <EAP-Method><IMSI>@<NAI realm>.
  • Prefiks metody EAP to pojedynczy oktet definiujący metodę EAP, która jest używane do uwierzytelniania:
    • 0: EAP
    • 1: karta EAP-SIM
    • 6: „EAP-AKA”
  • Format obszaru NAI to wlan.mncXXX.mccYYY.3gppnetwork.org, gdzie Numer XXX jest zastępowany kodem sieci komórkowej (MNC) karty SIM, a numer YYY – zastąp kodem kraju na urządzenia mobilne (MCK).
  • Stała tożsamość jest szyfrowana przy użyciu klucza publicznego RSA udostępnionego przez operator sieci komórkowej. Klucz publiczny znajduje się w X.509.
  • Schemat szyfrowania to RSAES-OAEP, z SHA-256 jako kryptograficzną funkcją skrótu. Ten schemat szyfrowania gwarantuje unikalny tekst szyfrowania przy każdym użyciu schematu, co pozwala uniknąć ale jeszcze jedną trwałą tożsamość, którą można śledzić.
  • Klucz RSA ma 2048 bitów.
  • Bufor szyfrowania ma 256 bajtów.
  • Tekst szyfru jest zakodowany za pomocą Base64.
  • Zaszyfrowana stała długość danych wyjściowych to 344 bajty.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
Identyfikator klucza

Identyfikator klucza to opcjonalna para wartości atrybutu dołączana przez operatora do certyfikatu, który umożliwia serwerowi odnalezienie odpowiedniego klucza prywatnego uwierzytelnianie. Przykład identyfikatora klucza to CertificateSerialNumber=123456 Jeśli zostanie podany identyfikator klucza, zostanie on wysłany. w jasny sposób w ramach procesu uwierzytelniania.

Modyfikacje metod uwierzytelniania EAP opartych na karcie SIM

Gdy w połączeniu jest włączona ochrona prywatności IMSI, system nie wysyła stałą tożsamość po otrzymaniu dokumentu EAP-Request/Identity, a nie odpowiada, używając anonimowego loginu:

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

Pole <prefix> jest opcjonalne. Jeśli operator enable_eap_method_prefix_bool konfiguracji jest ustawiony na true, pierwszy znak tożsamości (przed anonymous) powiadamia serwer o typie metody EAP użytej przed Rozpoczyna się wymiana EAP.

  • 0: EAP
  • 1: karta EAP-SIM
  • 6: „EAP-AKA”

Jeśli konfiguracja operatora ma wartość false, ten prefiks nie jest uwzględniony w wiadomość.

W odpowiedzi serwer wysyła komunikat EAP-Request/AKA-Identity, a następnie odpowiada w takim formacie:

SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"

Pierwszy znak tożsamości informuje serwer, że tożsamości lub typ skonfigurowanej metody EAP:

  • \0: zaszyfrowana stała tożsamość
  • 0: EAP
  • 1: karta EAP-SIM
  • 6: „EAP-AKA”
.

Para wartości atrybutu identyfikatora klucza jest opcjonalna i nie jest dołączana do zakończenia zaszyfrowanej stałej tożsamości, jeśli nie jest używana.

Na tym etapie serwer znajduje klucz prywatny z identyfikatora klucza (jeśli udostępniane), odszyfrowuje zaszyfrowaną tożsamość przy użyciu klucza prywatnego operatora oraz będzie kontynuował zwykły proces EAP.

Po pomyślnym uwierzytelnieniu serwer może udostępnić do szybkiego ponownego uwierzytelniania lub tymczasowej tożsamości (pseudonim) używane w kolejnych połączeniach. Jeśli nie zostaną udostępnione żadne tożsamości tymczasowe system wysyła zaszyfrowaną tożsamość przy kolejnym połączeniu.

Pobieranie, wygaśnięcie i unieważnianie certyfikatów operatora

Jeśli w systemie nie jest zainstalowany żaden certyfikat, system używa protokołu Adres URL podany w konfiguracji operatora imsi_key_download_url_string do pobierz certyfikat za pomocą metody HTTP GET. System wykorzystuje komórkową transmisję danych tylko wtedy, gdy operator allow_metered_network_for_cert_download_bool Wartość konfiguracji to true. W przeciwnym razie system pobierze certyfikat tylko wtedy, gdy dostępne jest połączenie Wi-Fi.

Wygaśnięcie certyfikatu jest wymuszane przez system. System próbuje do odnawiania certyfikatów na 21 dni przed datą wygaśnięcia certyfikatu oraz korzysta ten sam adres URL, aby pobrać nowy certyfikat.

Jeśli serwer nie może odszyfrować zaszyfrowanej tożsamości, wysyła wiadomość EAP-Request/AKA-Notification z kodem AT_NOTIFICATION General Failure (16384), aby zakończyć wymianę EAP.

W przypadku unieważnienia lub wygaśnięcia certyfikatu serwer wysyła EAP-Request/AKA-Notification wiadomość z kodem AT_NOTIFICATION Certificate Replacement Required (16385), aby zakończyć wymianę EAP. W odpowiedzi system stosuje heurystykę wewnętrzną, aby określić, czy usuń certyfikat i spróbuj pobrać nowy certyfikat z tego samego Adres URL.

Podaj klucz publiczny

Podaj publiczny adres URL serwera, który hostuje certyfikat przewoźnika, jeśli:

  1. Klucz publiczny i datę ważności można wyodrębnić z certyfikatu.
  2. Informacje z serwera mają następujący format JSON:

    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.
    

    Poniżej znajdziesz przykład klucza publicznego.

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