CryptoTech - Strona główna Fundusze UE Certyfikat ISO 9001: 2000 Polskie Centrum Badań i Certyfikacji
Strona główna : Test 1500 podpisów z użyciem karty CryptoCard multiSIGN : Mit 1500 podpisów
Archiwum
Mit 1500 podpisów
Jak weryfikować
CryptoCard multiSIGN


Mit 1500 podpisów z użyciem karty elektronicznej

W ostatnim czasie, przy okazji różnych konferencji dotyczących zagadnień związanych z problematyką podpisu elektronicznego, a szczególnie jego bezpiecznej wersji, potocznie zwanej "podpisem kwalifikowanym", zaczęła żyć własnym życiem oczywista plotka o charakterze mitu, jakoby karty elektroniczne nie nadawały się do roli komponentu technicznego do składania podpisu elektronicznego, zwłaszcza dla składania podpisów masowych. Mit ten pierwotnie wygłosił szanowany w środowisku IT profesor, co dodatkowo nadało mu cechę wiarygodności i oparta na tym "micie 1500 podpisów" plotka jest coraz częściej powtarzana i co gorsza, podejmowane są na jej podstawie decyzje biznesowe dotyczące stosowania kart elektronicznych! Ponieważ przysłowie mówi, iż "w każdej plotce jest ziarno prawny", postanowiliśmy przedstawić fakty oraz eksperymentalnie obalić mit 1500 podpisów.

Trudno precyzyjnie określić czym kierował się oraz jakich technologii używał wspomniany mówca powołujący się na własne eksperymenty wykonywane wraz z grupą studentów, na podstawie, których stwierdził stanowczo, iż karty elektroniczne nie nadają się do masowego podpisywania (np. faktur elektronicznych) gdyż "ulegają zniszczeniu/zużyciu po złożeniu 1500 podpisów".

Firma CryptoTech i jej konsultanci mający już blisko 10 letnie doświadczenie w projektowaniu i budowaniu systemów IT wykorzystujących karty elektroniczne, nie zauważyli takiego zjawiska oraz nawet nie znajdują dla niego podstaw teoretycznych.

Jedyne, faktycznie występujące zjawisko, podobne w skutkach do głoszonego "mitu 1500 podpisów" związane jest z konstrukcją typowych kart elektronicznych, która zasadniczo nie odbiega od ogólnego modelu mikrokomputera, czyli zawiera podstawowe składniki takiej jak:

  • mikroprocesor (8, 16, 32 bity),
  • interfejsy komunikacyjne wewnętrzne i zewnętrzne układu karty,
  • pamięć stałą ROM (lub FLASH ROM) zawierającą podstawowe oprogramowanie karty - system operacyjny,
  • pamięć RAM - niezbędną do wykonywania programów przez mikroprocesor (jej wielkość jest bardzo ograniczona, gdyż jest ona "technologicznie kosztowna", tzn. zajmują bardzo dużo powierzchni układu scalonego; typowo jest to od 256B to 4kB),
  • pamięć EEPROM - przeznaczoną na przechowywanie danych i aplikacji użytkownika, parametrów konfiguracyjnych i innych trwałych informacji, które powinny być zapamiętane po wyjęciu karty z czytnika, czyli wyłączeniu zasilania układu karty elektronicznej.

Właśnie ta ostatnia pamięć jest używana do przechowywania wszelkich danych użytkownika (np. klucze kryptograficzne, certyfikaty, itp.). Pamięć ta jest również wykorzystywana przez sam system operacyjny do przechowywania informacji niedostępnych wprost dla użytkownika, lecz wpływających na sposób działania karty i jej systemu operacyjnego. Dane zapisywane w tej pamięci pozostają tam praktycznie trwale do czasu ich zmiany (producenci deklarują trwałości >10 lat) i można je bez ograniczeń czytać. Jednak zapis tych informacji (w pamięci EEPROM) obarczony jest pewną wadą wynikającą z konstrukcji komórki pamięci EEPROM - każdy zapis powoduje pewne nieodwracalne zmiany w tej komórce. Potocznie nazywa się to "wycieraniem komórki EEPROM". Efekt ten odpowiedzialny jest w końcu za utratę możliwości zapisu do tej komórki - jej uszkodzenie. Efekt ten należy uwzględniać przy projektowaniu systemów bazujących na kartach elektronicznych. Dodatkowo nowoczesne systemy operacyjne kart zawierają różne mechanizmy redukujące negatywny wpływ "efektu wycierania" na realne aplikacje i zastosowania kart.

