Questo articolo sarà un po’ diverso dagli altri: oltre a parlarvi dell’argomento (Crackare password n.d.r.), voglio proporvi una piccola sfida.

Sappiamo che le password devono essere lunghe, devono essere complesse e solo una di queste due proprietà non basta: avere la stessa password per ogni sito web, sappiamo, non è cosa giusta. Tutte queste accortezze per cosa? Per non farsi rubare le password ovviamente: ma se volessi provarci? Vi è mai capitato di crackare password?

Inizio dicendo che a me la parola ”crackare” fa pensare a martellare e rompere: prendi una password e la smarmelli con un martello. Ora non è questo ciò che succede se ”cracki” una password, in realtà ciò che si fa è trovare il cosiddetto plaintext, cioè la password in chiaro corrispondente al suo hash, che è la password cifrata. Questo è solo uno dei metodi per riuscire nell’intento: ci sono altri modi, come il phishing, ma non pensiamoci più di tanto ora.

Per crackare una password si parte dall’avere il suo hash. Come lo otteniamo? Eh su questo siate fantasiosi voi, ho qualche asso nella manica ma andiamo avanti. Diciamo che abbiamo un hash: adesso potremmo provare qualche attacco. L’idea di base è capire quale algoritmo è stato usato per generare l’hash della password e poi usarlo noi stessi su combinazioni alfanumeriche. Perciò generiamo gli hash delle nostre combinazioni e semplicemente controlliamo se quello creato da noi è proprio l’hash della password. Quando, partendo da una qualche parola (anche solo dalla lettera a) e andando avanti a tentativi (generiamo hash, confrontiamo), stiamo utilizzando il cosiddetto attacco a forza bruta (brute force attack). Non è molto intelligente, non usa tecniche particolari e se la password è lunga e complessa potrebbe richiedere talmente tanto tempo che è del tutto inutile provarci: se sappiamo che la password deve essere per forza lunga al massimo 8 caratteri, ad esempio, oppure sono ammessi soltanto lettere e numeri, allora abbiamo modi per limitare il numero di combinazioni da provare e quindi limitire il tempo richiesto.

Un altro tipo di attacco a tentativi è quello col dizionario (dictionary attack). Un dizionario non è altro che una lista di combinazioni fattibili. Esempio: volete crackare la password di Facebook della vostra ragazza (siete persone corrette e rispettabili e non lo fareste mai giusto?). Aprite un file di testo e riga per riga mettete tutte le password che pensate potrebbero essere giuste. Ci scrivete nomi di parenti, date importanti, nomi uniti a date, cose preferite etc. Vi siete costruiti un piccolo dizionario ed eseguite l’attacco. Il dictionary attack, adesso, prende una ad una la combinazione di lettere e numeri che voi avete

fornito e li prova come prima. Sembra simile al brute force attack, invece di provare tutte le combinazioni prova solo quelle che avete dato voi: se il dizionario possiede la password allora l’attacco la troverà in tempi molto brevi, altrimenti non funziona. Questo tipo di attacco nudo e crudo può essere sconfitto abbastanza facilmente: diciamo che siete certi che la password da crackare sia una parola italiana, allora potete usare come dizionario quello della lingua italiana (intendo proprio Treccani). Ma se il creatore della password l’ha scritto male la parola? Fallisce tutto! Di solito i vari software che offrono questo attacco in realtà implementano un ibrido: prendono una parola dal dizionario fornito e la testano. Non va? Allora provano delle varianti di quella parola, ci aggiungono pezzi cambiano lettere etc. (una sorta di unione di brute force attack e dictionary attack n.d.r.).