Quante possibilità possono i computer di oggi controllare (al secondo) in un hash SHA512 di una voce casuale lunga 50 byte? [chiuso]

1

Il problema che voglio evitare è l'attacco "brute force" contro un database. Quindi se aggiungo un sale crittografico random di 50 byte alle mie informazioni (che non ho bisogno di recuperare, solo il suo hash) - è abbastanza sicuro?

So che la risposta è inesatta - Dipende se si tratta di un supercomputer, o di un PC, ecc. Voglio avere un'idea generale - un supercomputer può passare attraverso 10 ^ 9 di essi in un secondo? 10 ^ 20? Ci vorrà un PC all'anno per passare attraverso tutti loro? Sii vago.

EDIT: Il sale rimarrà solo nel risultato dell'hash.

    
posta ispiro 06.08.2012 - 16:30
fonte

1 risposta

4

Lo scopo di un sale è non per rendere più lento il calcolo dell'hash, è per evitare che le tabelle arcobaleno siano utili. Una singola iterazione di SHA512 è modo troppo veloce per essere utile contro gli attacchi bruteforcing.

Su una GPU decente, puoi fare ~ 100M hash / sec ( nuovo collegamento ) con SHA512. Moltiplicalo per sistemi con più GPU. Con un KDF lento come bcrypt , puoi modificare il numero di iterazioni per essere più adatto. Vuoi qualcosa intorno a ~ 0.3s / hash per un buon margine di sicurezza.

Tenere presente che 50 byte sono 400 bit o uno spazio tasti di 2 ^ 400. Sei quasi sicuro di trovare una collisione in SHA512 se riesci a calcolare 2 ^ 400 hash. Tuttavia, l'attaccante non sta cercando di indovinare il sale. Quello di cui dovresti preoccuparti è che un attaccante rompa gli hash quando già conosce il sale.

La soluzione è usa PBKDF2, bcrypt o scrypt e < a href="https://security.stackexchange.com/questions/17421/how-to-store-salt"> salva il sale in testo semplice nel database.

Aggiornamento:

Sembra che tu stia cercando di implementare il tuo schema. Per favore non fai questo. Esistono due regole di crittografia ampiamente accettate:

  1. La crittografia è difficile.
  2. Non eseguire il rollover.

Non posso sottolineare abbastanza strong quanto sia pericoloso lanciare i propri schemi, specialmente quando si ha a che fare con la crittografia. Nemmeno il leggendario Bruce Schneier oserebbe scrivere il proprio criptosistema senza una seria revisione tra pari e mesi (se non anni) di test e modifiche.

Il consiglio che ti ho dato per quanto riguarda l'hashing è uno standard basato sulla revisione tra pari e una quantità enorme di test teorici e pratici. Tentare di aumentarlo utilizzando hashing extra e altri black-magic è una cattiva idea e aumenterà solo la superficie di attacco della tua applicazione e creerai un potenziale difetto di sicurezza. Attenersi allo standard.

    
risposta data 06.08.2012 - 16:36
fonte

Leggi altre domande sui tag