Perché 8ms è un obiettivo per l'hashing?

5

Attualmente sto sviluppando un piccolo progetto in PHP, e poiché implica l'autenticazione dell'utente, ho cercato le opzioni che ho riguardo all'hashing. Ho optato per PBKDF2 principalmente per la sua natura iterativa, la flessibilità con gli algoritmi hash e l'estensione.

Quello che ho letto è che 8 ms (o 0,008 secondi) è qualcosa di un obiettivo per generare un hash. Perché questo valore specifico è l'obiettivo? Capisco il ragionamento che sta dietro ci vuole più tempo per generare un hash, ma perché 8ms in particolare? È semplicemente un buon valore bilanciato tra il tempo impiegato e la sicurezza, o c'è una ragione più specifica?

teorica

Diciamo che ho un server che può fare 6400 iterazioni con SHA256 con una lunghezza della chiave di 6 caratteri, con un sale che ha caratteri X e una password con caratteri Y lunghi in meno di 9 ms. Non sono sicuro che sia la "paura" che mi è stata inflitta, ma non la considererei sufficiente a causa del basso numero di iterazioni e della lunghezza della chiave estremamente breve nonostante sia salata e sottoposta a hash con ciò che è per tutti gli effetti e scopi un algoritmo sicuro. Quanto 9ms sul mio sistema saranno significativamente meno su un sistema dedicato a "crackare" l'hash. Di nuovo, questi valori sono solo teorici - non guardarli troppo.

Quindi, supponiamo di andare a 64000 iterazioni con una lunghezza della chiave di 60. Questo richiede quasi 90ms per calcolare, e lo considero sicuro a tutti gli effetti, sia a causa del suo elevato conteggio iterativo, sia della chiave di output la lunghezza e il tempo necessario per generare.

Più precisamente, ci vorrebbe 10 volte più a lungo per calcolare l'ultimo hash (rispetto al primo) indipendentemente dal sistema su cui viene calcolato, nonostante abbia impiegato circa il 91% in più della "regola 8ms" quando viene eseguito nel ambiente originale.

Quindi, da dove proviene questo valore di 8ms e su quali basi è raccomandato esattamente? L'8ms è basato sul tempo di calcolo del tuo ambiente o è calcolato con altri mezzi (ad esempio tramite un'applicazione di hash dedicata in esecuzione su una GPU)?

8ms Recommendation Source # 1

8ms Recommendation Source # 2

    
posta Scott Pritchard 05.06.2013 - 21:40
fonte

2 risposte

6

Non esiste una "regola di 8 ms". C'è un'equazione che era spiegata da Thomas Pornin (il tuo primo link) che ha dichiarato in quell'esempio che per 32 bit di la qualità della password e un attaccante con 200 risorse di calcolo come il tuo sistema di hashing dedicato agli hash crack completerebbe l'operazione in un mese se ti ci sono voluti 8ms per eseguire un hash. Devi adattare le ipotesi sulla forza della password, sulle risorse degli aggressori e sulla devozione delle risorse per soddisfare le tue esigenze.

    
risposta data 05.06.2013 - 22:07
fonte
2

Ok, in base al link / fonte che hai fornito: non esiste un valore specifico corretto del numero di iterazioni PKBDF2.

Quello che Thomas Pornin afferma nella sua risposta è che puoi fare alcuni calcoli approssimativi per stimare un buon equilibrio tra la quantità di energia del computer che userai nel tuo sistema, autenticare gli utenti e quanto un utente malintenzionato sarebbe disposto a spendere cercando di romperlo.

Tutti i numeri che ha usato nella sua risposta sono ipotesi: presume che chiunque ti attacchi abbia 100 computer e che ogni computer avrà la doppia potenza di calcolo della tua. Quindi, per impiegare un mese a provare a rompere il sistema, il suo calcolo indica che 8 ms nel tuo sistema, per generazione di hashing , significherà che l'attaccante impiegherà un intero mese in un attacco di forza bruta.

L'altra fonte che hai menzionato è anche un riferimento a questa prima risposta.

È un obiettivo? Forse, se sei nello scenario che descrive.

Perché preoccuparsi degli 8 ms? Perché è un numero da cui partire, poiché quella risposta è molto esplicativa su come sono stati raggiunti gli 8 ms.

Se ti aspetti di avere meno di 125 accessi al secondo, puoi aumentare il numero di iterazioni di PKBDF2 ed essere più sicuro ...

    
risposta data 05.06.2013 - 22:09
fonte

Leggi altre domande sui tag