Quale sarebbe la tua raccomandazione per la sostituzione di un approccio MD5 per l'archiviazione di password in un database MS-SQL?
Quale sarebbe la tua raccomandazione per la sostituzione di un approccio MD5 per l'archiviazione di password in un database MS-SQL?
Penso: SHA256, SHA512 sono più sicuri in questo momento.
As of 2009, the two most commonly used cryptographic hash functions are MD5 and SHA-1. However, MD5 has been broken; an attack against it was used to break SSL in 2008. The SHA-0 and SHA-1 hash functions were developed by the NSA.
In February 2005, a successful attack on SHA-1 was reported, finding collisions in about 2^69 hashing operations, rather than the 2^80 expected for a 160-bit hash function.
In August 2005, another successful attack on SHA-1 was reported, finding collisions in 2^63 operations. Theoretical weaknesses of SHA-1 exist as well, suggesting that it may be practical to break within years.
New applications can avoid these problems by using more advanced members of the SHA family, such as SHA-2, or using techniques such as randomized hashing that do not require collision resistance.
Vedi Wikipedia per ulteriori informazioni.
Nel lontano 1978, Robert Morris e Ken Thompson pubblicarono lo schema di password Unix "crypt" con due innovazioni cruciali per l'hashing delle password: conta i sali e l'iterazione. Senza sale, gli hash sono molto vulnerabili alle tabelle hash e tavoli arcobaleno . Anche con un sale, sono necessarie anche iterazioni per impedire la creazione bruta di quasi tutte le password con 8 o meno caratteri, per non parlare delle semplici variazioni delle parole del dizionario. Quanto tempo ci vuole per generare effettivamente le tavole arcobaleno ?
Quindi, per favore usa un hash reale progettato per le password, ad esempio uno lento e salato. Alcuni buoni candidati sono:
Puoi accordarli per non occupare troppo tempo del server, ma le persone non si autenticano molto spesso, quindi non essere avaro.
Vedi anche: Password hashing - Sicurezza IT
Il consiglio più importante è quello di migrare a un algoritmo progettato per l'hashing della password: bcrypt, PBKDF2 o scrypt. Questi algoritmi sono progettati per soddisfare le esigenze delle password di hashing; per esempio, per dissuadere gli attacchi del dizionario, usano l'iterazione per assicurare che l'hashing sia lento e per scoraggiare gli attacchi di amortizzazione, includono un salt nell'hash.
Non è necessario migrare da MD5 a SHA. Potresti aver sentito che MD5 è rotto. Questo è vero, ma non in un modo che mette in pericolo MD5 per l'hashing della password. Gli attacchi a MD5 sono sulla sua resistenza alle collisioni. Tuttavia, l'unidireità di MD5 è ancora strong. Per l'hashing della password, tutto ciò di cui hai bisogno è unidirezionale. Pertanto, non è necessario migrare da MD5 a un altro hash come SHA256 o SHA512 (eccetto possibilmente per motivi di "apparenza").
Quindi, la cosa più importante che puoi fare è passare a bcrypt / PBKDF2 / scrypt per rendere più difficile la ricerca del dizionario.
Vedi anche i seguenti post con ottimi consigli su come usare le password hash:
SHA-2 con sale funziona bene. Tuttavia dovrai pensare a come migrare le password.
Leggi altre domande sui tag cryptography passwords hash