I requisiti di complessità delle password riducono la sicurezza limitando lo spazio di ricerca?

11

Ho letto che i requisiti di complessità delle password rendono le password più facili da indovinare tramite attacco di forza bruta. La ragione di ciò è che i requisiti di complessità riducono effettivamente lo spazio di ricerca per l'ipotesi della forza bruta eliminando possibili password. Vorrei prendere ulteriormente questa idea suggerendo che le password generate dagli utenti umani tendono a soddisfare esattamente i requisiti di complessità. Cioè, se il requisito è la password deve essere di almeno 8 caratteri e contenere almeno 1 carattere numerico, quindi le password che le persone tendono a venire conterranno esattamente 8 caratteri e conterranno esattamente 1 carattere numerico. Ciò avrebbe l'effetto di ridurre lo spazio di ricerca al punto da rendere quasi banale indovinare le password create in questo modo.

La mia domanda è questa:

È vero che i requisiti di complessità delle password hanno l'effetto di rendere le password più facili da indovinare, riducendo il numero di password consentite e riducendo così la sicurezza complessiva? Punti extra per collegamenti a analisi e discussioni dettagliate.

Questa è una domanda importante perché se è vera, è nostra responsabilità, in quanto programmatori, respingere la gestione dei prodotti quando vengono proposti questi tipi di requisiti.

    
posta 26.04.2012 - 18:26
fonte

5 risposte

13

La risposta breve è sì, ma non proprio. I requisiti di complessità della password riducono leggermente lo spazio di ricerca limitando il numero di possibili password. Tuttavia, gli utenti non selezionano le password in modo uniforme sull'insieme di tutte le password possibili (sono distorte verso parole, date, ecc ...).

Analisi combinatoria

Per semplificare le cose, supponiamo di aver chiesto all'utente una password alfanumerica di otto caratteri, senza distinzione tra maiuscole e minuscole (/ ^ [a-z0-9] {8} $ / se vuoi).

Senza un requisito di complessità, ci sono 36 ^ 8 possibili password. Questo è approssimativamente 2.800 miliardi di possibilità.

Supponiamo che tu imponga il requisito che esattamente un carattere sia una cifra. Ci sono solo dieci scelte di cifre, ma potrebbe apparire in una delle otto posizioni. Questo lascia 26 ^ 7 * 10 * 8 possibilità, o circa 640 miliardi di possibilità.

Naturalmente, è improbabile che gli utenti utilizzino simboli strani nelle loro password senza requisiti di complessità. Se in questo caso i numeri sono il nostro stand-in per i simboli strani, ciò significa che ogni posizione ha solo 26 opzioni probabili. Questo lascia 26 ^ 8, o circa 208 miliardi di password possibili. La password con il requisito di complessità è più di 3 volte migliore dell'input senza restrizioni di un utente con pregiudizi.

Riepilogo

Quindi sì, i requisiti di complessità riducono lo spazio delle possibili password. Tuttavia, aiutano quando c'è un pregiudizio noto verso un piccolo sottoinsieme delle possibili password. I reali requisiti di complessità non limitano gli utenti a un singolo carattere speciale e sono disponibili più di dieci caratteri speciali. Il vantaggio dei reali requisiti di complessità (inclusi punteggiatura, lunghezza illimitata e "almeno uno" requisiti) rispetto a consentire agli utenti di inserire qualsiasi password (possibilmente distorta) è molto maggiore di quanto descritto qui.

    
risposta data 26.04.2012 - 18:51
fonte
9

Il modo migliore per difendersi dagli attacchi di forza bruta è una risposta di autenticazione lenta. Se una singola ipotesi impiega 1-5 secondi per convalidare e rispondere, il tempo necessario affinché un attacco di forza bruta abbia successo diventa rapidamente troppo lungo per essere pratico su larga scala.

Tuttavia, i database di password rubate hanno dimostrato che alcune password sono molto più probabili di altre. L'utilizzo di attacchi basati su password comuni o parole comuni crea anche un attacco efficace.

Alcune regole di complessità possono ridurre l'efficacia di questi tipi di attacchi con password eliminando parole e password comuni, ma spesso gli stessi siti hanno utility di recupero password facili da violare.

E, naturalmente, gli utenti possono usare la stessa password altrove, e avere l'altro account compromesso. La sicurezza della password non è un problema semplice con una soluzione semplice. L'elemento più debole di un sistema di sicurezza definisce la sicurezza dell'intero sistema e i sistemi software hanno molti elementi, inclusi elementi umani, che sono vulnerabili.

    
risposta data 26.04.2012 - 18:35
fonte
4

La risposta è che non è così semplice. È importante comprendere tutti gli approcci per attaccare le password prima di poter affermare che il complesso è buono o cattivo, poiché i diversi requisiti mirano a scoraggiare diversi tipi di attacchi.

