Le tue "stringhe casuali" sono quelle che i crittografi chiamerebbero keys : una chiave è un valore segreto senza una struttura interna implicita (al contrario di una password che è "una chiave che si adatta a un cervello umano ").
Nel primo caso, agli utenti verrà concesso l'accesso in base alla loro capacità di presentare una sequenza specifica di 10 caratteri nell'alfabeto a-zA-Z0-9. Questi sono 62 segni possibili, quindi ci sono 62 10 = 839299365868340224 chiavi possibili. Un attaccante che cerca di forzare il suo ingresso dovrà "indovinare" la sequenza, che non può fare se non provando possibili chiavi in qualsiasi ordine (abbiamo assunto "nessuna struttura interna implicita", che significa "probabilità uniforme"). In media, l'attaccante dovrà provare metà delle possibili chiavi prima di riuscire, e questo è 419649682934170112.
Supponiamo ora di essere nel secondo caso: l'utente verrà accettato solo se inserisce due stringhe di 5 caratteri in due campi di testo. Entrambi i valori devono avere ragione se l'accesso deve essere concesso. In questa situazione, ci sono 62 combinazioni 5 per ogni stringa, per un totale complessivo di 62 5 * 62 5 = 839299365868340224 possibilità, che è esattamente lo stesso conteggio di prima, quindi non ha importanza .
Cioè a meno che tu non lo batti . "Botching it" significherebbe, qui, dire all'utente se ha corretto una delle due stringhe di 5 caratteri, anche se l'altra non lo è. Ad esempio, i due campi di immissione sono in pagine successive e il server mostrerà la seconda pagina solo se la prima stringa era corretta. In tal caso, l'attaccante può crackare entrambe le stringhe di 5 caratteri una dopo l'altra: quello è 62 5 / 2 = 458066416 prova in media per la prima stringa, quindi 458066416 di nuovo per la seconda stringa. L'utente malintenzionato riesce quindi a eseguire (in media) 916132832 tentativi, ovvero 458066416 più veloci rispetto all'implementazione non compromessa. Questo è ciò che definisco un fallimento epico. (Tale errore è già successo , dalla stessa Microsoft.)
È più semplice, e più sicuro, richiedere l'immissione di tutti e 10 i caratteri in una volta sola. Il modo in cui li visualizzi, come un campo di testo, due campi di testo o un mazzo di palloncini a forma di cuore che galleggia sullo schermo, non ha importanza, a condizione che non vengano rilevate informazioni su quali sono corrette. Le solo informazioni che il sistema di verifica dovrebbe fornire è se i caratteri tutti fossero corretti, o almeno uno non lo fosse.