[ 
https://issues.apache.org/jira/browse/PDFBOX-5955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17927295#comment-17927295
 ] 

Ross Johnson commented on PDFBOX-5955:
--------------------------------------

Thank you for taking a look.

Based on my testing, Adobe is using the expected & documented algorithms for 
verifying the user password and generating a 40-bit key, but then is doing an 
undocumented extra key-lengthening step before actually encrypting / decrypting 
data. Without this extra key-lengthening step, I would expect the decrypted 
streams & strings to be random junk.

I forgot to mention, but as part of the apparent key lengthening that Acrobat 
is doing, `n` needs to be updated from 5 to 16 bytes when performing the steps 
of "Algorithm 1...". 

For what it's worth, I do have these sample docs decrypting properly with a 
different PDF lib that I modified for testing. I can successfully read the 
/Pages value (obj 13 0) from ObjStm obj 4 0.

If I have some time next week, I can attempt to make the necessary changes to 
PDFBox code to decrypt these docs.

> Support rare RC4 encryption where R=4, key length < 128 bits
> ------------------------------------------------------------
>
>                 Key: PDFBOX-5955
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5955
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: Crypto
>            Reporter: Ross Johnson
>            Priority: Major
>         Attachments: R=4, V=4, 40-bit RC4.pdf, R=4, V=4, 48-bit RC4.pdf
>
>
> I've come across some PDFs that open fine in Acrobat, but seemingly no other 
> viewer / parser. Upon further inspection, it seems these PDFs use a rare RC4 
> encryption scheme where R=4 & V=4, but the key length is given as 40 bits / 5 
> bytes instead of the normally expected 128 bits / 16 bytes.
> I can't find this behavior explicitly described in the PDF specs, but it 
> seems that Acrobat extends the shorter key to 16 bytes (appending 0x00 bytes) 
> in this situation before the steps described in "Algorithm 1: Encryption of 
> data using the RC4 or AES algorithms".
> I've been able to generate a sample file that demonstrates the issue and uses 
> a 40-bit key. I also made a similar file with a 48-bit key. Note that these 
> files have an empty / blank user password, and Acrobat opens them without a 
> password prompt.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to