Préstamo de texto cifrado

El robo de texto cifrado ( CTS) en criptografía es un  método común de usar el modo de cifrado de bloques que le permite procesar mensajes de longitud arbitraria a expensas de un ligero aumento en la complejidad de la implementación. A diferencia del relleno , el texto cifrado resultante no se convierte en un múltiplo del tamaño del bloque del cifrado utilizado, sino que permanece igual a la longitud del texto sin formato original . [una]

Historia

La idea detrás del método de préstamo de texto cifrado no es nueva. En 1982, se propuso un algoritmo para procesar texto sin formato de longitud arbitraria en el modo de retroalimentación de texto cifrado (CBC) [2] , más tarde llamado CBC-CSX, que se ha utilizado activamente desde principios de la década de 1980 en el IMB CUSP (Programa de soporte de unidades criptográficas). ) arquitectura. . En 2012, se demostró que este método era vulnerable a un simple ataque de texto sin formato elegido . [3]

En 2010, el Instituto Nacional de Estándares y Tecnología (NIST) publicó un documento que describía 3 opciones para usar el método de préstamo junto con el modo de encriptación CBC. [1] Se denominan CBC-CS1, CBC-CS2 y CBC-CS3 y se diferencian entre sí solo en la forma en que se ordenan los bits del texto cifrado. El modo CBC-CS2 se conocía antes [4] , así como el modo CBC-CS3, especificado en los comentarios al protocolo Kerberos 5 [5]

Características generales

La recomendación NIST SP800-38A [6] establece que una de las restricciones en el uso de modos de cifrado de bloque es la necesidad de tener un bloque de texto sin formato que tenga la misma longitud que el bloque del cifrado que se utiliza. Para resolver este problema, puede utilizar el método de relleno de texto cifrado . Sin embargo, en este caso, la longitud del texto cifrado en comparación con el mensaje original aumenta por el número de bits utilizados para complementar el bloque de cifrado.

El préstamo de texto cifrado no tiene esta desventaja al cambiar la forma en que se procesan los dos últimos bloques del mensaje. [5] El procesamiento de todos menos los dos últimos bloques permanece sin cambios, pero parte del penúltimo bloque de texto cifrado se "toma prestado" para rellenar el último. A continuación, el último bloque rellenado se cifra de forma normal. El texto cifrado final de los dos últimos bloques consiste en la parte del penúltimo bloque (con la parte "prestada" omitida) y el último bloque completo.

El descifrado requiere primero descifrar el último bloque y luego devolver el texto cifrado "prestado" al penúltimo bloque, que luego se puede descifrar como de costumbre.

En principio, se puede usar cualquier modo de cifrado de bloques [7] , pero los modos que funcionan como cifrados de flujo ya se pueden aplicar a mensajes de longitud arbitraria sin necesidad de relleno, por lo que no se benefician de este método. Los modos populares que utilizan el préstamo de texto cifrado son el modo Electronic Codebook ( ECB) y el modo de retroalimentación Cipher Block Chaining (CBC) . [5]

El uso del método de préstamo de texto cifrado para el modo ECB requiere que el texto sin formato sea más largo que un bloque [5] . Una posible solución es utilizar modos de cifrado de bloques con propiedades similares a las de cifrado de flujo (p. ej ., CTR , CFB u OFB ) o el método de relleno [7] en situaciones en las que el tamaño del texto sin formato es de un bloque o menos.

El uso del método de préstamo de texto cifrado en modo CBC no impone la condición obligatoria de que el texto sin formato sea más largo que un bloque [8] . En el caso de que el texto sea menor o igual que el tamaño del bloque, el vector de inicialización (IV) puede actuar como el bloque de texto cifrado precedente. En tal caso, la IV modificada también debe enviarse al destinatario. Este enfoque puede no ser posible en situaciones en las que el remitente no puede elegir libremente el IV junto con el texto cifrado transmitido [8] (por ejemplo, el vector de inicialización se calcula a partir del número de sector del disco duro, a partir de una marca de tiempo, o es un valor fijo ). valor), entonces tomar prestado el texto cifrado para el modo CBC solo puede ocurrir para textos sin formato de más de un bloque.

Representación de texto cifrado

CS1

La forma más sencilla de ordenar el texto cifrado es enviar primero el penúltimo bloque acortado y luego el último bloque completo. Las desventajas de este enfoque son las siguientes:

  1. En cualquier caso, el último bloque debe descifrarse antes que el penúltimo;
  2. Cuando se transmite, el último bloque no está alineado con un límite natural, lo que complica la implementación del hardware;

