Crittografia/Attacco di forza bruta

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 forceModifica

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 chiaveModifica

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'hashModifica

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 forceModifica

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.