Ci sono problemi significativi con un pattern di generazione di password usando gruppi di consonanti / wovels alternati?

3

Utilizzo un gestore di password per memorizzare password univoche per tutti i miei account. La maggior parte delle password sono auto-compilate, autoprodotte o possono essere copiate e incollate, ma occasionalmente devo inserirle manualmente (ad esempio account di gioco, alcune app / servizi mobili, ecc.).

Poiché le password come VeS3XPTUs3w4PN8xGdmN possono essere un problema da digitare correttamente manualmente, ho giocato con i pattern del generatore di password per trovare qualcosa che è più facile da "bufferizzare" in memoria durante la digitazione. Trovo che le frasi che possono essere pronunciate siano molto più facili da ricordare rispetto alle stringhe non comprimibili come sopra.

Ad esempio, pattern più facili da ricordare potrebbero essere gruppi delimitati da punteggiatura di consonanti e vocali alternate:

vudu:ARUD;raxu,URAB:6527
give;ALEZ,jabu.ACUP,4722
kuge.UTUF,xura;EVEG.7334
kiro.AVAJ.vovo:AHAY;4786

Mi rendo conto che qualsiasi schema renderà le password più facili da decifrare se un utente malintenzionato individua il modello. Per gli esempi sopra, direi che

  • tutti i gruppi di lettere potrebbero anche essere in minuscolo, dal momento che il numero di combinazioni è lo stesso e se un gruppo è maiuscolo o minuscolo è esplicitamente indicato dallo schema
  • il gruppo di numeri alla fine sarebbe migliore di un altro gruppo di lettere, poiché il modello indica esplicitamente se si tratta di numeri o lettere e un gruppo di lettere che segue il modello sopra avrebbe (leggermente) più combinazioni

In altre parole, i seguenti esempi potrebbero essere un po 'più difficili da decifrare per un utente malintenzionato conoscendo il modello:

vapu-dapu-fato-sovu-gazi
mipi-rodo-qiba-tiwu-cihe
qana-jeru-hibu-toka-xixu
fuca-kigu-moka-koxu-yopu

Allo stesso tempo, includere sia caratteri minuscoli, maiuscoli che numeri renderà loro più difficile la forza bruta. Poi di nuovo, se le password sono così lunghe, l'ultimo gruppo di esempi sopra potrebbe essere comunque sufficiente.

C'è qualcosa che dovrei sapere prima di usare tali schemi per generare password? Nello specifico, potrebbe (o dovrebbe) essere migliorato lo schema, e potrebbe essere semplificato senza perdere sicurezza significativa (o in alternativa, si potrebbe anche usare un sequenza senza senso di parole vere )?

    
posta cmeeren 11.02.2017 - 12:13
fonte

4 risposte

5

Calcolo dell'entropia per il modello vapu-dapu-fato-sovu-gazi

Facciamo un po 'di matematica per il seguente tipo di pattern:

vapu-dapu-fato-sovu-gazi

Supponendo che ci siano cinque vocali, 'a', 'e', 'i', 'o', 'u' e 21 consonanti, e inizi sempre con una consonante, puoi costruire 21 * 5 * 21 * 5 (11025) parole uniche a quattro lettere. Sostituire l'ultimo gruppo con un numero casuale a quattro cifre restituisce 10000 anziché 11025 possibilità per l'ultimo gruppo.

Se si incollano 5 di queste parole insieme, si ottengono 11025⁵ possibili password (sto ignorando i trattini perché se il pattern del generatore è noto, non aggiungono alcuna sicurezza).

Questo ti dà uno spazio per la ricerca della password di dimensioni 162889462677744140625. Questo è uguale a 67 bit di entropia, se scegli le tue consonanti e vocali in modo completamente casuale .

