scrypt

scrypt e’ un algoritmo KDF nato da un’idea di Colin Percival: rendere più costoso un attacco hardware su larga scale attraverso un algoritmo che obbiga ad utilizzare una quantità relativamente rilevante di memoria per essere eseguito. I precedenti algoritmi KDF si limitano a fornire una soluzione costosa in termini di tempo di esecuzione, in base al principio che se per codificare una chiave durante l’autenticazione di un utente è accettabile attendere anche 0,1 sec, qualora lo stesso algoritmo venisse impiegato in un attacco brute-force per tentare di scoprire la chiave eseguendolo su tutti i possibili valori, gli 0,1 sec moltiplicati per un centinaio di milioni di milioni di combinazioni (le possibili chiavi composte da 8 caratteri A-Za-z0-9) sembrano un deterrente efficacie.
Purtroppo se lo stesso attacco viene effettuato mediante un apposito hardware (FPGA o ASIC) in grado di tentare in parallelo su centinaia di migliaia di core l’esecuzione dell’algoritmo, ecco che il tempo finale di decodifica diventa pericolosamente inferiore.
L’ideo di Colin Percival è un algoritmo che non possa essere replicato in HW su centinaia di migliai di core poichè ognuno di questi richiederebbe una quantità di memoria e quindi un costo tale da limitare fortemente la realizzabilità del dispositivo.

La tabella che segue dà un’idea dell’incremento del costo dell’hardware in funzione della lunghezza della chiave e dell’algoritmo utilizzato.
kdf