stringtranslate.com

Robo de texto cifrado

En criptografía , el robo de texto cifrado ( CTS ) es un método general de utilizar un modo de operación de cifrado en bloque que permite el procesamiento de mensajes que no son divisibles uniformemente en bloques sin dar lugar a ninguna expansión del texto cifrado , a costa de una complejidad ligeramente mayor.

Características generales

El robo de texto cifrado es una técnica para cifrar texto sin formato utilizando un cifrado de bloque, sin rellenar el mensaje a un múltiplo del tamaño del bloque, de modo que el texto cifrado tenga el mismo tamaño que el texto sin formato.

Lo hace alterando el procesamiento de los dos últimos bloques del mensaje. El procesamiento de todos los bloques, excepto los dos últimos, no se modifica, pero una parte del texto cifrado del penúltimo bloque se "roba" para rellenar el último bloque de texto sin formato. A continuación, el bloque final rellenado se cifra como de costumbre.

El texto cifrado final, para los dos últimos bloques, consta del penúltimo bloque parcial (con la parte "robada" omitida) más el bloque final completo, que tiene el mismo tamaño que el texto sin formato original.

El descifrado requiere descifrar primero el bloque final y luego restaurar el texto cifrado robado en el penúltimo bloque, que luego se puede descifrar como de costumbre.

En principio, se puede utilizar cualquier modo de operación de cifrado de bloques orientado a bloques , pero los modos similares a cifrado de flujo ya se pueden aplicar a mensajes de longitud arbitraria sin relleno, por lo que no se benefician de esta técnica. Los modos de operación comunes que se combinan con el robo de texto cifrado son el libro de códigos electrónico (ECB) y el encadenamiento de bloques de cifrado (CBC).

El robo de texto cifrado para el modo ECB requiere que el texto plano tenga más de un bloque . Una posible solución es utilizar un modo de operación de cifrado de bloques similar a un cifrado de flujo cuando la longitud del texto sin formato es de un bloque o menos, como los modos CTR, CFB u OFB.

El robo de texto cifrado para el modo CBC no requiere necesariamente que el texto sin formato tenga más de un bloque . En el caso de que el texto sin formato tenga una longitud de un bloque o menos, el vector de inicialización (IV) puede actuar como bloque anterior de texto cifrado. En este caso se deberá enviar un IV modificado al receptor. Esto puede no ser posible en situaciones donde el remitente no puede elegir libremente el IV cuando se envía el texto cifrado (por ejemplo, cuando el IV es un valor derivado o preestablecido), y en este caso el robo de texto cifrado para el modo CBC solo puede ocurren en textos planos de más de un bloque.

Para implementar el cifrado o descifrado CTS de datos de longitud desconocida, la implementación debe retrasar el procesamiento (y almacenar en el buffer) los dos bloques de datos más recientes, para que puedan procesarse adecuadamente al final del flujo de datos.

Formato de texto cifrado

Hay varias formas diferentes de organizar el texto cifrado para su transmisión. Los bits de texto cifrado son los mismos en todos los casos, sólo que se transmiten en un orden diferente, por lo que la elección no tiene implicaciones de seguridad; es puramente una cuestión de conveniencia de implementación.

La numeración aquí está tomada de Dworkin, quien los describe todos. El tercero es el más popular y descrito por Daemen y Schneier ; Meyer describe un esquema relacionado, pero incompatible (con respecto al orden de bits y el uso de claves).

CS1

Podría decirse que la forma más obvia de organizar el texto cifrado es transmitir el penúltimo bloque truncado, seguido del bloque final completo. Esto no es conveniente para el receptor por dos motivos:

  1. En cualquier caso, el receptor debe descifrar primero el bloque final y
  2. Esto da como resultado que el bloque final no esté alineado con un límite natural, lo que complica las implementaciones de hardware.

Esto tiene la ventaja de que, si el bloque de texto plano final resulta ser un múltiplo del tamaño del bloque, el texto cifrado es idéntico al del modo de operación original sin robo de texto cifrado.

CS2

A menudo es más conveniente intercambiar los dos últimos bloques de texto cifrado, de modo que el texto cifrado termine con el bloque final completo, seguido del penúltimo bloque truncado. Esto da como resultado bloques de texto cifrado naturalmente alineados.

Para mantener la compatibilidad con los modos sin robo, la opción CS2 realiza este intercambio sólo si la cantidad de texto cifrado robado es distinta de cero, es decir, el mensaje original no era un múltiplo del tamaño del bloque.

Esto mantiene la alineación natural y la compatibilidad con los modos sin robo, pero requiere tratar los casos de tamaño de mensaje alineado y no alineado de manera diferente.

CS3

La alternativa más popular intercambia incondicionalmente los dos últimos bloques de texto cifrado. Este es el orden utilizado en las descripciones siguientes.

