Problemen oplossen: versleuteling en machtigingsvlaggen
Reikwijdte en beperking
Sectie met titel “Reikwijdte en beperking”Gebruik deze items om ontsleutelingsfouten op te lossen die de engine meldt via NextPDF\Exception\EncryptionException en NextPDF\Security\Exception\DecryptionFailedException, en om de grenzen van Portable Document Format (PDF)-machtigingsvlaggen te begrijpen.
Begin met die beperking, omdat daarmee het meest voorkomende misverstand wordt voorkomen: PDF-machtigingsvlaggen in de versleutelingsdictionary leggen de intentie van de auteur vast. Ze vormen geen toegangscontrolemechanisme dat door deze library wordt afgedwongen. Een reader die de vlaggen negeert, kan de inhoud nog steeds afdrukken, kopiëren of wijzigen. Beschouw de vlaggen als een verzoek aan een meewerkende reader, niet als afdwinging.
Item: versleutelingsbewerking is mislukt
Sectie met titel “Item: versleutelingsbewerking is mislukt”- Symptoom.
EncryptionExceptionmet een bericht in de vormEncryption operation "<op>" failed using algorithm "<algorithm>". - Waarschijnlijke oorzaak. De cipher-bewerking kon niet worden uitgevoerd, meestal omdat de OpenSSL-extensie ontbreekt of verkeerd is geconfigureerd, het sleutelmateriaal ongeldig is, of de initialisatievector (IV) een ongeldige grootte heeft aan de ciphergrens.
- Bewijs / diagnose.
getContext()retourneertalgorithmenoperation. De waarde vanoperationis een vanencrypt,decryptofkey_derivation, zodat je kunt vaststellen welke fase is mislukt. - Oplossing.
- Controleer of de OpenSSL PHP-extensie is geïnstalleerd en geladen.
- Gebruik het veld
operationom de fase te vinden die mislukt. - Verifieer bij
key_derivationde wachtwoord- of sleutelinvoer. - Voer de aanroep opnieuw uit.
- Gerelateerd. Exception-referentie.
Item: ontsleuteling mislukt door een structurele oorzaak
Sectie met titel “Item: ontsleuteling mislukt door een structurele oorzaak”- Symptoom.
DecryptionFailedExceptionmet een bericht in de vormDecryption failed for "<algorithm>": <reason>. - Waarschijnlijke oorzaak. De ciphertext kon niet worden verwerkt om een reden die niet op manipulatie wijst, zoals afgekapte ciphertext, een ontbrekende IV, of de verkeerde sleutel die aan de application programming interface (API)-grens is doorgegeven. De integriteitscontrole is niet uitgevoerd omdat er onvoldoende materiaal was om die te evalueren.
- Bewijs / diagnose.
getContext()retourneertalgorithmenreason. De brondocumentatie onderscheidtDecryptionFailedExceptionvanTamperedDataException: deze exception duidt op een configuratie- of transportfout, niet op manipulatie. Behandel dit op zichzelf niet als een beveiligingsincident. - Oplossing.
- Lees
reasonom het structurele defect te identificeren, bijvoorbeeldciphertext shorter than IV+tag. - Verifieer dat de ciphertext zonder afkapping is getransporteerd.
- Bevestig dat de sleutel die aan de grens is doorgegeven, de sleutel is die is gebruikt om het document te versleutelen.
- Voer de aanroep opnieuw uit.
- Lees
- Gerelateerd. Handtekening- en tijdstempelfouten.
Item: er wordt een ‘tampered data’-exception gegooid
Sectie met titel “Item: er wordt een ‘tampered data’-exception gegooid”- Symptoom. Je ontvangt
NextPDF\Security\Exception\TamperedDataExceptionin plaats vanDecryptionFailedException. - Waarschijnlijke oorzaak. De integriteitscontrole is uitgevoerd en mislukt. Dit verschilt van een structurele ontsleutelingsfout: er was voldoende materiaal aanwezig om de integriteit te evalueren, maar de integriteit bleek niet intact.
- Bewijs / diagnose. De broncode onderscheidt de twee klassen:
DecryptionFailedExceptionis structureel en geen beveiligingsincident;TamperedDataExceptiongeeft aan dat de geverifieerde inhoud de validatie niet heeft doorstaan. - Oplossing.
- Beschouw de invoer als niet-vertrouwd; gebruik de ontsleutelde inhoud niet.
- Haal het document opnieuw op uit een vertrouwde bron.
- Als de fout aanhoudt bij een bekende, betrouwbare bron, leg dan
getContext()vast voor een incidentrapport.
- Gerelateerd. Handtekening- en tijdstempelfouten.
Item: machtigingsvlaggen verhinderen geen vervolgactie
Sectie met titel “Item: machtigingsvlaggen verhinderen geen vervolgactie”- Symptoom. Er is een document geproduceerd met machtigingsvlaggen ingesteld — bijvoorbeeld kopiëren of afdrukken niet toegestaan — maar een reader kopieert of drukt de inhoud toch af.
- Waarschijnlijke oorzaak. Dit is de verwachte beperking, geen defect. De machtigingsinteger die aan de core-versleutelingsdictionarybuilder wordt doorgegeven, wordt door deze library niet afgedwongen. De vlaggen zijn adviserende metadata; een reader die ze niet respecteert, wordt niet geblokkeerd door NextPDF.
- Bewijs / diagnose.
src/Security/Encryption/EncryptionDictionaryBuilder.phpdeclareertbuildDict(int $permissions, string $fileId), en documenteert de parameter alsignored; retained for forward compatibility. De methode begint metunset($permissions, $fileId). De machtigingsvlaggen die doorsrc/Inspect/PdfPermissions.phpworden weergegeven, zijn alleen-lezen inspectievelden, geen afdwingingslaag. - Oplossing.
- Vertrouw niet op machtigingsvlaggen om afdrukken, kopiëren of wijziging te verhinderen. Ze kunnen niet worden afgedwongen door een producerbibliotheek.
- Als je de toegang moet beperken, beheer dan de distributie van het bestand zelf, of pas een toegangscontrolesysteem buiten de PDF toe.
- Gebruik
PdfPermissionsalleen om de vlaggen te rapporteren die een bestaand document declareert, niet om te beweren dat die acties worden geblokkeerd.
- Gerelateerd. Handtekening- en tijdstempelfouten.
Item: versleuteling wordt geweigerd bij PDF/A
Sectie met titel “Item: versleuteling wordt geweigerd bij PDF/A”- Symptoom.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionwanneer een build PDF/A inschakelt en om versleuteling vraagt. - Waarschijnlijke oorzaak. Het PDF/A-profiel verbiedt de
Encrypt-sleutel in de trailer. De engine weigert de combinatie ongeacht de volgorde van de aanroepen. - Bewijs / diagnose. Zie het PDF/A- en PDF/UA-item voor de aangehaalde clausule,
getContext()-velden, en failure-path-test. - Oplossing.
- Bepaal of het document archiefconformiteit of versleuteling nodig heeft.
- Verwijder de aanroep voor de eigenschap die je niet nodig hebt.
- Voer de pipeline opnieuw uit.
- Gerelateerd. PDF/A- en PDF/UA-validatie.
Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”DecryptionFailedExceptionenTamperedDataExceptionbetekenen verschillende dingen: structurele fout versus mislukte integriteit. Vertak op basis van de klasse, niet op het bericht.- De core-versleutelingsdictionarybuilder negeert de machtigingsinteger; elke build die afhankelijk is van machtigingsafdwinging vanuit het core-pakket, berust op een misverstand.
PdfPermissionswordt alleen gevuld voor versleutelde documenten bij volledige inspectiediepte en weerspiegelt de gedeclareerde vlaggen. Een gevuld veld betekent niet dat de actie wordt verhinderd.
Zie ook
Sectie met titel “Zie ook”- Exception-referentie
- Handtekening- en tijdstempelfouten
- PDF/A- en PDF/UA-validatie
- Index van de kennisbank
Verklarende woordenlijst: machtigingsvlaggen · geverifieerde ontsleuteling