Zum Inhalt springen
getnextpdf.com

Wie PDF-Verschlüsselung wirklich funktioniert — und ihre Grenzen

Spec: ISO 32000-2, §7.6

PDF-Verschlüsselung verwürfelt die Wörter und Bilder in einem Dokument, sodass nur jemand mit dem richtigen Passwort sie lesen kann. Es ist echte Kryptografie, und sie ist gut in der einen Aufgabe, die sie hat. Sie wird auch weithin missverstanden, weil dieselbe Funktion einen zweiten Mechanismus mit sich trägt — Berechtigungs-Flags —, der wie ein Schloss aussieht und keines ist.

Diese Seite trennt die beiden. Sie erklärt, was AES-256 tatsächlich schützt, wozu die beiden Passwörter wirklich da sind und wo die ehrliche Grenze sitzt.

Menschen greifen zur Verschlüsselung, wenn ein Dokument heikel ist: ein Vertrag, eine Gehaltsabrechnung, ein ärztliches Schreiben. Die Erwartung ist nachvollziehbar — halte das vertraulich und hindere Leute daran, es zu drucken oder zu kopieren. PDF erfüllt die erste Hälfte dieses Wunsches überzeugend und die zweite Hälfte nur auf Vertrauensbasis.

Die beiden zu verwechseln, ist die Stelle, an der die Kosten landen. Ein Team markiert eine Datei mit „kein Kopieren”, vertraut darauf, dass die Plattform es durchsetzt, und liefert aus. Monate später kopiert jemand den Text in dreißig Sekunden mit einem anderen Reader, und die Annahme, die nie hielt, verwandelt sich leise in ein Leck. Die Verschlüsselung wurde nie gebrochen. Sie wurde lediglich gebeten, etwas zu tun, das sie nicht tut.

  • Verschlüsselung schützt Vertraulichkeit. Mit AES-256 ist der String- und Stream-Inhalt eines PDFs echtes Chiffrat. Ohne den Schlüssel ist er unlesbar.
  • Das Benutzerpasswort öffnet das Dokument. Geben Sie es ein, und Sie können den Inhalt sehen. Ohne es gibt es nichts zu lesen.
  • Das Eigentümerpasswort regelt die Berechtigungen. Es ist der „Vollrechte”-Schlüssel. Die Berechtigungs-Flags, die es bewacht — Drucken, Kopieren, Ändern — sind im verschlüsselten Dokument aufgezeichnet.
  • Berechtigungs-Flags sind reader-kooperativ. Sie sind eine Bitte an einen wohlerzogenen Reader, keine Durchsetzung. Ein Reader, der sie ignoriert, kann trotzdem drucken, kopieren oder bearbeiten.
  • Die Struktur bleibt sichtbar. Verschlüsselung verbirgt Inhalt, nicht das Skelett des Dokuments — Seitenanzahl und Objektlayout sind nicht das Geheimnis.

PDF-Verschlüsselung ist definiert durch Spec: ISO 32000-2, §7.6. Das Modell ist präzise: Ein Security Handler leitet einen Dateiverschlüsselungsschlüssel aus einem Passwort ab, die Strings und Streams des Dokuments werden mit diesem Schlüssel verschlüsselt, und ein Verschlüsselungs-Dictionary — referenziert vom Datei-Trailer — zeichnet auf, welche Chiffre verwendet wurde, wie lang der Schlüssel ist und welche Berechtigungen der Autor deklariert hat.

Die moderne, empfohlene Chiffre ist AES mit einem 256-Bit-Schlüssel. Wenn Sie ein PDF auf diese Weise verschlüsseln, wird die lesbare Nutzlast — der Text, den Sie extrahieren würden, die Bildbytes, die Schriftdaten — in Chiffrat verwandelt. Die äußere Gestalt des Dokuments bleibt absichtlich lesbar: Ein Reader muss das Verschlüsselungs-Dictionary finden und die Schlüssellänge erfahren, bevor er Sie nach einem Passwort fragen kann. Deshalb versteht man Verschlüsselung am besten als Inhalts-Vertraulichkeit, nicht als Gesamtdatei-Undurchsichtigkeit.

