Hashing contro "Crittografia a una via"

9

Quando lavoravo a un'applicazione per il sito web, io e un amico abbiamo chiesto a un esperto di sicurezza (che lavora in IBM) come gestire le password di memorizzazione. Dopo ore di ricerche su google (che hanno generato ore di esplorazione security.stackexchange.com), ho stabilito che avere un database utente con il sale nel DB è sicuro, a condizione che sia un algoritmo per utente e un algoritmo di hashing lento.

L'esperto di sicurezza ha detto che se il DB è stato compromesso, tutto è stato compromesso, il che è vero. Ha suggerito "crittografia unidirezionale", che ... non capisco davvero. Non è hashing, per definizione, a senso unico, mentre la crittografia, per definizione, non lo è?

Se qualcuno fosse in grado di risolvere il problema, sarebbe fantastico.

    
posta Awesomolocity 02.02.2015 - 03:44
fonte

3 risposte

11

Hai ragione. L'hashing non è invertibile e la crittografia lo è. L'esperto di sicurezza sta parlando con il suo cappello.

Il "pepe" di cui parla è la chiave di un hash con chiave. In tal caso, ci sono tre componenti nell'input dell'algoritmo hash: la password, il salt e la chiave. Se il database è compromesso, il sale è compromesso, ma la chiave non lo è. Se la chiave è di lunghezza non banale, come 128 bit, probabilmente non è possibile recuperare la password dall'hash e dal sale. (In senso stretto, si tratta di un problema "intrattabile". Uno sa come farlo - prova tutti i possibili valori chiave - uno non può farlo in un tempo ragionevole.)

    
risposta data 02.02.2015 - 05:00
fonte
4

Suppongo che il termine "crittografia unidirezionale" ritorni ai giorni in cui non era disponibile alcuna funzione di hash crittografica, quindi per ottenere un hash della password su sistemi Unix, ad esempio è stata utilizzata una funzione di crittografia (DES ). Tuttavia, invece di fornire una chiave fissa per crittografare la password (uso normale di questo algoritmo ma che consentirebbe di decrittografare la password usando questa stessa chiave), la stessa password è stata utilizzata sia come chiave sia come dati da crittografare.

In questo modo, è stata ottenuta una crittografia unidirezionale in quanto non era possibile decodificare la password senza saperlo.

In seguito, il tempo è passato, un sacco di persone tra cui matematici altamente qualificati e ingegneri di sicurezza di alto profilo hanno lavorato sull'argomento e ci hanno fornito strumenti migliori per ogni esigenza (qui: funzioni di hashing della password). Al giorno d'oggi nessuno dovrebbe quindi provare a armeggiare con algoritmi esistenti per usarli in modo inappropriato (una crittografia viene utilizzata per crittografare il testo e non per produrre un hash).

    
risposta data 15.04.2015 - 11:04
fonte
3

Nel linguaggio tecnico standard, "crittografia unidirezionale" significa hashing. Sebbene tecnicamente l'hashing sia un'operazione distinta dalla crittografia, sono entrambi "primitive crittografiche" ed è comune (anche se tecnicamente non corretto) fare riferimento a tutta la crittografia come crittografia. Essere pedante con il tuo collega su questo punto è improbabile che tu possa farti degli amici. Quando parlo con persone che non sono specialisti della sicurezza, di solito uso la frase "crittografia unidirezionale" in quanto è più ampiamente compresa.

Per inciso, è possibile eseguire qualsiasi operazione di hash di blocco in una cifra simmetrica e qualsiasi cifra simmetrica in un'operazione di hash di blocco. Ci sono alcune informazioni su Wikipedia e Bruce Schneier ne discute in dettaglio nel suo libro "Applied Cryptography".

    
risposta data 04.02.2015 - 17:10
fonte

Leggi altre domande sui tag