next up previous contents
Next: Karty procesorowe z koprocesorem kryptograficznym Up: Rodzaje kart Previous: Karty pamięciowe z ochroną   Spis tresci


Karty procesorowe

Wprowadzenie systemu ochrony danych do kart pamięciowych było ważnym krokiem w rozwoju kart. Wyznaczyło nowy kierunek rozwoju -- umożliwienie dostępu do pamięci karty wyłącznie poprzez inne układy stojące na straży zawartych w niej danych. Kolejnym krokiem uczynionym przez konstruktorów było dołożenie do układów pamięci znajdujących się na karcie procesora oraz układu wejścia-wyjścia. Całość złożona razem w jeden układ elektroniczny i zalana plastikiem nosi nazwę karty procesorowej (ang. smart card). Karta procesorowa wyposażona jest w styki, podobnie jak w przypadku kart pamięciowych umieszczone na wierzchu karty, służące do komunikacji układu wejścia-wyjścia karty ze światem zewnętrznym oraz do doprowadzenia do karty zasilania. Na rysunku 2.1 pokazano elementy składowe elektronicznego układu karty procesorowej.

Rysunek 2.1: Budowa układu elektronicznego karty procesorowej
\begin{figure}\centering %%
\input{rozdzial_2/rysunki/rys1.eepic}
\end{figure}

Najważniejszą cechą odróżniającą karty procesorowe od pamięciowych (oczywiście prócz posiadania procesora) jest sposób dostępu do pamięci karty. W przypadku kart pamięciowych świat zewnętrzny zarządzał pamięcią, decydował pod jakim adresem dokonać operacji odczytu lub zapisu. W kartach procesorowych dane przechowywane są w systemie plików, a dostęp do nich odbywa się poprzez procesor, układ wejścia-wyjścia oraz system operacyjny karty. Jest to jedyny sposób dostępu do pamięci (nie można odwołać się do niej bezpośrednio), dzięki czemu karty procesorowe przy właściwym wykorzystaniu gwarantują dość wysoki poziom bezpieczeństwa przechowywanych w nich danych. Przyjrzyjmy się dokładniej elementom składowym układu elektronicznego karty, aby poznać stopień jej technicznego zaawansowania.

Pamięć karty składa się z pamięci tylko do odczytu (ang. Read Only Memory, w skrócie ROM), pamięci nieulotnej oraz pamięci operacyjnej (ang. Random Access Memory, w skrócie RAM). W pamięci tylko do odczytu znajduje się oprogramowanie zarządzające kartą, które umieszcza się w niej w procesie produkcyjnym. W większości kart jest to system operacyjny pozwalający na dostęp do systemu plików, wykonywanie podstawowych operacji kryptograficznych oraz innych, charakterystycznych dla sposobu wykorzystania karty. Komórki pamięci tylko do odczytu są stosunkowo małe, dzięki czemu na karcie mieści się jej dość dużo, od 8 do 32 kilobajtów. Pamięć nieulotna znajdująca się na karcie służy do przechowywania danych zorganizowanych w system plików. Jej podstawową cechą jest to, iż dane w niej zapisane pozostają nienaruszone po odłączeniu zasilania (co nie jest bez znaczenia, gdyż przeciętna karta większość czasu spędza w kieszeni właściciela, gdzie o zasilanie jest dość trudno). Dane mogą pozostawać w takiej pamięci nawet przez 10 lat, co z praktycznego punku widzenia absolutnie wystarcza. Pamięć nieulotna ma również wady:

Na współczesnej karcie procesorowej znajduje się od 4 do 32 kilobajtów pamięci nieulotnej. Wreszcie znajdziemy na karcie także pamięć operacyjną, która jednak ze względu na ulotność danych, które znikają po odłączeniu zasilania, służy jedynie jako pamięć pomocnicza wykorzystywana przez system operacyjny karty. Komórki tej pamięci mają dość pokaźne rozmiary, co bardzo limituje ilość pamięci operacyjnej znajdującej się na karcie (do kilku kilobajtów).

Kolejnym elementem składowym karty procesorowej jest procesor (ang. Central Processing Unit, w skrócie CPU). Jest to przeważnie jednostka o ośmiobitowej architekturze, posiadająca na liście instrukcji standardowe operacje na pamięci, rejestrach oraz systemie wejścia-wyjścia. Karta nie posiada własnego zegara, więc procesor jest taktowany sygnałem dostarczanym przez świat zewnętrzny poprzez jeden ze styków karty.

