encryption - encriptacion - diferentes algoritmos de encriptación
¿Cuál es el algoritmo de hash recomendado para usar con las contraseñas almacenadas? (4)
Debe usar una función de derivación de clave basada en contraseña como resultado de uid / pwd; el más conocido es PBKDF2 http://en.wikipedia.org/wiki/PBKDF2 también definido como RFC 2898 http://tools.ietf.org/html/rfc2898 . PKBDF2 toma sus datos secretos, así como una cuenta de sal y una iteración. Esta es la forma estándar de resolver su problema.
Si programa en .NET, use Rfc2898DeriveBytes http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.aspx
Dadas las debilidades conocidas de MD5 y las debilidades recientes (mayo de 2009) que se discutieron en SHA1, ¿cómo deberían los nuevos programas estar aprovechando sus contraseñas?
He visto SHA-256 y SHA-512 sugeridos.
Programar predominantemente en Ruby on Rails y usar PostgreSQL, pero otros lenguajes y entornos también pueden tener que calcular hashes de contraseñas.
Debes usar un nombre de usuario hash, contraseña y sal juntos, como:
hash(length(username)+"_veryuniquesalt4rtLMAO"+username+password)
De esa manera, su base de datos no es vulnerable a ninguna tabla arco iris existente, debido a la sal, y con el nombre de usuario y la contraseña también es imposible crear una tabla arco iris para su método de hashing específico.
El uso de un algoritmo de hashing "lento" asegurará las contraseñas mejor, como si fueran más complejas, pero es una compensación, una vez que haya decidido sobre un cierto nivel de lentitud, no puede reducir la escala cuando necesite el rendimiento. otras cosas.
También es posible realizar el hashing lento en el lado del cliente utilizando JavaScript, de esa manera no será un problema de rendimiento, pero el método, por supuesto, requerirá que JavaScript esté habilitado.
Independientemente de lo que elija, un poco de lavado lento es mucho mejor que nada, use 1 milisegundo en lugar de 1 microsegundo y su protección es 1000 veces más fuerte.
Puede usar bcrypt, o puede hacer que un algoritmo de hash convencional realice una gran cantidad de trabajo adicional, solo asegúrese de que el trabajo adicional no sea principalmente concatenación de cadenas.
Al final, es mejor que no roben su base de datos, muchas contraseñas son tan débiles que se pueden extraer fácilmente sin importar lo que haga.
SHA-256 y SHA-512 son seguros en el futuro previsible. Pertenecen a la familia SHA-2, contra la cual no se han identificado ataques hasta el momento. Esta página de wikipedia dice que los proveedores de Unix y Linux se están mudando a SHA-2 por su hash seguro de contraseñas. La familia SHA-3, con algoritmos aún más potentes, se está desarrollando, pero no estará lista hasta 2012, por lo menos.
PD: A menos que esté ocultando los nombres de los agentes secretos a los gobiernos, también estará seguro con SHA-1, pero si no es un problema implementar SHA-2, solo use ese.
Usa una función lenta como bcrypt. Here hay un post de los chicos de Phusion.