Przejdź do głównej zawartości

Walidacja długoterminowa

Spec: ETSI EN 319 142-1 Spec: RFC 6960 Spec: ISO 32000-2, §12.8.4 Evidence: Standard-backed

Podpis, który dziś weryfikujesz, opiera się na faktach, które nie są trwałe: certyfikat wygasa, serwery obsługujące unieważnienia przestają działać, a algorytmy skrótu słabną. Walidacja długoterminowa zapisuje dowody w dokumencie, dopóki są jeszcze dostępne. Dzięki temu podpis można sprawdzić wiele lat później bez odpytywania kogokolwiek o dodatkowe informacje.

Podpis cyfrowy ma niebezpieczną cechę: może po cichu przestać być weryfikowalny, choć wygląda na niezmieniony. W pliku nie zmienia się nic. Urząd certyfikacji przestaje odpowiadać na zapytania dotyczące dawno wygasłego certyfikatu. Walidator, który potrzebował tej odpowiedzi, nie może już jej uzyskać. Umowa, która w dniu podpisania bezspornie była ważna, dziesięć lat później staje się „niemożliwa do ustalenia”. A właśnie dekadę później spór bywa najbardziej prawdopodobny, a stawka najwyższa. Jeśli obowiązek przechowywania liczony jest w latach, podpis bez walidacji długoterminowej jest ryzykiem, które ujawnia się dopiero później.

  • Ważność podpisu zależy od zewnętrznych faktów wrażliwych na czas: okresu ważności certyfikatu oraz statusu unieważnienia zwracanego przez serwer.
  • Fakty te stają się niedostępne po wygaśnięciu certyfikatu — urzędy nie mają obowiązku odpowiadać w nieskończoność.
  • Walidacja długoterminowa przechwytuje dowody w chwili podpisywania — certyfikaty, odpowiedzi OCSP, listy CRL — i osadza je w Document Security Store (DSS) dokumentu.
  • Następnie znacznik czasu dokumentu dowodzi, że same dowody istniały i były ważne w tamtym momencie, a można go odnowić, zanim jego własna ochrona osłabnie.
  • Rezultat: dokument zawiera własny dowód. Weryfikacja nie zależy już od tego, czy serwer nadal istnieje.

Zasada jest prosta: „zbierz dowód, póki jeszcze możesz, a potem go zapieczętuj”. Gdy NextPDF tworzy podpis z walidacją długoterminową, zbiera łańcuch certyfikatów oraz odpowiedzi dotyczące unieważnienia, które dowodzą, że certyfikat użyty do podpisu był prawidłowy w chwili podpisywania. Zapisuje je w DSS jako osadzone wartości, a nie odnośniki. Następnie dodaje znacznik czasu dokumentu obejmujący całość. Osadzone wartości są tu kluczowe. Odnośnik do serwera unieważnień jest dokładnie tą zależnością, którą walidacja długoterminowa ma usunąć.

Warstwy walidacji długoterminowej są zapisywane jako odrębne rewizje dokumentu, dołączane bez naruszania zakresu bajtów oryginalnego podpisu. Pierwszy podpis nadal się weryfikuje. Materiał walidacji długoterminowej jest dodawany wokół niego, a nie do niego. Gdy ochrona zapewniana przez sam znacznik czasu dokumentu zaczyna się starzeć, poziom archiwalny pozwala nałożyć kolejny znacznik czasu na wierzchu. Rezultatem jest łańcuch, w którym każdy znacznik czasu poświadcza wszystko, co znajduje się pod nim.

  1. Sign The signature and its signed attributes are written (B-B).
  2. Capture evidence Certificate chain, OCSP responses, and CRLs proving the certificate was valid at signing time are gathered.
  3. Embed in the DSS The evidence is written into the document as embedded values, not links (B-LT).
  4. Seal with a document timestamp A timestamp proves the embedded evidence existed and was valid at that moment (B-LTA).
  5. Renew before it weakens Another timestamp is layered before the previous one’s protection ages, extending verifiability.
Jak walidacja długoterminowa utrzymuje weryfikowalność podpisu w czasie: podpis zostaje utworzony, dowody są przechwytywane, póki są jeszcze dostępne, dowody są pieczętowane znacznikiem czasu dokumentu, a pieczęć jest odnawiana, zanim osłabnie.

Evidence: Standard-backed Tę potrzebę jasno określa Spec: RFC 6960, §4.4.4 : status unieważnienia może być zachowywany dłużej niż okres ważności certyfikatu, a mechanizm daty granicznej archiwum daje walidatorom kontekst historyczny potrzebny do ustalenia, czy podpis był wiarygodny w chwili utworzenia, nawet po tym, jak certyfikat użyty do walidacji wygasł. To właśnie dlatego istnieje walidacja długoterminowa. Odpowiedzi dotyczące unieważnienia pozostają dostępne tylko przez ograniczony czas, więc trzeba je przechwycić, zanim ten czas się skończy.

Mechanizm wywodzi się z ETSI. Spec: ETSI EN 319 142-2, §5.5 stanowi, że utrzymanie długoterminowej weryfikowalności wymaga Document Security Store przechowującego dane walidacyjne jako wartości oraz późniejszego znacznika czasu dokumentu. Spec: ISO 32000-2, §12.8.3.3 łączy to w całość: PAdES to CAdES CMS połączone z walidacją długoterminową (§12.8.4) oraz słownikiem znacznika czasu dokumentu (§12.8.5). Z kolei Spec: ETSI EN 319 142-2, §6.3.2.2 wyjaśnia, dlaczego znacznik czasu nakłada się wcześnie: powinien zostać zastosowany bezpośrednio po podpisaniu, aby zapisany czas był jak najbliższy rzeczywistemu.