La ventaja es que si el último bloque de texto plano es un múltiplo del tamaño del bloque de cifrado, el texto cifrado es idéntico al obtenido en la operación normal sin préstamo.

CS2

Es más conveniente intercambiar los dos últimos bloques, de modo que el texto cifrado termine con un último bloque completo, seguido de un penúltimo bloque incompleto. Como resultado, los bloques cifrados están alineados, lo que facilita el trabajo con ellos. [una]

Para mantener la compatibilidad con los modos de no préstamo, CS2 realiza esta permutación solo si la cantidad de texto cifrado prestado no es cero, es decir, cuando el tamaño del mensaje original no era un múltiplo del tamaño del bloque. [una]

La desventaja es que los bloques deben manejarse de manera diferente para los mensajes alineados y no alineados.

CS3

Esta variante siempre intercambia los dos últimos bloques de texto cifrado sin ninguna condición. Es él quien se utiliza en las siguientes descripciones.

Cómo funciona

Para el cifrado y descifrado de todos los bloques, excepto los dos últimos, se utiliza el modo estándar de operación del cifrado de bloque.

Los siguientes pasos describen cómo tratar con los últimos bloques del texto sin formato [7] , indicados por y , donde la longitud es el tamaño del bloque de cifrado en bits y la longitud del último bloque  es bits; - la clave utilizada para el cifrado. se encuentra en el rango de 1 a inclusive, por lo que teóricamente puede ser un bloque completo. La descripción de cómo funciona el modo CBC también utiliza el bloque de texto cifrado que precede al que se está considerando. Si el texto sin formato cabe en solo dos bloques, puede tomar el vector de inicialización ( ) en su lugar.

La descripción utiliza las siguientes funciones y operadores:

BCE

Cifrado
  1. . Equivalente al comportamiento del modo ECB estándar.
  2. . Los bits más significativos se toman para crear el último bloque del texto cifrado . En todos los casos, los dos últimos bloques se transmiten en orden inverso a sus correspondientes bloques de texto plano.
  3. . acolchado con puntas bajas de .
  4. . encriptado para crear . Para los últimos bits, esta es la segunda vez que se cifran con la clave (la primera vez que esto sucedió durante la creación en el paso 1).
Descifrado
  1. . descifrado para obtener .
  2. . se rellena con el valor de los bits del final extraídos en el paso 3 de cifrado.
  3. .
  4. .
Propagación de errores

Un error en un bit al transmitirlo a través de un canal de comunicación provocará daños completos en los bloques y . Un error de un solo bit corromperá completamente el bloque . Este es un cambio significativo con respecto a la propagación de errores estándar en el cifrado ECB, donde un error en un bloque de texto cifrado solo corrompe el bloque de texto sin formato correspondiente. [ocho]

CCB

Cifrado
  1. ; El bloque 3 del final del texto cifrado se agrega al penúltimo bloque del texto sin formato. Equivalente al comportamiento del modo CBC estándar.
  2. .
  3. . Para crear , se toman los bits más significativos del texto cifrado "intermedio" . En todos los casos, los dos últimos bloques se transmiten en orden inverso a sus correspondientes bloques de texto plano.
  4. . El último texto sin formato se rellena con ceros hasta una longitud de bit igual al ancho de la entrada de cifrado de bloque. El relleno cero es importante para el paso 5.
  5. . Para los primeros bits del bloque, esto es equivalente al modo CBC normal. Rellenar el texto sin formato con ceros era importante porque la operación en los últimos bits se convierte en el equivalente a copiarlos hasta el final . Estos son los mismos bits que no se usaron al crear el archivo .
  6. . encriptado para crear . Para los últimos bits, esta es la segunda vez que se cifran con la clave (la primera vez que esto sucedió cuando se crearon en el paso 2).
Descifrado
  1. .
  2. .
  3. .
  4. .
Propagación de errores

En el modo CBC, ya existe interacción en el procesamiento de varios bloques adyacentes, por lo que el préstamo de texto cifrado tiene un impacto conceptual menor. [3] Un error en un bit al transmitirlo a través de un canal de comunicación provocará daños completos en los bloques y . Un error en un bit cambiará el bit correspondiente y corromperá completamente el archivo .

Seguridad

En 2010, se demostró que el modo CBC-CSX no era confiable. [3]