Die beiden Passwörter sitzen auf verschiedenen Ebenen, und die Unterscheidung ist der Teil, der sich am meisten lohnt, richtig zu verstehen.

  1. A password is suppliedEither the user password (open) or the owner password (full rights).
  2. The security handler derives the keyISO 32000-2 §7.6.4 turns the password into the file encryption key.
  3. Content is decryptedAES-256 turns the encrypted strings and streams back into readable bytes.
  4. Permissions are consultedThe owner key grants all rights; the user key is bound by the declared permission flags — if the reader chooses to honour them.
How a password becomes readable content: the user password (or the owner password) is run through the standard security handler's key-derivation routine to recover the file encryption key, which then decrypts the document's strings and streams. The owner password additionally unlocks the full set of permissions; the user password is bound by whatever permission flags the author declared.

Das Benutzerpasswort ist das Öffnungspasswort. Es beantwortet eine Frage: Dürfen Sie den Inhalt überhaupt sehen? Kein Benutzerpasswort, kein lesbares Dokument — dieser Teil ist kryptografisch durchgesetzt, denn ohne den abgeleiteten Schlüssel gibt es nichts zu entschlüsseln.

Das Eigentümerpasswort ist das Berechtigungspasswort. Eine Datei kann von jedem geöffnet werden (kein Benutzerpasswort) und dennoch ein Eigentümerpasswort deklarieren, das die „Vollrechte”-Aktionen absichert — Drucken in hoher Auflösung, Text kopieren, die Datei ändern. Entscheidend ist: Die Berechtigungsbits, die das Eigentümerpasswort schützt, sind durch den Standard-Security-Handler integritätsgeschützt: Eine Manipulation an ihnen wird von einem konformen Reader erkannt und zurückgewiesen, weil der Handler die deklarierten Berechtigungen an die Verschlüsselungsschlüssel bindet. Die Bits sind nicht buchstäblich unlesbare oder unveränderliche Bytes — ein Angreifer kann sie ändern —, aber eine veränderte Kopie wird nicht validieren, sodass ein konformer Reader sie als beschädigt behandelt. Sie sind manipulationsevident. Sie sind schlicht nicht selbstdurchsetzend.

Verschlüsselungseinstellungen sind einfach auszudrücken. Worauf es ankommt, ist, das Ergebnis ehrlich zu lesen: Dies konfiguriert eine Absicht, und der Berechtigungsteil dieser Absicht ist beratend.

<?php
declare(strict_types=1);
use NextPDF\Core\Document;
use NextPDF\Security\Encryption\EncryptionMode;
use NextPDF\Security\Encryption\Permission;
$document = Document::createStandalone();
$document->setTitle('Confidential Offer');
$document->addPage();
// Confidentiality is real: AES-256 means the content is unreadable
// without the user password. This half is cryptographically enforced.
$document->encrypt(
userPassword: 'open-sesame',
ownerPassword: 'full-rights-key',
mode: EncryptionMode::Aes256,
// Permissions are a declared request to a cooperating reader,
// recorded inside the encrypted document — not a hard lock.
permissions: Permission::Print->value | Permission::CopyContent->value,
);
$document->save('offer.pdf');

Das Benutzer- und das Eigentümerpasswort sind verschiedene Schlüssel mit verschiedenen Aufgaben. Das permissions-Argument benennt, was ein wohlerzogener Reader erlauben sollte. Es sind ehrliche Metadaten, durch den Security Handler integritätsgeschützt, sodass eine Manipulation erkennbar ist — und das ist die Obergrenze dessen, was eine erzeugende Bibliothek versprechen kann.

Die Falle besteht darin, „Berechtigungen” als „Durchsetzung” zu lesen. Es ist intuitiv: Das Flag sagt Drucken nicht erlaubt, also ist das Drucken sicher blockiert. Aber nichts im PDF kann hinausgreifen und die Drucktaste eines Readers deaktivieren. Die Berechtigungs-Ganzzahl ist aufgezeichnet, damit ein kooperierender Reader sie befolgt. Ein Reader, der sich entscheidet, nicht zu kooperieren — und mehrere tun das nicht —, kann frei drucken, kopieren und bearbeiten.

