7. Architektura SIM karet pro systém GSM

Čipová karta označovaná SIM (Subscriber Identity Module) tvoří jeden ze základních pilířů, na kterých je vystavěna flexibilita a zároveň bezpečnost mobilních datových zařízení v síti GSM. Zmíněná flexibilita spočívá zejména v tom, že veškeré informace o daném uživateli, nutné pro jeho práci v síti GSM, jsou uloženy právě v SIM. Konkrétní uživatel se může chovat flexibilně v tom smyslu, že má možnost používat jakékoliv GSM zařízení, do kterého vloží svůj modul SIM, přičemž jeho identita v dané síti bude stále tatáž. Na tuto výhodu ovšem zcela logicky navazuje požadavek zvýšené bezpečnosti, který má za úkol zabránit zejména padělání SIM a tím vytváření falešných či duplicitních identit. Technicky vzato je SIM mikroprocesorem řízená čipová karta (tedy "pravá" smartcard), jejíž základní charakteristiky podléhají normě ISO 7816. Pro úplnost dodejme, že většina karet komunikuje protokolem T=1 (asynchronní blokově orientovaný poloduplex) což ve většině případů znamená, že podporuje i protokol T=0, který jsme si popsali.
Pokud jde o konkrétní způsob realizace daného modulu SIM, panuje zde poměrně značná volnost. Obecně je ve specifikaci GSM uvedeno pouze to, že má jít o procesorem (osmi nebo šestnáctibitovým) řízenou kartu, pracující minimálně do frekvence 5 MHz, vybavenou dvěma až osmi kilobajty EEPROM, třemi až deseti kilobajty ROM a s kapacitou RAM 128 až 256 bajtů. Pro spolehlivou činnost by kartě mělo stačit napájecí napětí 4,75 až 5,25 voltu s maximálním odběrem pod 10 miliampérů. Potud tedy technická definice nutná spolu s protokolem ISO 7816 pro kompatibilitu mobilních zařízení a modulů SIM od různých výrobců. Malinko bližší specifikace podává snad jen ještě fakt, zda je daný modul určen pro fázi I, nebo pro fázi II. Rozdíl mezi nimi přitom spočívá zejména v kapacitě paměti EEPROM a také v základní adresářové struktuře. Fáze II (aktuální stadium) je například na rozdíl od své předchůdkyně schopna ukládat SMS zprávy. Vzhledem k tomu, že fáze I se dnes už prakticky nepoužívá, budeme se v dalším výkladu věnovat výhradně fázi II.
Podobná situace je i v případě operačního systému těchto karet. Zde je opět definována pouze základní množina příkazů, kterým musí daný SIM rozumět, aby bylo možné jeho použití v ME (takto budeme dále označovat mobilní zařízení, pracující nad SIM modulem) od různých výrobců. Konkrétní architektura použitého operačního systému a způsob jeho implementace už opět plně závisí na výrobci. Přehled základních funkcí udává následující tabulka:
 
Zaměření Příkazy
Práce se soubory Select, Read, Write, Update, Create, Delete, Extend, Increase, Invalidate, Rehabilitate, Seek
Autentizace VerifyCHV, ChangeCHV, DisableCHV, EnableCHV, UnblockCHV, External Auth, Internal Auth, Get Random
Přímý přístup do systémových oblastí Put Data, Get Data
Obecné Sleep, Switch Proto, Status, Get Response

Sekvence Answer-to-Reset

K této oblasti neexistuje pro tisk dostupná dokumentace, takže se bude vycházet z náhodně vybraného a změřeného vzorku. Z tabulky zachycené ATR sekvence je možné vyčíst tyto údaje:
 
Jméno kódu Hodnota/Význam
TS 0x3F - inverzní kódování
T0 0x2F - TB1 přítomen a následován T1… T15
TB1 0x00 - není třeba externí Vpp
T1… T15 0x80 0x69 0xaf 0x02 0x01 0x01 0x35 0x00 0x1 0x0a 0x0e 0x83 0x1e 0x9f 0x16