Wracając do "mitu 1500 podpisów", warto zauważyć iż podstawą operacji składania podpisu jest odczyt klucza prywatnego z pamięci EEPROM przez procesor/kryptoprocesor karty i wykonanie na tym kluczu i danych podpisywanych (właściwe skrótu tych danych) szeregu operacji matematycznych. W efekcie tych danych na zewnątrz układu karty, przez jej interfejs komunikacyjny zwracany jest wynik tych operacji - podpis cyfrowy (zwykle z użyciem algorytmu RSA). W typowym przypadku cały ten proces NIE WYKONUJE ŻADNYCH operacji zapisu do pamięci EEPROM, czyli nie pojawia się zjawisko "wycierania EEPROM". Oznacza to w praktyce iż włożona do czytnika karta, realizująca podpis cyfrowy (np. RSA 1024) będzie realizowała go WIECZNIE - przynajmniej do czasu jej awarii, gdyż zachodzące w trakcie podpisywania zjawiska nie powodują żadnej zauważalnej degradacji parametrów układu elektronicznego karty. Potwierdzeniem tego mogą być szeroko używane w Europie urządzenia do oznaczania czasem używające... wielu równolegle pracujących kart elektronicznych do generowania podpis w ramach znacznika czasu (takie rozwiązanie wymuszone zostało w pewnym momencie po wprowadzeniu German Signature Act, gdy nie było na rynku odpowiednio certyfikowanych modułów HSM a dostępne były karty elektroniczne posiadające takie certyfikaty). Urządzenia ta wykonały setki tysięcy/miliony podpisów i działają nadal.

Można sobie oczywiście wyobrazić fatalne implementacje algorytmu RSA w ramach karty, które wykorzystują dla przechowywania chwilowych wyników obliczeń pamięć EEPROM lub czynią tak ze względu na bardzo małą ilość pamięci RAM dostępnej dla mikroprocesora karty. Rozwiązania takie jednak już dawno przeszły do historii i trudno znaleźć obecnie na rynku karty/układy kart kryptograficznych, którym groziłyby takie rozwiązania w systemie operacyjnym.

Jeśli by nawet przyjąć iż twórca "mitu 1500 podpisów" doświadczył zjawiska "wycierania EEPROM" to i tak nie ma podstaw by twierdzić, iż karty elektroniczne mogą wykonać tylko 1500 podpisów gdyż efekt "wycierania EEPROM" nawet w przypadku najstarszych (już nie używanych) kart elektronicznych objawia się po wykonaniu 100.000 zapisów pojedynczej komórki pamięci! Trudno wyobrazić sobie tak fatalny system operacyjny, który dla realizacji 1500 podpisów musiał wykonać ponad 100.000 zapisów którejkolwiek, pojedynczej komórki EEPROM! Dodatkowo należy podkreślić, że produkowane od kilku lat układy kart elektronicznych mają gwarantowaną trwałość od 500 tys. to 1 mln zapisów w normalnej temperaturze pokojowej.

Dla kompletności niniejszego wyjaśnienia musimy wspomnieć o uzasadnionym użyciu pamięci EEPROM w trakcie generowania podpisu cyfrowego. Składanie popisu (zwłaszcza podpisu bezpiecznego) wymaga uwierzytelnienia właściciela używanego klucza prywatnego oraz umożliwienie wystąpienia wyraźnej "woli użycia klucza prywatnego", gdyż idąca za podpisem bezpiecznym odpowiedzialność powinna wzbudzić czujność każdego jego użytkownika. Z tego względu system operacyjny karty udostępnia i wymusza kontrolę dostępu do ważnych informacji, a taką ważną (prywatną) informacją jest m.in.. klucz kryptograficzny przyporządkowany do osoby. Mechanizm kontroli dostępu co do zasady podejmuje decyzje na podstawie konfiguracji danej aplikacji karty (np. aplikacji podpisu kwalifikowanego) po weryfikacji tożsamości aktualnego użytkownika karty. Najpopularniejszym mechanizmem weryfikacji tożsamości a dokładniej mechanizmem uwierzytelnienia właściciela klucza jest weryfikacja osobistego kodu PIN związanego z danym kluczem. Użytkownik musi przedstawić dla systemu operacyjnego swój osobisty kod PIN, który jest porównywany z wartością tego kodu przechowywaną w pamięci (EEPROM). Na pozór nie ma to nic wspólnego z efektem "wycierania EEPROM", jednak szczegóły mechanizm obsługi kodów PIN, zwłaszcza mechanizm kontroli jego poprawności i blokowania się po przekroczeniu założonej ilości błędnych prób, wymusza operacje zapisu podczas prezentacji kodu PIN. Oznacza to, że co prawda generowanie podpisu nie powoduje "zużywania się" komórek pamięci EEPROM, ale prezentacja kodu PIN zwykle takie zużycie wywołuje. Z tego właśnie względu większość praktycznie spotykanych na rynku kart używanych w roli komponentu technicznego posiada technologiczne ograniczenie co do ilości akcji weryfikacji kodu PIN. Ponieważ generowanie podpisu jest zwykle blokowane do czasu przeprowadzenia weryfikacji kodu PIN (czyli typowego uwierzytelnienia użytkownika karty), to w konsekwencji składanie podpisu jest związane pośrednio z zapisem pamięci EEPROM a to związane jest z "efektem wycierania się" pamięci EEPROM. Biorąc pod uwagę gwarantowaną ilość zapisów współczesnych układów kart kryptograficznych, nawet zakładając aplikację, w której kod PIN jest testowany dla każdego podpisu, praktyczna trwałość kart wykonujących podpis kwalifikowany przekracza 750.000 podpisów cyfrowych, co znacząco przewyższa potrzeby większości użytkowników systemu podpisu kwalifikowanego.

