Ho cercato di trovare informazioni sul fatto che password_verify()
utilizza il confronto di tempo costante di lunghezza per evitare attacchi di temporizzazione.PHP password_verify() e confronto lento a confronto
Ora, semplice esempio:
$hash = '$2y$10$HH3906lfby7HOy1N3duQh.Kju.84ct6AcMZm2p/SYZsZSXuYWvvT.';
$startTime = microtime(TRUE);
password_verify('rasmuslerdorf', $hash);
$endTime = microtime(TRUE);
$time = $endTime - $startTime;
Questo produce sempre uscita leggermente diverso, che, secondo this article ("Perché il codice hash in questa pagina confrontare gli hash in 'tempo di lunghezza costante'? "Paragrafo), potrebbe essere utilizzato in attacco di temporizzazione per raccogliere un hash. Penso che questi risultati siano piuttosto casuali, ma sicuramente non costanti.
La domanda è, password_verify()
utilizza il confronto di tempo costante di lunghezza per evitare l'attacco di temporizzazione? Non ci sono informazioni su di esso nei documenti e, a causa della mia esperienza superficiale, non riesco a interpretare bene i tempi di elaborazione delle funzioni.
Grazie! Non ho mai visto questo repo prima. – Nevertheless