La sicurezza di una password

Data: 1 giu 2013
ultima modifica: 28 gen 2024

Sito on line dal 2003
Home page
email
Chi sono
Translation
ℒa sicurezza di una password dipende da quanto è disposto a pagare il nostro nemico per crakkarla, cioè per venire a conoscenza della sua forma esplicita. Spesso la password è sotto forma di un hash e spesso si usa lo sha256 che è un algoritmo di hash. È disponibile l'hash e da questo è molto difficile risalire alla password in quanto l'hash è un algoritmo non invertibile.

Vediamo qualche esempio:
echo -n "password123"|sha256sum
ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
abbiamo applicato l'algoritmo di hash sha256 alla parola segreta:
"password123"

e abbiamo ottenuto l'hash:
"ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f"

Il problema del cracker è invertire l'hash ovvero lui ha a disposizione il numero esadecimale di 64 cifre qui sopra e deve trovare a che password corrisponde. L'unico modo di risolvere il problema è provare tutte le combinazioni di password, calcolare l'hash e poi vedere se l'hash calcolato corrisponde a quello che ha in mano. Se corrisponde allora ha trovato la parola segreta.

Poiché provare tutte le combinazioni è molto lungo si cercano delle scorciatoie e cioè si usa il fatto che le persone non sono dei computer e che tengono in mente solo parole segrete fatte in un certo modo. Per esempio la gente si ricorda una parola contenuta nei dizionari seguita da un numero oppure si ricorda uno schema di lettere che c'è nella tastiera, per esempio qwerty oppure qazwsxedc. La prima password, qwerty, non è altro che la prima riga delle lettere sulla tastiera, la seconda parola segreta, qazwsxedc, non è altro che le prime tre colonne delle lettere sulla tastiera.

I dizionari delle principali lingue contengono pochi termini, ogni uno circa 20 mila termini, quindi provando 100 mila password già si possono crakkare le parole segrete più facili. Aggiungendo alla fine della parola del dizionario tutti i numeri compresi tra 0 e 9999, si rende la ricerca un po' più difficile. In quest'ultimo caso i tentativi da fare ovvero gli hash da calcolare sono un po' di più ovvero 1 miliardo.

Nel caso si usi la forma della tastiera per inventarsi la parola segreta allora i tentativi da fare per il cracker non sono molti, probabilmente sotto i 10 mila considerando tutti i possibili schemi e anche con un numero finale di 4 cifre si sta sotto il miliardo.

Per il cracker il problema è quindi risolvibile con 2 miliardi di prove sia se usiamo una parola del dizionario sia se usiamo lo schema della tastiera. La domanda a questo punto è: ma quanto tempo impiega un computer per fare 2 miliardi di hash con l'algoritmo sha256? La risposta è: poco tempo.

Ci sono macchine che calcolano l'hash a miliardi in un secondo e comprando decine o migliaia di queste macchine (lo può fare lo Stato americano oppure la mafia o altre organizzazioni) si possono calcolare anche mille o più miliardi di hash al secondo. Quindi in un secondo la password che abbiamo visto sopra è scovabile.

Veniamo alla seconda domanda. C'è un limite a queste macchine che calcolano così tanti hash al secondo? La risposta è affermativa. Queste macchine che adesso si chiamano ASIC ma che in futuro si evolveranno in macchine più potenti, hanno un grosso limite ovvero consumano energia elettrica, ogni hash costa una certa energia spesa.

In Italia l'energia elettrica ha un prezzo all'utente finale di 20 centesimi di euro al chilowattora, a livello industriale costa meno della metà, quindi uno Stato può pagarla un po' meno ma ha comunque un costo ingente. All'estero la corrente si paga di meno ma comunque mai sotto il costo industriale di 6 centesimi di dollaro al chilowattora. L'energia costa dovunque.

Le migliori macchine di adesso, le ASIC, per calcolare mille miliardi di hash (1 Terahash) consumano 0.4 milionesimi di euro in corrente elettrica. Con gli ASIC la nostra password, quella vista sopra, ha un costo in termini energetici irrisorio, quindi non è una parola segreta "sicura".

