Domanda:
Quanto è importante mantenere segreta la lunghezza della password?
Crizly
2015-06-23 19:01:59 UTC
view on stackexchange narkive permalink

Tenere segreta la lunghezza della password è fondamentale per la sicurezza?

Qualcuno sa che hai una lunghezza della password diciamo 17 rende la password drasticamente più facile da usare con la forza bruta?

In un mondo idealizzato, con un set di caratteri noto e senza dizionari o altri metodi complessi per generare password, ** non conoscere la lunghezza della password ha per l'aggressore lo stesso costo di un carattere aggiuntivo nel set di caratteri **.
Le misure contano. Più è breve, meno ne vuoi parlare.
l'importanza di mantenere segreta la lunghezza è inversamente proporzionale alla lunghezza.
La maggior parte delle corde fino a 17 sono * esattamente * di lunghezza 17 (il volume di una n-ball è vicino alla superficie)
AiliuxqgtyCMT Per big n
Dieci risposte:
Mike Ounsworth
2015-06-23 19:24:52 UTC
view on stackexchange narkive permalink

Bene, iniziamo con la matematica: se assumiamo che la tua password sia composta da lettere minuscole, maiuscole e numeri, ci sono 62 caratteri tra cui scegliere (solo per semplificare la matematica, anche le password reali usano simboli). Una password di lunghezza 1 ha 62 possibilità, una password di lunghezza 2 ha 62 ^ 2 possibilità, ..., una password di lunghezza n ha 62 ^ n possibilità.

Quindi questo significa che se conoscono il tuo password ha esattamente 17 caratteri, quindi possono saltare tutte le password con lunghezza inferiore a 17 e ci sono solo 62 ^ 17 password da provare.

Ma quante password ci sono con lunghezza inferiore a 17, rispetto a 62 ^ 17?

Bene, se sommiamo 62 ^ ne dividiamo per 62 ^ 17 otteniamo (somma da n = 1 an = 16 di 62 ^ n) / 62 ^ 17 = 0,016 ( link al calcolo), quindi controllare solo le password di lunghezza 17 è solo l'1,6% più veloce rispetto a controllare tutte le password fino alla lunghezza 17

Se abbiamo uno schema di password che consente tutti i 95 caratteri ASCII stampabili , il risparmio derivante dal non dover provare password inferiori a 17 scende a 1,06 % ( collegamento al calcolo).

Un'interessante stranezza matematica su questo rapporto tra il numero di password inferiori a n, rispetto al numero di password di lunghezza n, è che in realtà non dipende da n. Questo perché siamo già molto vicini all'asintoto di 1/95 = 0,0105. Quindi un utente malintenzionato ottiene lo stesso relativo, o percentuale, risparmio di tempo da questo trucco indipendentemente dalla lunghezza della tua password; è sempre compreso tra l'1% e il 2%. Anche se, ovviamente, il tempo assoluto che impiega cresce di ordini di grandezza con ogni nuovo carattere che aggiungi.


La matematica sopra presuppone un semplice brute-forcer che proverà a, b, c , ..., aa, ab, ... Che è un buon modello (ish) per decifrare password generate dal computer casualmente in modo appropriato, ma è un modello terribile per indovinare le password generate dall'uomo.

I cracker di password reali sono parole basate su dizionari (e combinazioni di parole) dal dizionario inglese, elenchi di password trapelate, ecc., quindi questi calcoli dovrebbero essere presi con le pinze.

Un altro effetto del conoscere la tua lunghezza è che non devono provare password più lunghe di 17 , cosa che per algoritmi brute-force che provano combinazioni di parole del dizionario, potrebbe effettivamente essere un enorme risparmio.


