descifrar una cadena con una contraseña, pero un método desconocido

4

Quiero ejecutar varios algoritmos contra una cadena cifrada. Tengo la contraseña y la cadena cifrada, pero no el método con el que se cifró?

¿Cuál sería el mejor método para averiguar el método sin pasar por cada método manualmente?

    
pregunta TheHidden 03.03.2016 - 13:04
fuente

1 respuesta

3

Forma fácil:
Escriba una secuencia de comandos que intente descifrar con openssl usando todos los modos de cifrado de bloque. Consideraría usar openssl en una secuencia de comandos BASH o importar pyOpenSSL (o subprocess ) y usar bloques try / except en python (o el equivalente en el idioma en el que se sienta más cómodo) para obtener el modo correcto rápidamente.

Modo académico:
Escriba un oracle de detección .
Si no ha leído los Matasano Crypto Challenges anteriormente, le recomendaría comenzar en Conjunto 1 y lectura sobre la implementación y detección del BCE. Set 2 implementa / detecta el CBC y también crea un oráculo de detección de CBC / ECB. Una vez que entienda cómo funcionan los modos de cifrado de bloque, será más fácil entender cómo diferenciarlos entre sí.

Lamentablemente, aquí es donde mi conocimiento se vuelve confuso sobre el tema, por lo que si un oráculo de detección de ECB / CBC no identifica el texto cifrado, sugeriría que eche un vistazo a esta buena respuesta a un pregunta . El usuario explica lo que debe buscar para identificar OFC / CTR y EAX / GCM, que luego puede usar para crear un oráculo de detección más completo.

Actualización 9-Mar-2016

He estado tratando de abordar el problema de la identificación de los modos de cifrado de cifrado de bloque, dado solo el texto cifrado, durante la última semana. El problema con la respuesta a la que hice referencia (en relación con este objetivo) es que asume el conocimiento de la clave / IV para poder analizar la propagación de errores. He leído todos los libros de criptografía que tengo, busqué en las interwebs y hice una pregunta específica sobre esto en crypto.SE .
De esta investigación hasta ahora, he llegado provisionalmente a la conclusión de que:

  • El BCE se puede identificar de manera fácil y consistente, dado un texto cifrado de un tamaño suficientemente grande.
  • Los cifrados de flujo (CFB, OFB, CTR) pueden identificarse fácilmente si el texto cifrado no es una longitud de bloque adecuada, sin embargo, todavía tengo que encontrar una manera de diferenciar los cifrados de flujo uno de otro dado solo el texto cifrado.

Con esta información, se puede suponer que un texto cifrado de longitud de bloque (AES = 128) con un 99.22% de certeza (1/128 de probabilidad de que el texto cifrado de la secuencia sea múltiple de la probabilidad de blocklen = ~ 0.78) sea un cifrado de bloque. A partir de aquí, el oráculo de detección mencionado anteriormente podrá detectar el BCE si se utiliza. Si no se detecta el ECB, le quedan CBC y PCBC como las dos posibilidades principales. Este es el mejor análisis de detección que he encontrado hasta ahora.

    
respondido por el cremefraiche 05.03.2016 - 00:36
fuente

Lea otras preguntas en las etiquetas