Perché la forza della password è spesso sottostimata e incerta nel contesto dell'hash della password?

4

Un aspetto della sicurezza mi ha infastidito per molto tempo: perché c'è una certezza positiva sull'importanza degli algoritmi e dei sali di hashing, ma la forza della password non viene mai menzionata o considerata una questione piuttosto "filosofica"?

Per me, ci sono tre componenti di un'implementazione hash corretta:

  1. Algoritmo lento e senza collisioni.
  2. Buona quantità di sale casuale
  3. strong, password a prova di dizionario.

Un errore in qualsiasi componente renderà inutile l'intera cosa dell'hashish. Quindi, per me, non ha senso fare una scena sull'uso di MD5, ma poi permettere loro di usare 12345 come password . Per me, la forza della password è inseparabile e strettamente tecnica, non meno importante degli altri due aspetti.

Tuttavia, quando si tratta della semplice domanda specifica, non esiste una risposta particolare!
Vuoi un suggerimento sull'algoritmo? Al vostro servizio!
Vuoi sapere come ottenere un buon sale? Ci sono mille modi!
Vuoi sapere quale dovrebbe essere la forza minima della password accettabile? Err ... sai, c'è un trade-off e alcuni affari politici del genere, quindi "usa il meglio che puoi".

Ma esiste una definizione tecnica e pratica per la tecnologia "usa il meglio che puoi"? Proprio come uno sugli algoritmi di hashing?

O, in altre parole, perché c'è sempre un consiglio per l'algoritmo di hashing e un certo ("usa questo"), ma non c'è mai un consiglio per la forza della password (" consentire almeno tale forza o comprendere il rischio ")? O sempre un'enorme enfasi sull'algoritmo che dovrebbe essere usato e nessuna preoccupazione per la forza della password. Non è possibile lasciare l'impressione che l'algoritmo di hash da solo sia sufficiente, lasciando al povero programmatore una falsa sensazione di sicurezza?

    
posta Your Common Sense 15.02.2014 - 00:39
fonte

3 risposte

2

L'hashing delle password ottiene molta copertura nelle guide di sicurezza e non c'è una buona ragione per questo. L'interruzione dell'iniezione SQL e dei caricamenti di file eseguibili è molto più importante. Penso che la ragione di tante discussioni sia perché utilizza tecnologie interessanti (come bcrypt) e poche librerie di autenticazione lo fanno in modo predefinito.

La best practice per l'archiviazione delle password che menzioni non è universalmente accettata, sebbene sia strongmente promossa dagli utenti di questo sito. In particolare, l'utilizzo di un algoritmo di hash lento non è generalmente possibile su siti ad alto traffico poiché il carico di elaborazione è troppo grande. C'è un documento interessante qui

L'archiviazione delle password è generalmente invisibile agli utenti. Sia che si usi MD5 o scrypt non salato, un utente non vedrà alcuna differenza. La forza della password è altamente visibile agli utenti e, in particolare, fa parte del processo di registrazione che la maggior parte dei siti desidera mantenere il più semplice possibile.

Qualcosa che è piuttosto universale è che avere più costi di sicurezza è qualcosa che ti costa. Ed ecco la differenza tra memorizzazione delle password e forza. L'archiviazione più sicura delle password costa agli amministratori del sito, ma puoi sempre acquistare altro hardware, ecc. L'applicazione di una maggiore complessità delle password costa agli utenti del sito e andranno via se non gli piace.

Tutte le scelte di sicurezza dovrebbero essere basate sulla comprensione del rischio. Non hai bisogno dello stesso livello di sicurezza per Angry Birds come per l'online banking, o addirittura per le armi nucleari. Negli ambienti commerciali, questo tipo di approccio basato sul rischio non viene generalmente fatto per le difese che costano solo agli amministratori del sito, ma è fatto pesantemente per tutto ciò che riguarda l'esperienza dell'utente.

