it-swarm.it

Quanto deve essere lunga la lunghezza massima della password?

La lunghezza minima della password consigliata è di circa 8 caratteri, quindi esiste una lunghezza massima standard/consigliata della password?

60
Mohamed

Bruce Schneier ha un paio di articoli interessanti sulle politiche delle password.

Password del mondo reale - che copre lunghezza della password, complessità e password comuni.

Avviso password - alcune cose da fare e da non fare tra cui:

  • Usa un gestore di password
  • Cambia frequentemente le password. Cambio il mio ogni sei mesi ...
  • Non riutilizzare le vecchie password.
  • NON utilizzare password composte da parole del dizionario, compleanni, nomi di famiglia e di animali domestici, indirizzi o altre informazioni personali.
  • NON accedere agli account protetti da password su reti Wi-Fi aperte - o su qualsiasi altra rete di cui non ti fidi - a meno che il sito non sia protetto tramite https.

e molti altri

Modifica password - una discussione dettagliata sulla frequenza con cui cambiare in base all'ambiente di utilizzo e delle minacce.

15

La risposta a questa domanda, come molte domande in Sicurezza, è "dipende".

Ci sono diversi fattori da considerare quando si guarda la lunghezza della password. Il primo è alcune delle cose contro cui una lunga password è progettata per proteggere, che è generalmente una forza bruta di attacchi di indovinare la password (online o offline).

Per indovinare la password online, se hai una politica di blocco relativamente aggressiva (ad esempio, 3 tentativi errati e quindi un blocco indefinito), è improbabile che gli attacchi contro un singolo account abbiano successo a meno che l'attaccante non abbia una buona idea di quale sia la password sta per essere.

Se stai cercando attacchi contro una vasta popolazione di utenti con la stessa politica di blocco, in cui l'attaccante può elaborare i nomi utente (ad esempio forum web), allora l'elemento più importante è che le password utilizzate non sono davvero comuni.

Inoltre, una cosa da tenere d'occhio dal lato del blocco degli account, è che le politiche aggressive qui per le applicazioni online possono rendere un attacco Denial of service abbastanza semplice, senza contromisure aggiuntive.

Se c'è il rischio di forza bruta offline, la forza della password diventa più importante. il problema qui è che una migliore potenza di elaborazione e metodi di attacco rendono questo un obiettivo mobile in termini di forza. Realisticamente direi che dovresti guardare oltre 10 caratteri e una forte applicazione che le password non sono presenti negli elenchi di dizionari comuni (come @andy dice che le passphrase sono una buona opzione qui).

Un altro fattore da considerare qui è la tua base di utenti e come viene utilizzata l'applicazione. In alcuni casi, direi che requisiti di password molto forti possono effettivamente portare a un'applicazione meno sicura. Se hai un'applicazione in cui gli utenti si trovano nello stesso posto (ad es. Molte applicazioni aziendali) e rendi la politica della password molto "forte" (sia in termini di lunghezza della password che di requisiti di rotazione), è probabile che gli utenti inizieranno scrivere le loro password, che probabilmente sconfigge in primo luogo uno degli obiettivi di sicurezza per quell'applicazione.

Una buona fonte di molte più informazioni su questo è un libro chiamato Autenticazione: dalle password alle chiavi pubbliche

20
Rory McCune

Buone risposte finora, ma vorrei suggerire un'altra possibilità: frasi pass . Come suggerisce Jeff Atwood di StackOverflow , se non sei proibito da limitazioni tecniche, potresti prendere in considerazione la possibilità di autorizzare e suggerire passphrase. Potresti farli rispettare, ma ciò probabilmente alienerebbe alcuni utenti sulla maggior parte dei siti. A causa della loro lunghezza, possono essere significativamente più difficili da decifrare e possono anche essere più facili da ricordare di una password come "A1lUrB @ se!" o cose del genere.

19
Andy

Se stai per eseguire l'hashing della password, perché impostare un limite superiore?

