Przejdź do głównej zawartości
getnextpdf.com

Profile bazowe PAdES

Spec: ETSI EN 319 142-1Spec: ISO 32000-2, §12.8Spec: RFC 3161

PAdES definiuje cztery poziomy bazowe — B-B, B-T, B-LT, B-LTA — budowane jeden na drugim. Każdy poziom dodaje jeden konkretny rodzaj dowodu. Ta strona wyjaśnia tę progresję i pomaga wybrać najniższy poziom, który nadal spełnia zobowiązanie, zamiast najwyższego poziomu znanego akurat z nazwy.

Ludzie sięgają po „B-LTA”, bo brzmi najsolidniej, albo po „B-B”, bo wymaga najmniej pracy. Oba wybory są zgadywaniem. O potrzebnym poziomie decyduje pytanie, a nie preferencja: jak długo ten podpis musi pozostać weryfikowalny i przez kogo? Wybierzesz zbyt niski, a podpis ważny w dniu złożenia stanie się niemożliwy do zweryfikowania, gdy certyfikat wygaśnie. Wybierzesz zbyt wysoki, a nałożysz na wdrożenie wymagania dotyczące urzędu znacznika czasu i infrastruktury materiału walidacyjnego, których nie potrzebujesz, oraz zobowiązanie archiwizacyjne, które trzeba stale podtrzymywać. Zespół, który nie może później zmienić poziomu, ponosi koszt złego wyboru.

  • Cztery poziomy są kumulatywne. Każdy obejmuje poprzedni i dodaje jeden element.
  • B-B — podpis wraz z jego obowiązkowymi atrybutami podpisanymi. Dowodzi, kto podpisał i co.
  • B-TB-B plus zaufany znacznik czasu na podpisie. Dowodzi, kiedy podpisano, niezależnie od zegara podpisującego.
  • B-LTB-T plus osadzony materiał walidacyjny (certyfikaty i dane o unieważnieniu). Dokument sam zawiera dowód, że certyfikat był ważny w chwili podpisywania.
  • B-LTAB-LT plus znacznik czasu dokumentu, odnawiany w czasie. Utrzymuje weryfikowalność całości przez dziesięciolecia i zmiany algorytmów.
  • Wybieraj poziom według czasu trwania zobowiązania, a nie tego, co wygląda najbezpieczniej.

NextPDF modeluje poziom jako jawny, uporządkowany wybór i nie udaje spełnienia wymagań. Żądasz poziomu. Silnik tworzy dokładnie ten poziom albo kończy się błędem zawierającym informacje potrzebne do naprawy. Nie podpisuje po cichu na niższym poziomie i nie pozwala, by zapis zgodności deklarował wyższy. Ten projekt istnieje właśnie po to, by zapobiec cichemu obniżeniu żądania B-LTA do B-T, gdy brakuje infrastruktury. Wymagania każdego poziomu są zakodowane jako predykaty: czy wymagany jest znacznik czasu, czy wymagany jest osadzony materiał walidacyjny, czy wymagany jest znacznik czasu dokumentu. Silnik sprawdza te predykaty i albo je spełnia, albo się zatrzymuje.

Poniżej przedstawiono tę samą progresję, którą wymusza silnik i którą definiuje standard.

PoziomDodaje względem poprzedniego poziomuPytanie, na które odpowiadaWymaga od Twojego wdrożenia
B-BAtrybuty podpisane: content-type, message-digest, signing-time, signing-certificate-v2Kto podpisał i jakie dokładnie bajty?Klucz podpisujący i certyfikat
B-TZaufany znacznik czasu na wartości podpisuKiedy podpisano — w sposób możliwy do udowodnienia?Urząd znacznika czasu (TSA)
B-LTOsadzone certyfikaty + dane o unieważnieniu (DSS)Czy można później udowodnić, że certyfikat był ważny w chwili podpisywania?TSA + dostęp do danych o unieważnieniu w chwili podpisywania
B-LTAZnacznik czasu dokumentu, odnawialny w czasieCzy całość nadal będzie weryfikowalna za dziesięciolecia?TSA + proces archiwizacji, który ponownie opatruje znacznikiem czasu