67 bit non sono grandiosi, ma sono molto, molto meglio della tua media entropia della password. Supponendo che un hacker ben finanziato abbia le risorse (botnet?) Di un milione di computer disponibili che possono controllare un milione di password al secondo, ci vorranno quattro anni e mezzo per cercare esaustivamente lo spazio della password, e in media un po 'di più di 2 anni per trovare la password corretta.

Se un utente malintenzionato ignorava lo schema delle password e ha semplicemente provato tutte le possibili stringhe di 24 caratteri, ci sarebbe voluto molto più tempo.

Il 10 12 suppone al secondo ragionevole?

Per dare un po 'di contesto alle supposizioni di cui sopra sull'attaccante: Un milione di password indovina un secondo per macchina è facilmente realizzabile oggi su GPU se la password è protetta con una funzione hash molto debole, come MD5 (e il vecchio hash di Windows LM è così debole che è possibile raggiungere alcuni miliardi indovina un secondo - il linguaggio di hashcat è "Megahashes" e "Gigahashes" al secondo ...). Non è fattibile quando la password è protetta con potenti funzioni di hash della password come bcrypt, scrypt ecc. A seconda della configurazione, è possibile ottenere un valore compreso tra un hash e un paio di kilohashes al secondo. Le dimensioni delle botnet di un milione di zombi sono ottimistiche per un utente malintenzionato (la grossa botnet Mirai, che ha reso schiavi i dispositivi IoT che non funzionavano molto bene come password cracker, consisteva di circa 100.000 dispositivi), la maggior parte delle botnet sono più piccole. Infine, avere una botnet eseguire un milione di CPU o GPU a, diciamo, il 20% di password di cracking della capacità per due anni senza interruzioni potrebbe attirare l'attenzione di qualcuno prima o poi.

Se non sei soddisfatto di questi presupposti, ti suggerisco quanto segue: Immagina l'attaccante che vuoi proteggere. Scopri quali risorse avrebbe bisogno per raggiungere il suo obiettivo, e quindi fare un'ipotesi plausibile se può permettersi queste risorse. Per esempio, trovare le risorse necessarie per fare 10 12 indovina un secondo (affittare diverse grandi botnet per due anni o acquistare e far funzionare l'hardware da solo) è probabilmente fuori dalla portata di tutti, ma grandi aziende , crimine organizzato e stati nazione.

Che cosa succede se hai usato parole reali?

could it be simplified without losing significant security, or alternatively, could one just as well use a nonsense sequence of real words

Consideriamo l'utilizzo di parole reali anziché di quelle inventate. Le parole a caso sono molto più difficili da memorizzare, e se hai usato parole reali da un lessico che conteneva, diciamo, 7000 parole, la password risultante conterrebbe ancora 63 bit di entropia. Questo è 16 volte più debole, ma potresti facilmente compensarlo aggiungendo un'altra parola, che genererebbe 76 bit di entropia e, assumendo lo stesso aggressore, ti proteggerà per oltre due millenni se la tecnologia non avanzasse in quel momento. Ancora una volta, è assolutamente cruciale scegliere le parole a caso . Basta pensare a poche parole che ti vengono in mente è non abbastanza buono. Inoltre, dovresti fare attenzione a non scegliere 5 parole molto brevi, perché poi ti apriresti ad un attacco a forza bruta sulla stringa breve risultante.

Controlla xkcd obbligatorio e Diceware per elenchi di parole. O se sei troppo pigro, puoi acquista una password per due dollari da questa ragazza a New York : -)

    
risposta data 11.02.2017 - 13:57
fonte
3

Se hai un metodo di generazione password, l'unico modo per conoscere la forza della tua password è misurare lo spazio chiave e ottieni un numero. Nel tuo caso più semplice, se la password dovesse essere lunga 24 caratteri con il modello cvcv-cvcv-cvcv-cvcv-cvcv e supponendo che l'intera sequenza sia stata generata in modo veramente casuale, la sicurezza sarebbe calcolato come segue:

  • c ha 21 possibilità e moltiplica lo spazio chiave per 21.
  • v ha 5 possibilità e moltiplica lo spazio chiave per 5.
  • " - " è un valore letterale e ha solo 1 possibilità (stesso). Moltiplica lo spazio chiave di 1, il che significa che non aggiunge alcuna sicurezza, niente per lo spazio della chiave e dovrebbe essere ignorato nel calcolo come se non fosse lì.

