Pregunta

Imagina que tengo esto:

$cdata = AES_256($data, $pass);

AES_256 implementa el algoritmo AES .

Si conozco el contenido de $ cdata y el contenido de $ data y también tengo el código AES_256 () , ¿puedo realizar ingeniería inversa y encontrar $ pass ?

¿Fue útil?

Solución

Respuesta simple: NO.

Esto ha sido probado y mencionado en el enlace Wiki.

  

Un ataque de clave relacionada puede romper hasta 9   Rondas de AES de 256 bits. UNA   ataque de texto plano elegido puede romper 8   Rondas de AES de 192 y 256 bits, y 7   rondas de AES de 128 bits, aunque el   la carga de trabajo no es práctica en 2 128 -   2 119 .

O dicho de otra forma: tienes más posibilidades de que te encienda la luz ... ¡el mismo día que ganas la Lotería, que si la rompes!

Otros consejos

Esto se denomina ataque de texto sin formato conocido . Un buen cifrado como AES debería ser inmune a él, como explicaron los demás.

Si $ pass es en realidad una contraseña y no una clave de 256 bits, es posible que tenga suerte.

Si bien está lejos de ser trivial, un ataque de fuerza bruta contra una contraseña normal es mucho más rápido que forzar una clave de 256 bits.

Así que modifique una de las muchas herramientas para forzar la contraseña bruta, y tendrá un ataque que (dependiendo de la fuerza de la contraseña) puede tardar semanas o varios años, pero es rápido comparado con 3x10 ^ 51 años. .

Podrías fuerza bruta, pero llevaría mucho tiempo. Como en décadas o incluso más. Ese es el punto de los algoritmos de cifrado como AES.

Otra cita, de Wikipedia :

  

AES permite el uso de claves de 256 bits.   Romper una clave de 256 bits simétrica por   la fuerza bruta requiere 2 ^ 128 veces más   potencia computacional que un 128 bits   llave. Un dispositivo que podría comprobar un   mil millones de billones (10 ^ 18) claves AES por   segundo requeriría alrededor de 3 x   10 ^ 51 años para agotar los 256 bits   espacio clave.

Fuerza bruta cuando se sabe que el texto original puede ser más rápido, pero aún así, 3 x 10 ^ 51 años es mucho tiempo. Además, existe el problema de que probablemente no tenga un dispositivo que pueda verificar mil millones de billones (10 ^ 18) de teclas / segundo.

En resumen : todo es posible, pero esto no es factible en el mundo en el que vivimos ahora.

AES, como todos los buenos algoritmos de cifrado, no se basa en seguridad a través de la oscuridad .

En otras palabras, no hay " secretos " en el código, por lo que tener el código no te ayudará particularmente.

El texto plano conocido es un tema aparte, del cual no sé mucho, así que lo dejo a los demás respondedores.

Por supuesto que no, el único enfoque es la fuerza bruta. ¿De verdad crees que el NIST es tan estúpido como para elegir un cifrado que es tan fácil de descifrar para un nuevo estándar?

con el poder de las súper computadoras, el tiempo para bloquear el cifrado AES se acortó drásticamente ... escuché ...

2x2 ^ 256 combinaciones posibles es mucho para fuerza bruta. Pero la fuerza bruta es el único camino. Realmente tomaría alrededor de 3 décadas. AES es el mejor cifrado posible en este momento, diría. Pero eso solo tomaría mucho tiempo usando una CPU. Debido a que las GPU (unidades de procesamiento gráfico) están estrictamente basadas en matemáticas, las personas han estado creando programas que solo usan la GPU para descifrar algoritmos basados ??en matemáticas mucho más rápido de lo que lo haría una CPU. En otras palabras, AES podría no durar 3 décadas. Si tan solo fueran posibles los códigos de eternidad. Parece que el cifrado dinámico puede ser la única forma en que las personas realmente pueden ocultar su información en un futuro cercano.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top