Najważniejszy skok to przejście z B-T do B-LT. B-T dowodzi kiedy. B-LT czyni dokument samowystarczalnym pod względem zaufania: przestaje zależeć od tego, czy urząd certyfikacji nadal jest dostępny i odpowiada na pytania za wiele lat.

Poziomy są też sprawdzane, nie tylko wytwarzane. Po stronie weryfikacji znacznik czasu B-T jest wiązany rygorystycznie: NextPDF wymaga, aby message imprint tokena był równy skrótowi wartości podpisu podpisującego, i kończy się w trybie fail-closed, gdy tak nie jest, więc znacznik czasu może podnieść podpis do poziomu B-T tylko wtedy, gdy w sposób możliwy do udowodnienia obejmuje ten podpis, a nie inne bajty.

  1. Step 1 of 4: ISO 32000-2 §12.8 — signatures, LTV, document timestamp
  2. Step 2 of 4: ETSI EN 319 142-1 PAdES baseline levels B-B…B-LTA
  3. Step 3 of 4: RFC 3161 Timestamp token (introduced at B-T)
  4. Step 4 of 4: RFC 6960 OCSP revocation evidence (embedded at B-LT)
Standardy stojące za progresją PAdES: ISO 32000-2 definiuje, jak podpisy i materiał walidacyjny umieszczane są w PDF; ETSI EN 319 142-1 definiuje poziomy bazowe; RFC 3161 definiuje znacznik czasu, który wprowadza B-T; RFC 6960 definiuje dowód unieważnienia, który osadza B-LT.

API odzwierciedla progresję: wskazujesz poziom, a silnik traktuje go jak kontrakt.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// The level is an explicit, ordered choice — not a flag you hope is honoured.
$level = SignatureLevel::PAdES_B_T;
// The level itself tells you what it requires, before you sign:
$level->requiresTimestamp(); // B-T and above → true
$level->requiresDss(); // B-LT and above → true
$level->requiresDocumentTimestamp(); // B-LTA only → true
// Ask for B-LTA only if the deployment can actually fulfil it.
// The engine produces exactly the requested level or fails with an
// actionable error — it never silently signs lower and reports higher.

Jeśli zażądasz B-LTA, a wdrożenie nie może dostarczyć tego, czego wymaga B-LTA, domyślnym zachowaniem jest zakończenie z błędem i wskazanie najwyższego poziomu, który mógł zostać osiągnięty — a nie ciche zwrócenie pliku B-T oznaczonego jako B-LTA.

Pułapką jest myślenie „B-LTA jest po prostu najlepszy, zawsze go wybieraj.” B-LTA nie jest lepszy w oderwaniu od kontekstu; to więcej, a więcej oznacza zobowiązania. Wymaga urzędu znacznika czasu, materiału dotyczącego unieważnienia zebranego w chwili podpisywania oraz stałego procesu archiwizacji, który ponownie opatruje dokument znacznikiem czasu, zanim chroniące go algorytmy lub certyfikaty znacznika czasu osłabną. Plik B-LTA, którego nikt ponownie nie opatruje znacznikiem czasu, nie jest odporny na przyszłość — to plik B-LT z dodatkową procedurą. I odwrotnie, B-B dla umowy, która musi przetrwać dekadę, nie jest „lekki”; to podpis, który nie przejdzie walidacji w dniu wygaśnięcia certyfikatu. Właściwy poziom to ten, którego wymaga zobowiązanie, ani wyższy, ani niższy.

