Alguien me dijo que ha visto sistemas de software que:
- recuperar contraseñas cifradas MD5 de otros sistemas;
- descifrar las contraseñas cifradas y
- almacenar las contraseñas en la base de datos del sistema utilizando el algoritmo propio del sistema.
¿Es eso posible? Pensé que no era posible / factible descifrar los hash MD5.
Sé que hay diccionarios MD5, pero ¿existe un algoritmo de descifrado real?
hash
cryptography
md5
encryption
John Bubriski
fuente
fuente
Respuestas:
No. MD5 no es cifrado (aunque puede usarse como parte de algunos algoritmos de cifrado), es una función hash unidireccional . Gran parte de los datos originales se "pierden" como parte de la transformación.
Piense en esto: un MD5 siempre tiene 128 bits de longitud. Eso significa que hay 2 128 posibles hashes MD5. Ese es un número razonablemente grande y, sin embargo, definitivamente es finito. Y, sin embargo, hay un número infinito de entradas posibles para una determinada función hash (y la mayoría de ellas contienen más de 128 bits, o unos miserables 16 bytes). Por lo tanto, en realidad hay un número infinito de posibilidades de datos que tendrían el mismo valor. Lo que hace que los hash sean interesantes es que es increíblemente difícil encontrar dos datos que tengan el mismo valor, y las posibilidades de que ocurra por accidente son casi 0.
Un ejemplo simple para una función hash (muy insegura) (y esto ilustra la idea general de que es unidireccional) sería tomar todos los bits de un dato y tratarlo como un gran número. A continuación, realice la división de enteros utilizando algún número grande (probablemente primo) n y tome el resto (ver: Módulo ). Te quedará un número entre 0 y n . Si volviera a realizar el mismo cálculo (en cualquier momento, en cualquier computadora, en cualquier lugar), usando exactamente la misma cadena, obtendrá el mismo valor. Y, sin embargo, no hay forma de averiguar cuál era el valor original, ya que hay un número infinito de números que tienen ese resto exacto, cuando se divide por n .
Dicho esto, se ha descubierto que MD5 tiene algunas debilidades, de modo que con algunas matemáticas complejas, es posible encontrar una colisión sin probar 2 128 posibles cadenas de entrada. Y el hecho de que la mayoría de las contraseñas son cortas, y que las personas a menudo usan valores comunes (como "contraseña" o "secreto") significa que en algunos casos, puede adivinar razonablemente la contraseña de alguien buscando en Google el hash o usando un Rainbow mesa . Esa es una razón por la que debe siempre " sal " hash contraseñas, por lo que dos valores idénticos, cuando hash, ¿no hash al mismo valor.
Una vez que un dato se ha ejecutado a través de una función hash, no hay vuelta atrás.
fuente
No puedes, en teoría. El punto principal de un hash es que es de una sola manera. Esto significa que si alguien logra obtener la lista de hashes, aún no puede obtener su contraseña. Además, significa que incluso si alguien usa la misma contraseña en varios sitios (sí, todos sabemos que no deberíamos, pero ...) cualquier persona con acceso a la base de datos del sitio A no podrá usar la contraseña del usuario en sitio B.
El hecho de que MD5 sea un hash también significa que pierde información. Para cualquier hash MD5 dado, si permite contraseñas de longitud arbitraria, podría haber varias contraseñas que produzcan el mismo hash. Para un buen hash, sería computacionalmente inviable encontrarlos más allá de una longitud máxima bastante trivial, pero significa que no hay garantía de que si encuentra una contraseña que tiene el hash objetivo, definitivamente es la contraseña original. Es astronómicamente improbable que vea dos contraseñas ASCII de longitud razonable que tengan el mismo hash MD5, pero no es imposible.
MD5 es un mal hash para usar con contraseñas:
No soy un experto en seguridad, así que no haré una recomendación concreta más allá de "No utilice su propio sistema de autenticación". Encuentre uno de un proveedor acreditado y úselo. Tanto el diseño como la implementación de sistemas de seguridad es un negocio complicado.
fuente
Técnicamente, es 'posible' , pero en condiciones muy estrictas ( tablas de arco iris , fuerza bruta basada en la posibilidad muy pequeña de que la contraseña de un usuario esté en esa base de datos hash).
Pero eso no significa que sea
o
No desea 'revertir' un hash MD5 . Usando los métodos descritos a continuación, nunca necesitará hacerlo. 'Revertir' MD5 en realidad se considera malicioso : algunos sitios web ofrecen la capacidad de 'descifrar' y aplicar fuerza bruta a hash MD5, pero todas son bases de datos masivas que contienen palabras de diccionario, contraseñas enviadas previamente y otras palabras. Existe una pequeña posibilidad de que revierta el hash MD5 que necesita. Y si ha salado el hash MD5, ¡esto tampoco funcionará! :)
La forma en que los inicios de sesión con el hash MD5 deberían funcionar es:
Durante el registro: el
usuario crea una contraseña -> La contraseña se usa usando MD5 -> Hash almacenado en la base de datos
Durante el inicio de sesión: el
usuario ingresa el nombre de usuario y la contraseña -> (nombre de usuario marcado) La contraseña se codifica con MD5 -> el hash se compara con el hash almacenado en la base de datos
Cuando se necesita 'Contraseña perdida':
2 opciones:
o
fuente
No directamente. Debido al principio del casillero , hay (probablemente) más de un valor que se asocia con cualquier salida MD5 dada. Como tal, no puedes revertirlo con certeza. Por otra parte, MD5 se hace para hacer que sea difícil encontrar ningún ejemplo de hash inversa (sin embargo, se han producido ataques que producen colisiones - es decir, producir dos valores hash para que el mismo resultado, pero no se puede controlar lo que el valor MD5 resultante ser).
Sin embargo, si restringe el espacio de búsqueda a, por ejemplo, contraseñas comunes con una longitud inferior a N, es posible que ya no tenga la propiedad de irreversibilidad (porque el número de salidas MD5 es mucho mayor que el número de cadenas en el dominio de interés). Luego puede usar una tabla de arcoiris o similar para invertir los hashes.
fuente
password
más que todas las demás entradas infinitas que producen el mismo hash pero que parecen bastante aleatorias, pero puede estar lo suficientemente cerca.No es posible, al menos no en un tiempo razonable.
La forma en que esto se maneja a menudo es un "restablecimiento" de contraseña. Es decir, les da una nueva contraseña (aleatoria) y la envía por correo electrónico.
fuente
No puede revertir una contraseña md5. (En cualquier idioma)
Pero puedes:
dar al usuario uno nuevo.
revisa alguna mesa de arcoíris para recuperar la antigua.
fuente
No, debe haber estado confundido acerca de los diccionarios MD5.
Los hash criptográficos (MD5, etc.) son unidireccionales y no puede volver al mensaje original solo con el resumen a menos que tenga alguna otra información sobre el mensaje original, etc., que no debería.
fuente
Descifrado (obteniendo directamente el texto plano del valor hash, de forma algorítmica), no.
Sin embargo, existen métodos que utilizan lo que se conoce como una tabla de arcoiris . Es bastante factible si sus contraseñas se codifican sin sal.
fuente
MD5 es un algoritmo hash, no puede revertir el valor hash.
Debe agregar "función de cambio de contraseña", donde el usuario da otra contraseña, calcula el hash y la almacena como una nueva contraseña.
fuente
No hay una manera fácil de hacerlo. Este es el punto de cifrar la contraseña en primer lugar. :)
Una cosa que debería poder hacer es establecer una contraseña temporal para ellos manualmente y enviarlos.
Dudo en mencionar esto porque es una mala idea (y no se garantiza que funcione de todos modos), pero podría intentar buscar el hash en una tabla de arco iris como milw0rm para ver si puede recuperar la contraseña anterior de esa manera.
fuente
Vea todas las otras respuestas aquí sobre cómo y por qué no es reversible y por qué no querría hacerlo de todos modos.
Sin embargo, para completar, hay tablas de arco iris en las que puedes buscar posibles coincidencias. No hay garantía de que la respuesta en la tabla del arco iris sea la contraseña original elegida por su usuario, por lo que eso los confundiría en gran medida.
Además, esto no funcionará para los hash salados. La salazón es recomendada por muchos expertos en seguridad.
fuente
No hay forma de "revertir" una función hash en términos de encontrar la función inversa para ella. Como se mencionó anteriormente, este es el objetivo de tener una función hash. No debe ser reversible y debe permitir un cálculo rápido del valor hash. Entonces, la única forma de encontrar una cadena de entrada que produzca un valor hash dado es probar todas las combinaciones posibles. Esto se llama ataque de fuerza bruta por esa razón.
Probar todas las combinaciones posibles lleva mucho tiempo y esta es también la razón por la cual los valores hash se usan para almacenar contraseñas de una manera relativamente segura. Si un atacante puede acceder a su base de datos con todas las contraseñas de usuario, perderá en cualquier caso. Si tiene valores hash y (idealmente hablando) contraseñas seguras, será mucho más difícil sacar las contraseñas de los valores hash para el atacante.
Almacenar los valores hash tampoco es un problema de rendimiento porque calcular el valor hash es relativamente rápido. Entonces, lo que la mayoría de los sistemas hacen es calcular el valor hash de la contraseña que ingresó el usuario (que es rápido) y luego compararlo con el valor hash almacenado en su base de datos de usuarios.
fuente
MD5 se considera roto, no porque pueda recuperar el contenido original del hash, sino porque con el trabajo, puede crear dos mensajes que tengan el mismo hash.
No puede quitar el hash de un hash MD5.
fuente
Puede encontrar herramientas en línea que usan un diccionario para recuperar el mensaje original.
En algunos casos, el método del diccionario podría ser inútil:
Por ejemplo, aquí hay una herramienta en línea para descifrar MD5 .
fuente
Lo único que puede funcionar es (si mencionamos que las contraseñas solo están codificadas, sin agregar ningún tipo de sal para evitar los ataques de repetición, si es así, debe conocer la sal) por cierto, obtenga una herramienta de ataque de diccionario , los archivos de muchas palabras, números, etc. luego crean dos filas, una fila es palabra, número (en el diccionario) y la otra es hash de la palabra, y compara los hashes si coincide ...
esa es la única forma, sin entrar en criptoanálisis.
fuente
Sí, exactamente lo que estás pidiendo es posible. No es posible 'descifrar' una contraseña MD5 sin ayuda, pero es posible volver a cifrar una contraseña MD5 en otro algoritmo, solo que no todo de una vez.
Lo que debe hacer es hacer que sus usuarios puedan iniciar sesión en su nuevo sistema utilizando la contraseña MD5 anterior. En el punto en que se inicia sesión que han dado su programa de inicio de sesión de un sin troceo versión de la contraseña que usted prueba coincide con el hash MD5 que tiene. A continuación, puede convertir esta contraseña no compartida en su nuevo algoritmo de hash.
Obviamente, este es un proceso extendido porque tienes que esperar a que tus usuarios te digan cuáles son las contraseñas, pero funciona.
(NB: siete años después, bueno espero que alguien lo encuentre útil)
fuente
No, no se puede hacer. Puede usar un diccionario o puede probar el hash de diferentes valores hasta que obtenga el hash que está buscando. Pero no puede ser "descifrado".
fuente
MD5 tiene sus debilidades (ver Wikipedia ), por lo que hay algunos proyectos que intentan precalcular Hashes. Wikipedia también insinúa algunos de estos proyectos. Uno que conozco (y respeto) es ophrack. No puede decirle al usuario su propia contraseña, pero puede decirle una contraseña que funcione. Pero creo: simplemente envíe una nueva contraseña por correo en caso de que la hayan olvidado.
fuente
El algoritmo Hash MD5 no es reversible, por lo que no es posible la decodificación MD5, pero algunos sitios web tienen un conjunto de contraseñas masivas, por lo que puede probar en línea para decodificar hash MD5.
Probar en línea:
MD5 Descifrar
md5online
md5decrypter
fuente
En teoría, no es posible descifrar un valor hash, pero tiene algunas técnicas sucias para recuperar el texto plano original.
fuente
No, no es posible revertir una función hash como MD5: dado el valor hash de salida, es imposible encontrar el mensaje de entrada a menos que se conozca suficiente información sobre el mensaje de entrada.
El descifrado no es una función definida para una función hash; el cifrado y descifrado son funciones de un cifrado como AES en modo CBC; las funciones hash no cifran ni descifran . Las funciones hash se utilizan para digerir un mensaje de entrada. Como su nombre lo indica, no hay un algoritmo inverso posible por diseño .
MD5 ha sido diseñado como una función de hash unidireccional criptográficamente segura . Ahora es fácil generar colisiones para MD5, incluso si una gran parte del mensaje de entrada está predeterminado. Por lo tanto, MD5 está oficialmente roto y MD5 ya no debe considerarse un hash criptográficamente seguro. Sin embargo, todavía es imposible encontrar un mensaje de entrada que conduzca a un valor hash: encuentre X cuando solo se conoce H (X) (y X no tiene una estructura precalculada con al menos un bloque de 128 bytes de datos precalculados) . No se conocen ataques previos a la imagen contra MD5.
Por lo general, también es posible adivinar las contraseñas utilizando la fuerza bruta o los ataques de diccionario (aumentados), comparar bases de datos o tratar de encontrar hashes de contraseñas en las llamadas tablas de arco iris. Si se encuentra una coincidencia, entonces es computacionalmente seguro que se ha encontrado la entrada. Las funciones hash también son seguros contra los ataques de colisión: la búsqueda de
X'
modo queH(X') = H(X)
dadaH(X)
. Entonces, siX
se encuentra un archivo, es computacionalmente seguro que efectivamente fue el mensaje de entrada. De lo contrario, habría realizado un ataque de colisión después de todo. Las tablas de arco iris se pueden usar para acelerar los ataques y hay recursos especializados de Internet que lo ayudarán a encontrar una contraseña dada un hash específico.Por supuesto, es posible reutilizar el valor hash
H(X)
para verificar las contraseñas que se generaron en otros sistemas. Lo único que tiene que hacer el sistema receptor es almacenar el resultado de una función deterministaF
que tomaH(X)
como entrada. CuandoX
se le da al sistema, entonces,H(X)
porF
lo tanto, se puede volver a calcular y se pueden comparar los resultados. En otras palabras, no es necesario descifrar el valor hash para verificar que una contraseña sea correcta, y aún puede almacenar el hash como un valor diferente.En lugar de MD5, es importante utilizar un hash de contraseña o PBKDF (función de derivación de clave basada en contraseña). Tal función especifica cómo usar una sal junto con un hash. De esa manera, no se generarán hashes idénticos para contraseñas idénticas (de otros usuarios o dentro de otras bases de datos). Los hash de contraseñas por ese motivo tampoco permiten que se usen tablas arcoíris siempre que la sal sea lo suficientemente grande y esté correctamente aleatorizada.
Los hashes de contraseña también contienen un factor de trabajo (a veces configurado usando un recuento de iteraciones ) que puede ralentizar significativamente los ataques que intentan encontrar la contraseña dado el valor de sal y hash. Esto es importante ya que la base de datos con sales y valores hash podría ser robada. Finalmente, el hash de la contraseña también puede ser difícil de memoria, por lo que se requiere una cantidad significativa de memoria para calcular el hash. Esto hace que sea imposible usar hardware especial (GPU, ASIC, FPGA, etc.) para permitir que un atacante acelere la búsqueda. Otras entradas u opciones de configuración como un pimiento o la cantidad de paralelización también pueden estar disponibles para un hash de contraseña.
Sin embargo, todavía permitirá que cualquiera verifique una contraseña dada,
H(X)
incluso siH(X)
es un hash de contraseña. Los valores hash de las contraseñas siguen siendo deterministas, por lo que si alguien conoce todas las entradas y el algoritmo hash en sí mismo,X
puede usarse para calcularH(X)
y, nuevamente, los resultados pueden compararse.Los hashes de contraseñas más utilizados son bcrypt , scrypt y PBKDF2 . También hay Argon2 en varias formas, que es el ganador de la competencia de hashing de contraseñas razonablemente reciente. Aquí en CrackStation hay una buena publicación de blog sobre cómo hacer la seguridad de contraseña correctamente.
Es posible hacer que sea imposible para los adversarios realizar el cálculo de hash y verificar que la contraseña sea correcta. Para esto, se puede usar un pepper como entrada para el hash de contraseña. Alternativamente, el valor hash puede encriptarse, por supuesto, utilizando un cifrado como AES y un modo de operación como CBC o GCM. Sin embargo, esto requiere el almacenamiento de un secreto / clave de forma independiente y con requisitos de acceso más altos que el hash de contraseña.
fuente
MD5 es una función hash criptográfica (unidireccional), por lo que no hay forma directa de decodificarla. El propósito completo de una función hash criptográfica es que no se puede deshacer.
Una cosa que puedes hacer es una estrategia de fuerza bruta, donde adivinas lo que se ha procesado, luego lo hash con la misma función y ver si coincide. A menos que los datos cifrados sean muy fáciles de adivinar, podría llevar mucho tiempo.
fuente
Todavía no es posible poner un hash de contraseña en un algoritmo y recuperar la contraseña en texto plano porque el hashing es una cosa de una sola manera. Pero lo que la gente ha hecho es generar hashes y almacenarlos en una tabla grande para que cuando ingrese un hash en particular, verifique en la tabla la contraseña que coincida con el hash y le devuelva esa contraseña. Un ejemplo de un sitio que hace eso es http://www.md5online.org/ . El sistema moderno de almacenamiento de contraseñas contrarresta esto mediante el uso de un algoritmo de sal, de modo que cuando ingresa la misma contraseña en un cuadro de contraseña durante el registro, se generan diferentes hashes.
fuente
No, no puede descifrar / invertir el md5 ya que es una función hash unidireccional hasta que no pueda encontrar una gran vulnerabilidad en el MD5. Otra forma es que algunos sitios web tienen una gran cantidad de bases de datos de contraseñas, por lo que puede intentar en línea decodificar su cadena de hash MD5 o SHA1. Intenté un sitio web como http://www.mycodemyway.com/encrypt-and-decrypt/md5 y funciona bien para mí, pero esto depende totalmente de tu hash si ese hash está almacenado en esa base de datos, entonces puedes obtener la cadena real .
fuente