W praktyce, dla masowego podpisywania można nie przeprowadzać weryfikacji PIN dla każdego podpisu lecz weryfikację kodu PIN tylko na początku sesji podpisywania, bez jakiegokolwiek ograniczenia ilości podpisów wykonanych w ramach pojedynczej sesji. Wymaga to jednak znacznego zwiększenia ogólnego bezpieczeństwa środowiska informatycznego w jakim pracuje tak skonfigurowany komponent techniczny, co zwykle nie jest optymalne ekonomicznie. Pomijamy tu oczywisty fakt małej wydajności karty elektronicznej (około jednego podpisu na sekundę), która to wydajność ogranicza użycie karty do szybkiego podpisania setek tysięcy faktur, ale nawet karta elektroniczna może wykonać do 100 tys. podpisów na dobę.

W świetle powyższych wyjaśnień całkowitym nieporozumieniem i plotką jest twierdzenie, iż karty nie nadają się do pracy w roli komponentu technicznego do podpisywania masowego faktur. Poza bardzo małą grupą użytkowników, pragnących podpisywać setki tysięcy/miliony faktur z użyciem jednego certyfikatu, karta elektroniczna z powodzeniem może być stosowana do masowego podpisywania, przynajmniej pod względem jej trwałości. Zupełnie innym zagadnieniem, wykraczającym poza ramy niniejszego wyjaśnienia jest zagadnienie bezpieczeństwa środowiska, w którym karta realizuje takie masowe podpisywanie, zasady weryfikacji PIN (dla każdego podpisu, co określoną ilość podpisów, raz na sesję itd.).

Dla niedowiarków przygotowaliśmy praktyczny test. Proszę wejść na stronę test1500.cryptotech.com.pl, gdzie w czasie rzeczywistym można zobaczyć wyniki pracy (składania podpisów RSA 1024 bity) przez kartę elektroniczną CryptoCard multiSIGN w wersji zawierającej aplikację kwalifikowaną.

Karta elektroniczna używa wygenerowanego wewnątrz karty klucza RSA 1024bity dla którego testowy certyfikat wydało komercyjne centrum certyfikacji SZAFIR w KIR S.A. Dla obalenia "mitu 1500 podpisów" użyto karty CryptoCard multiSIGN w wersji wykorzystującej system operacyjny SetCOS 4.4.1 rev A1.

Dla rzetelności testu istotne znacznie ma cecha tej wersji systemu operacyjnego wykluczająca import kluczy RSA z zewnątrz (można je tylko wygenerować na karcie), co oznacza, że nie istnieje "kopia klucza RSA", którą można by użyć do realizacji tego podpisu z użyciem oprogramowania czy modułu HSM. Instalacja testowa generuje około 3400 podpisów na godzinę. Aby ułatwić weryfikację testowych podpisów, generowane są widomości w formacie EML (PKCS#7), który może być otworzony z użyciem standardowego programu Outlook Express jako podpisana wiadomość pocztowa. Podobne karty stosowane przez firmę CryptoTech w innych systemach wykonały do dzisiaj ponad 10 mln podpisów i pracują nadal. Test zakończony zostanie w chwili uszkodzenia karty.