hash - encrypt - md5 online
¿Es posible descifrar hashes MD5? (23)
Alguien me dijo que ha visto sistemas de software que:
- recuperar contraseñas cifradas MD5 de otros sistemas;
- descifrar las contraseñas cifradas y
- almacene 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 hashes MD5.
Sé que hay diccionarios MD5, pero ¿hay un algoritmo de descifrado real?
Descifrado (obteniendo directamente el texto sin formato del valor hash, de forma algorítmica), no.
Sin embargo, hay métodos que utilizan lo que se conoce como una tabla de arco iris . Es bastante factible si sus contraseñas están encriptadas sin sal.
El algoritmo Hash MD5 no es reversible, por lo que no es posible descodificar MD5, pero algunos sitios web tienen un conjunto masivo de coincidencia de contraseñas, por lo que puede intentar en línea para descifrar el hash MD5.
Probar en línea:
En teoría, no es posible descifrar un valor de hash, pero tiene algunas técnicas sucias para recuperar el texto sin formato original.
- Fuerza bruta : Todos los algoritmos de seguridad informática sufren bruteforcing . Basándose en esta idea, la GPU de hoy en día emplea la idea de la programación paralela mediante la cual puede recuperar el texto sin formato mediante la fuerza bruta que utiliza cualquier procesador gráfico. Esta herramienta hashcat hace este trabajo. La última vez que revisé la versión cuda , pude hacer fuerza bruta un carácter de 7 letras en seis minutos.
- Búsqueda en Internet : simplemente copie y pegue el hash en Google y vea Si puede encontrar el texto sin formato correspondiente allí. Esta no es una solución cuando estás haciendo un pentesting, pero definitivamente vale la pena intentarlo. Algunos sitios web mantienen el hash para casi todas las palabras en el diccionario.
Lo único que puede funcionar es (si mencionamos que las contraseñas solo están troceadas, sin agregar ningún tipo de sal para evitar los ataques de repetición, si es así, debes conocer la sal) por cierto, obtén una herramienta de ataque de diccionario. , los archivos de muchas palabras, números, etc. luego, cree dos filas, una fila es palabra, número (en el diccionario), la otra es un hash de la palabra y compara los hashes si las coincidencias lo consigues ...
Esa es la única manera, sin entrar en el criptoanálisis.
MD5 es un algoritmo de hash, no puede revertir el valor de hash.
Debe agregar "cambiar la función de contraseña", donde el usuario proporciona otra contraseña, calcula el hash y la almacena como una nueva contraseña.
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 deshacer un hash MD5.
MD5 tiene sus debilidades (ver Wikipedia ), por lo que hay algunos proyectos que intentan precomputar Hashes. Wikipedia también insinúa algunos de estos proyectos. Una que conozco (y respeto) es ophrack. No puede decirle al usuario su propia contraseña, pero es posible que pueda decirle una contraseña que funcione. Pero pienso: solo envíeme una nueva contraseña en caso de que la hayan olvidado.
No directamente. Debido al principio del casillero , hay (probablemente) más de un valor que se aplica a cualquier salida MD5 dada. Como tal, no puedes revertirlo con certeza. Además, el MD5 está diseñado para dificultar la búsqueda de cualquier hash inverso (sin embargo, ha habido ataques que producen visualization , es decir, producen dos valores que tienen el mismo resultado, pero no puede controlar cuál será 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 puedes usar una tabla de arco iris o similar para revertir hashes.
No es posible, al menos no en un tiempo razonable.
La forma en que esto se maneja a menudo es una contraseña "restablecer". Es decir, les da una nueva contraseña (aleatoria) y la envía en un correo electrónico.
No hay manera de "revertir" una función hash en términos de encontrar la función inversa para ella. Como se mencionó anteriormente, este es el punto central de tener una función hash. No debe ser reversible y debe permitir un cálculo rápido del valor hash. Por lo tanto, 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 que los valores hash se utilizan para almacenar contraseñas de forma relativamente segura. Si un atacante puede acceder a su base de datos con todas las contraseñas de usuario dentro, perderá en cualquier caso. Si tiene valores de hash y (idealmente hablando) contraseñas seguras, será mucho más difícil obtener las contraseñas de los valores de hash para el atacante.
Almacenar los valores de hash tampoco es un problema de rendimiento porque calcular el valor de 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.
No hay una manera fácil de hacerlo. Este es el tipo de hash de la contraseña en primer lugar. :)
Una cosa que deberías poder hacer es establecer una contraseña temporal para ellos de forma manual y enviarles esa.
Dudo en mencionar esto porque es una mala idea (y no se garantiza que funcione de todos modos), pero podrías intentar buscar el hash en una tabla de arco iris como milw0rm para ver si puedes recuperar la contraseña antigua de esa manera.
No puedes revertir una contraseña md5 (en cualquier idioma)
Pero puedes:
Dar al usuario una nueva.
Verifica en alguna mesa del arco iris para recuperar la antigua.
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 imposible encontrarlos más allá de una longitud máxima bastante trivial, pero eso significa que no hay garantía de que si encuentra una contraseña que tiene el hash de destino, definitivamente es la contraseña original. Es astronómicamente improbable que veas dos contraseñas de longitud razonable y solo ASCII que tengan el mismo hash MD5, pero no es imposible.
MD5 es un hash mal para usar para contraseñas:
- Es rápido, lo que significa que si tienes un hash "objetivo", es barato probar muchas contraseñas y ver si puedes encontrar una que contenga hashes para ese objetivo. Salting no ayuda con ese escenario, pero ayuda a que sea más costoso tratar de encontrar una contraseña que coincida con cualquiera de los múltiples hashes que usan diferentes sales.
- Creo que ha detectado fallas que facilitan la búsqueda de colisiones, aunque encontrar colisiones dentro de un texto imprimible (en lugar de datos binarios arbitrarios) sería al menos más difícil.
No soy un experto en seguridad, por lo que no haré una recomendación concreta más allá de "No haga rodar su propio sistema de autenticación". Encuentra uno de un proveedor de confianza y úsalo. Tanto el diseño como la implementación de sistemas de seguridad es un negocio complicado.
No, debe haber estado confundido acerca de los diccionarios MD5.
Los hash criptográficos (MD5, etc.) son una forma 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 deba.
No, no es posible revertir una función de hash como MD5: dado el valor de 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 que se define para una función hash; el cifrado y el descifrado son funciones de un cifrado como AES en modo CBC; Las funciones hash no cifran ni descifran . Las funciones de hash se utilizan para digerir un mensaje de entrada. Como su nombre lo indica, no hay algoritmo inverso posible por diseño .
MD5 ha sido diseñado como una función hash unidireccional criptográficamente segura. Ahora es fácil generar colisiones para MD5, incluso si una gran parte del mensaje de entrada está predeterminada. Por lo tanto, el MD5 está oficialmente dañado y el MD5 ya no debe considerarse un hash criptográficamente seguro. Sin embargo, aún es imposible encontrar un mensaje de entrada que conduzca a un valor de 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 precomputados) . No se conocen ataques previos a la imagen contra MD5.
En general, también es posible adivinar contraseñas utilizando ataques de fuerza bruta o diccionario (aumentado), comparar bases de datos o intentar encontrar hashes de contraseñas en las llamadas tablas de arco iris. Si se encuentra una coincidencia, es computacionalmente seguro de que se ha encontrado la entrada. Las funciones de hash también son seguras contra los ataques de colisión: encontrar X''
modo que H(X'') = H(X)
dado H(X)
. Entonces, si se encuentra una X
, es computacionalmente seguro de que efectivamente fue el mensaje de entrada. De lo contrario, habrías realizado un ataque de colisión después de todo. Las tablas Rainbow se pueden usar para acelerar los ataques y existen recursos especializados en Internet que le 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 de recepción es almacenar el resultado de una función determinística F
que toma H(X)
como entrada. Cuando se le da X
al sistema, entonces H(X)
y, por lo tanto, F
se puede recalcular y los resultados se pueden comparar. En otras palabras, no es necesario descifrar el valor de hash solo para verificar que la 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) en su lugar. Dicha 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 hashes de contraseñas por esa razón tampoco permiten el uso de tablas de arco iris siempre que la sal sea lo suficientemente grande y apropiadamente aleatoria.
Los hashes de contraseñas también contienen un factor de trabajo (a veces configurado mediante 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 de hash podría ser robada. Finalmente, el hash de la contraseña también puede ser duro en la memoria, por lo que se requiere una cantidad significativa de memoria para calcular el hash. Esto hace que sea imposible utilizar 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, seguirá permitiendo que cualquiera verifique una contraseña dada H(X)
incluso si H(X)
es un hash de contraseña. Los hash de contraseña siguen siendo deterministas, por lo que si alguien conoce todos los datos de entrada y el algoritmo de hash, entonces X
se puede usar para calcular H(X)
y, de nuevo, se pueden comparar los resultados.
Los hashes de contraseña 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ña razonablemente reciente. Aquí en CrackStation hay una buena publicación en el blog sobre cómo hacer bien la seguridad de las contraseñas.
Es posible hacer que los adversarios no puedan realizar el cálculo de hash y verificar que la contraseña sea correcta. Para esto se puede usar un pimiento como entrada al hash de contraseña. Alternativamente, el valor de hash, por supuesto, puede cifrarse utilizando un cifrado como AES y un modo de operación como CBC o GCM. Sin embargo, esto requiere el almacenamiento de una clave / secreto de forma independiente y con mayores requisitos de acceso que el hash de contraseña.
No, no puede descifrar / revertir el md5 ya que es un cifrado de una sola vía. pero algunos sitios web tienen una gran cantidad de bases de datos de contraseñas, por lo que puede intentar en línea descodificar su cadena de hash MD5 o SHA1. Probé un website como website y funciona bien para mí, pero esto depende totalmente de su hash si ese hash está almacenado en esa base de datos, entonces puede obtener la cadena real .
No, no se puede hacer. O puede usar un diccionario o puede probar el hash de valores diferentes hasta obtener el hash que está buscando. Pero no puede ser "descifrado".
No. MD5 no es cifrado (aunque se puede usar como parte de algunos algoritmos de cifrado), es una función hash de una manera. Gran parte de los datos originales en realidad 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 hashes MD5 posibles. Ese es un número razonablemente grande, y sin embargo es definitivamente finito. Y, sin embargo, hay un número infinito de entradas posibles para una función hash dada (y la mayoría de ellas contienen más de 128 bits, o un mísero 16 bytes). Por lo tanto, en realidad hay un número infinito de posibilidades para los datos que podrían tener el mismo valor. Lo que hace que los hashes 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 una pieza de datos y tratarlos como un número grande. A continuación, realice una división de enteros usando un número grande (probablemente primo) n y tome el resto (vea: Modulus ). Te quedarás con un número entre 0 y n . Si tuviera que realizar el mismo cálculo nuevamente (en cualquier momento, en cualquier computadora, en cualquier lugar), utilizando exactamente la misma cadena, obtendrá el mismo valor. Y, sin embargo, no hay manera 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 encontrado que MD5 tiene algunas debilidades, por lo que con algunas matemáticas complejas, es posible encontrar una colisión sin probar 2 128 cadenas de entrada posibles. Y el hecho de que la mayoría de las contraseñas son cortas y la gente a menudo usa valores comunes (como "contraseña" o "secreto") significa que en algunos casos, puede hacer una suposición razonablemente buena de la contraseña de alguien buscando en Google el hash o utilizando un arco iris. mesa Esa es una de las razones por las que siempre debe "saltear" las contraseñas con hash, de modo que dos valores idénticos, cuando se hash, no tengan el mismo valor.
Una vez que una parte de los datos se ha ejecutado a través de una función hash, no hay vuelta atrás.
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:
- Si el mensaje está hash usando un mensaje SALT
- si el mensaje es hash mas de una vez
Por ejemplo, aquí hay una herramienta en línea para descifrar MD5 .
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, pero no todo de una vez.
Lo que debe hacer es organizar que sus usuarios puedan iniciar sesión en su nuevo sistema con la antigua contraseña MD5. En el momento en el que inician sesión, le han dado a su programa de inicio de sesión una versión de la contraseña que no ha sido comprobada y que se ajusta al hash MD5 que tiene. Luego puede convertir esta contraseña no dañada a su nuevo algoritmo de hash.
Obviamente, este es un proceso extendido porque tiene que esperar a que sus usuarios le digan cuáles son las contraseñas, pero funciona.
(NB: siete años después, bueno, espero que alguien lo encuentre útil)
Todavía no es posible poner un hash de una contraseña en un algoritmo y volver a obtener la contraseña en texto sin formato porque el hashing es una cosa de una sola manera. Pero lo que la gente ha hecho es generar hashes y almacenarlo en una tabla grande para que cuando ingrese un hash en particular, verifique la tabla para la contraseña que coincida con el hash y le devuelva esa contraseña. Un ejemplo de un sitio que hace eso es md5online . El moderno sistema de almacenamiento de contraseñas contrarresta esto mediante el uso de un algoritmo de salado tal que cuando ingresa la misma contraseña en un cuadro de contraseña durante el registro, se generan diferentes hashes.
Vea todas las demás 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, de modo que la confunda mucho.
Además, esto no funcionará para los hashes salados. Salting es recomendada por muchos expertos en seguridad.
Técnicamente, es ''posible'' , pero bajo condiciones muy estrictas ( tablas de arco iris , forzados brutos basados 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
- Viable
o - Seguro
No quieres "revertir" un hash MD5 . Usando los métodos descritos a continuación, nunca necesitarás hacerlo. "Invertir" MD5 en realidad se considera malicioso (algunos sitios web ofrecen la posibilidad de "descifrar" y los hashes MD5 de fuerza bruta), pero todos ellos son bases de datos masivas que contienen palabras de diccionario, contraseñas previamente enviadas y otras palabras. Existe una posibilidad muy pequeña de que tenga el hash MD5 que necesita revertido. Y si has salt el hash MD5, ¡esto tampoco funcionará! :)
La forma en que deberían funcionar los inicios de sesión con hash MD5 es:
Durante el registro:
El usuario crea la contraseña -> La contraseña se hash mediante 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 revisa con MD5 -> El hash se compara con el hash almacenado en la base de datos
Cuando se necesita ''Contraseña perdida'':
2 opciones:
- El usuario envió una contraseña aleatoria para iniciar sesión, luego se le molestó cambiarla en el primer inicio de sesión.
o
- Al usuario se le envía un enlace para cambiar su contraseña (con una verificación adicional si tiene una pregunta de seguridad / etc) y luego la nueva contraseña se revisa y se reemplaza con una contraseña antigua en la base de datos