Technologie podpisu elektronicznego

Algorytm RSA

W 1977 roku został opracowany algorytm RSA (nazwa od nazwisk twórców Rivest, Shamir, Adleman). Jest to algorytm asymetryczny, którego złożoność opiera się na trudności faktoryzacji dużych liczb złożonych. Z czasem stał się jednym z najpopularniejszych algorytmów asymetrycznych i służyć może zarówno do szyfrowania informacji jak i do tworzenia podpisów elektronicznych. Wbrew pozorom RSA działa w bardzo prosty sposób.

W pierwszym kroku wybieramy dwie losowe duże liczby pierwsze p oraz q, najlepiej podobne w długości bitowej, jednak odległe w wartości. Następnie należy obliczyć n= p*q oraz þ= (p-1)*(q-1). Trzeci krok polega na wybraniu liczby e, takiej, że 1<e< þ oraz względnie pierwszej z þ. Największym wspólnym dzielnikiem liczb względnie pierwszych jest 1. Ostatni, czwarty krok jest najtrudniejszy, gdyż należy w nim znaleźć liczbę d odwrtoną do e modulo þ, e = d-1 mod þ. Otrzymana w ten sposób para liczb (n, e) jest kluczem publicznym, natomiast para (n, d) jest kluczem prywatnym. Operacje szyfrowania oraz deszyfrowania wyglądają następująco, c = me mod n oraz m = cd mod n.

W przypadku operacji podpisywania dokumentów ostatnie kroki zostają zamienione kolejnością. Ponieważ klucz prywatny przechowywany jest pod wyłączną kontrolą podpisującego, służy on do szyfrowania danych. Klucz publiczny, z racji bycia ogólnie dostępnym, służy do deszyfrowania i upewnienia się, iż tylko odpowiednia osoba mogła skorzystać z klucza prywatnego.

Funkcje skrótu

Funkcją skrótu jest jednokierunkowe przekształcenie matematyczne zamieniające ciąg bitów dowolnej długości w inny ciąg bitów o zadanej wielkości (np. 128 czy 192 bity). Dobra kryptograficznie funkcja skrótu powinna spełniać trzy podstawowe założenia:

  • brak możliwości wygenerowania dwóch wiadomości o takim samym skrócie. (Z czysto matematycznego punktu widzenia jest to niewykonalne. Jeśli wyjście funkcji ma 128 bitów oznacza to, że biorąc 2128+1 różnych stanów wejściowych jakiś wynik na pewno się powtórzy)
  • brak możliwości wygenerowania dwóch wiadomości o takim samym skrócie, czyli brak tzw. kolizji
  • brak możliwości odtworzenia danych wejściowych na podstawie skrótu

                Jedną z najpopularniejszych rodzin funkcji skrótu jest MD (Message Digest). W 1991 roku powstała funkcja MD5, która generuje 128 bitowy skrót. Ponieważ w 2004 roku został znaleziony sposób na generowanie kolizji, nie jest już ona polecana do użytku w zastosowaniach wymagających wysokiego poziomu bezpieczeństwa.

Aktualnie w podpisie elektronicznym wykorzystywana jest funkcja SHA-1 (Secure Hash Algorithm) zaprezentowana w 1995 roku. Generuje ona 160 bitowy skrót wiadomości o maksymalnym rozmiarze 264 bitów. W budowie jest podobna do MD5.

W 2001 roku zaprezentowana została rodzina funkcji SHA-2 (SHA-224, 256, 384, 512). Liczby w nazwie odnoszą się do długości generowanego skrótu. Są one uznawane za jedne z najbezpieczniejszych funkcji skrótu.

Proces złożenia i weryfikacji podpisu elektronicznego

W pierwszym kroku obliczany jest skrót dokumentu przy pomocy funkcji SHA-1. Następnie skrót ten przesyłany jest do karty kryptograficznej. Tam wykonywane jest szyfrowanie tego skrótu wg algorytmu RSA przy pomocy klucza prywatnego zapisanego na owej karcie. Aby ta operacja została wykonana użytkownik musi się uwierzytelnić do karty kryptograficznej kodem PIN. Tak wygenerowane dane odsyłane są do komputera i programu składającego podpis i dołączane do oryginalnego dokumentu. Dodatkowo do dokumentu oraz zaszyfrowanego skrótu dołączany zostaje certyfikat zawierający dane osoby składającej podpis oraz jej klucz publiczny.

 

 

