Robustezza della password: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riscrittura generale di alcune parti dell'articolo, con aggiunta di informazioni aggiornate e buone pratiche, insieme con le relative fonti. L'articolo dev'essere pesantemente riscritto, sia per svecchiarlo sia per riorganizzarlo presentando prima le informazioni moderne piú rilevanti.
Riga 1:
La '''robustezza della password''' (o [[Parola d'accesso|parole d'accesso]]) è una misura di efficienza contro le varie tipologie di attacchi che una [[password]]parola d'accesso può subire.
La robustezza indica di quanti tentativi ha bisogno un aggressore, che non ha accesso diretto alla password, per indovinarla e violarla, introducendosi così illegalmente in [[account]] e [[sistema informatico|sistemi informatici]].
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 complessivo di violazioni della [[sicurezza informatica|sicurezza]], ma non sostituisce la necessità di altri controlli più efficaci per verificarne l'attendibilità.
 
La forzarobustezza dellaè passwordcalcolata si ricava da unain funzione tradella lunghezza, della complessità e dell'imprevedibilità (o [[Entropia (teoria dell'informazione)|entropia]]) della stringa di caratteri usati. Una passwordparola d'accesso forte serve principalmente a ridurre il rischio complessivo di violazioni della [[sicurezza informatica|sicurezza]], ma non sostituisce la necessità di altri controlli più efficaci per verificarne l'attendibilità.
==Creazione della password==
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.
 
==Creazione delladelle passwordparole d'accesso==
I fattori di conoscenza e di 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.
Le passwordparole d'accesso possono essere create in due modi: da [[softwareSoftware|programmi]] 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 d'identità, i fattori di facilità e le regole base da rispettare.
 
I fattori di conoscenza e di 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 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>
 
Come per ogni misura di sicurezza, le password,parole d'accesso possono variare in termini di efficacia,: alcune sono “forti”"forti", altre meno. GliI esempiseguenti riportatisono quiesempi sottodi illustrano''password'' vari metodi inla 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):
 
* parole d'accesso predefinite (fornite dal sistema e destinate a essere modificate, come "password", "admin" o "0000");
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.
* sostituzioni di caratteri di tipo [[leet|''leet'']] (p. es. "p4ssw0rd") poiché tutti i programmi di decodifica ormai tengono conto anche di questo tipo di vocabolarî;<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>
La lista delle regole da rispettare è la seguente:
* 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 passwordparola 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<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>:
*lunghezza minima della stringa di 8 caratteri;
*presenza di lettere minuscole (a-z);
Line 20 ⟶ 28:
*caratteri non alfanumerici (ad esempio: !, ?, #, *).
 
AdPer esempio, usandocreando una ''password'' condi il8 minorcaratteri numeroseguendo dii carattericriteri possibilisopra (8definiti, caratteri)formata cioè a partire da 26 lettere minuscole, combinata26 conlettere imaiuscole, criteri10 sopracifre definitie 4 caratteri speciali, esisteranno <math>(26 + 26 + 10 + 4)^8 = 66^8 =</math> {{formatnum:218340105584896360040606269696}} combinazioni possibili; in questo modo un [[Metodo forza bruta|attacco dia 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>
 
Tuttavia, le summenzionate regole sono ormai superate e obsolete. Oggi è difficile raccomandare la creazione di parole d'accesso più brevi di 12 caratteri,<ref>{{Cita web|url=https://support.google.com/accounts/answer/32040?hl=it|titolo=Creare una password efficace e un account più sicuro - Guida di Account Google|sito=support.google.com|accesso=2024-04-30}}</ref><ref>{{Cita web|url=https://security.harvard.edu/use-strong-passwords|titolo=Use Strong Passwords|sito=security.harvard.edu|lingua=en|accesso=2024-04-30}}</ref> e talvolta molti esperti raccomandano di usare parole più lunghe di 16 caratteri.<ref>{{Cita web|url=https://www.pluralsight.com/blog/security-professional/modern-password-guidelines|titolo=Password Best Practices for Today {{!}} Pluralsight|sito=www.pluralsight.com|lingua=en|accesso=2024-04-30}}</ref> 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!"—.<ref>{{Cita web|url=https://pages.nist.gov/|titolo=NIST SP 800-63 Digital Identity Guidelines-FAQ|sito=pages.nist.gov|accesso=2024-04-30}}</ref> Per questi motivi, le migliori pratiche sono date dall'uso di [[Passphrase|frasi d'accesso]] (in inglese ''passphrases''), memorizzate in un gestore ''password'', e unite all'autenticazione [[Autenticazione a due fattori|multifattore]].<ref>{{Cita web|url=https://cloud.google.com/solutions/modern-password-security-for-users?hl=it|titolo=Sicurezza con password moderne per gli utenti {{!}} Soluzioni|sito=Google Cloud|accesso=2024-04-30}}</ref><ref>{{Cita web|url=https://www.ncsc.gov.uk/guidance/authentication-methods-choosing-the-right-type|titolo=Authentication methods: choosing the right type|sito=www.ncsc.gov.uk|lingua=en|accesso=2024-04-30}}</ref> Si vedano i paragrafi più in basso per maggiori dettagli.
==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 numero minimo di bit di entropia necessari a rendere una password quantomeno inviolabile, dipende dal tipo di minaccia.
 
==Entropia delle passwordparole d'accesso==
=== Decrittazione a 64 e 72 bit ===
Solitamente nell’industria informatica, per specificare la forza di una password nell'industria informatica si usa l’il concetto di [[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;. perPer esempio, data una stringa alfanumerica di 10 caratteri espressa in [[ASCII]] a 7 bit, sila dovràsua considerareentropia è <math>\log_2 (10\times7) = \log_2 70 \approx 6,13</math> bit.<br />
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.
Il numero minimo di bit di entropia necessari a rendere una password quantomeno "inviolabile," dipende dal tipo di minaccia da cui ci si vuole difendere.
 
=== Decrittazione a 64 e 72 bit ===
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>
{{vedi anche|EFF DES cracker}}
Nel 19991998 la [[Electronic Frontier Foundation]] creò l'[[Electronic Frontier Foundation|EFF]]-[[Data Encryption Standard|DES]] Cracker, soprannominato "[[EFF DES cracker|Deep Crack]]", una macchina in grado di rompere a forza bruta l'algoritmo [[Data Encryption Standard|DES]]. La macchina costò meno di {{formatnum:250000}} 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 {formatnum:10000}} dollari. Nel 2002 la rete 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,“RandomnessIn Requirementsuno fordocumento Security”,del ha2005 si è presentato neluno 2005studio alcunisistematico studidella suscelta comedelle misurarechiavi l’entropiae di come generarle con una chiavebuona entropia. I risultati variano da 29 bit di casualità, ovvero <math>2^{{29}}</math>, circa {{formatnum:500000000}} di tentativi necessari se si prevedono solo [[attacchi ''online'']], a [[128 bit]] in outputuscita, 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.{{chiarire}}<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 Distributedrete 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 ([[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.{{chiarire}}
 
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.<ref name=velocità>{{Cita news |url= https://stats.distributed.net/speed/ |titolo= Confronti di velocità del client |sito= Distributed|accesso= 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 {{formatnum:129586}} partecipanti al progetto, sono di {{formatnum:5337}} 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 | sito= Distributed |accesso=9 luglio 2017}}</ref>
 
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.{{cn}}
 
===Password casuali===