← Back to all articles

Znaczniki czasu RFC 3161, jak sprawić, by podpis cyfrowy był trwały prawnie

SealDoc Team · · 5 min read

Przy pierwszym audycie archiwum cyfrowego pojawia się jedno pytanie: skąd wiadomo, że ten dokument istniał w dniu, który podaje? Zwykły podpis cyfrowy na to nie odpowiada. Podpis dowodzi kto podpisał, a nie kiedy. Podpisane bajty zawierają znacznik czasu wpisany przez podpisującego, ale podpisujący może wpisać dowolny znacznik czasu. W większości wewnętrznych przypadków użycia to nie ma znaczenia. Dla prawnie wiążących archiwów, przechowywania dokumentów podatkowych i sporów dotyczących łańcucha odpowiedzialności ma to ogromne znaczenie.

Odpowiedzią jest RFC 3161, internetowy standard definiujący protokół znacznikowania czasu (Time-Stamp Protocol, TSP). Jest starszy, niż większość czytelników się spodziewa (opublikowany w 2001 roku), jest wszechobecny w europejskim stosie zgodności, a sposób jego działania jest prostszy niż sugeruje skrót.

Czym jest znacznik czasu RFC 3161

Znacznik czasu RFC 3161 to mały podpisany token wydawany przez Urząd Znacznikowania Czasu (Time-Stamping Authority, TSA). Przepływ wygląda następująco:

  1. Obliczasz skrót SHA-256 dokumentu, który chcesz opatrzyć znacznikiem czasu. TSA nigdy nie widzi samego dokumentu, tylko skrót.
  2. Wysyłasz skrót do TSA w komunikacie TimeStampReq.
  3. TSA zwraca TimeStampResp zawierający TimeStampToken. Token to struktura CMS podpisana certyfikatem TSA, zawierająca: wysłany przez Ciebie skrót, czas deklarowany przez TSA, identyfikator OID polityki TSA oraz kryptograficzny jednorazowy numer (nonce) echujący Twój.
  4. Dołączasz token do swojego archiwum obok dokumentu.

Ten token jest znacznikiem czasu. Mówi w formie kryptograficznej: “TSA, której certyfikat łączy się z zaufanym głównym urzędem certyfikacji, potwierdziła, że ten skrót istniał o tej godzinie UTC.” Ponieważ dokument jest identyfikowany przez skrót, nie możesz retroaktywnie zmienić dokumentu bez unieważnienia znacznika czasu. Ponieważ podpisuje TSA, nie możesz retroaktywnie zmienić czasu bez sfałszowania podpisu TSA.

Właśnie dlatego znaczniki czasu są niezaprzeczalne. Obie strony (Ty i każdy przyszły audytor) mogą weryfikować token bez kontaktowania się z TSA.

Dlaczego zwykły znacznik czasu nie wystarczy

Zegar na Twoim serwerze się myli. Mówimy to z pełnym przekonaniem, bo każdy zegar wszędzie myli się o jakiś margines, a sąd nie interesuje się dryftem NTP. Wartość prawna samodzielnie deklarowanego znacznika czasu jest mniej więcej równa wartości prawnej ręcznie wpisanej daty na wydrukowanym paragonie: jest sugestywna, nie dowodowa.

Znacznik czasu RFC 3161 jest dowodowy, ponieważ:

  • TSA jest podmiotem regulowanym, audytowanym według standardów takich jak ETSI EN 319 421.
  • Zegar TSA jest zsynchronizowany z UTC za pomocą sprawdzalnych środków (często krajowy serwis czasu lub odniesienie do zegara atomowego).
  • Certyfikat TSA jest wydawany przez zaufany CA, którego główny urząd certyfikacji znajduje się na Liście Zaufanych UE (LOTL).
  • Token znacznika czasu jest możliwy do weryfikacji offline przez każdego, kto posiada łańcuch certyfikatów TSA, bezterminowo.

Ramą prawną, która czyni to egzekwowalnym w UE, jest eIDAS (Rozporządzenie UE 910/2014, zmienione przez 2024/1183). eIDAS definiuje “kwalifikowany elektroniczny znacznik czasu” jako znacznik wydany przez TSA z Listy Zaufanych UE. Taki znacznik korzysta z prawnego domniemania dokładności we wszystkich państwach członkowskich. Niekwalifikowany znacznik czasu jest nadal użyteczny, ale nie uzyskuje automatycznego domniemania.

