Scusate l'analisi matematica ma mi piacerebbe calcolare quante combinazioni ci sono nella password scritta da un utente in uno dei primi commenti.
La pwd è questa:
;S0noV€RamÉnt3Stp1t0che~CISIANoRi|sc11ti,Cr1bbi@_
Si nota subito che ha un carattere speciale all'inizio e uno alla fine, quindi è una pwd piuttosto prevedibile, molti utenti hanno questo comportamento.
Stimiamo il numero di simboli pari a 20 (non ho voglia di fare il conto esatto).
Poi si nota che sono state usate delle comuni parole e un dizionario comune ha circa 3 mila parole. Però sono state usate sia lettere maiuscole che minuscole in modo casuale. Visto che «Ad esempio, se si stima che nella scrittura della lingua italiana la lunghezza media delle parole è di 6 caratteri» (Fonte Wikipedia), si ha che con la parola media l'aggravio di questo trucco è di un fattore 2^6 = 64, per una parola di 10 lettere l'aggravio è di 2^8 =256 e quindi non è lineare. Comunque stimiamo l'aggravio di 256 per tutto il vocabolario. Allora il numero di tentativi da fare è:
3'000*256
Quindi si comprende: "Ciao", "cIao", "ciAo", "ciaO", CIao", ecc, ecc, in tutte le combinazioni possibili che sono 2^4=16 (perchè "ciao" è lungo 4 lettere).
Visto che le parole sono 8 le combinazioni sono:
(parole del dizionario)^8
Inoltre si nota che sono state sostituite alcune lettere con dei simboli un uno schema che in Rete si trova spesso e che sicuramente è già stato codificato con delle tabelle apposite:
o => 0, @
e=> €, è, È, É
i => |, ì, Ì
ecc, ecc.
Non ho la tabella ma stimiamo che riguardo solo le vocali che sono 5 e che per ogni vocale ci siano 3 varianti. Se prendiamo una parola generica del vocabolario da 8 caratteri (la parola media è di 6 caratteri) e consideriamo l'alternanza comune Consonante-Vocale, abbiamo:
cVcVcVcV
quindi 4 volcali ogni una delle quali può assumere 3 valori diverse quando sostituite con i simbolo, fanno un numero di combinazioni (stimato) per parola pari a:
3^4 =81
Quindi siamo arrivati a:
(3'000*256 *81)^8
Aggiungiamo il simbolo all'inizio e alla fine (i simboli sono 20):
20² =400
Adesso siamo arrivati a un numero di combinazioni pari a:
(3'000 * 256 *81)^8 * 400
Si nota che l'utente ha introdotto alcuni errori nella pwd, gli errori sono molto limitati:
;S0noV€RamÉnt3Stp1t0che~CISIANoRi|sc11ti,Cr1bbi@_
sono una sostituzione di una lettera con un simbolo qualsiasi, visto che la lunghezza della frase con 8 parole da 6 lettere medie è di:
8*6 =48
se sostituiamo una sola lettera con uno dei 20 simboli abbiamo un fattore di 48*20 = 960
(3'000 * 256 *81)^8 * 400 * 960
se togliamo una lettera abbiamo il fattore 48:
(3'000 * 256 *81)^8 * 400 * 960 * 48
e si può andare avanti togliendo altre lettere in tutte le combinazioni e altri simboli:
(3'000 * 256 *81)^8 * 400 * 960² * 48²
Con la pwd dell'utente basta andare poco avanti.
Che numero abbiamo ottenuto con l'ultima combinazione? Facciamo il conto:
1.9*10^74 combinazioni diverse da provare
Come confronto "A novembre 2023, la rete Bitcoin funziona con un hash rate di circa 460.000.000 Th/s.".
Il numero di hash della Rete Bitcoin è di 4.6*10^20 al secondo
Se paragoniamo i due brute force e calcoliamo il tempo per scoprire la pwd dell'autente, abbiamo un tempo pari a:
4*10^53 secondi
Che è un tempo elevatissimo ma non tanto se consideriamo che con 3 parole invece di 8 e un dizionario elementare di 1000 parole (come quello usato dall'utente) la pwd è quasi exploitabile da tutta la Rete bitcoin mondiale:
7.6 *10^33 sono le combinazioni della pwd con 3 parole
in 500 mila anni la pwd è exploitabile.
Quindi si capisce che riducendo ai simboli più probabili (che sono meno di 20 da me ipotizzati) e altre efficienze che sono quelle del provare prima quello che l'utente ricorda più facilmente, si arriva a scovarla in tempi brevi con tutta la potenza del mining mondiale.
|