Domanda:
Esiste una soglia per una password così lunga da non essere più sicura o addirittura insicura?
Mindwin
2016-03-24 18:43:59 UTC
view on stackexchange narkive permalink

Sento sempre "Una password lunga è buona, una password più lunga è meglio". Ma esiste una cosa come " La password è così lunga che sta diventando pericolosa " o " La password è abbastanza lunga, renderla più lunga non avrà importanza "?

Sono interessato alla sicurezza della password per quanto riguarda solo il cracking.
No se può causare un sovraccarico DoS dei server durante l'hashing, o se il venditore pensa in caso contrario.

Supponiamo inoltre che la password non contenga alcun dizionario sarebbe comunque nei commenti. parole, è archiviato utilizzando le migliori pratiche, ha un sale unico e entropia pertinente per carattere. Anche il modo in cui l'utente ricorderà / richiamerà / memorizzerà la password non ha importanza.

Accetto che più a lungo / password / siano più sicure. Chiedo il limite superiore .

Esiste una lunghezza (o dimensione di entropia) in cui rendere la password più (sic) non ha più (sic) importanza, o addirittura indebolisce la sua sicurezza? So che dipende dall'algoritmo di hashing, se il limite superiore per un dato algoritmo esiste ed è noto, qual è?

Supponendo che la password sia sottoposta ad hashing, allora sì. Vedi http://security.stackexchange.com/questions/42154/does-it-make-sense-to-choose-a-longer-password-than-the-output-of-a-hash e http: // crypto .stackexchange.com / questions / 25252 / password-length-versus-hash-length
Mi aspetto che tu chieda questioni tecniche quando chiedi come la sicurezza potrebbe diminuire con l'aumentare della lunghezza. Un modo non tecnico in cui ciò può accadere è che le password più lunghe possono essere più difficili da ricordare, il che potrebbe incoraggiare gli utenti a scriverle, il che sarebbe meno sicuro.
Dipende dalla dimensione dell'hash. Sia `f` la tua funzione hash, se fissi il numero di bit nell'hash allora esiste una lunghezza` n` tale che `f (Σ¹∪ ... ∪Σⁿ) = f (Σ⁺)` cioè ogni stringa con più di "n" caratteri ha una stringa più corta, di lunghezza diciamo "k", con lo stesso hash. A quel punto la forza bruta troverà semplicemente la stringa più corta e tutti i caratteri extra `n-k` sono * completamente * inutili. Più di questi caratteri "m" sono utili solo per generatori di password non veramente casuali.
Riguardo alla prima domanda, stai commettendo un errore fondamentale nel tuo pensiero: una password che non ricordi non è per definizione meno sicura perché non puoi ricordarla.È semplicemente così sicuro che anche tu stesso non hai l'accesso.Il problema inizia quando inizi a scriverlo o a scrivere suggerimenti.Questo ti aiuterà a * te * ricordare la password, ma ovviamente chiunque altro ne abbia * sarà anche * in grado di indovinare la password.
Se la tua password contiene un intero dizionario, _definitamente_ è troppo lunga.
Chiamami Ishmael ...
Sono noto per impostare una password WiFi per la più lunga raccolta casuale di caratteri che posso (63 caratteri).Un amico ha osservato che era ridicolo dato che visto come WEP è stato sconfitto a causa di un difetto nel protocollo, è più probabile che venga scoperto un punto debole in WPA2 o l'algoritmo scelto rispetto a qualcuno che forza brute una password WiFi più lunga di 16 caratteri (128 bit)e quindi qualsiasi cosa più lunga di 16 sta solo rendendo frustrante digitare.
Vedi anche http://security.stackexchange.com/questions/15653/recommend-length-for-wi-fi-psk
@ToddWilcox E metti la nota adesiva sul monitor.[AviD's Rule of Usability] (http://security.stackexchange.com/a/6116/46979): "La sicurezza a scapito dell'usabilità va a scapito della sicurezza."
Dieci risposte:
paj28
2016-03-24 19:17:42 UTC
view on stackexchange narkive permalink

128 bit (di entropia)

Lo scopo principale di una password più lunga è prevenire attacchi di forza bruta. È generalmente accettato che 128 bit sia al di là della capacità di chiunque di esercitare la forza bruta e rimarrà tale per il prossimo futuro. Vedi questa figura in alcuni punti, ad es. Le crittografie SSL con una lunghezza della chiave di 128 bit o superiore sono considerate "ad alta sicurezza" e OWASP consiglia che i token di sessione siano almeno 128 bit. Il ragionamento è lo stesso per tutti questi: 128 bit prevengono attacchi di forza bruta.

In pratica, se una password è composta da lettere maiuscole e minuscole, numeri e un po 'di punteggiatura, ci sono circa 6 bit di entropia in ogni carattere, quindi una password a 128 bit è composta da 22 caratteri.

Una password può essere compromessa in modi diversi dalla forza bruta. Forse è presente un keylogger sul sistema client o l'utente viene sottoposto a phishing. La lunghezza della password non fa quasi alcuna differenza per questi attacchi: anche una password a 1000 bit verrebbe acquisita allo stesso modo. E questi attacchi sono comuni nella pratica, quindi non vale davvero la pena usare password troppo lunghe.

In effetti, puoi cavartela con un po 'meno di 128 bit. Se la password è sottoposta ad hashing con una funzione hash lenta come bcrypt, ciò rende più difficile un attacco di forza bruta, quindi 100 bit (o giù di lì) prevengono completamente gli attacchi di forza bruta. Se sei interessato solo agli attacchi online e il sito ha una politica di blocco, puoi farla franca con meno ancora: i 64 bit impedirebbero completamente un attacco di forza bruta online con velocità limitata.

Qualche idea di come questa lunghezza varia con le codifiche UTF-8 multibyte?
@PhilLello - È piuttosto raro che le persone utilizzino caratteri Unicode nelle password (una volta ho dovuto eseguire il debug di un'app che si è comportata in modo errato quando ne ha incontrato uno) Se li usi, devi solo regolare la stima dell'entropia per carattere. Supponiamo che tu usi il BMP completo (65k caratteri) che è di 16 bit per carattere, quindi una password di 8 caratteri ti dà 128 bit di entropia.
Lo voto se aggiungi una parola. Entropia. Sono 128 bit di entropia che contano, non la lunghezza. Ad esempio, posso creare una password che sia tutti 1 o tutti 0 lunga 128 bit. Ma segue uno schema ben noto, quindi non contiene molta entropia. Generalmente la lunghezza della password deve essere maggiore dell'entropia della password, poiché le password generate dall'uomo non sono casuali ma seguono schemi (riducendo l'entropia per carattere).
Ciò mi sorprende, ad esempio le password cinesi, giapponesi, sanscrite o cirilliche in un sistema multilingue.
@PhilLello molti siti muoiono quando provo a usare caratteri accentati nelle password :(
AilirkmwukCMT not all characters in the whole Unicode BMP are equally used, or easy to type with a single keyboard layout. If you have to switch keyboard layouts multiple times to type your uniform randomly generated Unicode password, then that isn't any easier to type than just using longer password with basic letters.
@PhilLello - Gli utenti dell'app erano per lo più di lingua inglese. Penso che quelli che sono inciampati siano stati persone attente alla sicurezza che usavano deliberatamente personaggi funky
@LieRyan: Per non parlare del fatto che parecchi sistemi applicheranno NFC / NFD o varie altre trasformazioni che distruggono l'entropia alle password.Probabilmente non dovrebbero fare quelle cose, ma dal momento che non controlli il sistema, è poco confortante.
Sono d'accordo che 128 bit di entropia sia la risposta corretta, ed è "abbastanza buono" per tutti tranne i più paranoici.Tuttavia, quando i computer quantistici entrano in scena, questo non è più vero, a causa dell'algoritmo di Grover: ci costringe a raddoppiare questo numero.256 bit è una risposta ancora migliore, poiché protegge persino dagli algoritmi quantistici.
John Deters
2016-03-25 00:17:14 UTC
view on stackexchange narkive permalink

Una password può essere così lunga da non essere sicura? Sì.

Quando guardi al quadro generale della sicurezza nella tua organizzazione, sicurezza non significa solo "proteggere gli account con password difficili da indovinare". La sicurezza deve proteggere l'intera organizzazione con la "triade CIA" di riservatezza, integrità e disponibilità. Oltre una certa soglia di lunghezza della password, la riservatezza e l'integrità non migliorano statisticamente, mentre la disponibilità scende a causa della scarsa usabilità. Un sistema a cui non è possibile accedere è altrettanto non disponibile di uno inattivo.

Se costringi il tuo utente a digitare una password di 22 caratteri composta da lettere, numeri e simboli casuali e misti i tuoi utenti saranno più inclini agli errori. Considera che un utente potrebbe essere sotto stress per rispondere immediatamente a una situazione critica. Armeggiare con una password lunga può causare un blocco di 3 tentativi e richiedere all'utente così tanto tempo per il ripristino da non poter affrontare la situazione in modo tempestivo e il risultato è un disastro. Quella lunga password ha impedito la disponibilità; invece di proteggere l'organizzazione, ha causato danni.

Quanto tempo sprecano i tuoi utenti a inserire le password? Più lunga è la password, più lenta sarà l'inserimento. Sottrai quella spesa dalla linea di fondo. Fa parte del costo della sicurezza, denaro che avrebbe potuto essere speso altrove. Una password di 100 caratteri ti costerebbe più di una password di 20 caratteri, pur non fornendo una riduzione misurabile del rischio. Il tempo e il denaro sono risorse e una password troppo lunga li spende senza produrre vantaggi aggiuntivi.

Con tutto questo, sto sostenendo una scarsa sicurezza dei PIN a 4 cifre, in modo che gli utenti siano più veloci, più felici e meno errori? Ovviamente no. Quello che devi fare è bilanciare l'entropia fornita dalla password con la psicologia del suo utilizzo.

Sebbene la maggior parte degli utenti non sia in grado di ricordare una password di 12 caratteri composta da 70 lettere, numeri e simboli, potrebbe probabilmente ricordare una passphrase di cinque parole; quindi considera un approccio diceware per ottenere un'entropia simile. Cinque parole casuali ma familiari sono probabilmente più facili da ricordare e digitare rispetto a 12 simboli casuali, fornendo quintilioni di possibili combinazioni; sei parole diceware forniscono una sicurezza ancora maggiore rispetto alle password di 12 caratteri.

Se per qualche motivo devono essere caratteri, assicurati di sceglierli dal set di caratteri non ambigui. Non forzare l'utente a ballare sul tasto Maiusc o digitare simboli casuali. Se hai bisogno dell'entropia da una password di 12 caratteri casuali che attinge da [az] [AZ] [0-9] [! - *], puoi ottenere un livello simile di entropia usando solo [az] ed espandendolo a 15 caratteri .

Oppure prendi in considerazione altri strumenti, come l'autenticazione di token, biometria o smart card, e fai in modo che integrino un PIN più breve.

I sistemi di sicurezza devono essere utilizzabili o interferiscono con l'organizzazione a suo danno.

Approccio interessante per considerare la facilità d'uso come una caratteristica * di sicurezza *, piuttosto che una forza di controbilanciamento.
@PeterCordes, un sistema troppo difficile da usare verrà anche bypassato da persone ben intenzionate, il che può portare a vulnerabilità.Ad esempio, possono scaricare un gestore di password gratuito solo per svolgere il proprio lavoro, senza rendersi conto che è infetto da Trojan.Gli utenti sono parte integrante di qualsiasi sforzo di sicurezza;dobbiamo sempre riconoscere prima di tutto che sono persone e che devono essere abilitate, non combattute.
XKCD ha stimato una password di quattro parole casuali a 44 bit (che implica 2000 parole tra cui scegliere), una password con sette simboli ha più combinazioni possibili di quattro parole casuali.
@PeterCordes Come si suol dire, "La sicurezza a scapito dell'usabilità va a scapito della sicurezza"
@SimonG., Grazie.Ho fatto i conti e poi ho aggiornato la risposta.Diceware fornisce 7776 parole, quindi 7776 ^ 4 è circa un quadrilione, 7776 ^ 5 è nella gamma dei quintilioni;e 7776 ^ 6 è nella gamma sextillion.Una password di 12 caratteri si trova all'estremità più piccola dell'intervallo di sextillion.Il cracker SHA-1 fatto in casa più veloce che abbia mai visto ha registrato oltre 348 miliardi di hash al secondo.Possiamo aspettarci di più da un avversario ben finanziato, ma solo fino a un certo punto: i costi sono alti e salgono in modo esponenziale.
Sebbene il contenuto di questa risposta sia buono, penso che l'OP intendesse evitare tali risposte scrivendo, * "Anche il modo in cui l'utente ricorderà / richiamerà / memorizzerà la password non ha importanza" *.Ho interpretato la domanda nel senso che l'OP stava cercando ragioni tecniche per cui una password lunga potrebbe non essere sicura.
-1
Penso che l'OP chiedesse per curiosità come una domanda tecnica / matematica / computer, * non * come una domanda pratica di sicurezza, come suggerito da @JonBentley.Il tipo di risposta che l'OP stava cercando può essere interessante anche se non praticamente utile, e ho pensato che l'OP formulasse la domanda in un modo che lo riconosceva.
Più è difficile per me ricordare la mia password, più è probabile che la scriverò e la riutilizzerò su altri siti.Non essere ossessionato solo dalla parte della sicurezza su cui hai il controllo.La sicurezza difficile da usare non è la sicurezza.
Intuitivamente ti aspetteresti che le password abbiano una minore memorabilità per bit di entropia rispetto alle passphrase, ma questa scoperta non è sempre confermata negli studi, ad esempio https://cups.cs.cmu.edu/soups/2012/procedimento / a7_Shay.pdf
Questo è uno studio davvero utile, grazie per aver postato il link!
L'ultima frase può anche essere definita come quella che ora chiamiamo [Legge di AviD] (http://security.stackexchange.com/questions/6095/xkcd-936-short-complex-password-or-long-dictionary-passphrase/6116# 6116): "La sicurezza a scapito dell'usabilità va a scapito della sicurezza."
Neil Smithline
2016-03-24 19:00:51 UTC
view on stackexchange narkive permalink

Le password sempre più lunghe non diventano insicure, ma a un certo punto smettono di diventarlo più sicure.

Sulla base dei presupposti che hai menzionato, sembra probabile che la password sia veramente casuale e memorizzata utilizzando bcrypt (memorizzazione delle password all'avanguardia). Bcrypt ha un limite di lunghezza compreso tra 50 e 72 caratteri, a seconda dell'implementazione. Quindi una password più lunga di quella non sarà consentita, hash utilizzando solo i primi N caratteri o qualcosa di simile. Fondamentalmente, più a lungo non sarà meglio (anche se non sarà peggio).

Si potrebbe anche sostenere che, una volta che la password è protetta da un attacco di forza bruta all'hash della password da ora fino alla fine del l'universo, rendere la password più lunga non la rende più sicura. Anche se fai ipotesi folli sull'hardware di un utente malintenzionato, una password veramente casuale con 20-30 caratteri sarà sicura fino alla fine dell'universo. Quindi, una password più lunga non sarà più sicura.

Infatti. Alcuni / tutti UNIX usavano troncare le password a 8 caratteri nell'era DES.
Menzionandolo solo per divertimento, se la password è abbastanza lunga, potrebbe essere troppo grande per l'attaccante per salvare o rompere il suo codice!come una stringa da 1kb potrebbe avere dei problemi a essere salvata in un server SQL (poiché il metodo di salvataggio è solitamente statico)!oppure una stringa da 10 GB potrebbe non avere effettivamente spazio da salvare !!
@PhilLello E anche il vecchio hash LM basato su DES aveva un limite di 14 caratteri (in due blocchi da 7 caratteri).
"Hashed utilizzando i primi N caratteri" può essere * completamente * insicuro perché i primi N caratteri potrebbero non contenere entropia.Si potrebbe voler sottolineare che queste implementazioni sono esplicitamente dannose.
WoJ
2016-03-25 01:19:56 UTC
view on stackexchange narkive permalink

Un caso in cui una password più lunga può essere effettivamente più debole del previsto è con sistemi che troncano la stringa inserita come password. Considera

  passwordsogoodtahtittakestrillionyearstobreakitgoaheadtryme  

Questa password è estremamente valida 1 tranne quando hai un sistema che la vede effettivamente come

  password  

perché accetta solo 8 caratteri. Il resto viene silenziosamente scartato, quindi digiti sempre passwordsogoodtahtittakestrillionyearstobreakitgoaheadtryme , il sistema accetta password e tutti sono contenti.
Compreso l'hacker che prova prima questa combinazione.

1 sì, anche perché ha parole del dizionario che la rendono più facile da ricordare rispetto ad alcune inutili cifre maiuscole -specialchars triade promossa da consulenti di sicurezza con problemi matematici

Il supporto di memorizzazione è irrilevante per questa domanda. Non si presume nessun imbroglio e migliori pratiche da parte del sito. Solo lunghezza della password rispetto alla sicurezza. Nemmeno il modo in cui l'utente ricorderà una password così lunga è rilevante qui.
@Mindwin: L'OP dice: * "Sono interessato alla sicurezza della password solo per il cracking." *. Ho presentato un caso in cui avere una password più lunga può essere pericoloso ** a causa del fatto che è più lunga ** (perché potrebbe essere più facile da decifrare)
Ho lavorato in un sistema che aveva questo esatto difetto: molte persone * avevano * usato password lunghe e sicure, eppure la nostra vecchia crittografia DES cruffata era troncata a soli 8 caratteri, banalmente crackabile.Le frasi chiave e le password sicure composte da parole chiave con aggiunta di casualità (un modello molto comune di creazione della password, anche se debole: "password1234!") Erano * più * facilmente decifrabili da questo sistema rispetto a quelle più brevi ma più casuali: erano sollevate dal lorocasualità.Questo si basa su altre risposte che dicono che la sicurezza è buona quanto il numero di bit di entropia nell'hash.
@WoJ, questo non è un caso in cui la password più lunga è * più * pericolosa;`password` e` password` sarebbero entrambe pericolose quanto la tua password molto lunga proposta.È piuttosto che la lunghezza extra non * riduce * il pericolo come previsto.(A dire il vero, questo fa parte di ciò che viene richiesto nel titolo, ma penso che sia ancora una distinzione importante da fare.)
@LSpice: Credo che questo sia un caso in cui una password più lunga è più pericolosa.Le persone sono indotte a pensare che una password più lunga sarà più sicura mentre questo non è vero - una più breve (ma più complessa) sarebbe meglio in quel caso.La lunghezza extra presuppone che tutta la password verrà presa in considerazione.Ma qui potremmo essere interessati alla semantica :)
Kevin Wells
2016-03-25 23:44:14 UTC
view on stackexchange narkive permalink

Vedo un paio di commenti che alludono a questo, ma nessuna risposta che lo indichi chiaramente, quindi lo aggiungerò qui.

Sì, c'è un limite alla lunghezza che puoi aggiungere a un password prima che non si ottenga più sicurezza se la password è sottoposta ad hashing (e speriamo che lo sia). Questo perché un utente malintenzionato non ha bisogno di conoscere la tua password, ha solo bisogno di conoscere una stringa che ha lo stesso output. Pertanto, se hai una password con più entropia dell'output dell'algoritmo hash, ci sarà quasi sicuramente una stringa più breve che produce lo stesso output a causa delle collisioni hash. A quel punto, non importa per quanto tempo impieghi la password, otterrai comunque solo la stessa entropia di output.

Questo ovviamente significa che l'attaccante dovrebbe forzare l'hash fino a quando non viene trovata una collisione, il che sarà praticamente impossibile per gli hash crittografici sicuri, ma hai chiesto un limite teorico, non pratico.

Simon G.
2016-03-25 22:21:26 UTC
view on stackexchange narkive permalink

Il limite di Landauer specifica il numero massimo teorico possibile di modifiche a bit singolo che è possibile eseguire con una data quantità di energia. Supponiamo che tu abbia accesso alle 20 centrali elettriche più potenti del mondo, tutte funzionanti a piena capacità per 100 anni. Questo ti darebbe 5 * 10 ^ 20 Joule di energia con cui fare i tuoi calcoli. Supponiamo che tu abbia un computer moderno che richiede solo un milione di volte l'energia necessaria in teoria. Con così tanta energia, quel buon computer raffreddato a -270 gradi Celsius, le leggi della fisica dicono che potresti lavorare solo attraverso 2 ^ 124 combinazioni di input.

Se sei disposto a distruggere completamente l'intero pianeta , convertendosi con perfetta efficienza in energia, e avere un computer che funziona al limite di Landauer nuovamente raffreddato a -270 Celsius, quindi si potrebbero enumerare 2 ^ 213 possibili combinazioni di input.

Se in qualche modo riesci a distruggere tutta la materia nell'intero universo e raccogliere tutta l'energia oscura, il tuo computer teoricamente perfetto può ancora funzionare solo attraverso 2 ^ 233 combinazioni.

Quindi, 2 ^ 233 combinazioni è il punto in cui un attacco di forza bruta non è più garantito per il successo dato un investimento sufficiente di tempo ed energia. Non è possibile un investimento abbastanza grande.

C'è sempre fortuna. Non importa quanti bit hai, è possibile che un'ipotesi sia corretta. Si sceglie quindi un rischio accettabile. Non c'è modo di ottenere un rischio zero e non c'è modo di definire "accettabile" in termini universali.

Teoricamente, un computer delle dimensioni della terra e operante al limite di Bremermann per la velocità di calcolo creerebbe un Password a 256 bit in meno di due minuti. Tuttavia, come appena calcolato, non c'è potenza sufficiente nell'universo per fare quello sforzo. Il tempo necessario per craccare con attrezzature teoricamente ideali non ci offre un limite "accettabile".

Il presidente Obama ha ordinato la creazione di un computer exaflop entro il 2025, sperando che sarà il computer più veloce del mondo una volta costruito. Che possibilità ha un computer exaflop di decifrare una password a 2 ^ 233 bit nei 5 miliardi di anni rimanenti prima che il sole esploda? Bene, questo è 1,6 * 10 ^ 34 ipotesi o meno di 2 ^ 114 ipotesi. Questa è una possibilità su 2 ^ 119 (6 * 10 ^ 35) di decifrare la password prima che il sole esploda.

Accettabile? Chi lo dice? È molto difficile mettere in prospettiva tali probabilità in quanto sono così improbabili. Vincere il jackpot della lotteria questa settimana, la prossima settimana e anche la settimana successiva? Molto più probabile che decifrare la password prima che il sole esploda tra cinque miliardi di anni.

233 bit di entropia possono essere rappresentati con 36 caratteri tratti dai 95 caratteri stampabili di US-ASCII. Un utente malintenzionato non può garantire di decifrare una tale password con la forza bruta anche utilizzando tutte le risorse dell'intero universo per farlo, e le probabilità che lo violino utilizzando solo la tecnologia esistente oggi sono molto ridotte.

Questo è l'unico limite di cui sono consapevole che viene imposto non dalla scelta dell'algoritmo o della persona che deve ricordare la password, ma dalle effettive leggi fisiche dell'universo.

Il tuo paragrafo conclusivo non è valido.Per il bene dell'argomento, prenderò le tue cifre come corrette, cioè 38 caratteri è il limite di ciò che è possibile per la forza bruta data tutta l'energia disponibile nell'universo.Tuttavia, per ogni singolo tentativo durante la forza bruta, c'è una certa probabilità che avrà successo e la ricerca può concludersi prima che sia completata.39 caratteri è ancora più sicuro di 38 perché riduce tale probabilità.
@JonBentley Hai ragione e ho modificato la mia risposta in risposta e perché non ho potuto calcolare i logaritmi ieri per qualche motivo.L'OP ha chiesto un limite e questo è l'unico limite che conosco.
Sergio A. Figueroa
2016-03-24 19:12:39 UTC
view on stackexchange narkive permalink

Per impostazione predefinita, la risposta a una domanda nella forma può [cosa negativa XYZ] accadere con le password è . C'è sempre spazio per commenti specifici, ma resta il fatto che le password sono uno dei compiti di sicurezza meno naturali assegnati a una persona e quella persona, quasi certamente, preferirà l'efficienza alla sicurezza.

Se tu scegli una password lunga che non sia in un dizionario, è probabile che la password sia una stringa casuale di caratteri difficili da ricordare. Di conseguenza, l'utente dovrà trovare scorciatoie per utilizzare effettivamente il suo sistema senza troppi problemi (per gli utenti, la sicurezza è normalmente un ostacolo per raggiungere i compiti che effettivamente hanno valore): annotalo, tienilo negli appunti, collega un dong USB che digita la password automaticamente ... lo chiami tu.

Il fumetto Battery Horse Staple XKCD è diventato famoso per la produzione di password più lunghe che sono più memorabili, ma, come un risultato, metti correcthorsebaterrystaple in ogni dizionario. Quindi, in generale, è difficile produrre password lunghe utilizzabili.

Questo è per la responsabilità pratica. Ora vediamo un po 'di numeri. Supponiamo che tu non memorizzi la tua password in testo normale, ma la usi come hash e salati. In generale, diciamo che non esiste un modo più semplice per violare l'archiviazione della password che ottenere una collisione per la password memorizzata. In tal caso, ogni hash della password avrà una lunghezza fissa: diciamo 256 bit per SHA-256. Quindi, hai al massimo 2 256 valori da memorizzare. Certo, è molto, ma è anche il tuo "limite". Se memorizzi password con più di 256 bit di entropia, non manterrai quell'entropia aggiuntiva da nessuna parte. Non è meno sicuro, ma, come ha indicato la risposta di Neil in relazione a bcrypt , non ci sarà alcun vantaggio da password più lunghe.

Sérgio, controlla le ipotesi sulla domanda. I dizionari sono esclusi e si presume che le migliori pratiche per l'archiviazione. Ma hai ottenuto un buon punto con la massima entropia hash.
I understand the approach, but that was my point with the _batterystaple_ example. Even if a password is not in a dictionary, it can be if it's likely to be used. If you are thinking of a password as an uniformly distributed string of printable characters, then it is not a password, but a weirdly encoded cryptographic key. In that case, the focus would be only about entropy (and randomness in the generation), but the implications in usability would be enormous.
@Mindwin Un attacco al dizionario conterrà più valori "hardcoded" delle sole parole trovate in una data lingua.Per esempio."12345678" sarà in esso, così come le sue sottostringhe.Password1,! Password1,! P@ssword1, e molte altre varianti saranno anche nel "dizionario".Ogni volta che vedi un elenco delle X password usate più comunemente, tutte le password menzionate vengono aggiunte a un dizionario da qualche parte per riferimento futuro.Quindi escludere _words_ dal dizionario non significa escludere _attacchi_ dal dizionario.
È triste che questi attacchi siano chiamati attacchi "dizionario", piuttosto che attacchi "elenchi di parole".Ero solito credere che, poiché i nomi dei luoghi gallesi non erano parole del dizionario, potevo usarli come password....Sono migliorato!
Posso solo supporre che sia influenzato dal fatto che "dizionario" è in diverse lingue una parola composta che potrebbe essere tradotta come _wordbook_.O il tentativo di fare un'analogia con qualcosa nel mondo reale.Ma può essere molto fuorviante, è vero.
Puoi trovare i nomi dei luoghi gallesi in un dizionario geografico.Potrebbe non essere ciò a cui la maggior parte delle persone pensa quando pensa al dizionario, ma usare il dizionario qui non è davvero più scorretto di qualsiasi cosa riferita alle parole (da quando password1 è una parola di qualsiasi tipo?)
Se intendi _word_ come una stringa di caratteri all'interno del tuo alfabeto, _password1_ può essere una parola.Tuttavia "libro di parole" o "elenco di password note / probabili" potrebbero essere meno ambigui (sebbene anche meno adatti per analogie rispetto al termine "dizionario")
"Quindi, in generale, è difficile produrre password lunghe utilizzabili."Questo non significa semplicemente che non dovresti usare password lunghe che qualcun altro * ha generato per te (o, almeno, che sono state pubblicate)?Ad esempio, spesso genero le mie password utilizzando l'Assistente password di Apple sull'impostazione "memorabile";mescola in modo semi-casuale diverse parole e una zuppa di punteggiatura, e queste sono lunghe, memorabili e (credo) ragionevolmente forti, poiché non c'è motivo per cui dovrebbero apparire nelle tabelle arcobaleno di qualcuno.
Se è utilizzabile, sembra un'idea sensata.Tuttavia, i problemi di usabilità sono sempre presenti.Quante volte saresti disposto a digitare la tua password lunga e sicura?Ciò si applicherebbe anche agli utenti non tecnici?(Non cercare di disincentivare il tuo approccio, ma solo di mantenere un occhio critico)
Alexey Vesnin
2016-03-24 19:00:48 UTC
view on stackexchange narkive permalink

nessun limite, in realtà. Il limite sarebbe possibile per un hash noto-debole in cui un attacco di sostituzione è ben documentato e misurabile.

Credo che questo non sia corretto Alexey. Alcuni algoritmi di memorizzazione delle password hanno limiti di lunghezza di input.
un algoritmo particolare può avere dei limiti, forse. ma in generale, non ci sono limiti
coteyr
2016-03-25 22:37:10 UTC
view on stackexchange narkive permalink

Quando si parla di password è importante tenere conto di tutti i vettori.

Ad esempio, la password "password" impiegherà 2,17 secondi per la forza bruta. "p455w0rd" richiede 29,02 secondi e "p455w0Rd!" richiede 2,4 mesi. Importante: se si parla di forzatura bruta di una password, questi tre esempi richiederebbero meno di un secondo in un attacco basato sul dizionario.

Al contrario "thisisalongpassword" richiede 2,5 milioni di secoli, mentre "th1sIs4l0ngPa55w0rd" impiega 36,72 secoli. Tuttavia, utilizzando la password più complessa si aumenta la probabilità che qualcuno la scriva su una nota adesiva e la incolli sul proprio monitor.

Quindi, sebbene una maggiore entropia sia migliore dal punto di vista della forza bruta, riduce la sicurezza complessiva di un sistema aumentando la probabilità che le persone siano persone e facciano cose insicure, aumentando così la vulnerabilità in altri vettori di attacco.

Per vedere un altro esempio, supponiamo che tu costringa gli utenti a utilizzare una password della lunghezza di una passphrase. Quindi l'utente sceglie "tobeornottobe". Se un hacker usasse solo la forza bruta, ci vorrebbero 9,85 mesi. Ma poiché un hacker utilizzerà gli attacchi del dizionario e altre euristiche, è probabile che questo richieda dei minuetti. Se lo stesso utente usasse "2b0n2b", la sola forza bruta impiegherebbe 0,02 secondi, ma gli attacchi al dizionario sarebbero inutili. L'obiettivo è trovare un punto debole tra facile da ricordare, forza bruta difficile e dizionario difficile. Se la tua politica sulla password si allontana da uno di questi obiettivi, hai reso la password complessiva più debole.

La risposta

Non esiste un limite superiore in cui una maggiore entropia farà indebolire una password. Esiste un limite massimo quando si parla di utilizzo di una password nel mondo reale. Il limite superiore è il punto in cui gli utenti del sistema non possono più utilizzare la password senza ricorrere a mezzi insicuri per ricordarla, aprendoti così ad altri vettori di attacco.

Il tempo per le password di forza bruta si basa su https://www.grc.com/haystack.htm in "Offline Fast Attack Scenario"

hildred
2016-03-29 00:13:42 UTC
view on stackexchange narkive permalink

Sì, c'è un caso in cui una password più lunga è meno sicura, ma nessuno dovrebbe comunque usare le password DES in questi giorni perché sono comunque banali da decifrare. Alcune implementazioni di DES in realtà erano meno sicure e utilizzavano meno entropia quando la password era più lunga di otto caratteri! La soluzione alternativa era troncare la password a otto caratteri prima dell'hashing. Se trovi qualcuno che usa ancora gli hash delle password basati su DES, hanno anche altri problemi. È anche teoricamente possibile che un difetto simile possa influenzare altri algoritmi di hashing delle password (penso che alcune versioni di lanman abbiano avuto un problema simile), ma la maggior parte delle persone che progettano gli hash delle password imparano dalle lezioni della storia e non sono a conoscenza di un moderno pubblicato funzione hash della password con questo problema.

hey hildred, grazie per la partecipazione, ma la domanda presuppone le migliori pratiche attualmente accettate dalla comunità (bcrypt + salt / ecc.).
Al momento dell'implementazione, questa era la migliore pratica.


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...