Czy już czas na podpis?

  • Patryk Królikowski,

Jak to działa?

Weryfikacja podpisu elektronicznego

Aby lepiej ogarnąć meandry podpisu elektronicznego, spójrzmy na niego i tworzące go elementy z technicznego punktu widzenia. Podpis elektroniczny jest tworzony na podstawie infrastruktury PKI oraz wielu standardów, m.in. X.509, który określa zasady używania algorytmów kryptograficznych, formaty certyfikatów klucza publicznego czy ścieżkę certyfikacji. Do tego dochodzą jeszcze formaty podpisu elektronicznego.

Trzeba zaznaczyć, że ustawodawca nie wprowadził jednego formatu podpisu elektronicznego, a w zamian dał możliwość wyboru. To niestety spowodowało, że każde z działających na rynku kwalifikowanych centrów certyfikacji wykorzystywało inny format, który nie był w żaden sposób kompatybilny z pozostałymi. Tymi formatami były CMS (Cryptographic Message Syntax - z RFC 3852) wywodzący się z PKCS#7 (Public Key Cryptography Standards - RFC 2315). Był też sam PKCS#7. Jest również XAdES (XML Advanced Electronic Signature). Był SDOC opracowany na potrzeby systemu używanego przez Sigillum.

Na szczęście w sierpniu tego roku działające na rynku polskim kwalifikowane centra certyfikacji powołały wspólną grupę roboczą, której zadaniem jest opracowanie jednolitego formatu podpisu elektronicznego opartego na XAdES.

Ale wróćmy do meritum. Podpis musi zapewniać odpowiedni poziom bezpieczeństwa i gwarancji, że nie doszło do jego sfałszowania. Z tego względu i wielu innych pomniejszych przyczyn w implementacji podpisu elektronicznego zastosowanie znajduje kryptografia asymetryczna. Wykorzystuje się tutaj parę kluczy - publiczny i prywatny oraz certyfikat, który jest z nimi nieodłącznie związany. Zdefiniowane one zostały w standardzie X.509. Przy okazji warto zaznaczyć, że dość często popełniany jest błąd polegający na tym, że myli się certyfikat z podpisem elektronicznym. Są to zupełnie różne rzeczy. Certyfikat służy odbiorcy do weryfikacji podpisu.

Jak zatem przebiega proces złożenia podpisu elektronicznego?

W pierwszej kolejności dokument, który będzie podpisywany, zostaje "potraktowany" funkcją skrótu (np. SHA1). Pozwala to otrzymać unikatowy identyfikator cyfrowy dokumentu. Identyfikator ten ma zawsze stałą długość bez względu na to, czy podpisywana jest książka czy polecenie przelewu. Długość zależy tylko i wyłącznie od rodzaju zastosowanego algorytmu. W przypadku MD5 jest to wartość 16-bajtowa, SHA1 - 20-bajtowa, a SHA2-256 - 32-bajtowa. Zaleca się używanie przynajmniej SHA1 ze względu na istniejący od ponad dwóch lat tzw. proof of concept kolizyjności MD5 (tak na marginesie - w SHA1 również może dojść do kolizji - na razie teoretycznie - prace nad przeprowadzeniem dowodu trwają).

Dzięki wykorzystaniu funkcji skrótu jakakolwiek późniejsza zmiana dokumentu powoduje, że zmienia się również wynik działania algorytmu haszującego. W dalszej kolejności ów identyfikator jest szyfrowany przy użyciu klucza prywatnego, do którego ma dostęp jedynie składający podpis. Klucz ten przechowywany jest najczęściej na karcie inteligentnej, której nigdy nie opuszcza. Proces szyfrowania i podpisywania przebiega wewnątrz karty, a jedynie rezultat tego działania "wydostaje" się na zewnątrz.

Na tym etapie możemy powiedzieć, że dokument został podpisany elektronicznie. No tak, ale jedyną rzeczą jaką mamy jest dokument i jego zaszyfrowany skrót. Skąd pewność, że to właśnie my podpisaliśmy dokument i jak odszyfrować wartość skrótu haszującego. Tutaj właśnie przydaje się certyfikat, który jest dołączany do podpisanego dokumentu. Dzięki certyfikatowi uzyskujemy powiązanie osoby podpisującej z dokumentem. Certyfikat taki zawiera klucz publiczny, nasze dane, informacje o CA, które wystawiło certyfikat, polityce certyfikacji oraz czas ważności certyfikatu.