Come sottolineato, con due password ugualmente lunghe dello stesso set di caratteri, i requisiti di complessità della password riducono lo spazio di ricerca complessivo. Ad esempio, data una password ASCII a 1 carattere che deve includere una lettera o una password ASCII a 1 carattere che può essere qualsiasi cosa, è più facile indovinare la prima password.

Ma i requisiti relativi ai caratteri della password non dovrebbero essere utilizzati in caso di esclusione della lunghezza. Si consideri il seguente requisito minimo di password set:

  1. 8 caratteri ASCII stampabili = circa 100 ^ 8 = 10 ^ 16 valori possibili
  2. 16 cifre ASCII stampabili = 10 ^ 16 valori possibili
  3. 9 caratteri ASCII stampabili con almeno 1 numero, 1 lettera (di ogni caso) e 1 simbolo = ((10 numeri) (52 lettere) (30 simboli) * 100 ^ 6) = 10 ^ 16

[NOTA: so che 100 non è il numero vero, semplifica la matematica]

Quindi vediamo che tre requisiti di password diversi sono ugualmente forti, in termini di requisiti di forza bruta. Ma non abbiamo fatto nulla sugli attacchi di dizionario. In un attacco di dizionario, testiamo semplicemente un elenco di parole ben note e vediamo se qualcuna di esse è la password. Rendi qualcuno più lungo e lo hai reso più strong degli altri.

Il requisito della password 1 non fa nulla per prevenire gli attacchi del dizionario e 3 fa poco. È possibile utilizzare la parola "previene", che è estremamente probabile che venga trovata in un dizionario. Puoi guardare le liste di password reali che sono trapelate su internet (o creare il tuo servizio popolare e raccogliere password) e scoprire password popolari per ottimizzare il tuo attacco per i valori più probabili (es. Se tutti a New York scelgono una variante di "Yankee1!", Quindi il tuo attacco inizierà provando le varianti di "Yankee1!").

Quindi la prossima cosa naturale da fare è prevenire le password che sono parole del dizionario. Ciò riduce il numero di password valide, ma rimuove anche l'ottimizzazione disponibile per l'utente malintenzionato. Rendi la password un po 'più lunga e puoi mantenere la password senza parole del dizionario altrettanto strong o più strong.

Ma questo non fa nulla per le password di parole leet. Non troverai P4 $$ w0rd in un dizionario, ma è una variazione abbastanza standard che il test degli strumenti per forzare brute. Prendi ogni parola nel dizionario, eseguila attraverso leet speek, anteponi, postpend, e inserisci uno o due altri caratteri in ogni posizione.

È quindi possibile introdurre requisiti di complessità della password per limitare questi tipi di attacchi: più simboli, più numeri e una (ancora una volta) password più lunga. Qualcosa che richiede uno strumento di gestione delle password da tracciare. È dura da forza bruta (perché è sempre più lunga) ed è difficile ottimizzare perché non è in un dizionario o come qualcosa in un dizionario).

Ma cosa succede quando si interrompe una particolare password e l'utente cambia in una nuova? Gli utenti spesso cercano di fare la cosa facile e scelgono una password facile da ricordare, una molto simile alla precedente. P4 $$ w0rd1 diventa P4 $$ w0rd2. Ma l'attaccante aggiungerà semplicemente P4 $$ w0rd1 al suo dizionario e testerà automaticamente P4 $$ w0rd2. Pertanto, il riutilizzo delle password è spesso vietato.

Ma il nocciolo della questione è: "è adatto alle esigenze dell'organizzazione?" Hai bisogno di una password abbastanza strong da essere sicura per tutto il tempo che è utile (ad es. È cambiata o l'account è disabilitato), dati tutti gli altri controlli di compensazione di cui non abbiamo nemmeno iniziato a parlare. Se la velocità di forzatura bruta è lenta, o si ottengono solo poche possibilità, le password più deboli sono corrette (ad esempio IronKey consente qualcosa come 17 tentativi e richiede l'accesso fisico, quindi una password 10 ^ 16 è più che abbastanza strong).

    
risposta data 26.04.2012 - 18:58
fonte
1

Quello che vorrei aggiungere alla tua domanda è: I requisiti di complessità delle password riducono la sicurezza limitando teoricamente lo spazio di ricerca ?, o praticamente?

Voglio dire,
Per quanto ne so, da un tecnico e amp; punto di vista pratico politiche di complessità delle password NON escludere set di caratteri ma imporre l'utilizzo di alcuni di essi, utilizzando le politiche di complessità delle password, si impone agli utenti di utilizzare almeno 4 caratteri di set di caratteri diversi, ad esempio: la password deve essere utilizzata a almeno tre numeri (set di caratteri del numero), una maiuscola (set di lettere maiuscole), due simboli (set di caratteri speciali) e amp; una piccola lettera (set di caratteri piccoli caratteri).

Non imponi le esclusioni, ad esempio: "Non devi utilizzare lo spazio nelle tue password" o "Non sei autorizzato a utilizzare Numbers nella tua password". Quindi non stai riducendo lo spazio dei caratteri.

In conclusione, penso che la complessità delle password non riduca lo spazio di ricerca.

