Nota: esta pregunta surge exclusivamente de un interés teórico en la investigación de seguridad.
Con frecuencia, en la ficción popular vemos piratas informáticos que descifran información secreta en cuestión de segundos. Si bien obviamente esto no es probable en el mundo real, me hizo pensar en cómo se podría realizar ese proceso, dado que tenemos el texto cifrado pero no la clave.
El primer objeto para descifrar los datos desconocidos sería averiguar qué algoritmo se utilizó. No es una exageración de la imaginación que podamos obtener esta información, por ejemplo, es posible suponer que es probable que se hayan usado ciertos protocolos estándar en situaciones particulares (como SSL / TLS en un correo electrónico). transacción comercial). Incluso es posible sugerir que también sepamos la longitud de la clave.
El segundo objeto principal es la cantidad de tiempo que se tarda en forzar con fuerza bruta todas las combinaciones posibles. Esto se cita con frecuencia como una razón importante para la seguridad de la criptografía (con una longitud de clave adecuada). Sin embargo, digamos que tenemos el texto cifrado, el algoritmo y la longitud de la clave (pero no la clave), así como una computadora altamente poderosa capaz de forzar en gran medida todo el conjunto de claves posibles en un tiempo razonable.
La pregunta es: dado que no sabemos (obviamente) qué era el texto simple, ¿cómo podemos saber cuándo hemos descifrado el cifrado? Una cosa es enumerar todos los posibles descifrados de los datos, pero ¿cómo podemos determinar cuál de estos candidatos en el texto sin formato real?