Descripción del modo de robo de texto cifrado

Para cifrar o descifrar datos, utilice el modo de operación de cifrado de bloques estándar en todos los bloques de datos excepto en los dos últimos.

Los siguientes pasos describen cómo manejar los dos últimos bloques del texto plano, llamados P n −1 y P n , donde la longitud de P n −1 es igual al tamaño del bloque del cifrado en bits, B ; la longitud del último bloque, Pn , es de M bits; y K es la clave que está en uso. M puede variar de 1 a B , inclusive, por lo que P n podría ser un bloque completo. La descripción del modo CBC también hace uso del bloque de texto cifrado justo antes de los bloques en cuestión, C n −2 , que de hecho puede ser el IV si el texto sin formato cabe dentro de dos bloques.

Para esta descripción se utilizan las siguientes funciones y operadores:

Robo de texto cifrado del BCE

El robo de texto cifrado en modo ECB introduce una dependencia entre bloques dentro de los dos últimos bloques, lo que da como resultado un comportamiento de propagación de errores alterado para los dos últimos bloques.

Pasos de cifrado del BCE (ver figura)

Pasos de cifrado del BCE para CTS
  1. E n −1 = Cifrar ( K , P n −1 ). Cifre P n −1 para crear E n −1 . Esto es equivalente al comportamiento del modo BCE estándar.
  2. C norte = Cabeza ( mi norte −1 , METRO ). Seleccione los primeros M bits de E n −1 para crear C n . El bloque de texto cifrado final, C n , se compone de los M bits iniciales del penúltimo bloque de texto cifrado. En todos los casos, los dos últimos bloques se envían en un orden diferente al de los bloques de texto plano correspondientes.
  3. re norte = pag norte || Cola ( mi norte −1 , segundometro ). Rellene P n con los bits de orden inferior de E n −1 .
  4. C n −1 = Cifrar ( K , D n ). Cifre D n para crear C n −1 . Para los primeros M bits, esto es equivalente a lo que sucedería en el modo ECB (aparte del orden del texto cifrado). Para los últimos BM bits, esta es la segunda vez que estos datos se cifran con esta clave (ya se cifró en la producción de En −1 en el paso 2).

Pasos de descifrado del BCE

  1. D n = Descifrar ( K , C n −1 ). Descifre C n −1 para crear D n . Esto deshace el paso 4 del proceso de cifrado.
  2. mi norte −1 = C norte || Cola ( D norte , segundo - METRO ). Rellene C n con el texto cifrado extraído al final de D n (colocado allí en el paso 3 del proceso de cifrado del BCE).
  3. P norte = Cabeza ( D norte , M ). Seleccione los primeros M bits de D n para crear P n . Como se describe en el paso 3 del proceso de cifrado del BCE, los primeros M bits de D n contienen P n . Ponemos en cola este último bloque (posiblemente parcial) para su eventual salida.
  4. P norte −1 = Descifrar ( K , En −1 ) . Descifre E n −1 para crear P n −1 . Esto invierte el paso 1 del cifrado.

Propagación de errores de robo de texto cifrado del BCE

Un error de bit en la transmisión de C n −1 daría como resultado la corrupción de todo el bloque tanto de P n −1 como de P n . Un error de bit en la transmisión de C n daría como resultado la corrupción de P n −1 en todo el bloque . Este es un cambio significativo con respecto al comportamiento de propagación de errores del BCE.

Robo de texto cifrado de CBC

En CBC, ya existe interacción entre el procesamiento de diferentes bloques adyacentes, por lo que CTS tiene menos impacto conceptual en este modo. La propagación de errores se ve afectada.

Pasos de cifrado CBC

  1. X norte −1 = P norte −1 XOR C norte −2 . OR exclusivo P n −1 con el bloque de texto cifrado anterior, C n −2 , para crear X n −1 . Esto es equivalente al comportamiento del modo CBC estándar.
  2. E n −1 = Cifrar ( K , X n −1 ). Cifre X n −1 para crear E n −1 . Esto es equivalente al comportamiento del modo CBC estándar.
  3. C norte = Cabeza ( mi norte −1 , METRO ). Seleccione los primeros M bits de E n −1 para crear C n . El bloque de texto cifrado final, C n , se compone de los M bits iniciales del penúltimo bloque de texto cifrado. En todos los casos, los dos últimos bloques se envían en un orden diferente al de los bloques de texto plano correspondientes.
  4. P = P norte || 0 segundo - METRO . Rellene P n con ceros al final para crear P de longitud B . El relleno con ceros en este paso es importante para el paso 5.
  5. re norte = mi norte −1 XOR PAG . OR exclusivo E n −1 con P para crear D n . Para los primeros M bits del bloque, esto equivale al modo CBC; los primeros M bits del texto cifrado del bloque anterior, En −1 , se aplican XOR con los M bits de texto sin formato del último bloque de texto sin formato. El relleno con ceros de P en el paso 4 fue importante, porque hace que el efecto de la operación XOR en los últimos BM bits sea equivalente a copiar los últimos BM bits de E n −1 al final de D n . Estos son los mismos bits que se quitaron de E n −1 en el paso 3 cuando se creó C n .
  6. C n −1 = Cifrar ( K , D n ). Cifre D n para crear C n −1 . Para los primeros M bits, esto es equivalente a lo que sucedería en el modo CBC (aparte del orden del texto cifrado). Para los últimos BM bits, esta es la segunda vez que estos datos se cifran con esta clave (ya se cifró en la producción de En −1 en el paso 2).

