Zdalne zarządzanie kartami SIM

Kanał komunikacji - szyfrowany

Komunikacja pomiędzy serwerem a kartą odbywa się przy pomocy czterech typów wiadomości:

1. SMS-SUBMIT

2. SMS-SUBMIT-REPORT

3. SMS-DELIVER

4. SMS-DELIVER-REPORT

Zdalne zarządzanie kartami SIM

Wiadomości SMS-PP

Operator chcąc dokonać modyfikacji zawartości karty przesyła, za pomocą platformy OTA i SMSC krótką wiadomość tekstową (SMS-DELIVER). Jeżeli wiadomość dotrze do adresata nadawca może otrzymać raport doręczenia (o ile go zażąda). Raport doręczenia jest przesyłany we wiadomości SMS-DELIVER-REPORT. W celu zapewnienia kanału zwrotnego z karty SIM do platformy OTA korzysta się z PoR (Proof of Receipt). Należy zwrócić uwagę, że nie każda wiadomość, jaka dotrze do karty SIM wymaga odpowiedzi za pomocą PoR. To czy karta SIM ma przesłać odpowiedź zależy od platformy OTA.

W nagłówku wiadomości skierowanej do karty są dwa bajty określające zarówno sposób, w jaki wiadomość została zaszyfrowana jak również, w jaki sposób ma być i czy w ogóle ma być przesłana odpowiedź. Te dwa bajty noszą nazwę SPI. Odpowiedź PoR można przesłać zarówno korzystając z SMS-SUBMIT (wiadomość SMS wysłana z karty do platformy), bądź też wykorzystując do tego celu SMS-DELIVER-REPORT (raport doręczenie wiadomości może również zawierać PoR wymaga to jednak MAPv3).

Zdalne zarządzanie kartami SIM

Budowa wiadomości OTA

Przy czym poszczególne pola maja następujący opis:

CPL - Command Packet Length, długość danych poczynając od CHL (Command Header Length) kończąc na samej wiadomości (SD - Secure Data).

Jednym z ważniejszych elementów nagłówka są parametry SPI1 i SPI2 (Security Parameters Indication). Wiadomość, która trafia do karty z reguły jest zaszyfrowana. Informacja o tym, w jaki sposób wiadomość została zaszyfrowana, czy został użyty podpis itd. Zawarta jest właśnie w SPI. Parametr ten to dwa bajty, przy czym pierwszy bajt informuje o wiadomości w kierunku DO karty a drugi bajt (mniej znaczący) informuje o wiadomości w kierunku Z karty. Jak będzie to opisane poniżej, za pomocą odpowiedniego ustawienia parametru SPI2 (mniej znaczącego bajtu SPI) możliwe jest żądanie odpowiedzi z karty w określony sposób.

Pierwszy (bardziej znaczący) bajt SPI jest opisany poniżej:

Zdalne zarządzanie kartami SIM

Opis bajtu SPI1 (źródło – standard GSM 03.48)

Załóżmy, że chcemy, aby nasza widomość DO karty była odebrana przez nią wtedy i tylko wtedy, gdy licznik antypowtórzeniowy znajdujący się na karcie (karta SIM przechowuje informacje o najwyższym numerze ostatnio zaakceptowanej wiadomości - celem jest ochrona przed atakami powtórzeniowymi) ma wartość mniejszą od numeru wiadomości. W związku z tym musimy ustawić bit b5. Załóżmy ponadto, że wiadomość jest zaszyfrowana oraz zawiera kryptograficzną sumę kontrolną (Cryptographic Checksum). W tym celu musimy ustawić bity b3, b2. A zatem całość powinna wynosić 00010110, czyli szesnastkowo 16.

Oczywiście SPI1 informuje TYLKO o tym, w jaki sposób widomość została przygotowana. Ważne jest, aby karta SIM ustawiona była tak, że odrzuca wszystkie wiadomości, które mają SPI1 ustawione poniżej ustalonej wartości (poniżej oznacza jednocześnie mniejszy poziom zabezpieczeń). W naszym przypadku załóżmy, że karta jest ustawiona tak, że odbiera wszystkie wiadomości, które maja SPI1 ustawione co najmniej na wartość 0E (00001110 - brak sprawdzania licznika, wiadomość musi być zaszyfrowana oraz zawierać kryptograficzną sumę kontrolną). Jeżeli dostanie wiadomość, w której SPI1 = 16 wówczas wiadomość ta jest bez problemu zaakceptowana do dalszego przetwarzania. W przypadku gdyby wiadomość miała SPI1 ustawione na np. na 0A, wówczas karta powinna taką wiadomość automatycznie odrzucić bez jej analizowania.

