Rafforzamento della chiave

In crittografia per rafforzamento della chiave (key strengthening) si intendono delle tecniche utilizzate per rendere più sicure delle chiavi segrete deboli, come password o passphrase, verso gli attacchi a forza bruta, incrementando il tempo necessario a provare tutte le possibili chiavi. Le password o le passphrase create dagli uomini sono infatti spesso corte o abbastanza prevedibili per permetterne la violazione. Il rafforzamento della chiave rende questo genere di attacchi più difficoltoso.

Le tecniche di rafforzamento della chiave consistono praticamente nell'inserire la chiave originaria in un algoritmo che elabora una seconda chiave, quella appunto rafforzata. Già le dimensioni della nuova chiave (ad esempio, almeno 128 bit) dovrebbero essere sufficienti a renderla più protetta contro gli attacchi con il metodo forza bruta. In generale l'algoritmo utilizzato dovrebbe essere sicuro, nel senso che non dovrebbero esistere scorciatoie che consentano di calcolare la chiave rafforzata con meno lavoro da parte del computer rispetto all'utilizzo dello stesso algoritmo di rafforzamento della chiave.

Il processo di rafforzamento della chiave lascia a chi attacca solo due opzioni: o prova ogni possibile combinazione della chiave rafforzata (cosa impossibile se la chiave rafforzata è abbastanza lunga), oppure prova le combinazioni probabili della chiave iniziale. In quest'ultimo caso, se la chiave iniziale è una password o una passphrase, l'autore dell'attacco dovrebbe prima cercare ogni parola in un dizionario o in un elenco di password comuni, quindi dovrebbe provare tutte le combinazioni di caratteri per le password più lunghe. Ovviamente il processo di rafforzamento della chiave non impedisce questo approccio, ma colui che attacca è costretto a dedicare molto più tempo per ogni tentativo.

Se colui che attacca utilizza la stessa potenza di hardware dell'utente, ciascuna ipotesi impiegherà lo stesso tempo speso per elaborarla dall'utente (ad esempio, un secondo). Anche se il malintenzionato ha risorse di elaborazione molto maggiori rispetto all'utente, il rafforzamento della chiave rallenterà comunque l'attaccante, dal momento che il computer dell'utente deve calcolare la funzione di rafforzamento una sola volta (quando l'utente inserisce la sua nuova password), mentre l'attaccante deve calcolarla per ogni ipotesi d'attacco.