Una lunghezza di uscita maggiore lo rende più strong, fino a un certo punto che è già stato raggiunto, con un ampio margine, quando si dispone di un output a 128 bit. Ingrandendolo ulteriormente non cambia la sicurezza.
Dettagli: a esclusione di qualsiasi debolezza strutturale, la sicurezza di una funzione hash dipende dalla sua resistenza agli attacchi generici (aka "fortuna": l'utente malintenzionato prova input casuali fino a quando viene trovata una corrispondenza) e tale resistenza dipende dalla dimensione dell'output dell'hash. Per una funzione di hash con un output di n bit, ci vuole sforzo 2 n perché l'attaccante possa trovare un preimage (cioè una password, non necessariamente il "vero", che corrisponde all'output). Gli sforzi al di là di 2 80 sono troppo lontani nel tecnologicamente non fattibile per essere immaginati da un aggressore. A 128 bit, hai già un margine 2 48 , vale a dire un fattore di quasi 300 migliaia di miliardi rispetto a quello che era già troppo costoso. Sarebbe come vantarsi di rimborsare il debito nazionale USA senza avere più di 0,01 $ in contanti.
Le dimensioni di output più grandi aiutano anche contro le collisioni; ancora una volta, gli attacchi generici basati sulla fortuna sono costati 2 n / 2 (e qui si vede perché SHA-1 ha un output a 160 bit: per rendere il costo della collisione di 2 80 non raggiungibile). Tuttavia, le collisioni non rappresentano un problema per l'hashing della password. La capacità di calcolare le collisioni non dà alcun vantaggio all'attaccante. Accade così che le collisioni siano anche non fattibili con le solite funzioni di hash, ma se fossero fattibili non sarebbe un grosso problema.
La vera debolezza nell'hash della password non è l'hashing ; è la password . O, più precisamente, la mente umana dietro la password. Gli attacchi riusciti alla password hash sono attacchi che tentano potenziali password, non attacchi che funzionano sulla funzione hash debolezza strutturale, se presente. Le attenuazioni comprendono l'hashing e la salatura lente, che è ciò che fa PBKDF2.
È possibile memorizzare solo 80 bit circa di output PBKDF2 (e il sale); le cose saranno comunque al sicuro. (Per ragioni puramente estetiche, crea 128 bit: queste persone informatiche amano semplicemente i poteri di due.)