stringtranslate.com

Modo de operación de cifrado en bloque

En criptografía, un modo de operación de cifrado en bloque es un algoritmo que utiliza un cifrado en bloque para proporcionar seguridad de la información , como confidencialidad o autenticidad . [1] Un cifrado de bloque por sí solo sólo es adecuado para la transformación criptográfica segura (cifrado o descifrado) de un grupo de bits de longitud fija llamado bloque . [2] Un modo de operación describe cómo aplicar repetidamente una operación de bloque único de un cifrado para transformar de forma segura cantidades de datos mayores que un bloque. [3] [4] [5]

La mayoría de los modos requieren una secuencia binaria única, a menudo denominada vector de inicialización (IV), para cada operación de cifrado. El IV no debe repetirse y, en algunos modos, también debe ser aleatorio. El vector de inicialización se utiliza para garantizar que se produzcan textos cifrados distintos incluso cuando el mismo texto sin formato se cifra varias veces de forma independiente con la misma clave . [6] Los cifrados de bloque pueden ser capaces de operar en más de un tamaño de bloque , pero durante la transformación el tamaño del bloque siempre es fijo. Los modos de cifrado de bloques operan en bloques completos y requieren que el fragmento de datos final se complete hasta un bloque completo si es más pequeño que el tamaño del bloque actual. [2] Sin embargo, existen modos que no requieren relleno porque utilizan efectivamente un cifrado de bloque como cifrado de flujo .

Históricamente, los modos de cifrado se han estudiado ampliamente con respecto a sus propiedades de propagación de errores en diversos escenarios de modificación de datos. El desarrollo posterior consideró la protección de la integridad como un objetivo criptográfico completamente separado. Algunos modos de operación modernos combinan confidencialidad y autenticidad de manera eficiente y se conocen como modos de cifrado autenticados . [7]

Historia y estandarización

Los primeros modos de operación, ECB, CBC, OFB y CFB (ver todos a continuación), se remontan a 1981 y se especificaron en FIPS 81, DES Modes of Operation . En 2001, el Instituto Nacional de Estándares y Tecnología (NIST) de EE. UU. revisó su lista de modos de operación aprobados al incluir AES como cifrado de bloque y agregar el modo CTR en SP800-38A, Recomendación para modos de operación de cifrado de bloque . Finalmente, en enero de 2010, NIST agregó XTS-AES en SP800-38E, Recomendación para modos de operación de cifrado en bloque: el modo XTS-AES para la confidencialidad en dispositivos de almacenamiento . Existen otros modos de confidencialidad que no han sido aprobados por el NIST. Por ejemplo, CTS es un modo de robo de texto cifrado y está disponible en muchas bibliotecas criptográficas populares.

Los modos de cifrado en bloque ECB, CBC, OFB, CFB, CTR y XTS brindan confidencialidad, pero no protegen contra modificaciones accidentales o manipulaciones maliciosas. La modificación o manipulación se puede detectar con un código de autenticación de mensaje independiente , como CBC-MAC , o una firma digital . La comunidad criptográfica reconoció la necesidad de garantías de integridad dedicadas y el NIST respondió con HMAC, CMAC y GMAC. HMAC se aprobó en 2002 como FIPS 198, Código de autenticación de mensajes con clave hash (HMAC) , CMAC se lanzó en 2005 bajo SP800-38B, Recomendación para modos de operación de cifrado de bloques: el modo CMAC para autenticación , y GMAC se formalizó en 2007. en SP800-38D, Recomendación para modos de operación de cifrado de bloques: Modo Galois/Contador (GCM) y GMAC .

La comunidad criptográfica observó que componer (combinar) un modo de confidencialidad con un modo de autenticidad podría resultar difícil y propenso a errores. Por lo tanto, comenzaron a ofrecer modos que combinaban la confidencialidad y la integridad de los datos en una única primitiva criptográfica (un algoritmo de cifrado). Estos modos combinados se denominan cifrado autenticado , AE o "authenc". Ejemplos de modos AE son CCM (SP800-38C), GCM (SP800-38D), CWC , EAX , IAPM y OCB .

Los modos de funcionamiento están definidos por una serie de organismos de normalización reconocidos a nivel nacional e internacional. Las organizaciones de estándares notables incluyen NIST , ISO (con ISO/IEC 10116 [5] ), IEC , IEEE , ANSI y IETF .

Vector de inicialización (IV)

Un vector de inicialización (IV) o variable inicial (SV) [5] es un bloque de bits que se utiliza en varios modos para aleatorizar el cifrado y, por lo tanto, para producir textos cifrados distintos, incluso si el mismo texto sin formato se cifra varias veces, sin necesidad de un proceso de cambio de clave más lento. [ cita necesaria ]

Un vector de inicialización tiene requisitos de seguridad diferentes a los de una clave, por lo que normalmente no es necesario que el IV sea secreto. Para la mayoría de los modos de cifrado de bloques, es importante que un vector de inicialización nunca se reutilice bajo la misma clave, es decir, debe ser un nonce criptográfico . Muchos modos de cifrado en bloque tienen requisitos más estrictos, como que el IV debe ser aleatorio o pseudoaleatorio . Algunos cifrados de bloque tienen problemas particulares con ciertos vectores de inicialización, como que todos los IV cero no generan cifrado (para algunas claves).

