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)