Das WLAN des Mobilfunkanbieters ist eine automatische Verbindungsfunktion (mit verschlüsselter IMSI), die unter Android 9 und höher verfügbar ist. So können sich Geräte automatisch mit WLANs des Mobilfunkanbieters verbinden. In Bereichen mit hoher Auslastung oder minimaler Mobilfunkabdeckung, z. B. in Stadion oder U-Bahn-Stationen, kann das Mobilfunkbetreiber-WLAN verwendet werden, um die Konnektivität der Nutzer zu verbessern und den Traffic zu entlasten.
Geräte mit der WLAN-Funktion des Mobilfunkanbieters stellen automatisch eine Verbindung zu konfigurierten WLANs des Mobilfunkanbieters her (Netzwerke mit einem Public-Key-Zertifikat). Wenn ein Nutzer die Verbindung zum WLAN des Mobilfunkanbieters manuell trennt, wird das Netzwerk 24 Stunden lang auf die schwarze Liste gesetzt (keine automatische Verbindung). Nutzer können jederzeit manuell eine Verbindung zu Netzwerken herstellen, die auf die Sperrliste gesetzt wurden.
Implementierung
Gerätehersteller und Mobilfunkanbieter müssen Folgendes tun, um WLAN-Hotspots von Mobilfunkanbietern zu implementieren.
Hersteller
Verwenden Sie auf Geräten mit Android 11 und höher die Wi-Fi Suggestion API, um WLAN-Profile für jeden Mobilfunkanbieter hinzuzufügen.
Fügen Sie auf Geräten mit Android 10 oder niedriger WLAN-Profile hinzu, indem Sie den Parameter carrier_wifi_string_array
für jeden Mobilfunkanbieter im Carrier Config Manager konfigurieren.
carrier_wifi_string_array
: Ein String-Array, in dem jeder Stringeintrag eine Base64-codierte WLAN-SSID und ein EAP-Typ ist, der durch ein Komma getrennt ist, wobei der EAP-Typ eine Ganzzahl ist (siehe Extensible Authentication Protocol (EAP) Registry). Die folgende Konfiguration gilt beispielsweise für EINE_SSID_NAME mit EAP-AKA und EINE_ANDERE_SSID mit EAP-SIM:config { key: "carrier_wifi_string_array" text_array { item: "U09NRV9TU0lEX05BTUUK,23" item: "U29tZV9PdGhlcl9TU0lECg==,18" } }
Konfigurieren Sie im Carrier Config Manager die folgenden Parameter für jeden Mobilfunkanbieter:
imsi_key_availability_int
: gibt an, ob der für die IMSI-Verschlüsselung verwendete Schlüssel für WLAN (Bit 1 ist festgelegt), EPDG (Bit 0 festgelegt) oder beides verfügbar ist (Bit 0 und Bit 1 sind festgelegt). Die folgende Konfiguration zeigt beispielsweise an, dass die IMSI-Verschlüsselung für WLAN verfügbar ist, aber nicht für EPDG:config { key: "imsi_key_availability_int" int_value: 2 }
imsi_key_download_url_string
: URL, von der die Proto-Datei mit dem öffentlichen Schlüssel des für die IMSI-Verschlüsselung verwendeten Trägers heruntergeladen wird. In der folgenden Konfiguration wird beispielsweise eine bestimmte URL angegeben: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
: Ein Flag, das angibt, ob der Download des öffentlichen Schlüssels des Mobilfunkanbieters über ein kostenpflichtiges Mobilfunknetz zulässig ist. Wenn dieses Flag nicht festgelegt ist, kann ein neues Gerät ohne WLAN-Verbindung keine Verbindung zum WLAN des Mobilfunkanbieters herstellen, da es den Schlüssel nicht herunterladen darf.config { key: "allow_metered_network_for_cert_download_bool" bool_value: true }
Mobilfunkanbieter
Um WLANs von Mobilfunkanbietern zu implementieren, muss der Mobilfunkanbieter den IMSI-Datenschutz aktivieren und einen öffentlichen Schlüssel angeben.
IMSI-Datenschutz
Android schützt die Vertraulichkeit der permanenten Identität (IMSI) eines Abonnenten mithilfe der Public-Key-Kryptografie. Android implementiert die Spezifikation der Wireless Broadband Alliance (WBA) für den IMSI-Datenschutz für WLAN. Wenn der IMSI-Datenschutz für eine Verbindung aktiviert ist, wird die permanente Teilnehmeridentität nicht unverschlüsselt per Funk übertragen.
Permanente Identitätsverschlüsselung
Die verschlüsselte permanente Identität hat folgendes Format:
- Die dauerhafte Identität hat das Format
<EAP-Method><IMSI>@<NAI realm>
. - Das EAP-Methodenpräfix ist ein einzelnes Oktett, das die EAP-Methode definiert, die für die Authentifizierung verwendet wird:
0
: EAP-AKA1
: EAP-SIM6
: EAP-AKA'
- Das NAI-Realm-Format ist
wlan.mncXXX.mccYYY.3gppnetwork.org
, wobeiXXX
durch den Mobilfunknetzcode (MNC) der SIM-Karte undYYY
durch den Mobilfunkländercode (MCC) ersetzt wird. - Die dauerhafte Identität wird mit einem vom Mobilfunkanbieter bereitgestellten RSA-öffentlichen Schlüssel verschlüsselt. Der öffentliche Schlüssel ist in einem X.509-Zertifikat enthalten.
- Das Verschlüsselungsschema ist RSAES-OAEP mit SHA-256 als kryptografischer Hash-Funktion. Dieses Verschlüsselungsschema garantiert bei jeder Verwendung des Schemas einen eindeutigen Geheimtext und verhindert so eine weitere persistente Identität, die nachverfolgt werden kann.
- Die RSA-Schlüssellänge beträgt 2.048 Bit.
- Der Verschlüsselungspuffer hat eine Größe von 256 Byte.
- Der Geheimtext ist mit Base64 codiert.
- Die Länge der verschlüsselten dauerhaften Identität beträgt 344 Byte.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
Schlüsselkennung
Die Schlüssel-ID ist ein optionales Attribut/Wert-Paar, das der Mobilfunkanbieter an ein Zertifikat anhängt, damit der Server während der Authentifizierung den richtigen privaten Schlüssel finden kann. Ein Beispiel für eine Schlüsselkennung ist CertificateSerialNumber=123456
. Wenn die Schlüssel-ID angegeben ist, wird sie im Rahmen des Authentifizierungsprozesses unverschlüsselt gesendet.
Änderungen an SIM-basierten EAP-Authentifizierungsmethoden
Wenn der IMSI-Datenschutz für eine Verbindung aktiviert ist, sendet das System nach Erhalt von EAP-Request/Identity
nicht die permanente Identität, sondern antwortet mit einer anonymen Anmeldung:
SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>
<prefix>
ist optional. Wenn die enable_eap_method_prefix_bool
-Mobilfunkanbieterkonfiguration auf true
gesetzt ist, wird der Server über den ersten Charakter der Identität (vor anonymous
) über die Art der verwendeten EAP-Methode informiert, bevor der EAP-Austausch beginnt.
0
: EAP1
: EAP-SIM6
: EAP – auch bekannt als
Wenn die Mobilfunkanbieterkonfiguration auf false
festgelegt ist, ist dieses Präfix nicht in der Nachricht enthalten.
Als Antwort sendet der Server eine EAP-Request/AKA-Identity
-Nachricht und das System antwortet im folgenden Format:
SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"
Das erste Zeichen der Identität informiert den Server entweder darüber, dass eine verschlüsselte Identität verwendet wird, oder über den Typ der konfigurierten EAP-Methode:
\0
: Verschlüsselte permanente Identität0
: EAP – kurz: EAP1
: EAP-SIM6
: EAP – auch bekannt als
Das Attribut-Wert-Paar „key identifier“ ist optional und wird der verschlüsselten permanenten Identität nicht angefügt, wenn es nicht verwendet wird.
An diesem Punkt sucht der Server den privaten Schlüssel anhand der Schlüssel-ID (falls angegeben), entschlüsselt die verschlüsselte Identität mit dem privaten Schlüssel des Mobilfunkanbieters und fährt mit dem normalen EAP-Ablauf fort.
Nach erfolgreicher Authentifizierung kann der Server eine Identität für die schnelle erneute Authentifizierung oder eine temporäre Identität (Pseudonym) bereitstellen, die bei nachfolgenden Verbindungen verwendet wird. Wenn der Server keine temporären Identitäten bereitstellt, sendet das System die verschlüsselte Identität in der nachfolgenden Verbindung.
Abrufen, Ablauf und Widerruf von Mobilfunkanbieterzertifikaten
Wenn im System kein Zertifikat installiert ist, verwendet das System die in der imsi_key_download_url_string
-Mobilfunkanbieterkonfiguration angegebene URL, um ein Zertifikat mit der HTTP-GET-Methode herunterzuladen. Das System verwendet nur mobile Daten, wenn die allow_metered_network_for_cert_download_bool
-Mobilfunkanbieterkonfiguration auf true
festgelegt ist. Andernfalls lädt das System das Zertifikat nur herunter, wenn eine WLAN-Verbindung verfügbar ist.
Der Ablauf des Zertifikats wird vom System erzwungen. Das System versucht, 21 Tage vor dem Ablaufdatum des Zertifikats eine Verlängerung vorzunehmen. Dabei wird dieselbe URL verwendet, um das neue Zertifikat herunterzuladen.
Wenn der Server die verschlüsselte Identität nicht entschlüsseln kann, sendet er eine EAP-Request/AKA-Notification
-Nachricht mit dem AT_NOTIFICATION
-Code General Failure
(16384), um den EAP-Austausch zu beenden.
Wenn das Zertifikat widerrufen oder abgelaufen ist, sendet der Server eine EAP-Request/AKA-Notification
-Nachricht mit dem AT_NOTIFICATION
-Code Certificate Replacement Required
(16385), um den EAP-Austausch zu beenden.
Das System wendet daraufhin interne Heuristiken an, um festzustellen, ob das Zertifikat entfernt werden soll und ob versucht wird, ein neues Zertifikat von derselben URL herunterzuladen.
Geben Sie den öffentlichen Schlüssel an.
Geben Sie eine öffentliche URL zu einem Server an, der das Zertifikat des Mobilfunkanbieters hostet, vorzugsweise HTTP über TLS. Dabei gilt Folgendes:
- Der öffentliche Schlüssel und das Ablaufdatum können aus dem Zertifikat extrahiert werden.
Die Informationen vom Server sind im JSON-Format:
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.
Im Folgenden finden Sie ein Beispiel für einen öffentlichen Schlüssel.
{ "carrier-keys" : [ { "key-identifier" : "CertificateSerialNumber=5xxe06d4", "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----" } ] }