Scegliere password sicure

Non ci stancheremo mai di pubblicare notizie e informazioni su come scegliere password sicure. Qui di seguito un’utile ed interessantea analisi di Schneier:
Da quando ho parlato delle 34.000 password di MySpace che ho analizzato,
molte persone mi hanno scritto chiedendomi come scegliere delle password
sicure. Nel corso degli anni sono state scritte molte cose
sull’argomento, ma la maggior parte di esse pare basarsi più su
suggerimenti aneddotici che non su prove analitiche vere e proprie. Quel
che segue sono consigli seri e provati.

L’attacco contro il quale fondo la mia valutazione è un attacco
password-guessing offline. Questo attacco presume che l’’aggressore abbia
una copia del vostro documento criptato oppure un file di password
criptate di un server, e che possa provare una serie di password il più
velocemente possibile. Vi sono alcune circostanze in cui tale attacco
non ha senso. Le tessere Bancomat, per esempio, sono sicure anche se
hanno un codice PIN a quattro cifre, perché non è possibile effettuare
il password guessing offline. Ed è più probabile che la polizia ottenga
un mandato per il vostro account Hotmail invece di prendersi il disturbo
di craccare la password della vostra email. Il sistema key-escrow del
vostro programma di crittografia è quasi certamente più vulnerabile
della vostra password, così come è vulnerabile qualsiasi “domanda
segreta” che avete impostato nel caso vi dimentichiate della password.

Coloro che effettuano il password-guessing offline sono diventati sia
più veloci che più intelligenti. AccessData vende un prodotto chiamato
Password Recovery Toolkit, o PRTK. A seconda del software che sta
attaccando, PRTK può arrivare a provare centinaia di migliaia di
password al secondo, e dà la precedenza a password più comuni che non a
quelle più oscure.

Quindi la sicurezza delle vostre password dipende da due cose: da
qualsiasi dettaglio del software che possa rallentare il password
guessing, e da quale ordine, programmi come PRTK, indovinano le varie
password.

Alcuni software includono routine deliberatamente progettate per
rallentare il password guessing. Un buon software crittografico non
utilizza la vostra password come chiave crittografica; esiste un
processo che converte la password nella chiave crittografica. E il
software può rendere tale processo lento quanto vuole.

I risultati sono evidenti. Microsoft Office, per esempio, possiede una
conversione password-chiave molto semplice, quindi PRTK può provare
350.000 password di Microsoft Word al secondo su un PC Pentium 4 a 3
GHz, che rappresenta un hardware sufficientemente attuale. WinZip era
anche peggio: più di un milione di tentativi al secondo con la versione
7.0. Ma con la versione 9.0, la funzione ramp-up del criptosistema è
stata decisamente aumentata: ora PRTK può provare soltanto 900 password
al secondo. Anche PGP rende le cose deliberatamente difficili per
programmi come PRTK, permettendo anch’esso circa 900 tentativi al
secondo.

Nell’attaccare programmi con ramp-up volontariamente lenti, è importante
che ogni tentativo conti qualcosa. Un semplice attacco esaustivo a una
stringa di sei caratteri minuscoli, da “aaaaaa” a “zzzzzz” contiene più
di 308 milioni di combinazioni. Ed è generalmente improduttivo, perché
il programma impiega la maggior parte del tempo a provare password
improbabili come “pqzrwj”.

Secondo Eric Thompson di AccessData, una password tipica è costituita da
una radice e da un’appendice. Una radice non è necessariamente
rappresentata da una parola del dizionario, ma è comunque qualcosa di
pronunciabile. Un’appendice può essere un suffisso (90% dei casi) o un
prefisso (10% dei casi).

Perciò il primo attacco che PRTK effettua è provare un dizionario di
circa 1000 password comuni, quali “letmein”, “password”, “123456” e così
via. Poi le riprova combinandole con circa 100 suffissi comuni: “1”,
“4u”, “69”, “abc”, “!”, ecc. Che ci crediate o no, con queste 100.000
combinazioni PRTK già recupera il 24% di tutte le password.

Poi PRTK affronta tutta una serie di dizionari radicali e di appendice
sempre più complessi. I dizionari radicali comprendono:

* Dizionario di parole comuni: 5.000 voci
* Dizionario di nomi: 10.000 voci
* Dizionario globale: 100.000 voci
* Dizionario di pattern fonetici: 1/10.000 di una ricerca esaustiva del
carattere

Il dizionario di pattern fonetici è interessante. Non è un vero e
proprio dizionario, ma una routine basata sulla catena di Markov che
genera stringhe di caratteri pronunciabili in lingua inglese di una
lunghezza data. Per esempio, PRTK può generare e provare un dizionario
di stringhe di sei caratteri molto pronunciabili, o stringhe di sette
caratteri appena pronunciabili. Stanno sviluppando routine di
generazione anche per altre lingue.

PRTK effettua anche una ricerca esaustiva di stringhe di quattro
caratteri. Passa in rassegna i dizionari con parole minuscole (le più
comuni in assoluto), con l’iniziale maiuscola (le seconde più comuni),
tutte maiuscole e con la finale maiuscola. Poi passa in rassegna i
dizionari con le sostituzioni più comuni: “$” per “s”, “@” per “a”, “1”
per “l” e così via. Viene incluso anche il cosiddetto “leet speak”, che
per esempio sostituisce la “e” con “3”.

I dizionari di appendice comprendono:

* Tutte le combinazioni di due caratteri
* Tutte le date dal 1900 al 2006
* Tutte le combinazioni di tre caratteri
* Tutti i singoli simboli
* Tutti i caratteri singoli + simboli singoli
* Tutte le combinazioni di due simboli

