View Single Post
Old 30-05-2024, 20:40   #14
Sandro kensan
Senior Member
 
L'Avatar di Sandro kensan
 
Iscritto dal: Dec 2011
Messaggi: 2921
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.
__________________
Utente Linux: Mageia 7. Sito: www.kensan.it
Sandro kensan è offline   Rispondi citando il messaggio o parte di esso
 
1