Ze względu na ograniczoną dopuszczalną wielkość układu oraz na konieczność ograniczania kosztów konstruktorzy stosują zwykle układy o mocy obliczeniowej od 400 KIPS (tysięcy instrukcji na sekundę) do około 1 MIPS (miliona instrukcji na sekundę). Procesor karty pobiera kod do wykonania jedynie z pamięci tylko do odczytu[*], gdyż zawartość pamięci operacyjnej może być przypadkowa w wyniku (być może celowego) odłączenia zasilania przez świat zewnętrzny.

Układ wejścia-wyjścia stosowany w kartach procesorowych wykorzystuje do komunikacji ze światem zewnętrznym jednokierunkową transmisję szeregową (transmisja odbywa się tylko w jednym kierunku w danym momencie). Komunikacja odbywa się po elektrycznych stykach karty znajdujących się na jej powierzchni. Opis używanych styków karty znajduje się na rysunku 2.2.

Rysunek 2.2: Opis styków karty procesorowej
\begin{figure}\centering %%
\input{rozdzial_2/rysunki/rys2.eepic}
\end{figure}

Ponieważ sprzęt dostarcza transmisję jednokierunkową, przyjęto, że komunikacja karty ze światem zewnętrznym inicjowana jest zawsze przez świat zewnętrzny, a karta odpowiada na jego żądania. Układ wejścia-wyjścia obsługuje transmisję z prędkością do 115,200 bitów na sekundę, lecz zwykle wykorzystuje się dużo niższe prędkości ze względu na ograniczenia innych elementów systemu (zob. p. 2.2).

Schemat współdziałania karty ze światem zewnętrznym opiera się na poleceniach, które przesyłane są do karty. Są one w niej przetwarzane, a następnie otrzymane wyniki odsyłane są na zewnątrz. Jak widać, karta pełni w tej architekturze rolę poddanego (ang. slave) wykonującego operacje na żądanie świata zewnętrznego (ang. master). Podstawowy zestaw operacji udostępnianych przez karty procesorowe to operacje na systemie plików oraz procedury autoryzacyjne.

Po zapoznaniu się z podstawami budowy kart procesorowych należy zadać sobie pytanie, czy karty procesorowe znacząco lepiej chronią dane w nich zapisane niż ich mniej zaawansowani kuzyni (karty pamięciowe z ochroną danych)? Odpowiedź jest bez wątpienia twierdząca, ponieważ:

Konstruktorzy kart procesorowych zaproponowali kilka dodatkowych mechanizmów zwiększających bezpieczeństwo. Jednym z nich jest wprowadzenie nieliniowego adresowania pamięci przez procesor. Komórki pamięci są adresowane nie po kolei, jak ma to miejsce zwykle, lecz w kolejności wyznaczonej przez skomplikowany, tajny algorytm zaszyty w procesorze. W efekcie nawet udana próba dostania się bezpośrednio do pamięci karty (niewątpliwie związana ze zniszczeniem karty) nie daje możliwości odczytania jej zawartości, a dokładniej poprawnego zinterpretowania wyników.

Oczywiście poprawa bezpieczeństwa kart prowokuje włamywaczy do poszukiwania sposobów ominięcia wprowadzonych zabezpieczeń. Pojawiły się różne techniki wprowadzania kart w stan niestabilny, w którym nie można poprawnie realizować funkcji ochrony danych. Najczęstszym sposobem okazało się manipulowanie napięciem zasilającym kartę (zbyt wysokie napięcie niszczyło część układu). Konstruktorzy zidentyfikowali to zagrożenie i wyposażyli karty procesorowe w czujniki napięcia wykrywające część nieprawidłowości i blokujące kartę w takiej sytuacji.

Skoro do ochrony danych zawartych na karcie wykorzystano tak zaawansowaną technikę, nasuwa się kolejne pytanie: czy karty procesorowe są w stanie robić coś więcej niż tylko przechowywać bezpiecznie dane. Odpowiedź na nie znajdzie czytelnik w rozdziale poświęconym programowalnym kartom procesorowym (zob. p. 2.1.5).


next up previous contents
Next: Karty procesorowe z koprocesorem kryptograficznym Up: Rodzaje kart Previous: Karty pamięciowe z ochroną   Spis tresci
Janina Mincer-Daszkiewicz 2001-11-21