Robustezza della password: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Etichette: Modifica da mobile Modifica da applicazione mobile Modifica da applicazione Android
Riga 6:
Le password possono essere create in due modi: da [[software]] che generano [[stringa (informatica)|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 di identità, i fattori di facilità e le regole base da rispettare.
 
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:
===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 dell'animale domestico
*data di nascita
*numero telefonico
*nome dei 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.<ref name="MIT sicurezze delle password">{{Cita news|url= http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-it-4/s1-wstation-pass.html |titolo= MIT password security |autore= Red Hat Enterprise Linux 4: Security Guide}}</ref>
 
Password predefinite (fornite dal sistema e destinate ad essere modificate, come password, admin o default), sostituzioni di caratteri di tipi [[leet]] (i software di decodifica ormai sono tutti implementati anche con questo tipo di vocabolario),<ref name="LEET">{{Cita news|url= http://www.robertecker.com/hp/research/leet-converter.php?lang=en |titolo= 1337 LEET |autore= Robert Ecker |data= 27 aprile 2015}}</ref> parole derivate da righe della tastiera, solo parole o solo numeri, doppie parole, parole comuni anche se seguite da numeri, parole in altre lingue (spesso i software di decodifica cercano anche in elenchi con vocabolari in lingue straniere), o parole al contrario (se il sistema di attacco è buono leggerà le stringhe di prova in ogni senso):
Password predefinite (fornite dal sistema e destinate ad essere modificate):
*password
*admin
*default
Sostituzioni di caratteri di tipi [[Leet]] (i software di decodifica ormai sono tutti implementati anche con questo tipo di vocabolario):<ref name=LEET>{{Cita news|url= http://www.robertecker.com/hp/research/leet-converter.php?lang=en |titolo= 1337 LEET |autore= Robert Ecker |data= 27 aprile 2015}}</ref>
*c140
*M4r10
Parole derivate da righe della tastiera:
*qwerty
*asdf
*fred
Solo parole o solo numeri:
*3,14159 ([[pi greco]])
*2,7182 ([[numero di Nepero]])
*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 usati 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 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:
Line 55 ⟶ 20:
*Caratteri 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 combinazioni possibili; in questo modo un attacco [[bruteMetodo forza bruta|attacco di forza forcebruta]] 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>
 
Altre regole di base che converrebbe rispettare per aumentare la propria sicurezza sono:
 
• Cambiare la password ad intervalli regolari (Sarebbe consigliato un cambio di password ogni 3 mesi);
 
• Non utilizzare la stessa password per sistemi differenti (es. stessa password per Facebook, Twitter, Instagram ecc ecc).
 
La mancata osservanza di tali consigli può fare in modo che un attacco [[brute force]] aumenti di efficacia.
 
==Entropia delle password==
Solitamente nell’industria informatica per specificare la forza di una password si usa l’[[entropia (teoria dell'informazione)|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 si dovrà considerare <math>\log_2 70</math>.<br />
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 si dovrà considerare <math>log_2 70</math>.<br />
Il numero minimo di bit di entropia necessari a rendere una password quantomeno inviolabile, dipende dal tipo di minaccia.
 
Line 77 ⟶ 33:
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.<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 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 ([[bruteMetodo forceforza 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 |data= distributed.net URL consultato il 14 luglio 2017 |urlmorto= sì }}</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’è nessuna aspettativa per quanto riguarda la decrittazione di chiavi maggiori o uguali a 256 bit tramite un attacco di bruteforza forcebruta.
 
===Password casuali===
Line 94 ⟶ 50:
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_2)</math>
 
Dove: L è il numero di casi possibili, S sono i simboli che compongono la password (lunghezza della password) ed E è il numero di bit di entropia.
Line 127 ⟶ 83:
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:
 
<math>S = E / \log_2 L </math>
Il risultato di tale formula viene arrotondato per eccesso fino al numero intero.
 
Line 177 ⟶ 133:
{{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 il l'[[bruteattacco forcedi forza bruta]] attack, ovvero un algoritmo che prova tutte le combinazioni possibili di un cifrario di caratteri alfanumerici.
 
===La potenza di un bruteattacco forcedi attackforza bruta===
La potenza di un brute[[attacco forcedi attackforza 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> NT = L^m + L^{m + 1} + L^{m + 2} + ...\dots + L ^M </math>
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, <math> NT = 26^1 + 26^2 + 26^3 + 24^4 + \dots + 26^{10} = 1.4116709 e^{14}</math> chiavi diverse.
<math> NT = 26^1 + 26^2 + 26^3 + 24^4 + ... + 26^{10} = 1.4116709 e^{14}</math> chiavi diverse.
 
=== Tempi necessari per attacco brutedi forza bruta 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 un [[calcolatore]] riesce a generare in un secondo e il numero dei calcolatori utilizzati per fare un attacco (N). 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>
 
<math> ( NT ) / V / N </math>
 
La tabella seguente mostra il tempo necessario per l'attacco Brutedi Forceforza 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 chiavi al secondo.
 
{| class="wikitable" style="text-align: left;"
Line 213 ⟶ 168:
|}
 
Attualmente alcune piattaforme online hanno adottato metodi contro ill'attacco brutedi forceforza attackbruta 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 [[CaptchaCAPTCHA]]
*Il blocco forzato della connessione dopo un numero di tentativi falliti
 
Line 225 ⟶ 180:
==Gestori di password==
Un compromesso ideale per gestire numerose quantità di password è di usare un gestore di password. Un gestore di password è un sistema che consente all’utente di utilizzare un gran numero di password diverse dovendone ricordare solamente una, ovvero quella che serve per effettuare l’accesso al sistema di crittografia dove sono contenute tutte le altre chiavi. La password generale di accesso deve essere difficile e con un livello di entropia alto.
Solitamente un buon gestore fornisce già un alto tasso di sicurezza e di resistenza agli attacchi di bruteforza forcebruta.
 
== Note ==