Un'alternativa alle password tradizionali: c'è qualche merito a questa idea?

13

Se hai un sito web rivolto a persone che non sono necessariamente tecnicamente abili, lasciare che i nuovi utenti scelgano la propria password non è molto sicuro a causa del fatto che molte persone non scelgono password sicure. Alcuni metodi per affrontare questo problema sono:

  • Più comune: disporre di un "correttore forza password" o richiedere che la password contenga un determinato numero e diversi tipi di caratteri. Queste spesso non sono molto buone e danno luogo a password che in realtà non sono molto sicure e / o difficili da ricordare (ovviamente questo non significa che si possa fare un ottimo correttore di password, anche se è piuttosto difficile).
  • Genera una sequenza casuale di caratteri: molto poco pratica e insicura perché le persone tendono a scriverle perché non riescono a ricordarle.
  • Autenticazione a due fasi tramite SMS o e-mail: non molto comoda per l'utente.

Ho pensato ad un approccio diverso ispirato al fumetto di XKCD . Funziona così:

Quando un nuovo utente si registra, viene presentato con 20 parole del dizionario scelte a caso. Viene chiesto loro di pronunciare una frase segreta (chiamiamola una passphrase) che contenga almeno cinque di queste parole. Sono incoraggiati a creare una frase senza senso che è difficile da indovinare ma facile da ricordare. Hanno un'opzione per aggiornare le 20 parole casuali più volte se non riescono a pensare a nulla.

Questa passphrase funzionerà semplicemente come le loro password. Devi solo verificare che utilizzino almeno cinque delle parole fornite e adottare le normali misure di sicurezza che avresti per le normali password.

Personalmente ritengo che questo sia un modo abbastanza user-friendly di lasciare che le persone scelgano password sicure; e i problemi che ho menzionato per gli altri metodi sembrano essere evitati. Certo, potrei sbagliare completamente e controllare qualcosa di importante. Quindi mi piacerebbe davvero sentire cosa pensano le persone intelligenti di questo sistema.

    
posta AardvarkSoup 08.06.2012 - 23:32
fonte

3 risposte

11

Mi sembra fantastico.

L'intero punto di generazione delle password è sceglierne uno estremamente difficile da indovinare per un utente malintenzionato e facile da ricordare e digitare per gli utenti autorizzati. Idealmente, un processo di generazione di password dovrebbe generare password così difficili da indovinare anche se l'utente malintenzionato sa esattamente quale processo di generazione di password è stato utilizzato ( Principio di Kerckhoffs ). Se l'attaccante della "perfetta conoscenza" ha difficoltà a indovinare la password, gli altri attaccanti lo troveranno ancora più difficile.

Suppongo che tu usi un /dev/random che non sia rotto (è collegato a un generatore di numeri casuali hardware oa un generatore di numeri pseudocasuali crittograficamente sicuro).

Molte persone sembrano ritenere che una cosiddetta "password a 10 caratteri casuali" formata da una lettera maiuscola selezionata casualmente, lettere minuscole selezionate casualmente, seguita da una cifra scelta a caso, per un totale di 10 caratteri, sia più che adeguato per molti scopi. Ciò fornisce ln2 (26 ^ 9 * 10) = 45,6 bit di forza della password .

Se si selezionano in modo casuale parole da un elenco di 7776 parole (6 ^ 5 parole), ad esempio l'elenco Diceware standard o l'elenco Dialdice più facile da digitare su telefono, e l'autore dell'attacco conosce esattamente quale lista di parole usi, e il tuo utente sceglie le prime 4 parole che selezioni, nell'ordine in cui le selezioni, l'utente ottiene ln2 ((6 ^ 5) ^ 4) = 51,7 bit di forza della password.

aumento della casualità?

Se l'utente colpisce la chiave di aggiornamento un numero casuale di volte, e poi tira i dadi per selezionare a caso 4 parole tra quelle che presenti, quindi tira i dadi per mescolare quelle parole in un ordine casuale per generare le 4 -word Passphrase Diceware, quindi (sempre supponendo che /dev/random non sia interrotto) Posso a priori calcolare che non ha alcun effetto - l'utente ha ancora 51,7 bit di forza della password.

