
Description
PDF permits the use of encryption as a means of restricting access or (re-)use of content. This may range from documents that can only be opened after providing a password, to disabling specific functionality (e.g. printing, copying content).
Risks
- Content may become inaccessible if passwords are not known (even though "cracking" is often technically possible, institutions may not be legally permitted to do this)
- Printing / copy restrictions may complicated any future preservation actions
Assessment
The Preflight component of Apache PDFBox (an open source PDF/A validator) is able to detect encryption in a PDF (any PDF, doesn't have to be PDF/A!). The following table shows the combinations of error codes and descriptions (details element of Preflight's XML output) for 4 different types of password protection. Results obtained with Preflight 2.0.0:
Reference file | Description | Error Code(s) | Details |
encryption_openpassword.pdf![]() |
Requires password to open the file | 1.0 | Syntax error |
encryption_nocopy.pdf![]() |
Requires password to copy document contents | 1.0 | Syntax error |
encryption_noprinting.pdf![]() |
Requires password for printing | 1.0 | Syntax error |
encryption_notextaccess.pdf![]() |
Requires password to enable text access for screen reader devices for the visually impaired | 1.0 | Syntax error |
Note that these results aren't particularly helpful. However, previous work with an earlier version of Preflight (1.8.0) produced notably different results:
Reference file | Description | Error Code(s) | Details |
encryption_openpassword.pdf![]() |
Requires password to open the file | 1.0 | Syntax error, Error (CryptographyException) while creating security handler for decryption: Error: The supplied password does not match either the owner or user password in the document |
encryption_nocopy.pdf![]() |
Requires password to copy document contents | 1.4.2 | Trailer Syntax error, The trailer dictionary contains Encrypt |
encryption_noprinting.pdf![]() |
Requires password for printing | 1.4.2 | Trailer Syntax error, The trailer dictionary contains Encrypt |
encryption_notextaccess.pdf![]() |
Requires password to enable text access for screen reader devices for the visually impaired | 1.4.2 | Syntax error |
So the Preflight 2.0.0 results look like a bug, for which the following bug report was submitted.