Silnik NextPDF realizuje to jako poziomy B-LT oraz B-LTA: osadzone wartości dotyczące unieważnień w DSS, znacznik czasu dokumentu pieczętujący te wartości oraz pętlę archiwalną odnawiającą pieczęć — wszystko zapisane jako dołączone rewizje, które pozostawiają zakres bajtów oryginalnego podpisu nienaruszony.

Wybrany poziom jest decyzją długoterminową. API pokazuje ten wymóg wprost, zanim wybierzesz poziom.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// B-LT embeds validation material; B-LTA adds the renewable seal.
$level = SignatureLevel::PAdES_B_LTA;
$level->requiresDss(); // true → certificates + revocation embedded
$level->requiresDocumentTimestamp(); // true → a document timestamp seals the DSS
// The high-level seam produces the level end to end: it embeds the DSS
// dictionary and appends the DocTimeStamp revision in one call.
$document
->setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)
->save();
// The engine produces this only if the deployment can supply what it needs
// (a TSA, and revocation data reachable at signing time). It fails with an
// actionable error rather than embedding nothing and reporting success.

Wysokopoziomowy punkt API pokazany powyżej — setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save() — jest teraz w pełni podłączony; wcześniejsze wydania udostępniały enum poziomu, lecz nie punkt API, który go wytwarza. Zapisuje strukturę: słownik DSS oraz rewizję DocTimeStamp opisaną w Spec: ISO 32000-2, §12.8 . Struktura ta nie jest testowana pod kątem zgodności z profilem, a punkt API nie gwarantuje zgodności z ETSI ani ważności prawnej. Poziomy B-LT oraz B-LTA wymagają zarówno Pro, jak i Enterprise; na każdym innym poziomie punkt API kończy działanie bezpieczną odmową, zamiast tworzyć częściowy wynik. Zaszyfrowany dokument również kończy się bezpieczną odmową dla B-LT oraz B-LTA; DSS oraz znacznik czasu dokumentu nie są zapisywane na zaszyfrowanej zawartości, ponieważ zostałyby zapisane nieprawidłowo.

Tego wyboru nie da się później nadrobić niskim kosztem. Dowody unieważnienia trzeba przechwycić w chwili podpisywania, póki odpowiedzi jeszcze istnieją. Decyzja „dodamy walidację długoterminową później” zwykle oznacza w praktyce decyzję „nie będziemy mieć dowodów, gdy będą potrzebne”.

Częste nieporozumienie brzmi: „walidacja długoterminowa sprawia, że podpis jest ważny na zawsze”. Nie sprawia, że cokolwiek staje się ważne. Zachowuje możliwość sprawdzenia ważności ustalonej w chwili podpisywania. Jeśli certyfikat był już unieważniony w chwili podpisania dokumentu, osadzenie tego faktu nie ratuje podpisu. Zamiast tego trwale dokumentuje niepowodzenie. Walidacja długoterminowa to mechanizm zachowywania dowodu, a nie jego tworzenia. Drugie nieporozumienie to przekonanie, że B-LTA działa na zasadzie „ustaw i zapomnij”. Archiwalny znacznik czasu opiera ochronę na algorytmach, które same się starzeją. Bez odnawiania plik B-LTA w końcu odziedziczy tę samą kruchość, której miał uniknąć.

NextPDF zbiera i osadza dowody oraz zapisuje znaczniki czasu. Nie odpowiada za prawdziwość dowodów ani za harmonogram ich odnawiania. Odpowiedzi dotyczące unieważnienia są tak wiarygodne, jak urząd, który je wydał, oraz moment, w którym zostały pobrane. Za łączność z tym urzędem w chwili podpisywania odpowiada wdrożenie. Silnik nie może wymyślić odpowiedzi dotyczącej unieważnienia, której nie udało mu się uzyskać. Odnawianie archiwalne jest procesem operacyjnym. Silnik może dodać kolejny znacznik czasu, ale nie może zdecydować, kiedy wymaga tego polityka przechowywania. To, czy osadzone dane zostaną później uznane za wystarczające, zależy od walidatora i polityki; omówiono to w Prawidłowa walidacja podpisu. Ta strona nie potwierdza dopuszczalności prawnej, która zależy od jurysdykcji, osoby podpisującej oraz certyfikatu.

Dostępność walidacji długoterminowej w poszczególnych poziomach:

Long-term validation (DSS embedding and the archival timestamp loop) — edition availability
Edition Availability
Core Not in this edition
Pro

PAdES B-T — zaufany znacznik czasu na wartości podpisu — jest dostępny, lecz osadzony materiał walidacyjny (DSS) nie jest częścią B-T.

Enterprise

PAdES B-LT oraz B-LTA: osadzone wartości certyfikatów i unieważnień w DSS, pieczętujący znacznik czasu dokumentu oraz odnawialna pętla archiwalna.

  • Walidacja długoterminowa (LTV) — osadzanie dowodów potrzebnych do zweryfikowania podpisu, tak aby późniejsza weryfikacja nie zależała od usług zewnętrznych.
  • Document Security Store (DSS) — struktura PDF przechowująca osadzone certyfikaty i dane unieważnień na potrzeby walidacji długoterminowej.
  • Odpowiedź OCSP — podpisane oświadczenie o statusie unieważnienia certyfikatu w danym momencie (Online Certificate Status Protocol, RFC 6960).
  • CRL — Certificate Revocation List; podpisana lista unieważnionych certyfikatów.
  • Znacznik czasu dokumentu — znacznik czasu RFC 3161 zastosowany do całego dokumentu, dowodzący, że osadzone dowody istniały i były ważne w tamtym czasie.
  • Pętla archiwalna — cykliczne dodawanie nowego znacznika czasu dokumentu, zanim ochrona poprzedniego osłabnie, aby wydłużyć weryfikowalność.