La sicurezza di cv sarebbe 105 ( 21×5 ). La sicurezza di cvcv sarebbe 11.025 ( 21×5×21×5 = 105×105 = 105² ). La sicurezza di cvcv-cvcv sarebbe 121.550.625 ( 105×105×105×105 = 105⁴ ). Continuando il modello, la sicurezza di cvcv-cvcv-cvcv-cvcv-cvcv sarebbe 162,889,462,677,744,140,625 ( 105¹⁰ ≈ 1.63×10²⁰ ).

Io "normalizzo" sempre i miei risultati in modo da poter misurare la sicurezza della mia password a bit. Il tuo ultimo pattern avrebbe la sicurezza equivalente di circa 67,14 bit generati casualmente ( log₂(105¹⁰) ), che potrebbe essere bassa se stai crittografando i dati. Esistono, tuttavia, modi per estendere password deboli per renderli più difficili da decifrare aumentando le risorse (memoria, calcolo e / o archiviazione) necessari per provare ciascuna combinazione. Tutto dipende da come verrà utilizzata la password e da cosa è il tuo modello di minaccia.

I have played around with password generator patterns in order to find something that's easier to "buffer" in memory while typing. I find that phrases that can be pronounced are much easier to remember than unpronouncable strings like the above.

At the same time, including both lowercase, uppercase, and numbers will make them more difficult to brute-force.

Se consideri un modello di vocale consonantica al centro del tuo schema perché pensavi che sarebbe stato più facile da ricordare, allora includere informazioni impronunciabili come custodia e punteggiatura sarebbe contrario a quell'obiettivo, ma ogni persona ha il suo proprie esigenze e caratteristiche della memoria. Ad esempio, posso ricordare le password in termini di codice JavaScript, permettendomi di ricordare sequenze come (forse per un account aereo):

if(winter){bird[3].fly(south);}else{bird[3].fly(north);}

Lo ricordo semplicemente come una frase inglese: If it’s winter, bird number three flies south. Otherwise, it flies north. Misurare la sua sicurezza sarebbe una vera sfida data la natura aperta di un tale sistema di password, ma la sicurezza è in realtà inferiore a quella che appare.

Is there anything I should know about before using such patterns for generating passwords? Specifically, could (or should) the pattern be improved, and could it be simplified without losing significant security (or alternatively, could one just as well use a nonsense sequence of real words)?

Assicurati solo che soddisfi le tue esigenze: memorabilità; pronunciabilità; e sicurezza. Trova diversi metodi candidati per generare password e misurare la sicurezza di ciascuno (utilizzando log₂(…) ).

E ricorda principio di Kerckhoffs : devi sempre presumere che l'attaccante sappia tutto (incluso lo spazio chiave) su il tuo sistema di sicurezza tranne i bit che costituiscono la tua chiave. Dato un crittosistema ragionevolmente sicuro e buone pratiche di sicurezza, l'attacco più semplice sarebbe quello di indovinare la password stessa (oltre a trovarti e applicare gomma -casa crittanalisi ).

    
risposta data 11.02.2017 - 16:57
fonte
2

La seguente politica è garantita per produrre passphrase forti: selezionali casualmente con uguale probabilità su un set sufficientemente grande . La prima politica può essere raggiunta definendo un insieme di regole che danno lanci di monete casuali, rotoli di dadi, un generatore di numeri casuali crittografici, sceglie una passphrase senza alcun pregiudizio tra le alternative.

