Quanto è difficile risolvere un sale se si conoscono i dati originali e l'output hash che utilizza l'algoritmo SHA-2

2

Sto leggendo la documentazione di Kentico dove descrive l'uso degli hash per validare le stringhe di query

EX:http://localhost/KenticoCMS8/cms/getfile/2d003444-9a27-43c9-be97-4f5832474015/Partners_logos_silver.aspx?latestfordocid=75&hash=eee41e027bd45142fd1f44d173d61950f34d6e98f4e35018fda70542322adc77&chset=013bca78-6bf2-42ac-8959-b8bbbeb0a8e8

Documentazione link

Sto facendo un'ipotesi: sul suo hashing, una stringa di query e includerla come parte della stringa non è utile. Chiunque conosca l'algoritmo (pubblicato con l'aiuto del doc) potrebbe semplicemente generare l'hash dalla sua nuova query-stringa dannosa e includerlo come parte della richiesta.

La protezione aggiunta che Kentico utilizza è una salta statica che viene inclusa quando si esegue l'hashing della stringa di query. Questo dovrebbe rendere la generazione del proprio hash non così semplice.

La mia domanda è: quanto sarebbe difficile risolvere questo sale? Un utente malintenzionato potrebbe facilmente generare molte stringhe di query diverse. Conoscerebbero l'input, l'output e l'algoritmo. Potrebbero semplicemente capire il sale?

E se conoscono il sale, possono quindi senza difficoltà generare le proprie stringhe di query?

    
posta Andrey 18.04.2014 - 22:11
fonte

1 risposta

2

Gli hash crittografici in linea di principio non sono reversibili. Quindi non dovrebbe essere possibile ottenere il sale prendendo una stringa di query conosciuta e un hash associato (o un gruppo di essi) e invertendoli, se non provando la forza bruta. La forza bruta non sarà fattibile con un GUID casuale che ha 32 caratteri esadecimali (un carattere esadecimale è 4 bit, quindi il GUID è 128 bit). Quindi la forza bruta del sale dovrebbe richiedere la creazione di ~ 2 ^ 128 sha-2 hash (metà del tempo che dovresti trovare con 2 ^ 127 o meno hash). D'altra parte, se hai usato un 2 caratteri esagonali, la forzatura bruta sarebbe banale con solo 2 ^ 8 = 256 hash SHA-2.

Ammessa questa analisi non presuppone l'esistenza di nuovi attacchi non pubblicati su SHA-2 o di uno che utilizza questa superficie di attacco estesa essendo in grado di creare più hash di testo arbitrario iniziando con lo stesso sale. Questo scenario sembra un po 'simile agli attacchi con chiave correlata in cui si interrompe un cifrario (trova la chiave di decrittazione) quando siete assistiti dall'essere in grado di forzare qualcuno a crittografare i dati con diverse chiavi sconosciute che sono correlate in qualche senso matematico (alcuni bit variano ma la maggior parte sono uguali).

Tuttavia, non sono a conoscenza di alcun attacco di questo tipo su SHA-2 o qualsiasi altro hash e non ho mai visto il problema discusso attivamente - dato tutto tranne s nel seguente "H (s ++ p1) = h1, H (s ++ p2) = h2, ..., H (s ++ pN) = hN) "recupera s . Tipicamente, si pensa a tre attacchi in relazione alle funzioni hash; resistenza pre-immagine (dato h generato da H (m) trova m), seconda resistenza pre-immagine (dato m1 trova un altro m2 tale che H (m1) = H (m2)) e resistenza di collisione (trova due distinti m1 , m2 tale che H (m1) = H (m2)). Questo è qualcosa di diverso.

Personalmente, non riesco a immaginare come un attacco di questo tipo possa funzionare con un moderno hash crittografico come SHA-2 (con 64 colpi) a causa del effetto valanga , ma per citare legge Schneier " Qualcuno può inventare una sicurezza sistema così intelligente che lui o lei non può immaginare un modo per romperlo. " Il fatto che non sia stato studiato estensivamente non mi renderebbe sicuro che le funzioni di hash sarebbero resistenti a questo tipo di effetto contro attaccanti molto sofisticati.

    
risposta data 18.04.2014 - 22:50
fonte

Leggi altre domande sui tag