6. Architektura telefonních karet
Ve své podstatě zde nejde o "pravé" smart-karty, neboť neobsahují žádný
vlastní procesor. Tyto karty vlastně představují pouze jistý typ nonvolatilní
paměti, která je dostupná pomocí jednoduchého sériového komunikačního protokolu.
O vlastní řízení přístupu se stará pouze poměrně jednoduchá kombinační
logika, v lepším případě je použit nějaký jednoduchý konečný automat. S
tím, že tyto karty nejsou vybaveny vlastním procesorem, který by například
samostatně prováděl autentizaci a šifrování čtených či zapisovaných dat,
též velice úzce souvisí jejich bezpečnost. Ta, jak uvidíme za okamžik,
se zde zajišťuje spíše na principech ryze fyzikálních (použitý typ paměti)
než pomocí matematických kouzel.
Dalo by se říct, že existují dva reprezentativní zástupci. Jednak je
to typ ST1200, který se kromě ČR používá rovněž ve Francii, Španělsku,
Mexiku, Švédsku a Finsku. Druhý typ, který má pravděpodobně označení řady
ST1300 se používá hlavně na Slovensku a v Německu. Tento druhý typ je o
něco chytřejší než ST1200. V této práci se jen zaměříme na karty typu ST1200.
Schéma paměti
Nyní víme, že nemůžeme od těchto karet čekat víc než obyčejnou paměť. V
tomto případě těchto karet jde o 256 bitů paměti typu EPROM. jejíž strukturu
je možné vidět na přiloženém obrázku.
Zde
vidíme, že prvních 96 bitů paměti tvoří hlavičku, která v sobě nese takové
informace, jako je počet jednotek, sériové číslo, kontrolní součet atd.
Zbylých 160 bitů paměti se označuje jako pole jednotek a slouží k zaznamenávání
počtu protelefonovaných impulzů. Ty se zde zaznamenávají v podobě jednotkových
bitů, přičemž platí, že co jeden bit nastavený na jedničku, to jedna odepsaná
jednotka. Dále platí nepsané pravidlo, že blok jednotkových bitů by měl
tvořit souvislou posloupnost od počátku pole jednotek. Za zmínku též stojí
fakt, že první dvě jednotky jsou vždy odepsány už při výrobě karty jako
součást výstupní kontroly. Při bližší prohlídce hlavičky zjistíte, že díky
tomuto testování jsou karty vždy vyráběny na počet jednotek, který je o
dvě vyšší než je hodnota vyražená na obalu karty. Přímo z právě popsané
struktury těchto karet (dalo by se vlastně říkat též pamětí), je ihned
patrné, proč se prodávají karty na maximálně 150 jednotek. Víc bych se
jich totiž na kartu už nevešlo. Proč 150 a ne 158? To proto, že poslední
bajt z pole jednotek je vyhrazen pro zvláštní účely (označení prázdné karty
apod.)
Jako zvláštní příklad použití popsaného pole jednotek si můžeme uvést
karty španělské. Zdejší telefonní automaty dělí pole jednotek na takzvaný
rychlý a pomalý čítač. Bitové dotace na tyto dva čítače se přitom liší
podle toho, na jaký počet jednotek (zde udáváno v pesetách) je karta určena.
Tak např. pro kartu za 2000 Pta má pomalý čítač velikost 60 bitů, takže
na rychlý zbývá rovných 90 (u těchto karet nebývá použito prvních osm bitů
– slouží pro testovací účely). Výsledný počet protelefonovaných jednotek,
vztažených na danou měnu, se přitom počítá jako 10*slow_cnt + fast_cnt,
kde slow_cnt, respektive fast_cnt představuje počet odepsaných jednotek
v poli pomalého, respektive rychlého čítače. Vlastní posloupnost jednotkových
bitů v obou čítačích přitom nemusí být souvislá – důležitá je vždy pozice
posledního bitu.
Komunikační protokol
K přístupu do paměti se používá jednoduchý sériový protokol, se kterým
je možné provádět tři základní operace: resetovat kartu, provést přesun
na další bit a nastavit daný bit do stavu logická 1. První dvě operace
jsou určeny zejména ke čtení obsahu karty, kdy je na výstupní pin v synchronizaci
se spádovou hranou hodin (ty generuje telefonní automat) zaslán vždy další
bit v pořadí msb. .. lsb počínaje adresou nula. Pomocí operace reset je
možné kdykoliv nulovat vnitřní čítač karty a číst ji znovu od začátku.
Poslední ze zmíněných akcí, kterou je zápis jednotky, se (jak už jistě
tušíte) používá při odpisu impulzu. Ačkoliv by to mělo být z daného obrázku
patrné, pro jistotu ještě dodávám, že operace zápisu a čtení využívají
stejný čítač adres. Pokud tedy chceme nějaký bit nastavit do hodnoty logická
jedna, pak nejdříve musíme pomocí n taktů hodin nastavit adresu na danou
pozici a poté provést zápis. To, jestli se po skončení zápisu přesune čítač
na další bit nebo ne, je dáno tím, zda spádová hrana hodin přijde před
(nebo současně se) spádovou hranou signálu R’/W nebo až po ní. V prvním
případě zůstane hodnota čítače nezměněna, zatímco ve druhém případě se
tento ukazatel přesune na další bit.
Bezpečnost ST1200
Kartu ST1200 chrání především princip, na kterém je založena její paměť.
Celý trik bránící nežádoucímu "dobíjení" karty je zde vystavěn na tom,
že použitá paměť je typu EPROM. To znamená, že pomocí komunikačního protokolu
(a potažmo elektronického působení vůbec) je do ní možné zapsat pouze hodnotu
jedna (prakticky to asi bude invertovaná nula). Daný bit reprezentující
telefonní jednotku tak můžeme pouze "odpálit" bez možnosti návratu zpět.
Čistě teoreticky by mělo být možné kartu po odleptání ochranných pryskyřic
a po následném vystavení tvrdému UV záření smazat. Tato věc má však ještě
jeden háček, a tím je pojistka chránící oblast hlavičky před zápisem. Ta
je propálena při výrobě karty po naprogramování hlavičkové části. Pokud
bychom tedy nakrásně kartu výše popsaným způsobem vymazali, pak bychom
zároveň přišli o hlavičku, kterou by už díky zmíněné pojistce nebylo možné
obnovit. Dodejme ještě, že tato pojistka také úspěšně brání zvýšení počátečního
počtu jednotek zapsáním jedničky do 24 bitu hlavičky (z 50jednotkové karty
bychom tak vyrobili 150jednotkovou).
Ať tak či onak, přes nějaké "ošálení" vytelefonované karty cesta za
bezplatnými telefonáty zjevně nevede. Samozřejmě, mohly se vyskytnout ojedinělé
případy, kdy se různým "trápením" karty podařilo část jednotek obnovit,
ale to jsou spíše světlé výjimky. To, co však před pár lety doslova zahýbalo
českými sdělovacími prostředky, byly téměř dokonalé padělky těchto karet.
Principy padělání
Hlavní cesta k napadení systémů založených na těchto kartách nevede přes
manipulaci s existující kartou, nýbrž přes vytvoření vlastního exempláře.
Zde bych se rád zaměřil na dva základní typy těchto padělků s možným naznačením
obranných mechanismů, které na ně "zabírají".
První typ, označovaný podle svého vzhledu jako "vrabčí hnízdo", v podstatě
představuje napodobení karty pomocí stejných stavebních prvků, z jakých
se skládá originál. Najdeme zde tedy čítač adres, paměť EEPROM (nevím,
který hacker by si tam dal dobrovolně EPROM) a něco málo kombinační logiky
kolem. Hlavní nevýhoda a tím i zranitelnost těchto padělků vyplývá z toho,
že klasická součástková základna je přece jen o něco málo větší než původní
čip na kartě. I když zruční hackeři většinou všechny obvody dovedně zbrousí
a zalepí do celistvého bloku ukrytého na spodní straně karty, přece jen
je na první pohled vidět, že jde o padělek. Navíc do automatů firmy Landis&Gyr
není vůbec možné tyto karty vzhledem k jejich velkým rozměrům zastrčit.
Tam, kde by snad selhaly mechanické ochrany, kartu tohoto typu většinou
spolehlivě odhalí detektor kovů a magnetického pole (pokud pracuje tak,
jak má).
Druhý typ padělků používá stále oblíbenější procesory PIC 16C84 či
jim podobné, které mají tu zásadní výhodu, že po zbroušení je lze bez větších
problémů zalepit přímo do původní karty. Odpadají tak starosti s mechanickými
zábranami. Na karty s těmito procesory jsou většinou krátké i detektory
kovů a magnetického pole. Na první pohled tedy samé výhody a mohlo by se
zdát, že tyto karty jsou neodhalitelné. To však neplatí zcela stoprocentně,
neboť jejich hlavní problém se jmenuje rychlost. Zatímco "vrabčí hnízda"
mohou bez problémů pracovat zhruba na stejných hodinových frekvencích jako
originální karty, zde to díky nezanedbatelné délce instrukčního cyklu dost
dobře není možné. Navíc tyto karty musí mít z čistě teoretického hlediska
problémy s ošetřováním takzvaných asynchronních událostí. To je okamžik,
při kterém se najednou mění více vstupních signálů. Zatímco kombinační
logika "vrabčího hnízda" takové stavy hravě zvládne, procesorem řízený
model na nich většinou úspěšně pohoří. Jedna taková "vychytávka" týkající
se atypického resetování je uvedena v přiloženém průběhu karty. Podle internetovských
undergroundových zdrojů byl tento průběh dlouhou dobu příčinou bezesných
nocí mnoha hackerů.
Semestrální projekt z Číslicových počítačů II.
Autoři: Lumír Návrat,
Jakub
Konštacký, Zdeněk Šmíd,
Pavel
Oplatek