
Zanim przejdziemy do kwestii tego jak testować musimy sobie odpowiedzieć na pytania czym jest i jak działa podpis kwalifikowany? Czym różni się od podpisu zaufanego? Najważniejszą częścią tej publikacji będzie odpowiedź na jak prawidłowo testować i weryfikować takie podpisy bez naruszania etycznych standardów?
Podpis kwalifikowany - czym właściwie jest?
Podpis kwalifikowany to rodzaj podpisu elektronicznego posiadający najwyższy poziom bezpieczeństwa i wiarygodności. Jest on prawnie równoważny podpisowi odręcznemu złożonemu na papierowym dokumencie. O jego wyjątkowości stanowi fakt, że jest poświadczony specjalnym certyfikatem kwalifikowanym, który jednoznacznie identyfikuje osobę składającą podpis.
Technologicznie opiera się na infrastrukturze klucza publicznego (ang. Public Key Infrastructure, PKI), wykorzystując parę kluczy kryptograficznych - prywatny (znany tylko właścicielowi) i publiczny (dostępny dla weryfikujących). Podczas podpisywania dokumentu algorytm matematyczny tworzy cyfrowy "odcisk palca" dokumentu, następnie szyfruje go przy użyciu klucza prywatnego właściciela. Taki podpis jest nieodłączną częścią dokumentu i jakakolwiek zmiana w treści po złożeniu podpisu skutkuje jego unieważnieniem.
Podpis kwalifikowany możemy uzyskać od certyfikowanych dostawców usług zaufania, takich jak Polska Wytwórnia Papierów Wartościowych (Sigillum), Krajowa Izba Rozliczeniowa (Szafir), Asseco Data Systems (proCertum SmartSign), CenCert (PEM-HEART) czy EuroCert (SecureDoc).
Podpis kwalifikowany a podpis zaufany – różnice
Podczas gdy podpis zaufany dostępny jest w ramach bezpłatnego Profilu Zaufanego, podpis kwalifikowany oferuje znacznie szersze możliwości. Różnice omawia poniższa tabela:
# | Podpis kwalifikowany | Podpis zaufany |
---|---|---|
Zasięg i uznawanie | jest uznawany w całej Unii Europejskiej dzięki rozporządzeniu eIDAS | działa tylko na terenie Polski, głównie w kontaktach z administracją publiczną |
Możliwości zastosowania | umożliwia podpisywanie wszystkich typów dokumentów elektronicznych, umów biznesowych, uczestnictwo w przetargach, a także kontakty z urzędami | służy przede wszystkim do załatwiania spraw urzędowych i nie ma zastosowania w wielu procesach biznesowych |
Koszt i dostępność | jest usługą komercyjną, której koszt wynosi około 300 zł brutto | są bezpłatne dla obywateli polskich i osób posiadających numer PESEL |
Status prawny | ma moc prawną równoważną podpisowi odręcznemu we wszystkich czynnościach prawnych | jest rodzajem zaawansowanego podpisu elektronicznego z certyfikatem niekwalifikowanym, uznawany głównie przez administrację publiczną |
E-usługi i podpis elektroniczny
W realizacji e-usług podpis elektroniczny pełni kluczową rolę. System, z którego korzysta użytkownik, przekierowuje go do systemu podpisującego, gdzie może złożyć podpis wybranym certyfikatem. Po podpisaniu dokumentu, użytkownik wraz z podpisanym dokumentem jest przekierowywany z powrotem do systemu źródłowego.
Typowe zastosowania podpisu elektronicznego obejmują:
- podpisywanie i składanie deklaracji podatkowych
- uwierzytelnianie na platformach e-administracji (np. PUE ZUS)
- podpisywanie sprawozdań finansowych do KRS
- przekazywanie Jednolitego Pliku Kontrolnego (JPK)
- uczestnictwo w elektronicznych przetargach
- zdalne zawieranie umów cywilno-prawnych
Warto zaznaczyć, że podczas korzystania z serwisów typu Biznes.gov.pl, jeśli chcemy otrzymywać odpowiedzi elektroniczne, a korzystamy wyłącznie z podpisu kwalifikowanego, możemy napotkać problem z podpisaniem Urzędowego Poświadczenia Doręczenia (UPD), które wymaga Profilu Zaufanego.
Weryfikacja podpisu elektronicznego
Weryfikacja podpisu elektronicznego jest ważna dla zachowania bezpieczeństwa obiegu dokumentów. Proces ten potwierdza, że dokument nie został zmieniony po złożeniu podpisu, certyfikat użyty do podpisania był ważny w momencie składania podpisu oraz że podpis pochodzi od osoby, która jest wskazana jako podpisująca.
Do weryfikacji podpisu kwalifikowanego można wykorzystać:
- aplikacje dostawców podpisów (np. Sigillum Sign, Szafir, proCertum SmartSign) np. https://sigillum.pl/sigillum-sign
- narzędzia udostępnione przez Komisję Europejską, takie jak DSS Demonstration WebApp https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo/validation
- stronę rządową oferującą usługę weryfikacji podpisu elektronicznego https://www.gov.pl/web/gov/podpisz-dokument-elektronicznie-wykorzystaj-podpis-zaufany
- LUB weryfikacja podpisów na dokumencie, który otrzymałeś z jednostki Krajowej Administracji Skarbowej (KAS) lub Ministerstwa Finansów https://puesc.gov.pl/wer/
- program Adobe Acrobat Reader dla podpisów w formacie PAdES.
Podczas weryfikacji podpisu elektronicznego sprawdzane są m.in. certyfikaty, znaczniki czasu oraz integralność dokumentu. System porównuje "hash" dokumentu stworzony w momencie podpisania z aktualnym "hashem", aby potwierdzić, że dokument nie został zmodyfikowany.
Standardy techniczne podpisu kwalifikowanego
Podpis kwalifikowany musi spełniać określone standardy techniczne, które zapewniają jego bezpieczeństwo i interoperacyjność. Najważniejsze z nich to formaty zgodne ze specyfikacjami ETSI (European Telecommunications Standards Institute):
- XAdES (XML Advanced Electronic Signatures) - format oparty na XML, wykorzystywany głównie w systemach administracji publicznej
- PAdES (PDF Advanced Electronic Signatures) - format dla dokumentów PDF, umożliwiający podpisywanie i weryfikację bezpośrednio w programach do odczytu PDF
- CAdES (CMS Advanced Electronic Signatures) - format uniwersalny, może być stosowany do dowolnych typów plików
- ASiC (Associated Signature Containers) - format kontenera zawierającego podpisane dokumenty oraz podpisy elektroniczne
Dodatkowo, algorytmy kryptograficzne używane w podpisach kwalifikowanych muszą być zgodne z wymogami bezpieczeństwa określonymi w standardzie ETSI TS 119 312.
Rozporządzenie eIDAS
Rozporządzenie Parlamentu Europejskiego i Rady (UE) nr 910/2014 (eIDAS) ustanowiło jednolite ramy dla identyfikacji elektronicznej i usług zaufania w całej Unii Europejskiej. Przepisy te, obowiązujące od 1 lipca 2016 roku, ujednoliciły podejście do podpisów elektronicznych w państwach członkowskich.
eIDAS wyróżnia trzy poziomy podpisu elektronicznego:
- Zwykły podpis elektroniczny - podstawowa forma podpisu, zapewniająca najniższy poziom bezpieczeństwa
- Zaawansowany podpis elektroniczny (AES) - spełnia dodatkowe wymogi bezpieczeństwa i jednoznacznie identyfikuje podpisującego
- Kwalifikowany podpis elektroniczny (QES) - najwyższy poziom bezpieczeństwa, równoważny podpisowi odręcznemu
Dzięki eIDAS, podpisy kwalifikowane wydane w jednym państwie członkowskim są uznawane we wszystkich pozostałych krajach UE. Rozporządzenie ustanowiło także ramy dla innych usług zaufania, takich jak pieczęcie elektroniczne, znaczniki czasu czy usługi rejestrowanego doręczenia elektronicznego.
Testowanie podpisu kwalifikowanego
Jak przedstawiliśmy wcześniej podpis elektroniczny ma wagę podpisu ręcznego, a nawet dokumentu cyfrowego. Nie sposób więc wyobrazić sobie, że w sieci znajdą się generatory, które na potrzeby testów będą preparowały dokumenty podpisane elektronicznie walidowane w standardowych narzędziach. Oznaczałoby to, że w sieci znajdą się generatory fałszywek.
Czy na środowisku testowym i produkcyjnym powinno się używać rzeczywistych dokumentów podpisanych certyfikatem kwalifikowanym, czy istnieją alternatywne sposoby symulacji takich dokumentów?
W sieci znajdziemy mnogość prywatnych dokumentów podpisanych elektronicznie. W otwartej sieci zazwyczaj są to pojedyncze pliki, a w dark webie możemy znaleźć ich całe paczki. Ich użycie do testów uznajemy za skrajnie nieetyczne, dlatego też nie podajemy linków, z których można je pobrać. Nie powinno się ich używać nawet na środowisku testowym.
Jednocześnie przestrzegamy przed używaniem własnych podpisów kwalifikowanych pod dokumentami w testach. Nawet jeśli macie zaufanie do swojego pracodawcy nigdy nie macie pewności co stanie się z dokumentem przez Was podpisanym jeśli trafi na środowisko testowe. To samo dotyczy wszystkich Waszych prywatnych danych włączając w to:
- PESEL
- numer dowodu
- numer konta
- numer telefonu
- adres mailowy
- itd.
To samo dotyczy korzystania z własnego konta do dokonywania płatności czy przelewów, a szczególnie dotyczy prywatnych kart kredytowych.
Jakie narzędzia lub metody pozwalają realistycznie odwzorować proces walidacji dokumentów podpisanych podpisem kwalifikowanym bez użycia prawdziwych certyfikatów?
Najlepszym rozwiązaniem jest spreparowanie własnego lub skorzystanie z dostępnego narzędzia do tworzenia i walidacji cyfrowych podpisów. Takie rozwiązania oczywiście wymagają specjalnego mockowania i będą mogły być użyte jedynie w środowisku testowym.
Narzędzie
Przykładowy projekt, który pozwoli zbudować takie narzędzie wewnętrznie to DSS napisany w języku Java, a udostępniony przez EU - https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo/doc/dss-documentation.html
Projekt DSS (Digital Signature Service) to biblioteka typu open source, której celem jest zapewnienie implementacji standardów tworzenia, rozszerzania i walidacji zaawansowanego podpisu elektronicznego zgodnie z prawodawstwem europejskim, a w szczególności rozporządzeniem eIDAS.
W narzędziu znajdziemy trzy główne funkcje:
- tworzenie podpisu cyfrowego;
- rozszerzanie podpisu cyfrowego i;
- walidacja podpisu cyfrowego.
W dokumentacji towarzyszącej projektowi omówiono szczegółowo koncepcje i funkcje kluczowe dla podpisów elektronicznych:
- formy podpisów cyfrowych: XAdES, CAdES, PAdES, JAdES i ASiC-S/ASiC-E;
- formaty podpisywanych dokumentów: XML, JSON, PDF, DOC, TXT, ZIP itp.;
- struktury pakowania: kopertowe, oddzielone i wewnętrznie oddzielone;
- profile powiązane z każdą formą podpisu cyfrowego;
- zarządzanie zaufaniem;
- obsługa danych unieważnienia (źródła OCSP i CRL);
- budowanie łańcucha certyfikatów;
- walidacja podpisu i polityka walidacji;
- kwalifikacja podpisu;
- raporty walidacyjne (prosty, szczegółowy, raport walidacyjny ETSI);
- zarządzanie tokenami podpisu;
- walidacja certyfikatu podpisującego;
- tworzenie znacznika czasu;
- walidacja i kwalifikacja znacznika czasu;
- usługi sieciowe REST i SOAP.
Nie jest to pełna lista wszystkich możliwości oferowanych przez framework, a proponowane przykłady obejmują tylko najbardziej przydatne funkcje. Jednak aby odkryć każdy szczegół zasad działania frameworka, JavaDoc jest dostępny w kodzie źródłowym.
DSS ma dema dostępne online. Przykład: https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo/sign-a-pdf
[UWAGA! Wymaga własnego certyfikatu]
Aplikacje webową w najnowszej wersji można pobrać tutaj: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Digital+Signature+Service+-++DSS
Aplikację standalone na Windows znajdziemy tutaj: https://ec.europa.eu/digital-building-blocks/DSS/webapp-demo/doc/dss-documentation.html#DSSStandaloneApp
Testy
Aby sprawdzić poprawność walidacji podpisu warto skorzystać z przypadków testowych stworzonych w projekcie prowadzonym w ramach EU.
Testowanie walidatorów podpisów elektronicznych - https://eidas.ec.europa.eu/efda/validation-tests#/screen/home
Przypadki testowe walidacji podpisu elektronicznego zostały utworzone, by pomóc każdemu testującemu implementację walidacji podpisu elektronicznego (dostawcom oprogramowania, dostawcom usług zaufania, organom oceny zgodności, organom nadzorującym, itd.).
Przypadki testowe obecnie koncentrują się na walidacji „części kwalifikowanej” kwalifikowanych podpisów elektronicznych i pieczęci w oparciu o zaufane listy (TL), to znaczy z wyłączeniem konkretnych przypadków testowych związanych z walidacją zaawansowanego podpisu elektronicznego lub pieczęci zgodnie z ETSI EN 319 102-1.
W tym celu „fałszywe” TL, listy zaufanych list (LOTL), certyfikaty i podpisane dokumenty są generowane automatycznie i regularnie odświeżane.
Certyfikaty i podpisane dokumenty używane w przypadkach testowych można pobrać osobno lub można pobrać razem.
Jeśli chodzi o metody testów, obowiązują tutaj standardowe techniki testowania dla danych testowych od klas równoważności po testowanie metodą par. Dla logiki najlepszą techniką będzie graf przyczynowo-skutkowy i przejścia stanów. Pozwolą on systematycznie pokryć zarówno zbiory danych (dokumentów), jak i logikę generacji i walidacji.
Jakie są najczęstsze pułapki i błędy związane z testowaniem tego rodzaju dokumentów?
Nie ma tu szczególnych pułapek, ale należy pamiętać o złożonej architekturze rozwiązań oraz o kwestiach szyfrowania oraz bezpieczeństwa dokumentów. Na pewno jest to obszar, który wymaga dużej wiedzy domenowej i technicznej oraz pełnego zrozumienia mechanizmu działania podpisu elektronicznego.
Podczas testów warto posiłkować się rodziną standarów ETSI EN 319, które zawierają podstawowe wymagania odnośnie prowadzenia testów oraz informacje co i w jaki sposób należy weryfikować dla poszczególnych elementów norm. Przykład: https://www.etsi.org/deliver/etsi_en/319400_319499/31941101/01.04.01_60/en_31941101v010401p.pdf
W standardach ETSI znajdziemy również informacje o tym, jak walidować poszczególne składowe systemu podpisu elektronicznego. Przykład – jak tworzyć i walidować podpis https://www.etsi.org/deliver/etsi_en/319100_319199/31910201/01.04.01_60/en_31910201v010401p.pdf
ETSI udostępnia również narzędzie do sprawdzania poprawności podpisów. Jest to narzędzie dla organizacji, które tworzą narzędzia do podpisów i zajmują się ich walidacją:
- https://www.etsi.org/committee?id=2106
- https://signatures-conformance-checker.etsi.org/pub/index.php
Powyższe narzędzie testuje sprawdzenia dla:
- PAdES (PDF Advanced Electronic Signature ETSI TS 102 778 and EN 319 142-1&2)
- XAdES (XML Advanced Electronic Signature ETSI 101 903, TS 103 171 and EN 319 132-1&2)
- CAdES (CMS Advanced Electronic Signature ETSI TS 101 733 and EN 319 122-1&2)
- ASiC (Associated Signature Container ETSI TS 102 918 and EN 319 162-1&2)
- JAdES (JSON Advanced Electronic Signature ETSI TS 119 182-1)
Pełna dokumentacja narzędzia dostępna jest tutaj: https://signatures-conformance-checker.etsi.org/pub/documentation.php
Podsumowanie
Zadanie wykonywania testów gdzie danymi testowymi są podpis kwalifikowany lub podpisany nimi dokument nie należy do łatwych. Powinno być oczywiście spreparowane i przygotowane przez projekt, ale nasza testerka wiedza może tutaj pomóc. Warto się zaangażować w przygotowanie środowiska testowego z narzędziem do podpisywania i walidowania podpisów bo dzięki temu będziemy mieli większą pewność, że system po wdrożeniu na produkcję będzie działał poprawnie.