La struttura di iterazione di PBKDF2 ha questo aspetto ( link ):
U_1 = PRF (P, S || INT (i))
U_2 = PRF (P, U_1)
...
U_{c - 1} = PRF(P, U_{c - 2})
U_c = PRF (P, U_{c-1})
Dove:
- PRF è la funzione Pseudo casuale (ovvero la funzione di hash sottostante)
- P è la password
- S è il sale
- i è il numero di blocco
Dato U_ {c - 1} e U_c, potrei provare a trovare P tale che U_c = PRF (P, U_ {c-1}) piuttosto che dover iterare 1000 volte come normalmente dovresti con PBKDF2 .
Questo essenzialmente impedisce di avere più iterazioni nel KDF, riducendo il numero di chiamate al PRF da 1000 volte per prova alla minima differenza tra il numero di iterazioni di due hash.
Un miglioramento se hai bisogno di più PBKDF2 con un numero di iterazione diverso dalla stessa password, è quello di variare Salt.