NextPDF ist hierin bewusst. Der Kern-Verschlüsselungspfad behandelt die Berechtigungs-Flags als deklarierte Absicht und gibt nie vor, sie durchzusetzen. Wenn Sie brauchen, dass Aktionen wirklich verhindert werden, muss diese Kontrolle außerhalb der Datei leben — darin, wem Sie das Dokument geben, oder in einem Zugriffskontrollsystem darum herum.

Seien Sie präzise darüber, was jede Hälfte garantiert. Verschlüsselung (die Benutzerpasswort-Ebene) ist eine echte Vertraulichkeitskontrolle: stark, wenn das Passwort stark ist, und nur so gut wie das Geheimnis, das Sie wählen. Berechtigungen (die Eigentümerpasswort-Ebene) sind manipulationsevidente Metadaten, keine Zugriffskontrolle.

Was Sie vielleicht erwartenWas Verschlüsselung tatsächlich liefert
Niemand kann den Inhalt ohne das Passwort lesenWahr. Mit AES-256 und einem starken Benutzerpasswort sind die Strings und Streams ohne den Schlüssel unlesbar. Echt durchgesetzt.
Niemand kann „kein Kopieren” in „Kopieren erlaubt” umschreibenManipulationsevident, nicht unmöglich. Die Berechtigungs-Flags sind durch den Standard-Security-Handler integritätsgeschützt: Ein Außenstehender kann die Bytes bearbeiten, aber die veränderte Kopie wird nicht validieren, sodass ein konformer Reader die Änderung erkennt und zurückweist.
Der Reader wird daran gehindert, zu kopieren oder zu druckenVon keinem PDF-Erzeuger garantiert. Ein nicht kooperierender Reader kann die Flags ignorieren. Dies ist eine Eigenschaft des Formats, keine Einschränkung von NextPDF.

Zwei weitere Abgrenzungen lohnen sich, klar benannt zu werden. Erstens schützt Verschlüsselung Inhalt, nicht die Struktur des Dokuments: Objektlayout und Seitenanzahl bleiben sichtbar, was normal und notwendig ist, damit ein Reader das Verschlüsselungs-Dictionary lokalisieren kann. Zweitens kann ein verschlüsseltes PDF nicht zugleich Archivkonformität nach PDF/A beanspruchen — dieses Profil verbietet den Encrypt-Eintrag, also wählen Sie das eine oder das andere. Die Troubleshooting-Seite zu Verschlüsselung und Berechtigungen behandelt die konkreten Ausnahmen und die PDF/A-Verweigerung im Detail.

  • AES-256 — der Advanced Encryption Standard mit einem 256-Bit-Schlüssel, die empfohlene moderne Chiffre für die PDF-Inhaltsverschlüsselung.
  • Benutzerpasswort (Öffnungspasswort) — das Geheimnis, das erforderlich ist, um ein verschlüsseltes Dokument zu öffnen und zu lesen. Ohne es kann der Inhalt nicht entschlüsselt werden.
  • Eigentümerpasswort (Berechtigungspasswort) — das „Vollrechte”-Geheimnis, das die Berechtigungs-Flags regelt. Ein Dokument kann eines haben, ohne ein Benutzerpasswort zum Öffnen zu verlangen.
  • Berechtigungs-Flags — die deklarierte Druck-/Kopier-/Änderungsabsicht, die im Verschlüsselungs-Dictionary gespeichert ist. Integritätsgeschützt, sodass eine Manipulation erkennbar ist, aber nur von einem kooperierenden Reader befolgt.
  • Security Handler — die Komponente, die den Dateiverschlüsselungsschlüssel aus einem Passwort ableitet, definiert durch den Standard-Security-Handler in ISO 32000-2.
  • Reader-kooperativ — eine Kontrolle, die davon abhängt, dass die konsumierende Software sich entscheidet, ihr zu gehorchen, statt von der Datei selbst durchgesetzt zu werden.