Crittografia/Attacco di forza bruta
L'attacco di forza bruta (in inglese brute force) è uno dei modi per decifrare un testo che non ha una chiave (come nelle funzioni di hash). Gli hash infatti non possono essere decifrati. Il funzionamento è semplice da capire ma lungo e macchinoso da eseguire.
Progettare un attacco brute force
[modifica | modifica sorgente]Nella pratica un brute force compie le seguenti operazioni:
- Compone una possibile chiave
- Calcola l'hash della chiave composta
- Se l'hash calcolato è uguale all'hash di input termina e avvisa l'utente stampando la chiave.
- Se l'hash non era uguale ricomincia dal punto 1.
Comporre la chiave
[modifica | modifica sorgente]Nello specifico il programma dovrebbe produrre qualcosa tipo aaaa, aaab, aaac, ..., aaaz, ecc. Poiché uno dei difetti del brute force è il non poter sapere in anticipo la lunghezza della chiave da calcolare, solitamente si impongono dei limiti, tipo dai 5 ai 10 caratteri.
Calcolare l'hash
[modifica | modifica sorgente]Prova a calcolare l'hash di aaaa. Se ipotizziamo che l'hash da attaccare fosse 5f423b7772a80f77438407c8b78ff305 e l'algoritmo l'MD5, il programma dovrebbe calcolare hash sino ad avere una corrispondenza con 5f423b7772a80f77438407c8b78ff305 (che, per la cronaca, è l'hash di ciao).
Principali difetti del brute force
[modifica | modifica sorgente]I difetti principali del brute force sono:
- Lentezza, dovuta alla necessità di creare chiavi di varie lunghezze ed al fatto che se la soluzione è xxxx sarà una delle ultime chiavi provate.