Non è che devi preoccuparti di raggiungere il limite massimo di caratteri sui campi di testo, basati sul web o altro. Quindi puoi semplicemente impostare un massimo di qualche centinaio di caratteri solo per limitare alcune condizioni al contorno di qualsiasi campo di testo che stai usando.

Naturalmente, se stai parlando di generare una password che proverai a utilizzare su più siti, non importa; nessuno là fuori sembra essere d'accordo. Ancor peggio, ho trovato siti con limiti di caratteri max diversi su campi di input diversi, quindi per accedere devi prima digitarli in modo errato prima di ricevere un campo diverso che consenta più caratteri. Naturalmente, se ogni sito lasciasse che fossero le capacità minime previste di un tipico campo di testo senza cercare di limitarlo artificialmente, allora sarebbero consentiti circa 2k caratteri e non dovresti preoccuparti di questo.

Modificato per aggiungere: qualcosa menzionato di passaggio qui mi ha fatto mettere in pausa:

devi ridimensionare il lavoro di hashing a ciò che è disponibile e ragionevole sui tuoi server o dispositivi. Ad esempio, abbiamo riscontrato un bug denial of service minore in Discorso in cui abbiamo permesso alle persone di inserire fino a 20.000 password di caratteri nel modulo di accesso

Potrebbe quindi valere la pena porre un limite ragionevole sia all'impostazione che al tentativo di password se si esegue l'hashing in un modo che è ritenuto il più costoso dal punto di vista computazionale. Alcune centinaia di personaggi potrebbero ancora impedire alle cose di esplodere troppo, pur essendo molto più di quanto un utente possa mai provare.

16
Doug Kavendek

Non dovrebbe esserci una lunghezza massima della password - se l'utente accetta di usare una password molto lunga, dovrebbe essere lodato, non bloccato.

Dato che il software è quello che è, diversi sistemi imporranno un limite alla dimensione della password, principalmente a causa di problemi con la GUI, scarsa programmazione o retrocompatibilità con sistemi molto più vecchi. Ad esempio, i vecchi sistemi Unix utilizzavano un processo di hashing delle password che utilizzava solo i primi otto caratteri e ignorava totalmente tutti gli altri. Allo stesso modo, i vecchi sistemi Windows avevano un limite interno di 14 caratteri. Pertanto, è meglio se la password, quando viene troncata ai suoi primi 14 caratteri, è ancora "forte".

Tuttavia, l'unico limite alla dimensione massima della password dovrebbe essere la pazienza dell'utente. Non ha senso far valere nulla qui.

8
Thomas Pornin

Un minimo comune oggi è di 12 caratteri, che è appena abbastanza grande da impedire il cracking della forza bruta da parte di un'organizzazione ragionevolmente ben finanziata entro un ragionevole lasso di tempo.

Per quanto riguarda la lunghezza massima; qui ci sono alcuni pensieri: una password più lunga di qualche centinaio di byte è quasi certamente dannosa (ad es. tentativo di iniezione SQL). Si noti inoltre che se si esegue l'hashing della password (e in caso contrario, è necessario ricominciare da capo), quindi le password più lunghe rispetto all'output di hash non aggiungono più entropia. Nota che per "più lungo" intendo lo stesso numero di bit nel tuo spazio chiavi, non la stessa lunghezza di carattere. Quindi, mentre consentire password più lunghe della lunghezza dell'hash dovrebbe essere consentito come punto di praticità, non avrebbe senso dal punto di vista matematico che una cosa del genere sia richiesto .

Richiedere maiuscole/minuscole raddoppia la dimensione del tuo alfabeto, il che produce rendimenti di grande complessità e probabilmente dovrebbe essere richiesto. La richiesta di caratteri numerici aggiunge forse il 20% in più al tuo alfabeto, il che non è un grosso problema, e la richiesta di simboli aggiunge forse dal 16% al 40% in più (a seconda di quali simboli conti), e ancora, no un ritorno altrettanto significativo, ma certamente non dovrebbe essere vietato.

3
tylerl