Veniamo alla domanda che mi ha ispirato per scrivere questo testo:
Esiste una password che abbia un costo in corrente veramente alto?
Certamente esiste, anzi si può determinare una password che abbia il costo energetico alto quanto si vuole. Detto questo la conseguenza è valutare cosa protegge la nostra password e che valore abbia l'informazione protetta dalla password. Se il valore fosse di 1 milione di euro allora il costo energetico per scovare la password deve essere pari ad almeno 1 milione di euro.

Facciamo qualche esempio. La password casuale VRnkgxqgTKoK è composta da sole lettere maiuscole e minuscole dell'alfabeto inglese e ha un numero di tentativi che il cracker deve fare per scovarla pari a 390877006486250192896. Considerando il costo di 0.4 milionesimi di euro per 1 miliardo di tentativi (Hash), si ha:

Il costo energetico è di 150 euro.

La password casuale iktpxmwritiw è composta da 12 lettere minuscole su un alfabeto inglese di 25 lettere e ha un numero di hash che il cracker deve calcolare per scovarla pari a 95428956661682176 con un costo elettrico relativo pari a 4 centesimi di euro.

Aggiungendo alla password qui sopra il numero finale casuale 7909 si aumenta il costo energetico e si arriva a 240 euro. La parola segreta complessiva è iktpxmwritiw7909.

In conclusione per proteggere una informazione che vale qualche centinaia di euro una password di 12 lettere minuscole casuali dell'alfabeto inglese seguita da un numero di 4 cifre casuali è sufficiente.

Generiamo tramite un computer o una app di un telefono una password completamente casuale (avendo abbastanza entropia) di 12 lettere prese però dall'alfabeto italiano di 21 caratteri, seguiti da un numero altrettanto casuale di 4 cifre. Valore: 30 euro. Il mio generatore mi ha dato:

zgrvuhstmdtg5218

Per memorizzare una tale parola segreta si può sfruttare una particolarità della mente umana e cioè che è facile memorizzare una storiella. Quindi creiamo una storiella che abbia come prima lettera delle parole le lettere zgrvuhstmdtg5218. Per quanto riguarda il numero va imparato a memoria.

La storiella va scelta con cura, per esempio:
Zoe Grugniva Ruspando Velocemente Un Hash. Stava Timidamente Mangiando Del Tartufo Grigio. 5218
Questa storiella con il numero vale la bellezza di 30 euro ma una volta che è pubblica non vale più nulla quindi non rivelate a nessuno la vostra fiaba che protegge la password.

Kensan.it


Per quanto riguarda creare la password generata in modo casuale ci sono moltissimi algoritmi che lo fanno: per Firefox ci sono addon che si installano con un click come pwgen.

Man mano che passano gli anni il costo energetico per hash diminuisce e si passa dagli attuali 0.4 milionesimi di euro per terahash a valori minori. È un processo lento in parte contrastato dal fatto che l'energia elettrica costa sempre di più. Tutte le organizzazioni e tutti i cracker sono sottoposti alla legge economica del costo dell'energia, nessuno escluso.

In particolare anche la NSA americana che si vocifera abbia mezzi potentissimi, non può scovare una password che abbia un valore pari all'intera ricchezza americana prodotta in un anno: il PIL USA. Lo stesso vale per la mafia ma entrambi hanno mezzi più efficaci per farci rivelare la parola segreta anche se non vogliamo rivelarla: Guantanamo per quanto riguarda gli americani e la lupara bianca per la mafia.

Per una password che non debba proteggere un grande valore si possono usare dei servizi on line oppure una app scaricata sul proprio cellulare. Un servizio è ad esempio quello di Proton Password-generator che impostato su password di 22 caratteri (alfabeto inglese), minuscolo, senza simboli e numeri da la pwd:

wqzdkdbemcadrvunxauavm

togliendo i caratteri del solo alfabeto inglese (jkwxy) si ha:

qzddbemcadrvunauavm (19 caratteri)

che è utile per fissare la nostra password casuale nella parte delle lettere dell'alfabeto italiano. Per i numeri usiamo il servizio on line per generare casualmente un numero di 4 cifre, ottengo:

2p01yf3hcbrv8t4qhhfp4w

estraggo le sole cifre ed ho:

2013844 (7 cifre)

