Algoritmo de fuerza bruta para romper la clave simétrica. ¿Cómo encontrar el programa cuando la clave actual es la correcta?

3

En un programa de fuerza bruta, las claves secuenciales se comparan con la clave pública para encontrar la clave privada correspondiente.

Mi pregunta es, ¿cómo se realiza la prueba con cada clave que le permita concluir que ha encontrado la clave correcta para ingresar el texto cifrado?

Supongo que el texto se lee después de cada prueba y si se encuentran algunas palabras clave, sabrá que esta es la clave correcta, pero si es así, es fácil contrarrestar esta técnica mezclando el texto con un algoritmo de cifrado tradicional y luego con La clave simétrica.

    
pregunta Rogelio 26.01.2017 - 11:56
fuente

2 respuestas

4

Lo ideal es que tengas una idea de lo que estás buscando, pero en la mayoría de las situaciones, tu texto simple debería ser relativamente fácil de distinguir. Es posible que pueda identificarlo porque contiene palabras / gramática en inglés, o se ajusta a un formato de archivo conocido, por ejemplo.

Distancia de la unicidad

Si el texto cifrado es lo suficientemente corto, el problema podría ser que existe más de un texto simple válido para un solo texto cifrado, aunque solo uno de ellos es el mensaje deseado. Las claves válidas adicionales son espurias. Este es el concepto de 'distancia unicidad': la longitud de un texto cifrado necesario para que no haya claves espurias.

  

Considere un ataque a la cadena de texto cifrado "WNAIW" cifrada usando un cifrado Vigenère con una clave de cinco letras. Posiblemente, esta cadena se podría descifrar en cualquier otra cadena: RIVER y WATER son ambas posibilidades para ciertas claves. Esta es una regla general de criptoanálisis: sin información adicional es imposible descifrar este mensaje.

enlace

En el caso de que haya claves espurias, necesitas una idea aún más específica de lo que estás buscando (por ejemplo, palabras clave como sugeriste).

De lo contrario, como atacante, necesita suficiente texto cifrado para alcanzar la distancia de unicidad para estar seguro.

  

Para DES, la distancia de unicidad es de 8.2 bytes. Para los cifrados de 128 bits, es de unos 19 bytes.

     

Esto significa que si estás tratando de forzar el DES con fuerza bruta necesitas dos bloques de texto cifrado. (La longitud del bloque de DES es de 8 bytes). Descifre el primer bloque de texto cifrado con una clave después de otra. Si el texto simple resultante se parece al inglés, descifre el segundo bloque con la misma clave. Si el segundo bloque de texto sin formato también se parece al inglés, ha encontrado la clave correcta.

enlace

Oscureciendo el texto simple

Por lo tanto, ofuscar más el texto en claro, como usted sugirió, podría ser efectivo en teoría siempre y cuando el atacante no tuviera el conocimiento interno requerido, y no estuvieran revisando la ofuscación. Esto debe ser considerado cuidadosamente, porque el atacante puede haber encontrado con éxito la clave correcta, y es solo una cuestión de identificar que lo ha hecho.

También, debemos considerar que ciertos (o muchos) métodos de oscuridad podrían ser identificables. Algo trivial como la codificación Base64 sería trivial de identificar, y fácilmente programable como una comprobación. Incluso si el texto en claro era en realidad otro texto cifrado, también hay técnicas para identificarlos (aunque no son triviales) (por ejemplo, enlace ).

Como resultado, aunque esto puede hacer que la vida de un atacante sea más difícil, es más que una simple seguridad que una seguridad, y aún así me aseguraría de que el nivel de encriptación fuera adecuado aunque el texto no estuviera oculto, es decir, no piense que se debe confiar en él como parte del mecanismo de seguridad.

    
respondido por el itscooper 26.01.2017 - 12:40
fuente
1

Debe verificar el contenido del bloque de prueba descifrado. Depende de su contenido, cómo hacerlo.

En el mejor de los casos, tiene algunos datos de suma de comprobación o de CRC (es particularmente útil para descifrar discos duros: la tabla de particiones msdos contiene una suma de comprobación por defecto).

Alternativamente, tienes que hacer algo diferente. Por lo general, puede verificar si hay encabezados u otros formatos. En la mayoría de los casos no es tan difícil.

La probabilidad de una verificación exitosa en un bloque de datos aleatorios debe ser significativamente menor, como la probabilidad de encontrar la clave mediante una búsqueda aleatoria. Es decir. Si tiene un cifrado de 256 bits, las comprobaciones deberían dar un resultado positivo con un P << 2^-256 en datos aleatorios.

El código de prueba también debe ser rápido , porque se ejecutará una vez después de cada decodificación de bloque.

    
respondido por el peterh 26.01.2017 - 12:28
fuente

Lea otras preguntas en las etiquetas