Quale schema di sicurezza viene utilizzato dalla crittografia della password PDF e perché è così debole?

59

Molti PDF sono distribuiti come PDF crittografati per bloccare alcune delle loro funzionalità (ad esempio stampa, scrittura, copia). Tuttavia, il software di cracking PDF è disponibile online, che di solito incrina le password PDF in meno di 1 secondo.

Non ha senso che il sistema PDF sia così facile da decifrare se Adobe implementasse una corretta tecnica di crittografia nella sicurezza dei documenti, e sembra che ci sia un errore di implementazione importante nel loro schema di crittografia PDF che consente ai documenti di essere sbloccato con piccole quantità di lavoro.

Qual è lo schema di sicurezza utilizzato in tali file PDF bloccati e perché questi strumenti di rimozione della password PDF impiegano così poco tempo per sconfiggerlo?

    
posta March Ho 03.08.2015 - 13:58
fonte

3 risposte

47

Esistono due tipi di protezione PDF: crittografia basata su password e restrizioni dell'interfaccia utente. Stai descrivendo il secondo tipo di protezione, ovvero il permesso mancante per copiare e incollare, stampare e così via. Se sono presenti restrizioni sull'interfaccia utente inserite in un file PDF, il visualizzatore deve ancora decrittografare i contenuti per visualizzarli sullo schermo, quindi non ci si trova in uno scenario di "crittografia basata su password" in cui manca una chiave per decrittografare documenta, ma in uno scenario "DRM" in cui ti fidi che le applicazioni in grado di decrittografare il file (basate sulla conoscenza statica come le chiavi master) eseguano solo le operazioni che l'autore vuole che facciano.

Nulla impedisce agli esperti di computer di decodificare il modo in cui l'applicazione legittima decrittografa i dati (non è richiesta alcuna password) ed esegue personalmente la decrittografia. Dopo aver decrittografato il documento, i diritti possono essere "adattati" ad es. includere il permesso di stampa o l'applicazione di decrittografia può fare cose (come copiare tutte le immagini bitmap) stesso.

Adobe tenta di impedire "applicazioni non autorizzate" che consentono di eludere le restrizioni sull'utilizzo della propria licenza sulle specifiche PDF: revocano la licenza per utilizzare la proprietà intellettuale (rivendicata) in tali specifiche per le applicazioni che non rispettano l'utilizzo restrizioni. AFAIK alcuni strumenti open source hanno o hanno avuto un interruttore di compilazione per stabilire se le restrizioni di utilizzo debbano essere rispettate o meno. Questo è un punto di partenza perfetto per chi vende software "deprotector PDF".

