Sono a conoscenza del fatto che i codici a blocchi come AES non dispongono di meccanismi integrati per verificare l'integrità dei dati al momento della decrittografia, sebbene alcune modalità operative possano fornire questo.
Ho giocato con 7-zip, che utilizza AES-256 / CBC. Ho crittografato un sacco di file e deliberatamente ho danneggiato l'azzeramento di un paio di byte. Ho osservato che, come previsto, prima ho azzerato i byte, più file sarebbero corrotti.
Ho anche notato che fornire una password errata non bloccherebbe affatto la decompressione. Solo dopo aver decompresso l'intero archivio, 7-zip segnalerebbe che la password potrebbe essere sbagliata. Dal momento che salva i checksum dei file, può dire se sono corrotti. Questo ha senso.
Ora inserisci Adobe Acrobat X. Ho crittografato un PDF (ancora AES-256). Con mia sorpresa, il danneggiamento dei byte nel file crittografato sembrava non avere alcun effetto osservabile sul risultato. Notare che Acrobat X crittografa anche i metadati e ho modificato qualcosa ben oltre il punto in cui mi aspettavo che i metadati fossero comunque.
Ero ancora in grado di vedere la lettura dell'intero file. Ho quindi rimosso la password da entrambi i file originali e "corrotti" e ho fatto confronti byte per byte. Ho notato che oltre ad alcuni intervalli di indirizzi in cui presumo siano memorizzati i metadati (poiché differiscono ogni volta che decodifico lo stesso file), c'era solo un singolo blocco in cui 16 byte (in modo casuale la dimensione del blocco AES) sono diversi.
Anche Acrobat sembra essere in grado di verificare se una password è corretta senza tentare di decodificare nulla, il che implica che ha un hash di esso (o qualcosa) memorizzato da qualche parte.
- Ha senso farlo (verificare che una password o una chiave siano corrette senza tentare di decifrare)? Non sarebbe così più semplice per un utente malintenzionato utilizzare la password per rinforzare la password?
- Sono corretto nel ritenere che Acrobat usi la BCE? C'è un vantaggio?
- In che modo si comportano le modalità AE quando si tratta di:
- La verifica di una chiave è corretta prima che venga tentata la decrittografia
- Se un byte di testo cifrato è corrotto accidentalmente, come influisce su ciò che viene dopo?