Zum Inhalt springen

Sicherheitsmodell für Signaturen und Verschlüsselung

Diese Seite beschreibt das Sicherheitsmodell für die beiden kryptografischen Funktionsflächen, die die Core-Engine bereitstellt: Dokument-Verschlüsselung (AES-256) und Dokument-Signierung (CMS/PAdES). Sie hält fest, was jeder Mechanismus schützt, was er nicht schützt und wo die Vertrauensgrenze verläuft.

Grenze. Dass ein kryptografischer Mechanismus unterstützt wird, ist keine Garantie für seine Sicherheit in Ihrem Deployment. Die Stärke eines verschlüsselten Dokuments hängt vom Passwort und der gewählten Schlüsselverwahrung ab. Die Bedeutung einer Signatur hängt vom Zertifikat, vom Vertrauensanker, von der Zeitstempelstelle und von der Prüfrichtlinie ab. Das Zertifikat, der Vertrauensanker, die Zeitstempelstelle und die Prüfrichtlinie liegen allesamt außerhalb dieser Bibliothek. Diese Seite beschreibt den Mechanismus; sie zertifiziert das Ergebnis nicht.

Terminal-Fenster
composer require nextpdf/core:^3

ext-openssl wird für die Signier- und CMS-Pfade benötigt.

Verschlüsselung in der Core-Engine basiert auf dem AES-256-Sicherheits-Handler nach ISO 32000-2 §7.6 (AESV3, Revision 6) (iso32000_2_sec7#x1.x65.p29). Sie sorgt für Vertraulichkeit: Eine Partei ohne das Passwort kann String- und Stream-Inhalte nicht lesen. Sie sorgt nicht für Integrität oder Authentizität. Ein Ciphertext kann dennoch abgeschnitten oder ersetzt werden. Einen abgeschnittenen oder ersetzten Ciphertext zu erkennen, ist Aufgabe einer Signatur oder eines Dokument-MAC, nicht des Verschlüsselungs-Handlers.

Berechtigungen (Drucken, Kopieren, Ändern) sind ein eigenständiges Konzept und eine häufige Vertrauensfalle. Die Berechtigungs-Flags von ISO 32000-2 sind von der Kooperation des Readers abhängig (iso32000_2_sec7#x1.x71.p27). Ein konformer Reader hält sie ein, aber sie sind nur beratende Metadaten, keine kryptografische Zugriffskontrolle. Ein nicht kooperierendes Tool kann sie ignorieren. Die Engine gibt sie getreu aus; erzwingen kann sie sie nicht.

Signierung erfolgt über eine CMS-SignedData-Struktur, eingebettet gemäß ISO 32000-2 §12.8. Der signierte Byte-Bereich ist ein direktes Objekt, und der Digest schließt bewusst den Signaturwert Contents aus (iso32000_2_sec12#x1.x121.p45), sodass die Signatur das Dokument abdeckt, aber nicht sich selbst.

Diese Seite dokumentiert Signaturen nicht noch einmal. Die Einstiegspunkte der Verschlüsselung und der Signier-Orchestrator werden unter /modules/core/security/ und /modules/core/security/signing/ beschrieben. In diesem Modell geht es um Bedeutung und Grenzen, nicht um Methodensignaturen.

Verschlüsselung schützt die Vertraulichkeit gegenüber Parteien ohne das Passwort — und nicht mehr:

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = new Document();
// AES-256 (AESV3 R6). The owner/user passwords gate read access only.
// Permission flags below are advisory: a conforming reader honors them.
$doc->encrypt(
userPassword: 'open-secret',
ownerPassword: 'owner-secret',
);
$doc->save('confidential.pdf');

Ein produktiver Signierablauf wendet eine CMS-/PAdES-Baseline-Signatur mit einem in Software gehaltenen Schlüssel an. Die Core-Edition erzeugt die Stufe PAdES B-B. Mit konfigurierter Zeitstempelstelle erzeugt die Core-Edition PAdES B-T, also B-B plus ein einzelnes unsigniertes RFC 3161-signature-time-stamp-Attribut:

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
use NextPDF\Security\Signature\CertificateInfo;
use NextPDF\Security\Signature\SignatureLevel;
$cert = CertificateInfo::fromPkcs12('signer.p12', 'pin');
$doc = new Document();
// B-B is the default. B-T adds a trusted timestamp over the signature value.
$doc->setSignature($cert, SignatureLevel::PAdES_B_B);
$doc->save('signed.pdf');

PAdES B-T ist exakt B-B plus ein RFC 3161-signature-time-stamp-Attribut, das ungesigniert im CMS-SignerInfo transportiert wird (rfc5652#p603). Der Zeitstempel bindet den Signaturwert an eine vertrauenswürdige Zeit, die von einer Zeitstempelstelle bezogen wird (rfc3161#p208). B-T fügt kein Validierungsdaten-Dictionary, keine Sperrinformationsstruktur und keine Archiv-Zeitstempel-Schleife hinzu. Das sind eigenständige, separat abgegrenzte Langzeitstufen, die nicht Teil der B-B-/B-T-Fläche sind und für diese Seite außerhalb des Geltungsbereichs liegen.

U-1. NextPDF behauptet keine eigenständige ETSI EN 319 142-1- Zertifizierung für PAdES B-T. EN 319 142-1 ist nicht in dem hier verwendeten Verifikationskorpus enthalten. Die Anforderung an den B-T-signature-time-stamp wird anhand von ETSI EN 319 122-1 §5.3 geprüft — die CAdES-Grundlage, die die EN 319 142 PAdES-Familie per Referenz importiert (etsi_en_319_122_1#6.x40.p96) — zusammen mit RFC 3161, RFC 5652 und ISO 32000-2 §12.8. Die Unterstützung des B-T-Profils ist keine Konformitäts- oder Rechtsgültigkeitszertifizierung. Diese Feststellung trifft ein unabhängiger Validator.

  • Verschlüsselung ≠ Integrität. Auch einem Reader, der das Dokument öffnen kann, lässt sich eine manipulierte Kopie unterschieben. Nur eine Signatur (oder ein Dokument-MAC) erkennt das. „Manipulationssicher“ ist keine Eigenschaft, die der Verschlüsselungs-Handler bietet, und der Begriff wird nicht als Produktaussage verwendet.
  • Das Vorhandensein einer Signatur belegt nicht ihre Gültigkeit. Dass ein Dokument ein Signatur-Dictionary trägt, sagt nichts darüber aus, ob das Zertifikat vertrauenswürdig, nicht abgelaufen oder nicht widerrufen ist. Die Gültigkeit festzustellen, ist eine Operation auf der Prüferseite, geregelt durch die Richtlinie der vertrauenden Partei, nicht durch den Signierer.
  • Das Vertrauen in den Zeitstempel ist extern. Ein B-T-Zeitstempel ist nur so aussagekräftig wie das Vertrauen, das der Prüfer in die Zeitstempelstelle setzt, die ihn ausgestellt hat. Die Bibliothek bezieht das Token und bettet es ein. Sie bürgt nicht für die TSA.
  • Die FIPS-Lage ist umgebungsbedingt. Der Betrieb auf einem FIPS-validierten kryptografischen Modul ist eine Eigenschaft der Betriebsumgebung und des Moduls (fips_140_3#x12), nichts, was eine PHP-Bibliothek im Namen ihres Aufrufers behaupten kann.

Der Signaturpfad berechnet einen Byte-Bereichs-Digest und eine CMS-Struktur. Die B-T-Erweiterung fügt einen synchronen Roundtrip zur Zeitstempelstelle hinzu. Verschlüsselung ist eine symmetrische Operation pro String und pro Stream. Keiner der beiden Pfade dominiert ein typisches Rendering. Der Netzwerk-Roundtrip für B-T ist der variable Kostenfaktor und hängt von der TSA-Wahl des Aufrufers ab.

Die Grenzaussagen, für Reviewer als durchsetzbare Regeln neu formuliert:

  1. Nur Vertraulichkeit. AES-256-Verschlüsselung schützt Inhalte vor Parteien ohne das Passwort. Sie gewährleistet weder Integrität noch Authentizität noch Zugriffskontrolle (iso32000_2_sec7#x1.x65.p29).
  2. Berechtigungen sind beratend. Berechtigungs-Flags sind von der Kooperation des Readers abhängig und werden nicht kryptografisch erzwungen (iso32000_2_sec7#x1.x71.p27). Keine Produktformulierung behauptet, dass sie eine Aktion verhindern.
  3. Auf dieser Seite nur B-B und B-T. Die hier dokumentierte Signier-Fläche von Core/Pro deckt B-B und seine B-T-Zeitstempel-Erweiterung ab, wobei jede B-T-Erwähnung mit dem U-1-Vorbehalt oben verbunden ist. Langzeitarchivierungsstufen sind eine separate, kostenpflichtige Editions-Fläche und werden hier bewusst nicht beschrieben. Auf dieser Seite werden keine Validierungsdaten-, Sperrinformations- oder Archiv-Zeitstempel-Fähigkeiten behauptet.
  4. Keine Aussage zur Rechtsgültigkeit. Eine erzeugte Signatur ist ein kryptografisches Artefakt. Ob sie rechtsgültig ist, hängt von der Rechtsordnung, der Zertifikatsrichtlinie und der vertrauenden Partei ab — nicht von dieser Bibliothek.

Unterstützung bedeutet nicht Konformität. Die Engine erzeugt Ausgaben, die die zitierten Konstrukte aus ISO 32000-2, RFC 3161, RFC 5652 und ETSI EN 319 122-1 verwenden. Die Engine behauptet keine Konformität mit PAdES, CAdES oder eIDAS. FIPS 140-3-Validierung ist eine Eigenschaft des Moduls und der Umgebung (fips_140_3#x12), keine Aussage der Bibliothek. Jede Konformitäts- oder Rechtsgültigkeitsfeststellung trifft ein unabhängiger Validator oder Gutachter.