En la criptografía, el texto cifrado del que roba (CTS) es un método general de usar un modo de operación de la cifra de bloque que permita procesar de los mensajes que no son uniformemente divisibles en bloques sin dando por resultado ninguna extensión del texto cifrado, en el coste de complejidad perceptiblemente creciente.
Características generales
El robo del texto cifrado es la técnica de alterar el proceso de los dos bloques pasados del Plaintext, dando por resultado una transmisión reordenada de los dos bloques pasados de texto cifrado y ninguna extensión del texto cifrado (es decir, el texto cifrado resultante es la misma longitud que el plaintext, con respecto al texto cifrado más largo que resultaría de la
mayoría de los esquemas del acolchado usados con modos del BCE y de CBC). Esto es lograda rellenando el bloque pasado (que es posiblemente incompleto) con los bites de peso inferior a partir del segundo al bloque pasado del
texto cifrado (que roba el texto cifrado a partir del segundo al bloque pasado). (Ahora) el bloque pasado completo se cifra, y
después se intercambia por el segundo al bloque pasado del texto cifrado, que entonces se trunca a la longitud del bloque final del plaintext (así quitando los pedacitos que fueron robados), dando por resultado el texto cifrado de la misma longitud que el tamaño del mensaje original. En todos los casos, el proceso de todos pero los dos bloques pasados es sin cambios.
El esquema descrito es constante con el Daemen y el Schneier ; Meyer describe un esquema relacionado, pero incompatible (con respecto a ordenar del pedacito y al uso dominante).
En principio, cualquier modo de operación block-oriented de la cifra de bloque puede ser utilizado (corriente-cifra-como modos puede ser aplicado ya a los mensajes de la longitud arbitraria sin el acolchado, así que no se benefician de esta técnica). El modo de operación común de la cifra de bloque que se junta con el robo del texto cifrado es los modos del BCE y de CBC.
El texto cifrado que roba para el modo del BCE requiere el plaintext ser más largo de un bloque . Una solución alternativa posible es utilizar una cifra de corriente como el modo de operación de la cifra de bloque cuando la longitud del plaintext es un bloque o menos, tal como los modos del CTR, de CFB o de OFB.
El texto cifrado que roba para el modo CBC no requiere necesario el plaintext ser más largo de un bloque . En el caso donde está un bloque el plaintext de largo o menos el IV puede actuar como el bloque anterior de texto cifrado. En este caso un IV modificado se debe enviar al receptor. Esto puede no ser posible en las situaciones donde el IV no se puede fijar por el remitente cuando se envía el texto cifrado (e., cuando el IV es un valor derivado o preestablecido), y en este caso el texto cifrado que roba para el modo de CBC puede ocurrir solamente en plaintexts más de largo de un bloque.
Para ejecutar la encripción o el desciframiento de CTS para los datos de la longitud desconocida, la puesta en práctica debe retrasar el proceso (y almacenador intermediario) de los dos bloques más recientes de datos, para poderlos procesar correctamente en el extremo de la secuencia de datos.
Texto cifrado que roba la descripción del modo
Para cifrar o descifrar datos, utilizar el modo de operación
estándar de la cifra de bloque en todos pero los dos bloques pasados de datos.
Los pasos siguientes describen cómo manejar los dos bloques pasados del plaintext, llamados el n −1 del del P y el n del del P, donde la longitud del n −1 del del P iguala el tamaño de bloque de la cifra en pedacitos, el B, la longitud del bloque pasado, n del del P, es pedacitos del M, y el K es la llave que es funcionando. El M puede extenderse a partir de la 1 al B, inclusivo, así que el n del del P podría posiblemente ser un bloque completo. La descripción del modo de CBC también hace uso del bloque del texto cifrado apenas anterior a los bloques referidos, el n −2 del del C, que puede de hecho ser el IV si el plaintext cabe dentro de dos bloques. Para esta descripción, utilizan las funciones y a los operadores siguientes:
Cabeza (datos, un ): vuelve el primer que los pedacitos de un de los “datos” encadenan.
Cola (datos, un ): vuelve el pasado que los pedacitos de un de los “datos” encadenan.
Cifrar ( K, datos): utilizar la cifra de bloque subyacente adentro cifran modo en la secuencia de los “datos” usar el dominante K .
Decrypt ( K, datos): utilizar la cifra de bloque subyacente en modo del decrypt en la secuencia de los “datos” usar el dominante K .
XOR : Bitwise Exclusivo-O. Equivalente bitwise a la adición sin uso de un pedacito de llevar.
||: Operador de encadenamiento. Combinar las secuencias de cualquier lado del operador.
0 un : una secuencia del pedacitos de un 0.
Robo del texto cifrado del BCE
El texto cifrado que roba en modo del BCE introduce una dependencia intrabloque dentro de los dos bloques pasados, dando por resultado el comportamiento alterado de la propagación de error para los dos bloques pasados.
Pasos de la encripción del BCE de
El n del del E −1 = cifra (el n −1 del del K, del P ). Cifrar el n −1 del del P para crear el n −1 del del E . Esto es equivalente al comportamiento del modo estándar del BCE. n del del C = cabeza ( n −1 del del E, M ). Seleccionar los primeros pedacitos del M del n −1 del del E para crear el n del del C . El bloque final del texto cifrado, n del del C, se compone de los pedacitos principales del M del bloque segundo-a-pasado del texto cifrado. En todos los casos, los dos bloques pasados se envían en una diversa orden que los bloques correspondientes del plaintext. n del del D = n del del P || Cola ( M del − del n −1, del B del del E ). Rellenar el n del del P con los bites de peso inferior del n −1 del del E . El n del del C −1 = cifra (el n del del K, del D ). Cifrar el n del del D para crear el n −1 del del C . Para los primeros pedacitos del M, esto es equivalente a qué sucedería en modo del BCE (con excepción del texto cifrado que ordena). Para los pedacitos pasados del M del − del B, éste es la segunda vez que estos datos se han cifrado bajo esta llave (fueron cifrados ya en la producción del n −1 del del E en el paso 2).
Pasos del desciframiento del BCE de
n del del D = Decrypt ( n −1 del del K, del C ). Descifrar el n −1 del del C para crear el n del del D . Esto deshace el paso 4 del proceso de la encripción. n del del E −1 = n del del C || Cola ( M del − del n , del B del del D ). Rellenar el n del del C con el texto cifrado extraído en el extremo de cola del n del del D (puesto allí en el paso 3 del proceso de la encripción del BCE). n del del P = cabeza ( n del del D, M ). Seleccionar los primeros pedacitos del M del n del del D para crear el n del del P . Según lo descrito en el paso 3 del proceso de la encripción del BCE, los primeros pedacitos del M del n del del D contienen el n del del P . Hacemos cola este último (posiblemente) bloque parcial para la salida eventual. n del del P −1 = Decrypt ( n −1 del del K, del E ). Descifrar el n −1 del del E para crear el n −1 del del P . Esto invierte el paso 1. de la encripción
Texto cifrado del BCE que roba la propagación de error
Un error de pedacito en la transmisión del n −1 del del C daría lugar a la corrupción bloquear-ancha del n del del n −1 y del P del del P . Un error de pedacito en la transmisión del n del del C daría lugar a la corrupción bloquear-ancha del n −1 del del P . Esto es un cambio significativo del comportamiento de la propagación de error del BCE.
Robo del texto cifrado de CBC
En CBC, hay ya interacción entre el proceso de diversos bloques adyacentes, así que CTS tiene menos impacto conceptual en este modo. La propagación de error es afectada.
Pasos de la encripción de CBC de
n del del X −1 = n −2 del del C del n −1 XOR del del P . Exclusivo-O n −1 con el bloque anterior del texto cifrado, n −2 del del P del del C, crear el n −1 del del X . Esto es equivalente al comportamiento del modo estándar de CBC. El n del del E −1 = cifra (el n −1 del del K, del X ). Cifrar el n −1 del del X para crear el n −1 del del E . Esto es equivalente al comportamiento del modo estándar de CBC. n del del C = cabeza ( n −1 del del E, M ). Seleccionar los primeros pedacitos del M del n −1 del del E para crear el n del del C . El bloque final del texto cifrado, n del del C, se compone de los pedacitos principales del M del bloque segundo-a-pasado del texto cifrado. En todos los casos, los dos bloques pasados se envían en una diversa orden que los bloques correspondientes del plaintext. P = n del del P || 0 M del − del B . Rellenar el n del del P con ceros en el extremo para crear el P del B de la longitud. El acolchado cero en este paso es importante para el del paso 5. n del del D = P del n −1 XOR del del E . Exclusivo-O n −1 del del E con el P para crear el n del del D . Para los primeros pedacitos del M del bloque, esto es equivalente al modo de CBC; los primeros pedacitos del M del texto cifrado del bloque anterior, n −1 del del E, son XORed con los pedacitos del M del plaintext del bloque pasado del plaintext. El acolchado cero del P en el paso 4 era importante, porque hace el efecto de la operación de XOR en los pedacitos pasados del M del − del B equivalentes a copiar los pedacitos pasados del M del − del B del n −1 del del E al extremo del n del del D . Éstos son los mismos pedacitos que fueron pelados del n −1 del del E en el paso 3 cuando el n del del C fue creado. El n del del C −1 = cifra (el n del del K, del D ). Cifrar el n del del D para crear el n −1 del del C . Para los primeros pedacitos del M, esto es equivalente a qué sucedería en modo de CBC (con excepción del texto cifrado que ordena). Para los pedacitos pasados del M del − del B, éste es la segunda vez que estos datos se han cifrado bajo esta llave (fueron cifrados ya en la producción del n −1 del del E en el paso 2).
Pasos del desciframiento de CBC de
n del del D = Decrypt ( n −1 del del K, del C ). Descifrar el n −1 del del C para crear el n del del D . Esto deshace el paso 6 del proceso de la encripción. C = n del del C || 0 M del − del B . Rellenar el n del del C con ceros en el extremo para crear un C del bloque del B de la longitud. Somos el n del del C del acolchado con los ceros a ayudar en del paso 3. n del del X = C del n XOR del del D . Exclusivo-O n del del D con el C para crear el n del del X . Mirando los primeros pedacitos del M, este paso tiene el resultado del n (los primeros pedacitos del del C de XORing del M de la encripción procesó el n −1 del del E ) con la cabeza (ahora descifrada) del n XOR del del P ( n −1 del del E, M ) (véase los pasos 4-5 del proceso de la encripción). Es decir tenemos CBC descifrados los primeros pedacitos del M del n del del P . Mirando los pedacitos pasados del M del − del B, esto recupera los pedacitos pasados del M del − del B del n −1 del del E . n del del P = cabeza ( n del del X, M ). Seleccionar los primeros pedacitos del M del n del del X para crear el n del del P . Según lo descrito en el paso 3, los primeros pedacitos del M del n del del X contienen el n del del P . Hacemos cola este último (posiblemente) bloque parcial para la salida eventual. n del del E −1 = n del del C || Cola ( M del − del n , del B del del X ). Añadir los pedacitos de la cola ( M del − del B ) del n del del n a del C del del X para crear el n −1 del del E . Según lo descrito en el paso 3, el n −1 del del E se compone de todo el n (que del del C sea pedacitos del M de largo) añadido con los pedacitos pasados del M del − del B del n del del X . Volvemos a montar el n −1 (que del del E es el mismo n −1 del del E considerado en el proceso de la encripción) para procesar en del paso 6. n del del X −1 = Decrypt ( n −1 del del K, del E ). Descifrar el n −1 del del E para crear el n −1 del del X . Esto invierte el n −1 del del X del paso 2. de la encripción está igual que en el proceso de la encripción. n del del P −1 = n −2 del del C del n −1 XOR del del X . Exclusivo-O n −1 con el bloque anterior del texto cifrado, n −2 del del X del del C, crear el n −1 del del P . Finalmente, invertimos el paso de XOR del paso 1 del proceso de la encripción.
Notas de la puesta en práctica de CBC
Para el texto cifrado de CBC que roba, hay un método listo (pero opaco) de ejecutar del texto cifrado descrito que roba proceso usar un interfaz estándar de CBC. Usar este método impone una pena del funcionamiento en la etapa del desciframiento de una operación adicional del desciframiento del bloque sobre cuál sería necesario usar una puesta en práctica dedicada.
Texto cifrado de CBC que roba la encripción usar un interfaz estándar de CBC de
Cifrar el plaintext a través del bloque completo pasado usar el modo estándar de CBC. Rellenar el bloque parcial pasado con el texto cifrado que se arrastra del completo pasado del bloque Cifrar el pasado del bloque (plaintext más el texto cifrado) Intercambiar los dos bloques pasados del texto cifrado. Truncar el texto cifrado a la longitud del plaintext original.
Texto cifrado de CBC que roba el desciframiento usar un interfaz estándar de CBC de
n del del D = Decrypt ( n −1 del del K, del C ). Descifrar el segundo al bloque pasado del texto cifrado. n del del C = n del del C || Cola ( M del − del n , del B del del D ). Rellenar el texto cifrado al múltiplo más cercano del tamaño de bloque usar los pedacitos pasados del M del − del B del desciframiento de la cifra de bloque del bloque segundo-a-pasado del texto cifrado. Intercambiar los dos bloques pasados del texto cifrado. Descifrar el texto cifrado (excepto el bloque del último del now) usar el modo estándar de CBC. Truncar el plaintext a la longitud del texto cifrado original.
Texto cifrado de CBC que roba la propagación de error
Un error de pedacito en la transmisión del n −1 del del C daría lugar a la corrupción bloquear-ancha del n del del n −1 y del P del del P . Un error de pedacito en la transmisión del n del del C daría lugar a un error de pedacito correspondiente en el n del del P, y en la corrupción bloquear-ancha del n −1 del del P .
ZenithicLuigi Antonio Sabbatini