En mi nueva utilidad de cifrado de documentos secretos, la clave para el cifrado simétrico = el hash de un salt aleatorio y una contraseña proporcionada por el usuario.
Es necesario tener una función hash lenta para evitar la fuerza bruta en contraseñas menos que óptimas. MD5 y SHA1 han demostrado ser inmensamente rápidos, por lo que obviamente no es suficiente. Tampoco tengo grandes esperanzas para SHA256.
Una de las opciones es repetir la operación de hashing un número absurdo de veces. Debido a la gran repetición necesaria (100k mínimo ), estaba algo preocupado por los atacantes que sabrían una forma de saltar adelante con atajos, tal vez usando la tabla rho, o algún otro medio.
¿Es este enfoque de 100.000 rehash el sonido, o debo usar algún otro algoritmo para crear una clave a partir de una contraseña y sal?
Obviamente, también puedo requerir una contraseña más compleja, pero creo que un buen objetivo sería admitir la variación de 6 letras sin diccionario, incluso si necesito un segundo entero de reinicio para realizar el desbloqueo. Este es un objetivo alcanzable, y creo que es mejor permitir contraseñas más cortas si a) eso es lo que quiere el usuario yb) no tiene un impacto significativo en la seguridad.
1. Una estimación de cuánto tiempo tomaría el hash para un procesador de < 2 Ghz es de 1 milisegundo por cada 1-2 mil repeticiones (según el algoritmo). Para las contraseñas de 6 letras, que no sean de diccionario, que deben demorarse durante 1 año, necesitaríamos la generación de claves para tomar al menos 100 milisegundos .