Se recomienda revisar los requisitos IV relevantes para el modo de cifrado de bloques particular en la especificación relevante, por ejemplo SP800-38A.

Para CBC y CFB, la reutilización de un IV filtra información sobre el primer bloque de texto sin formato y sobre cualquier prefijo común compartido por los dos mensajes.

Para OFB y CTR, la reutilización de un IV provoca la reutilización del flujo de bits clave, lo que viola la seguridad. [8] Esto se puede ver porque ambos modos crean efectivamente un flujo de bits al que se aplica XOR con el texto sin formato, y este flujo de bits depende de la clave y del IV únicamente.

En el modo CBC, el IV debe ser impredecible (aleatorio o pseudoaleatorio) en el momento del cifrado; en particular, la práctica (anteriormente) común de reutilizar el último bloque de texto cifrado de un mensaje como IV para el siguiente mensaje es insegura (por ejemplo, este método fue utilizado por SSL 2.0). Si un atacante conoce el IV (o el bloque de texto cifrado anterior) antes de que se especifique el siguiente texto sin formato, puede verificar sus conjeturas sobre el texto sin formato de algún bloque que se cifró con la misma clave anteriormente (esto se conoce como ataque TLS CBC IV). . [9]

Para algunas claves, un vector de inicialización totalmente cero puede generar algunos modos de cifrado en bloque (CFB-8, OFB-8) para que el estado interno se quede atascado en todo cero. Para CFB-8, un IV de ceros y un texto plano de ceros hacen que 1/256 de las claves no generen cifrado, el texto plano se devuelve como texto cifrado. [10] Para OFB-8, el uso de todo el vector de inicialización cero no generará cifrado para 1/256 de las claves. [11] El cifrado OFB-8 devuelve el texto plano sin cifrar para las claves afectadas.

Algunos modos (como AES-SIV y AES-GCM-SIV) están diseñados para ser más resistentes al uso indebido, es decir, resistentes a escenarios en los que la generación de aleatoriedad es defectuosa o está bajo el control del atacante.

Relleno

Un cifrado de bloque funciona en unidades de un tamaño fijo (conocido como tamaño de bloque ), pero los mensajes vienen en una variedad de longitudes. Por lo tanto, algunos modos (a saber, ECB y CBC ) requieren que el bloque final se rellene antes del cifrado. Existen varios esquemas de relleno . La más sencilla es añadir bytes nulos al texto sin formato para aumentar su longitud hasta un múltiplo del tamaño del bloque, pero se debe tener cuidado de que se pueda recuperar la longitud original del texto sin formato; esto es trivial, por ejemplo, si el texto sin formato es una cadena de estilo C que no contiene bytes nulos excepto al final. Un poco más complejo es el método DES original , que consiste en agregar un solo bit , seguido de suficientes bits cero para completar el bloque; si el mensaje termina en el límite de un bloque, se agregará un bloque de relleno completo. Los más sofisticados son los esquemas específicos de CBC, como el robo de texto cifrado o la terminación de bloque residual , que no generan ningún texto cifrado adicional, a expensas de cierta complejidad adicional. Schneier y Ferguson sugieren dos posibilidades, ambas simples: agregar un byte con valor 128 (80 hexadecimal), seguido de tantos bytes cero como sean necesarios para llenar el último bloque, o rellenar el último bloque con n bytes, todos con valor n .

Los modos CFB, OFB y CTR no requieren ninguna medida especial para manejar mensajes cuyas longitudes no sean múltiplos del tamaño del bloque, ya que los modos funcionan aplicando XOR al texto sin formato con la salida del cifrado de bloque. El último bloque parcial de texto sin formato se realiza mediante operación XOR con los primeros bytes del último bloque de flujo de claves , lo que produce un bloque de texto cifrado final que tiene el mismo tamaño que el bloque de texto sin formato parcial final. Esta característica de los cifrados de flujo los hace adecuados para aplicaciones que requieren que los datos de texto cifrado cifrados tengan el mismo tamaño que los datos de texto sin formato originales y para aplicaciones que transmiten datos en forma de flujo donde resulta inconveniente agregar bytes de relleno.

Modos comunes

Cifrado autenticado con modos de datos adicionales (AEAD)

Se han diseñado varios modos de operación para combinar secreto y autenticación en una única primitiva criptográfica. Ejemplos de tales modos son, [12] encadenamiento de bloques de cifrado con reconocimiento de integridad (IACBC) [ aclaración necesaria ] , modo paralelizable con reconocimiento de integridad (IAPM), [13] OCB , EAX , CWC , CCM y GCM . Los modos de cifrado autenticados se clasifican en modos de paso único o modos de paso doble. Algunos algoritmos de cifrado autenticados de un solo paso, como el modo OCB, están sujetos a patentes, mientras que otros fueron diseñados y lanzados específicamente para evitar dichos gravámenes.

