PasswordCheck – La vostra password è sicura?

lucchettoQuesta mattina mi sono svegliato con una mezza idea. Avevo bisogno di scrivere un programmino in Scheme che fosse un minimo didattico così da dare del buon materiale a chi segue la mia guida. Inoltre pensavo a un “simulatore di brute forcing” per dare una valutazione approssimata della robustezza delle mie password. Così ho scritto questo piccolissimo script che unisce le due cose.

Per valutare la robustezza di una password sono indicative due cose:

  • La lunghezza. Ovvero il numero di caratteri che la compone.
  • Il set di caratteri. Ovvero quali insiemi di caratteri utilizza (maiuscole, minuscole, numeri, etc…)

Le due cose non hanno la stessa importanza: la variare la lunghezza fa variare la complessità del brute-forcing esponenzialmente, variare il set fa variare la complessità polinomialmente. Questo ci indica che usare un set di caratteri molto ampio è tanto più efficace quanto più la password è corta. Per password immense in teoria basta anche un set di caratteri ristretto. Tuttavia è bene avere entrambe le cose più grandi possibile.

Il programmino che ho fatto fa due cose molto semplici. Per prima cosa vi chiede di inserire la password fra virgolette “”. Dopodiché ricava il set dei caratteri utilizzato e fa due prove:

  • Un bruteforcing seriale. Ovvero suppone che ci sia un solo computer ad eseguire la forzatura.
  • Un bruteforcing distribuito. Ovvero suppone che un worm sfrutti un “esercito” di computer zombie per eseguire il bruteforcing in parallelo.

I dati su cui si basano i test sono molto ottimistici (dal punto di vista della password, in realtà potrebbe volerci molto meno) e basati sulla velocità di ricerca di un software di bruteforcing attivo su un quad-core.

Ad esempio proviamo a vedere quanto regge una password tipo “19051987” ovvero la classica “data di nascita”.

$ ./pcheck
Inserisci Password:
"19051987"
Numero Massimo di Combinazioni: 100000000
ATTACCO BRUTE-FORCING SERIALE
Tempo approssimato necessario al crack della password:
ANNI: 0
GIORNI: 0
ORE: 0
MINUTI: 16
SECONDI: 40

ATTACCO BRUTE-FORCING DISTRIBUITO
Tempo approssimato necessario al crack della password:
ANNI: 0
GIORNI: 0
ORE: 0
MINUTI: 0
SECONDI: 10

Ottimisticamente un software di bruteforcing impiega solo 17 minuti. Oppure proviamo il semplice nome:

Inserisci Password:
"davide"
Numero Massimo di Combinazioni: 308915776
ATTACCO BRUTE-FORCING SERIALE
Tempo approssimato necessario al crack della password:
ANNI: 0
GIORNI: 0
ORE: 0
MINUTI: 51
SECONDI: 29

ATTACCO BRUTE-FORCING DISTRIBUITO
Tempo approssimato necessario al crack della password:
ANNI: 0
GIORNI: 0
ORE: 0
MINUTI: 0
SECONDI: 30

Come vedete sono tutte e due password farlocche. Questo senza contare che i moderni software di brute-forcing attingono anche a parole “comuni” diminuendo di almeno un fattore 100 il tempo necessario!! (ad esempio la password “admin” viene beccata in qualche millisecondo).

Ora per curiosità vi posto il risultato della mia password (ovviamente senza che vi dica quale sia xD)

ATTACCO BRUTE-FORCING DISTRIBUITO
Tempo approssimato necessario al crack della password:
ANNI: 19472800.0
GIORNI: 7.0
ORE: 11.0
MINUTI: 34.0
SECONDI: 41.0

Direi che posso stare relativamente tranquillo! 😀

Ecco il download comprensivo del sorgente. Dal sorgente potete variare i parametri (come il numero di chiavi analizzate al secondo) a piacimento per adattarli a casi particolari.

SCARICA IL FILE

7 comments on “PasswordCheck – La vostra password è sicura?

  1. Ritiro tutto…errore mio..ce l’ho fatta
    Molto utile comunque, gazie!!
    Non ho una password eccellente però 11 anni con brute-forcing distribuito e 1600 con quello seriale non mi sembrano proprio male…

    • C’è sia lo script che l’eseguibile.
      Tranquillo, i valori sono indicativi. ;D Superata una certa soglia si può stare tranquilli! XD

  2. 😐 wow, ho visualizzato l’eseguibile compilato allegato con un less, fantastico, non sono un programmatore esperto, ma a vedere il risultato ci sono rimasto di m…ehm..male 😀 comunque ho convertito il sorgente scheme in sorgente in c e ho provato a compilarlo, niente da fare. quindi l’ho avviato con guile ed è tutto andato.
    ecco il mio output (una parte) 😀 ammira!

    ATTACCO BRUTE-FORCING DISTRIBUITO
    Tempo approssimato necessario al crack della password:
    ANNI: 70102080
    GIORNI: 26
    ORE: 22
    MINUTI: 28
    SECONDI: 53

    devo stare “relativamente più tranquillo” di te? xD

    • In che senso male? XD

      L’istruzione per compilare con chicken è:
      csc nomescript.scm -o outputfile

      Non devi passare per il file C a meno che non devi integrarlo in altri file C 😉

      Comunque ripeto.. .superata una certa soglia le differenze sono irrisorie! XD