Se l'utente pensa che non sia abbastanza strong la password, allora penso che il tuo sistema dovrebbe consentire all'utente di aggiungere ulteriori lettere, simboli, parole, ecc.

effetti della selezione non casuale

È improbabile che l'utente effettui una selezione completamente casuale, ma va bene. Nel peggiore dei casi - l'utente mette le cose in ordine alfabetico o sceglie un altro ordine, e l'autore dell'attacco in qualche modo sa esattamente quale ordine è, hai perso -ln2 (4!) = -4,6 bit di forza della password da una passphrase di dialdice di 4 parole.

Se assumiamo che l'utente rifiuta sempre determinate parole e continua a rinfrescare finché non può fare una passphrase senza quelle parole, e quelle parole costituiscono circa 1/6 del dizionario, e in qualche modo l'hacker sa quali sono quelle parole, quindi per una passphrase di Dialdice di 4 parole abbiamo perso circa -1 bit totale di forza della password. (Il caso peggiore è una perdita di N bit di forza della password per ogni 2 ^ N volte che l'utente preme il pulsante di aggiornamento - ma ciò non mi sembra realistico).

La combinazione di questi due effetti consente ai tuoi utenti di avere una forza password di 46.1 bit con una passphrase di dialdice di 4 parole - più strong della password di 10 caratteri casuali e molto più facile da memorizzare.

Se in seguito pensi che non sia abbastanza la password, è abbastanza semplice aumentare il numero minimo di parole nella passphrase, o passare a un elenco di parole con più parole in esso, o entrambi. (È possibile utilizzare l'approccio in " Migrare le vecchie password md5 per crittografare le password "per forzare tutti con password vecchie e poco potenti per l'aggiornamento a nuove password più potenti).

Mi sembra fantastico.

    
risposta data 14.06.2012 - 19:41
fonte
6

L'idea del fumetto xkcd è di generare una passphrase basata su 4 parole da un piccolo dizionario di circa 2000 a 3000 estremamente comune parole.

Se consenti agli utenti di selezionare parole da un elenco aggiornabile, riduci in modo significativo l'entropia. Lo stesso è vero per aver permesso loro di cambiare l'ordine. Dai un'occhiata a XKCD # 936: password complessa breve o passphrase lunga del dizionario?

Quindi è necessario fornire un dizionario molto più grande con parole meno comuni da compensare.

Dal punto di vista pratico: gli utenti non amano digitare password lunghe, specialmente su dispositivi senza una tastiera corretta.

    
risposta data 08.06.2012 - 23:58
fonte
0

Anche se mi piace l'idea di aiutare gli utenti con una password complessa (specialmente ispirata al fumetto XKCD), vedo un problema. Il tuo dizionario Quanto è grosso il problema, dipende da cosa è ovvio il tuo sito.

Prima di tutto il tuo dizionario deve essere enorme e deve contenere parole non comuni. Tuttavia dovresti dare per scontato che qualunque sia il dizionario che hai, anche qualcun altro lo farà. Non sono un crittografo, ma hai davvero bisogno di molte parole perché quelle cinque scelte sono tutto ciò che rende la password. L'altra parte del problema è abbastanza ovvia; devi assicurarlo davvero bene. Se un genio del male si impossessa del tuo dizionario esatto rompendo gli hash o cercando di accedere all'account, sarà molto più facile.

È qui che entra in gioco l'importanza del tuo sito. Poiché fornisci la password per l'utente, è improbabile (ma non impossibile) che l'utente scelga di usare la stessa password da qualche altra parte. Quindi, se qualcuno dovesse ottenere il tuo DB, la forzatura bruta degli hash non fornirà loro qualcosa di veramente utile.

A parte questo, assicurati di bloccare gli account dopo che i tentativi di accesso falliti di X (e di rallentare i tentativi di accesso) contribuiranno a far sì che gli aggressori abbiano problemi ad accedere agli account usando un dizionario rubato.

Solo alcuni pensieri su questo argomento interessante, spero che li trovi utili.

    
risposta data 08.06.2012 - 23:47
fonte

Leggi altre domande sui tag