Robustezza della password

misura di efficienza contro gli attacchi che una password può subire

La robustezza della password è una misura di efficienza contro le varie tipologie di attacchi che essa può subire. Questa serve a calcolare mediamente, quanti tentativi ha un aggressore, che non ha accesso diretto alla password, di indovinarla e violarla. La forza della password si ricava da una funzione tra lunghezza, complessità e imprevedibilità della stringa di caratteri usati. Una password forte serve principalmente a ridurre il rischio di violazioni della sicurezza, ma, oltre alla sua robustezza, per mantenere i propri dati al sicuro, la password dovrà soddisfare dei criteri di complessità.

Creazione della password

Le password possono essere create in due modi: utilizzando delle apparecchiature per la randomizzazione, ovvero, software che generano stringhe complesse, oppure, nel caso più comune, possono essere generate da un umano qualsiasi. Una buona password è univoca e complessa, per questo esistono alcuni criteri da rispettare che servono a renderla più efficace e più sicura. La lista dei criteri è composta da tre punti chiave: i fattori di conoscenza e di identità, i fattori di facilità e le regole base da rispettare.

Fattori di conoscenza e di identità

I fattori di conoscenza e di identità sono elementi da evitare assolutamente, 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:

  • nome;
  • cognome;
  • nome del animale domestico;
  • data di nascita;
  • numero telefonico;
  • nome parenti.

Fattori di facilità

Come per ogni misura di sicurezza, le password, possono variare in termini di efficacia, alcune sono “forti”, altre meno. Gli esempi riportati qui sotto illustrano vari metodi in cui la costruzione della password potrebbe risultare debole.Errore nelle note: Parametro non valido nel tag <ref>

Password predefinite (fornite dal sistema e destinate ad essere modificate):

  • password;
  • admin;
  • default.

Terminologia haker, chiamata anche 1337 (LEET) (i software di decodifica ormai sono tutti implementati anche con questo tipo di vocabolario): [1]

  • c140;
  • M4r10.

Parole derivate da righe della tastiera:

  • qwerty;
  • asdf;
  • fred.

Solo parole o solo numeri:

  • 314159 (pi greco);
  • 27182 (e);
  • mario.

Doppie parole:

  • ciaociao;
  • mario1mario2.

Parole comuni anche se seguite da numeri (parole con nomi, parole che si possono trovare in un dizionario o termini che sentiamo spesso in programmi televisivi o radio):

  • mario1;
  • programma54.

Parole in altre lingue (spesso i software di decodifica cercano anche in elenchi con vocabolari in lingue straniere):

  • welcome93;
  • jesuisM.

Parole al contrario (se il sistema di attacco è buono leggerà le stringhe di prova in ogni senso):

  • oiram;
  • r3k4H.

Regole base da rispettare

