¿Por qué el intercambio de dos bloques de texto cifrado adyacentes no afecta el descifrado de bloques subsiguientes encriptados en modo PCBC?

¿Por qué el intercambio de dos bloques de texto cifrado adyacentes no afecta el descifrado de bloques subsiguientes encriptados en modo PCBC?

Porque XOR es ambos:

  • conmutativo ([matemáticas] A \ oplus B = B \ oplus A [/ matemáticas]) y
  • asociativo ([matemáticas] A \ oplus (B \ oplus C) = (A \ oplus B) \ oplus C [/ matemáticas]).

Estas son las propiedades que hacen de XOR una de las operaciones más comunes en criptografía.

Siguiendo la notación utilizada en el artículo de Wikipedia al que señaló, supongamos que intercambiamos accidentalmente el segundo y el tercer bloque de texto cifrado ([matemática] C_1 [/ matemática] y [matemática] C_2 [/ matemática] respectivamente).

Ahora, por definición, sabemos que [math] P_0 [/ math] (el primer bloque de texto sin formato) se descifró correctamente. Eso significa que, en lugar de lo esperado:

[matemáticas] P_1 = D_K (C_1) \ oplus P_0 \ oplus C_0 [/ math]

[matemáticas] P_2 = D_K (C_2) \ oplus P_1 \ oplus C_1 \\ ~~~~ = D_K (C_2) \ oplus (D_K (C_1) \ oplus P_0 \ oplus C_0) \ oplus C_1 \\ ~~~~ = D_K (C_2) \ oplus D_K (C_1) \ oplus P_0 \ oplus C_1 \ oplus C_0 [/ math]

[matemáticas] P_3 = D_K (C_3) \ oplus P_2 \ oplus C_2 \\ ~~~~ = D_K (C_3) \ oplus (D_K (C_2) \ oplus D_K (C_1) \ oplus P_0 \ oplus C_1 \ oplus C_0) \ oplus C_2 \\ ~~~~ = D_K (C_3) \ oplus D_K (C_2) \ oplus D_K (C_1) \ oplus P_0 \ oplus C_2 \ oplus C_1 \ oplus C_0 [/ math]

tenemos (intercambiando [matemática] C_1 [/ matemática] y [matemática] C_2 [/ matemática] en todas partes, y resaltando los componentes incorrectos):

[matemáticas] P_1 = \ color {rojo} {D_K (C_2)} \ oplus P_0 \ oplus C_0 [/ matemáticas]

[matemáticas] P_2 = \ color {rojo} {D_K (C_1)} \ oplus P_1 \ oplus C_2 \\ ~~~~ = \ color {rojo} {D_K (C_1)} \ oplus (\ color {rojo} {D_K (C_2)} \ oplus P_0 \ oplus C_0) \ oplus C_2 \\ ~~~~ = D_K (C_2) \ oplus D_K (C_1) \ oplus P_0 \ oplus \ color {red} {C_2} \ oplus C_0 [/ math ]

[matemáticas] P_3 = D_K (C_3) \ oplus P_2 \ oplus \ color {rojo} {C_1} \\ ~~~~ = D_K (C_3) \ oplus (D_K (C_2) \ oplus D_K (C_1) \ oplus P_0 \ oplus \ color {red} {C_2} \ oplus C_0) \ oplus \ color {red} {C_1} \\ ~~~~ = D_K (C_3) \ oplus D_K (C_2) \ oplus D_K (C_1) \ oplus P_0 \ oplus C_2 \ oplus C_1 \ oplus C_0 [/ math]

Claramente, los bloques de texto simple [matemática] P_1 [/ matemática] y [matemática] P_2 [/ matemática] fueron descifrados incorrectamente, pero por el poder de la conmutación y asociación de XOR, [matemática] P_3 [/ matemática] no se ve afectada.

El enlace a la diferencia explicativa está muerto.

El documento de referencia está disponible a través de Springer Link aquí: El uso de cifrado en Kerberos para la autenticación de red. Vale la pena leerlo si estás interesado en las cosas criptográficas.

La afirmación mencionada en el artículo de Wikipedia se encuentra al final de la sección 4.1:

Sin embargo, PCBC tiene una deficiencia diferente: el intercambio de dos bloques de texto cifrado ensuciará el texto claro de los bloques correspondientes (y todos los bloques intermedios) tras el descifrado , pero debido a la naturaleza del método XOR con el texto claro y los textos cifrados, los errores se cancelan, y Los bloques siguientes se descifran correctamente.

Tenga en cuenta la sección que destaqué. Debe quedar claro a partir de mi ejemplo trabajado anteriormente que los bloques intercambiados no necesitan ser adyacentes para que la recuperación sea posible. Si hubiera intercambiado los bloques de texto cifrado 1 y 100, entonces los bloques de texto sin formato del 1 al 100 tendrían errores, pero todo después del bloque 100 estaría bien.