In che modo il fattore di costo BCRYPT di PHP_rip_hash () si traduce in tempi di calcolo di cracking

5

Sto cercando di comprendere appieno la relazione tra BCRYPT e COST di fattori e quanto tempo impiegherebbe una macchina per decifrare una password con PHP 5.5 password_hash ()

I tempi di crittografia che ho osservato su un server medio per password_hash () sono:

COST 14 takes 1.23s to 2s
COST 13 takes 0.6 to 1s
COST 12 takes about 0.3s
COST 11 takes about 0.15s
COST 10 takes about 0.08s
COST 09 takes about 0.04s
  1. Il numero di round è proporzionale al tempo impiegato?

  2. Il tempo di calcolo richiesto per craccare una password sulla stessa scala lineare o esponenziale come?

es. Se un hash COST 10 ha impiegato 1 minuto per croppare. Quanto tempo stiamo guardando con COST 14 per la stessa password? Presumo che ciò varierebbe a seconda dell'entropia della password. Prendiamo quindi una password di 10 lettere mediamente debole come "EasyCrack1" come base per il ragionamento.

    
posta hexalys 14.04.2015 - 07:52
fonte

1 risposta

7

Come documentato piuttosto indirettamente nella pagina per la funzione crypt () , il parametro cost è il logaritmo in base 2 del conteggio dell'iterazione, o per dirla in altro modo, ogni aumento +1 a cost rappresenta un raddoppiamento del numero di iterazioni.

Se un hash di costo 10 impiega un minuto per craccare, un costo-14 richiederebbe 2 ^ (14-10) = 16 minuti. Craccare un hash crittografico come bcrypt consiste nell'indovinare quale sia la password, eseguirne l'hash e vedere se gli hash corrispondono, quindi la difficoltà di cracking aumenta proporzionalmente al tempo di hashing. Proprio come aumentare il costo di 1 raddoppia il tempo di hashing, raddoppia lo sforzo necessario per spezzare l'hash.

    
risposta data 14.04.2015 - 09:19
fonte

Leggi altre domande sui tag