NextPDF tworzy żądany poziom PAdES; nie dostarcza usług ani podmiotów, od których ten poziom zależy. Urząd znacznika czasu, łańcuch certyfikatów, kotwice zaufania oraz łączność umożliwiająca pobranie danych o unieważnieniu w chwili podpisywania leżą po stronie wdrożenia. Silnik implementuje strukturę i wymusza kontrakt poziomu; nie może uczynić TSA godnym zaufania ani certyfikatu ważnym. Wytworzona struktura zawiera elementy, których wymaga dany poziom, zweryfikowane względem własnych testów silnika i przywołanych klauzul. Nie jest to certyfikacja zgodności przez stronę trzecią; ta strona nie stwierdza skutku prawnego eIDAS, który zależy od certyfikatu, podpisującego i jurysdykcji. To, czy czas podpisania jest niezależnie zaufany, omówiono w Znaczniki czasu i zaufany czas; to, jak dowód długoterminowy utrzymuje weryfikowalność podpisu, omówiono w Walidacja długoterminowa.

Kilka ograniczeń, aby precyzyjnie ustawić oczekiwania:

  • B-LT i B-LTA tworzą strukturę walidacji długoterminowej, a nie werdykt zgodności. Silnik zapisuje słownik składu zabezpieczeń dokumentu (Document Security Store) oraz rewizję ze znacznikiem czasu dokumentu — słownik podpisu z Type = DocTimeStamp zgodnie z Spec: ISO 32000-2, §12.8. Ta struktura nie jest tutaj przedstawiana jako przetestowana pod kątem zgodności z profilem; kontrole profilu ETSI EN 319 142-1 są bramkowane wydaniem na ścieżce CI Pro i Enterprise, więc ta strona nie deklaruje zgodności wytworzonego pliku z ETSI EN 319 142-1.
  • Obsługa dokumentów zaszyfrowanych działa fail-closed dla B-LT i B-LTA. Żądanie poziomu długoterminowego dla zaszyfrowanego dokumentu zatrzymuje się z błędem zawierającym informacje potrzebne do naprawy, zamiast zapisać częściową rewizję długoterminową.

Dostępność poszczególnych poziomów według planu — wszystkie cztery są osiągane przez ten sam wysokopoziomowy szew, setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save():

PAdES baseline level — edition availability
EditionAvailability
Core

PAdES B-B i B-T — bazowy poziom atrybutów podpisanych oraz zaufany znacznik czasu na wartości podpisu, sterowany przez TsaClient. Oba poziomy są dostarczane przez szew Core.

Pro

Dodaje przepływy pracy podpisywania nadbudowane na bazowym poziomie Core — zdalne, oparte na chmurowym KMS oraz sekwencyjne — a nie nowy poziom.

Enterprise

Dodaje PAdES B-LT i B-LTA — osadzony materiał walidacyjny (DSS) oraz odnawialną pętlę archiwizacji ze znacznikiem czasu dokumentu. Korzystają z tego samego wysokopoziomowego szwu, ale tylko wtedy, gdy zainstalowane są oba pakiety Pro i Enterprise; gdy któregoś brakuje, wywołanie kończy się w trybie fail-closed, zamiast zapisać częściową rewizję długoterminową.

  • PAdES — PDF Advanced Electronic Signatures; seria ETSI EN 319 142 profilująca podpisy CMS dla PDF.
  • Poziom bazowy — jeden z B-B, B-T, B-LT, B-LTA; zdefiniowany, kumulatywny zestaw wymaganych elementów podpisu.
  • B-B — bazowy podpis wraz z jego obowiązkowymi atrybutami podpisanymi.
  • B-TB-B plus zaufany znacznik czasu na wartości podpisu.
  • B-LTB-T plus osadzony materiał walidacji długoterminowej (DSS).
  • B-LTAB-LT plus odnawialny znacznik czasu dokumentu na potrzeby ważności archiwalnej.
  • DSS — Document Security Store; struktura PDF przechowująca osadzone certyfikaty i dane o unieważnieniu.
  • TSA — urząd znacznika czasu (Time-Stamp Authority); zaufana usługa wydająca tokeny znaczników czasu RFC 3161.