Risoluzione dei problemi: cifratura e flag dei permessi
Ambito e confine
Sezione intitolata “Ambito e confine”Queste voci riguardano gli errori di decifratura sollevati dal motore tramite NextPDF\Exception\EncryptionException e NextPDF\Security\Exception\DecryptionFailedException, e i limiti dei flag dei permessi PDF.
Prima di tutto, una nota sui limiti: previene l’equivoco più comune. I flag dei permessi PDF nel dizionario di cifratura registrano l’intento dell’autore. Non costituiscono un meccanismo di controllo degli accessi imposto da questa libreria. Un lettore che ignora i flag può comunque stampare, copiare o modificare il contenuto. Considerare i flag come una richiesta rivolta a un lettore cooperante, non come un vincolo applicato.
Voce: l’operazione di cifratura non riesce
Sezione intitolata “Voce: l’operazione di cifratura non riesce”- Sintomo.
EncryptionExceptioncon un messaggio nella formaEncryption operation "<op>" failed using algorithm "<algorithm>". - Causa probabile. L’operazione di cifratura non è stata eseguita correttamente: in genere per un’estensione OpenSSL mancante o mal configurata, materiale di chiave non valido o una dimensione IV non valida al confine del cifrario.
- Evidenza / diagnosi.
getContext()restituiscealgorithmeoperation. Il valore dioperationè uno traencrypt,decryptokey_derivation, che indica quale fase non è riuscita. - Risoluzione.
- Verificare che l’estensione PHP OpenSSL sia installata e caricata.
- Leggere il campo
operationper individuare la fase non riuscita. - Per
key_derivation, verificare gli input della password o della chiave. - Eseguire di nuovo la chiamata.
- Correlato. Riferimento delle eccezioni.
Voce: la decifratura non riesce per un motivo strutturale
Sezione intitolata “Voce: la decifratura non riesce per un motivo strutturale”- Sintomo.
DecryptionFailedExceptioncon un messaggio nella formaDecryption failed for "<algorithm>": <reason>. - Causa probabile. Il testo cifrato non ha potuto essere elaborato per un motivo non riconducibile a manomissione: per esempio un testo cifrato troncato, un IV mancante o la chiave errata fornita al confine dell’API. Il controllo di integrità non è stato eseguito perché non era disponibile materiale sufficiente da valutare.
- Evidenza / diagnosi.
getContext()restituiscealgorithmereason.DecryptionFailedExceptionè documentata nel codice sorgente come distinta daTamperedDataException: questa eccezione indica un errore di configurazione o di trasporto, non una manomissione. Non considerarla di per sé un incidente di sicurezza. - Risoluzione.
- Leggere
reasonper identificare il difetto strutturale, ad esempiociphertext shorter than IV+tag. - Verificare che il testo cifrato sia stato trasmesso senza troncamento.
- Verificare che la chiave fornita al confine sia la chiave con cui il documento è stato cifrato.
- Eseguire di nuovo la chiamata.
- Leggere
- Correlato. Errori di firma e marca temporale.
Voce: viene sollevata un’eccezione di «dati manomessi»
Sezione intitolata “Voce: viene sollevata un’eccezione di «dati manomessi»”- Sintomo.
NextPDF\Security\Exception\TamperedDataExceptioninvece diDecryptionFailedException. - Causa probabile. Il controllo di integrità è stato eseguito ma non superato. È un caso distinto da un errore di decifratura strutturale: era disponibile materiale sufficiente per valutare l’integrità, che però non è risultata valida.
- Evidenza / diagnosi. Il codice sorgente distingue le due classi:
DecryptionFailedExceptionè strutturale e non un incidente di sicurezza;TamperedDataExceptionindica che il contenuto autenticato non ha superato la verifica. - Risoluzione.
- Considerare l’input come non attendibile; non utilizzare il contenuto decifrato.
- Recuperare di nuovo il documento da una fonte attendibile.
- Se l’errore persiste con una fonte di sicura affidabilità, acquisire
getContext()per un report dell’incidente.
- Correlato. Errori di firma e marca temporale.
Voce: i flag dei permessi non impediscono un’azione a valle
Sezione intitolata “Voce: i flag dei permessi non impediscono un’azione a valle”- Sintomo. Un documento è stato prodotto con i flag dei permessi impostati — ad esempio, copia o stampa non consentite — eppure un lettore copia o stampa comunque il contenuto.
- Causa probabile. Questo è il limite previsto, non un difetto. Il valore intero dei permessi passato al generatore del dizionario di cifratura di Core non viene applicato come vincolo da questa libreria. I flag sono metadati indicativi; un lettore che non li rispetta non viene bloccato da NextPDF.
- Evidenza / diagnosi.
src/Security/Encryption/EncryptionDictionaryBuilder.phpdichiarabuildDict(int $permissions, string $fileId)con il parametro documentato comeignored; retained for forward compatibility. Il metodo inizia conunset($permissions, $fileId). I flag dei permessi esposti dasrc/Inspect/PdfPermissions.phpsono campi di ispezione di sola lettura, non un meccanismo di applicazione. - Risoluzione.
- Non fare affidamento sui flag dei permessi per impedire la stampa, la copia o la modifica. Non possono essere applicati da una libreria che produce il PDF.
- Quando l’accesso deve essere limitato, controllare la distribuzione del file stesso oppure usare un sistema di controllo degli accessi esterno al PDF.
- Usare
PdfPermissionssolo per riportare i flag dichiarati da un documento esistente, non per sostenere che tali azioni siano impedite.
- Correlato. Errori di firma e marca temporale.
Voce: la cifratura viene rifiutata in modalità PDF/A
Sezione intitolata “Voce: la cifratura viene rifiutata in modalità PDF/A”- Sintomo.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionquando una build abilita PDF/A e, allo stesso tempo, richiede la cifratura. - Causa probabile. Il profilo PDF/A vieta la chiave
Encryptnel trailer. Il motore rifiuta la combinazione in qualunque ordine di chiamata. - Evidenza / diagnosi. Vedere la voce PDF/A e PDF/UA per la clausola citata, i campi di
getContext()e il test del percorso di errore. - Risoluzione.
- Decidere se il documento necessita di conformità per l’archiviazione oppure di cifratura.
- Rimuovere la chiamata relativa alla proprietà non necessaria.
- Eseguire di nuovo la pipeline.
- Correlato. Validazione PDF/A e PDF/UA.
Casi limite e insidie
Sezione intitolata “Casi limite e insidie”DecryptionFailedExceptioneTamperedDataExceptionindicano condizioni diverse: errore strutturale rispetto a verifica di integrità non superata. Gestire il flusso in base alla classe, non al messaggio.- Il generatore del dizionario di cifratura di Core ignora il valore intero dei permessi; una build che dipende dall’applicazione dei permessi da parte del pacchetto Core si basa su un equivoco.
PdfPermissionsviene popolato solo per i documenti cifrati alla profondità di ispezione completa e riflette i flag dichiarati. La presenza di un campo valorizzato non significa che l’azione sia impedita.
Vedere anche
Sezione intitolata “Vedere anche”- Riferimento delle eccezioni
- Errori di firma e marca temporale
- Validazione PDF/A e PDF/UA
- Indice della knowledge base
Glossario: flag dei permessi · decifratura autenticata