Zum Inhalt springen

Workflow für signierte Vereinbarungen

Spec: ETSI EN 319 142-2, §5.1 Spec: ISO 32000-2:2020, §12.8 Evidence: Mixed evidence

Eine signierte Vereinbarung ist nicht „ein PDF mit einer Signatur darauf“. Sie ist ein Dokument, das so vorbereitet wurde, dass die Signatur die richtigen Bytes schützt. Sie wird auf der Stufe signiert, die der Pflicht entspricht. Sie wird so in der Datei abgelegt, dass sie auch nach Ablauf des Signierzertifikats überprüfbar bleibt. Diese Seite führt das Szenario vom leeren Dokument bis zum dauerhaft überprüfbaren Vertrag durch. Sie benennt offen, welche Schritte die Engine heute verdrahtet und welche sie als eingefrorene Oberfläche bereitstellt.

Ein Vertrag, der am Tag der Signierung überprüfbar ist und drei Jahre später in einem Streitfall versagt, ist schlimmer als gar keine Signatur, weil sich jemand darauf verlassen hat. Die Ursache liegt selten in der Kryptografie. Meist fehlen ein Zeitstempel oder Sperrnachweise, und das fällt erst lange auf, nachdem der Unterzeichner nicht mehr beteiligt ist.

Die Signaturpflicht von Anfang an festzulegen und die dafür benötigten Nachweise zum Signierzeitpunkt zu erzeugen, ist der Unterschied zwischen einer Vereinbarung, die Bestand hat, und einer, die stillschweigend zerfällt. Diese Entscheidung wird im Workflow einmal getroffen, statt sie in jedem Streitfall neu zu entdecken.

  • Erst vorbereiten, dann signieren. Eine Signatur deckt genau den Byte-Bereich ab, über den sie berechnet wurde. Legen Sie vor dem Signieren, nicht danach, fest, dass das Dokument endgültig ist — einschließlich aller Revisionen, die noch angehängt werden sollen.
  • Wählen Sie die Stufe nach der Pflicht, nicht umgekehrt. PAdES definiert eine Abstufung: eine einfache Signatur, eine mit Zeitstempel, eine mit eingebettetem Validierungsmaterial und eine erneut gestempelte Stufe für unbegrenzte archivische Gültigkeit (ETSI EN 319 142-2 §5.1).
  • Langzeitgültigkeit ist eine Struktur, keine Eigenschaft. Sie besteht aus einem Document Security Store und einem Dokument-Zeitstempel, die in die Datei geschrieben werden (ISO 32000-2:2020 §12.8).
  • Benennen Sie die Nahtstelle präzise. Die NextPDF-High-Level-Methode Document::setSignature() friert die öffentliche API ein, schlägt aber schnell fehl, statt eine unsignierte Datei auszugeben. Der verdrahtete Pfad ist der tieferliegende Orchestrator. Diese Seite behauptet nichts anderes.

NextPDF trennt die Entscheidung vom Mechanismus. Die Entscheidung ist, welche PAdES-Stufe die Pflicht erfordert. Der Mechanismus ist, wie die Bytes signiert werden und wie das Validierungsmaterial mitgeführt wird. Wer beides als eine Sache behandelt, landet leicht bei einer Signatur, die zwar gültig, aber nicht dauerhaft ist.

Das Szenario hat vier Phasen.

  1. Prepare the document Compose the agreement and treat it as final. The signature will protect this exact byte range and nothing added outside it without a new revision.
  2. Choose the obligation B-B proves who. B-T adds trusted time. B-LT embeds the material to validate later. B-LTA re-stamps for indefinite validity.
  3. Sign A CMS signature is embedded in the signature dictionary over the byte range; a timestamp is requested from a TSA if the level needs one.
  4. Preserve For long-term levels, the Document Security Store and a document timestamp are written so the signature outlives its certificate.
Das Szenario der signierten Vereinbarung von Anfang bis Ende: jede Phase fügt eine Garantie hinzu, und die in Phase zwei gewählte Stufe bestimmt, wie viele Nachweise die Phasen drei und vier erzeugen müssen.

Das Stufen-Enum ist real und bildet die Pflicht ausdrücklich ab. B-B weist die Identität des Unterzeichners nach. B-T fügt einen vertrauenswürdigen Zeitstempel hinzu. Das „Wann“ wird ebenso ausdrücklich verlangt wie das „Wer“. B-LT bettet die Zertifikate und Sperrantworten ein, die zur Validierung der Signatur nach Ablauf des Signierzertifikats benötigt werden. B-LTA fügt Dokument-Zeitstempel hinzu, sodass die Vertrauenskette erweitert werden kann und zwar unbegrenzt, indem erneut gestempelt wird, bevor jedes Zeitstempelzertifikat abläuft. Das Enum weiß, welche Stufen einen Zeitstempel erfordern und welche eingebettetes Validierungsmaterial erfordern, sodass die Engine eine unzulässige Kombination ablehnen kann, statt eine irreführend „signierte” Datei zu erzeugen.