Un ejemplo de un ataque de discriminación de mensajes [9] utilizando texto sin formato seleccionado:

  1. El criptoanalista crea dos textos sin formato idénticos: y , que se cifran utilizando diferentes vectores de inicialización ( )
  2. Oracle devuelve textos cifradosy. Dondeyson vectores de inicialización y longitudes seleccionados aleatoriamente.
  3. Si el analista devuelve 1, en caso contrario 0. La probabilidad de coincidencia es al menos 1/2 y así se obtiene un ataque trivial pero efectivo [3]

Se ha demostrado que los modos CBC-CS1-3 son confiables en las siguientes condiciones: [3]

  1. El cifrado de bloque utilizado es una buena permutación pseudoaleatoria, es decir, en un ataque de texto sin formato elegido, el texto cifrado resultante es indistinguible de un conjunto aleatorio de bits.
  2. El vector de inicialización ( ) se elige aleatoriamente y no se puede predecir de antemano [3]

XTS-AES

El método de préstamo de texto cifrado se utiliza en muchos sistemas modernos de cifrado y descifrado de discos. Por ejemplo, el 27 de enero de 2010, NIST publicó la versión final de la publicación 800-38E, [10] que recomienda usar el modo XTS-AES (modo de libro de códigos modificado basado en XEX con robo de texto cifrado y cifrado AES), estandarizado por IEEE en 2007 [11] , en módulos criptográficos. Este modo se utiliza para el cifrado sector por sector de discos o archivos y se considera la forma más segura de almacenar datos. [once]

Es compatible con la mayoría de las aplicaciones modernas, como BestCrypt [12] , Botan, dm-crypt, FreeOTFE, TrueCrypt, VeraCrypt [13] , DiskCryptor [14] , FileVault 2 de Mac OS X Lion y BitLocker de Windows 10. [quince]

Notas

  1. ↑ 1 2 3 4 M. Dworkin, 2010
  2. Meyer, Carl H., 1982 págs. 77-78
  3. ↑ 1 2 3 4 5 6 Phillip Rogaway, Mark Wooding, Haibin Zhang. La seguridad del robo de texto cifrado (2012). Fecha de acceso: 7 de diciembre de 2017. Archivado desde el original el 23 de diciembre de 2018.
  4. Schneier, Bruce, 1963-. Criptografía aplicada: protocolos, algoritmos y código fuente en C. — 2ª ed. - Nueva York: Wiley, 1996. - xxiii, 758 páginas p. — ISBN 0471128457 .
  5. ↑ 1 2 3 4 Raeburn K., 2005
  6. M. Dworkin, 2001
  7. ↑ 1 2 3 Baldwin, R. y R. Rivest. Los algoritmos RC5, RC5-CBC, RC5-CBC-Pad y RC5-CTS . RFC 2040 (octubre de 1996). Consultado el 24 de diciembre de 2017. Archivado desde el original el 7 de septiembre de 2017.
  8. ↑ 1 2 3 Schneier, Bruce, "Criptografía aplicada", Segunda edición, John Wiley and Sons, Nueva York, 1996.
  9. Gabidulin E. M., Kshevetsky A. S., Kolybelnikov A. I. Seguridad de la información: un libro de texto. - Moscú: MIPT, 2011. - S. 22-23. — 262 págs. — ISBN 978-5-7417-0377-9 .
  10. Morris Dworkin. Recomendación para los modos de operación de cifrado en bloque: el modo XTS-AES para la confidencialidad en dispositivos de almacenamiento  (inglés)  : diario. - Instituto Nacional de Estándares y Tecnología , 2010. - Enero ( vol. NIST Special Publication 800-38E ).
  11. ↑ 1 2 Estándar para la protección criptográfica de datos en dispositivos de almacenamiento orientados a bloques  (inglés)  : diario. - Biblioteca digital IEEE Xplore, 2008. - 18 de abril. - ISBN 978-0-7381-5363-6 . -doi : 10.1109/ IEEEESTD.2008.4493450 .
  12. Sitio web de BestCrypt Volume Encryption, sección Modos de cifrado . Consultado el 24 de diciembre de 2017. Archivado desde el original el 26 de diciembre de 2017.
  13. Modos de funcionamiento . Documentación de VeraCrypt . IDRIX. Consultado el 13 de octubre de 2017. Archivado desde el original el 5 de julio de 2017.
  14. Registro de cambios Compilación 757.115 con fecha 03-01-2013 .
  15. ¿Qué hay de nuevo en BitLocker? (12 de noviembre de 2015). Consultado el 15 de noviembre de 2015. Archivado desde el original el 17 de noviembre de 2015.

Literatura