Ciò che rende una password strong casuale più resistente a una ricerca forza bruta rispetto a un'altra

4

L'unico modo per farlo è formulare un'ipotesi su come funziona l'algoritmo della forza bruta o che probabilmente funziona.

Diciamo che stavi cercando di rompere un lucchetto a combinazione con 3 dischi ciascuno con 10 tacche per 0-9.

Vorrei iniziare con 000, 001, 002 e così via, usando il mio algoritmo di cracking molto complicato, il codice che si sarebbe spezzato nell'ultimo tentativo sarebbe 999 quindi in questo caso è il più strong / più sicuro.

Possiamo supporre che un vero algoritmo non solo aumenti i numeri o passi attraverso la tabella ascii.

ad esempio con un codice numerico a 3 cifre probabilmente stai molto meglio provando 123 , 000 e 111 prima di 001 quando provi a craccarlo. numeri pin comuni

Questo vale per altri caratteri ascii

  • le lettere minuscole sono molto più comunemente usate delle maiuscole nelle password (sicuramente)
  • i caratteri speciali sono usati molto meno che caratteri alfanumerici (sicuramente)
  • carattere speciale "sottostazioni comuni" sono più comuni di altri caratteri speciali s $, 4A @ i!. (probabilmente).
  • 0,1 e 9 sono più comunemente usati di altri numeri. (sembra probabile)

Utilizzo del metodo di password comune " almeno 8 caratteri, tra cui una lettera maiuscola, un carattere speciale e caratteri alfanumerici " Ho creato una password di 8 caratteri molto strong * casuale di Fs9@lw$a .