A questo punto posso costruire la mia password completamente casuale prendendo i primi enne caratteri di «qzddbemcadrvunauavm» e le prime emme cifre di «2013844», ottenendo la password di n+m caratteri.


Elementi di calcolo combinatorio

Nei commenti un lettore mi ha chiesto come si calcolano tutti i tentativi da fare per scoprire una pwd (password). La risposta completa si trova nei libri di matematica ma qui diamo degli spunti.

Supponiamo di avere un alfabeto α di simboli di questo tipo:

α ={a, b, c}

e di avere una parola composta da due soli simboli. Quante parole differenti si possono formare? Il problema si può facilmente risolvere costruendo una matrice bidimensionale ovvero di dimensione 2 pari al numero di simboli della nostra parola (2):


a
b
c
a
aa
ab
ac
b
ba
bb
bc
c
ca cb cc

mettendo nella casella prima la lettera corrispondente della riga e poi la lettera della colonna, formiamo per ogni casella una parola di due caratteri. Così abbiamo costruito tutte le combinazioni di una parola di due lettere con un alfabeto di 3 simboli. È facile rispondere quante sono le possibili combinazioni: sono 3×3 ovvero il numero di simboli di α elevato alla potenza 2 perché 2 è la lunghezza della parola: 32.

È facile immaginare che per trovare tutte le combinazioni di una parola di tre simboli del tipo «cab» è necessario passare dalla matrice bidimensionale a quella tridimensionale: un cubo di Rubik per intenderci. Con l'immaginazione pensiamo alla matrice qui sopra con l'aggiunta di tre simboli che escono dallo schermo verso di noi: a, b, c. Si formeranno 3×3×3 caselline cubiche, ogni una delle quali possiamo riempirla con la parola di tre simboli fatta prendendo prima la casella delle righe, poi quella delle colonne e poi quella che esce dallo schermo. L'immagine del cubo che segue può aiutare:

Cubo con gli spigoli numerati da a, b, c

Tutte le possibili combinazione di una parola di tipo «cab» sono quindi 33 come le caselle del cubo qui sopra raffigurato. Analogamente per una parola di lunghezza 4 le combinazioni sono 34. Ecc, ecc. Se α ={a, b, c, d, e, f, g, h, i, l, m, n, o, p, q, r, s, t, u, v, z} una parola del tipo «qaz» ha 213 combinazioni perché corrisponde a un cubo di lato 21. Se la parola è di 12 lettere allora tutte le possibili combinazioni sono:

2112

Gli altri concetti sono una variante di questi concetti appena esposti come giustapporre due password: «zgrvuhstmdtg» + «5218» = «zgrvuhstmdtg5218» da un numero di combinazioni che è il prodotto del numero di combinazioni degli elementi.


Aggiornamento 27 gen 2024: Il sito Hash rate Index riporta dati sempre aggiornati relativi alle macchine per minare bitcoin, quel che ci interessa qui è quanto consumano le migliori macchine ASIC per fare Hash. Nella data di questo aggiornamento siamo arrivati a circa 26 joule per TH (Tera Hash).

Domanda: Quanto costa fare 1 mille miliardi di tentativi ovvero 1 THash?

Partiamo dalle basi e calcoliamo quanto è l'energia di 1 joule in termini di kWh:

1 kWh = 1000W×1h = 1000W×3600s = 3.6×106 j
1 j = 0.278×10-6 kWh

visto il costo dell'elettricità che di solito viene preso a livello industriale pari a:

0.06 €/kWh

si ha che l'energia consumata da queste macchine ASIC per minare 1 TH è pari a:

26 j = 26×0.278×10-6 kWh = 7.22×10-6 kWh

con un costo economico pari a:

Costo di 26 j = 7.22×10-6 kWh × 0.06 €/kWh = 0.433×10-6

con questa cifra si realizzano 1 TH ovvero:

1×1012 Hash

quindi il costo per Hash è pari a:

Costo di 1 Hash = Costo di 26 j / 1×1012  = 0.433×10-6 € / 1×1012 = 0.433×10-18
1 € = Costo di 2.31×1018 Hash

All'incirca occorre realizzare una password che abbia un numero di combinazioni pari a 1018 per farla costare 1 € in prezzo dell'energia.