Personalmente andrei con l'utilizzo di un generatore di password (come lastpass.com o 1password) per generare e utilizzare password di minimo 8 caratteri e massimo 32 caratteri (poiché non tutti i siti supportano password di lunghezza superiore a 10 o 15) e utilizzare una password principale per l'autenticazione (questo dipende ancora dalla fiducia dell'utente su siti come lastpass.com) o da un'utilità 1password crittografata sul lato client per Mac e Windows).

Non è consigliabile utilizzare un set di password per tutti i siti. I forum, in particolare, mi inviano le password in chiaro. Alcuni siti hanno la funzione di inviare una password semplice nel caso in cui si utilizzi la funzione "Password dimenticata".

Di solito, le restrizioni sono impostate sul server (per i siti Web). Dobbiamo incolpare i server che utilizziamo per non impostare restrizioni sulle password degli utenti.

In breve, utilizzare password diverse ogni volta. Nel caso in cui tu abbia più di 10-15 password da ricordare, è ora di iniziare a utilizzare un gestore di password "sicuro". (Per la cronaca, Firefox Password Manager non è affatto sicuro)

2
Sairam

16 caratteri.

Questo ti dà 96 bit secondo Wikipedia , che è ben al di là di qualsiasi cosa crackabile secondo quell'articolo.

Personalmente uso un programma di password per il mio cellulare, combinato con la funzione Master Password di Firefox. La mia password principale ha più di 25 caratteri e si basa su Dice Ware, il che rende abbastanza facile da ricordare. Quasi tutte le mie password vengono casualmente rinnovate, poiché Firefox le ricorda comunque per me.

2

Ero in un cliente in cui il responsabile della sicurezza era pazzo. Voleva utilizzare ogni singola politica di complessità delle password possibile. (Novell eDirectory ha MOLTO problemi di complessità della password e ha voluto utilizzare un plug-in aggiuntivo per aggiungere altro!)

Al punto sarebbe impossibile generare una password che possa essere ricordata. Mi aspettavo che le masse non lavate lo trovassero e lo avessero catrato e messo le piume dopo che era stato implementato.

In altre parole, puoi esagerare.

1
geoffc

Consigli

Nel 2019, la casualità richiesta per una password/passphrase sicura è:

  • 12 caratteri generati casualmente con lettere minuscole, maiuscole e cifre; o
  • 6 parole generate casualmente. (Do not scegli tu stesso le parole! Questo crea modelli.)

È impossibile ricordare venti di questi, quindi memorizza solo alcuni di quelli importanti che usi regolarmente. Ad esempio, potresti memorizzare quello per il tuo account e-mail e quello per il tuo gestore di password. Per tutto il resto, archiviare le password in un gestore di password.

Rilevante: L'utente medio ha davvero bisogno di un gestore di password?
La risposta più votata è un chiaro "sì".

Rilevante: Quanto sono sicuri i gestori di password?
Dalla prima risposta, di paj28 (sottolineatura mia):

per la maggior parte delle persone questi rischi sono accettabili e suggerirei che l'approccio di l'uso di un gestore di password [per] la maggior parte delle password è meglio dell'uso della stessa password ovunque - che sembra essere la principale alternativa. Ma non memorizzerei tutte le password lì dentro; fare uno sforzo per memorizzare quelli più importanti, come l'online banking.