La mia teoria è che le seguenti password casuali * forti sarebbero progressivamente più difficili da decifrare.

  • Fs9@k0$a (password)
  • Fs9@k0$q (modificato "a" nella lettera meno comune in inglese "q")
  • FS9@K0$q (conversione da basso a maiuscolo lasciando 1 minuscolo)
  • FS5@K7$q (modifica numeri comuni ad altri numeri)
  • FS5&K7?q (modificato i caratteri speciali comuni con altri caratteri speciali)
  • *%.&K7?q (sostituisci maiuscole con caratteri speciali lasciando 1 carattere maiuscolo.
  • *%5&K7?q (sostituisci i numeri con caratteri speciali lasciando 1 numero.

Sto cercando una lista completa (ish) di caratteristiche che una password "resistente alla forza bruta" dovrebbe / non avere.

Suppongo che in cima alla lista ci sia la lunghezza della password, per l'esempio ho usato solo 8 caratteri idealmente si userebbe il massimo consentito.

    
posta TarranJones 12.10.2016 - 16:05
fonte

5 risposte

5

Se per casualio intendi selezionare con uguale probabilità di un insieme ben definito di password possibili, allora la forza della password è una funzione della dimensione del set. Nel tuo esempio, l'insieme è quello delle sequenze a tre cifre ( 000, 001, ..., 999 ), e questo set ha 1.000 membri, quindi un utente malintenzionato riesce in media dopo 500 ipotesi.

I would start with 000, 001, 002 and so on, using my very complicated cracking algorithm, the code which would get cracked on the last attempt would be 999 therefor in this instance its the strongest/safest.

We can assume a real algorithm wouldn't just increment through the numbers or work its way through the ascii table.

Non abbiamo bisogno di assumere nulla. Ciò che ti confonde è che, per ogni scelta casuale, ci sono degli ordini che lo violano molto prima della media. Ad esempio, se sappiamo che il PIN è 999 , l'algoritmo che tenta tutte le combinazioni in ordine decrescente è ottimale.

Ma l'attaccante non sa in anticipo che il codice è 999 , quindi perché dovrebbero scegliere quell'algoritmo? Se il codice è 000 -che è solo un probabile 999 -l'algoritmo di iterazione all'indietro è quello peggiore . Se provi a fare un compromesso come 000, 999, 001, 998, ... , se il codice è 500 sarà davvero pessimo.

Questo argomento generalizza: se il codice è scelto a caso , con tutti i codici ottenendo uguale probabilità e tenuto segreto dall'attaccante, quindi per qualsiasi algoritmo l'utente malintenzionato la probabilità che il loro algoritmo trovi il codice in pochissimi tentativi è uguale alla probabilità che lo troverà nel numero complementare di tentativi. Tutto è in media, se il set ha codici N , l'autore dell'attacco ha successo in N/2 in media.

for example with a 3 digit numeric code you're probably far better off trying 123, 000 and 111 before 001 when trying to crack it. [link to common pin numbers]

Se il codice è stato scelto in modo uniforme a caso (tutti i codici sono ugualmente probabili), non lo sei.

Nota, d'altra parte, che se i codici non vengono scelti uniformemente a caso (alcuni hanno maggiori probabilità di essere scelti rispetto ad altri), allora sì, alcuni ordini indovinanti dovrebbero finire prima di altri. Questo è ad esempio il modo pratico di decifrare le password: i dizionari e le regole sulle mutazione e così via sono solo trucchi per provare le password più simili a quelle improbabili.

My theory is that the following random* strong passwords would be progressively harder to crack. [...]

Continui ad usare la parola "random" ma penso che devi fermarti a riflettere attentamente su cosa intendi con questo. Il concetto chiave qui è una distribuzione di probabilità uniforme discreta . Se i tuoi codici vengono scelti in questo modo, non ci sono trucchi intelligenti da ordinare, periodo.

I am looking for a complete(ish) list of characteristics that a "brute force resistant" password should/n't have.

Due proprietà:

  1. Forza: dovrebbe essere scelto a caso con uguale probabilità su un set sufficientemente grande.
  2. Semplicità d'uso: Dovrebbe essere facile da ricordare e facile da inserire nei dispositivi in cui l'utente deve. (Questo può essere molto rilassato se si utilizza un gestore di password che riempie automaticamente i campi della password o consente di copiare / incollare.)

Questo è tutto. Un semplice sistema che soddisfa probabilmente questi requisiti è Diceware . (C'è un dibattito su quanto siano memorabili le passphrase e alcune proposte di miglioramenti all'elenco delle parole .)

    
risposta data 10.01.2017 - 19:44
fonte
2

Hai ragione:

The only way to do this is by making an educated guess on how the brute force algorithm works or probably works.

Sfortunatamente, non tutti gli algoritmi di forza bruta sono gli stessi, e nuovi metodi per l'ottimizzazione degli attacchi di forza bruta contro le password generate dagli utenti vengono continuamente sviluppati. Se dovessi trovare una lista di caratteristiche che una password "resistente alla forza bruta" dovrebbe avere, potrei facilmente scrivere un algoritmo a forza bruta che proverebbe prima quelle password, rendendole così più deboli contro il mio algoritmo rispetto ad altre password sarebbe.

In realtà ciò che rende le password forti contro gli attacchi di forza bruta in generale non è un formato specifico o un insieme di regole, ma il loro grado di imprevedibilità. Un modo per stimare l'imprevedibilità di una password è determinare l' entropia del metodo utilizzato per generarlo.

Per illustrare come funziona l'entropia della password, supponiamo che tu usi uno schema molto semplice per generare le tue password. Per generare ogni password, lancia una moneta 20 volte. Ogni volta che esce la moneta, aggiungi un 1 alla password; ogni volta che esce la croce, si aggiunge uno 0. Questo si traduce in una password che è una stringa casuale di 20 uno e zero. In questo scenario, ci sono 2 20 possibili password, ed è altrettanto probabile che sia stata scelta ogni possibilità. Possiamo dire che questo metodo di generazione della password ha log 2 (2 20 ) = 20 bit di entropia. (Abbastanza debole, ma questo è oltre il punto per questo esempio.)

Ora supponiamo che l'hacker sappia che usi questo schema (lo scenario peggiore) e che desideri provare a decifrare una delle password che hai generato. Poiché ci sono 2 20 possibili password e ogni possibilità è ugualmente probabile che sia stata scelta, ci vorrà l'attaccante 2 20 / 2 = 2 19 ~ = 524,288 cerca in media di crackarlo. L'utente malintenzionato potrebbe crackare qualsiasi password individuale al primo tentativo o il suo ultimo tentativo, ma richiederà sempre 524.288 tentativi, indipendentemente dalla strategia che l'utente malintenzionato utilizza per decidere quali password provare prima .

Puoi utilizzare questo stesso metodo per stimare l'entropia di quasi tutti gli schemi di generazione di password in cui le password sono scelte a caso. Ad esempio, supponiamo di generare le tue password scegliendo 6 parole a caso (consentendo duplicati) da un dizionario di 7776 parole di parole inglesi comuni. (Questo è lo schema usato da diceware .) Con questo schema, la tua password ha log 2 (7776 6 ) ~ = 77,55 bit di entropia e avrà ~ 2 77,54 / 2 ~ = 110 sestilione cerca di crackare in media. Ancora una volta, con questo schema l'ordine con cui l'utente malintenzionato tenta ogni possibile password è irrilevante .

Thomas Pornin entra in entropia della password in modo molto più dettagliato in la sua risposta alla popolare "Breve password complessa o una passphrase lunga del dizionario? " domanda. Consiglio vivamente di provarlo.

    
risposta data 10.01.2017 - 19:20
fonte
2

Ho paura che ti stai avvicinando a questo problema molto ampio da un punto di vista troppo ristretto. Ci sono molte cose da considerare prima di immergerti nello specifico di "quali caratteri usare".

In primo luogo, di quale tipo di minacce sei preoccupato? Sei preoccupato che il tuo Yahoo! la password verrà utilizzata in modo improprio? Sei preoccupato che se un ladro impara il tuo Yahoo! password che tenterà un Account Take Over del tuo conto bancario con la stessa password? Oppure questa password protegge la tua rete, in cui hai segreti di affari inestimabili che hanno attirato l'attenzione di spie straniere?

Per la maggior parte delle persone, il secondo tipo di minaccia è sia il più rilevante sia il più comune: chi impara una password da una violazione spesso prova la password su vari siti Web bancari e di shopping. Questo è chiamato Account Take Over (ATO), e non importa per l'attaccante quanto è debole o strong la tua password. Proverà il tuo indirizzo e-mail e la password in ognuna delle centinaia di siti, e se non ottiene una corrispondenza passerà alla successiva email e password che ha ricevuto dalla violazione. In questo caso, la forza bruta è quasi irrilevante rispetto alla forza della password.

La tua migliore strategia di difesa contro questo attacco è di non riutilizzare le password. Di nuovo, non importa quanto siano complessi, perché l'attaccante li ha già. Finché non utilizzi la stessa password in più punti, sei in vantaggio sul gioco.

Si noti inoltre che questa strategia si basa un po 'su "non superare l'orso, appena superando il ragazzo con cui stai" - se l'hacker recupera il 10% delle password da un grande database rubato, potrebbe essere più interessato a monetizzare quello che ha già rubato piuttosto che lavorare di più per decifrare il resto delle password.

Ma diamo un'occhiata al caso in cui l'utente malintenzionato vuole la TUA password e decide di applicare la forza bruta. Diciamo che un hacker ottiene l'hash della tua password da un database violato, o da hackerare nel tuo sistema, e inizia a provare a indovinare la tua password. Cosa può fare?

Non sottovalutare l'attaccante. 5 anni fa qualcuno inserì un mazzo di schede grafiche in un computer e scrisse un programma CUDA per testare gli hash delle password il più velocemente possibile. All'epoca, la sua macchina era in grado di testare 348.000.000 di hash al secondo; le moderne schede grafiche sono ancora più veloci oggi. Ciò significa che se si seleziona la password da un set di 64 caratteri maiuscoli e minuscoli, cifre e simboli comuni, un utente malintenzionato con tali risorse può testare ogni possibile password di 7 caratteri in meno di 13 secondi. Pensi che questo sia fuori dalla portata del tuo criminale medio? Un ladro con accesso a una botnet di PC dirottati su Internet può impostare 10.000 computer per attaccare la tua password simultaneamente, e una percentuale di quei computer avrà schede grafiche per accelerare il suo attacco.

Tutto ciò significa che le tue pratiche di sicurezza e le lunghezze delle password contano molto più delle tue specifiche scelte di lettere, cifre e simboli. Scegli una password di 12 caratteri al minimo; altrimenti, almeno rispettare le linee guida del sito per la complessità della password. E mai riutilizzare le password. Un'applicazione di gestione password o anche un blocco note in tasca ti sarà utile.

    
risposta data 10.01.2017 - 20:49
fonte
1

Dipende dallo script di forza bruta. Se (per usare il tuo esempio) iniziamo a scoppiare da 001 a 999 , quindi 999 è l'opzione migliore, ma è anche l'opzione peggiore se iniziamo da 999 all'indietro. Quindi, se supponiamo che ogni valore sia incrementato o decrementato, suggerirei di andare a fare qualcosa a metà tra entrambi. Per fare ciò, abbiamo bisogno dei codici dei caratteri. Python ha funzioni pratiche per questo: ord('A') produce 65, per esempio, e chr(65) produce "A". Quindi suggerisco di impostare i primi caratteri in simboli con codici di caratteri vicini a 127, che è a metà tra 0 e 255 e che usano password lunghe.

(Tuttavia, devo ammettere che mi piace l'opinione di xkcd su questo.)

    
risposta data 11.12.2016 - 08:48
fonte
1

La risposta semplice è la lunghezza. Ogni personaggio aggiunge una grandezza di complessità. Puoi selezionare i caratteri casuali come preferisci, ma se qualcuno sa come hai selezionato la tua password casuale, qualsiasi trucco può essere invertito indebolendo la password.

Se aggiungi un altro personaggio, ci sono improvvisamente 200 volte più combinazioni possibili

    
risposta data 07.04.2017 - 06:58
fonte

Leggi altre domande sui tag