Supongamos que tiene dos cadenas definidas por el usuario, X, Y, y desea incluirlas en el hash Z. Eso es lo que harían la mayoría de los sitios web, X es la contraseña del usuario e Y es el salt. Se necesita mucho tiempo para que Z vuelva a X + Y.
Lo que estoy buscando, es esto más que tiene la capacidad de recuperar X si se le da Y, Z. Entonces, si F era una función donde F (X, Y) = Z (actuando como SHA1, SHA2, etc.), Quiero una función F 'donde F' (Z, Y) = X. ¿Hay algún tipo de algoritmo de hash que se parezca a esto?
Parece un cifrado de clave pública-privada donde Y es tu clave pública y X es tu mensaje, produciendo Z, luego, utilizando una clave privada Y alternativa, puedes combinarla con la Z para recuperar tu mensaje X, pero lo que quiero es la capacidad de X, Y de ser arbitrariamente definido por el usuario. ¿Es esto teóricamente posible? Si es así, ¿existe este tipo de algoritmo de cifrado "triangular"?
Leí acerca de enlace hoy, que es un servicio que contiene TODAS sus contraseñas de Internet en una cuenta. Estoy casi seguro de que están almacenando las contraseñas en texto sin formato, o incluso si están cifradas, su servidor tiene tanto la clave como los datos cifrados, y si un atacante accede a ellos, podrían recuperar todos los datos de los usuarios. contraseñas.
Luego pensé en el tipo de hashing que mencioné anteriormente, cómo funcionaría:
Un usuario establece un "token de seguridad" como una contraseña, que es diferente a la contraseña de su cuenta. Cuando el usuario ingresa sus contraseñas en el formulario de los servicios, la contraseña se revisa, el lado del cliente usa la función F (X, Y) = Z, donde Y es su token de seguridad y Z es el "hash". Sólo el "hash" se almacena en el servidor. Cuando el usuario desea recuperar todas sus contraseñas almacenadas, el servidor envía al cliente los "hash", que pueden decodificarse utilizando el token de seguridad del usuario, en el propio cliente.
Con este método, el servicio no almacenará ningún dato de contraseña en texto sin formato.