Devo imporre una lunghezza massima per le password?


162

Posso capire che imporre una lunghezza minima alle password ha molto senso (per salvare gli utenti da se stessi), ma la mia banca ha l'obbligo che le password siano lunghe tra 6 e 8 caratteri e ho iniziato a chiedermi ...

  • Ciò non semplificherebbe gli attacchi di forza bruta? (Male)
  • Ciò implica che la mia password viene archiviata non crittografata? (Male)

Se qualcuno con (si spera) dei buoni professionisti della sicurezza IT che lavorano per loro sta imponendo una lunghezza massima della password, dovrei pensare di fare qualcosa di simile? Quali sono i pro / contro di questo?


16
C'è quasi certamente una politica "tre colpi e sei fuori", che elimina la minaccia di un attacco di forza bruta.
Stu Thompson,

23
Non ci sono scuse per questo per i sistemi non legacy, come i siti Web moderni.
mparaz,

7
Non credo che la risposta sia puramente IT. La dimensione minima (6) e un limite massimo di tentativi sono "probabili" per eliminare ipotesi selvagge. La mia ipotesi è che la dimensione massima (8) sia quella di limitare il numero di chiamate (e di conseguenza il costo) del supporto per "Oops, ho dimenticato il mio codice" o "Digito il codice per digiunare" o "Digito male un carattere" ecc. Oltre al foglio su cui scrivi la password se non riesci a ricordarla ..
chiamami Steve

17
L'università a cui sono iscritto ha regole di password follemente stupide: solo 8 caratteri, almeno 1 numero, ma non all'inizio o alla fine della password, ha bisogno di caratteri da più delle 2 righe superiori della tastiera ecc. Ecc. Alla fine rendono più semplice il bruteforcing con queste regole -.-. Mi rendo conto che non sei così stupido, ma per favore non fare regole così sciocche! (Ho dovuto uscire dal mio sistema :))
cwap il

17
@call Beh, se imponi una lunghezza massima per quel motivo, riceverai da me chiamate "Ho dimenticato la mia password" , perché le mie password uniche per il sito sono tutte lunghe e limitarmi a 12 caratteri è un modo sicuro per garantire che lo farò non ricordarlo.
Roman Starkov,

Risposte:


193

Le password sono hash a 32, 40, 128, qualunque lunghezza. L'unico motivo per una lunghezza minima è impedire password facili da indovinare. Non c'è scopo per una lunghezza massima.

L' XKCD obbligatorio spiega perché stai facendo un disservizio al tuo utente se imponi una lunghezza massima:

L'XKCD obbligatorio


6
Forse una banca potrebbe scegliere di limitare la password perché sugli sportelli automatici non è possibile inserire più di, diciamo, 8 caratteri.
André Chalella,

11
beh, almeno sui bancomat, se provi un attacco di forza bruta, mangerà la tua carta. Quello a cui mi riferisco è la password per l'accesso online solo però.
Nickf

39
Purtroppo ciò presuppone che le password siano sempre sottoposte a hash. Le password di lunghezza massima sono un sintomo delle password archiviate in testo normale.
jevon,

14
Sospiro, anche su PayPal, la "graffetta corretta della batteria del cavallo" è di 8 caratteri sopra la loro lunghezza massima < censored
Roman Starkov

3
@kleinfreund perché se fosse stato hash, la lunghezza della password non avrebbe importanza per loro (le funzioni hash convertono una stringa di qualsiasi lunghezza in una lunghezza fissa).
Vicky Chijwani,

75

