número de pares de texto cifrado-texto simple necesarios en doble cifrado

5

Sé que en el cifrado único, simplemente necesitaría al menos 1 par de texto cifrado de texto sin formato para realizar una búsqueda exhaustiva de claves; continúa probando diferentes claves hasta que se encuentre una que corresponda correctamente al par que tienes.

Lo ideal sería tener más pares, ya que entonces podrías averiguar con certeza si esa clave es correcta al intentarlo con los otros pares.

Sin embargo, cuando se utiliza doble cifrado con dos claves de k-bit elegidas de manera uniforme y aleatoria, ¿cuántos pares de texto cifrado se necesitarían para identificar las claves K1 y K2 en una búsqueda exhaustiva de claves?

    
pregunta A.N 25.10.2015 - 00:51
fuente

2 respuestas

1

Como mínimo, no puedo ver por qué necesitaría más de uno.

Básicamente, simplemente estás combinando el espacio de claves cifrándolo dos veces con dos claves.

Simplemente descifra el texto cifrado con cada valor en el espacio K2, luego descifra cada resultado con cada valor en el espacio K1. Cuando encuentras una coincidencia, tienes el K1 correcto y un K2.

    
respondido por el thexacre 25.10.2015 - 04:28
fuente
0

Si está enviando un mensaje de un solo bloque con un solo cifrado, existe una posibilidad distinta de cero de que varias claves distintas asignen un texto sin formato específico a un texto cifrado específico o que no haya claves que funcionen.

Un cifrado de bloque es simplemente una permutación pseudoaleatoria. Idealmente, la tecla simplemente selecciona una permutación aleatoria del espacio de entrada a un espacio de salida, y es necesariamente una permutación para que la función de descifrado pueda revertirla.

Como ejemplo de juguete de una permutación pseudoaleatoria con un espacio de clave muy pequeño y un espacio de entrada / salida muy pequeño, imagine la siguiente función de cifrado que tiene una clave de 2 bits (0,1,2 o 3) que permite un mensaje de entrada de 2 bits en un mensaje de salida de 2 bits. Específicamente:

  • con clave 0: las entradas {0,1,2,3} respectivamente se cifran en los textos cifrados {2,0,3,1}
  • con la clave 1: {0,1,2,3} respectivamente cifradas a {1,0,3,2}
  • con la clave 2: {0,1,2,3} respectivamente cifradas a {3,1,2,0}
  • con la clave 3: {0,1,2,3} respectivamente cifradas a {3,1,0,2}

(Estas permutaciones se generaron aleatoriamente en python con scipy.random.permutation(range(4)) ).

Note en este ejemplo de juguete, que para algunos pares como (m = 1, c = 2) y (m = 0, c = 0) donde no hay teclas que funcionen. Mientras tanto, para otros pares como (m = 0, c = 3) y (m = 1, c = 1) hay varias teclas (en ambos casos k = 2 o k = 3) que funcionarían.

Por lo tanto, como caso más desfavorable para esta función de encriptación de juguete, necesitarías 3 bloques para identificarte de manera única. (Por ejemplo, si sus dos primeros mensajes fueran 0 y 1, no podría distinguir entre las teclas 2 y 3 hasta que obtuviera una tercera entrada).

Sin embargo, con bloques grandes que tengan múltiples colisiones entre las mismas dos claves será muy poco probable. Por lo tanto, en la práctica, si fuerza dos pares de mensajes cifrados de un solo bloque / texto cifrado con una probabilidad abrumadora, solo habrá una clave que funcione para ambos.

Tenga en cuenta que hacer doble cifrado (con dos claves independientes K1, K2) funciona exactamente igual que el análisis de un solo cifrado de una clave que es la concatenación de K1 y K2.

    
respondido por el dr jimbob 23.03.2016 - 08:40
fuente

Lea otras preguntas en las etiquetas