Come funziona davvero la cifratura dei PDF — e i suoi limiti
Spec: ISO 32000-2, §7.6ISO 32000-2 §7.6
In sintesi
Sezione intitolata “In sintesi”La cifratura dei PDF mescola le parole e le immagini dentro un documento, così che solo chi ha la password corretta possa leggerle. È crittografia genuina, ed è brava nell’unico compito che ha. È anche ampiamente fraintesa, perché la stessa funzionalità porta con sé un secondo meccanismo — i flag di permesso — che sembra un lucchetto e non lo è.
Questa pagina separa i due. Spiega cosa protegge davvero AES-256, a cosa servono realmente le due password, e dove si colloca il confine onesto.
Perché è importante
Sezione intitolata “Perché è importante”Le persone ricorrono alla cifratura quando un documento è sensibile: un contratto, una busta paga, una lettera medica. L’aspettativa è ragionevole — tieni questo privato, e impedisci alle persone di stamparlo o copiarlo. Il PDF mantiene la prima metà di quel desiderio in modo convincente e la seconda metà solo sulla parola.
Confondere i due è dove si paga il prezzo. Un team marca un file «niente copia», confida che la piattaforma lo imponga, e lo spedisce. Mesi dopo qualcuno copia il testo in trenta secondi con un lettore diverso, e l’assunto che non ha mai retto si trasforma silenziosamente in una fuga di dati. La cifratura non è mai stata violata. Le è stato semplicemente chiesto di fare qualcosa che non fa.
In breve
Sezione intitolata “In breve”- La cifratura protegge la riservatezza. Con AES-256, il contenuto di stringhe e stream di un PDF è vero testo cifrato. Senza la chiave, è illeggibile.
- La password utente apre il documento. Fornendola, puoi vedere il contenuto. Senza di essa, non c’è nulla da leggere.
- La password proprietario governa i permessi. È la chiave dei «pieni diritti». I flag di permesso che custodisce — stampa, copia, modifica — sono registrati dentro il documento cifrato.
- I flag di permesso sono cooperativi rispetto al lettore. Sono una richiesta a un lettore beneducato, non un’imposizione. Un lettore che li ignora può stampare, copiare o modificare comunque.
- La struttura resta visibile. La cifratura nasconde il contenuto, non lo scheletro del documento — il conteggio delle pagine e il layout degli oggetti non sono il segreto.
Come NextPDF lo affronta
Sezione intitolata “Come NextPDF lo affronta”La cifratura dei PDF è definita da Spec: ISO 32000-2, §7.6ISO 32000-2 §7.6. Il modello è preciso: un security handler deriva una chiave di cifratura del file da una password, le stringhe e gli stream del documento sono cifrati con quella chiave, e un encryption dictionary — referenziato dal trailer del file — registra quale cifrario è stato usato, quanto è lunga la chiave e quali permessi l’autore ha dichiarato.
Il cifrario moderno e raccomandato è AES con una chiave a 256 bit. Quando cifri un PDF in questo modo, il payload leggibile — il testo che estrarresti, i byte dell’immagine, i dati del font — è trasformato in testo cifrato. La forma esterna del documento resta leggibile per progettazione: un lettore deve trovare l’encryption dictionary e conoscere la lunghezza della chiave prima di poterti chiedere una password. È per questo che la cifratura si comprende meglio come riservatezza del contenuto, non come opacità dell’intero file.
Le due password stanno a livelli diversi, e la distinzione è la parte che vale di più capire bene.
- Viene fornita una passwordO la password utente (apertura) o la password proprietario (pieni diritti).
- Il security handler deriva la chiaveISO 32000-2 §7.6.4 trasforma la password nella chiave di cifratura del file.
- Il contenuto viene decifratoAES-256 riporta le stringhe e gli stream cifrati a byte leggibili.
- I permessi vengono consultatiLa chiave proprietario concede tutti i diritti; la chiave utente è vincolata dai flag di permesso dichiarati — se il lettore sceglie di rispettarli.
La password utente è la password di apertura. Risponde a una sola domanda: ti è permesso vedere affatto il contenuto? Niente password utente, niente documento leggibile — quella parte è imposta crittograficamente, perché senza la chiave derivata non c’è nulla da decifrare.
La password proprietario è la password dei permessi. Un file può essere aperto da chiunque (nessuna password utente) e tuttavia dichiarare una password proprietario che custodisce le azioni dei «pieni diritti» — stampare ad alta risoluzione, copiare testo, modificare il file. Fondamentale: i bit di permesso che la password proprietario protegge sono protetti nell’integrità dal security handler standard: la manomissione viene rilevata e respinta da un lettore conforme, perché l’handler lega i permessi dichiarati alle chiavi di cifratura. I bit non sono letteralmente byte illeggibili o non modificabili — un attaccante può cambiarli — ma una copia alterata non si convaliderà, perciò un lettore conforme la tratta come corrotta. Sono a prova di manomissione. Semplicemente non sono autoimposti.
Esempio pratico
Sezione intitolata “Esempio pratico”Le impostazioni di cifratura sono semplici da esprimere. Ciò che conta è leggere il risultato onestamente: questo configura un intento, e la parte del permesso di quell’intento è consultiva.
<?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');La password utente e quella proprietario sono chiavi diverse con compiti diversi.
L’argomento permissions dichiara ciò che un lettore beneducato dovrebbe
consentire. È metadato onesto, protetto nell’integrità dal security handler così
che la manomissione sia rilevabile — e questo è il massimo che una libreria
produttrice può promettere.
Equivoco comune
Sezione intitolata “Equivoco comune”La trappola è leggere «permessi» come «imposizione». È intuitivo: il flag dice stampa non consentita, quindi di certo la stampa è bloccata. Ma nulla nel PDF può allungarsi e disabilitare il pulsante di stampa di un lettore. L’intero di permesso è registrato perché un lettore cooperante lo rispetti. Un lettore che sceglie di non cooperare — e diversi non lo fanno — è libero di stampare, copiare e modificare.
NextPDF è deliberato su questo punto. Il percorso di cifratura del core tratta i flag di permesso come intento dichiarato e non finge mai di imporli. Se serve che delle azioni siano genuinamente impedite, quel controllo deve vivere fuori dal file — in a chi consegni il documento, o in un sistema di controllo degli accessi attorno a esso.
Limiti e confini
Sezione intitolata “Limiti e confini”Sii preciso su cosa garantisce ciascuna metà. La cifratura (il livello della password utente) è un vero controllo di riservatezza: forte se la password è forte, e valida solo quanto il segreto che scegli. I permessi (il livello della password proprietario) sono metadati a prova di manomissione, non controllo degli accessi.
| Cosa potresti aspettarti | Cosa offre davvero la cifratura |
|---|---|
| Nessuno può leggere il contenuto senza la password | Vero. Con AES-256 e una password utente forte, le stringhe e gli stream sono illeggibili senza la chiave. Genuinamente imposto. |
| Nessuno può riscrivere «niente copia» in «copia consentita» | A prova di manomissione, non impossibile. I flag di permesso sono protetti nell’integrità dal security handler standard: un estraneo può modificare i byte, ma la copia alterata non si convaliderà, perciò un lettore conforme rileva e respinge la modifica. |
| Al lettore sarà impedito di copiare o stampare | Non garantito da alcun produttore di PDF. Un lettore non cooperante può ignorare i flag. Questa è una proprietà del formato, non un limite di NextPDF. |
Due ulteriori confini vale la pena enunciarli chiaramente. Primo, la cifratura
protegge il contenuto, non la struttura del documento: il layout degli oggetti e
il conteggio delle pagine restano visibili, il che è normale e necessario perché un
lettore individui l’encryption dictionary. Secondo, un PDF cifrato non può anche
rivendicare la conformità archivistica PDF/A — quel profilo vieta la voce
Encrypt, quindi scegli l’uno o l’altra. La
pagina di troubleshooting su cifratura e permessi
copre in dettaglio le eccezioni specifiche e il rifiuto di PDF/A.
Documentazione correlata
Sezione intitolata “Documentazione correlata”- The standards landscape — dove ISO 32000-2 e le sue clausole sulla cifratura si collocano tra gli standard PDF.
- Encryption and permission flags — le voci pratiche: i fallimenti di decifratura e il confine dei permessi nel codice.
- What a PDF actually is — il modello a oggetti che la cifratura protegge, e la struttura che lascia visibile.
- How signatures sit in a PDF — l’altra metà della fiducia nel documento: la cifratura nasconde, le firme dimostrano.
Glossario
Sezione intitolata “Glossario”- AES-256 — l’Advanced Encryption Standard con una chiave a 256 bit, il cifrario moderno raccomandato per la cifratura del contenuto dei PDF.
- Password utente (password di apertura) — il segreto richiesto per aprire e leggere un documento cifrato. Senza di esso, il contenuto non può essere decifrato.
- Password proprietario (password dei permessi) — il segreto dei «pieni diritti» che governa i flag di permesso. Un documento può averla senza richiedere una password utente per l’apertura.
- Flag di permesso — l’intento dichiarato di stampa/copia/modifica memorizzato nell’encryption dictionary. Protetto nell’integrità così che la manomissione sia rilevabile, ma rispettato solo da un lettore cooperante.
- Security handler — il componente che deriva la chiave di cifratura del file da una password, definito dal security handler standard in ISO 32000-2.
- Cooperativo rispetto al lettore — un controllo che dipende dal fatto che il software consumatore scelga di obbedirgli, anziché essere imposto dal file stesso.