Ma da un pratico e amp; punto di vista del mondo reale il fatto è:
Stiamo lavorando con Humans & molti di loro sono troppo pigri per pensare, generare e memorizzare una buona o almeno una password standard.
In pratica, le PASSWORD USATE effettive appartengono a uno spazio di ricerca molto limitato: Piccole lettere e amp; Numeri (pensando a una password generata casualmente), ma nemmeno lo spazio completo. Lo spazio di ricerca reale è molto più piccolo nel mondo reale.
Lo spazio di ricerca reale è la somma dei database delle password comuni + la pigrizia dei tuoi utenti!
nomi di computer + 123, nome del servizio in esecuzione sull'host + 12345 & molte altre stupide password !!!
Non hai idea di quali posti potrei testare con successo con queste password sui loro desktop remoti, FTP, Roots, Domain Admins ecc. & Non sto parlando di SOHO, sto parlando di organizzazioni aziendali, fornitori di appliance firewall ecc Per un esempio globale, COMODO. Una delle cose più importanti che ha aiutato l'intruso nel suo obiettivo era una password debole.

Quello che voglio dire è che senza le politiche di complessità della password, lo spazio reale non viene utilizzato, ti rimando ad un esempio che ho letto molto tempo fa in "Password perfette".

If the password possibility space is the whole world, 98% of the passwords are in the area of 1 square meter of your backyard!

Quindi secondo me, la complessità della password non riduce lo spazio di ricerca perché non esclude alcun set di caratteri , ma in realtà INCREMENTE la ricerca spazio imponendo l'uso di altri set di caratteri che non vengono usati normalmente.

P.S: per un suggerimento sulla complessità della password, una buona politica di implementazione della complessità della password DEVE prendere seriamente ENTROPY della password.

    
risposta data 28.12.2012 - 08:59
fonte
1

Sì, i requisiti di complessità della password riducono lo spazio di ricerca e pertanto rendono le password più semplici , ma allo stesso tempo possono anche aumentare la sicurezza . Perché? Per capire questo, è necessario capire che non esiste una password sicura (o non sicura). Una password è solo sicura / non sicura in relazione a le nostre ipotesi sul metodo di attacco dell'attaccante.

Per capire questo, considera il seguente esempio. Se scegli a caso una stringa di lettere di 0 <= lunghezza < n da un alfabeto di dimensione d , ci sono esattamente

d^0 + d^1 + ... + d^{n-1} = (d^n - 1)/(d-1)

possibilità. Se hai scelto una stringa di lunghezza l < n , e l'attaccante sceglie una stringa di lunghezza n uniformemente casuale , con probabilità (d-1)/(d^n - 1) sceglierà la tua password. Nota che questa probabilità non dipende dalla lunghezza della tua password ma dalla lunghezza massima che l'attaccante considera.

Quindi abbiamo un apparente paradosso: più password vengono controllate dall'attaccante, più sicura diventa la password . Certo, è un'assurdità. Infatti, se un utente malintenzionato tenta di decifrare la tua password, non sceglierà solo una una password a caso, ma le passerà tutte in sequenza.

Quindi il modo corretto di chiedere la sicurezza della tua password è: quanto è probabile che un utente malintenzionato indovini la tua password entro k ipotesi.

Se si presume che l'utente malintenzionato esegua tutte le password in ordine lessicografico, la password zzz...z è oggettivamente la password più sicura e deve essere utilizzata da ogni utente. Questo è ridicolo, ma solo ridicolo come il nostro assunto.

Un approccio più ragionevole è quello di assumere che l'attaccante percorra tutte le stringhe di lunghezza < n in un ordine casuale. Con una probabilità di

1 - (N-1)/N * (N-2)/(N-1) * ... * (N-k)/(N-k+1) = 1 - (N-k)/N

avrà trovato la tua password (presumendo che l'attaccante continui a indovinare anche se l'ha trovato), dove

N = (d^n - 1)/(d-1)

è il numero di tutte le stringhe di lunghezza < n .

Ancora una volta, questo numero non dipende affatto dalla lunghezza l della tua password. Pertanto, la password vuota è sicura quanto ogni altra password .

Ancora una volta, questo è ridicolo: l'attaccante probabilmente non sarà così stupido da testare tutte le possibilità in modo uniforme e casuale. Probabilmente passerà prima attraverso un piccolo sottoinsieme di casi speciali (password di piccola lunghezza, stesse password di lettere, ...) e poi testerà il resto in ordine casuale uniforme.

Riassumendo: "La sicurezza di una password" è solo una quantità soggettiva assegnata ad essa, in base alle tue convinzioni sull'attaccante. Poiché la maggior parte dell'uso crede che gli attaccanti controllino prima le "password semplici", quelle sono soggettivamente insicure. In modo insicuro, infatti, è ragionevole ridurre lo spazio di ricerca un po 'escludendo queste password.

    
risposta data 05.04.2017 - 14:07
fonte

Leggi altre domande sui tag