Para alguien que tiene una clave y un texto cifrado, ¿es posible averiguar qué algoritmo de cifrado se usó?

4

Para alguien que tiene una clave y un texto cifrado, ¿es posible averiguar qué algoritmo de cifrado se utilizó?

    
pregunta Jahongir 20.12.2013 - 02:45
fuente

4 respuestas

8

Para averiguar qué método de cifrado se utilizó, lo primero que puede hacer es mirar la longitud de la clave y el texto cifrado para limitar y clasificar la probabilidad de los posibles candidatos:

  • Con un tamaño de clave de n bits, obviamente solo se aplican los esquemas de cifrado que admiten claves de este tamaño. Por ejemplo: si n es 168, puede estar bastante seguro de que se utiliza el cifrado de bloque 3DES (aunque todavía no conoce el modo de operación); si n es igual a 128 o 256, la lista de cifrados probables es un poco más larga.
  • Si la longitud del texto cifrado es un múltiplo de 128 bits (un escenario común), es muy probable que se haya utilizado un cifrado de bloque que use este tamaño de bloque (probablemente AES) en el modo CBC extremadamente común. Cuando el tamaño del texto cifrado no es un múltiplo de 128 o 64 bits, puede estar bastante seguro de que está viendo algo cifrado con un cifrado de flujo o un cifrado de bloque utilizando algo como el modo CTR o GCM.
  • Ciertos cifrados son muy comunes (especialmente AES-CBC), pruebe estos primero.

A continuación, simplemente puede probar a los candidatos uno por uno hasta que termine con un texto simple que no se vea como un alboroto al azar. Si se usa un esquema de cifrado autenticado, ni siquiera necesita mirar el texto sin formato porque el algoritmo le indica cuándo es correcto.

Por supuesto, todavía tendrá que distinguir de alguna manera 'alboroto al azar' de un texto sin formato adecuado. Debido a que la cantidad de esquemas comunes de encriptación que se usan comúnmente es bastante limitada, probablemente sea suficiente con solo imprimir el resultado del descifrado en un archivo de texto y dejar que un humano los vea. Si desea verificar los valores de plaintexts válidos de manera automática, deberá utilizar algunos conocimientos sobre el material encriptado (por ejemplo, que contiene un texto codificado en UTF-8 o que es una imagen JPEG) o ejecutar algunos prueba estadística Tenga en cuenta que probablemente no tendrá éxito en absoluto si el texto en claro es en realidad una secuencia de bytes generados aleatoriamente que usted no conoce.

Algunos asuntos pueden hacer este proceso más complicado: casi todos los esquemas de encriptación requieren un IV o nonce que son esenciales para descifrar el texto cifrado. Este IV / nonce probablemente se adjunta o anexa al texto cifrado, pero si no puede depender del contexto del protocolo criptográfico. Si realmente no tiene idea de lo que podría ser el IV / nonce, siempre podría intentar algunos números pequeños, esperando que se utilice la numeración de la secuencia para determinar el IV.

También tenga en cuenta que los datos que cree que son un texto cifrado podrían contener más que solo datos cifrados. Además de la IV o nonce mencionada anteriormente, un MAC (código de autenticación de mensaje) o una etiqueta de autenticación pueden haber sido agregados o antepuestos. Si se adjunta, probablemente no será problemático; pero si su texto cifrado comienza con él, podría empezar a descifrarlo accidentalmente y, por lo tanto, ofuscar el resto del texto sin formato.

Por último, pero no menos importante, también hay cifrados en cascada: múltiples algoritmos de cifrado con los que los datos se cifran sucesivamente. Si desea verificarlos todos (hasta un cierto máximo de cifrados utilizados), podrían aumentar significativamente su espacio de búsqueda. Sin embargo, en la práctica solo se utiliza un número limitado de diferentes esquemas de encriptación en cascada, por lo que probablemente no sea un gran problema.

Si todo esto falla, puede ocurrir que se utilice un cifrado oscuro del que no tenga conocimiento. En este caso, puedes esperar que sea un cifrado DIY falso y puedes comenzar a intentar realizar algunos análisis criptográficos reales en él.

    
respondido por el AardvarkSoup 20.12.2013 - 15:49
fuente
2

"Posible" es la palabra operativa. Resolver los acertijos de criptoanálisis requiere tiempo, recursos informáticos y experiencia. Su pregunta también se relaciona con la rentabilidad. ¿Podría la NSA, si necesitara urgentemente la respuesta, resolver el problema planteado? No lo dicen, pero tienen millas cuadradas de recursos informáticos y muchos expertos altamente calificados. ¿Podrías resolver el problema? Usted dice que es nuevo en la criptografía, supongo que tiene quizás una o dos computadoras personales y que está resolviendo el problema por diversión (no se beneficiará al resolverlo). ¿Cuánto tiempo estás dispuesto a dedicar a esto? Asumo solo una cantidad de tiempo limitada.

