Normalmente conoces la función hash del contexto. Si está tratando de descifrar una contraseña, entonces esta contraseña es valiosa para usted, ya que le otorgaría acceso a algunos datos o servicios en algún lugar, que usted específicamente apunta. Entonces, uno tiene que asumir que ya conoce el tipo de sistema (en particular, si logró obtener una lista de contraseñas con hash de una base de datos, entonces vio la base de datos), y esto a menudo incluye el conocimiento de La función de hashing de contraseña. Además, en los sistemas que admiten varios tipos de función hash (como el archivo /etc/shadow
en sistemas Unix), el tipo de hash se codifica a lo largo del valor de hash, porque, por naturaleza, el sistema mismo debe saberlo.
Recuerde que las contraseñas con hash están pensadas para ser utilizadas por algún software, en algún lugar, que existe como archivos ejecutables y código fuente. En general, el software no puede considerarse secreto, y la ingeniería inversa es bastante eficaz para descubrir el tipo de procesamiento que se realiza con los datos.
Para Windows, las contraseñas tienden a procesarse con dos funciones hash, la antigua LM (LanMan) y la más reciente NT Hash (que es MD4 ). También se utiliza un "verificador de contraseña" en alguna parte, que está "salted" con el nombre de usuario (no es un buen nombre, en realidad: cada "Administrador" se llama "Administrador"). Consulte esta página para obtener más información. El hash de LM es extremadamente débil y se usó como el banco de pruebas de demostración para mostrar la efectividad de las tablas del arco iris; Afortunadamente, está deshabilitado de forma predeterminada en los sistemas más nuevos (desde Vista). Sin embargo, el hash del NT sigue siendo bastante débil (no tan abismal como LM, pero aún así) ya que es muy rápido (una sola invocación de MD4 ...) y sin sal (por lo que vale la pena construir tablas precomputadas, como las tablas de arco iris) .