měřený SIM používal interní kódování, nepotřeboval zdroj Vpp (vyráběl si jej sám) a za hlavičkou ATR je přenášeno celkem 15 historářových znaků. Popis pole T1 až T15 je samozřejmě nedokumentován, takže se můžeme pouze domnívat, že zde budou uloženy hodnoty typu aktuální stav karty, kód výrobce atd. Zajímavé na této kartě též je, že umí pouze protokol T=0 (TDi chybí, tudíž T=0 je jediný a implicitní). Odchycenou sekvenci a absenci protokolu T=1 můžeme brát jako ukázkový příklad toho, že tam, kde není normou pro GSM stanoveno jinak, mohou se mezi SIM od různých výrobců projevovat značné rozdíly.

Systém souborů

Aplikaci musíme chápat ve světě čipových karet trochu jinak než ve světě „velkých" počítačů. Ačkoliv je v zásadě možné přidávat na kartu vlastní systémové programy, není toto to hlavní, co obvykle tvoří celou aplikaci. Jádrem aplikací ve světě čipových karet je totiž návrh adresářové a souborové struktury, způsob definice přístupových práv, umístění souborů s klíči a konečně definice vzájemných interakcí mezi právě zmíněnými entitami. Tato definice, která, myslím, přesně vystihuje většinu aplikací, se opírá zejména o hlavní myšlenku čipových karet – o filozofii zabezpečeného nosiče důvěrných informací různého stupně utajení. A nyní už k vlastním souborům.
Stejně jako u ostatních karet tohoto typu, i zde je možné ukládat data do souborového systému velice podobného tomu, který známe z osobních počítačů. Platí zde však omezení, které říká, že hloubka vnoření adresářů může být nejvýše jedna. Jak už bylo zmíněno, soubory se v čip. kartách neoznačují jménem, ale čísly. V případě SIM karet je číslo dvoubajtové a podléhá následujícím konvencím: 3F 00 označuje hlavní (kořenový) adresář, 7F XX označuje podadresář hlavního adresáře (může být tedy nejvýše 255 podadresářů), 2F XX je označení pro soubor (dále EF – Elementary File) v hlavním adresáři a konečně 6F XX označuje EF umístěný v některém z podadresářů. Kromě těchto čísel jsou ještě vyhrazena čísla, jejichž horní bajt není roven ani jedné z právě vyjmenovaných hodnot. Jejich jména a umístění v daných aplikacích však většinou nenajdeme, neboť jde o soubory velice úzce související s bezpečností.
Systém obsahuje několik typů souborů. Základním typem je takzvaný transparentní EF, což je v podstatě klasický lineární soubor s náhodným přístupem, tak jak jej známe třeba z MS-DOS. Druhý typ tvoří soubor nazývaný lineární soubor konstantní délky. Přesnější označení by asi bylo s konstantním přírůstkem, neboť data v tomto souboru jsou organizována do záznamů konstantní délky; záznamy jsou číslovány a jejich maximální počet a velikost nesmí přesáhnout hranici 255. Nad strukturou těchto souborů je definováno rozšíření standardních čtecích a zapisovacích funkcí tak, aby byly schopny jednak absolutní adresace po jednotlivých záznamech, jednak relativního pohybu v daném záznamovém řetězci. Posledním typem EF souborů je takzvaný cyklický soubor, jehož architektura je velice podobná tomu předcházejícímu s tím rozdílem, že zde tvoří všechny záznamy cyklický seznam. Platí, že zápis do souboru je vždy prováděn do nejstaršího záznamu, který po této operaci získá číslo jedna (čísla ostatních se "posunou"). Z toho vyplývá, že "nejčerstvější" záznam v souboru má vždy číslo jedna a nejstarší potom číslo n (n je počet záznamů v souboru) a stáří ostatních je úměrné jejich pořadí. Ačkoliv tento typ souboru vypadá na první pohled dost podivně, existuje v GSM řada oblastí, kterým je jeho struktura doslova ušita na míru. Za všechny jmenujme třeba způsob ukládání SMS zpráv.
Vlastní způsob práce se soubory je opět velice podobný tomu, který je zaváděn ve známých operačních systémech "normálních" počítačů. Jediný rozdíl je v tom, že zde nejsou deskriptory souboru, a tak není možné pracovat s více soubory najednou. Vlastní sémantika funkcí typu Read/Write a Update je taková, že operace vždy pracují s tím souborem, který byl naposled vybrán příkazem Select. Tento příkaz slouží též k otvírání adresářů. Pokud tedy budeme chtít přečíst třeba osm bajtů od offsetu nula ze souboru 6F 20 z adresáře 7F 20, potom použijeme následující sekvenci příkazů: Select (7F20), Select (6F20) a Read (0, 8). Za zmínku též stojí způsob, jakým zde pracuje funkce Write, respektive Update. Vzhledem k tomu, že tyto operace neumožňují měnit velikost daného souboru (na to jsou speciální funkce), je vždy možný pouze zápis na datové pozice "uvnitř" souboru. Přitom platí, že funkce Write provádí při zápisu logickou funkci OR mezi novým a starým obsahem dané buňky, zatímco Update umožňuje daná data v souboru přepsat "natvrdo" – tj. původní obsah je nahrazen novým. Důvodů k zavedení těchto dvou funkcí, které mimo jiné nalezneme též u mnoha ostatních karet tohoto typu, je celá řada. Jeden z nich můžeme najít třeba v implementaci přístupových práv, kdy rozdílná práva pro Write, respektive Update, mohou být za jistých okolností užitečná. Z čistě technického hlediska potom plyne, že operace Write je k použitému paměťovému médiu (zde EEPROM) mnohem šetrnější, neboť nevyžaduje přemazání dané buňky před vlastním zápisem (samozřejmě při dobře navržené architektuře).
Kromě výše zmíněných příkazů pro manipulaci s daty existují ještě operace pracující se soubory jako takovými – tedy známé Delete, Create, Extend atd. Dále je možné kompletně zneplatnit, či obráceně zase obnovit obsah celého souboru. Přehled všech těchto funkcí najdete v přiložené tabulce. Bohužel není možné publikovat jejich kódy a sémantiku v protokolu T=0, takže nám musí postačit alespoň jejich názvy.
 