Die Abstufung ist normgestützt. Evidence: Standard-backed Spec: ETSI EN 319 142-2, §5.1 beschreibt die PAdES-Stufen, die auf den Bausteinen der EN 319 142-1 aufbauen, von einer einfachen eingebetteten Signatur aufwärts. Die Langzeitstruktur wird durch Spec: ISO 32000-2:2020, §12.8 : Langzeitvalidierung beruht auf einem Document Security Store und einem Dokument-Zeitstempel-Wörterbuch, das in die Datei geschrieben wird.

Das Stufenmodell ist codegestützt. Evidence: Code-backed Das SignatureLevel-Enum bildet die vier PAdES-Fälle ab (B-B, B-T, B-LT, B-LTA) mit Prädikatmethoden für „erfordert einen Zeitstempel”, „erfordert eingebettetes Validierungsmaterial” und „erfordert Dokument-Zeitstempel”. Die High-Level-Methode Document::setSignature() enthält eine Fail-Fast-Schutzvorrichtung, die eine blockierende, umsetzbare Diagnose auslöst, statt ein unsigniertes Dokument auszugeben — ein überprüfbares Verhalten, keine Behauptung.

Das Langzeit-Wartungsverhalten ist auf Fähigkeitsebene für die Premium-Stufe dokumentiert: Die Archivierungsoberfläche schreibt den DSS und den signaturweisen VRI, prüft die Archivierungsvollständigkeit mit einer Integritätsprüfung und stempelt mit einem Dokument-Zeitstempel erneut, bevor das Zeitstempelzertifikat abläuft. Die Dokumentation stellt klar, dass die Entscheidung weiterhin beim Prüfer liegt.

Dies zeigt die Entscheidung — die Auswahl der Pflicht — anhand des realen Enums. Der verdrahtete Signierpfad ist der tieferliegende Orchestrator. Der High-Level-Aufruf wird nur gezeigt, um das Fail-Fast-Verhalten ausdrücklich zu machen.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
/**
* Map a business obligation to a PAdES level.
*
* The obligation drives the level, not the reverse — choosing B-B for a
* 10-year contract is a decision you do not want to make implicitly.
*/
function levelForObligation(string $obligation): SignatureLevel
{
return match ($obligation) {
// Internal sign-off, short retention, signer identity is enough.
'internal_approval' => SignatureLevel::PAdES_B_B,
// Counterparty agreement: prove the moment of signing.
'counterparty_agreement' => SignatureLevel::PAdES_B_T,
// Regulated contract that must verify after cert expiry.
'regulated_contract' => SignatureLevel::PAdES_B_LT,
// Long-lived legal record: indefinite, re-stampable validity.
'long_term_legal_record' => SignatureLevel::PAdES_B_LTA,
default => throw new \InvalidArgumentException(
"Unknown obligation: {$obligation}",
),
};
}
$level = levelForObligation('regulated_contract');
// The enum carries the obligation's implications with it.
$needsTsa = $level->requiresTimestamp(); // true for B-T+
$needsDss = $level->requiresDss(); // true for B-LT+
$needsArchive = $level->requiresDocumentTimestamp(); // true only for B-LTA

Das Stufenobjekt ist kein Etikett. Es beantwortet, welche Folgen die Pflicht hat, sodass die nachgelagerte Verdrahtung sie nicht erneut ableiten muss.

Das wiederkehrende Missverständnis lautet: „die Signatur ist gültig, also sind wir fertig.“ Heutige Gültigkeit ist notwendig, aber nicht hinreichend. Eine Signatur wird über einen Byte-Bereich berechnet. Alles, was außerhalb dieses Bereichs in einer späteren Revision angehängt wird, ist davon nicht abgedeckt; genau deshalb kommt die Vorbereitung vor dem Signieren. Und eine Signatur, die jetzt überprüfbar ist, kann später versagen, wenn ihr Zertifikat abläuft, es sei denn, das Validierungsmaterial wurde zum Signierzeitpunkt eingebettet. „Gültig“ und „dauerhaft“ sind unterschiedliche Garantien, und nur die Pflicht sagt Ihnen, welche davon Sie tatsächlich benötigen.

