Sto lavorando per rafforzare la sicurezza per il livello auth della mia app e attualmente sto facendo una chiamata sulla complessità che richiedo per le password.
Esiste una raccomandazione "standard" per la complessità?
Il requisito attuale è così:
8 char minimum
a-z
At least one number
At least one of the following: !@#$%^&*
Quindi, se qualcuno dovesse scegliere test123!
come propria password, la mia app consentirebbe loro di usarlo come password.
Si tratta di "due volte" la complessità richiesta dalla mia banca per l'accesso al mio account. Permettono ancora 5 char, a-z, 0-9
per le password, il che mi sembra pazzesco. Ma anche loro non sembrano soffrire di un'epidemia di attacchi, quindi deve ostacolare gli hack in modo perfetto, "in qualche modo".
Question: As an infosec professional, what minimum complexity would you require Gmail to have if it was your call?
Come utilizzare efficacemente uno stimatore di entropia?
Ho appena scoperto cos'è un Entropy Estimator
e sono dei wowser fantastici. Non sono stato così influenzato dal software da molto tempo.
No, non ho inserito nessuna delle mie password in nessuna di esse.
No, non capisco davvero come funzionano.
E non sono del tutto sicuro di come usare le informazioni che mi danno. Ad esempio, ho inserito test123!
nello stimatore GRC Password Haystacks
e ho ottenuto questi risultati:
Search Space Depth (Alphabet): 26+10+33 = 69
Search Space Length (Characters): 8 characters
Exact Search Space Size (Count): 521,354,232,876,120
Search Space Size (as a power of 10): 5.21 x 1014
**Time Required to Exhaustively Search this Password's Space:**
Online Attack: (100,000 guesses per second) 1.66 hundred centuries
Offline Fast Attack: (100 billion guesses per second) 1.45 hours
Massive Cracking Array: (100 trillion guesses per second) 5.21 seconds
Quindi, apparentemente quelli sembrano risultati piuttosto buoni. La probabilità che uno dei miei utenti sia preso di mira da un blackhat con un% dimassive cracking array
a loro disposizione sembra altamente improbabile.
Ho anche implementato il meccanismo di limitazione della velocità e un meccanismo di blocco della lista nera con la seguente configurazione:
- IP is used as the ID
- Rate-Limited with a max of 10rps from any given IP
- A maximum of 5 failed login attempts are allowed every 60s before an IP is blacklisted
- Blacklist duration is 5 minutes
Question: Considering the defences I've put in place, should I consider my login endpoint secure if any user decides to pick
test123!
as their password?
Che dire di un attacco di dizionario?
Ovviamente test123!
verrà provato molto vicino all'inizio dell'attacco.
Se concedo 5 tentativi ogni 60 s prima di mettere in blacklist un IP, e la durata della lista nera è di 5 minuti, sembra ragionevole che un determinato attaccante proverà a limitare le proprie ipotesi a 5 al minuto e quindi sarebbe solo prendili più a lungo per afferrare questo frutto a bassa attaccatura, o se davvero, davvero volevano, potevano prendere un nuovo IP ogni 5 tentativi, o mettere insieme 10.000 macchine per attaccare con 5 tentativi ogni minuto per accelerare le cose. Altamente improbabile, ma non impossibile.
E questo mi porta a credere che non ci sia davvero alcun modo per proteggere da un attacco di dizionario, tranne per forzare Passwords of Unusual Complexity
sui miei utenti, cosa che davvero non voglio fare.
E considerando che Facebook, Google, ecc. non sembrano avere questi requisiti, ci deve essere un modo per proteggersi da un attacco di dizionario a lungo termine, a bassa ipotesi al secondo? O è solo che nessuno si preoccupa davvero di farlo perché non ne vale la pena?
Question: Is there any reliable way to protect from dictionary attacks? Would adjusting the params of my rate-limit and blacklist modules improve the security of my endpoint?
Grazie in anticipo per qualsiasi aiuto o opinione.