[Python] xkcd password

Alessandro Re ale a ale-re.net
Gio 11 Giu 2015 11:05:48 CEST


2015-06-11 9:44 GMT+01:00 Marco Beri <marcoberi a gmail.com>:
> Per chi vuole usarlo con un dizionario italiano, usi una versione ridotta
> con solo almeno 2**11 (2048) parole più comuni.

Ora, coi numeri non sono il massimo esperto, e premetto che non ho
visto il codice dell'OP, ma se si usano 2048 parole per generare
password a caso, significa che si sposta il problema di generare una
password con alfabeti di circa 50 lettere a generare password con
alfabeti di 2048 lettere.

Se prendiamo 4 parole a caso, non bisogna contare il numero di lettere
per calcolare l'entropia, perché l'alfabeto non saranno più le
lettere, ma le parole. Quindi 2048^4 = 1.7e13, mentre 50^10 = 9.7e16.
Invece 2048^5 = 3.6e16 che è comparabile.

Comunque il punto è che forse usare parole anziché lettere non sposta
il problema, perché è sufficiente generare password usando un
bruteforce di parole anziché di lettere, rendendo abbastanza inutile
tutta l'idea di fondo.

Forse una cosa utile da fare è rendere inutile un approccio di ricerca
basato sui dizionari, mettendo dentro lettere a caso... Certo, sarebbe
comunque difficile da ricordare per gli umani, ma almeno avrebbe più
senso numericamente.

Ad esempio, la mia password gmail é: "g4tto m0lla s3dicente r1nforzo"
e la regola per rendere inutile la ricerca per parole è di sostituire
la prima vocale (4-3-1-0-U), che non è una regola molto difficile da
ricordare, basta che un utente si inventa la sua regola e la usi
sempre.

E questo rende davvero difficile la ricerca, perché non si sa quante
variazioni di "gatto" ci siano: "GATTO", "Gatto", "G4770" etc, quindi
il dizionario cresce di molto... Da 2000 parole a 20k parole, e quindi
20e4^4 = 1.6e17, che "batte" entrambe le combinazioni di prima.

Bho, spero di essermi fatto capire anche se ho buttato lì termini un
po' a caso (alfabeti, combinazioni, etc).

Ciauz
~Ale


Maggiori informazioni sulla lista Python