Per far si che una password 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. La lista delle regole da rispettare è la seguente:

  • Lunghezza minima della stringa di 8 caratteri;
  • Lettere minuscole (a-z);
  • Lettere maiuscole (A-Z): l’utilizzo delle combinazioni con il tasto SHIFT/BLOC MAIUSC della tastiera migliorano notevolmente la complessità di una password;
  • Cifre in base 10 (0-9);
  • Caratteri non alfanumerici (ad esempio !, ?, #, *): L’utilizzo delle combinazioni con il tasto CTRL+SHIFT/ALT della tastiera migliorano notevolmente la complessità di una password.

Se prendiamo una password con il minor numero di caratteri possibili (8 caratteri), combinata con i criteri sopra definiti, esisteranno 218.340.105.584.896 combinazioni possibili, in questo modo un attacco brute force diventa più difficile ma comunque non impossibile.[2]

Entropia delle password

Solitamente nell’industria informatica per specificare la forza di una password si usa l’entropia dell’informazione (tecnica dell’informazione). Il grado di entropia di una qualsivoglia stringa binaria è dato dal logaritmo in base due dell’effettiva lunghezza in bit della stringa considerata, ad esempio, data una stringa alfanumerica in codice ASCII a 9 bit si dovrà considerare log2 90. Il numero minimo di bit di entropia necessari a rendere una password quantomeno inviolabile, dipende dal tipo di minaccia. Nel 1976 la EFF “Electronic Frontier Foundation” creò DES soprannominato “Deep Crack”, un software che usava 56 bit di entropia in grado si decriptare 2^56 differenti chiavi, ovvero, circa 72 quadrilioni. Nel 1999, DES in collaborazione con distributed.net, riuscì a decriptare una chiave da 56 bit in 22 ore e 15 minuti. Nel 2002 la distributed.net riuscì a rompere una chiave di cifratura a 64 bit in circa 4 anni.[3] RFC4028 ,“Randomness Requirements for Security”, ha presentato nel 2005 alcuni studi su come misurare l’entropia di una chiave. I risultati variano da 29 bit di casualità, ovvero 2^29, circa 500.000.000 di tentativi necessari se si prevedono solo attacchi online, a 128 bit in output, 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.Errore nelle note: Parametro non valido nel tag <ref> A partire dal 2011 la distributed.net ha stimato che per decifrare una chiave a 72 bit ci vogliono circa 124 anni. [4] A causa dei limiti riconosciuti dalla fisica fondamentale, non c’è nessuna aspettativa per quanto riguarda la decriptazione di chiavi maggiori o uguali a 256 bit tramite un attacco di brute force.

Password casuali

Le password casuali consistono in stringe 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 del tutto generate casualmente, molti generatori di password che troviamo pubblicamente creano sequenze che possiamo ritrovare facilmente 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 striga di lunghezza L e da un insieme di simboli S, il numero di casi possibili sarà L^S, di conseguenza aumentando L o S si rafforzerà la chiave generata. La forza misurata dall’entropia delle informazioni è il log in base 2 del numero di chiavi che è possibile generare: [5][6]

 

Dove: L è il numero di casi possibili, S sono i simboli password ed E è l'entropia in bit.

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 E
Sistema di numerazione arabo (0–9) () 10 3.332 bit
Sistema numerico esadecimale (0–9, A–F) () 16 4.000 bit
Alfabeto latino non case sensitive | (a–z) 26 4.700bit
Alfanumerico non case sensitive | (a–z o 09) 36 5.170 bit
Alfabeto latino case sensitive | (a–z, A–Z) 52 5.700bit
Alfanumerico case sensitive (a–z, A–Z, 0–9) 62 5.954bit
ASCII tranne spazio 94 6.555 bit
ASCII 95 6.570 bit
ASCII esteso 218 7.768 bit
Codice binario (0–255 o 8 bit o 1 byte) 256 8.000 bit

Per trovare invece la lunghezza L di una stringa di caratteri generata casualmente, sapendo quanti bit di entropia vogliamo utilizzare 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 x bit di entropia
Entropia password "E" Sistema di numerazione arabo Sistema numerico esadecimale Alfabeto latino no case sensitive Alfanumerico no case sensitve 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 dalla Microsoft nel 2007 su mezzo milione di utenti, la media del livello di sicurezza utilizzato nel web è 40,54 bit di entropia.[7]
Nel giugno del 2004 NIST “National Institute of Standards and Technology” pubblicò un’edizione speciale 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;
  • Dopo un controllo esteso sul dizionario, se la password è compresa tra 1 e 19 caratteri, viene aggiunto un bonus di 6 bit di entropia.

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 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.[8]

Memorizzare una password

Un metodo di memorizzazione efficace e facile da ricordare è quello mnemonico, ovvero, quello di convertire con un’abbreviazione che contiene solo le prime lettere di ogni parola e gli eventuali numeri una determinata frase (esempio: “ho un gatto nero” corrisponde a h1gn). La guida di Norton consiglia di aggiungere la prima e l’ultima lettera del sito web utilizzato, maiuscole, attorno alla frase scelta (se il sito fosse questosito.it il risultato sarebbe Qh1gnO).[9]

Craccare una password

Tipologie di attacchi

Esistono in linea generale tre tipi di attacchi per riuscire a violare una password: Il dictionary attack, che si basa sul confronto della password da violare con una lista di parole comuni, più questa lista è lunga più aumenta la possibilità di avere un riscontro positivo, il password profiling, che sfrutta le informazioni a disposizione sull’utente (data di nascità, nome dell’animale domestico, interessi, numero telefonico, etc), per poi combinarle e risalire alla password e infine il brute force attack, la modalità di attacco più utilizzata, ovvero un algoritmo che prova tutte le combinazioni possibili di un cifrario di caratteri alfanumerici.

La potenza di un brute force attack

La potenza di un brute force attack è quantificabile tramite una formula che calcola il numero di tutte le combinazioni disponibili prima di trovare la chiave corretta:[10]    

Dove: NT è il totale numerico dei tentativi, L è la lunghezza del set di caratteri, m è la lunghezza minima della chiave, M è la lunghezza massima della chiave.

Ad esempio se utilizziamo come set di 26 caratteri e una stringa di lunghezza 10 allora:   chiavi diverse.

Tempi necessari per attacco brute force

Le tempistiche di un attacco variano a seconda di alcuni fattori: la potenza della password, la velocità di calcolo (V), ovvero il numero di password che riesce a generare in un secondo e il numero dei calcolatori utilizzati per fare un attacco (N). La formula è: [11]

 

La tabella seguente mostra il tempo necessario per l'attacco Brute Force in base alla lunghezza della password, al set di caratteri utilizzato e all’utilizzo di un solo calcolatore con la velocità di 500.000 chiavi al secondo.

Numero dei caratteri che si possono utilizzare per avere x bit di entropia
Lunghezza della password Maiuscolo Minuscolo e cifre Maiuscolo e minuscolo Tutto ASCII
<= 4 immediato immediato immediato 2 minuti
5 immediato 2 minuti 12 minuti 4 ore
6 10 minuti 72 minuti 10 ore 18 giorni
7 4 ore 43 ore 23 giorni 4 anni
8 4 giorni 65 giorni 3 anni 463 anni
9 4 mesi 6 anni 178 anni 444530 anni

Attualmente alcune piattaforme online hanno adottato metodi contro il brute force attack cercando di aumentare i tempi di ricerca delle password implementando soluzioni come:

  • La limitazione dei tentativi per indovinare la password;
  • Il tempo di attesa tra l’inserimento di una password e l’altra;
  • Il Chaptcha;
  • Il blocco forzato della connessione dopo un numero di tentativi falliti.

Attenzione: il template {{Progetto}} dev'essere usato fuori dal namespace principale. Nelle voci di enciclopedia, usare il template {{Portale}}.

  1. ^ Robert Ecker, 1337 LEET, 27 aprile 2015.
  2. ^ Microsoft, Requisiti password, agosto 2016.
  3. ^ distributed.net, 64 bit, statistiche e tempi, 14 luglio 2002.
  4. ^ distributed.net, 72 bit, statistiche e tempi, 9 luglio 2017.
  5. ^ William E. Burr, Donna F. Dodson, W. Timothy Polk, NIST Special Publication 800-63 versione 1 (PDF), giugno 2004 (archiviato dall'url originale il 12 luglio 2004).
  6. ^ Paul A. Grassi, Michael E. Garcia, James L. Fenton, NIST Special Publication 800-63 versione 3, giugno 2017.
  7. ^ Dinei Florencio e Cormac Herley, A Large-Scale Study of Web Password Habits (PDF), 2007.
  8. ^ Matt Weir, Sudhir Aggarwal, Michael Collins, Henry Stern, Testing Metrics for Password Creation Policies by Attacking Large Sets of Revealed Passwords (PDF), 2010.
  9. ^ Marian Merritt, Regole da rispettare per le password.
  10. ^ Massimiliano Montoro, Oxid.it, Brute-Force Password Cracker.
  11. ^ lastbit.com, Force Attack Password Recovery Methods, Brute-Force Attack.