Smart card (inteligentna karta; nie jest mi znany dobry polski odpowiednik tego określenia, dlatego też dalej będę mówił o niej po prostu jako o karcie) jest kawałkiem plastiku o rozmiarach karty kredytowej z wbudowanym układem elektronicznym. Układ ten umożliwia zarówno przechowywanie danych, jak i wykonywanie obliczeń. To uodparnia informacje na ataki - karta nie jest zależna od potencjalnie niebezpiecznych i/lub niezabezpieczonych zasobów zewnętrznych. Smart cards stosowane są więc często tam, gdzie zachodzi potrzeba ochrony informacji przed niepowołanym dostępem.
W szczególności mogą być wykorzystywane do następujących celów:
Przewiduje się, że w niedalekiej przyszłości karty te wyprą tradycyjne karty z paskiem magnetycznym. Smart cards pozwalają na zapisanie o wiele większej ilości danych, i to danych o krytycznym znaczeniu - jest więc istotne, by były wystarczająco odporne i bezpieczne, by je przechowywać. Budziło to zawsze wiele kontrowersji.
Schemat budowy karty przedstawiono na rysunku.
Konstrukcja kart jest określona przez standardy ISO 7810, 7816/1, 7816/2 i 7816/4. Smart card składa się w ogólności z trzech części:
Obwód drukowany spełnia wymogi standardu ISO 7816/3 i zawiera pięć złącz, za pośrednictwem których urządzenia zewnętrzne komunikują się z kartą. Jest hermetycznie zamocowany w szczelinie umieszczonej na karcie, wypełniony przewodnikiem i zabezpieczony dodatkowo warstwą plastiku (złącza wyprowadzone są na zewnątrz).
Układ elektroniczny karty składa się z mikroprocesora, pamięci ROM, pamięci RAM (dynamicznej, tzn. nie przechowującej danych po odcięciu zasilania) oraz EEPROM, pełniącej rolę kontenera na dane. Rozmiar tych danych jest ograniczony przede wszystkim przez wymiary układu: mikrokontrolery są produkowane z łatwo łamliwego krzemu, a więc muszą mieć bardzo małe rozmiary (rzędu kilku milimetrów), aby uniknąć zniszczenia, gdy karta jest wyginana.
Co więcej, prędkość przepływu danych między mikrokontrolerem karty a urządzeniem ją akceptującym (Card Acceptor Device; CAD) jest ograniczona do 9600 bps. Transmisja danych odbywa się przy pomocy szeregowego łącza dwukierunkowego o specyfikacji określonej w standardzie ISO 7816/3 i kontroluje ją mikroprocesor karty. Polecenia i dane wejściowe wysyłane są do układu, a ten odpowiada słowami stanu i danymi wyjściowymi. Transmisja odbywa się w trybie half-duplex, czyli tylko w jedną stronę naraz. Taka realizacja powoduje, że karty są odporne na bombardowanie ich dużymi ilościami danych.
Ponieważ smart cards są tak zaprojektowane, aby zminimalizować ryzyko fizycznego uszkodzenia karty, wymagają do działania urządzenia zewnętrznego. Urządzenie takie zapewnia zasilanie, może pełnić rolę urządzenia wejścia-wyjścia itp. Wiąże się to z pewnym ryzykiem - urządzeniom takim nie zawsze można ufać.
Każda karta zawiera system operacyjny, zapewniający dostęp logiczny do pamięci karty. Dane systemowe mogą obejmować identyfikator producenta, unikatowy numer seryjny, typ karty itd. Co więcej, mogą zawierać również klucze: klucz producenta, klucz produkcji (KF), klucz osobisty (KP). Informacje te nie powinny być dostępne. Ponieważ jednak trzeba je kiedyś zapisać, karta po wyprodukowaniu przechodzi przez cykl życia, który obejmuje kilka faz. Omówimy je pokrótce.
Tę fazę wykonuje producent. Układ elektroniczny jest wytwarzany i testowany; generowany jest unikatowy klucz produkcji (na podstawie głównego klucza producenta), aby zapobiec manipulacjom przed umieszczeniem go na karcie. Poza tym zapisywane są inne dane specyficzne dla producenta. Kiedy układ jest gotów, producent przekazuje go dostawcy.
W tej fazie układ montowany jest na karcie (która zwykle oznaczona jest symbolem dostawcy). Następuje podłączenie złącz, cała karta jest testowana. Dla zwiększenia bezpieczeństwa, klucz producenta zastępowany jest przez klucz osobisty (KP), po czym ustawiana jest permanentna blokada VPER. Oznacza ona koniec fazy dostawcy. Od tej chwili bezpośredni fizyczny dostęp do pamięci karty nie jest możliwy; dozwolony jest tylko dostęp logiczny. Dane systemowe przestają być dostępne.
Inicjalizowana jest struktura plików na karcie; zapamiętywany jest PIN (Personal Identification Number) i kod odblokowujący PIN. Na koniec ustawiana jest blokada VUTIL, co wskazuje, że karta jest w fazie użytkowania.
Karta jest używana zgodnie z jej przeznaczeniem.
Ta faza może zostać zainicjowana na dwa sposoby. Po pierwsze, aplikacja może ustawić na głównym (lub dowolnym) pliku blokadę unieważniającą, co spowoduje uniemożliwienie zapisu przez system operacyjny karty (dla celów analizy system może pozostawić możliwość odczytu). Druga możliwość ma miejsce, gdy zarówno PIN, jak i kod odblokowujący PIN zostaną zablokowane. Blokuje to wszystkie operacje na karcie; nadaje się wtedy do wyrzucenia.
Poniższa tabela zawiera podsumowanie operacji możliwych w poszczególnych fazach.
Operacje/Fazy |
Produkcja |
Dostawca |
Ustawienia osobiste |
Użytkowanie |
Unieważnianie |
Dostęp do pamięci |
Adresowanie fizyczne |
Adresowanie logiczne |
|||
System |
Niedostępny |
||||
Produkcja (klucze) |
Zapis KF |
Zapis KP |
Niedostępne |
||
Produkcja (dane) |
Odczyt, zapis, usuwanie |
Odczyt |
Odczyt |
||
Katalogi |
Odczyt, zapis, usuwanie |
Zależnie od poziomu zabezpieczeń |
|||
Dane |
Odczyt, zapis, usuwanie |
Zależnie od poziomu zabezpieczeń |
|||
Opcjonalny kod |
Odczyt, zapis, usuwanie |
Niedostępny |
Jeśli chodzi o przechowywanie danych, można myśleć o karcie jak o napędzie dysków, w którym pliki zorganizowane są w strukturę hierarchiczną z katalogami. Podobnie jak w Uniksach i DOS, mamy katalog główny (nazywany tu plikiem głównym (MF)), który może zawierać pliki (tu pliki elementarne (EF)) oraz katalogi (zwane plikami dedykowanymi (DF)). Różnica między tym modelem a uniksowym polega na tym, że każdy węzeł drzewa katalogów, a nie tylko liście, może zawierać dane.
Plik główny, oprócz swojego własnego nagłówka, zawiera nagłówki wszystkich jego bezpośrednich potomków w drzewie plików. Plik dedykowany jest funkcjonalną grupą plików - również zawiera własny nagłówek i nagłówki potomków. Plik elementarny to po prostu nagłówek + dane.
Sposób fizycznej organizacji danych w plikach nie jest ustalony i zależy od producenta. Czasem pamiętana jest po prostu długość pliku i aktualna odległość od jego początku, czasem - jak w przypadku GSM - dane zorganizowane są w rekordy o stałej lub zmiennej długości. W każdym jednak przypadku plik trzeba wybrać przed wykonaniem na nim jakichkolwiek operacji. Operacja ta odpowiada otwarciu pliku.
Mechanizmy wyboru i dostępu zapewnia system operacyjny; są uaktywniane po dostarczeniu karcie zasilania przez urządzenie akceptujące. Wybór odbywa się przez nawigację w drzewie plików; z każdego pliku można przejść albo do pliku nadrzędnego (MF lub DF), albo do pliku podrzędnego (DF lub EF), albo do pliku na tym samym poziomie.
Kiedy plik zostanie wybrany, można odczytać jego nagłówek, w którym zawarte są informacje o pliku takie jak numer identyfikacyjny, typ, opis, rozmiar itd. W szczególności zawiera on też atrybut pliku, który określa prawa dostępu i bieżący stan. Od tej informacji zależy możliwość dostępu do pliku.
Kontrolowany jest głównie dostęp do plików. System kontroli dostępu opiera się na wprowadzaniu numerów PIN i zarządzaniu nimi.
Zasadniczo dostęp do pliku może być uwarunkowany na jeden z pięciu sposobów. System operacyjny może udostępniać ich więcej, w zależności od rodzaju używanej aplikacji.
Poziomy te nie są hierarchiczne - poprawne wprowadzenie wartości CHV2 nie oznacza umożliwienia dostępu pliku na poziomie CHV1.
Numery PIN są zwykle zapamiętywane w oddzielnych plikach elementarnych, EFCHV1 i EFCHV2. Na te pliki mogą zostać nałożone ograniczenia, co uniemożliwi zmianę PIN-ów. Normalnie można je zmienić wydając odpowiednie polecenie i wprowadzając nową i starą wartość. W większości systemów operacyjnych wprowadzenie niepoprawnej wartości PIN pewną ustaloną ilość razy z rzędu (liczba ta jest różna w różnych systemach) spowoduje zablokowanie numeru PIN.
W tym momencie wszystkie operacje wymagające PIN zostają zablokowane. Odblokowanie wymaga poprawnego wprowadzenia tego numeru oraz numeru odblokowującego. Jeśli i numer odblokowujący zostanie pewną ilość razy wprowadzony niepoprawnie, również on jest blokowany i nie można go przywrócić - jest to blokada nieodwracalna. Niektóre systemy blokują wtedy całą kartę, aby zapobiec dalszym atakom.
Implementacja ochrony i blokowania PIN-ów realizowana jest przez utrzymywanie dla każdego numeru CHV dwóch liczników. Zaprojektowana jest w taki sposób, aby uniknąć błędów w zapisywaniu lub kasowaniu. Każdy numer może być w jednym z trzech stanów:
Ponieważ układ elektroniczny na karcie zdolny jest wykonywać obliczenia, możliwe jest wykonywanie off-line transakcji i weryfikacji. Tak np. karta i urządzenie akceptujące mogą wzajemnie się zidentyfikować; co więcej, dane i kod na karcie są zaszyfrowane, co wielokrotnie zmniejsza możliwość jej podrobienia.
Tradycyjne metody potwierdzania tożsamości obywateli za pomocą dokumentów tożsamości takich jak dowody osobiste, paszporty, wizy, nie są wiarygodne. Łatwo jest je podrobić, szczególnie przy wysokiej obecnie dostępności zaawansowanych technologii, które na tego typu manipulacje pozwalają.
Smart cards są bodaj najskuteczniejszym dotychczas wymyślonym rozwiązaniem tego problemu. Na karcie można zapamiętać niezbędne informacje, a także fotografie. Ustalając odpowiednie poziomy zabezpieczeń dla plików, można wymusić, by tylko upoważnione do tego organa - policja, służby rządowe itp. - mogły je odczytać. Co więcej, można wykorzystać technologię biometryczną - zapamiętywać unikalne informacje biometryczne, takie jak odcisk palca, w postaci cyfrowej bezpośrednio na dowodzie tożsamości. Wtedy skaner biometryczny i karta stanowią tandem pozwalający z praktyczną pewnością stwierdzić, czy sprawdzana osoba jest tym, za kogo się podaje. Stosowane procedury są izomorficzne z tymi używanymi w standardowym systemie identyfikacji na podstawie dokumentów papierowych, z tą różnicą, że rolę oczu sprawdzającego pełni urządzenie CAD i ewentualnie skaner biometryczny.
Tego typu systemy są już stosowane: w niektórych liniach lotniczych (np. w amerykańskich Continental Airlines) karty elektroniczne pełnią rolę biletów (zawierających informacje takie jak numer lotu pasażera, jego dane osobowe, dane bagażu itd.), co ułatwia obsługę bagażu i jest jednym ze środków zapobiegania terroryzmowi.
Paul i Lance jako pierwsi (praca "BITS: A Smartcard Protected Operating System", 1994) zaproponowali użycie kart elektronicznych jako narzędzia wspomagającego bezpieczeństwo systemów komputerowych. W istocie był to powód, dla którego smart cards powstały.
Jak ważna jest to kwestia, nie trzeba chyba tłumaczyć. Szczególnie widoczne są zalety kart elektronicznych w sytuacjach, kiedy włamywacz ma fizyczny dostęp do komputera; wtedy zabezpieczenia wbudowane w systemy okazują się niewiele warte.
BITS jest skrótem od "Boot Integrity Token System". Idea polega na tym, by uwierzytelnienie przy użyciu karty uczynić integralną częścią procesu uruchamiania komputera; w szczególności można startować go bezpośrednio z karty, za pomocą specjalnego sprzętu. Wymaga to dwóch potwierdzeń: użytkownik uzyskuje dostęp do karty za pomocą hasła; komputer wczytuje z karty odpowiednie dane, po czym inicjuje sekwencję startową.
Karty znajdują również zastosowanie w normalnych systemach operacyjnych. Można na nich przechowywać sumy kontrolne krytycznych aplikacji (np. /bin, /sbin w Unixach) - to skuteczna i efektywna metoda ochrony przed wirusami. Dla Linuxa istnieje projekt MUSCLE (Movement for Use of Smart Cards in Linux Environment).
Większość systemów na kartach umożliwia szyfrowanie przesyłanych danych. Celem ataków bywają algorytmy szyfrowania, odpowiednie klucze, jak również same karty.
Wszystkie dane zmienialne (w jakiejkolwiek fazie życia karty) są zapisane w pamięci EEPROM na karcie. Ponieważ operacje zapisu na EEPROM mogą ulegać anomaliom przy niestandardowych napięciach, można zmienić informację zwiększając lub zmniejszając napięcie podawane do mikrokontrolera na złączach.
Tak np. znana jest właściwość mikrokontrolera PIC16C84 polegająca na tym, że bit bezpieczeństwa można wyzerować, kasując pamięć metodą obniżenia napięcia VCC do poziomu VPP - 0.5 V. Innym przykładem jest procesor DS5000; czasem krótkotrwałe obniżenie napięcia może prowadzić do utraty bezpieczeństwa bez utraty danych zapisanych na karcie.
Niektórzy producenci próbowali wbudowywać czujniki napięcia w karty; niestety często podnosiły one fałszywe alarmy, więc rozwiązanie to jest rzadko stosowane.
Są dość typowe i polegają na usunięciu układu elektronicznego z karty. Można to zrobić nawet ostrym nożem, usuwając wierzchnią warstwę plastiku; po czym potraktować kartę stężonym kwasem azotowym (>98% HNO3) i przemyć acetonem, aż ukaże się warstwa krzemu.