Przesuńmy się dalej po nagłówku. Mamy już informacje, jaki poziom bezpieczeństwa spełnia wiadomość. Kolejnym elementem układanki jest bajt SPI2. Bajt ten, jak już wcześniej było wspomniane informuje kartę o żądanej odpowiedzi z jej strony. Opis znaczenia poszczególnych bitów przedstawiony jest poniżej.

Zdalne zarządzanie kartami SIM

Opis bajtu SPI2 (źródło – standard GSM 03.48)

Jako przykład może przyjąć, że będziemy żądać od karty SIM odpowiedzi poprzez SMS-SUBMIT nie będziemy wymagali kryptograficznej sumy kontrolnej oraz nie będziemy wymagali szyfrowania odpowiedzi. W tym celu należy ustawić bity: b6, b1

.

Zatem SPI2 = 00100001, 0x21. Odpowiedź będzie przesłana do nadawcy widomości, na którą karta odpowiada.

Ponieważ karta może przechowywać szereg kluczy używanych do szyfracji i podpisu, ponadto klucze mogą być przypisane do różnych algorytmów istnieje konieczność poinformowania karty, jakimi kluczami i jakimi algorytmami powinna się w stosunku do danej wiadomości posługiwać. W tym celu ustawia się odpowiednie bity w polach KiC i KiD (patrz Rys. 5.).

Kodowanie obu tych pól jest tożsame. Klucz KiC używany jest do szyfracji wiadomości, klucz KiD używany jest do wyliczenia nadmiarowości (RC - Redundancy Check), kryptograficznej sumy kontrolnej (CC - Cryptographic Checksum) oraz podpisu cyfrowego (DS - Digital Signature). Załóżmy, że wykorzystujemy pierwszą parę kluczy (znaną zarówno serwerowi, który wysyła wiadomość jak i karcie - szyfr symetryczny), w związku z tym ustawiamy bit b5 w polu KiC jak i KiD (teoretycznie można użyć innego indeksu klucza KiD ale w praktyce stosuje się ten sam). Załóżmy ponadto, że wykorzystujemy algorytm potrójny DES w trybie CBC (Cyclic Block Chaining) o dwóch różnych kluczach - ustawiamy zatemy bity b3 i b1. Podsumowując KiC = 0001 0101 a zatem 0x15. Podobnie w przypadku KiD. Opis bitów w polach KiC i KiD przedstawiony jest poniżej.

Zdalne zarządzanie kartami SIM

Opis bajtu KiC (KiD) (źródło – standard GSM 03.48)

Wiemy już jak rozszyfrować wiadomość. Tak jak było wspomniane wcześniej, ze względu na to, że na karcie STK może być zainstalowanych równocześnie wiele aplikacji, niezbędne jest poinformowanie, do której z tych aplikacji wiadomość ma być przekazana. Polem, które identyfikuje aplikacje docelową jest pole TAR (Toolkit Application Reference). Jest tu przechowywany "skrót" pełnego identyfikatora aplikacji (AID). Zaraz po wartości TAR jest podawany wartość licznika antypowtórzeniowego. Ponieważ w SPI1 oraz w ustawieniach na karcie zaznaczyliśmy, że licznik musi być sprawdzany w związku z tym zawartość tego pola jest weryfikowana przez system operacyjny karty SIM.

Ponadto, ze względu na fakt, że algorytm DES pracuje na blokach danych o stałej długości a wiadomość, którą chcemy przesłać do karty nie zawsze ma długość oczekiwaną przez DES, w celu dopasowania długości wiadomości do algorytmu DES stosuje się wypełnienie zerami. Liczba dodatkowych zer określona jest przez PCNTR (Padding Counter). W polu CER zapisany jest certyfikat wiadomości (podpis) wyliczony przy pomocy klucza KiD. Dopiero teraz występuje zaszyfrowana wartość wiadomości (SD - Secure Data). Wiadomość jest zaszyfrowana kluczem KiC. Jak widać na rysunku Rys.5 na wiadomość zaszyfrowaną mamy tylko 113 bajtów. Łatwo sobie, zatem wyobrazić, że aby załadować na kartę SIM poprzez OTA np. aplikacje o rozmiarze 1kB potrzeba około 9 SMSów.


TOP 200