Dentro de estos parámetros, puedes intentar descifrar el texto cifrado usando este o ese software de encriptación y este o ese algoritmo, y posiblemente puedas tener suerte. Posiblemente no. Tal vez el texto cifrado se cifró utilizando un algoritmo oscuro, o más de una vez. Alguien lo adivina.

¿Tiene más información que aportar al problema? Por ejemplo, sabes que el texto fue cifrado por tu primo Bob, sabes que Bob usa PGP, y Bob siempre te está diciendo lo que es un gran algoritmo Blowfish. Este tipo de información podría simplificar la tarea en cuestión.

También hay un foro de criptografía en StackExchange.

    
respondido por el user35648 20.12.2013 - 03:45
fuente
1

@AardvarkSoup hace un gran trabajo al mostrar las formas en que puede diagnosticar el algoritmo de cifrado con una clave y un poco de texto cifrado.

Dado que un estudiante pregunta, también señalaré que en la práctica generalmente no hay misterio. Diferentes protocolos y estándares manejan esto de manera diferente, pero la mayoría de las veces hay un formato para aceptar usar un mecanismo de cifrado dado. SSL, por ejemplo, tiene un apretón de manos. El correo electrónico cifrado tendrá un encabezado en claro. En los sistemas primitivos, el esquema de cifrado puede estar codificado en ambos extremos.

La filosofía general es que lo único que debe permanecer en secreto es la clave. No hay nada secreto sobre el método de encriptación: debería estar bien divulgarlo, por lo que no hay ningún valor para ofuscarlo y todas las razones para facilitar los sistemas involucrados en la transmisión de información.

Dicho esto: el objetivo con el texto cifrado es ser aleatorio. Si bien es posible que obtenga información de la clave, el objetivo es que el texto cifrado sea tan parecido a una cadena aleatoria de valores sin sentido que no proporcione ninguna indicación del contenido. Entonces, si puede analizar el texto cifrado y decir fácilmente "esto parece el esquema de encriptación X" es viable preocuparse de que este cifrado NO sea adecuadamente aleatorio ...

    
respondido por el bethlakshmi 21.12.2013 - 00:30
fuente
0

En general, no sin información adicional como un binario que puede realizar el cifrado o descifrado.

En la práctica, probablemente muy a menudo. El método más simple es tomar el texto cifrado, la clave y la lista de funciones de descifrado que sospecha que pueden usarse, y continuar aplicándolas al texto cifrado hasta que obtenga algo que (a) en realidad descifra (muchas combinaciones de texto cifrado y clave no se aplicarán). ser capaz de descifrar), y (b) descifrar a texto sin formato significativo. Posiblemente puedes usar cosas como la longitud de la clave, etc.

Pero hay un número infinito de posibles esquemas de encriptación que puedes crear, incluso si solo existieran unas pocas primitivas criptográficas fundamentales. Incluso comenzando con una sola función de encriptación es AES-128, podría hacer un número infinito de variaciones en él. Luego, puede cifrar un mensaje con AES-128-CBC y cifrarlo nuevamente con la misma clave. O puede cifrarlo una vez, invertir la clave en modo bit y volver a cifrarla. O puede alterar la clave al seleccionar una cadena aleatoria específica incorporada en su algoritmo en el segundo cifrado. O invierta la primera mitad de la clave, pero no la segunda mitad, o intercale la clave de alguna manera. Puede cambiar el modo de cifrado de bloque de CBC a OFB, CTR, CFB, GCM, CCM, etc. Y otra vez, desde podría cifrar el texto cifrado con cualquier número de aplicaciones de AES (y podría variar estas opciones de una manera predeterminada), obtendrá un número infinito de algoritmos de cifrado potenciales. Puede modificar los parámetros fijos de AES, cambiando el número de, por ejemplo, de 10 a 13, o alterando el cuadro de S de Rjindael, o el paso mixcolumns, o ... (Por supuesto, debe tener mucho cuidado al hacerlo, muchos de ellos aparentemente benignos los cambios debilitarán drásticamente la seguridad del algoritmo; por ejemplo, las cajas S se construyeron específicamente para ser resistentes al criptoanálisis diferencial). Y esto es solo con comenzar con un tipo de función de encriptación, mientras que en realidad hay muchas que se basan en principios totalmente diferentes. Nunca recomendaría construir tu propio cifrado, a menos que solo fuera un proyecto de juguete y reconocieras completamente lo inseguro que es probable.

Por supuesto, la idea general del principio de Kerckhoffs es que la seguridad de sus datos debe basarse únicamente en mantener su clave secreta, independientemente de si sus atacantes conocen sus funciones de cifrado / descifrado. Es fácil cambiar a una nueva clave, pero es mucho más difícil implementar cambios en los algoritmos existentes cuando hay fallas, especialmente si están en uso y se implementan ampliamente. Por ejemplo, considere cuántos servidores web y navegadores web todavía utilizan protocolos y modos de SSL / TLS con fallas conocidas varios años después Las fallas fueron ampliamente publicadas ).

    
respondido por el dr jimbob 20.12.2013 - 21:23
fuente

Lea otras preguntas en las etiquetas