Nel caso sopra descritto, la "password utente" è la stringa vuota. I lettori di PDF sono tenuti a provare a una password utente vuota se viene aperto un file PDF protetto. Solo se fallisce il controllo di validità della password, l'utente ha richiesto una password. begueradj descrive la derivazione della chiave nella sua risposta e, come vedete, le "autorizzazioni DRM" (/ P entry) immettono la derivazione della chiave, quindi se si "aggiusta le autorizzazioni" in un file PDF protetto, un lettore conforme ne ricaverà il chiave sbagliata e non riescono ad aprire il documento. D'altra parte, se un file PDF è completamente protetto da una password (anche contro l'apertura), la password dell'utente non è più vuota e questo tipo di protezione PDF è ragionevolmente sicuro.

    
risposta data 03.08.2015 - 16:42
fonte
40

La funzionalità di blocco PDF di Adobe obbedisce alla regola di sicurezza tramite oscurità . Se i software di terze parti sono in grado di sbloccare un file PDF è perché se il  se il file è crittografato, contiene necessariamente le informazioni necessarie per decodificarlo.

La chiave di crittografia di un file PDF viene generata come segue:

   1. Pad the user password out to 32 bytes, using a hardcoded
       32-byte string:
           28 BF 4E 5E 4E 75 8A 41 64 00 4E 56 FF FA 01 08
           2E 2E 00 B6 D0 68 3E 80 2F 0C A9 FE 64 53 69 7A
       If the user password is null, just use the entire padding
       string.  (I.e., concatenate the user password and the padding
       string and take the first 32 bytes.)

    2. Append the hashed owner password (the /O entry above).

    3. Append the permissions (the /P entry), treated as a four-byte
       integer, LSB first.

    4. Append the file identifier (the /ID entry from the trailer
       dictionary).  This is an arbitrary string of bytes; Adobe
       recommends that it be generated by MD5 hashing various pieces
       of information about the document.

    5. MD5 hash this string; the first 5 bytes of output are the
       encryption key.  (This is a 40-bit key, presumably to meet US
       export regulations.)

Questo algoritmo prende come input la password dell'utente e molti altri dati. Tra questi dati puoi trovare:

        /Size 95         % number of objects in the file
        /Root 93 0 R     % the page tree is object ID (93,0)
        /Encrypt 94 0 R  % the encryption dict is object ID (94,0)
        /ID [<1cf5...>]  % an arbitrary file identifier    

        /Filter /Standard   % use the standard security handler
        /V 1                % algorithm 1
        /R 2                % revision 2
        /U (xxx...xxx)      % hashed user password (32 bytes)
        /O (xxx...xxx)      % hashed owner password (32 bytes)
        /P 65472            % flags specifying the allowed operations

Il software utilizza come processo di decodifica questo algoritmo:

    1. Take the 5-byte file key (from above).

    2. Append the 3 low-order bytes (LSB first) of the object number
       for the stream/string object being decrypted.

    3. Append the 2 low-order bytes (LSB first) of the generation
       number.

    4. MD5 hash that 10-byte string.

    5. Use the first 10 bytes of the output as an RC4 key to decrypt
       the stream or string.  (This apparently still meets the US
       export regulations because it's a 40-bit key with an additional
       40-bit "salt".)

Ovviamente, questo è lo schema generale di crittografia / decrittografia, ma esistono più o meno differenze tra varie versioni di Adobe PDF.

Ulteriori informazioni

    
risposta data 03.08.2015 - 14:20
fonte
19

Il problema principale con la protezione tramite password di un file PDF con una password è che si sta basando la sicurezza su una password , che è una parte di dati che un utente umano, da qualche parte, ha inventato nella sua mente, ed era abbastanza arrogante da ritenere "inconcepibile". Risulta che la maggior parte delle password è probabile. La situazione può essere leggermente migliorata rendendo la trasformazione password-to-key costosa (questo è chiamato hashing password ) ma una password debole è ancora debole.

Un secondo problema è che non esiste un formato one per la crittografia PDF, ma diversi. La crittografia PDF ha una lunga storia di schemi personalizzati, il primo dei quali si radica in tempi in cui gli Stati Uniti disponevano di regole di esportazione rigorose e rigorose per il software in grado di riconoscere la crittografia; per rendere la storia breve, per consentire l'esportazione del software senza problemi amministrativi, la cripto doveva essere ridicolmente debole. Quindi il formato di crittografia descritto da @begueradj nella sua risposta: il la password viene cancellata e solo i primi 40 bit dei risultati vengono mantenuti come "chiave principale" per l'intero file. Una chiave a 40 bit è altamente adatta alla ricerca completa con i computer di oggi, rendendo l'intera cosa della crittografia uno scherzo. È ora possibile creare file PDF strongmente crittografati, che le versioni moderne di Adobe Reader possono elaborare (personalmente ho scritto del codice per creare file PDF che potrebbero essere decifrati solo con una smart card), ma tu devi farlo esplicitamente.

Ad aggravare la situazione è la struttura interna del PDF. Un PDF è un insieme di "oggetti", alcuni dei quali sono flussi di altri oggetti o dati grezzi. L'idea generale è che il documento dovrebbe essere adatto a una varietà di accessi, ad es. saltare a qualsiasi pagina all'interno del documento (probabilmente prima di averlo scaricato interamente) o estrarre un sommario. Poiché la crittografia viene applicata su base per-stream, la solita conclusione è che è possibile ottenere gran parte della struttura del documento senza rompere la crittografia (ad esempio numero di pagine, lunghezza di ogni paragrafo, numero, dimensione e posizione delle immagini ... ). Se questo è un problema serio o meno dipende dal contesto, in particolare perché vuoi criptare. Il vero problema qui è che la decisione su cosa crittografare e cosa non criptare è presa da qualche software generico che non può, per definizione, essere consapevole del contesto.

In pratica, il punto di protezione della password di un file PDF è non per renderlo davvero imperscrutabile da parte di utenti non autorizzati; è quello di documentare, in modo chiaro e inevitabile, che i contenuti del file sono sensibili e il file deve essere gestito con cura. È l'equivalente di un timbro "top secret" rosso.

    
risposta data 03.08.2015 - 14:51
fonte

Leggi altre domande sui tag