Il numero di tentativi è
Facciamo un esempio:
Se vuoi un'idea, diciamo stimare la velocità di un computer con 1 milione di password al secondo (come ho fatto primo esempio) può essere accettabile. Visto che stai scrivendo un programmino, magari segnala la scelta di default all'utente e permettigli di inserire un numero a suo piacimento.
È irrilevante avere i numeri precisi, all'utente non frega niente se al posto di 3 anni sono 3 anni, 21 giorni, 14 ore, 54 minuti e 13 secondi. Quello che importa è capire il salto temporale che ottieni complicando la tua password: intuire l'importanza di utilizzare numeri, maiuscole e minuscole, capire se è meglio allungare la password o piuttosto che scambiare un carattere con un simbolo e cose di questo tipo.
Segnala anche che i tempi che riporterai sono quelli di password random (e.g., quelle generate dal tuo programma). Il tempo per crackare Password1 è di 1 nanosecondo, non di 210 anni come il tuo programma suggerirebbe.
simboli ^ lunghezza
(elevazione a potenza, operatore **
in python). Il tempo per effettuare un tentativo dipende dall'hardware (principalmente dalle gpu) e dal software (funzioni di hash), ma è una costante che puoi stimare per difetto (per rappresentare un hardware molto buono). In crittografia generalmente si parla di tempo medio, quindi devi dividere per 2 il risultato che otterrai.Facciamo un esempio:
- è formata da a-z, A-Z, 0-9 (26 + 26 + 10 = 62 simboli);
- è lunga 6 simboli;
- quindi abbiamo 62^6 = 56800235584 possibili password;
- dobbiamo provarne più della metà (56800235584 / 2 = 28400117792) per iniziare ad avere una probabilità favorevole (più del 50%) di trovare quella della nostra vittima;
- tra hardware e software, abbiamo fatto un benchmark che ci dice che siamo in grado di calcolare circa 1 milione di password al secondo;
- il tempo (medio) per trovare la password della nostra vittima è di 28400117792 / 1000000 = 28400 secondi = 8 ore;
- se al posto essere lunga 6 simboli fosse lunga 7 il tempo necessario sarebbe di circa 20 giorni, se fosse lunga 8 il tempo sale a 3 anni e mezzo.
- 6 caratteri richiedono 5 secondi;
- 7 caratteri richiedono 5 ore;
- 8 caratteri richiedono 12 giorni;
- 9 caratteri sono 2 anni.
Se vuoi un'idea, diciamo stimare la velocità di un computer con 1 milione di password al secondo (come ho fatto primo esempio) può essere accettabile. Visto che stai scrivendo un programmino, magari segnala la scelta di default all'utente e permettigli di inserire un numero a suo piacimento.
È irrilevante avere i numeri precisi, all'utente non frega niente se al posto di 3 anni sono 3 anni, 21 giorni, 14 ore, 54 minuti e 13 secondi. Quello che importa è capire il salto temporale che ottieni complicando la tua password: intuire l'importanza di utilizzare numeri, maiuscole e minuscole, capire se è meglio allungare la password o piuttosto che scambiare un carattere con un simbolo e cose di questo tipo.
Segnala anche che i tempi che riporterai sono quelli di password random (e.g., quelle generate dal tuo programma). Il tempo per crackare Password1 è di 1 nanosecondo, non di 210 anni come il tuo programma suggerirebbe.