I gestori password comunemente citati sono KeePass (X), 1Password e LastPass. Dipende da quello nel tuo browser: quando usi Firefox con una password principale, è quasi come usarne una dedicata. Se il tuo browser non richiede una password prima di poter accedere alle password, non è molto sicuro (ma i dettagli dipendono dall'esatta implementazione, che è un argomento intero da solo).

Sviluppatori

Quando si crea un'applicazione, ecco alcune considerazioni utili:

Come hash sicuro delle password?
Riepilogo: usa Scrypt o Argon2, il più lentamente possibile. Se quelli non sono disponibili, Bcrypt o PBKDF2 sono alternative accettabili. Aggiungi sia sale che pepe .

Devo avere una lunghezza massima della password?
Riepilogo: solo contro gli attacchi DoS, quindi pochi kilobyte o giù di lì.

Implementare l'hash della password lato client
Divulgazione completa: mi collego alla mia risposta perché penso che sia la più completa. Assicurati di leggere anche le opinioni degli altri.

Dettagli

Potresti chiederti "perché il mio PIN codice solo 4 cifre allora? Questo è abbastanza per mantenere sicuro il mio conto in banca!" C'è na domanda dedicata a questo , ma il riepilogo è due cose: è necessaria la tua carta di credito per l'accesso (un secondo fattore di autenticazione) e il chip ti blocca dopo 3 tentativi.

I siti Web sono molto più indulgenti, quindi un utente malintenzionato può fare più tentativi. Inoltre, prima o poi si prevede che i siti Web vengano hackerati, dopodiché l'attaccante può violare la password con hash in modo efficiente.

La maggior parte dei siti Web memorizza la password con una sorta di crittografia unidirezionale, che si chiama hashing. Non esiste una chiave di decrittazione. Applicando di nuovo lo stesso algoritmo di hashing, il sistema può confrontare la password (appena digitata) con quella memorizzata (dal database) e sapere se sono uguali. Ma con solo il database, non è possibile conoscere la password originale.

In passato, i metodi di hashing veloce erano comuni. Ciò significa anche che un utente malintenzionato, che ha ottenuto l'hash, può far eseguire al suo computer miliardi di tentativi al secondo su un computer da gioco medio. Supponendo dieci miliardi di tentativi al secondo, una password casuale di 11 caratteri dura per circa 165 anni. E questo è solo un giocatore, immagina di avere accesso ai dati aziendali a cui alcuni concorrenti stranieri sono interessati: con un po 'di potenza computazionale aggiuntiva, quei 165 anni si trasformano improvvisamente in alcuni mesi di cracking. E il prossimo anno ci saranno nuove CPU più veloci allo stesso prezzo, riducendo di nuovo la forza. Ecco perché dodici caratteri sono il minimo per una password complessa: quel carattere in più aggiunge letteralmente diecimila anni al tempo di cracking (165 anni contro 10 230 anni) ed è sicuro per il prossimo futuro.

A proposito, calcolare la sicurezza della password è semplice: variations^length / guesses_per_time. Le variazioni sono quanti elementi unici ci sono e la lunghezza è il numero di elementi che usi. Quindi, se usi solo cifre, ci sono dieci variazioni (da 0 a 9). Se si utilizzano parole di un dizionario, è comunque presente che molte parole sono presenti nel dizionario. Quindi, guesses_per_time è la velocità con cui pensi che l'attaccante possa rompersi. Un valore ragionevole è di decine di miliardi al secondo.
Esempio: 10^14/10e9/3600 mostra quante ore sarebbero necessarie per decifrare un codice di 14 cifre, quando si assumono 10e9 tentativi al secondo (ci sono 3600 secondi in un'ora, 60 * 60).

Alcuni siti Web sono intelligenti e utilizzano un algoritmo di hashing lento. Non possiamo dire quali sono, perché il server esegue l'hash, quindi non è possibile vederlo dall'esterno. In questo caso, una singola ipotesi richiederà molto più tempo per il calcolo (per il server, ma anche per un utente malintenzionato). In un caso ragionevole, un attaccante ben finanziato può fare solo cinquantamila ipotesi al secondo, nel qual caso sarebbe sufficiente una password di 9 caratteri. Ma 9 personaggi casuali sono già super difficili da memorizzare per molti account diversi, soprattutto se non li usi tutti regolarmente. Pertanto, è necessario un gestore di password per avere davvero sicurezza nelle password.

Ma è davvero necessario disporre di password univoche? Perché non riutilizzare password complesse su alcuni siti diversi? Perché i siti Web vengono spesso compromessi. Non è un evento quotidiano, ma prova a inserire i tuoi indirizzi e-mail in haveibeenpwned.com : succede sicuramente molto. Ecco come gli account vengono hackerati più frequentemente: riutilizzo della password. I compromessi dei gestori di password sono molto meno comuni.

0
Luc