Además, algunos modos también permiten la autenticación de datos asociados no cifrados, y estos se denominan esquemas AEAD (cifrado autenticado con datos asociados). Por ejemplo, el modo EAX es un esquema AEAD de doble paso, mientras que el modo OCB es de un solo paso.

Galois/contador (GCM)

El modo Galois/contador (GCM) combina el conocido modo contador de cifrado con el nuevo modo Galois de autenticación. La característica clave es la facilidad de cálculo paralelo de la multiplicación de campos de Galois utilizada para la autenticación. Esta característica permite un rendimiento mayor que los algoritmos de cifrado.

GCM se define para cifrados de bloque con un tamaño de bloque de 128 bits. El código de autenticación de mensajes de Galois (GMAC) es una variante del GCM de solo autenticación que puede formar un código de autenticación de mensajes incremental. Tanto GCM como GMAC pueden aceptar vectores de inicialización de longitud arbitraria. GCM puede aprovechar al máximo el procesamiento paralelo y la implementación de GCM puede hacer un uso eficiente de una canalización de instrucciones o de hardware. El modo de operación del CBC provoca paradas en los ductos que obstaculizan su eficiencia y desempeño.

Al igual que en CTR, los bloques se numeran secuencialmente y luego este número de bloque se combina con un IV y se cifra con un cifrado de bloque E , generalmente AES. Luego, el resultado de este cifrado se realiza mediante operación XOR con el texto sin formato para producir el texto cifrado. Como todos los modos de contador, este es esencialmente un cifrado de flujo, por lo que es esencial que se utilice un IV diferente para cada flujo cifrado.


Galois/Contador (GCM)

Los bloques de texto cifrado se consideran coeficientes de un polinomio que luego se evalúa en un punto H dependiente de la clave , utilizando aritmética de campos finitos . Luego, el resultado se cifra, lo que produce una etiqueta de autenticación que se puede utilizar para verificar la integridad de los datos. El texto cifrado contiene el IV, el texto cifrado y la etiqueta de autenticación.

Contador con código de autenticación de mensajes de encadenamiento de bloques cifrados (CCM)

El contador con código de autenticación de mensajes de encadenamiento de bloques cifrados (contador con CBC-MAC; CCM) es un algoritmo de cifrado autenticado diseñado para proporcionar autenticación y confidencialidad. El modo CCM solo se define para cifrados de bloque con una longitud de bloque de 128 bits. [14] [15]

Vector de inicialización sintético (SIV)

El vector de inicialización sintético (SIV) es un modo de cifrado en bloque resistente al uso indebido.

SIV sintetiza una vía intravenosa interna utilizando la función pseudoaleatoria S2V. S2V es un hash con clave basado en CMAC y la entrada a la función es:

SIV cifra la salida S2V y el texto sin formato mediante AES-CTR, codificado con la clave de cifrado (K 2 ).

SIV puede admitir cifrado autenticado externo no basado en nce, en cuyo caso se utiliza uno de los campos de datos autenticados para este propósito. RFC5297 [16] especifica que, para fines de interoperabilidad, el último campo de datos autenticado debe usarse como nonce externo.

Debido al uso de dos claves, la clave de autenticación K1 y la clave de cifrado K2 , los esquemas de denominación para las variantes de SIV AEAD pueden generar cierta confusión; por ejemplo, AEAD_AES_SIV_CMAC_256 se refiere a AES-SIV con dos claves AES-128 y no a AES-256.

AES-GCM-SIV

AES-GCM-SIV es un modo de operación para el Estándar de cifrado avanzado que proporciona un rendimiento similar al modo Galois/contador, así como resistencia al uso indebido en caso de reutilización de un nonce criptográfico. La construcción está definida en RFC 8452. [17]

AES-GCM-SIV sintetiza el IV interno. Deriva un hash de los datos autenticados adicionales y el texto sin formato utilizando la función hash POLYVAL Galois. Luego, el hash se cifra con una clave AES y se utiliza como etiqueta de autenticación y vector de inicialización AES-CTR.

AES-GCM-SIV es una mejora con respecto al algoritmo GCM-SIV con un nombre muy similar , con algunos cambios muy pequeños (por ejemplo, cómo se inicializa AES-CTR), pero que produce beneficios prácticos para su seguridad. "Esta adición permite cifrar hasta 2.50 mensajes con la misma clave, en comparación con la importante limitación de sólo 2.32 mensajes que se permitían con GCM-SIV. " [18]

Modos de sólo confidencialidad

Se han definido muchos modos de operación. Algunos de ellos se describen a continuación. El propósito de los modos de cifrado es enmascarar patrones que existen en los datos cifrados, como se ilustra en la descripción de la debilidad del BCE.

Los diferentes modos de cifrado enmascaran patrones conectando en cascada salidas del bloque de cifrado u otras variables deterministas globalmente al bloque de cifrado posterior. Las entradas de los modos enumerados se resumen en la siguiente tabla:

Nota: g ( i ) es cualquier función determinista, a menudo la función de identidad .

Libro de códigos electrónico (BCE)