Una lunghezza massima specificata in un campo password deve essere letta come AVVISO DI SICUREZZA . Qualsiasi utente sensibile e attento alla sicurezza deve assumere il peggio e aspettarsi che questo sito stia memorizzando la tua password letteralmente (cioè non l'hash, come spiegato da epochwolf).

In questo è il caso:

  1. Evita di usare questo sito come la peste, se possibile. Ovviamente non sanno nulla della sicurezza.
  2. Se devi veramente utilizzare il sito, assicurati che la tua password sia unica, diversamente da qualsiasi password che usi altrove.

Se stai sviluppando un sito che accetta password, non mettere un limite di password sciocca, a meno che tu non voglia essere incastrato con lo stesso pennello.

[Internamente, ovviamente, il tuo codice può trattare solo i primi 256/1024 / 2k / 4k / (qualunque) byte come "significativi", al fine di evitare lo scricchiolio di password gigantesche.]


17
Mando anche tali siti Web un'e-mail standard, menzionando che mi hanno costretto a utilizzare una password più breve e meno sicura, che mi capita di riutilizzare anche su ogni sito Web che impone limiti così sciocchi. Questo fa loro sapere che è un problema e potrebbe anche dare a Joe Coder un po 'di influenza da mostrare ai superiori: prove che gli utenti pensano davvero male al sito Web come risultato di questo.
Roman Starkov,

3
Non sono sicuro che dovresti presumere che una password massima significhi che stanno memorizzando password in testo semplice. A volte, troncano l'input e passano semplicemente i primi caratteri x nell'hash (). (Il modo per verificare è impostare una password oltre il limite, quindi provare ad accedere con una variazione dei caratteri della password oltre la lunghezza massima).
benc,

5
@benc certo, è possibile, ma il punto è che come utente non hai modo di sapere se questo è quello che stanno facendo. Una lunghezza massima (soprattutto una breve) è un segnale di avvertimento e penso che sia meglio assumere il peggio (o contattare il fornitore per farli confermare).
Tardate

1
Per favore, elabora. Questa risposta è una semplice affermazione.
Kleinfreund,

1
Una password massima non significa necessariamente che sia memorizzata come testo normale; può essere per motivi tecnici, ad esempio bcrypt consente solo password con un massimo di 72 caratteri.
emorris,

58

Consentire una lunghezza della password completamente illimitata presenta un grave svantaggio se si accetta la password da fonti non attendibili.

Il mittente potrebbe provare a fornirti una password così lunga che si traduce in una negazione del servizio per altre persone. Ad esempio, se la password è 1 GB di dati e passi tutto il tempo, accettala fino a quando non esaurisci la memoria. Supponiamo ora che questa persona ti invii questa password tutte le volte che sei disposto ad accettare. Se non stai attento agli altri parametri coinvolti, questo potrebbe portare a un attacco DoS.

Impostare il limite superiore su qualcosa come 256 caratteri sembra eccessivamente generoso per gli standard di oggi.


35
Puoi comunque inviare 1 GB di dati con un limite massimo. Il software che fa il limite è quasi sempre dietro al server web.
epochwolf,

6
Puoi comunque eliminare tutti tranne i primi 256 caratteri prima di fare qualcosa di intensivo dal punto di vista computazionale. L'esecuzione di un hash sha su 1 GB di dati richiederà molto più tempo dello stesso hash su 256 caratteri.
rcreswick,

2
@Eyal: tutto ciò che accade sul lato client di un'app Web è intrinsecamente non attendibile; così, l'hash diventa una password equivalente, rendendolo un esercizio di futilità. (un browser web probabilmente non accetterà un input di testo da 1 GB e un client personalizzato potrebbe inviare una stringa da 1 GB nel campo del modulo "thisisthehashedpassword")
Piskvor ha lasciato l'edificio l'

4
@Piskvor: Ma non c'è modo di impedire comunque la stringa da 1 GB. Un utente può sempre richiedere example.com/?password=abcabcabcabc ... e rendere la sua richiesta grande quanto desidera. DoS standard.
Eyal,

4
@Piskvor ed Eyal, fortunatamente, Apache e IIS (e presumibilmente altri server maturi) limitano la lunghezza dei campi passati tramite URL: boutell.com/newfaq/misc/urllength.html
sampablokuper

21

In primo luogo, non dare per scontato che le banche abbiano buoni professionisti della sicurezza IT che lavorano per loro. Molti no .

Detto questo, la lunghezza massima della password è inutile. Richiede spesso agli utenti di creare una nuova password (argomenti sul valore dell'utilizzo di password diverse su ogni sito a parte per il momento), il che aumenta la probabilità che le scrivano. Inoltre aumenta notevolmente la suscettibilità agli attacchi, da qualsiasi vettore dalla forza bruta all'ingegneria sociale.


Concordato! Guarda che la serie di fallimenti di sicurezza dell'accesso online delle banche del Regno Unito negli ultimi anni ...
Stu Thompson,

6
Uso già una password diversa su ogni sito Web attraverso uno schema che mi consente di ricordarli tutti, ma sono tutti piuttosto lunghi. Gli unici websies di cui scrivo su bigliettini sono quelli che impongono limiti di lunghezza massima e che mi costringono ad allontanarmi dalla mia password preferita ma unica ...
Roman Starkov

@romkyns lo prendo il tuo schema non usa simboli? Una volta avevo un tale schema che produceva brevi password difficili da forzare, ma dovevo abbandonarlo quando il 10-20% dei siti che utilizzavo proibiva i caratteri speciali comuni.
Sparr,

nessun carattere speciale, no, ma aggiunge sempre numeri e caratteri maiuscoli, perché sapevo che alcuni siti lo richiedono. Magari avessi saputo dei limiti di lunghezza massima quando l'ho inventato ... Ma gli schemi (più semplici) che ho inventato per parenti stretti hanno funzionato perfettamente finora!
Roman Starkov,

1
@romkyns altri problemi con tali schemi: siti che condividono password. Se il tuo schema è qualcosa come nameofwebsitefO0 (googlefO0 yahoofO0 ecc.) Allora come ricordi che dovresti usare "yahoofO0" su flickr.com o stackoverflowfO0 su askubuntu.com? siti che scadono le password. quindi è necessario estendere lo schema per includere una parte che può cambiare. ma ciò non riesce se la regola di scadenza verifica la presenza di sottostringhe.
Sparr il

13

L'impostazione della lunghezza massima della password inferiore a 128 caratteri è ora sconsigliata dal cheat sheet di autenticazione OWASP

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

Citando l'intero paragrafo:

Le password più lunghe forniscono una maggiore combinazione di caratteri e, di conseguenza, rendono più difficile indovinare un attaccante.

L'applicazione deve applicare la lunghezza minima delle password. Le password di lunghezza inferiore a 10 caratteri sono considerate deboli ([1]). Sebbene l'applicazione della lunghezza minima possa causare problemi con la memorizzazione delle password tra alcuni utenti, le applicazioni dovrebbero incoraggiarli a impostare passphrase (frasi o combinazioni di parole) che possono essere molto più lunghe delle password tipiche e tuttavia molto più facili da ricordare.

La lunghezza massima della password non deve essere impostata su un valore troppo basso, poiché impedirà agli utenti di creare passphrase. La lunghezza massima tipica è di 128 caratteri. Le passphrase più brevi di 20 caratteri sono generalmente considerate deboli se composte solo da caratteri latini minuscoli. Ogni personaggio conta !!

Assicurati che ogni carattere inserito dall'utente sia effettivamente incluso nella password. Abbiamo visto sistemi che troncano la password a una lunghezza inferiore a quella fornita dall'utente (ad esempio, troncata a 15 caratteri quando hanno inserito 20). Questo di solito viene gestito impostando la lunghezza di TUTTI i campi di immissione della password in modo che corrispondano esattamente alla stessa lunghezza della password di lunghezza massima. Ciò è particolarmente importante se la lunghezza massima della password è breve, ad esempio 20-30 caratteri.


11
Questa fonte non scoraggia limiti massimi di lunghezza della password, scoraggia bassa (inferiore a 128 caratteri) massima della password limiti di lunghezza.
Matteo,

9

Un motivo che posso immaginare per imporre una lunghezza massima della password è se il frontend deve interfacciarsi con molti backend del sistema legacy, uno dei quali applica una lunghezza massima della password.

Un altro processo di pensiero potrebbe essere che se un utente è costretto a usare una password breve, è più probabile che inventi un gibberish casuale di una frase o soprannome facilmente indovinabili (dai loro amici / famiglia). Questo approccio è ovviamente efficace solo se il frontend impone di mescolare numeri / lettere e rifiuta le password che hanno parole del dizionario, comprese le parole scritte in l33t-speak.


1
Sebbene comprensibili, i sistemi legacy a volte devono dettare il design. Per quanto possibile, NON dovrebbero influenzarlo. L'ultima cosa che vuoi in un nuovo sistema è quella con una politica di sicurezza progettata prima ancora che i moderni attacchi alla sicurezza fossero comuni. O peggio, software più recente ma progettato in modo errato in primo luogo. Un sistema aziendale esistente può utilizzare HTTP ma non è giustificato non utilizzare SSL in un nuovo sistema o estensione. Allo stesso modo, le politiche sulle password non dovrebbero continuare a essere vulnerabili solo perché gli ULTIMI ragazzi hanno fatto un errore e, se si mantengono, sarebbe meglio che ci fosse uno studio ENORME sul rapporto costi / benefici.
Katastic Voyage

6

Un motivo potenzialmente valido per imporre una lunghezza massima della password è che il processo di hashing (dovuto all'utilizzo di una funzione di hashing lento come bcrypt) impiega troppo tempo; qualcosa che potrebbe essere abusato per eseguire un attacco DOS contro il server.

Inoltre, i server devono essere configurati per eliminare automaticamente i gestori di richieste che impiegano troppo tempo. Quindi dubito che questo sarebbe un grosso problema.


4

Penso che tu abbia ragione su entrambi i punti elenco. Se memorizzano le password con hash, come dovrebbero, la lunghezza della password non influisce in alcun modo sul loro schema DB. Avere una lunghezza della password illimitata genera un'altra variabile che deve essere presa in considerazione da un aggressore a forza bruta.

È difficile vedere qualsiasi scusa per limitare la lunghezza della password, oltre al cattivo design.


3

L'unico vantaggio che posso vedere per una lunghezza massima della password sarebbe quello di eliminare il rischio di un attacco di overflow del buffer causato da una password troppo lunga, ma ci sono modi molto migliori per gestire quella situazione.


1
Dovrebbe esserci una lunghezza massima di input, sì, ma sicuramente non dovrebbe essere <64. Una lunghezza massima di 8 o 12 è semplicemente ridicola.
Dan Bechard,

2

Ignora le persone che dicono di non convalidare le password lunghe. Owasp dice letteralmente che 128 caratteri dovrebbero essere sufficienti. Solo per dare abbastanza respiro, puoi dire qualcosa in più di 300, 250, 500 se ne hai voglia.

https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Password_Length

Lunghezza password Le password più lunghe forniscono una maggiore combinazione di caratteri e, di conseguenza, rendono più difficile indovinare un attaccante.

...

La lunghezza massima della password non deve essere impostata su un valore troppo basso, poiché impedirà agli utenti di creare passphrase. La lunghezza massima tipica è di 128 caratteri . Le passphrase più brevi di 20 caratteri sono generalmente considerate deboli se sono composte solo da caratteri latini minuscoli.


Non pertinente alla discussione. La domanda è se ci sono dei vantaggi nel limitare la lunghezza e non nel 128.
Vikki,

1

Lo spazio di archiviazione è economico, perché limitare la lunghezza della password. Anche se stai crittografando la password invece di cancellarla, una stringa di 64 caratteri non richiederà molto più di una stringa di 6 caratteri per crittografare.

È probabile che il sistema bancario si sovrapponga a un sistema più vecchio, quindi sono stati in grado di consentire solo una certa quantità di spazio per la password.


9
A meno che non vi sia un motivo molto valido, le password devono essere sottoposte a hash. Gli hash producono stringhe di lunghezza fissa. Non c'è argomento spaziale da fare, a meno che il sistema non stia memorizzando la password effettiva, il che è probabilmente un'idea terribile.
Stu Thompson,

8
La crittografia delle password è un'idea terribile. Un impiegato senza scrupoli è tutto ciò che serve per farti trapelare un gazillion di password. Salva il problema non memorizzandoli mai in primo luogo.
Roman Starkov,

1

Anche la mia banca lo fa. Permetteva qualsiasi password e ne avevo una di 20 caratteri. Un giorno l'ho cambiato, ed ecco che mi ha dato un massimo di 8 e avevo ritagliato caratteri non alfanumerici che erano nella mia vecchia password. Non aveva alcun senso per me.

Tutti i sistemi di back-end della banca funzionavano in precedenza quando stavo usando la mia password di 20 caratteri con caratteri non alfanumerici, quindi il supporto non poteva essere il motivo. E anche se lo fosse, dovrebbero comunque permetterti di avere password arbitrarie e quindi creare un hash che si adatti ai requisiti dei sistemi legacy. Meglio ancora, dovrebbero riparare i sistemi legacy.

Una soluzione per smart card non andrebbe bene con me. Ho già troppe carte com'è ... Non ho bisogno di un'altra trovata.


Tagliano uno spazio chiave importante che si allunga nel tempo per attacchi di forza bruta quando (e intendo QUANDO) viene rubato il loro database di hash (supponendo che abbiano anche salt / hash / stretch, cosa che sicuramente non lo fanno). È ora di cambiare banca.
Chris Gomez,

1

Se si accetta una password di dimensioni arbitrarie, si presuppone che venga troncata a una lunghezza ridotta per motivi di prestazioni prima che venga hash. Il problema con il troncamento è che quando le prestazioni del server aumentano nel tempo non è possibile aumentare facilmente la lunghezza prima del troncamento poiché il suo hash sarebbe chiaramente diverso. Ovviamente potresti avere un periodo di transizione in cui entrambe le lunghezze sono sottoposte a hash e controllate ma questo utilizza più risorse.


1

Cerca di non imporre alcuna limitazione a meno che non sia necessario. Attenzione: potrebbe e sarà necessario in molti casi diversi. Trattare con i sistemi legacy è uno di questi motivi. Assicurati di testare bene il caso di password molto lunghe (il tuo sistema può gestire password lunghe da 10 MB?). È possibile riscontrare problemi di Denial of Service (DoS) perché le funzioni di defogliazione chiave (KDF) che verranno utilizzate (in genere PBKDF2, bcrypt, scrypt) impiegheranno molto tempo e risorse. Esempio di vita reale: http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/


0

Dovrebbe esserci una lunghezza massima? Questo è un argomento curioso nell'IT in quanto le password più lunghe sono in genere più difficili da ricordare e quindi hanno maggiori probabilità di essere scritte (un GRANDE no-no per ovvie ragioni). Le password più lunghe tendono anche a dimenticarsi di più, il che, sebbene non sia necessariamente un rischio per la sicurezza, può portare a problemi amministrativi, perdita di produttività, ecc. Gli amministratori che credono che questi problemi siano urgenti possono imporre lunghezze massime sulle password.

Personalmente credo in questo specifico problema, a ciascun utente proprio. Se pensi di ricordare una password di 40 caratteri, allora maggiore potenza per te!

Detto questo, tuttavia, le password stanno rapidamente diventando una modalità obsoleta di sicurezza, le Smart Card e l'autenticazione dei certificati si rivelano molto difficili da rendere impossibili da forzare poiché hai dichiarato che è un problema e solo una chiave pubblica deve essere archiviata sul server con il privato chiave sulla scheda / computer in ogni momento.


Le persone possono facilmente ricordare una canzone preferita, un versetto della Bibbia o altri detti. Quelli sono molto lunghi rispetto a una password tipica. Ne ho appena provato uno e sono arrivato a 79 caratteri! (Certo, la possibilità di un errore aumenta quanto più lunga è la passphrase. Ancora peggio quando un sito Web STUPID non mostra l'ultimo carattere inserito nella casella della password.)
Katastic Voyage

0

Le password più lunghe, o le passphrase, sono più difficili da decifrare semplicemente in base alla lunghezza e più facili da ricordare che richiedere una password complessa.

Probabilmente è meglio andare per una lunghezza minima abbastanza lunga (10+), limitando la lunghezza inutile.


0

I sistemi legacy (già menzionati) o l'interfacciamento con i sistemi del fornitore potrebbero richiedere un limite di 8 caratteri. Potrebbe anche essere un tentativo fuorviante di salvare gli utenti da se stessi. La limitazione in questo modo comporterà troppe password pssw0rd1, pssw0rd2, ecc. Nel sistema.


0

Un motivo per cui le password potrebbero non essere sottoposte a hash è l'algoritmo di autenticazione utilizzato. Ad esempio, alcuni algoritmi digest richiedono una versione in chiaro della password sul server poiché il meccanismo di autenticazione prevede che sia il client che il server eseguano gli stessi calcoli sulla password inserita (che generalmente non produrrà lo stesso output ogni volta che la password è combinato con un 'nonce' generato casualmente, che è condiviso tra le due macchine).

Spesso questo può essere rafforzato in quanto il digest può essere parzialmente calcolato in alcuni casi, ma non sempre. Un percorso migliore è la memorizzazione della password con crittografia reversibile, ciò significa che le origini dell'applicazione devono essere protette poiché conterranno la chiave di crittografia.

Digst auth è lì per consentire l'autenticazione su canali altrimenti non crittografati. Se si utilizza SSL o qualche altra crittografia a canale completo, non è necessario utilizzare meccanismi di autenticazione digest, il che significa che le password possono essere archiviate con hash (poiché le password potrebbero essere inviate in chiaro sul filo in modo sicuro (per un dato valore di safe).


-4

Solo 8 password lunghe sembrano semplicemente sbagliate. Se ci dovrebbe essere un limite, almeno 20 caratteri è un'idea migliore.


3
Ma è questo il punto: non ci dovrebbe essere alcun limite.
Luke Stevenson,

-4

Penso che l'unico limite da applicare sia come un limite di 2000 lettere o qualcos'altro insanamente alto, ma solo per limitare la dimensione del database se questo è un problema


9
Le password devono essere sottoposte a hash ... E la dimensione del database non sarebbe un problema se la password viene sottoposta a hash.
epochwolf,

4
@epochwolf - Posso pensare a un motivo per cui le password non devono sempre essere sottoposte a hash (perché l'ho scoperto da me oggi): una password che deve essere inviata a una terza parte per conto dell'utente non può essere archiviata come hash valore. [Ad esempio un'applicazione che deve archiviare le credenziali per l'invio di e-mail attraverso un dominio esterno.]
Kenny Evitt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.