Rys. 1. Struktura podpisu elektronicznego wraz z danymi

Weryfikacja polega ponownym obliczeniu skrótu z dokumentu. W następnym kroku, przy pomocy klucza publicznego rozszyfrowywany jest skrót dołączony do dokumentu. Jeśli rozszyfrowany skrót jest równy obliczonemu skrótowi, wtedy weryfikacja jest pozytywna.  

Bezpieczeństwo podpisu elektronicznego

W ustawie o podpisie elektronicznym określona jest maksymalna ważność certyfikatu kwalifikowanego, która wynosi 2 lata. Po tym czasie certyfikat staje się nieważny i podpisy złożone po upłynięciu terminu ważności stają się automatycznie weryfikowane negatywnie. Możliwe jest także unieważnienie lub zawieszenie certyfikatu, następuje ono na prośbę użytkownika np. w przypadku poznania przez osoby niepowołane kodu PIN. Fakt ten zostaje odnotowany i opublikowany na tzw. liście CRL (certificate revocation list). Listę taką publikuje i uaktualnia codziennie na swoich stronach każdy kwalifikowany urząd certyfikacji.

Bezpieczeństwo kryptograficzne

Algorytm RSA jest powszechnie znany i jego wady są bardzo dokładnie opisane. Oparty jest on o problem faktoryzacji dużych liczb, dlatego jedynym zabezpieczeniem przed odkryciem klucza prywatnego jest złożoność obliczeniowa. Na dzień dzisiejszy największym kluczem rozłożonym na czynniki pierwsze jest klucz 768 bitowy. W Polsce stosowane są klucze 1024 bitowe, co może wydawać się niewielką różnicą, jednak zapewnia ona odpowiedni margines bezpieczeństwa. Następną minimalną wartością długości klucza będzie 2048 bitów lub nawet więcej. Aktualnie stosowana funkcja SHA-1 także jest uznawana za bezpieczną. Są co prawda znane próby ataku, jednak posiadają one zbyt dużą złożoność obliczeniową, żeby można było mówić o realnym zagrożeniu dla bezpieczeństwa. Poza tym coraz powszechniej stosowana jest rodzina funkcji SHA-2, więc w razie zagrożenia dla SHA-1 może ona zostać skutecznie zastąpiona bezpieczniejszym algorytmem.

Użycie kombinacji algorytmów RSA oraz SHA-1 zabezpiecza skutecznie przed ingerencją w podpisany dokument. Każda jego modyfikacja spowoduje zmianę skrótu co doprowadzi do negatywnej weryfikacji podpisu. Żeby skutecznie podrobić podpis należało by wygenerować drugi identyczny skrót, co jest na dzień dzisiejszy praktycznie niewykonalne. Poza tym, nie wystarczy przełamanie tylko jednego zabezpieczenia. Istotne jest na przykład, aby drugi ‘podrobiony’ dokument niewiele różnił się od oryginału. W końcu umowa kupna-sprzedaży opiewająca na 1 000 000 zł jest bardzo łatwa do rozróżnienia od losowego ciągu bitów. Nie wydaje się jednak aby udało się przygotować drugi taki dokument różniący się tylko kwotą a posiadający identyczny skrót. Z resztą, jeśli nawet będziemy posiadać dwa dokumenty o takim samym skrócie, trzeba te skróty podpisać. Do tego niezbędna jest znajomość klucza prywatnego, którego odtworzenie wymaga ogromnej złożoności obliczeniowej.

Inną możliwością na poznanie klucza prywatnego jest zaatakowanie karty kryptograficznej, na której jest on przechowywany. Dlatego zarówno karty jak i urządzenia HSM służące do generowania i przechowania kluczy infrastruktury, kluczy urzędów certyfikacji, kluczy Root posiadają certyfikaty bezpieczeństwa. Aktualne rozporządzenie w sprawie warunków technicznych i organizacyjnych wyszczególnia trzy takie certyfikaty: Common Criteria, FIPS PUB 140-2 oraz ITSEC v1.2 na poziomach odpowiednio EAL4, poziom 3, E3 lub wyższe. Spełnienie tych wymagań praktycznie uniemożliwia wydobycie klucza prywatnego nawet przy fizycznym dostępie do karty i np. próbie ataków poboru mocy.

IMM
Instytut Maszyn Matematycznych
2014 Instytut Maszyn Matematycznych. Prawa autorskie zastrzeżone.