El más simple de los modos de cifrado es el modo de libro de códigos electrónico (ECB) (llamado así por los libros de códigos físicos convencionales [19] ). El mensaje se divide en bloques y cada bloque se cifra por separado. No se recomienda el uso de ECB en protocolos criptográficos: la desventaja de este método es la falta de difusión , en la que no logra ocultar patrones de datos cuando cifra bloques de texto sin formato idénticos en bloques de texto cifrado idénticos . [20] [21] [22]


Libro de códigos electrónico (BCE)




Un ejemplo sorprendente del grado en que el BCE puede dejar patrones de datos de texto sin formato en el texto cifrado se puede ver cuando se utiliza el modo BCE para cifrar una imagen de mapa de bits que contiene grandes áreas de color uniforme. Si bien el color de cada píxel individual supuestamente se ha cifrado, la imagen general aún se puede discernir, ya que el patrón de píxeles de colores idénticos en el original permanece visible en la versión cifrada.

El modo ECB también puede hacer que los protocolos sin protección de integridad sean aún más susceptibles a ataques de repetición , ya que cada bloque se descifra exactamente de la misma manera. [ cita necesaria ]

Encadenamiento de bloques de cifrado (CBC)

Ehrsam, Meyer, Smith y Tuchman inventaron el modo de operación de encadenamiento de bloques de cifrado (CBC) en 1976. [23] En el modo CBC, cada bloque de texto plano se aplica XOR con el bloque de texto cifrado anterior antes de cifrarse. De esta manera, cada bloque de texto cifrado depende de todos los bloques de texto plano procesados ​​hasta ese momento. Para que cada mensaje sea único, se debe utilizar un vector de inicialización en el primer bloque.

Encadenamiento de bloques de cifrado (CBC)

Si el primer bloque tiene índice 1, la fórmula matemática para el cifrado CBC es

mientras que la fórmula matemática para el descifrado de CBC es

Ejemplo
Ejemplo

CBC ha sido el modo de operación más utilizado. Sus principales inconvenientes son que el cifrado es secuencial (es decir, no se puede paralelizar) y que el mensaje debe rellenarse hasta un múltiplo del tamaño del bloque de cifrado. Una forma de manejar este último problema es mediante el método conocido como robo de texto cifrado . Tenga en cuenta que un cambio de un bit en un texto sin formato o en un vector de inicialización (IV) afecta a todos los bloques de texto cifrado siguientes.

El descifrado con el IV incorrecto provoca que el primer bloque de texto sin formato esté dañado, pero los bloques de texto sin formato posteriores serán correctos. Esto se debe a que a cada bloque se le aplica XOR con el texto cifrado del bloque anterior, no con el texto sin formato, por lo que no es necesario descifrar el bloque anterior antes de usarlo como IV para descifrar el actual. Esto significa que un bloque de texto sin formato se puede recuperar a partir de dos bloques adyacentes de texto cifrado. Como consecuencia, el descifrado se puede paralelizar. Tenga en cuenta que un cambio de un bit en el texto cifrado provoca una corrupción completa del bloque correspondiente de texto sin formato e invierte el bit correspondiente en el siguiente bloque de texto sin formato, pero el resto de los bloques permanecen intactos. Esta peculiaridad se explota en diferentes ataques de oráculos de relleno , como POODLE .

Los vectores de inicialización explícitos [24] aprovechan esta propiedad anteponiendo un único bloque aleatorio al texto sin formato. El cifrado se realiza normalmente, excepto que no es necesario comunicar el IV a la rutina de descifrado. Cualquiera que sea el uso del descifrado IV, sólo el bloque aleatorio está "corrompido". Se puede descartar de forma segura y el resto del descifrado es el texto sin formato original.

Propagación del encadenamiento de bloques de cifrado (PCBC)

El modo de encadenamiento de bloques de cifrado de propagación [25] o encadenamiento de bloques de cifrado de texto sin formato [26] fue diseñado para provocar que pequeños cambios en el texto cifrado se propaguen indefinidamente al descifrar, así como al cifrar. En el modo PCBC, cada bloque de texto sin formato se realiza mediante operación XOR tanto con el bloque de texto sin formato anterior como con el bloque de texto cifrado anterior antes de cifrarse. Al igual que con el modo CBC, se utiliza un vector de inicialización en el primer bloque. A diferencia de CBC, descifrar PCBC con el IV (vector de inicialización) incorrecto provoca que todos los bloques de texto sin formato estén corruptos.

Propagación del encadenamiento de bloques de cifrado (PCBC)


Los algoritmos de cifrado y descifrado son los siguientes:

PCBC se utiliza en Kerberos v4 y WASTE , sobre todo, pero por lo demás no es común.

En un mensaje cifrado en modo PCBC, si se intercambian dos bloques de texto cifrado adyacentes, esto no afecta el descifrado de los bloques posteriores. [27] Por esta razón, PCBC no se utiliza en Kerberos v5.

Comentarios de cifrado (CFB)

CFB de bloque completo