Znaczenie tych elementów musimy od razu wyjaśnić. Przede wszystkim: klucz publiczny służy do weryfikacji podpisu. Mając klucz publiczny powiązany z kluczem prywatnym, możemy sprawdzić, czy dokument nie został w tym czasie zmieniony. Klucz publiczny, jak sama nazwa wskazuje, może być ogólnie udostępniony i nie wiąże się z tym żadne zagrożenie. Nie jest bowiem możliwe odtworzenie na jego podstawie klucza prywatnego. Sam klucz publiczny to nie wszystko.

Do certyfikatu dołączane są nasze dane, co pozwala na powiązanie podpisu z osobą składającego. Do tych danych musimy mieć zaufanie. Dlatego też sam certyfikat wydawany jest przez Centrum Certyfikacji. Jest to podmiot, który przed wpisaniem do certyfikatu danych podpisującego sprawdza jego tożsamość i dopiero po upewnieniu się, że my to my umieszcza je w certyfikacie.

Certyfikat posiada jeszcze jedną cechę. Jest ważny tylko przez z góry określony czas, przeważnie przez rok lub dwa. Według polskiego prawa dwa lata to maksymalny okres, na który może zostać wystawiony certyfikat kwalifikowany. Po upłynięciu tego czasu konieczne jest jego odnowienie. Skoro mowa o czasie, to trzeba wspomnieć o listach CRL (Certificate Revocation List). Listy te prowadzone są przez centra certyfikacji i zawierają listę numerów seryjnych certyfikatów, które zostały unieważnione lub wygasły. Listy te służą bezpieczeństwu posługiwania się podpisem elektronicznym. Jeżeli np. karta inteligenta zawierająca nasz klucz prywatny i certyfikat zostanie skradziona, wówczas możemy zgłosić ten fakt do CA, które wprowadzi na listę CRL numer seryjny naszej zguby. Taki wpis to sygnał dla osoby weryfikującej, że certyfikatowi nie można ufać.

Istnieją dwa rodzaje wpisów na listy CRL. Pierwsze stanowią certyfikaty unieważnione - takich już nigdy nie będzie można używać. Drugie to certyfikaty zawieszone - te mogą być użyte po ich odwieszeniu. Na listę certyfikatów zawieszonych trafiają przeważnie takie, co do których nie mamy pewności, że stały się obiektem nieuczciwych działań (np. po dwóch dniach okazuje się, że karta inteligentna nie została skradziona, a została w drugiej marynarce).

Zasady publikowania list CRL, wydawania certyfikatów oraz opis zabezpieczeń technicznych i organizacyjnych określane są w polityce certyfikacji, która różni się w zależności od specyfiki Centrum Certyfikacji. Posługując się identyfikatorem polityki zawartym w certyfikacie, możemy dowiedzieć się, jakie dokładnie są jej warunki.

Pora teraz na proces weryfikacji. Osoba, która otrzymuje od nas dokument podpisany elektronicznie, korzysta z dołączonego do niego certyfikatu oraz zaszyfrowanego skrótu (rezultatu działania algorytmu haszującego). Najpierw ponownie tworzony jest skrót kryptograficzny dokumentu. Następnie, za pomocą klucza publicznego zawartego w certyfikacie, odszyfrowany zostaje skrót dołączony do dokumentu. Wartości obydwu skrótów są porównywane i jeżeli się zgadzają możemy uważać, że dokument nie został zmodyfikowany.

Teraz trzeba jeszcze sprawdzić czy certyfikat jest ważny i nie znajduje się na liście CRL. W tym celu łączymy się z Centrum Certyfikacji - jeżeli certyfikatu nie ma na liście certyfikatów zawieszonych lub unieważnionych - bingo! Wydaje się, że to sporo pracy dla sprawdzającego, ale tak nie jest. W praktyce proces weryfikacji przejmowany jest przez specjalizowane oprogramowanie, które również musi spełniać wymogi ustawy o podpisie elektronicznym.