Eine verwandte Falle, die spezifisch für diese Engine ist: anzunehmen, dass die High-Level-Methode setSignature() heute eine signierte Datei erzeugt. Das tut sie nicht. Sie schlägt schnell fehl und zwar absichtlich. Verstehen Sie die Diagnose als den Vertrag.

  • Document::setSignature() ist eine eingefrorene öffentliche Oberfläche, kein verdrahteter Signierer. Sie schlägt mit einer blockierenden Diagnose schnell fehl. Sie gibt niemals ein unsigniertes PDF anstelle eines signierten aus. Der verdrahtete Pfad ist der tieferliegende zweiphasige Orchestrator.
  • Die Langzeit-Validierungswartung (DSS/VRI, Integritätsprüfung, die Archivierungszeitstempelschleife) ist eine Fähigkeit der Premium-Stufe. Core stellt die Archivierungsschleife nicht bereit. Siehe die Abgrenzung unten.
  • Eine Signatur schützt genau ihren Byte-Bereich. Später angehängte Revisionen sind separat. Die Engine erweitert die Abdeckung nicht rückwirkend.
  • NextPDF erzeugt und pflegt die Strukturen; es urteilt nicht. Ob eine Signatur vertrauenswürdig ist, hängt von den Vertrauensankern und der Richtlinie des Prüfers ab, die außerhalb der Engine liegen.
  • B-LTA macht eine Signatur nicht von selbst ewig. Es ermöglicht unbegrenzte Gültigkeit nur, wenn die erneute Stempelschleife planmäßig läuft, bevor jedes Zeitstempelzertifikat abläuft.
  • Diese Seite beschreibt die Premium-Archivierungsoberfläche auf Verhaltensebene. Sie behauptet keine Anerkennung durch ein bestimmtes Gericht oder eine Behörde.
PAdES signing and long-term validity — edition availability
Edition Availability
Core

Core stellt das SignatureLevel-Enum und die eingefrorene Document::setSignature()-Oberfläche bereit (Fail-Fast). Der verdrahtete, tieferliegende Orchestrator deckt das Baseline-Signieren ab. Die Langzeit-Archivierungswartung ist nicht in Core enthalten.

Pro

PAdES-Baseline-Signieren (B-B / B-T) über den Orchestrator ist verfügbar.

Enterprise

Fügt B-LT / B-LTA hinzu, den Document Security Store und die signaturweise VRI- Wartung, die LTV-Integritätsprüfung und die Dokument-Zeitstempel-Archivierungsschleife für unbegrenzte Gültigkeit.

  • PAdES-Baseline-ProfileB-B, B-T, B-LT, B-LTA als Abstufung und Auswahlhilfe.
  • Langzeitvalidierung — warum eine heute überprüfbare Signatur in zehn Jahren versagen kann und wie LTV die Nachweise einbettet.
  • Integrationsentscheidungsleitfaden — welches Ökosystempaket zu einem Signierworkflow passt, einschließlich der Nahtstelle für die menschliche Freigabe in NextPDF Connect.
  • PAdES — PDF Advanced Electronic Signatures: die ETSI-Profilfamilie, die definiert, wie eine fortgeschrittene elektronische Signatur in einem PDF mitgeführt wird.
  • Byte-Bereich — die zusammenhängende Spanne von Datei-Bytes, über die eine Signatur berechnet wird; Inhalte außerhalb davon sind durch diese Signatur nicht geschützt.
  • Signaturstufe (B-B / B-T / B-LT / B-LTA) — die PAdES-Abstufung: wer signiert hat, wann, mit eingebettetem Validierungsmaterial und der Möglichkeit des erneuten Stempelns für unbegrenzte archivische Gültigkeit.
  • TSA — Time-Stamping Authority (Zeitstempelstelle): ein RFC 3161-Dienst, der bestätigt, dass ein Dokumentzustand zu einem bestimmten UTC-Zeitpunkt existierte.
  • DSS (Document Security Store) — der in der Datei enthaltene Speicher für Zertifikate, OCSP-Antworten und CRLs, die zur Validierung einer Signatur nach Ablauf ihres Zertifikats benötigt werden.
  • LTV (Long-Term Validation) — hält eine Signatur über die Zeit überprüfbar, indem die Validierungsnachweise eingebettet und erneut gestempelt werden.
  • Fail-Fast — die Verweigerung, ein irreführendes Artefakt zu erzeugen, indem stattdessen ein umsetzbarer Fehler ausgelöst wird, statt eine stillschweigend falsche Datei auszugeben.