El modo de retroalimentación de cifrado (CFB), en su forma más simple, utiliza toda la salida del cifrado de bloque. En esta variación, es muy similar a CBC, ya que convierte un cifrado de bloque en un cifrado de flujo autosincronizable . El descifrado CFB en esta variación es casi idéntico al cifrado CBC realizado a la inversa:

Comentarios de cifrado (CFB)


CFB-1, CFB-8, CFB-64, CFB-128, etc.

NIST SP800-38A define CFB con un ancho de bits. [28] El modo CFB también requiere un parámetro entero, denominado s, tal que 1 ≤ s ≤ b. En la especificación del modo CFB siguiente, cada segmento de texto plano (Pj) y segmento de texto cifrado (Cj) consta de s bits. El valor de s a veces se incorpora al nombre del modo, por ejemplo, el modo CFB de 1 bit, el modo CFB de 8 bits, el modo CFB de 64 bits o el modo CFB de 128 bits.

Estos modos truncarán la salida del cifrado de bloque subyacente.

CFB-1 se considera autosincronizante y resistente a la pérdida de texto cifrado; "Cuando se utiliza el modo CFB de 1 bit, la sincronización se restablece automáticamente b+1 posiciones después del bit insertado o eliminado. Para otros valores de s en el modo CFB, y para los otros modos de confidencialidad en esta recomendación, la sincronización debe ser restaurado externamente." (NIST SP800-38A). Es decir, la pérdida de 1 bit en un cifrado de bloque de 128 bits de ancho como AES generará 129 bits no válidos antes de emitir bits válidos.

CFB también puede autosincronizarse en algunos casos especiales distintos a los especificados. Por ejemplo, un cambio de un bit en CFB-128 con un cifrado de bloque subyacente de 128 bits se volverá a sincronizar después de dos bloques. (Sin embargo, CFB-128, etc. no manejará correctamente la pérdida de bits; una pérdida de un bit hará que el descifrador pierda alineación con el cifrador)

CFB en comparación con otros modos

Al igual que el modo CBC, los cambios en el texto plano se propagan para siempre en el texto cifrado y el cifrado no se puede paralelizar. También al igual que CBC, el descifrado se puede paralelizar.

CFB, OFB y CTR comparten dos ventajas sobre el modo CBC: el cifrado de bloque sólo se utiliza en la dirección de cifrado y no es necesario rellenar el mensaje hasta un múltiplo del tamaño del bloque de cifrado (aunque el robo de texto cifrado también se puede utilizar para modo CBC para que el relleno sea innecesario).

Realimentación de salida (OFB)

El modo de retroalimentación de salida (OFB) convierte un cifrado de bloque en un cifrado de flujo síncrono . Genera bloques de flujo de claves , que luego se realizan mediante operación XOR con los bloques de texto sin formato para obtener el texto cifrado. Al igual que con otros cifrados de flujo, invertir un bit en el texto cifrado produce un bit invertido en el texto sin formato en la misma ubicación. Esta propiedad permite que muchos códigos de corrección de errores funcionen normalmente incluso cuando se aplican antes del cifrado.

Debido a la simetría de la operación XOR, el cifrado y descifrado son exactamente iguales:


Realimentación de salida (OFB)


Cada operación de cifrado del bloque de retroalimentación de salida depende de todas las anteriores y, por lo tanto, no se puede realizar en paralelo. Sin embargo, debido a que el texto sin formato o el texto cifrado solo se utiliza para el XOR final, las operaciones de cifrado en bloque se pueden realizar con anticipación, lo que permite que el paso final se realice en paralelo una vez que el texto sin formato o el texto cifrado esté disponible.

Es posible obtener un flujo de claves en modo OFB utilizando el modo CBC con una cadena constante de ceros como entrada. Esto puede resultar útil porque permite el uso de implementaciones de hardware rápidas del modo CBC para el cifrado en modo OFB.

El uso del modo OFB con un bloqueo parcial como retroalimentación como el modo CFB reduce la duración promedio del ciclo en un factor de 2,32 o más. Un modelo matemático propuesto por Davies y Parkin y respaldado por resultados experimentales demostró que sólo con una retroalimentación completa se puede lograr una duración de ciclo promedio cercana al máximo obtenible. Por este motivo, se eliminó la compatibilidad con comentarios truncados de la especificación de OFB. [29]

Contador (CTR)

Nota: El modo CTR (CM) también se conoce como modo de contador de enteros (ICM) y modo de contador de enteros segmentado (SIC).

Al igual que OFB, el modo contador convierte un cifrado de bloque en un cifrado de flujo . Genera el siguiente bloque de flujo de claves cifrando valores sucesivos de un "contador". El contador puede ser cualquier función que produzca una secuencia que garantice que no se repetirá durante mucho tiempo, aunque un contador incremental de uno en uno es el más simple y popular. El uso de una función de entrada determinista simple solía ser controvertido; Los críticos argumentaron que "exponer deliberadamente un criptosistema a una entrada sistemática conocida representa un riesgo innecesario". [30] Sin embargo, hoy en día el modo CTR es ampliamente aceptado, y cualquier problema se considera una debilidad del cifrado de bloque subyacente, que se espera que sea seguro independientemente del sesgo sistémico en su entrada. [31] Junto con CBC, el modo CTR es uno de los dos modos de cifrado de bloques recomendados por Niels Ferguson y Bruce Schneier. [32]

