Come vengono implementate le funzioni key_derivation e key_verification del meccanismo di crittografia dell'archivio 7-zip?

2

Sono curioso di sapere come funziona il recupero della password per i file protetti da password. E voglio sapere il flusso esatto del meccanismo di crittografia 7-zip :) !!

7-zip utilizza l'algoritmo di crittografia AES-256 in modalità CBC per crittografare i file o una cartella. La chiave viene generata dalla passphrase dell'utente utilizzando la funzione hash SHA-256. La passphrase viene sottoposta a hash con SHA-256 2 ^ 19 (524288) volte, per aumentare il costo della ricerca esaustiva. Inoltre, per ridurre il rischio di attacchi al dizionario, viene aggiunto un salt alla passphrase prima dell'hashing.

La mia prima domanda è: come funziona la funzione key_derivation per generare una chiave a 256 bit? Qual è l'importanza della IV per la modalità CBC AES e come viene generata?

La mia seconda e più importante domanda è: come viene verificata la chiave per decifrare l'archivio 7-zip? Come funziona la sua funzione key_verification?

    
posta Gopal 18.09.2012 - 07:20
fonte

1 risposta

1

Il recupero delle chiavi funziona così. Lo strumento indovina molte possibili passphrase. Per ogni passphrase, verifica se la passphrase è corretta. Continua fino a quando non trova la tua passphrase corretta, o finché non ti stanchi e ti arrendi.

Quindi, come possiamo stabilire se la passphrase è corretta? Normalmente il metodo andrebbe così. Usiamo l'algoritmo di derivazione della chiave (lo stesso che verrebbe utilizzato quando decifri l'archivio usando il programma 7zip) per calcolare la chiave AES-256 derivata. Quindi, proviamo a decifrare alcuni blocchi del testo cifrato sotto questa chiave.

In senso tifico, il testo in chiaro ha una costante hardcoded in una certa posizione fissa, quindi possiamo verificare se la nostra ipotesi è corretta controllando se questa costante appare nella posizione fissa nella nostra decrittografia di prova. (A volte, per alcuni formati di file, non esiste una costante hardcoded, ma esiste un checksum, quindi possiamo provare a decrittografare e vedere se il checksum è corretto oppure, per alcuni formati di file, potremmo sapere che il testo in chiaro è tipicamente ASCII, quindi possiamo controllare la decrittografia di prova per vedere se sembra un testo ASCII plausibile.) Il metodo esatto usato dipende dal formato del file, ma solitamente questa fase non è una barriera seria.

Questo approccio è noto come decrittografia di prova o ricerca di dizionario a forza bruta o attacco di dizionario. Tutte le intelligenze arrivano nella parte di cui non ho parlato molto: come trovare una lista di ipotesi plausibili alla passphrase, in un ordine intelligente.

Vedi anche Euristica forza-forza utilizzata nel crack delle password .

    
risposta data 18.09.2012 - 08:09
fonte