La “salsa segreta” di AccessData è l’ordine con cui vengono esaminate le
varie combinazioni dei dizionari radicali e di appendice. Le ricerche
dell’azienda indicano che lo “sweet spot” delle password è rappresentato
da una radice di 7-9 caratteri più un’appendice comune, e che è più
probabile che un utente scelga una radice difficile da indovinare
piuttosto che un’appendice non comune.

Normalmente, PRTK si esegue su una rete di computer. Il password
guessing è un compito banalmente distribuibile, e può eseguirsi in
background con facilità. Una grande organizzazione come i Servizi
Segreti può benissimo installare centinaia di computer per scoprire una
password. Una compagnia chiamata Tableau sta costruendo un add-on
hardware FPGA specializzato per aumentare la velocità di PRTK con
programmi lenti come PGP e WinZip, per un aumento delle prestazioni
dell’ordine dei 150-300 tentativi.

Qual è l’efficacia di tutto questo? Eric Thompson stima che, avendo a
disposizione un intervallo di tempo compreso fra i 15 e i 30 giorni, il
suo software può craccare il 55-65% di tutte le password (ciò dipende in
grande misura dall’applicazione, ovviamente). Sono risultati molto
buoni, ma non eccezionali.

Ma questo senza contare i dati biografici. Appena può, AccessData
raccoglie qualunque informazione personale possibile sul soggetto prima
di cominciare. Se può vedere altre password, può formulare dei tentativi
sul tipo di password utilizzate dal soggetto. Quanto grande è la radice
impiegata? Che genere di radice è? Il soggetto mette appendici
all’inizio o alla fine di parola? Fa uso di sostituzioni? I codici
postali sono appendici comuni, per cui vengono aggiunte al file. Stesso
dicasi per indirizzi, nomi della rubrica indirizzi, altre password e
qualsiasi altro tipo di informazione personale. Questi dati aumentano di
un poco il livello di successo di PRTK, ma soprattutto riducono il tempo
impiegato da settimane a giorni, persino a ore.

Pertanto, se volete che la vostra password sia difficile da indovinare,
dovreste scegliere qualcosa che non figura in nessuno degli elenchi
radicali e di appendice. Dovreste mescolare le minuscole e le maiuscole
nella parte centrale della radice. Dovreste aggiungere numeri e simboli
nel centro della radice, e non come sostituzioni comuni. Oppure inserire
l’appendice nel mezzo della radice. Oppure usare due radici unite al
centro da un’appendice.

È difficile che venga indovinato anche un elemento che non sta in cima
agli elenchi dei dizionari di PRTK, come il dizionario di pattern
fonetici di sette caratteri, unito a un’appendice non comune.
Altrettanto difficile è una password composta dalle prime lettere di una
frase, specialmente se si aggiungono numeri e simboli al miscuglio. E,
certamente, queste password saranno difficili da ricordare: per questo
dovreste utilizzare un programma come Password Safe (gratuito e open
source) per conservarle. (PRTK può testare solo 900 password al secondo
di quelle contenute in Password Safe 3.0).

In ogni caso, nulla di tutto questo potrebbe avere importanza, dato che
AccessData vende anche un altro programma, Forensic Toolkit, che, fra
l’altro, esamina un disco rigido alla ricerca di qualsiasi stringa
stampabile. Cerca all’interno dei documenti, nel Registro, nelle email,
nei file di swap, nello spazio eliminato del disco… ovunque. Crea un
dizionario basato sui risultati della ricerca, e lo passa a PRTK.

E PRTK decodifica più del 50% delle password grazie a questo dizionario
soltanto.

Il problema è che la gestione della memoria del sistema operativo
Windows lascia dati dappertutto durante il corso normale delle
operazioni. Voi scrivete la vostra password in un programma, ed essa
viene conservata in qualche parte della memoria. Windows passa la pagina
dalla memoria al disco (swap), e diviene la coda di qualche file. Viene
quindi spostata in qualche zona remota del vostro disco rigido, e lì
rimane indefinitamente. Sotto questo punto di vista, Linux e Mac OS non
sono migliori.

Tengo a precisare che niente di tutto questo ha a che vedere con
l’algoritmo crittografico o con la lunghezza della chiave. Un algoritmo
debole da 40 bit non facilita la vita a questo attacco, e un algoritmo
forte a 256 bit non la rende più difficile. Questi attacchi simulano il
processo di inserimento della password da parte dell’utente, per cui la
grandezza della chiave risultante non è mai un problema.

Per anni ho sostenuto che il sistema più semplice per forzare un
prodotto crittografico non è quasi mai quello di rompere l’algoritmo, e
che quasi invariabilmente esiste un errore di programmazione che
permette di aggirare la matematica e di forzare il prodotto. Qui avviene
una cosa assai simile. Il metodo più semplice per indovinare una
password non è affatto quello di “indovinarla”, ma di sfruttare le
insicurezze che appartengono al sistema operativo sottostante.

L’analisi di 34.000 password di MySpace:
< http://www.wired.com/news/columns/0,72300-0.html>

Scegliere le password:
<
http://psychology.wichita.edu/surl/usabilitynews/81/Passwords.htm>
<
http://www.microsoft.com/windows/IE/community/columns/passwords.mspx>
<
http://www.brunching.com/passwordguide.html>

AccessData:
<
http://www.accessdata.com>

Password Safe:
<
http://www.schneier.com/passsafe.html>

Questo articolo è originariamente apparso su Wired.com.
<
http://www.wired.com/news/columns/1,72458-0.html>

Comments are closed.