è sicuro usare sha256 in hash 64 dati di byte casuali crittograficamente con 12 byte salt?

1

Ho letto da molte fonti che sha256 non è sicuro perché è veloce. Molti link che ho letto suggeriscono bcrypt . Tuttavia, voglio solo sapere che se i dati sono 64 byte crittograficamente casuali, l'attaccante sarà in grado di trovare la stringa originale in qualche modo?

Scenerio

secret string è 64 dati byte casuali crittograficamente

Download utente secret string , archiviamo la versione con hash di esso. Caricherà questi dati sul sito quando vorrà ottenere l'accesso ad alcune informazioni. (il processo di lavoro non può essere modificato, è un sistema stabile abbiamo solo bisogno di proteggerlo)

Il sistema ha 1 trilione di% disecret string e tutti dovrebbero essere protetti da qualche algoritmo di hash.

È possibile che l'attaccante ottenga anche uno dei secret string se ha accesso a tutti gli hash?

    
posta Alex Robertson 08.02.2018 - 21:50
fonte

2 risposte

3

Stai confondendo hash crittografici con gli hash delle password. Un hash crittografico prende un input e dà un output dall'aspetto casuale. Un hash delle password richiede una password e un salatissimo e molto lentamente fornisce un output dall'aspetto casuale .

Ciò di cui sei preoccupato qui sono gli attacchi preimage . Vuoi assicurarti che, conoscendo un hash y , l'autore dell'attacco non possa trovare un valore x tale che h(x) = y . 80 bit di complessità sono ancora generalmente considerati "buoni" (sebbene non "grandi", e probabilmente vulnerabili a un aggressore ben finanziato come uno stato-nazione). Ciò significa che vuoi un hash in cui il miglior attacco preimage ha una complessità di oltre 80 bit.

Analisi

Iniziamo con MD5 poiché è una sorta di poster di un bambino per la crittografia obsoleta. L'attacco preimage più conosciuto su MD5 è 116.9 bit , ben oltre 80. Ma vuoi proteggere 1 trilioni , che consente all'aggressore di fare alcune ottimizzazioni.

Supponiamo che l'autore dell'attacco sia in grado di utilizzare una tabella hash (e molti terabyte di RAM) per verificare se un hash corrisponde a uno qualsiasi dei 1 trilione in O(1) . Con 1 trilione di segreti questo riduce la complessità per rompere un singolo segreto mediante log 2 (10 12 ) ≈ 40 bit, che porta MD5 a circa 76 bit. Ancora non terribile, ma preoccupante se stai affrontando uno stato-nazione o vuoi mantenere questi segreti per molti anni.

Ma stai facendo la cosa giusta e usando SHA256 . Il miglior attacco di pre-immagine che ho trovato su SHA256 era per i passi ridotti e presentava ancora una complessità superiore a 250 bit, quindi in questo caso stai considerando oltre 210 bit di complessità. In questo caso, un utente malintenzionato eseguirà alcuni problemi con la fisica .

    
risposta data 08.02.2018 - 22:43
fonte
0

Funzioni di hashing della password specializzate come bcrypt sono progettate per proteggere i valori segreti che sono relativamente facili da indovinare. E questo, per dirla più tecnicamente, significa valori segreti che la seguente strategia può indovinare con buone possibilità pratiche di successo:

  1. Indovina valori più simili a quelli comparativamente improbabili;
  2. Prova un volume molto alto di ipotesi a velocità molto elevate.

Le funzioni di hashing della password specializzate danno per scontato che il # 1 sia solo un fatto di vita per le password, quindi cercano di contrastare l'attaccante sul punto 2 rallentandole.

Ma se generi stringhe di byte in modo uniforme a caso da un potente generatore di crittografia, allora # 1 non è più un problema, quindi non hai bisogno di una speciale funzione di hash della password. L'unica difesa di cui hai bisogno è di rendere le stringhe di byte casuali abbastanza a lungo. 64 byte sono 512 bit, molto più del necessario, e infatti se lo passi attraverso SHA-256 che già fissa il tuo livello di sicurezza a 256 bit, quindi non ottieni nulla per l'utilizzo di oltre 32 byte. Ma in realtà, una stringa da 16 byte (128 bit) dovrebbe essere sufficiente; ad esempio, il codice che il mio browser sta utilizzando per connettersi a questo sito utilizza una chiave a 128 bit, che è un livello di sicurezza assolutamente comune

    
risposta data 09.02.2018 - 02:37
fonte

Leggi altre domande sui tag