Per la seconda politica - l'insieme sufficientemente grande - se questa è una passphrase di accesso login (non crittografia!) per un sito Web che non è super-critico per te e che potresti dover ricordare dalla memoria , Consiglio di disegnare la passphrase da un set con almeno 2 ^ 64 alternative. Poiché il logaritmo in base 2 del set di alternative è l'entropia della passphrase, questo significa che si ottiene un livello di sicurezza a 64 bit.

Nota che i 64 bit potrebbero non reggere a un attaccante di grande potenza che è determinato a impiegare mesi per craccare la tua frase di accesso specifica . Se riesci ad aumentare di circa 2 ^ 80 alternative è meglio, ma ovviamente è più difficile se devi effettivamente ricordarle. Se utilizzi un gestore di password, tuttavia, non è necessario lesinare.

Ora consideriamo il tuo schema. Il set di caratteri ASCII ha 21 consonanti e 5 vocali.

Ora ecco un trucco per rendere la matematica molto più semplice. Se prendiamo il logaritmo in base 2 del numero di alternative otteniamo la entropia di una tale scelta casuale. E l'entropia della concatenazione di stringhe scelte in modo indipendente è la somma delle loro entropie. Ciò significa che le tue scelte casuali ti daranno:

  • log2 (21) = 4,4 bit per ciascuna consonante;
  • log2 (5) = 2,3 bit per ogni vocale;
  • log2 (21) + log2 (5) = 6,7 bit per ogni sillaba;
  • 2 * (log2 (21) + log2 (5)) = 13,4 bit per ogni gruppo (poiché i separatori sono prevedibili e non aggiungono nulla)

Ciò significa che l'entropia delle tue passphrase è il numero di gruppi moltiplicato per 13.4. E ciò significa che è necessario:

  • 5 gruppi per raggiungere la soglia di 64 bit;
  • 6 gruppi per raggiungere la soglia di 80 bit.

Ciò significa che i tuoi esempi, se scelti in modo casuale , soddisfano la soglia di 64 bit perché hanno 5 gruppi:

vapu-dapu-fato-sovu-gazi
mipi-rodo-qiba-tiwu-cihe
qana-jeru-hibu-toka-xixu
fuca-kigu-moka-koxu-yopu

Quindi, se aggiungere un altro gruppo alle tue passphrase non è un grosso problema, ti consiglio di farlo, ma la tua lunghezza più breve non è male. L'unica cosa che ti avverto è questa: usa un generatore di numeri casuali sicuro da crittografia .

    
risposta data 12.02.2017 - 03:45
fonte
0

Supponiamo che nel caso peggiore l'aggressore sappia che stai usando questo metodo. Non si tratta di ipotesi inverosimili, perché l'autore dell'attacco potrebbe ottenere alcune delle tue password da servizi di bassa sicurezza e notare il modello.

Quanto è alta l'entropia del tuo schema di password?

Sembri considerare Y una consonante, quindi ci sono 5 vocali e 21 consonanti. Ciò significa che ci sono 5 * 21 = 105 possibili coppie di consonanti vocali.

L'ultimo esempio ha 10 coppie, quindi hai 105 ^ 10 possibili password. Questo supera di gran lunga la consueta raccomandazione di 8 lettere maiuscole, numeri e caratteri speciali tipizzabili (circa 80 ^ 8, a seconda di quali caratteri speciali si rappresentano).

Il primo esempio non è in realtà molto diverso da quello. Si varia la maiuscola e l'ordine di consonante e vocale, ma lo si fa con un modello prevedibile, quindi è irrilevante per il caso peggiore sopra menzionato. Hai due coppie di caratteri in meno, ma compensa con un numero di 4 cifre e 4 ^ 4 = 256 possibili variazioni di punteggiatura, che è più strong di circa il fattore 200 (2.560.000 contro 11.025).

    
risposta data 11.02.2017 - 13:59
fonte

Leggi altre domande sui tag