Bezpečnost souborů

Při vytváření daného EF souboru či adresáře (ty se označují jako DF – Dedicated File) je možné specifikovat přístupová práva, která musí terminál (ME) získat, aby mohl požadovanou operaci s daným souborem provést.
Přehled práv poskytuje tato tabulka:
 
Kód úrovně  Typ práva (požadavku)
0 ALWAYS
15 NEVER
1, 2 CHV1, CHV2
4 Ext. AUT
8, 9 CHV1/Ext. AUT, CHV2/Ext. AUT
11, 12, 13, 14 ADM1, ADM2, ADM3, ADM4
3, 5, 6, 7, 10 RFU

Položky RFU (Reserved for Future Use) jsou pro nás v tuto chvíli nezajímavé. Dále jsou zde triviální případy typu Always/Never, kdy je daná operace přístupná buď vždy, anebo je zcela zakázána. Mezi těmito dvěma extrémy se potom pohybují ostatní typy přístupových práv, které znamenají toto: CHV1 či CHV2 říká, že ME musí znát PIN uložené v souboru CHV1 či CHV2. Totéž musí být splněno v případě práv ADM1-4 s tím rozdílem, že zde je příslušné PIN uloženo v souboru ADM 1, 2, 3 anebo 4. Velice zajímavá metoda přístupu je AUT, která předepisuje, že ME musí nejdříve projít procedurou externí autentizace (viz dále). Tuto autentizaci je dále možné kombinovat ještě se znalostí příslušného PIN, což umožňují práva typu CHVx/AUT. Zkoumáním jednotlivých přístupových požadavků (v tomto případě možná přesnější výraz pro termín "práv") bychom se dostali spíš už do oblasti kryptografie, takže tuhle oblast opustíme.
 

<-- <- ^ -> -->



Semestrální projekt z Číslicových počítačů II.
Autoři: Lumír Návrat, Jakub Konštacký, Zdeněk Šmíd, Pavel Oplatek