El modo CTR fue introducido por Whitfield Diffie y Martin Hellman en 1979. [31]

El modo CTR tiene características similares a OFB, pero también permite una propiedad de acceso aleatorio durante el descifrado. El modo CTR es muy adecuado para operar en una máquina multiprocesador, donde los bloques se pueden cifrar en paralelo. Además, no sufre el problema de ciclo corto que puede afectar a la OFB. [33]

Si el IV/nonce es aleatorio, entonces se pueden combinar con el contador usando cualquier operación invertible (concatenación, suma o XOR) para producir el bloque de contador único real para el cifrado. En el caso de un nonce no aleatorio (como un contador de paquetes), el nonce y el contador deben concatenarse (por ejemplo, almacenar el nonce en los 64 bits superiores y el contador en los 64 bits inferiores de un bloque de contador de 128 bits). . Simplemente agregar o hacer XOR el nonce y el contador en un solo valor rompería la seguridad bajo un ataque de texto sin formato elegido en muchos casos, ya que el atacante puede manipular todo el par IV-contador para causar una colisión. Una vez que un atacante controla el par de contadores IV y el texto sin formato, XOR del texto cifrado con el texto sin formato conocido produciría un valor que, cuando se realiza una operación XOR con el texto cifrado del otro bloque que comparte el mismo par de contadores IV, descifraría ese bloque. [34]

Tenga en cuenta que el nonce en este diagrama es equivalente al vector de inicialización (IV) en los otros diagramas. Sin embargo, si la información de desplazamiento/ubicación está corrupta, será imposible recuperar parcialmente dichos datos debido a la dependencia del desplazamiento de bytes.

Contador (CTR)


Propagación de errores

Las propiedades de "propagación de errores" describen cómo se comporta un descifrado durante errores de bits, es decir, cómo el error en un bit se transmite en cascada a diferentes bits descifrados.

Los errores de bits pueden ocurrir intencionalmente en ataques o aleatoriamente debido a errores de transmisión.

Para el cifrado autenticado moderno (AEAD) o protocolos con códigos de autenticación de mensajes encadenados en el orden MAC-Luego-Cifrar, cualquier error de bit debería cancelar completamente el descifrado y no debe generar ningún error de bit específico para el descifrador. Es decir, si el descifrado se realizó correctamente, no debería haber ningún error de bit. Como tal, la propagación de errores es un tema menos importante en los modos de cifrado modernos que en los modos tradicionales de sólo confidencialidad.

(Fuente: SP800-38A Tabla D.2: Resumen del efecto de los errores de bits en el descifrado)

Se podría observar, por ejemplo, que un error de un bloque en el texto cifrado transmitido daría como resultado un error de un bloque en el texto claro reconstruido para el cifrado en modo ECB, mientras que en el modo CBC tal error afectaría a dos bloques. Algunos sintieron que dicha resiliencia era deseable frente a errores aleatorios (por ejemplo, ruido de línea), mientras que otros argumentaron que la corrección de errores aumentaba las posibilidades de que los atacantes alteraran maliciosamente un mensaje.

Sin embargo, cuando se utiliza una protección de integridad adecuada, dicho error provocará (con una alta probabilidad) que se rechace todo el mensaje. Si se desea resistir al error aleatorio, se deben aplicar códigos de corrección de errores al texto cifrado antes de la transmisión.

Otros modos y otras primitivas criptográficas

Se han sugerido muchos más modos de operación para cifrados en bloque. Algunos han sido aceptados, descritos completamente (incluso estandarizados) y están en uso. Otros se han encontrado inseguros y nunca deberían usarse. Otros no se clasifican como confidencialidad, autenticidad o cifrado autenticado (por ejemplo, el modo de retroalimentación de claves y el hash Davies-Meyer ).

NIST mantiene una lista de modos propuestos para cifrados de bloques en Modes Development . [28] [35]

El cifrado de disco a menudo utiliza modos de propósito especial diseñados específicamente para la aplicación. Los modos de cifrado de bloque estrecho modificables ( LRW , XEX y XTS ) y los modos de cifrado de bloque ancho ( CMC y EME ) están diseñados para cifrar de forma segura sectores de un disco (consulte la teoría del cifrado de disco ).

Muchos modos utilizan un vector de inicialización (IV) que, dependiendo del modo, puede tener requisitos como ser usado solo una vez (un nonce) o ser impredecible antes de su publicación, etc. Reutilizar un IV con la misma clave en CTR, GCM o el modo OFB da como resultado una operación XOR en el mismo flujo de claves con dos o más textos sin formato, un claro uso indebido de un flujo, con una pérdida catastrófica de seguridad. Los modos de cifrado autenticados deterministas, como el algoritmo NIST Key Wrap y el modo SIV (RFC 5297) AEAD, no requieren un IV como entrada y devuelven el mismo texto cifrado y etiqueta de autenticación cada vez para un texto sin formato y una clave determinados. Otros modos resistentes al uso indebido de IV, como AES-GCM-SIV, se benefician de una entrada IV, por ejemplo, en la cantidad máxima de datos que se pueden cifrar de forma segura con una clave, sin fallar catastróficamente si el mismo IV se usa varias veces.

