Sto progettando un sistema che richiede il controllo dell'accesso tramite una password complessa e a tale scopo utilizzerà un algoritmo di generazione della password A che produce una password complessa di lunghezza L > = 32. Il sistema controllerebbe la password e, se la password non è corretta in diversi tentativi consecutivi, blocca l'utente da ulteriori accessi per un certo periodo di tempo.
Inoltre, il sistema dovrebbe:
- genera una password lunga e complessa
- la password deve essere unica al mondo,
- consente una facile modifica della password,
- non richiede autenticazione (ad esempio, gli utenti forniscono solo password, ma nessun nome utente),
- essere semplici nell'implementazione e in uso.
Poiché non ho esperienza diretta in materia di sicurezza, sarei molto grato se i guru della sicurezza potessero criticare il seguente semplice e, forse, ingenuo progetto:
- Invoca lo stesso algoritmo noto A (ad esempio, una buona funzione di hash unidirezionale, un algoritmo di generazione UUID, ecc.) T volte, dove T è un numero molto grande, almeno un miliardo.
- Registra tutte le password generate da T in un file, una password per riga.
- L'utente deve scegliere un numero N (forse generato casualmente) tra 1 e T e ricordare quel numero nella sua testa.
- Quando viene richiesta una password, l'utente cerca nel file in posizione N, copia la password in quella posizione e la incolla nel programma che richiede una password.
Commenti:
A. Sembra che una persona possa ricordare un numero compreso tra uno e un miliardo senza troppi problemi, in quanto ha meno cifre rispetto a un numero di telefono USA a lunga distanza.
B. Finché il file non viene perso (può essere replicato), l'utente avrà sempre la password corretta.
C. La password può essere cambiata facilmente in qualsiasi momento rigenerando l'intero file e selezionando una nuova password nella stessa posizione N. L'utente non avrà bisogno di ricordare la nuova password - utilizzando lo stesso numero N si otterrebbe una nuova password.
D. Se un utente malintenzionato riceve una sospensione sul file con un miliardo di password e tenta ripetutamente di effettuare il login per trovare la password corretta, molto probabilmente ci vorrebbe un tempo molto lungo (anni o potrebbe essere secoli) perché il sistema continuerebbe a bloccare il utente dopo pochi tentativi falliti.
E. A causa di D, il file delle password può essere tenuto in chiaro, non è necessaria alcuna crittografia.
Domanda:
Cosa c'è di sbagliato in questo tipo di sistema?