hashing della password utilizzando le funzioni hash

1

Sono curioso di sapere due fatti riguardanti l'hashing delle password MD5. Per quanto ne so, MD5 è più veloce e più vulnerabile alla collisione rispetto ad altre funzioni di hash come SHA-1, SHA-3 ecc.

Per prevenire attacchi di dizionario, attacchi a forza bruta e attacchi con tavole arcobaleno, diverse persone hanno sviluppato tecniche diverse nel tempo.

Ad esempio, una delle tecniche è l'aggiunta di alcuni messaggi casuali con le password originali per prevenire l'attacco della tabella arcobaleno e l'uso di hashing ricorsivo o iterativo per rallentare l'intero hashing della password.

Quindi i valori hash sono memorizzati in un database. Un utente inserisce il nome utente e la password nella schermata di accesso e quindi nel sistema client-server calcola immediatamente il valore dell'hash e lo abbina con i valori dell'hash precedentemente memorizzati nel database.

Presento la mia curiosità sotto forma di due domande.

  1. L'hashing delle password non sta rallentando più lentamente usando la ricorsione o l'iterazione come se il login fosse più lento per gli utenti?

  2. Le tecniche di hashing della password sono generalmente riservate o aperte agli altri.

posta Shahed-al-mamun 03.02.2017 - 06:06
fonte

2 risposte

4

For example,one of the techniques is adding some random messages with the original passwords to prevent rainbow table attack

Rendere più lenta la funzione di hash (aumentando il fattore di lavoro ) rende più difficile interromperlo, ma l'aggiunta di un salt casuale non rende l'hash più difficile irrompere, non è quello che dovrebbe fare.

Quello che fa è proteggere due o più utenti che hanno tutti la stessa password. Un hash dello stesso input avrà sempre lo stesso output, quindi tutti gli utenti con lo stesso hash nel database devono avere la stessa password. Se ne crei uno, li ottieni tutti.

L'aggiunta di un salt casuale a ciascuna password rende gli hash diversi, quindi la tabella dell'arcobaleno si incrina solo uno alla volta.

Isn't making password hashing slower using recursion or iteration same as making the login slower for the users?

Sì.

Se la verifica della password era un hash veloce, gli aggressori possono controllare rapidamente molte password e trovare quella giusta. Quindi le funzioni di hash per le password dovrebbero essere lente da proteggere da questo. E il loro uso normale è una persona che digita e guarda una schermata di accesso, in attesa di mezzo secondo, una volta, non è un cattivo compromesso.

Alcuni sono lenti in base alla progettazione (bcrypt) e alcuni sono lenti eseguendo un hash veloce più e più volte (pbkdf2).

Scrypt è una variante anche di questa idea - un hash che rende il calcolo molto lungo e ci vuole anche molta memoria, quindi cercare di attaccarlo velocemente usando più computer è costoso.

Il link illustra questo compromesso con esempi.

Are password hashing techniques made generally secret or open to others.

Generalmente aperto. Un hash più vecchio (ora deprecato) era RC4, e quello era uno sviluppo proprietario della società RSA Security, e non è mai stato rilasciato ufficialmente , ma è trapelato, è stato confermato e ampiamente utilizzato comunque.

Gli algoritmi di hashing delle password comuni (lenti) sono aperti:

  • bcrypt , che è stato rilasciato pubblicamente e viene utilizzato in OpenBSD, che è open source.

o standard ufficiali tramite Internet Engineering TaskForce (IETF):

Gli algoritmi di hashing veloci comuni (utilizzati in SSH, IPSEC, TLS) sono anch'essi standard aperti, ad es.

e c'è anche RFC 6234 che dice " Gli Stati Uniti d'America hanno adottato una suite di Secure Hash Algoritmi (SHA) [..] vale a dire SHA-224, SHA-256, SHA-384 e SHA-512. Questo documento rende il codice open source che esegue queste funzioni di hash SHA comodamente disponibili per la comunità Internet. ".

Alternative a PBKDF2 Argon2 e Lyra2 sono open source pure.

Questo non vuol dire che le persone non possono creare algoritmi di hashing proprietari o basare gli hash delle password sugli algoritmi veloci, ma [Microsoft fa uso di MD5] negli hash delle password di Active Directory e molte aziende utilizzano PBKDF2 .

(In effetti, sarei curioso di trovare le funzioni di hash proprietarie usate nei sistemi popolari, non posso pensare che ne conosca nessuna)

    
risposta data 03.02.2017 - 08:52
fonte
2

Isn't making password hashing slower using recursion or iteration same as making the login slower for the users?

Lo è. Ma mentre un ritardo di 500 millisecondi quando si immette una password è accettabile per un utente. Ciò significa anche che un attacco di forza bruta viene considerevolmente rallentato e può controllare solo poche password al secondo. Questo è un buon compromesso: quasi non visibile per l'utente legittimo, ma che rallenta enormemente l'aggressore.

Are password hashing techniques made generally secret or open to others.

Si raccomanda di utilizzare tecniche che hanno resistito a un'analisi più approfondita che di solito significa che la tecnica è aperta. Questo è lo stesso con una buona crittografia: gli algoritmi sono aperti mentre i tasti non lo sono.

Per maggiori dettagli sull'hash delle password, consulta Come fare in modo sicuro le password di hash? .

    
risposta data 03.02.2017 - 06:31
fonte

Leggi altre domande sui tag