Fehlerbehebung: Verschlüsselung und Berechtigungs-Flags
Geltungsbereich und Grenzen
Abschnitt betitelt „Geltungsbereich und Grenzen“Diese Einträge behandeln Entschlüsselungsfehler, die die Engine über NextPDF\Exception\EncryptionException und NextPDF\Security\Exception\DecryptionFailedException auslöst, sowie die Grenzen von PDF-Berechtigungs-Flags.
Zunächst eine Abgrenzung, weil sie das häufigste Missverständnis ausräumt: PDF-Berechtigungs-Flags im Verschlüsselungs-Dictionary halten die Absicht des Autors fest. Sie sind kein Zugriffskontrollmechanismus, den diese Bibliothek durchsetzt. Ein Reader, der die Flags ignoriert, kann den Inhalt trotzdem drucken, kopieren oder verändern. Verstehen Sie die Flags als Bitte an einen kooperierenden Reader, nicht als Durchsetzung.
Eintrag: Verschlüsselungsvorgang schlägt fehl
Abschnitt betitelt „Eintrag: Verschlüsselungsvorgang schlägt fehl“- Symptom.
EncryptionExceptionmit einer Meldung der FormEncryption operation "<op>" failed using algorithm "<algorithm>". - Wahrscheinliche Ursache. Der Verschlüsselungsvorgang konnte nicht ausgeführt werden — typischerweise wegen einer fehlenden oder falsch konfigurierten OpenSSL-Erweiterung, ungültigen Schlüsselmaterials oder einer ungültigen IV-Größe an der Verschlüsselungsgrenze.
- Belege / Diagnose.
getContext()liefertalgorithmundoperation. Der Wert vonoperationist einer vonencrypt,decryptoderkey_derivationund gibt an, welche Stufe fehlgeschlagen ist. - Lösung.
- Stellen Sie sicher, dass die OpenSSL-PHP-Erweiterung installiert und geladen ist.
- Lesen Sie das Feld
operation, um die fehlschlagende Stufe zu ermitteln. - Prüfen Sie bei
key_derivationdie Passwort- oder Schlüsseleingaben. - Führen Sie den Aufruf erneut aus.
- Verwandt. Exception-Referenz.
Eintrag: Entschlüsselung schlägt aus einem strukturellen Grund fehl
Abschnitt betitelt „Eintrag: Entschlüsselung schlägt aus einem strukturellen Grund fehl“- Symptom.
DecryptionFailedExceptionmit einer Meldung der FormDecryption failed for "<algorithm>": <reason>. - Wahrscheinliche Ursache. Der Chiffretext konnte aus einem Grund verarbeitet werden, der nicht auf Manipulation zurückgeht — zum Beispiel wegen eines abgeschnittenen Chiffretexts, eines fehlenden IV oder eines falschen Schlüssels, der an der API-Grenze übergeben wurde. Die Integritätsprüfung wurde nicht ausgeführt, weil nicht genügend Material für die Auswertung vorhanden war.
- Belege / Diagnose.
getContext()liefertalgorithmundreason.DecryptionFailedExceptionwird in der Quelle als vonTamperedDataExceptionunterschieden dokumentiert: Diese Exception ist ein Konfigurations- oder Transportfehler, kein Hinweis auf Manipulation. Behandeln Sie sie für sich genommen nicht als Sicherheitsvorfall. - Lösung.
- Lesen Sie
reason, um den strukturellen Defekt zu erkennen, zum Beispielciphertext shorter than IV+tag. - Prüfen Sie, dass der Chiffretext nicht abgeschnitten übertragen wurde.
- Stellen Sie sicher, dass der an der Grenze übergebene Schlüssel dem Schlüssel entspricht, mit dem das Dokument verschlüsselt wurde.
- Führen Sie den Aufruf erneut aus.
- Lesen Sie
- Verwandt. Signatur- und Zeitstempel-Fehler.
Eintrag: Eine Exception wegen „manipulierter Daten“ wird ausgelöst
Abschnitt betitelt „Eintrag: Eine Exception wegen „manipulierter Daten“ wird ausgelöst“- Symptom.
NextPDF\Security\Exception\TamperedDataExceptionstattDecryptionFailedException. - Wahrscheinliche Ursache. Die Integritätsprüfung wurde ausgeführt und ist fehlgeschlagen. Das unterscheidet sich von einem strukturellen Entschlüsselungsfehler: Es war genügend Material vorhanden, um die Integrität auszuwerten, und die Prüfung bestand nicht.
- Belege / Diagnose. Die Quelle stellt die beiden Klassen einander gegenüber:
DecryptionFailedExceptionist strukturell und kein Sicherheitsvorfall;TamperedDataExceptionzeigt an, dass der authentifizierte Inhalt nicht verifiziert wurde. - Lösung.
- Behandeln Sie die Eingabe als nicht vertrauenswürdig; verwenden Sie den entschlüsselten Inhalt nicht.
- Beziehen Sie das Dokument erneut aus einer vertrauenswürdigen Quelle.
- Falls der Fehler bei einer als zuverlässig bekannten Quelle bestehen bleibt, erfassen Sie
getContext()für einen Incident-Report.
- Verwandt. Signatur- und Zeitstempel-Fehler.
Eintrag: Berechtigungs-Flags stoppen eine nachgelagerte Aktion nicht
Abschnitt betitelt „Eintrag: Berechtigungs-Flags stoppen eine nachgelagerte Aktion nicht“- Symptom. Ein Dokument wurde mit gesetzten Berechtigungs-Flags erzeugt — zum Beispiel mit untersagtem Kopieren oder Drucken — und dennoch kopiert oder druckt ein Reader den Inhalt weiterhin.
- Wahrscheinliche Ursache. Das ist die erwartete Grenze, kein Defekt. Die an den Core-Builder des Verschlüsselungs-Dictionarys übergebene Berechtigungs-Ganzzahl wird von dieser Bibliothek nicht zur Durchsetzung verwendet. Die Flags sind beratende Metadaten; ein Reader, der sie nicht beachtet, wird von NextPDF nicht blockiert.
- Belege / Diagnose.
src/Security/Encryption/EncryptionDictionaryBuilder.phpdeklariertbuildDict(int $permissions, string $fileId), wobei der Parameter alsignored; retained for forward compatibilitydokumentiert ist. Die Methode beginnt mitunset($permissions, $fileId). Die vonsrc/Inspect/PdfPermissions.phpbereitgestellten Berechtigungs-Flags sind schreibgeschützte Inspektionsfelder, keine Durchsetzungsschicht. - Lösung.
- Verlassen Sie sich nicht darauf, dass Berechtigungs-Flags Drucken, Kopieren oder Verändern verhindern. Sie können von einer Erzeuger-Bibliothek nicht durchgesetzt werden.
- Wenn Zugriff beschränkt werden muss, steuern Sie die Verteilung der Datei selbst oder setzen Sie ein Zugriffskontrollsystem außerhalb des PDF ein.
- Verwenden Sie
PdfPermissionsnur, um die Flags zu melden, die ein vorhandenes Dokument deklariert, nicht um zu behaupten, dass diese Aktionen verhindert werden.
- Verwandt. Signatur- und Zeitstempel-Fehler.
Eintrag: Verschlüsselung wird unter PDF/A abgelehnt
Abschnitt betitelt „Eintrag: Verschlüsselung wird unter PDF/A abgelehnt“- Symptom.
NextPDF\Security\Exception\IncompatiblePdfAModeException, wenn ein Build sowohl PDF/A aktiviert als auch Verschlüsselung anfordert. - Wahrscheinliche Ursache. Das PDF/A-Profil verbietet den Schlüssel
Encryptim Trailer. Die Engine lehnt die Kombination in jeder Aufrufreihenfolge ab. - Belege / Diagnose. Siehe den Eintrag zu PDF/A und PDF/UA für die zitierte Klausel, die Felder von
getContext()und den Failure-Path-Test. - Lösung.
- Entscheiden Sie, ob das Dokument Archivkonformität oder Verschlüsselung benötigt.
- Entfernen Sie den Aufruf für die Eigenschaft, die Sie nicht benötigen.
- Führen Sie die Pipeline erneut aus.
- Verwandt. PDF/A- und PDF/UA-Validierung.
Sonderfälle & Fallstricke
Abschnitt betitelt „Sonderfälle & Fallstricke“DecryptionFailedExceptionundTamperedDataExceptionbedeuten Unterschiedliches: struktureller Fehler gegenüber fehlgeschlagener Integrität. Verzweigen Sie anhand der Klasse, nicht anhand der Meldung.- Der Core-Builder des Verschlüsselungs-Dictionarys ignoriert die Berechtigungs-Ganzzahl; ein Build, der auf Berechtigungsdurchsetzung durch das Core-Paket setzt, beruht auf einem Missverständnis.
PdfPermissionswird nur für verschlüsselte Dokumente bei voller Inspektionstiefe befüllt und spiegelt die deklarierten Flags wider. Ein befülltes Feld bedeutet nicht, dass die Aktion verhindert wird.
Siehe auch
Abschnitt betitelt „Siehe auch“- Exception-Referenz
- Signatur- und Zeitstempel-Fehler
- PDF/A- und PDF/UA-Validierung
- Wissensdatenbank-Index
Glossar: Berechtigungs-Flags · authentifizierte Entschlüsselung