Per la sicurezza della password, il mio consiglio è:

  • Bassa sensibilità - almeno 6 caratteri
  • Sensibilità media - O: almeno 8 caratteri e un mix di lettere, numeri e segni di punteggiatura) O almeno 16 caratteri (a scelta dell'utente)
  • Alta sensibilità: utilizza l'autenticazione a più fattori

Tuttavia non dipende solo dalla sensibilità del sito. C'è una differenza tra attacchi online e offline. La password di un sito Web non deve essere così strong, perché un utente malintenzionato può solo tentare di indovinarlo online ed è possibile utilizzare un criterio di blocco per rallentare questi attacchi. Tuttavia, una password TrueCrypt può essere attaccata offline (se l'utente malintenzionato ha l'unità), quindi devono essere molto più potenti.

I criteri di blocco della password sono un'altra parte importante del buon funzionamento dell'autenticazione della password, ma non ottengono la stessa copertura dell'archiviazione della password.

Più guardi le password in dettaglio e ti rendi conto che sono un meccanismo di autenticazione piuttosto difettoso. Tutto questo consiglio sulle migliori pratiche per rendere le password più sicure possibile è come cercare di riattaccare l'ala di un aereo usando del nastro adesivo.

    
risposta data 15.02.2014 - 08:23
fonte
0

Per farla breve, hai il controllo completo su come hai cancellato le password. Ma oltre un punto molto limitato, non hai il controllo su quanto saranno forti le password dei tuoi utenti.

Le migliori pratiche esistono nell'hash delle password in modo da poter minimizzare l'effetto delle password deboli. I sali dovrebbero essere unici in modo tale che lo sforzo di cracking di una password non contribuisca allo sforzo di crackare gli altri. Gli hash lenti come bcrypt o scrypt devono essere utilizzati per rallentare un utente malintenzionato che esegue iterazioni tramite password. Questi algoritmi aumentano la difficoltà di crackare le password con l'equivalente di almeno alcuni bit di entropia.

D'altra parte, il meglio che puoi fare praticamente con le password stesse è limitare la loro lunghezza minima. Richiedere simboli probabilmente si traduce in un'entrata extra minima, in quanto un numero enorme di utenti aggiungerà semplicemente un punto esclamativo alla fine della propria password. Alla fine della giornata, ciò che rende una buona password è entropy , e gli utenti sono notoriamente cattivi a venire con le password con tutte le loro quantità, ma minime. Peggio ancora, non è possibile testare effettivamente l'entropia: è una misura del mezzo con cui la password è stata generata e non direttamente misurabile sulla password stessa. "I controllori del rafforzamento della password" di solito sono piuttosto negativi e in genere non fanno altro che frustrare gli utenti che cercano di utilizzare il sistema per utilizzare la loro password preferita.

Quindi facciamo il meglio che possiamo sulle parti del processo che possiamo controllare e cerchiamo di limitare gli aspetti negativi delle parti che non possiamo.

    
risposta data 15.02.2014 - 01:09
fonte
0

It bugs me a long time already, why there is positive certainty about hashing algorithm and salt importance, but password strength either never mentioned at all or considered rather "philosophical" matter?

Or, in other words, why there is always a recommendation for the hashing algorithm, and a certain one ("use this"), but there is never a recommendation for the password strength ("allow at least such strength or understand the risk")?

  • È possibile definire e misurare in modo significativo i difetti negli algoritmi di hashing (inclusi i sali) indipendentemente da tutti gli altri fattori
  • Le tecniche di hash possono essere pubblicate e revisionate da esperti
  • Le scelte dell'algoritmo sono fatte da noi, come professionisti che costruiscono sistemi.
  • Il business / proprietario / setter dei requisiti / firmatario del controllo:
    • non si preoccupa affatto degli algoritmi
    • si preoccupa solo che l'algoritmo non sia così lento da incitare i reclami degli utenti
    • si preoccupa solo che le regole della password non incitino i reclami degli utenti
    • (raramente) si preoccupa solo che l'algoritmo soddisfi requisiti legali, normativi, di certificazione, standard o simili
  • La prima deviazione standard o due di utenti:
    • si preoccupa solo del fatto che l'algoritmo non è così lento da infastidirli
    • si preoccupa solo del fatto che le regole della password non sono così complesse da infastidirle
      • dover ricordare qualcosa li infastidisce
      • non aver digitato correttamente la loro password li infastidisce
      • non riuscire ad accedere la prima volta li infastidisce
      • dover digitare troppi caratteri li infastidisce
      • non essere in grado di utilizzare la loro password preferita li infastidisce
      • avendo regole che non sono già utilizzate per infastidirle
  • A differenza degli algoritmi, le password pubblicate vengono rese immediatamente deboli, quindi non possono essere sottoposte a revisione paritaria
  • Mentre una password in chiaro in sé e per sé (cioè conoscendo solo la stringa inserita dall'utente) può sempre essere giudicata "debole", non può mai essere giudicata "strong".
    • Vedi Devo rifiutare ovviamente le password scadenti?
    • "password" è ovviamente debole.
    • "5f4dcc3b5aa765d61d8327deb882cf99" * è quasi esattamente debole, ma sembra strong (lunga, minuscola [a-f] e numeri).
      • nota che è abbastanza lungo che la lunghezza supererebbe il set di caratteri limitato se fosse in realtà una stringa crittograficamente casuale.
    • "NWY0ZGNjM2I1YWE3NjVkNjFkODMyN2RlYjg4MmNmOTk=" ** è anche quasi altrettanto debole, ma sembra ancora più strong (lungo, maiuscolo, minuscolo, numeri, simboli).
  • Non conoscerai mai e poi mai le precise liste di parole e le regole che useranno un attacco di dizionario basato su regole. Inoltre, non sarai mai aggiornato sulle ultime password passate da altre violazioni come l'autore dell'attacco che ha fatto l'altra violazione (o, probabilmente, i suoi amici del forum).

P.S. L'utilizzo di un algoritmo di hashing di grandi dimensioni su una password di 12345 trasmette poca sicurezza aggiuntiva, ma l'uso di una passphrase puramente casuale da 1000 byte trasmette poca sicurezza aggiuntiva se è memorizzato anche in chiaro. La catena è strong quanto il suo anello più debole!

* MD5 ("password")

** Base64 (MD5 ("password"))

    
risposta data 15.02.2014 - 21:37
fonte

Leggi altre domande sui tag