Contromisure al Cracking degli Hash (e contro-contromisure)

A magnifying glass is held in front of a computer screen in this picture illustration taken in Berlin May 21, 2013. The Financial Times' website and Twitter feeds were hacked May 17, 2013, renewing questions about whether the popular social media service has done enough to tighten security as cyber-attacks on the news media intensify. The attack is the latest in which hackers commandeered the Twitter account of a prominent news organization to push their agenda. Twitter's 200 million users worldwide send out more than 400 million tweets a day, making it a potent distributor of news. REUTERS/Pawel Kopczynski (GERMANY - Tags: CRIME LAW SCIENCE TECHNOLOGY) - RTXZUYF

Le funzioni hash sono funzioni in grado di produrre un risultato univoco di lunghezza fissa partendo da un parametro di lunghezza variabile. Inoltre sono irreversibili: dal risultato non si può risalire al dato originale. Altre considerazioni sulle funzioni hash possono essere trovate nell’articolo  Introduzione alle funzioni hash.

Queste funzioni sono spesso utilizzare per cifrare password. Infatti nei database le password non vengono memorizzate in chiaro ma in codice hash irreversibile, in genere md5 o sha1.

Gli hash non sono reversibili ma sono craccabili. Utilizzando le cosiddette rainbow tables, gigantesche tabelle di lookup precalcolate è possibile risalire in pochi secondi al valore originale che ha originato il codice cifrato. Inoltre è facile reperire su Internet siti che mettono a disposizione il servizio di lookup degli hash.

Una contromisura a questo tipo di attacco è quella di aggiungere alla password un altro valore. Un’idea potrebbe essere quella di aggiungere il nome utente concatenandolo alla password prima di sottoporlo alla funzione hash.

Se per esempio inserisco l’hash della password ‘pippo’, ovvero ‘0c88028bf3aa6a6a143ed846f2be1ea4’ in un servizio di lookup di cui parlavo prima ottengo immediatamente la password in chiaro (ovvero ‘pippo’).

Se invece concateno la password al nome utente, e l’utente in questione è ‘admin’ il codice hash non sarà più ‘0c88028bf3aa6a6a143ed846f2be1ea4’ bensì ‘4daf4b83ca0f88d95f0a26d96aadda03’  più difficile da trovare nei servizi online, ma ancora non al sicuro dagli attacchi rainbow tables.

Se oltre al nome utente si aggiungono altri valori costanti di 10 o più caratteri alfanumerici e contenenti caratteri speciali la sicurezza della password si alza notevolmente, rendendo il compito dei cracker assai meno agevole.

Quello crittografico è un settore delicatissimo e improvvisarsi esperti è sconsigliato; affidarsi al fai da te è un approccio letale. Se si ha la necessità di aggiungere sicurezza alle proprie applicazioni conviene rivolgersi a soluzioni collaudate.

Una di queste è Phpass, framework di hashing creato da Openwall e utilizzato da popolari CMS come Drupal e WordPress.

Naturalmente qualcuno ha creato un brute forcer in Python per attaccarlo.

2 Commenti

  1. Ho trovato un programma dal nome “MD5 Password Hashes Cracker”. E’ veramente utile un programma del genere, o nn riuscirà mai a crackare un hash?

I commenti sono bloccati.