Supongamos que recibimos una función hash criptográfica (hash) fuerte, una contraseña completamente aleatoria de 15 caracteres pass15, dos valores de sal de un solo carácter, salta, saltb.
Calculamos los hashes hasha, hashb aplicando la función hash a la contraseña pass15 + las sales:
hasha = hash (pass15 + salta)
hashb = hash (pass15 + saltb)
Ahora, digamos que salta, saltb, hash () y hasha son todos públicos. ¿El hashb corre más riesgo de ser resquebrajado que si no se conociera hasha?
Para aquellos que necesitan detalles específicos, vamos con hash () = sha256, pero si es importante, explique por qué es importante este problema.
Mi creencia es que el hashb no es tan fácil de descifrar porque solo es posible un ataque de fuerza bruta para descubrir el hashb, y que el conocimiento público de hasha, salta y saltb no tiene relación.
Simplemente no sé si hay algún método abreviado matemático que pueda utilizar hasha para acelerar el craqueo. No parece teóricamente posible.
** Resumen basado en las respuestas dadas hasta ahora: **
Primero, permítame reformular la pregunta de una manera diferente:
Si tengo una contraseña fuerte y aleatoria de 15 caracteres, los hashes con sal son completamente independientes y seguros de usar como quiera, incluso si las sales son conocidas, son solo caracteres débiles simplemente anexados a la final de la contraseña, y la función hash es rápida, como SHA256?
La respuesta parece ser si. Por lo tanto, podría agregar un% de carácter al final de la contraseña, hacer un hash y usar ese hash como mi ID de usuario. Sería difícil de recordar y probablemente demasiado largo como una identificación de usuario, pero sería seguro hacerlo.
También podría agregar un solo carácter de $ al final de la contraseña, hacer hash y usar el hash como contraseña de mi computadora portátil, y sería seguro hacerlo, aunque estoy utilizando públicamente el% hash como mi identificación de usuario La lista continúa para lo que podría hacer con la contraseña de 15 caracteres y una sal agregada. Por ejemplo, podría agregar el nombre de dominio de cualquier sitio, hacer hash del resultado y usar el hash como mi contraseña para el sitio.
El último concepto es la base para programas como PwdHash y PasswordMaker.
La suposición ha sido que (al menos para mí) las contraseñas generadas por tales programas se mantienen mejor en secreto como contraseñas, no sea que la función hash se "rompa" o se comprometa. Pero parece que mientras la contraseña segura se mantenga en secreto, cualquier hash salado es seguro de usar individualmente como yo quiera, y que la publicación de un hash para el mundo de ninguna manera ponga en peligro la seguridad de cualquiera de los otros hashes. p>
Simplemente estaba preguntando si alguien sabe de alguna debilidad con este pensamiento. La respuesta hasta ahora es no, los hashes individuales pueden usarse como yo quiera.
Para aquellos que se estén preguntando acerca de CÓMO es seguro, aquí hay una respuesta rápida basada en matemáticas (mantuve las matemáticas visibles para que pueda seguirlas con su calculadora):
Creo que en este momento algunos programas pueden usar la tarjeta gráfica de una computadora para calcular alrededor de 1 billón de hashes SHA256 por segundo, 1E9 por segundo (dentro de un orden de magnitud al menos).
Este es el argumento por el que SHA256 es deficiente para las contraseñas, y DEBEMOS estar usando hashes más lentos, como Bcrypt.
Ahora, toma una contraseña aleatoria de 15 caracteres. La cantidad de contraseñas posibles entre mayúsculas, minúsculas y números en la contraseña sería 62 ^ 15 = 7.7E26 contraseñas posibles.
Usando SHA256 como función hash, la cantidad de segundos que tomaría, en promedio descifrar esta contraseña sería la mitad del tiempo para enumerar todas las contraseñas posibles:
7.7E26 / 1E9 / 2 = 7.7E17 / 2 = 3.9E17 segundos
El número de años para descifrar la contraseña sería:
3.9E17 / 60/60/24/365 = 1.2E10 años, o 12 mil millones de años, solo un billón de años menos que la edad del Universo.
Por lo tanto, pasar de un hash SHA256 público a la contraseña original de 15 caracteres con salado probablemente tomaría más tiempo del que tengo en esta Tierra.
Incluso teniendo en cuenta las mejoras en el hardware (ignorando la posibilidad de las computadoras cuánticas), la brecha en la tecnología para solucionarlo en un año significa que necesitamos computadoras que son 10 mil millones de veces más rápidas.
Por lo tanto, debería sentirme libre de usar hash SHA256 con sal, sin embargo, la forma en que elija siempre que la base del hash sea una contraseña aleatoria de 15 caracteres o más.