Crittografia/Attacco di forza bruta

Wikibooks, manuali e libri di testo liberi.
Indice del libro

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]

Nella pratica un brute force compie le seguenti operazioni:

  1. Compone una possibile chiave
  2. Calcola l'hash della chiave composta
  3. Se l'hash calcolato è uguale all'hash di input termina e avvisa l'utente stampando la chiave.
  4. Se l'hash non era uguale ricomincia dal punto 1.

Comporre la chiave[modifica]

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]

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]

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.