Si alguien tuviera el mismo valor de hash con una sal diferente muchas veces, ¿sería posible encontrar el valor original?
Si el tamaño del hash es más pequeño que el tamaño del texto plano, como suele ser el caso, por supuesto que no. Ninguna cantidad de salazón puede restaurar lo que ya no existe.
Si los dos tamaños son iguales, pero la función hash no es biyectiva, tampoco es siempre posible. Dado que H = h (s ?, v1) = h (s ?, v2), el conocimiento de H y s1 no dará la certeza de que v1 y no v2 es el valor que busca. Por otro lado, cualquiera de los dos valores podría funcionar también para sus propósitos. Este fenómeno se reduce al mínimo en las funciones hash porque reducir el espacio de salida aumenta el riesgo de colisiones, lo cual es malo.
En el caso restante, cuando su función hash es en realidad un cifrado , entonces, dependiendo de los valores de sal, sí, esto podría suceder, pero la clave aquí es que no sabría . La cantidad de trabajo requerido para descubrir un valor s *, tal que h(s*, h(s?, v))
devuelve v
para ese valor específico de v
, es del mismo orden de magnitud del descubrimiento de fuerza bruta de v
en primer lugar, o peor. Básicamente tienes el hash H, e intentas todos los s * 's posibles hasta h(s?, h(s*, H)) = H
. Cuando lo hagas, entonces h(s*, H) = v
.
Hay un último subcaso, cuando existe una función g(s?)
que generará exactamente el valor deseado de s*
. Esa función se conoce como puerta trasera y una función de hash que permite que una puerta trasera se considere gravemente dañada ; usar este g()
es trivial invertir el hashing.
Para hacer un ejemplo simplista, es probable que conozcas los trucos mentales en los que se te pide que obtengas tu edad, multiplica por algún número, tuerce el dígito de alguna manera y obtén un número que es tu edad "hash" y aparentemente no tiene relación con el número original. Sin embargo, el estafador, al escuchar este valor hash, puede recuperar tu edad de inmediato.
No, no debería ser posible. Una función hash en la que sería posible se debería considerar rota.
Para ver por qué no es posible, mira cómo se aplica el hash. Una forma común de hacerlo cuando estás, por ejemplo. La contraseña de hashing es para XOR la contraseña y el salt. Si la sal es aleatoria, el valor que termina por el hash, que es la contraseña XOR sal, será igualmente aleatorio. Así que tener un montón de ellos no es realmente ninguna ayuda.