Robustezza della password: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti.
Revisione (TeX, formatnum, overlink ,etc)
Riga 14:
Per far sì 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:
*Lunghezzalunghezza minima della stringa di 8 caratteri;
*Presenzapresenza di lettere minuscole (a-z);
*Presenzapresenza di lettere maiuscole (A-Z);
*Presenzapresenza di [[numeri arabi]] (0-9);
*Carattericaratteri non alfanumerici (ad esempio: !, ?, #, *).
 
Ad esempio, usando una password con il minor numero di caratteri possibili (8 caratteri), combinata con i criteri sopra definiti, esisteranno 218.340.105.584.896{{formatnum:218340105584896}} combinazioni possibili; in questo modo un [[Metodo forza bruta|attacco di forza bruta]] diventa più difficile ma comunque non impossibile.<ref name=Microsoft>{{Cita news|url= https://technet.microsoft.com/it-it/library/hh994562(v=ws.11).aspx |titolo= Requisiti password |autore= Microsoft |data= agosto 2016}}</ref>
 
==Entropia delle password==
Riga 27:
 
=== Decrittazione a 64 e 72 bit ===
Nel 1998 la [[Electronic Frontier Foundation]] creò EFF-DES Cracker ("[[Data Encryption Standard]]") soprannominato “Deep Crack”, un algoritmo di cifratura che usava una chiave a [[64 bit]] (56 bit utili e 8 [[bit di parità]] o controllo) in grado di decriptare fino a <math>2^{{56}}</math> differenti chiavi, ovvero, circa 72 quadrilioni.
 
Nel 1999, DES, in collaborazione con [[distributed.net]], riuscì a decriptare una chiave a 56 bit in 22 ore e 15 minuti. Nel 2002 la distributed.net riuscì a rompere una chiave di cifratura a 64 bit effettivi in circa 4 anni.<ref name=bit64>{{Cita news |url= https://stats.distributed.net/projects.php?project_id=5 |titolo= 64 bit, statistiche e tempi |data= distributed.net URL consultato il 9 luglio 2017 |pubblicazione= |accesso= 4 maggio 2019 |urlarchivio= https://web.archive.org/web/20190518175132/http://stats.distributed.net/projects.php?project_id=5 |dataarchivio= 18 maggio 2019 |urlmorto= sì }}</ref>
 
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 <math>2^{{29}}</math>, circa 500.000.000{{formatnum:500000000}} 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.<ref name="Randomness Requirements for Security">{{Cita news|url= https://tools.ietf.org/html/rfc4086 |titolo= Randomness Requirements for Security 4028 |autore=J. Schiller, MIT, S. Crocker |data= giugno 2005}}</ref>
 
A partire dal 2007 la distributedDistributed.net apre il progetto di decrittazione RC5-72,. lL'approccio del progetto era quello di decrittare un messaggio a 72 bit provando tutte chiavi possibili ([[Metodo forza bruta|forza bruta]]) fino a trovare quella corretta. Per far questo l'intera area di lavoro è stata divisa in blocchi, ogni pacchetto consiste in <math>2^{32}</math> (circa 4,2 miliardi) combinazioni possibili. L'hardware di partenza del progetto è stato [[CUDA|NVidia CUDA]], che riusciva a calcolare fino a 600 milioni di chiavi al secondo.
 
Nel 2008 iniziarono le modifiche [[hardware]] per aumentare i [[core (informatica)|core]] di lavoro di RC5-72 progettati per funzionare anche su [[ATI Technologies|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.<br /><ref name=velocità>{{Cita news |url= https://stats.distributed.net/speed/ |titolo= Confronti di velocità del client |datasito= distributedDistributed|accesso= 14 luglio 2017 |urlmorto= sì }}</ref> Gli ultimi aggiornamenti rilasciati dalla Distributed.net URLdel consultato2017 ilmostrano che, ad oggi, le tempistiche per decrittare un messaggio a 72 bit, avendo a disposizione {{formatnum:129586}} partecipanti al progetto, sono di {{formatnum:5337}} giorni, ovvero circa 14 luglioanni.<ref 2017name=bit72>{{Cita news|urlmortourl= https://stats.distributed.net/projects.php?project_id=8 |titolo= 72 bit, statistiche e tempi | sito= Distributed |accesso=9 luglio 2017}}</ref>
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 129.586 partecipanti al progetto, sono di 5.337 giorni, ovvero circa 14 anni.<ref name=bit72>{{Cita news|url= https://stats.distributed.net/projects.php?project_id=8 |titolo= 72 bit, statistiche e tempi | data= distributed.net URL consultato il 9 luglio 2017}}</ref>
 
A causa dei limiti riconosciuti dalla fisica fondamentale, non c’è nessunaalcuna aspettativa per quanto riguarda la decrittazione di chiavi maggiori o uguali a 256 bit tramite un attacco di forza bruta.
 
===Password casuali===
Line 45 ⟶ 44:
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 <math>S</math> e da un insieme di simboli <math>L</math>, il numero di casi possibili sarà <math>L^S</math>. Di conseguenza aumentando <math>L</math> o <math>S</math> si rafforzerà la chiave generata.
La forza misurata dall’entropia delle informazioni è il loglogaritmo in base 2 del numero di chiavi che è possibile generare:<ref name=NIST1>{{Cita news|url= http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63v6_3_3.pdf|titolo= NIST Special Publication 800-63
versione 1|autore= William E. Burr|autore2= Donna F. Dodson|autore3= W. Timothy Polk|data= giugno 2004|urlmorto= sì|urlarchivio= https://web.archive.org/web/20040712152833/http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63v6_3_3.pdf|dataarchivio= 12 luglio 2004}}</ref><ref name=NIST3>{{Cita news|url= https://pages.nist.gov/800-63-3/sp800-63c.html |titolo= NIST Special Publication 800-63
versione 3 |autore= Paul A. Grassi|autore2=Michael E. Garcia|autore3=James L. Fenton |data= giugno 2017}}</ref>
 
<math>E = \log_2 L^S = S \log_2 L = S (\log L / \log_2log 2)</math>
 
Dove: <math>L</math> è il numero di casi possibili, <math>S</math> sono i simboli che compongono la password (lunghezza della password) ed <math>E</math> è il numero di bit di entropia.
 
La seguente tabella illustra alcune tipologie di calcolo dell’entropia in base a diversi set di simboli:
Line 60 ⟶ 59:
! Set di simboli || Numero di simboli ''S'' || Entropia per simbolo ''E''
|-
| align=left|[[Sistema di numerazione arabo]] (0–9) () || 10 || 3.332{{formatnum:3332}} bit
|-
| align=left|[[Sistema numerico esadecimale]] (0–9, A–F) () || 16 || 4.000{{formatnum:4000}} bit
|-
| align=left|[[Alfabeto latino]] non case sensitive | (a–z) || 26 || 4.700{{formatnum:4700}} bit
|-
| align=left|[[Alfanumerico]] non case sensitive | (a–z o 09) || 36 || 5.170{{formatnum:5170}} bit
|-
| align=left|[[Alfabeto latino]] case sensitive | (a–z, A–Z) || 52 || 5.700{{formatnum:5700}} bit
|-
| align=left|[[Alfanumerico]] case sensitive (a–z, A–Z, 0–9) || 62 || 5.954{{formatnum:5954}} bit
|-
| align=left|[[ASCII]] tranne spazio || 94 || 6.555{{formatnum:6555}} bit
|-
| align=left|[[ASCII]] || 95 || 6.570{{formatnum:6570}} bit
|-
| align=left|[[ASCII esteso]] || 218 || 7.768{{formatnum:7768}} bit
|-
| align=left|[[Sistema numerico binario|Codice binario]] (0–255 o 8 [[bit]] o 1 [[byte]]) || 256 || 8.000{{formatnum:8000}} bit
|}
 
Line 84 ⟶ 83:
 
<math>S = E / \log_2 L </math>
 
Il risultato di tale formula viene arrotondato per eccesso fino al numero intero.
 
{| class="wikitable" style="text-align: right;"
|+ Numero dei caratteri che si possono utilizzare per avere <math>x</math> bit di entropia
! Entropia password "<math>E"</math> || [[Sistema di numerazione arabo]] || [[Sistema numerico esadecimale]] || [[Alfabeto latino]] <br/>(no case sensitive) || [[Alfanumerico]] <br/>(no case sensitvesensitive) || [[Alfabeto latino]] <br/>(case sensitive) || [[Alfanumerico]] <br/>(case sensitive) || [[ASCII]] || [[ASCII esteso]]
|-
| 8 bit (1 byte) || 3 || 2 || 2 || 2 || 2 || 2 || 2 || 2
Riga 114:
 
===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.<ref name=Microsfot>{{Cita news|url= https://www.microsoft.com/en-us/research/wp-content/uploads/2006/11/www2007.pdf |titolo= A Large-Scale Study of Web Password Habits |autore= Dinei Florencio|autore2=Cormac Herley |data= 2007}}</ref>
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.<ref name=Microsfot>{{Cita news|url= https://www.microsoft.com/en-us/research/wp-content/uploads/2006/11/www2007.pdf |titolo= A Large-Scale Study of Web Password Habits |autore= Dinei Florencio|autore2=Cormac Herley |data= 2007}}</ref>
 
Nel giugno del 2004 il [[National Institute of Standards and Technology|NIST]] “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:
*Ilil primo carattere deve essere di almeno 4 bit di entropia;
*L’entropial’entropia dei sette caratteri successivi deve essere di almeno 2 bit;
*Daldal nono al ventesimo ogni carattere deve avere almeno 1,5 bit di entropia;
*Sese vengono utilizzate lettere maiuscole, minuscole e caratteri non alfabetici viene aggiunto un bonus di 6 bit di entropia;
*Vieneviene 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 Systems|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.<ref name=Maryland>{{Cita news|url= http://www.cs.umd.edu/~jkatz/security/downloads/passwords_revealed-weir.pdf |titolo= Testing Metrics for Password Creation Policies
by Attacking Large Sets of Revealed Passwords |autore= Matt Weir|autore2=Sudhir Aggarwal|autore3=Michael Collins|autore4=Henry Stern | pubblicazione= www.cs.umd.edu |p=University of Maryland |data= 2010}}</ref>
 
==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''). Un metodo vantaggioso, per non usare quantità innumerevoli di password per differenti piattaforme web, è quello di aggiungere la prima e l’ultima lettera del sito web utilizzato, in maiuscolo, attorno alla frase scelta (se il sito fosse questosito‹questosito.itit› il risultato sarebbe ''Qh1gnO'').<ref name=Norton>{{Cita news |url= https://it.norton.com/dos-donts-passwords/article |titolo= Regole da rispettare per le password |autore= Marian Merritt |urlmorto= sì |urlarchivio= https://web.archive.org/web/20161016062104/http://it.norton.com/dos-donts-passwords/article |dataarchivio= 16 ottobre 2016 }}</ref>
 
==Violare una password==
{{vedi anche|Password cracking}}
===Tipologie di attacchi===
Esistono in linea generale tre tipi di attacchi per riuscire a violare una password: l'[[attacco a dizionario]], 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 nascita, nome dell’animale domestico, interessi, numero telefonico, etc), per poi combinarle e risalire alla password e; infine l'[[attacco di forza bruta]], ovvero un algoritmo che prova tutte le combinazioni possibili di un cifrario di caratteri alfanumerici.
 
===La potenza di un attacco di forza bruta===
La potenza di un [[attacco di forza bruta]] è quantificabile tramite una formula che calcola il numero di tutte le combinazioni possibili prima di trovare la chiave corretta:<ref name=Oxid>{{Cita news |url=http://www.oxid.it/ca_um/topics/brute-force_password_cracker.htm |titolo=Brute-Force Password Cracker |autore=Massimiliano Montoro |pubblicazione= |accesso=10 luglio 2017 |urlarchivio=https://web.archive.org/web/20160302055156/http://www.oxid.it/ca_um/topics/brute-force_password_cracker.htm |dataarchivio=2 marzo 2016 |urlmorto=sì }}</ref>
<math> NTN_T = L^m + L^{m + 1} + L^{m + 2} + \dots + L ^M </math>
Dove: NT<math>N_T</math> è il totale numerico dei tentativi, <math>L</math> è la lunghezza del set di caratteri, <math>m</math> è la lunghezza minima della chiave, <math>M</math> è la lunghezza massima della chiave.
 
Ad esempio, se utilizziamo come set di 26 caratteri e una stringa di lunghezza 10, avremo:
<math> NTN_T = 26^1 + 26^2 + 26^3 + 24^4 + \dots + 26^{10} = 1.4116709 e\cdot 10^{14}</math> <br/>
chiavi diverse.
 
=== Tempi necessari per attacco di forza bruta ===
Le tempistiche di un attacco variano a seconda di alcuni fattori: la potenza della password, la velocità di calcolo (<math>V</math>), ovvero il numero di password che un [[calcolatore]] riesce a generare in un secondo e il numero dei calcolatori utilizzati per fare un attacco (<math>N</math>). La formula è:<ref name=lastbit>{{Cita news|url= http://lastbit.com/password-recovery-methods.asp#Brute%20Force%20Attack |titolo= Password Recovery Methods, Brute-Force Attack }}</ref>
 
{{chiarire|<math> ( NT )N_T / V / N </math>}}
 
La tabella seguente mostra il tempo necessario per l'attacco di forza bruta in base alla lunghezza della password, al set di caratteri utilizzato e all’utilizzo di un solo calcolatore con la velocità di 500.000{{formatnum:500000}} chiavi al secondo.
 
{| class="wikitable" style="text-align: left;"
|+ Numero dei caratteri che si possono utilizzare per avere <math>x</math> bit di entropia
! Lunghezza della password || [[Maiuscolo]] || [[Minuscolo]] e [[cifre]] || [[Maiuscolo]] e [[minuscolo]] || Tutto [[ASCII]]
|-
| <= math>\le</math>4 || immediato || immediato || immediato || 2 minuti
|-
| 5 || immediato || 2 minuti || 12 minuti || 4 ore
Line 165 ⟶ 166:
| 8 || 4 giorni || 65 giorni || 3 anni || 463 anni
|-
| 9|| 4 mesi || 6 anni || 178 anni || {{formatnum:444530}} anni
|}
 
Attualmente alcune piattaforme online hanno adottato metodi contro l'attacco di forza bruta cercando di aumentare i tempi di ricerca delle password implementando soluzioni come:
*Lala limitazione dei tentativi per indovinare la password;
*Ilil tempo di attesa tra l’inserimento di una password e l’altra;
*Ilil [[CAPTCHA]];
*Ilil blocco forzato della connessione dopo un numero di tentativi falliti.
 
=== One-time password ===