Visto che con 11 lettere minuscole e 4 numeri decimali completamente casuali si raggiunge il numero di combinazioni pari a:

Numero combinazioni password «abcdefghilm1234» = 2111 × 104 = 3.5×1018

si ha che questa lunghezza di password casuale ha un prezzo di 1 €. Occorre quindi aggiungere agli 11 caratteri minuscoli tante lettere quanto grande è il prezzo che vogliamo raggiungere. Ecco una tabellina:

Lunghezza
aggiuntiva
Lunghezza
totale
Prezzo
1
12 21 €
2
13 441 €
3
14 9.2 k€
4
15 0.2 M€
5
16 4.1 M€
6
17 86 M€
7
18 1.8 G€

Quindi già con una password di 16 caratteri e 4 cifre decimali ha un prezzo in energia pari al milione di euro, quindi sufficiente per molti usi.

Credit Image: cubo di Rubik it.wikipedia.org



Non dimenticatevi di mettere la vostra opinione: scrivete il commento, premete "Inserisci" e il commento è immediatamente pubblicato nell'area qui sotto: grazie!




Questo articolo è stato commentato 6 volte.

Ultimo commento inserito da kensan martedì 17 gennaio con il titolo: Calcolo.

Commento:

> Sarebbe stato interessante dettagliare il calcolo del numero di tentativi data
> una sequenza di caratteri.

Il calcolo è semplice. Se la password è casuale allora il numero di combinazioni coincide col numero di tentativi da fare per scoprire la password.

Il numero di combinazioni è un calcolo semplice. Nel caso dei numeri di 4 cifre il numero di combinazioni è pari al prodotto del numero di combinazioni della prima cifra (0-9 cioè 10 combinazioni) moltiplicato per quello della seconda (10) moltiplicato per quella della terza (10) e per quello della quarta (10): in totale fanno 10^4 combinazioni.

Analogamente per le lettere. Se l'alfabeto è quello italiano minuscolo allora ogni posto del carattere può assumere i valori dalla a alla z che sono 21. Una coppia di caratteri possono andare dalla aa alla zz: le combinazioni sono 21*21.

Per capire che le combinazioni sono 21*21 basta immaginare una matrice:

abc.z
a *
b
c
.
z

la matrice ha 21*21 caselle e ogni casella ha la combinazione dell'intestazione della riga con quella della colonna (riga a con colonna z fa la combinazione az)

Analogamente per tre caratteri le combinazioni sono 21*21*21 ovvero 21^3 in quanto in questo caso abbiamo a che fare con un cubo. E via dicendo.

Con 12 lettere le combinazioni sono 21^12 che aggiunte al numero di combinazioni date dai 4 numeri si ha:

21^12*10^4

Spero adesso sia chiaro.



Altri testi sullo stesso argomento li trovate elencati di seguito sotto l'argomento GnuPG

Diaspora* button
-
Facebook button
0
Twitter button
-
Google+ button
0
LinkedIn button
0
TzeTze button
voti: 0
Data: 1 giu 2013
modifica: 28 gen 2024
Letture di questo articolo: 6
...a partire da 2024-01-16
argomento: GnuPG, articoli: Chiave Pubblica (di Sandro kensan), Palladium, Anonymous Remailer (GnuPG e la posta elettronica), Gestione delle password (Sicurezza), Anonymous remailer - manuale, Il nuovo BIOS ovvero UEFI

ball animated




Firefox: Riprenditi il web






A proposito dei giornalisti...

Non dico affatto che lei menta, dico che lei non sarebbe nel posto che occupa se non scrivesse quello che scrive.






La legge determina le condizioni in cui si esercita la libertà garantita alla donna di ricorrere all'interruzione volontaria della gravidanza.

Nuovo articolo della costituzione francese: libertà garantita
kensan logo Licenza Creative Commons 3.0
I miei testi sono sotto la Licenza "Creative Commons 3.0 Italia": se sei interessato a pubblicare i miei articoli leggi le note aggiuntive (Licenza di kensan.it) dove troverai anche le attribuzioni dei diritti per tutte le immagini pubblicate.
Questo sito memorizza sul tuo pc uno o più cookie di tipo tecnico, leggi l'informativa estesa.
Kensan site

e-mail
e-mail cifrata