Absolutamente puede determinar con cierto grado de certeza si un archivo, o incluso una cadena, se descifra correctamente. La mayoría de los desafíos en cryptopals dependen de ello . Comencé a hacer una herramienta para el cifrado de datos de fuerza bruta y el análisis que automatiza esta tarea. Puede encontrarlo aquí si desea echar un vistazo.
(necesita mucha limpieza, no me juzgues)
Mi objetivo originalmente en este proyecto era mejorar mi eficiencia en los desafíos de criptografía CTF con una herramienta simple de fuerza bruta, pero estoy empezando a trabajar en la implementación de mucho más análisis. Tal como está, puede aplicar fuerza bruta a todos los tipos de caesar, XOR de byte único, atbash y algunas codificaciones, con XOR de clave de repetición desarrollada pero no integrada aún.
La forma en que funciona ahora
- toma la cadena de texto cifrado de entrada o el archivo de cadenas de texto cifrado delimitadas por nueva línea
- intenta descifrar con el espacio de teclas completo de los cifrados admitidos
- después de cada intento de descifrado, ejecuta una función de detección en texto claro para determinar si el texto descifrado es inglés
- muestra las suposiciones más probables
Lo único que hace que este proceso sea complicado es cómo se deben ajustar los umbrales para la detección del inglés según la longitud del ciphetext. De manera predeterminada, se requiere que el 60% del texto claro sean palabras y el 75% del texto claro sean letras para registrar una coincidencia. Esta configuración rara vez da falsos positivos, y aún menos frecuentemente falsos negativos, en textos claros de longitud media a larga (cualquier cosa sobre unas pocas cadenas). Sin embargo, cuando se utiliza en textos cifrados de corta duración, aparecerán algunos falsos positivos y muchos falsos negativos se solucionarán. En las pruebas, tuve que bajar los umbrales en un 30% o más para detectar una coincidencia en algunas cadenas cortas, y en el proceso generar muchos más falsos positivos que tengo que examinar para encontrar la coincidencia real.
Recomiendo encarecidamente trabajar a través de los cryptopals desafios desde el principio, si está interesado en aprender más sobre cómo hacer oráculos y romper criptografía. Comienza fácilmente y avanza en ataques del mundo real, como hacer un Bleichenbacher Oracle , parte de lo que hace que DROWN trabajo de ataque.
tl; dr
necesitas crear un módulo que detecte el inglés y aplicarlo al resultado de cada intento de descifrado. o simplemente fork mine y hazlo mejor.
En los casos en que el texto claro no sea inglés u otro idioma, se requiere un análisis más avanzado.