Ataque de texto simple elegido por AES-ECB con secreto largo

6

Tengo algunos problemas para entender la metodología de un ejercicio de criptografía que estoy haciendo. El objetivo del ejercicio es recuperar una cadena secreta encriptada a través de un ataque clave seleccionado en AES en modo ECB.

Tengo una función de Oracle que toma una cadena como entrada, le agrega la cadena secreta y devuelve la cadena cifrada AES-ECB-128 para ella, usando una clave estática generada de forma aleatoria.

oracle("text goes here!!") -> AES.encrypt("text goes here!!somesecretsomesecret", "staticrandomkey!")

Comprendo cómo obtener el texto en claro para la frase secreta utilizando el método descrito aquí , y he tenido éxito en la recuperación Cadenas secretas de 16 bytes.

Lo que no entiendo es, ¿cómo se puede aplicar ese método a cadenas secretas de más de 16 bytes? A menos que me falte algo obvio, solo funciona para recuperar el primer bloque de un secreto adjunto.

    
pregunta Mego 07.10.2015 - 14:51
fuente

1 respuesta

6

Creo que ya dijiste la solución en tu publicación, pero vamos a ubicarla.

  1. El trabajo AES con un tamaño de bloque de 16 bytes (128 bits)
  2. El secreto se adjunta a un texto que elijas.
  3. ???
  4. Descubra los caracteres de la cadena secreta uno por uno

Si no fuera un ejercicio, daría más detalles ...

EDIT

Una vez que encuentre los primeros 16 bytes, todo lo que necesita hacer es:

¡Exactamente lo mismo pero mira el segundo bloque!

La solución ...

  1. Consigue el primer bloque secreto

Ingrese 15 caracteres y recupere los primeros 16 bytes codificados Luego ingrese 16 caracteres, cambiando el último hasta que obtenga el mismo resultado que con 15 caracteres para los primeros 16 bytes codificados. Ese personaje 16 es el primer personaje de tu secreto. Luego puedes repetir el proceso colocando 14 caracteres y luego encontrando los segundos personajes secretos con la misma técnica.

  1. Consigue el segundo bloque secreto

Ya has encontrado los primeros 16 bytes secretos. Ahora ingrese 15 caracteres y encuentre el resultado para el segundo bloque de bytes codificados; bytes del 17 al 32. Luego ingrese 32 caracteres, cambiando solo el último hasta que encuentre los 17 caracteres secretos en la cadena secreta. Luego repita para encontrar el octeto 18 y así sucesivamente.

    
respondido por el Gudradain 07.10.2015 - 15:14
fuente

Lea otras preguntas en las etiquetas