Technologia SIM od dziesięcioleci stanowi fundament mobilnej łączności, umożliwiając identyfikację i uwierzytelnianie użytkowników w sieciach komórkowych. Zanim zanurzymy się w meandry eSIM i jej wersji M2M - czas na trochę detali o kartach SIM
Czym jest SIM?
To element bezpieczeństwa. To tradycyjna karta, która posiada dedykowany mikrokontroler, który bezpiecznie przechowuje informacje takie jak:
- identyfikujące abonenta w systemach operatora sieci komórkowej;
- informacje o operatorze i sieci;
- klucze używane do szyfrowania połączenia;
Główne składowe karty:
Uwierzytelnianie dzięki SIM
Autentykacja użytkownika w sieci komórkowej to fundamentalna rola karty SIM. Opiera się na zabezpieczonej parze kluczy zapisanych na chipie, unikalnie przypisanych do kodu abonenta. Proces ten wykorzystuje mechanizmy kryptograficzne wewnętrzne dla karty SIM, zapobiegając kopiowaniu kluczy i gwarantując bezpieczne połączenie. Proces uwierzytelniania obejmuje:
- Telefon ustanawia kanał komunikacyjny z siecią.
- Sieć prosi o tożsamość użytkownika, czyli numer IMSI zapisany na karcie SIM.
- Sieć wysyła wyzwanie kryptograficzne do telefonu (RAND).
- Telefon używa tajnego klucza zapisanego na karcie SIM, aby odpowiedzieć na wyzwanie (odpowiedź jest przesyłana z powrotem do sieci)
- Sieć porównuje odpowiedź z danymi przechowywanymi w swojej bazie danych.
- Jeśli informacje się zgadzają, użytkownik jest uwierzytelniany i może korzystać z sieci.
Tajny klucz używany w procesie jest znany tylko karcie SIM i sieci operatora, co zapewnia bezpieczne połączenie.
SIM - elektryczny i logiczny interfejs
Typowa karta SIM składa się z:
- mikrokontrolera (np. ARM SecureCore lub na bazie architektury 8051);
- pamięci RAM ~ 8 KB;
- pamięci ROM – 64-512 KB;
- pamięci EEPROM – do 512 KB (na kontakty, SMSy);
- układu szyfrującego komunikację z operatorem (algorytmy grupy COMP128);
Interfejs elektryczny
Od strony elektrycznej podłączenie się do SIM wygląda następująco:
To po prostu szeregowe połączenie, którym transmitowane są znaki.
Te znaki to nic innego jak komendy SIM, które pakowane są w APDU (Application Protocol Data Unit).
Interfejs logiczny
Schemat ramki APDU:
Komunikacja z kartą SIM za pomocą APDU odbywa się przez wysyłanie i odbieranie ramki danych zgodnie ze standardem ISO/IEC 7816. Przykładowa ramka komendy APDU ma następującą strukturę:
- CLA (Class Byte): określa klasę komendy.
- INS (Instruction Byte): określa instrukcję do wykonania.
- P1 i P2 (Parameter Bytes): określają parametry dla instrukcji.
- Lc (Length of Command Data): długość danych do przesłania do karty.
- Data: faktyczne dane przesyłane do karty.
- Le (Length of Expected Data): oczekiwana długość danych, które mają zostać otrzymane z karty.
Przykład komendy APDU, która może być wysłana do karty SIM, aby sprawdzić PIN (zakładając, że PIN to '1234'):
SIM - system operacyjny / system plików
System operacyjny karty SIM (COS) zarządza wewnętrznym plikowym systemem karty, który jest zorganizowany w hierarchiczny sposób. W systemie tym znajdują się pliki dedykowane do przechowywania różnorodnych informacji:
- Dane autoryzacyjne: Klucze kryptograficzne i algorytmy używane do uwierzytelniania w sieci.
- Informacje osobiste użytkownika: Dane abonenta, takie jak numer IMSI, oraz informacje związane z usługami operatora.
- Książka telefoniczna: Kontakty zapisane przez użytkownika.
- Wiadomości SMS: Zapisane wiadomości tekstowe.
- Dane dotyczące usług sieciowych: Informacje o planach taryfowych, preferencjach roamingowych itp.
- Aplikacje SIM: Takie jak SIM Toolkit (STK), które pozwalają na interakcje z użytkownikiem za pomocą specjalnego menu na telefonie.
COS dba o bezpieczeństwo przechowywanych danych, kontrolując dostęp do nich i zarządzając komunikacją między kartą SIM a telefonem.
Jednocześnie na karcie oprócz systemu COS często występuje środowisko Java Card.
Java Card stanowi warstwę oprogramowania działającą na szczycie COS, umożliwiającą uruchamianie aplikacji napisanych w Javie w bezpiecznym i izolowanym środowisku.
Integracja Java Card z COS zapewnia platformę do rozwijania i uruchamiania aplikacji napisanych w Java na kartach SIM.
Jakie są rozmiary i rodzaje kart SIM?
W tradycyjnych kartach SIM wyróżniamy kilka rozmiarów:
Jeśli chodzi o rodzaje kart SIM i ich zastosowanie, to wyróżniamy 4 typy:
- Tradycyjne karty SIM:
- fizyczne karty, które można włożyć do telefonu (UICC);
- karty do gniazd w rozmiarach mini/micro/nano + MFF2 UICC lutowane do PCB (SON-8);
- wgrany na sztywno profil użytkownika na kartę;
- SIM on board:
- krzem karty SIM wgrany w moduł IoT (ale zwykłe UICC a nie eUICC!);
- profil wgrany podczas wytwarzania modułu IoT;
- musimy dogadać się z operatorem i producentem modułu IoT;
- eSIM (embedded SIM):
- układy scalone do lutowania na PCB z modułem eUICC (embedded UICC);
- zintegrowane karty SIM, które są cyfrowo wgrane do urządzenia i mogą być zdalnie zarządzane;
- obsługa wielu profili użytkownika i aktywowania/deaktywowania ich w locie (dzięki modułowi eUICC);
- Soft SIM:
- czysto softwarowa rozwiązanie, symuluje funkcjonalność fizycznej karty;
- znam jedno komercyjne wdrożenie tej technologii (Onomondo).
UICC vs eUICC
Główna różnica polega więc na tym, że UICC (Universal Integrated Circuit Card) to fizyczna karta wymagająca manualnej wymiany dla zmiany usługodawcy, podczas gdy eUICC (Embedded Universal Integrated Circuit Card) umożliwia zdalne zarządzanie profilami, co ułatwia zmianę operatora bez potrzeby fizycznej interwencji.
IoT vs technologia SIM
Technologia SIM ma już ponad 30lat. Jej największe bolączki w kontekście urządzeń IoT (głównie tych Machine 2 Machine) to:
- rozmiar karty - kilku krotnie większa niż procesor ją obsługujący;
- złącze SIM - zajmuje dużo miejsca na PCB;
- pobór prądu w trybie full active (zdarza się, że więcej niż moduł LTE) - karta niezależnie od procesora go obsługującego komunikuje się z siecią (musi to robić z częstotliwością zgodną ze standardem) + operacje kryptograficzne na karcie;
Referencje
- "UICC-Terminal interface" (rozdziały 5 i 7): 3GPP.102.221;
- zawartość karty SIM: 3GPP 51.011 + 3GPP 31.101 + 3GPP 31.102;
#IoT