Los cifrados en bloque también se pueden utilizar en otros protocolos criptográficos . Generalmente se utilizan en modos de operación similares a los modos de bloque descritos aquí. Como ocurre con todos los protocolos, para ser criptográficamente seguro, se debe tener cuidado en diseñar estos modos de operación correctamente.

Existen varios esquemas que utilizan un cifrado de bloque para construir una función hash criptográfica . Consulte la función de compresión unidireccional para obtener descripciones de varios de estos métodos.

También se pueden crear generadores de números pseudoaleatorios (CSPRNG) criptográficamente seguros utilizando cifrados de bloques.

Los códigos de autenticación de mensajes (MAC) a menudo se crean a partir de cifrados en bloque. CBC-MAC , OMAC y PMAC son ejemplos.

Ver también

Referencias

  1. ^ Grupo de tecnología de seguridad (STG) de la División de seguridad informática (CSD) del NIST (2013). "Bloquear modos de cifrado". Kit de herramientas criptográficas . NIST. Archivado desde el original el 6 de noviembre de 2012 . Consultado el 12 de abril de 2013 .
  2. ^ ab Ferguson, N.; Schneier, B.; Kohno, T. (2010). Ingeniería de criptografía: principios de diseño y aplicaciones prácticas . Indianápolis: Wiley Publishing, Inc. págs. 63, 64. ISBN 978-0-470-47424-2.
  3. ^ Grupo de tecnología de seguridad (STG) de la División de seguridad informática (CSD) del NIST (2013). "Modos propuestos". Kit de herramientas criptográficas . NIST. Archivado desde el original el 2 de abril de 2013 . Consultado el 14 de abril de 2013 .
  4. ^ Alfred J. Menezes; Paul C. van Oorschot; Scott A. Vanstone (1996). Manual de criptografía aplicada . Prensa CRC. págs. 228-233. ISBN 0-8493-8523-7.
  5. ^ abc "ISO/IEC 10116:2006 - Tecnología de la información - Técnicas de seguridad - Modos de funcionamiento para un cifrado de bloques de n bits". Catálogo de Normas ISO . 2006. Archivado desde el original el 17 de marzo de 2012.
  6. ^ Conrado, Eric; Misenar, Seth; Feldman, Joshua (1 de enero de 2017), Conrad, Eric; Misenar, Seth; Feldman, Joshua (eds.), "Capítulo 3 - Dominio 3: Ingeniería de seguridad", Eleventh Hour CISSP® (tercera edición) , Syngress, págs. 47–93, doi :10.1016/b978-0-12-811248-9.00003- 6, ISBN 978-0-12-811248-9, consultado el 1 de noviembre de 2020
  7. ^ Grupo de tecnología de seguridad (STG) de la División de seguridad informática (CSD) del NIST (2013). "Modos actuales". Kit de herramientas criptográficas . NIST. Archivado desde el original el 2 de abril de 2013 . Consultado el 12 de abril de 2013 .
  8. ^ "Reutilización de cifrado de secuencias: un ejemplo gráfico". Criptosmith LLC. 31 de mayo de 2008. Archivado desde el original el 25 de enero de 2015 . Consultado el 7 de enero de 2015 .
  9. ^ B. Moeller (20 de mayo de 2004), Seguridad de CBC Ciphersuites en SSL/TLS: problemas y contramedidas, archivado desde el original el 30 de junio de 2012
  10. ^ Tervoort, Tom. "Zerologon: compromiso del controlador de dominio no autenticado al subvertir la criptografía de Netlogon (CVE-2020-1472)". Secura . Consultado el 14 de octubre de 2020 .
  11. ^ Blaufish (14 de octubre de 2020). "Netlogon CFB8 se considera dañino. OFB8 también". GitHub . Consultado el 14 de octubre de 2020 .
  12. ^ Gligor, Virgilio D .; Donescu, Pompiliu (2002). Matsui, M. (ed.). Cifrado y autenticación rápidos: modos de cifrado XCBC y autenticación XECB (PDF) . Cifrado rápido de software 2001. Apuntes de conferencias sobre informática. vol. 2355. Berlín: Springer. págs. 92-108. doi : 10.1007/3-540-45473-X_8 . ISBN 978-3-540-43869-4.
  13. ^ Jutla, Charanjit S. (mayo de 2001). Modos de cifrado con integridad de mensajes casi gratuita (PDF) . Eurocrypt 2001. Apuntes de conferencias sobre informática. vol. 2045. Saltador. doi : 10.1007/3-540-44987-6_32 .
  14. ^ Dworkin, Morris (mayo de 2004). Recomendación para los modos de operación de cifrado en bloque: el modo CCM para autenticación y confidencialidad (PDF) (Reporte técnico). Publicaciones especiales del NIST. NIST . doi : 10.6028/NIST.SP.800-38C . 800-38C.
  15. ^ Merlán, D.; Housley, R.; Ferguson, N. (septiembre de 2003). Contador con CBC-MAC (CCM). IETF . doi : 10.17487/RFC3610 . RFC 3610.
  16. ^ Harkins, Dan (octubre de 2008). "Cifrado autenticado por vector de inicialización sintético (SIV) mediante el estándar de cifrado avanzado (AES)" . Consultado el 21 de octubre de 2020 .
  17. ^ Gueron, S. (abril de 2019). AES-GCM-SIV: cifrado autenticado resistente al uso indebido Nonce. IETF . doi : 10.17487/RFC8452 . RFC 8452 . Consultado el 14 de agosto de 2019 .
  18. ^ Gueron, Shay; Langley, Adán; Lindell, Yehuda (14 de diciembre de 2018). "AES-GCM-SIV: Especificación y análisis". Archivo ePrint de criptología . Informe (2017/168) . Consultado el 19 de octubre de 2020 .
  19. ^ "Recomendación para los modos de operación de cifrado en bloque" (PDF) . NIST.gov . NIST. pag. 9. Archivado (PDF) desde el original el 29 de marzo de 2017 . Consultado el 1 de abril de 2017 .
  20. ^ Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (2018). Manual de criptografía aplicada. Prensa CRC. pag. 228.ISBN 9780429881329.
  21. ^ Presa, Kenneth W.; Lin, Herbert S. (1996). El papel de la criptografía en la seguridad de la sociedad de la información. Prensa de Academias Nacionales. pag. 132.ISBN 9780309054751.
  22. ^ Schneier, Bruce (2015). Criptografía aplicada: protocolos, algoritmos y código fuente en C. John Wiley & Sons. pag. 208.ISBN 9781119096726.
  23. ^ William F. Ehrsam, Carl HW Meyer, John L. Smith, Walter L. Tuchman, "Verificación de mensajes y detección de errores de transmisión mediante encadenamiento de bloques", Patente de EE. UU. 4074066, 1976.
  24. ^ "Protocolo de seguridad de la capa de transporte (TLS) versión 1.1". pag. 20. Archivado desde el original el 7 de enero de 2015 . Consultado el 7 de enero de 2015 .
  25. ^ "Preguntas frecuentes sobre criptografía: Frage 84: ¿Cuáles son los modos contador y PCBC?". www.iks-jena.de . Archivado desde el original el 16 de julio de 2012 . Consultado el 28 de abril de 2018 .
  26. ^ Kaufman, C.; Perlman, R.; Speciner, M. (2002). Seguridad de red (2ª ed.). Upper Saddle River, Nueva Jersey: Prentice Hall. pag. 319.ISBN 0130460192.
  27. ^ Kohl, J. (1990). "El uso del cifrado en Kerberos para la autenticación de red" (PDF) . Actas, Crypto '89 . Berlín: Springer. ISBN 0387973176. Archivado desde el original (PDF) el 12 de junio de 2009.
  28. ^ ab (NIST), Autor: Morris Dworkin (2001). "SP 800-38A, Recomendación para modos de operación de cifrado en bloque: métodos y técnicas" (PDF) . csrc.nist.gov . doi : 10.6028/NIST.SP.800-38A . Archivado (PDF) desde el original el 28 de agosto de 2017 . Consultado el 28 de abril de 2018 . {{cite journal}}: |first=tiene nombre genérico ( ayuda )
  29. ^ Davies, DW; Parkin, GIP (1983). "El tamaño del ciclo promedio del flujo de claves en el cifrado de retroalimentación de salida". Avances en criptología, Actas de CRYPTO 82 . Nueva York: Plenum Press. págs. 263–282. ISBN 0306413663.
  30. ^ Jueneman, Robert R. (1983). "Análisis de determinados aspectos del modo de retroalimentación de salida". Avances en criptología, Actas de CRYPTO 82 . Nueva York: Plenum Press. págs. 99-127. ISBN 0306413663.
  31. ^ ab Lipmaa, Helger; Wagner, David; Rogaway, Phillip (2000). "Comentarios al NIST sobre los modos de operación AES: cifrado en modo CTR" (PDF) . Archivado (PDF) desde el original el 26 de febrero de 2015.
  32. ^ Ferguson, Niels; Schneier, Bruce; Kohno, Tadayoshi (2010). Ingeniería de Criptografía . pag. 71.
  33. ^ "Modos básicos de cifrado de bloques". www.quadibloc.com . Archivado desde el original el 24 de octubre de 2017 . Consultado el 28 de abril de 2018 .
  34. ^ "Criptografía I". Coursera . Archivado desde el original el 23 de marzo de 2018 . Consultado el 28 de abril de 2018 .
  35. ^ "Desarrollo de modos - Técnicas de cifrado de bloques - CSRC". División de Seguridad Informática, Laboratorio de Tecnología de la Información, Instituto Nacional de Estándares y Tecnología, Departamento de Comercio de EE. UU. 4 de enero de 2017. Archivado desde el original el 4 de septiembre de 2017 . Consultado el 28 de abril de 2018 .