La robustezza della password (o parole d'accesso) è una misura di efficienza contro le varie tipologie di attacchi che una parola d'accesso può subire. La robustezza indica di quanti tentativi ha bisogno un aggressore, che non ha accesso diretto, per indovinarla e violarla.
La robustezza è calcolata in funzione della lunghezza, della complessità e dell'imprevedibilità (o entropia) della stringa di caratteri usati. Una parola d'accesso forte serve principalmente a ridurre il rischio complessivo di violazioni della sicurezza, ma non sostituisce la necessità di altri controlli più efficaci per verificarne l'attendibilità.
Creazione delle parole d'accesso Le parole d'accesso possono essere create in due modi: da programmi che generano stringhe complesse, oppure, nel caso più comune, da un umano qualsiasi. Una buona password è univoca e complessa, per questo esistono tre criteri da rispettare che servono a renderla più efficace e più sicura: i fattori di conoscenza e d'identità, i fattori di facilità e le regole base da rispettare.
I fattori di conoscenza e d'identità sono elementi da evitare, perché, nel caso in cui l'aggressore sia in possesso di alcune di queste informazioni, il compito di decodifica della password sarebbe di gran lunga più semplice. Quindi è buona norma non usare mai informazioni personali, come per esempio date di compleanno (personali o di amici e parenti), nomi di conoscenti, cibi preferiti, ecc.
Come per ogni misura di sicurezza, le parole d'accesso possono variare in termini di efficacia: alcune sono "forti", altre meno. I seguenti sono esempi di password la cui costruzione è debole:
parole d'accesso predefinite (fornite dal sistema e destinate a essere modificate, come "password", "admin" o "0000"); sostituzioni di caratteri di tipo leet (p. es. "p4ssw0rd") poiché tutti i programmi di decodifica ormai tengono conto anche di questo tipo di vocabolari; parole derivate da righe della tastiera (come "qwerty" o "12345678" o "qazwsx"); solo parole o solo numeri (es. "caterinateresa" oppure "12092972"); doppie parole (es. "giovannigiovanni"); parole comuni anche se seguite da numeri (come "ciaomondo01"); parole in altre lingue (spesso i programmi di decodifica cercano anche in elenchi con vocabolari in lingue straniere); parole al contrario, poiché se il sistema di attacco è buono esso riuscirà a leggere stringhe di prova in ogni senso (come "issoRoiraM", contrario di "MarioRossi").
Per far sì che una parola d'accesso sia buona, deve rispettare dei requisiti di complessità, ovvero soddisfare delle linee guida ben precise su come e con quali componenti si deve creare una password. Una lista (obsoleta) di possibili regole è la seguente: lunghezza minima della stringa di 8 caratteri; presenza di lettere minuscole (a-z); presenza di lettere maiuscole (A-Z); presenza di numeri arabi (0-9); caratteri non alfanumerici (ad esempio: !, ?, #, *).
Per esempio, creando una password di 8 caratteri seguendo i criteri sopra definiti, formata cioè a partire da 26 lettere minuscole, 26 lettere maiuscole, 10 cifre e 4 caratteri speciali, esisteranno combinazioni possibili; in questo modo un attacco a forza bruta diventa più difficile ma comunque non impossibile.
Tuttavia, le summenzionate regole sono ormai superate e obsolete. Oggi è difficile raccomandare la creazione di parole d'accesso più brevi di 12 caratteri, e talvolta molti esperti raccomandano di usare parole più lunghe di 16 caratteri. Inoltre, le regole ferree dell'utilizzo sistematico di lettere maiuscole e minuscole, numeri e soprattutto caratteri speciali spesso e volentieri rende le password più insicure, poiché più difficili da ricordare per gli umani, che tenderanno a preferire euristiche che abbassano l'entropia totale della parola d'accesso, rendendola più debole — come, per esempio, mettendo semplicemente un punto esclamativo alla fine della stringa contenente il proprio nome e la propria data di nascita: "mariorossi1980!". Per questi motivi, le migliori pratiche sono date dall'uso di frasi d'accesso (in inglese passphrases), memorizzate in un gestore password, e unite all'autenticazione multifattore. Si vedano i paragrafi più in basso per maggiori dettagli.
Entropia delle parole d'accesso Solitamente, per specificare la forza di una password nell'industria informatica si usa il concetto di entropia. Il grado di entropia di una qualsivoglia stringa binaria è dato dal logaritmo in base due dell’effettiva lunghezza in bit della stringa considerata. Per esempio, data una stringa alfanumerica di 10 caratteri espressa in ASCII a 7 bit, la sua entropia è bit. Il numero minimo di bit di entropia necessari a rendere una password "inviolabile" dipende dal tipo di minaccia da cui ci si vuole difendere.
Decrittazione a 64 e 72 bit
Nel 1998 la Electronic Frontier Foundation creò l'EFF-DES Cracker, soprannominato "Deep Crack", una macchina in grado di rompere a forza bruta l'algoritmo DES. La macchina costò meno di dollari e il 15 luglio 1998, l'EFF in collaborazione con distributed.net, riuscì a decriptare una chiave a 56 bit in 22 ore e 15 minuti, vincendo dollari. Nel 2002 la rete distributed.net riuscì a rompere una chiave di cifratura a 64 bit effettivi in circa 4 anni.
In uno documento del 2005 si è presentato uno studio sistematico della scelta delle chiavi e di come generarle con una buona entropia. I risultati variano da 29 bit di casualità, ovvero tentativi necessari se si prevedono solo attacchi online, a 128 bit in uscita, ricavati da 384 bit di ingresso composti da 128 bit di dati e 256 bit di chiave, per le chiavi di crittografia che fanno riferimento a funzioni di miscelazione per bit multipli più forti.
A partire dal 2007 la rete distributed.net apre il progetto di decrittazione RC5-72. L'approccio del progetto era quello di decrittare un messaggio a 72 bit provando tutte chiavi possibili (forza bruta) fino a trovare quella corretta. Per far questo l'intera area di lavoro è stata divisa in blocchi, ogni pacchetto consiste in (circa 4,2 miliardi) combinazioni possibili. L'hardware di partenza del progetto è stato NVidia CUDA, che riusciva a calcolare fino a 600 milioni di chiavi al secondo.
Nel 2008 iniziarono le modifiche hardware per aumentare i core di lavoro di RC5-72 progettati per funzionare anche su ATI. Verso la fine del 2008 vennero concluse le modifiche e introdotti i processori AMD Radeon HD 6000 series e ATI Radeon HD 5000 series con una velocità di calcolo di 1,8 miliardi di chiavi al secondo. Gli ultimi aggiornamenti rilasciati dalla Distributed.net del 2017 mostrano che, ad oggi, le tempistiche per decrittare un messaggio a 72 bit, avendo a disposizione partecipanti al progetto, sono di giorni, ovvero circa 14 anni.
A causa dei limiti riconosciuti dalla fisica fondamentale, non c’è alcuna aspettativa per quanto riguarda la decrittazione di chiavi maggiori o uguali a 256 bit tramite un attacco di forza bruta.
Password casuali Le password casuali consistono in stringhe di lunghezza già specificata composte da simboli presenti in alcuni set già esistenti come, ad esempio, il codice ASCII. La forza della password dipende dal calcolo dell’entropia relativo alla chiave generata. Tuttavia, queste chiavi non sono generate in modo del tutto casuale, molti generatori di password disponibili pubblicamente creano sequenze facilmente reperibili nelle librerie di programmazione. Per questo motivo le chiavi generate hanno un livello di entropia abbastanza basso. Esistono però software, soprattutto nei sistemi operativi moderni, che sono in grado di generare password forti fino a 256-512 bit di entropia, ad esempio producendo sequenze composte da: lettere minuscole, lettere maiuscole, numeri e caratteri speciali.
Per le password generate da un processo che seleziona casualmente una stringa di lunghezza e da un insieme di simboli , il numero di casi possibili sarà . Di conseguenza aumentando o si rafforzerà la chiave generata. La forza misurata dall’entropia delle informazioni è il logaritmo in base 2 del numero di chiavi che è possibile generare:
Dove: è il numero di casi possibili, sono i simboli che compongono la password (lunghezza della password) ed è il numero di bit di entropia.
La seguente tabella illustra alcune tipologie di calcolo dell’entropia in base a diversi set di simboli:
+ Calcolo entropia per diversi set di simboli Set di simboli Numero di simboli S Entropia per simbolo ESistema di numerazione arabo (0–9) () 10 bitSistema numerico esadecimale (0–9, A–F) () 16 bitAlfabeto latino non case sensitive | (a–z) 26 bitAlfanumerico non case sensitive | (a–z o 09) 36 bitAlfabeto latino case sensitive | (a–z, A–Z) 52 bitAlfanumerico case sensitive (a–z, A–Z, 0–9) 62 bitASCII tranne spazio 94 bitASCII 95 bitASCII esteso 218 bitCodice binario (0–255 o 8 bit o 1 byte) 256 bit Diceware 7776 bit a parola
Per trovare la lunghezza S di una stringa di caratteri generata casualmente, sapendo con precisione il numero di bit di entropia utilizzati e il numero di casi possibili per trovare la chiave si usa la formula inversa della precedente:
Il risultato di tale formula viene arrotondato per eccesso fino al numero intero.
+ Numero dei caratteri che si possono utilizzare per avere bit di entropia Entropia password Sistema di numerazione arabo Sistema numerico esadecimale Alfabeto latino(no case sensitive) Alfanumerico(no case sensitive) Alfabeto latino(case sensitive) Alfanumerico(case sensitive) ASCII ASCII esteso 8 bit(1 byte) 3 2 2 2 2 2 2 2 32 bit(4 byte) 10 8 7 7 6 6 5 5 40 bit(5 byte) 13 10 9 8 8 7 7 6 64 bit(8 byte) 20 16 14 13 12 11 10 9 80 bit(10 byte) 25 20 18 16 15 14 13 11 96 bit(12 byte) 29 24 21 19 17 17 15 13 128 bit(16 byte) 39 32 28 25 23 22 20 17 160 bit(20 byte) 49 40 35 31 29 27 25 21 192 bit(24 byte) 58 48 41 38 34 33 30 25 224 bit(28 byte) 68 56 48 44 40 38 35 29 256 bit(32 byte) 78 64 55 50 45 43 39 33
Password generate a mano Solitamente le persone tendono a generare password con un basso livello di entropia. Secondo uno studio effettuato da Microsoft nel 2007 su mezzo milione di utenti, la media del livello di sicurezza utilizzato nel web è 40,54 bit di entropia.
Nel giugno del 2004 il National Institute of Standards and Technology pubblicò un’edizione speciale riguardante la sicurezza informatica e le linee guida per l'identità digitale chiamata NIST special pubblication 800-63, nella quale vengono elencate tutte le tipologie di errori comuni commessi dagli utenti nello scegliere la propria password personale. L’articolo suggerisce anche il seguente schema approssimativo di valutazione dell’entropia per generare chiavi sicure: il primo carattere deve essere di almeno 4 bit di entropia; l’entropia dei sette caratteri successivi deve essere di almeno 2 bit; dal nono al ventesimo ogni carattere deve avere almeno 1,5 bit di entropia; se vengono utilizzate lettere maiuscole, minuscole e caratteri non alfabetici viene aggiunto un bonus di 6 bit di entropia; viene aggiunto un bonus di 6 bit per le password di lunghezza da 1 a 19 caratteri e solamente dopo aver effettuato un controllo esteso del dizionario per garantire che la password non sia contenuta all'interno di un set di chiavi già esistente. Seguendo questo schema, per esempio, una password di 8 caratteri senza maiuscole e senza caratteri non alfabetici è stimata intorno ai 18 bit. Nel 2010 viene pubblicato un documento redatto da Florida State University, Redjack LLC e Cisco che dimostra la non adeguatezza dello schema NIST perché non fornisce una metrica valida per la stima dell’entropia di una password scelta dall’uomo.
Memorizzare una password