Come menzionato da @SteveSether, @xeon e @CountIblis, rivelare la lunghezza (o l'entropia) di una password può anche influire sul fatto che un utente malintenzionato tenti di violare la tua password dissuadendoli da password complesse e attirandoli invece a password deboli. Quindi, se sai di avere una password complessa, rivelala! Tuttavia, divulgare le lunghezze (o entropie) delle password per tutti gli utenti in un sistema ha l'effetto di rendere più forti le password complesse e quelle deboli più deboli.


Conclusione:

Dire a qualcuno la lunghezza della tua password non è la cosa peggiore che puoi fare, ma io comunque non lo farei.

"Dire a qualcuno la lunghezza della tua password non è la cosa peggiore che puoi fare, ma io comunque non lo farei." Ci sono casi d'uso in cui la memorizzazione di queste informazioni è utile. (Password più lunghe -> più tempo tra le reimpostazioni obbligatorie delle password.) Se un database è compromesso, può essere trapelato. Un'ottimizzazione del crack del ~ 2% non è un * significativo * svantaggio rispetto a uno schema che premia le password più lunghe. (Nota: in realtà memorizzerei la stima dell'entropia zxcvbn piuttosto che la lunghezza, ma anche questa può essere approssimata.)
@ScottArciszewski Sapere che un sistema accetta solo password, ad es. * Più lunghe di 17 * in realtà dà all'aggressore MODO MENO di una velocità del 2% perché il numero di password inferiore a 17 è minuscolo rispetto a * 17 e superiori *. Un altro punto è che i database dovrebbero memorizzare gli hash salati delle password, nel qual caso nessuna informazione sulla lunghezza viene persa se il db viene rubato.
Intendevo: due colonne `password` è un hash bcrypt / [password_lock] (https://github.com/paragonie/password_lock),` strength` è una stima dell'entropia zxcvbn della password per determinare quando forzare l'utente a fare una reimpostazione obbligatoria della password (30 giorni unilaterali sono fastidiosi, usiamo il condizionamento pavloviano per premiare le password più forti).
Fiera @ScottArciszewski. In effetti stai mantenendo due "hash" per ogni password: l'hash bcrypt e l'entropia zxcvbn. Poiché zxcvbn è molto più veloce da calcolare rispetto a bcrypt, un utente malintenzionato deve solo eseguire le 100.000 (o wtv) iterazioni salt-and-hash di una password candidata se i punteggi zxcvbn corrispondono esattamente. Questo è un enorme vantaggio per l'attaccante. Poiché zxcvbn è open source, ti suggerirei di modificare leggermente l'algoritmo in modo che almeno i valori di entropia nel tuo db non corrispondano * esattamente * a quelli calcolati dall'implementazione standard.
Si chiama sicurezza anche se oscurità. Un'idea migliore sarebbe quella di memorizzare `(int) log ($ entropy, 2)`.
@ScottArciszewski ... come è possibile ridurre la sicurezza attraverso l'oscurità? Stai ancora solo cambiando il modo in cui calcoli il valore memorizzato nella colonna "entropia". Ora l'attaccante deve confrontarsi con `(int) log (zxcvbn ($ password), 2)`, che è ancora più veloce di `bcrypt ($ password)` ... a meno che non mi manchi qualcosa.
@ScottArciszewski Pensandoci di più, dal punto di vista di questo thread (cioè ignorando altri fattori), memorizzare il punteggio zxcvbn accanto all'hash della password è in realtà peggio che memorizzare la lunghezza perché ci sono molte più stringhe che hanno la stessa lunghezza delle stringhe che hanno lo stesso punteggio zxcvbn a 3 cifre decimali. Certo, `(int) log_2 ()` mitiga molto questo aspetto.
@ScottArciszewski Qualsiasi stima dell'entropia di una password fornisce a un utente malintenzionato solo un elenco di utenti candidati da prendere di mira. cioè "Attacca Andy con la password di 6 caratteri, ma non Frank con la password di 17 caratteri".
@ScottArciszewski No, ti consente anche di filtrare i tuoi dizionari di forzatura bruta per provare solo le password che corrispondono alla lunghezza / entropia data.
@ScottArciszewski Invece di memorizzare la stima dell'entropia, penso che sia molto meglio memorizzare il tempo di scadenza calcolato. Inoltre, un po 'di randomizzazione come suggerito da Mike assicurerà che un utente malintenzionato che riesce a capire l'esatta durata consentita di una password non riesca a calcolare l'esatta stima dell'entropia.
@MikeOunsworth `ma ancora non lo farei` in tal caso penso che la tua password sia esattamente un carattere più breve di quanto dovrebbe essere. In altre parole, la sicurezza ottenuta aumentando la lunghezza della tua password di un singolo carattere supera di gran lunga la possibile sicurezza persa dicendo a tutti quanto è lunga la password. Personalmente non ho problemi a dire al mondo che utilizzo una password lunga 32 caratteri e con 130 bit di entropia.
@MikeOunsworth Non ho intenzione di dire che memorizzare (int) log ($ entropy, 2) è sicuro, ma se zxcvbn ($ password) è un numero in virgola mobile, allora memorizzare il primo è probabilmente più sicuro, perché stai troncando un molta precisione. Ciò riduce la quantità di dati disponibili per l'attaccante. Questa è come la differenza tra il dire "Ecco il crc32 della mia password" e "Ecco le prime 2 cifre del crc32 della mia password". Entrambe potrebbero essere una cattiva idea, ma la prima è molto peggio. D'altra parte, modificare zxcvbn senza modificare la precisione sarebbe la sicurezza attraverso l'oscurità.
@PatrickM Modificare l'algoritmo di stima per aggirare il problema sarebbe davvero la sicurezza attraverso l'oscurità. Ma la variazione non deve essere deterministica. La semplice aggiunta di un numero casuale compreso tra 0 e 1 sarebbe sufficiente per eliminare la perdita ed evitare la discontinuità associata all'arrotondamento.
Tenendo presente che molto poco dello spazio di immissione della password viene effettivamente utilizzato durante la creazione manuale delle password, ci si dovrebbe aspettare che un avversario strategico tenti di violare le password indipendentemente dalla lunghezza. L'aumento di velocità dell'1,6% è un piccolo vantaggio proprio perché lo spazio di input è * molto grande *. Se lo spazio di input fosse molto piccolo (lo è) e ben noto all'attaccante (non sappiamo se è così), allora gli attacchi potrebbero essere facilitati molto più che da un mero 1,6% (ma non possiamo quantificare quanto per mancanza di dati).
Dovresti rimuovere "secondo wolfram alpha". Chiunque può verificare la tua richiesta in pochi secondi con una riga di python, ottava, matematica o altro. È come dire: "secondo Wolfram alpha, 1 + 1 = 2".
@RenéG Ecco, modificato per essere meno offensivo per te. Tuttavia, lascio i collegamenti ai calcoli, perché non è un calcolo ovvio per le persone senza una solida preparazione in matematica. Inoltre, non è un calcolo che puoi fare facilmente nella maggior parte dei linguaggi di programmazione poiché 62 ^ 17 (o 95 ^ 17) è WAY più di 2 ^ 32, e quindi causerà overflow di int.
Non volevo essere un pedante :) Non ho votato male, era solo la mia opinione. Ad ogni modo, non importa davvero. Anche se per essere onesti, qualcuno che non sa come calcolare quella somma non dovrebbe lavorare con i computer, semplici serie geometriche. Lo sfondo è solo matematica del liceo.
@ScottArciszewski non ha comunque la reimpostazione obbligatoria della password, per favore. In realtà diminuiscono la sicurezza.
Non in nessuna delle mie applicazioni. Sto parlando in modo strettamente ipotetico qui.
"se sanno che la tua password ha esattamente 17 caratteri, possono saltare tutte le password di lunghezza inferiore a 17". Possono anche saltare le password con lunghezza * maggiore di * 17. Non riesco a vedere come la tua analisi lo consideri. Cosa mi manca?
@MaskedMan Il più semplice attacco di forza bruta proverebbe le password in ordine di lunghezza crescente. Quindi le password di lunghezza 18 e superiore non verrebbero mai provate comunque, perché l'attaccante potrebbe trovare la password mentre prova quelle di lunghezza 17 e si fermerebbe una volta trovata la password.
@MaskedMan Hai ragione, dato il gran numero di programmi di cracking delle password là fuori, cercare di indovinare in quale ordine proveranno le password è una battaglia persa. Questa matematica doveva essere un primo sguardo approssimativo alla comprensione del problema, non una risposta definitiva. Come noto nella mia seconda sezione, questa matematica è piuttosto negativa per gli attacchi al dizionario, ma è ancora valida per crackare una password completamente casuale come `= Wm) Z;] A@5m * vRhD`
Tom Leek
2015-06-23 20:13:22 UTC
view on stackexchange narkive permalink

A parte i calcoli matematici dettagliati da @Mike, considera anche che la password length trapela ovunque:

  • Quando viene digitata, un lo spettatore subdolo può apprenderlo, contando "*" sullo schermo o ascoltando i tasti premuti (in quest'ultimo caso, può registrare il suono con il suo smartphone e riprodurlo a suo piacimento).

  • In un classico scenario di "browser Web", il nome utente e la password verranno inviati al server tramite alcuni HTTPS POST. Il livello SSL crittograferà i dati, ma SSL non nasconde la lunghezza dei dati, quindi un osservatore di rete passivo imparerà anche la lunghezza della password.

  • Sia l'interfaccia lato utente che il sistema ricevente elaboreranno la password con funzioni il cui tempo di esecuzione e modelli di accesso alla memoria dipenderanno dalla lunghezza della password. Gli aggressori che possono eseguire misure di temporizzazione saranno generalmente in grado di dedurre la lunghezza della password da queste misure.

Pertanto, un approccio sano consiste nel considerare la lunghezza della password come dati pubblici. Alcuni aggressori non avranno accesso ad esso (il tipo di aggressore che ha appena preso una copia del database del server); altri lo sapranno. È molto difficile sapere "quanto segreto" sia la lunghezza della password, e poiché la sicurezza consiste nel quantificare le cose, è meglio presumere che tutti gli aggressori possano sapere la lunghezza della password. Credere di poterlo mantenere segreto e stimare la sicurezza in base a questa nozione sarebbe eccessivamente pericoloso.

Anche se la lunghezza non è trapelata, un utente malintenzionato che non sa che la password di qualcuno è esattamente ad es. La lunghezza di nove caratteri potrebbe iniziare indovinando tutte le password più brevi possibili, poiché il numero di password possibili inferiori a nove caratteri è notevolmente inferiore al numero di password di nove caratteri.
TLS e SSH utilizzano spesso codici a blocchi, il che significa che una password più lunga farà sì che il messaggio crittografato sia più lungo solo quando supera un blocco (ad esempio, un limite di 8 byte). Tuttavia, se la password viene digitata come parte di una sessione interattiva (terminale su SSH o VNC su SSH, ...), verrà inviato un pacchetto per ogni battitura, che rivela quasi la stessa quantità di informazioni dell'audio della chiave dell'utente- clic.
La moda moderna con TLS consiste nell'usare suite di cifratura AES / GCM, dove non c'è riempimento: la lunghezza del testo in chiaro può quindi essere dedotta con la massima precisione.
La quantità totale di entropia fornita dalla lunghezza della password non è troppo difficile da calcolare, o meglio l'entropia MASSIMA ... supponiamo che le password possano essere di qualsiasi lunghezza compresa tra 1 carattere e 32, quindi è al massimo 5 bit di entropia, con di ovviamente un pesante ammassamento verso il basso per la lunghezza minima richiesta. Naturalmente, alcuni banchi ti limitano a 12 caratteri (minimo 6), quindi sono solo 2,5 bit AL MASSIMO. Tutto ciò ovviamente presuppone che la lunghezza sia segreta, il che non è ...
Penso che dire a chiunque cerchi di forzare la tua password che hai una password lunga 17 caratteri sarebbe sufficiente per scoraggiarli anche solo dal tentare di forzare la tua password e trovare un altro difetto nella tua sicurezza. Quindi ci sarebbe un notevole risparmio di tempo per loro. ;)
@TomLeek ti manca un punto chiave. Dati aggiuntivi come nomi utente, token CSRF e pubblicità ecc. Modificheranno la lunghezza del contenuto. In questi casi è inutile ascoltare tale traffico. Inoltre, alcuni siti calcolano bcrypt sul lato client stesso (non sono sicuro), astraendo così la lunghezza dai dati della richiesta.
@david: Sì, la perdita di tempo tra le pressioni dei tasti è una divulgazione seria, ci sono molte informazioni reciproche lì.
I nomi utente di @prakharsingh95: probabilmente non sono segreti nel punto in cui qualcuno sta tentando di violare la tua password (ma, se il nome utente è sconosciuto all'attaccante, allora hai ragione confonderà i tentativi di determinare la lunghezza della password dalla dimensione dell'https richiesta post utilizzata per accedere). I token CSRF di solito hanno una lunghezza fissa per un determinato sito e l'attaccante può determinare questa lunghezza semplicemente utilizzando il sito, ma senza dubbio ci sono alcune eccezioni. Le richieste https dell'utente al server in genere non contengono pubblicità.
@SteveJessop Infatti. Avevo fatto il punto della pubblicità sulla lunghezza del contenuto HTTPS generale. Sembra che l'aggiunta di un riempimento casuale nel contenuto POST dal client impedirà questi attacchi al canale laterale (o l'hashing della password sul lato client).
@prakharsingh95: Il punto di Tom è che ci sono troppi modi diversi in cui * potrebbe * perdere. Anche se potessi collegare questa perdita tra tante, non ti consente comunque di fare affidamento sulla segretezza della lunghezza della password. Per HTTPS in generale, certo, mescolare un po 'le lunghezze potrebbe generare un po' di confusione e prevenire alcune delle sue fughe di informazioni più semplici. Ad esempio, se si dispone di un sito Web che serve 10.000 documenti tutti di diversa lunghezza, è possibile esaminare seriamente le implicazioni di un utente malintenzionato che deduce quale di questi documenti viene visualizzato da ciascun visitatore.
Steve Sether
2015-06-23 20:40:37 UTC
view on stackexchange narkive permalink

Rivelare la lunghezza della password rivela qualcosa sulla forza della tua password. Quindi in sostanza stai dando a qualcuno un suggerimento su quanto potrebbe essere difficile indovinare.

Quindi se la tua password è molto lunga (17 caratteri nel tuo esempio) è un'informazione in gran parte inutile. Se la password è breve (6 caratteri), indica a un aggressore che potrebbe valere la pena attaccare. Gli aggressori inseguono gli obiettivi più facili.

Difficilmente definirei "inutili" le informazioni che possono far risparmiare un sacco di tempo all'attaccante :)
Il corollario sarebbe: se possibile, annuncia una lunghezza della password significativamente maggiore di quella della tua vera password. Se un aggressore lo ignora, non viene fatto alcun danno. Se ci credono, potrebbero astenersi dal tentare di decifrare la tua password (o persino provare la lunghezza della password sbagliata).
Oppure dì che è più breve, l'attaccante penserà che sia facile da decifrare e passerà un paio di mesi a generare calore, senza produrre nulla.
O mentire per sprecare fatica: ho un 18 lungo (quando in realtà sono 16 ... o viceversa)
Peter
2015-06-27 03:03:36 UTC
view on stackexchange narkive permalink

Non sono d'accordo con la risposta accettata. È vero che la lunghezza della password è quasi inutile se tutte le password vengono create casualmente da una macchina. Questo non vale più se le password vengono create dagli esseri umani nel modo usuale : in base a una o più parole del dizionario, mescola maiuscolo minuscolo, sostituire alcuni caratteri con numeri o caratteri speciali e aggiungere prefissi e suffissi (es. "! 1"), ecc.

Diamo un'occhiata a 2 scenari, uno è che abbiamo 10'000 ' 000 hash delle password e desidera trovare quante più password corrispondenti possibile per questi hash. L'altro è un hash della password e vogliamo decifrarlo. In entrambi gli scenari la differenza risulta essere significativa. Come al solito, tutte le informazioni possono essere utilizzate in modo improprio in un attacco, anche se a prima vista non sembra così .

Scenario 1: distruggi molti su 10'000'000 hash delle password con risorse limitate.

Possiamo semplicemente provare attacchi bruteforce su tutti gli hash delle password senza modo di distinguerli se non conosciamo la lunghezza della password.

Se noi utilizzare un attacco bruteforce completo (che è garantito per trovare la password) sapendo che la lunghezza della password offrirà solo un guadagno minimo. Perché? La forzatura bruta di tutte le password a 7 cifre richiede circa l'1-2% finché la forzatura bruta di tutte le password a 8 cifre. L'unica cosa che otteniamo conoscendo la lunghezza è che non abbiamo bisogno di forzare tutte le password a 7 cifre (e più piccole) se sappiamo già che la password ha 8 cifre. Tranne che un attacco di forza bruta richiede risorse quasi infinite (potenza di calcolo e / o tempo) e quindi non è qualcosa che possiamo o faremo.

Testiamo invece una serie di password "probabili" per ciascuna lunghezza di password . Un modo per farlo è con un attacco al dizionario. Testare le password probabili è di parecchi ordini di grandezza più economico rispetto all'utilizzo della forza bruta esaustiva, ma ha un enorme svantaggio: una volta che abbiamo provato tutte le password "probabili" a 7 cifre contro un hash della password, ma non abbiamo trovato la password corrispondente, non lo facciamo sapere se la password corrispondente per l'hash della password è più lunga di 7 cifre. Quindi, a meno che non sappiamo per certo che la password non è più lunga di 7 cifre, dobbiamo comunque testare l'hash della password con tutte le password "probabili" a 8 cifre, password a 9 cifre, password a 10 cifre, ecc. E quando si testano le password probabili, proprio come bruteforce esauriente, il costo del test di password più lunghe aumenta in modo esponenziale. Dato che ora sappiamo che la password è lunga 7 cifre, non dobbiamo testarla con probabili password a 8, 9, 10, 11, 12 cifre e anche più lunghe, risparmiando una quantità di lavoro davvero enorme.

Migliora. Una volta che abbiamo testato tutte le password probabili fino a una lunghezza, diciamo, 20 cifre, ora possiamo spendere le nostre risorse rimanenti per un attacco di forza bruta su quegli hash di password con una lunghezza di password piccola che la nostra precedente ricerca di password "probabili" non ha decifrato . Supponiamo di avere 2'000'000 hash di password non craccati rimanenti e 100'000 di questi hanno password con meno di 6 cifre. Tieni presente che abbiamo un budget limitato. Le password a 6 cifre sono economiche da decifrare. Ma poiché sappiamo quali 100'000 sono 6 cifre o più piccole, ora dobbiamo forzare la forza bruta di 100'000 password a 6 cifre per decifrare 100'000, invece di forzare 2'000'000 le password brute per decifrare 100'000 6 password di cifre. Questo è il 5% del lavoro per lo stesso risultato!

Se esaminiamo tutti i vantaggi combinati, il guadagno esatto che otteniamo dalla conoscenza della lunghezza delle password dipende dalla velocità del nostro metodo per testare le password "probabili", dalla rispettiva percentuale di successo del nostro metodo per testare le password probabili per ciascuna password length, la distribuzione delle lunghezze delle password nella raccolta di hash delle password che vogliamo decifrare e la quantità di risorse che abbiamo a disposizione (velocità di calcolo, tempo). Ma conoscendo la lunghezza delle password possiamo facilmente aumentare più volte il numero di password che troviamo con una data quantità di risorse - se i numeri funzionano fortemente a nostro favore, possiamo eventualmente ridurre il costo delle risorse per crackare 30 % delle password in un ordine di grandezza o più.

Scenario 2: crackare una singola password in un attacco mirato

Non conoscendo la lunghezza della password, noi è necessario distribuire le nostre risorse tra la forzatura bruta di tutte le chiavi di breve durata e il test di password probabili con una lunghezza maggiore. Supponendo di spendere metà delle nostre risorse su ciascuno, conoscere la lunghezza della password ci consente di trasmettere completamente una delle 2 e quindi raddoppiare le nostre risorse disponibili.

Otteniamo anche informazioni aggiuntive che possono essere estremamente preziose in un attacco:

  • Se la password è abbastanza breve da forzarla, possiamo dare un limite superiore a quanto tempo ci vuole per ottenere la password. Questo può indurci a tentare alcuni attacchi che altrimenti non prenderemmo nemmeno in considerazione.

  • Possiamo anche calcolare la probabilità di violare la password. Se sappiamo che è improbabile che violeremo la password, possiamo spendere le nostre risorse per trovare altri modi per compromettere il sistema.

  • Se abbiamo 2 password diverse dallo stesso utente possiamo vedere se c'è la possibilità che siano effettivamente la stessa password. Se variano solo di 2-3 cifre, possiamo fare un'ipotesi plausibile che la password più lunga potrebbe essere la stessa di quella più corta, più un prefisso o un suffisso.

  • Se otteniamo ancora più informazioni sulla password, ciò potrebbe comportare un guadagno molto maggiore rispetto ai 2 pezzi singolarmente . Ad esempio, se scopriamo che la password è una singola parola dal dizionario di Oxford, hai ancora la possibilità di tenerla al sicuro se, ad esempio, possiamo forzare solo una password al minuto. Ma se sappiamo anche che la lunghezza della password è di 17 cifre, il gioco è finito.

Sembra che il tuo disaccordo con la risposta accettata di Mike Ounsworth si basi molto su questo: presume che le password siano selezionate in modo uniforme a caso dall'intero set di stringhe, ma tu non lo fai, presumi che siano scelte dalle persone nel modole persone fanno.Sarebbe di aiuto nel tuo caso, credo, se evidenzi le differenze nelle ipotesi.
Vladislavs Dovgalecs
2015-06-24 01:32:35 UTC
view on stackexchange narkive permalink

Rivelare la lunghezza della password influisce. Se la tua password è debole (password breve), un utente malintenzionato potrebbe concentrarsi sul cracking. Se la password è complessa (password lunga), un utente malintenzionato potrebbe esplorare altri vettori di attacco. Quindi la conoscenza della lunghezza della password consente a un hacker di scegliere una strategia migliore risparmiando tempo.

WoJ
2015-06-26 14:42:51 UTC
view on stackexchange narkive permalink

Oltre alle risposte che danno una buona panoramica della tua domanda, c'è un'altra cosa da tenere in considerazione: quando effettui la valutazione del rischio devi presumere che l'aggressore sappia tutto sulla metodologia che usi per costruire la tua password .

In altre parole, se la tua password è composta da quattro parole inglesi medie incollate insieme, tutte minuscole ( à la xkcd) quindi devi assumere (diversamente da xkcd lo fa, BTW) che l'attaccante otterrà il dizionario pertinente e proverà solo una combinazione di quattro parole.

Ora hai uno spazio chiave (numero di possibilità) che hai messo contro il tempo necessario per controllare i suoi elementi a [un numero relativo a tecnologie e ambienti specifici] tentativi / secondo - e questo ti dà il tempo statistico in cui la tua password sopravviverà a un attacco.

Ora decidi se questo è abbastanza lungo, con i tuoi criteri (ciclo di vita della password, tempo in cui le persone lavorano con quell'account, età dell'universo, ...)


Se prendiamo l'esempio xkcd, sarebbe

  • il vocabolario medio di un madrelingua inglese è di circa 12.000 parole. Facciamo in modo che sia la metà (quindi 6.000)
  • questo fa 6000 ^ 4 = ~ 10 ^ 15 combinazioni
  • supponiamo che 1000 test / i per un attacco online - questo sia 10 ^ 12 secondi = 20.000 anni
  • un attacco offline sarà molto più efficace. Quanto dipende da molte cose, il cracking della GPU specializzato può attaccare un hash nell'intervallo di 10 ^ 9 test / s, il che riduce il tempo per tale password a 15 giorni. Ciò presuppone, tuttavia, che l'hashing non sia stato progettato correttamente ( l'hashing di una password dovrebbe richiedere molto tempo)
Possiamo usare il dizionario [Diceware] (http://diceware.com) come linea guida. Questo è 6 ^ 5 = 7.776 parole. log2 (7776) ~ 12,9 (bit). Diceware presuppone che le parole siano generate in modo indipendente, casuale, distribuito uniformemente (di solito utilizzando dadi fisici, da cui il nome).
Count Iblis
2015-06-23 23:54:26 UTC
view on stackexchange narkive permalink

Rivelare deliberatamente la lunghezza della password, ammesso che si utilizzi solo password molto lunghe, come sottolinea Steve Sether nella sua risposta, renderà meno probabile che gli hacker cerchino di indovinarla. Quindi, in realtà aumenti la sicurezza divulgando deliberatamente le informazioni sulla tua password.

Immagino sia tecnicamente vero, ma l'aumento della sicurezza è così vicino a zero che normalmente lo scarterei.
oppure potrebbero tentare di hackerarlo in un modo diverso. forza bruta per tutte le password <= 8, ingegneria sociale per le password> 8.
gnasher729
2015-06-24 16:33:08 UTC
view on stackexchange narkive permalink

Un utente malintenzionato non utilizzerà un attacco di forza bruta, provando tutte le password possibili, ma prima tenterà con password più probabili. Una password di otto lettere totalmente casuale può essere più difficile da decifrare rispetto a una password di diciassette lettere semplice da indovinare.

Di conseguenza, l'attaccante non proverà prima tutte le password brevi, ma proverà password di varie lunghezze durante l'attacco. Quindi, se hai una password di diciotto lettere "hellohellohello123" non sei al sicuro; una password di otto lettere totalmente casuale può essere più sicura.

La password rigida di otto lettere è più difficile da indovinare perché l'attaccante prova anche cose come "ciao ciao123" prima di controllare tutte le password di otto lettere. Se dici all'aggressore la lunghezza della password, quel po 'di correzione va. Quindi la perdita è molto peggiore dell'1,26% menzionato in precedenza.

Vero in generale, ma le password di 8 lunghezze sono così facili da decifrare con la forza bruta che non sono un buon esempio qui. (3 giorni se si utilizzano tutti i tipi di caratteri, 11 minuti se si utilizzano solo caratteri latini e cifre minuscoli)
@Sarge A seconda della funzione hash, dei suoi parametri e delle risorse di calcolo disponibili per decifrarlo, forzare bruta una password di 8 cifre può richiedere da (quasi) zero a (quasi) infinito. Una dichiarazione generale secondo cui sono necessari 3 giorni per decifrare una password di 8 cifre non può essere fatta. Se qualcuno usa un hash per il quale una password di 8 cifre può essere decifrata in 11 minuti da un aggressore realistico, ha chiaramente scelto l'hash sbagliato.
@SargeBorsch: Da dove lo prendi? Ad esempio, un iPhone impiega circa 0,1 secondi per controllare _one_ passcode e non c'è assolutamente alcun modo per aggirarlo. Anche 8 cifre richiedono 3 mesi per decifrare.
iPhone non è un esempio, hanno un hardware debole e possono anche avere limitazioni artificiali. L'ho preso da https://howsecureismypassword.net/
@gnasher729 Hai mai eseguito un'app di forza bruta in esecuzione sulla GPU? Sulla mia vecchia GPU 4 anni fa ha hash 4 miliardi di password al secondo. Un iPhone è lento, sì, ma 0,1 secondi sembra esagerato, probabilmente è più vicino a 0,1 ms.
@Peter l'utente potrebbe non sapere quale metodo hash è utilizzato su un server di qualche altra società.
@Aidiakapi Un iPhone impiega circa 80 ms di calcoli per testare un passcode (i modelli recenti aggiungono ritardi artificiali imposti dall'hardware in caso di ripetuti tentativi errati). Vedere ad esempio [iOS Security, ottobre 2012, di Apple] (https://www.apple.com/br/ipad/business/docs/iOS_Security_Oct12.pdf), pagina 9 nel PDF.
@Michael Kjörling Questo è solo per la sua sicurezza. Puoi semplicemente creare un'app per calcolare gli hash per la forzatura bruta delle password per altri scenari. Sono anche abbastanza sicuro che i moderni iPhone supportino GPGPU, consentendo ancora una volta il brute force basato su GPU, diversi ordini di grandezza più veloce rispetto agli approcci basati su CPU. Tuttavia, per aver violato la password stessa dell'iPhone, questa è davvero una sicurezza interessante.
Quora Feans
2015-06-27 23:28:31 UTC
view on stackexchange narkive permalink

Qualsiasi cosa che riduca l'entropia della tua password ne riduce la forza.

Potrebbe essere che anche quando si rivela la lunghezza della password, il pool di password rimanenti è ancora abbastanza grande.

Per quanto riguarda un esempio concreto, l'insieme di tutte le password di lunghezza 17 è sicuramente abbastanza forte contro quasi tutti gli attacchi. A condizione che tu non abbia rivelato altri dettagli come "La mia password di lunghezza 17 contiene il nome del mio micio, che nessuno conosce."

La lunghezza 17 implica 272843561753653169767435615050624325866274580142388791900214521038955085904188409449281578168966401 caratteri alfanumerici (considerando le possibili combinazioni personaggi speciali). Sono abbastanza sicuro che sia sufficiente, data la nostra attuale potenza di elaborazione. Il numero sopra è dell'ordine di grandezza di una cifra seguita da 98 0s.

The Broken Ace
2015-06-28 04:11:35 UTC
view on stackexchange narkive permalink

Sì. È MOLTO cruciale. Un programma chiamato Crunch genera elenchi di parole per te. Intervalli come 1-17 caratteri occuperanno 15610 petabyte! Tuttavia, se un hacker sa che la tua password è esattamente di 17 caratteri, ci vorrà molto meno. Ecco perché è fondamentale.

Esattamente 17 caratteri richiedono la stessa quantità di dati da memorizzare come tutto fino a 17 caratteri inclusi. Tutti i caratteri da 1 a 16 sono solo un errore di arrotondamento rispetto alla dimensione di 17.
Oh. Non lo sapevo.
È piuttosto folle lo spazio di ricerca per una password di 17 caratteri. Pensaci, se hai 17 caratteri (di 62 possibili caratteri per spazio), hai 1-16 per * ciascuno * dei 62 caratteri nel 17 ° spazio. Ciò per definizione fa sì che tutti i caratteri 1-16 al massimo 1/62 dello spazio di appena 17.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...