Pasos para descifrar CBC

  1. D n = Descifrar ( K , C n −1 ). Descifre C n −1 para crear D n . Esto deshace el paso 6 del proceso de cifrado.
  2. C = C norte || 0 segundo - METRO . Rellene C n con ceros al final para crear un bloque C de longitud B . Estamos rellenando C n con ceros para ayudar en el paso 3.
  3. X norte = D norte XOR C . OR exclusivo D n con C para crear X n . Mirando los primeros M bits, este paso tiene el resultado de XORing C n (los primeros M bits del proceso de cifrado ' E n −1 ) con el (ahora descifrado) P n XOR Head ( E n −1 , M ) ( consulte los pasos 4-5 del proceso de cifrado). En otras palabras, tenemos CBC descifrado los primeros M bits de P n . Al observar los últimos BM bits, esto recupera los últimos BM bits de E n −1 .
  4. P n = Cabeza ( X n , M ). Seleccione los primeros M bits de X n para crear P n . Como se describe en el paso 3, los primeros M bits de X n contienen P n . Ponemos en cola este último bloque (posiblemente parcial) para su eventual salida.
  5. mi norte −1 = C norte || Cola ( X norte , BM ). Agregue los bits de cola ( BM ) de X n a C n para crear E n −1 . Como se describe en el paso 3, E n −1 se compone de todo C n (que tiene M bits de longitud) al que se le añaden los últimos BM bits de X n . Reensamblamos E n −1 (que es el mismo E n −1 visto en el proceso de cifrado) para procesarlo en el paso 6.
  6. X norte −1 = Descifrar ( K , En −1 ) . Descifre E n −1 para crear X n −1 . Esto invierte el paso de cifrado 2. X n −1 es el mismo que en el proceso de cifrado.
  7. P norte −1 = X norte −1 XOR C norte −2 . OR exclusivo X n −1 con el bloque de texto cifrado anterior, C n −2 , para crear P n −1 . Finalmente, invertimos el paso XOR del paso 1 del proceso de cifrado.

Notas de implementación del CBC

Para el robo de texto cifrado CBC, existe un método inteligente (pero opaco) para implementar el proceso de robo de texto cifrado descrito utilizando una interfaz CBC estándar. El uso de este método impone una penalización de rendimiento en la etapa de descifrado de una operación de descifrado de bloque adicional sobre lo que sería necesario usando una implementación dedicada.

Cifrado de robo de texto cifrado CBC utilizando una interfaz CBC estándar
  1. Rellene el último bloque parcial de texto plano con 0.
  2. Cifre todo el texto plano acolchado utilizando el modo CBC estándar.
  3. Intercambia los dos últimos bloques de texto cifrado.
  4. Trunca el texto cifrado a la longitud del texto sin formato original.
Robo de texto cifrado (CTS) en CBC, modo de cifrado
Robo de texto cifrado (CTS) en CBC, modo de cifrado
Descifrado de robo de texto cifrado CBC utilizando una interfaz CBC estándar
  1. D n = Descifrar ( K , C n −1 ). Descifre el penúltimo bloque de texto cifrado utilizando el modo ECB.
  2. C norte = C norte || Cola ( D norte , segundo - METRO ). Rellene el texto cifrado al múltiplo más cercano del tamaño del bloque utilizando los últimos B - M bits del descifrado del cifrado del penúltimo bloque de texto cifrado.
  3. Intercambia los dos últimos bloques de texto cifrado.
  4. Descifre el texto cifrado (modificado) utilizando el modo CBC estándar.
  5. Trunca el texto sin formato a la longitud del texto cifrado original.
Robo de texto cifrado (CTS) en CBC, modo de descifrado
Robo de texto cifrado (CTS) en CBC, modo de descifrado

Propagación de errores de robo de texto cifrado CBC

Un error de bit en la transmisión de C n −1 daría como resultado la corrupción de todo el bloque tanto de P n −1 como de P n . Un error de bit en la transmisión de C n daría como resultado un error de bit correspondiente en P n y la corrupción de P n −1 en todo el bloque .

Referencias