Długoterminowa ważność, prawdziwy powód, dla którego archiwa potrzebują znaczników czasu

Oto subtelniejszy problem, który znaczniki czasu rozwiązują. Podpis cyfrowy jest ważny tak długo, jak ważny jest certyfikat podpisującego. Certyfikaty wygasają (zazwyczaj po 1 do 3 lat), są unieważniane lub ich wystawiający CA przestaje działać. Za pięć lat podpis na Twojej fakturze może być kryptograficznie nienaruszony, ale prawnie nieweryfikowalny, bo łańcuch zaufania się rozwiązał.

Rozwiązaniem jest owinięcie podpisu znacznikiem czasu w momencie, gdy podpis jest jeszcze ważny. Znacznik czasu dowodzi: “ten podpis był ważny w momencie jego złożenia.” Nawet jeśli certyfikat później wygaśnie, kryptograficzny zapis jego ważnego stanu jest zachowany. To jest zasada stojąca za PAdES Long-Term Validation (LTV) i profilami CAdES-A.

Dla archiwizacji PDF/A-3 praktyczna struktura wygląda następująco:

  1. Utwórz PDF/A-3 z osadzonym XML faktury.
  2. Zastosuj podpis cyfrowy.
  3. Zastosuj znacznik czasu RFC 3161 do podpisu.
  4. Opcjonalnie ponownie opatrz znacznikiem czasu co kilka lat, zanim wygaśnie jakikolwiek certyfikat TSA w łańcuchu (to znaczy “archiwalne znacznikowanie czasu”).

Poprawnie zarchiwizowana faktura ma co najmniej trzy pierwsze kroki. Czwarty sprawia, że 30-letnie archiwum działa bez interwencji przy każdej rotacji certyfikatu.

Samodzielna weryfikacja znacznika czasu

Nie musisz ufać TSA bardziej, niż wymaga tego kryptografia. Weryfikacja znacznika czasu obejmuje:

  1. Parsowanie TimeStampToken (struktura CMS, ASN.1).
  2. Wyodrębnienie odcisku wiadomości (skrót i algorytm).
  3. Samodzielne obliczenie skrótu dokumentu tym samym algorytmem. Porównanie.
  4. Weryfikacja podpisu TSA na tokenie przy użyciu certyfikatu TSA.
  5. Weryfikacja, że certyfikat TSA łączy się z zaufanym głównym urzędem certyfikacji i był ważny w deklarowanym czasie znacznika.
  6. Opcjonalnie sprawdzenie certyfikatu TSA na podstawie danych o unieważnieniu przechwyconych w czasie archiwizacji.

OpenSSL może wykonać wszystko to z wiersza poleceń (openssl ts -verify -in token.tsr -data file.pdf -CAfile chain.pem). To nie jest czarna skrzynka.

Gdzie pasuje SealDoc

Gdy system SealDoc generuje fakturę PDF/A-3, krok znacznikowania czasu wykonuje automatycznie. Pakiet dowodowy generowany obok każdej wystawionej faktury zawiera:

  • Plik PDF/A-3 z osadzonym XML.
  • Odłączony token znacznika czasu RFC 3161.
  • Manifest ze skrótami SHA-256 każdego artefaktu w pakiecie.
  • Łańcuch certyfikatów TSA w czasie wystawienia, przechwycony do późniejszej weryfikacji offline.

To wystarczy do zaspokojenia wymagań audytu podatkowego w dowolnym miejscu w UE, niezależnie od tego, czy audytor ma dostęp do internetu do pierwotnej TSA. Cały pakiet można ponownie zweryfikować offline przy użyciu OpenSSL lub dowolnej biblioteki obsługującej PAdES. Plik Factur-X wewnątrz jest niezależnie sprawdzalny pod adresem /check, a znacznik czasu jest niezależnie sprawdzalny narzędziami, które każdy audytor ma już na swoim komputerze.

Podsumowanie

Podpis cyfrowy bez zaufanego znacznika czasu to podpis z datą, której można zaprzeczyć. Znacznik czasu RFC 3161 od TSA wpisanego na Listę Zaufanych UE zamienia go w prawnie trwały zapis, weryfikowalny offline, ważny przez dziesięciolecia. Jeśli archiwizujesz ustrukturyzowane faktury przez 7 do 10 lat, jak wymaga większość unijnych przepisów podatkowych, nie jest to opcjonalna warstwa. To warstwa, która sprawia, że archiwum warte jest posiadania.


← Back to all articles