stringtranslate.com

Cifrado de bloque

En criptografía , un cifrador de bloques es un algoritmo determinista que opera sobre grupos de bits de longitud fija , llamados bloques . Los cifradores de bloques son los componentes básicos de muchos protocolos criptográficos . Son omnipresentes en el almacenamiento e intercambio de datos, donde dichos datos se protegen y autentican mediante cifrado .

Un cifrador de bloques utiliza bloques como una transformación invariable. Incluso un cifrador de bloques seguro es adecuado para el cifrado de un solo bloque de datos a la vez, utilizando una clave fija. Se han diseñado una multitud de modos de funcionamiento para permitir su uso repetido de forma segura para lograr los objetivos de seguridad de confidencialidad y autenticidad . Sin embargo, los cifradores de bloques también pueden figurar como bloques de construcción en otros protocolos criptográficos, como las funciones hash universales y los generadores de números pseudoaleatorios .

Definición

Un cifrador de bloques consta de dos algoritmos emparejados , uno para el cifrado, E , y el otro para el descifrado, D . [1] Ambos algoritmos aceptan dos entradas: un bloque de entrada de tamaño n bits y una clave de tamaño k bits; y ambos producen un bloque de salida de n bits. El algoritmo de descifrado D se define como la función inversa del cifrado, es decir, D = E −1 . Más formalmente, [2] [3] un cifrador de bloques se especifica mediante una función de cifrado

que toma como entrada una clave K , de longitud de bits k (llamada tamaño de clave ), y una cadena de bits P , de longitud n (llamada tamaño de bloque ), y devuelve una cadena C de n bits. P se denomina texto simple y C se denomina texto cifrado . Para cada K , se requiere que la función E K ( P ) sea una función invertible en {0,1} n . La inversa de E se define como una función

tomando una clave K y un texto cifrado C para devolver un valor de texto simple P , tal que

Por ejemplo, un algoritmo de cifrado de bloques podría tomar un bloque de 128 bits de texto simple como entrada y generar un bloque de texto cifrado correspondiente de 128 bits. La transformación exacta se controla utilizando una segunda entrada: la clave secreta. El descifrado es similar: el algoritmo de descifrado toma, en este ejemplo, un bloque de 128 bits de texto cifrado junto con la clave secreta y genera el bloque original de 128 bits de texto simple. [4]

Para cada clave K , E K es una permutación (una función biyectiva ) sobre el conjunto de bloques de entrada. Cada clave selecciona una permutación del conjunto de permutaciones posibles. [5]

Historia

El diseño moderno de los cifrados de bloque se basa en el concepto de cifrado de producto iterado . En su publicación seminal de 1949, Communication Theory of Secrecy Systems , Claude Shannon analizó los cifrados de producto y los sugirió como un medio para mejorar eficazmente la seguridad mediante la combinación de operaciones simples como sustituciones y permutaciones . [6] Los cifrados de producto iterados llevan a cabo el cifrado en múltiples rondas , cada una de las cuales utiliza una subclave diferente derivada de la clave original. Una implementación generalizada de dichos cifrados denominada red Feistel en honor a Horst Feistel se implementa notablemente en el cifrado DES . [7] Muchas otras realizaciones de cifrados de bloque, como el AES , se clasifican como redes de sustitución-permutación . [8]

La raíz de todos los formatos de bloques criptográficos utilizados en el Estándar de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS) y los estándares del Instituto Nacional Estadounidense de Estándares (ANSI) se encuentra en el Bloque de Clave Atalla (AKB), que fue una innovación clave de Atalla Box , el primer módulo de seguridad de hardware (HSM). Fue desarrollado en 1972 por Mohamed M. Atalla , fundador de Atalla Corporation (ahora Utimaco Atalla ), y lanzado en 1973. El AKB era un bloque de clave, que se requiere para intercambiar de forma segura claves simétricas o PIN con otros actores en la industria bancaria . Este intercambio seguro se realiza utilizando el formato AKB. [9] Atalla Box protegía más del 90% de todas las redes de cajeros automáticos en funcionamiento en 1998, [10] y los productos Atalla todavía protegen la mayoría de las transacciones de cajeros automáticos del mundo en 2014. [11]

La publicación del cifrado DES por parte de la Oficina Nacional de Normas de los Estados Unidos (posteriormente el Instituto Nacional de Normas y Tecnología de los Estados Unidos , NIST) en 1977 fue fundamental en la comprensión pública del diseño moderno de cifrados de bloques. También influyó en el desarrollo académico de los ataques criptoanalíticos . Tanto el criptoanálisis diferencial como el lineal surgieron de estudios sobre el diseño de DES. A partir de 2016 , existe una paleta de técnicas de ataque contra las cuales un cifrador de bloques debe ser seguro, además de ser robusto contra ataques de fuerza bruta .

Diseño

Cifrados de bloques iterados

La mayoría de los algoritmos de cifrado de bloques se clasifican como cifrados de bloques iterados , lo que significa que transforman bloques de tamaño fijo de texto simple en bloques de tamaño idéntico de texto cifrado , mediante la aplicación repetida de una transformación invertible conocida como función de ronda , y cada iteración se denomina ronda . [12]

Por lo general, la función de redondeo R toma diferentes claves de redondeo K i como segunda entrada, que se deriva de la clave original: [ cita requerida ]

donde es el texto simple y el texto cifrado, siendo r el número de rondas.

Además , con frecuencia se utiliza el blanqueamiento de claves . Al principio y al final, los datos se modifican con material de claves (a menudo con XOR ):

Dado uno de los esquemas de diseño de cifrado de bloques iterados estándar, es bastante fácil construir un cifrado de bloques que sea criptográficamente seguro, simplemente utilizando una gran cantidad de rondas. Sin embargo, esto hará que el cifrado sea ineficiente. Por lo tanto, la eficiencia es el criterio de diseño adicional más importante para los cifrados profesionales. Además, un buen cifrado de bloques está diseñado para evitar ataques de canal lateral, como la predicción de bifurcaciones y los accesos a la memoria dependientes de la entrada que podrían filtrar datos secretos a través del estado de la caché o el tiempo de ejecución. Además, el cifrado debe ser conciso, para implementaciones de hardware y software pequeñas.

Redes de sustitución-permutación

Esquema de una red de sustitución-permutación con tres rondas, que cifra un bloque de texto simple de 16 bits en un bloque de texto cifrado de 16 bits. Las cajas S son las S i , las cajas P son las mismas P y las claves de ronda son las K i .

Un tipo importante de cifrado de bloques iterado, conocido como red de sustitución-permutación (SPN), toma un bloque del texto simple y la clave como entradas y aplica varias rondas alternas que consisten en una etapa de sustitución seguida de una etapa de permutación para producir cada bloque de texto cifrado como salida. [13] La etapa de sustitución no lineal mezcla los bits de la clave con los del texto simple, creando la confusión de Shannon . La etapa de permutación lineal luego disipa las redundancias, creando difusión . [14] [15]

Una caja de sustitución (S-box) sustituye un bloque pequeño de bits de entrada por otro bloque de bits de salida. Esta sustitución debe ser uno a uno , para garantizar la invertibilidad (y, por lo tanto, el descifrado). Una S-box segura tendrá la propiedad de que al cambiar un bit de entrada se cambiará aproximadamente la mitad de los bits de salida en promedio, exhibiendo lo que se conoce como el efecto avalancha , es decir, tiene la propiedad de que cada bit de salida dependerá de cada bit de entrada. [16]

Una caja de permutación (P-box) es una permutación de todos los bits: toma las salidas de todas las cajas S de una ronda, permuta los bits y los introduce en las cajas S de la siguiente ronda. Una buena P-box tiene la propiedad de que los bits de salida de cualquier S-box se distribuyen a tantas entradas de S-box como sea posible. [ cita requerida ]

En cada ronda, la clave de ronda (obtenida a partir de la clave con algunas operaciones simples, por ejemplo, utilizando cajas S y cajas P) se combina utilizando alguna operación de grupo, normalmente XOR . [ cita requerida ]

El descifrado se realiza simplemente invirtiendo el proceso (utilizando los inversos de las cajas S y P y aplicando las claves redondas en orden inverso). [17]

Cifras de Feistel

Muchos cifrados de bloque, como DES y Blowfish, utilizan estructuras conocidas como cifrados Feistel.

En un cifrado Feistel , el bloque de texto simple que se va a cifrar se divide en dos mitades de igual tamaño. La función de redondeo se aplica a una mitad, utilizando una subclave, y luego se realiza una operación XOR con la otra mitad. Luego se intercambian las dos mitades. [18]

Sea la función de ronda y sean las subclaves para las rondas respectivamente.

Entonces el funcionamiento básico es el siguiente: [18]

Divida el bloque de texto sin formato en dos partes iguales, ( , )

Para cada ronda , calcule

.

Entonces el texto cifrado es .

El descifrado de un texto cifrado se logra mediante el cálculo de

.

Luego está el texto simple nuevamente.

Una ventaja del modelo de Feistel en comparación con una red de sustitución-permutación es que la función redonda no tiene que ser invertible. [19]

Cifrados Lai-Massey

El esquema Lai-Massey. El código arquetípico que lo utiliza es IDEA .

El esquema de Lai-Massey ofrece propiedades de seguridad similares a las de la estructura de Feistel . También comparte la ventaja de que la función de redondeo no tiene por qué ser invertible. Otra similitud es que también divide el bloque de entrada en dos partes iguales. Sin embargo, la función de redondeo se aplica a la diferencia entre los dos y el resultado se suma a ambos medios bloques.

Sea la función redondeada y una función de media redondeo y sean las subclaves para las redondeos respectivamente.

Entonces el funcionamiento básico es el siguiente:

Divida el bloque de texto sin formato en dos partes iguales, ( , )

Para cada ronda , calcule

donde y

Entonces el texto cifrado es .

El descifrado de un texto cifrado se logra mediante el cálculo de

donde y

Luego está el texto simple nuevamente.

Operaciones

ARX ​​(agregar–rotar–XOR)

Muchos algoritmos de cifrado y hashes de bloques modernos son algoritmos ARX : su función circular implica solo tres operaciones: (A) adición modular, (R) rotación con cantidades de rotación fijas y (X) XOR . Algunos ejemplos son ChaCha20 , Speck , XXTEA y BLAKE . Muchos autores dibujan una red ARX, una especie de diagrama de flujo de datos , para ilustrar dicha función circular. [20]

Estas operaciones ARX son populares porque son relativamente rápidas y baratas en hardware y software, su implementación puede hacerse extremadamente simple y también porque se ejecutan en tiempo constante y, por lo tanto, son inmunes a los ataques de temporización . La técnica del criptoanálisis rotacional intenta atacar tales funciones redondas.

Otras operaciones

Otras operaciones que se utilizan a menudo en los cifrados de bloques incluyen rotaciones dependientes de datos como en RC5 y RC6 , un cuadro de sustitución implementado como una tabla de búsqueda como en el Estándar de cifrado de datos y el Estándar de cifrado avanzado , un cuadro de permutación y una multiplicación como en IDEA .

Modos de funcionamiento

Cifrado inseguro de una imagen como resultado de la codificación en modo de libro de códigos electrónico (ECB)

Un cifrado de bloques por sí solo permite cifrar solo un bloque de datos de la longitud de bloque del cifrado. Para un mensaje de longitud variable, los datos primero deben dividirse en bloques de cifrado separados. En el caso más simple, conocido como modo de libro de códigos electrónico (ECB), un mensaje primero se divide en bloques separados del tamaño de bloque del cifrado (posiblemente ampliando el último bloque con bits de relleno ), y luego cada bloque se cifra y descifra de forma independiente. Sin embargo, un método tan ingenuo generalmente es inseguro porque bloques de texto simple iguales siempre generarán bloques de texto cifrado iguales (para la misma clave), por lo que los patrones en el mensaje de texto simple se vuelven evidentes en la salida de texto cifrado. [21]

Para superar esta limitación, se han diseñado varios modos de operación denominados de cifrado de bloques [22] [23] y se han especificado en recomendaciones nacionales como NIST 800-38A [24] y BSI TR-02102 [25] y estándares internacionales como ISO/IEC 10116. [ 26] El concepto general es utilizar la aleatorización de los datos de texto simple en función de un valor de entrada adicional, frecuentemente llamado vector de inicialización , para crear lo que se denomina cifrado probabilístico . [27] En el popular modo de encadenamiento de bloques de cifrado (CBC), para que el cifrado sea seguro, el vector de inicialización que se pasa junto con el mensaje de texto simple debe ser un valor aleatorio o pseudoaleatorio , que se agrega de manera exclusiva o al primer bloque de texto simple antes de que se cifre. El bloque de texto cifrado resultante se utiliza luego como el nuevo vector de inicialización para el siguiente bloque de texto simple. En el modo de retroalimentación de cifrado (CFB), que emula un cifrado de flujo autosincronizado , el vector de inicialización se cifra primero y luego se agrega al bloque de texto sin formato. El modo de retroalimentación de salida (OFB) cifra repetidamente el vector de inicialización para crear un flujo de claves para la emulación de un cifrado de flujo sincrónico . El modo de contador más nuevo (CTR) crea de manera similar un flujo de claves, pero tiene la ventaja de que solo necesita valores únicos y no (pseudo) aleatorios como vectores de inicialización; la aleatoriedad necesaria se deriva internamente utilizando el vector de inicialización como un contador de bloques y cifrando este contador para cada bloque. [24]

Desde un punto de vista teórico de seguridad , los modos de operación deben proporcionar lo que se conoce como seguridad semántica . [28] De manera informal, significa que dado un texto cifrado bajo una clave desconocida, prácticamente no se puede derivar ninguna información del texto cifrado (aparte de la longitud del mensaje) más allá de lo que se habría sabido sin ver el texto cifrado. Se ha demostrado que todos los modos discutidos anteriormente, con la excepción del modo ECB, proporcionan esta propiedad bajo los llamados ataques de texto plano elegido .

Relleno

Algunos modos, como el modo CBC, sólo funcionan en bloques de texto sin formato completos. Simplemente extender el último bloque de un mensaje con bits cero no es suficiente, ya que no permite que un receptor distinga fácilmente los mensajes que difieren sólo en el número de bits de relleno. Más importante aún, una solución tan simple da lugar a ataques oráculo de relleno muy eficientes . [29] Por lo tanto, se necesita un esquema de relleno adecuado para extender el último bloque de texto sin formato al tamaño de bloque del cifrado. Si bien se ha demostrado que muchos esquemas populares descritos en estándares y en la literatura son vulnerables a los ataques oráculo de relleno, [29] [30] una solución que agrega un bit y luego extiende el último bloque con bits cero, estandarizada como "método de relleno 2" en ISO/IEC 9797-1, [31] ha demostrado ser segura contra estos ataques. [30]

Criptoanálisis

Ataques de fuerza bruta

Esta propiedad hace que la seguridad del cifrado se degrade de forma cuadrática y debe tenerse en cuenta al seleccionar un tamaño de bloque. Sin embargo, existe una desventaja, ya que los tamaños de bloque grandes pueden hacer que el algoritmo se vuelva ineficiente para operar. [32] Los cifrados de bloque anteriores, como el DES, generalmente seleccionaban un tamaño de bloque de 64 bits, mientras que los diseños más nuevos, como el AES, admiten tamaños de bloque de 128 bits o más, y algunos cifrados admiten una variedad de tamaños de bloque diferentes. [33]

Criptoanálisis diferencial

Criptoanálisis lineal

El criptoanálisis lineal es una forma de criptoanálisis que se basa en encontrar aproximaciones afines a la acción de un cifrado . El criptoanálisis lineal es uno de los dos métodos de ataque más utilizados para los cifrados en bloque; el otro es el criptoanálisis diferencial . [34]

El descubrimiento se atribuye a Mitsuru Matsui , quien aplicó por primera vez la técnica al cifrado FEAL (Matsui y Yamagishi, 1992). [35]

Criptoanálisis integral

El criptoanálisis integral es un ataque criptoanalítico que es particularmente aplicable a los cifrados de bloques basados ​​en redes de sustitución-permutación. A diferencia del criptoanálisis diferencial, que utiliza pares de textos simples elegidos con una diferencia XOR fija, el criptoanálisis integral utiliza conjuntos o incluso multiconjuntos de textos simples elegidos de los cuales una parte se mantiene constante y otra parte varía a través de todas las posibilidades. Por ejemplo, un ataque podría utilizar 256 textos simples elegidos que tienen todos menos 8 de sus bits iguales, pero todos difieren en esos 8 bits. Tal conjunto necesariamente tiene una suma XOR de 0, y las sumas XOR de los conjuntos correspondientes de textos cifrados proporcionan información sobre el funcionamiento del cifrado. Este contraste entre las diferencias entre pares de textos y las sumas de conjuntos de textos más grandes inspiró el nombre "criptoanálisis integral", tomando prestada la terminología del cálculo. [ cita requerida ]

Otras técnicas

El desarrollo del ataque boomerang permitió aplicar técnicas de criptoanálisis diferencial a muchos cifrados que anteriormente se consideraban seguros contra ataques diferenciales.

Además del criptoanálisis lineal y diferencial, existe un catálogo cada vez mayor de ataques: criptoanálisis diferencial truncado , criptoanálisis diferencial parcial, criptoanálisis integral , que abarca los ataques cuadrados e integrales, ataques deslizantes , ataques boomerang , el ataque XSL , criptoanálisis diferencial imposible y ataques algebraicos. Para que un nuevo diseño de cifrado de bloques tenga alguna credibilidad, debe demostrar evidencia de seguridad contra ataques conocidos. [ cita requerida ]

Seguridad demostrable

Cuando se utiliza un cifrado de bloques en un modo de operación determinado , el algoritmo resultante debería ser idealmente tan seguro como el propio cifrado de bloques. El ECB (discutido anteriormente) carece enfáticamente de esta propiedad: independientemente de lo seguro que sea el cifrado de bloques subyacente, el modo ECB puede ser atacado fácilmente. Por otro lado, se puede demostrar que el modo CBC es seguro bajo el supuesto de que el cifrado de bloques subyacente también lo es. Sin embargo, tenga en cuenta que hacer afirmaciones como esta requiere definiciones matemáticas formales de lo que significa que un algoritmo de cifrado o un cifrado de bloques "sea seguro". Esta sección describe dos nociones comunes sobre qué propiedades debería tener un cifrado de bloques. Cada una corresponde a un modelo matemático que se puede utilizar para demostrar las propiedades de algoritmos de nivel superior, como el CBC.

Este enfoque general de la criptografía (probar que los algoritmos de nivel superior (como CBC) son seguros bajo supuestos explícitamente establecidos respecto de sus componentes (como un cifrado de bloque)) se conoce como seguridad demostrable .

Modelo estándar

De manera informal, un cifrado de bloque es seguro en el modelo estándar si un atacante no puede distinguir la diferencia entre el cifrado de bloque (equipado con una clave aleatoria) y una permutación aleatoria.

Para ser un poco más precisos, supongamos que E es un cifrador de bloques de n bits. Imaginemos el siguiente juego:

  1. La persona que dirige el juego lanza una moneda.
    • Si la moneda cae cara, elige una clave aleatoria K y define la función f = E K .
    • Si la moneda cae del lado de la cruz, elige una permutación aleatoria π en el conjunto de cadenas de n bits y define la función f = π .
  2. El atacante elige una cadena de n bits X y la persona que ejecuta el juego le dice el valor de f ( X ).
  3. El paso 2 se repite un total de q veces. (Cada una de estas q interacciones es una consulta ).
  4. El atacante intenta adivinar dónde cayó la moneda. Si su suposición es correcta, gana.

El atacante, que podemos modelar como un algoritmo, se denomina adversario . La función f (que el adversario pudo consultar) se denomina oráculo .

Nótese que un adversario puede asegurar trivialmente una probabilidad del 50% de ganar simplemente adivinando al azar (o incluso, por ejemplo, siempre adivinando "cara"). Por lo tanto, sea P E ( A ) la probabilidad de que el adversario A gane este juego contra E , y defina la ventaja de A como 2( P E ( A ) − 1/2). Se deduce que si A adivina al azar, su ventaja será 0; por otro lado, si A siempre gana, entonces su ventaja es 1. El cifrado de bloque E es una permutación pseudoaleatoria (PRP) si ningún adversario tiene una ventaja significativamente mayor que 0, dadas las restricciones especificadas en q y el tiempo de ejecución del adversario. Si en el Paso 2 anterior los adversarios tienen la opción de aprender f −1 ( X ) en lugar de f ( X ) (pero aún tienen solo pequeñas ventajas), entonces E es una PRP fuerte (SPRP). Un adversario no es adaptativo si elige todos los valores q para X antes de que comience el juego (es decir, no utiliza ninguna información obtenida de consultas anteriores para elegir cada X a medida que avanza).

Estas definiciones han demostrado ser útiles para analizar varios modos de operación. Por ejemplo, se puede definir un juego similar para medir la seguridad de un algoritmo de cifrado basado en cifrado de bloques y luego intentar demostrar (a través de un argumento de reducción ) que la probabilidad de que un adversario gane este nuevo juego no es mucho mayor que P E ( A ) para algún A . (La reducción generalmente proporciona límites a q y al tiempo de ejecución de A .) De manera equivalente, si P E ( A ) es pequeño para todos los A relevantes , entonces ningún atacante tiene una probabilidad significativa de ganar el nuevo juego. Esto formaliza la idea de que el algoritmo de nivel superior hereda la seguridad del cifrado de bloques.

Modelo de cifrado ideal

Evaluación práctica

En la práctica, los cifrados por bloques se pueden evaluar según múltiples criterios. Entre los factores comunes se incluyen: [36] [37]

Cifrados de bloque notables

Lucifer / DES

Lucifer es considerado generalmente como el primer cifrador de bloques civil, desarrollado en IBM en la década de 1970 basado en el trabajo realizado por Horst Feistel . Una versión revisada del algoritmo fue adoptada como Estándar de Procesamiento de Información Federal del gobierno de los EE. UU.: Estándar de Cifrado de Datos FIPS PUB 46 (DES). [39] Fue elegido por la Oficina Nacional de Normas de los EE. UU. (NBS) después de una invitación pública para presentaciones y algunos cambios internos por parte de la NBS (y, potencialmente, la NSA ). DES se lanzó públicamente en 1976 y ha sido ampliamente utilizado. [ cita requerida ]

DES fue diseñado, entre otras cosas, para resistir un cierto ataque criptoanalítico conocido por la NSA y redescubierto por IBM, aunque desconocido públicamente hasta que fue redescubierto nuevamente y publicado por Eli Biham y Adi Shamir a fines de la década de 1980. La técnica se llama criptoanálisis diferencial y sigue siendo uno de los pocos ataques generales contra los cifrados de bloque; el criptoanálisis lineal es otro, pero puede haber sido desconocido incluso para la NSA, antes de su publicación por Mitsuru Matsui . DES impulsó una gran cantidad de otros trabajos y publicaciones en criptografía y criptoanálisis en la comunidad abierta e inspiró muchos nuevos diseños de cifrados. [ cita requerida ]

DES tiene un tamaño de bloque de 64 bits y un tamaño de clave de 56 bits. Los bloques de 64 bits se volvieron comunes en los diseños de cifrado de bloques después de DES. La longitud de la clave dependía de varios factores, incluida la regulación gubernamental. Muchos observadores [ ¿quiénes? ] en la década de 1970 comentaron que la longitud de clave de 56 bits utilizada para DES era demasiado corta. Con el tiempo, su inadecuación se hizo evidente, especialmente después de que la Electronic Frontier Foundation demostrara en 1998 una máquina de propósito especial diseñada para descifrar DES . Una extensión de DES, Triple DES , cifra triplemente cada bloque con dos claves independientes (clave de 112 bits y seguridad de 80 bits) o tres claves independientes (clave de 168 bits y seguridad de 112 bits). Fue ampliamente adoptado como reemplazo. A partir de 2011, la versión de tres claves todavía se considera segura, aunque los estándares del Instituto Nacional de Estándares y Tecnología (NIST) ya no permiten el uso de la versión de dos claves en nuevas aplicaciones, debido a su nivel de seguridad de 80 bits. [40]

IDEA

El algoritmo internacional de cifrado de datos ( IDEA ) es un cifrador de bloques diseñado por James Massey de ETH Zurich y Xuejia Lai ; fue descrito por primera vez en 1991, como un reemplazo previsto para DES.

IDEA opera en bloques de 64 bits utilizando una clave de 128 bits y consta de una serie de ocho transformaciones idénticas (una ronda ) y una transformación de salida (la media ronda ). Los procesos de cifrado y descifrado son similares. IDEA obtiene gran parte de su seguridad intercalando operaciones de diferentes grupos ( suma y multiplicación modulares y operación exclusiva bit a bit, o XOR) , que son algebraicamente "incompatibles" en cierto sentido.

Los diseñadores analizaron IDEA para medir su fortaleza frente al criptoanálisis diferencial y concluyeron que es inmune bajo ciertas suposiciones. No se han reportado debilidades lineales o algebraicas exitosas. A partir de 2012 , el mejor ataque que se aplica a todas las claves puede romper un IDEA de 8,5 rondas completo utilizando un ataque biclique estrecho aproximadamente cuatro veces más rápido que la fuerza bruta.

RC5

Una ronda (dos medias rondas) del cifrado de bloque RC5

RC5 es un cifrador de bloques diseñado por Ronald Rivest en 1994 que, a diferencia de muchos otros cifradores, tiene un tamaño de bloque variable (32, 64 o 128 bits), un tamaño de clave (de 0 a 2040 bits) y un número de rondas (de 0 a 255). La elección de parámetros sugerida originalmente era un tamaño de bloque de 64 bits, una clave de 128 bits y 12 rondas.

Una característica clave de RC5 es el uso de rotaciones dependientes de los datos; uno de los objetivos de RC5 era impulsar el estudio y la evaluación de tales operaciones como un primitivo criptográfico. RC5 también consta de una serie de adiciones modulares y XOR. La estructura general del algoritmo es una red similar a la de Feistel . Las rutinas de cifrado y descifrado se pueden especificar en unas pocas líneas de código. El programa de claves, sin embargo, es más complejo, expandiendo la clave utilizando una función esencialmente unidireccional con las expansiones binarias tanto de e como de la proporción áurea como fuentes de " números que no tienen nada bajo la manga ". La tentadora simplicidad del algoritmo junto con la novedad de las rotaciones dependientes de los datos han hecho de RC5 un objeto de estudio atractivo para los criptoanalistas.

El RC5 de 12 rondas (con bloques de 64 bits) es susceptible a un ataque diferencial utilizando 244 textos simples seleccionados. [41] Se sugieren entre 18 y 20 rondas como protección suficiente.

Rijndael / AES

El cifrado Rijndael desarrollado por los criptógrafos belgas Joan Daemen y Vincent Rijmen fue uno de los diseños que compitieron para reemplazar al DES. Ganó el concurso público de cinco años para convertirse en el AES (Advanced Encryption Standard).

Adoptado por el NIST en 2001, el AES tiene un tamaño de bloque fijo de 128 bits y un tamaño de clave de 128, 192 o 256 bits, mientras que el Rijndael se puede especificar con tamaños de bloque y clave en cualquier múltiplo de 32 bits, con un mínimo de 128 bits. El tamaño de bloque tiene un máximo de 256 bits, pero el tamaño de clave no tiene un máximo teórico. El AES opera en una matriz de bytes de orden mayor de columna de 4 × 4, denominada estado (las versiones de Rijndael con un tamaño de bloque mayor tienen columnas adicionales en el estado).

Pez globo

Blowfish es un cifrador de bloques, diseñado en 1993 por Bruce Schneier e incluido en una gran cantidad de suites de cifrado y productos de cifrado. Blowfish tiene un tamaño de bloque de 64 bits y una longitud de clave variable desde 1 bit hasta 448 bits. [42] Es un cifrado Feistel de 16 rondas y utiliza grandes cajas S dependientes de la clave . Las características notables del diseño incluyen las cajas S dependientes de la clave y un programa de clave altamente complejo.

Blowfish fue diseñado como un algoritmo de propósito general, pensado como una alternativa al antiguo DES y libre de los problemas y restricciones asociados con otros algoritmos. En el momento en que Blowfish fue lanzado, muchos otros diseños eran propietarios, estaban sujetos a patentes o eran secretos comerciales o gubernamentales. Schneier ha declarado que "Blowfish no está patentado y seguirá estando así en todos los países. El algoritmo queda por la presente en el dominio público y puede ser utilizado libremente por cualquier persona". Lo mismo se aplica a Twofish , un algoritmo sucesor de Schneier.

Generalizaciones

Cifrados de bloque modificables

M. Liskov, R. Rivest y D. Wagner han descrito una versión generalizada de los cifrados de bloques denominados cifrados de bloques "modificables". [43] Un cifrado de bloques modificable acepta una segunda entrada denominada modificación junto con su entrada habitual de texto simple o cifrado. La modificación, junto con la clave, selecciona la permutación calculada por el cifrador. Si cambiar las modificaciones es lo suficientemente ligero (en comparación con una operación de configuración de clave que suele ser bastante cara), entonces se hacen posibles algunos modos de operación nuevos e interesantes. El artículo sobre la teoría del cifrado de discos describe algunos de estos modos.

Cifrado que preserva el formato

Los cifrados en bloque funcionan tradicionalmente sobre un alfabeto binario . Es decir, tanto la entrada como la salida son cadenas binarias, que constan de n ceros y unos. En algunas situaciones, sin embargo, uno puede desear tener un cifrado en bloque que funcione sobre algún otro alfabeto; por ejemplo, cifrar números de tarjetas de crédito de 16 dígitos de tal manera que el texto cifrado también sea un número de 16 dígitos podría facilitar la adición de una capa de cifrado al software heredado. Este es un ejemplo de cifrado que preserva el formato . De manera más general, el cifrado que preserva el formato requiere una permutación con clave en algún lenguaje finito . Esto hace que los esquemas de cifrado que preservan el formato sean una generalización natural de los cifrados en bloque (modificables). Por el contrario, los esquemas de cifrado tradicionales, como CBC, no son permutaciones porque el mismo texto simple puede cifrar múltiples textos cifrados diferentes, incluso cuando se utiliza una clave fija.

Relación con otros primitivos criptográficos

Los cifrados en bloque se pueden utilizar para crear otros primitivos criptográficos, como los que se muestran a continuación. Para que estos otros primitivos sean criptográficamente seguros, se debe tener cuidado de crearlos de la manera correcta.

Así como los cifrados en bloque se pueden utilizar para crear funciones hash, como SHA-1 y SHA-2, que se basan en cifrados en bloque que también se utilizan de forma independiente como SHACAL , las funciones hash se pueden utilizar para crear cifrados en bloque. Ejemplos de estos cifrados en bloque son BEAR y LION .

Véase también

Referencias

  1. ^ Cusick, Thomas W.; Stanica, Pantelimon (2009). Funciones y aplicaciones criptográficas booleanas. Academic Press. pp. 158–159. ISBN 9780123748904.
  2. ^ Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (1996). "Capítulo 7: Cifrados en bloque". Manual de criptografía aplicada. CRC Press. ISBN 0-8493-8523-7Archivado desde el original el 3 de febrero de 2021. Consultado el 15 de julio de 2012 .
  3. ^ Bellare, Mihir; Rogaway, Phillip (11 de mayo de 2005), Introducción a la criptografía moderna (Apuntes de clase) , archivado (PDF) desde el original el 2022-10-09, capítulo 3.
  4. ^ Chakraborty, D.; Rodríguez-Henríquez, F. (2008). "Modos de operación de cifrado por bloques desde una perspectiva de implementación de hardware". En Koç, Çetin K. (ed.). Ingeniería criptográfica . Springer. pág. 321. ISBN 9780387718163.
  5. ^ Menezes, van Oorschot y Vanstone 1996, sección 7.2.
  6. ^ Shannon, Claude (1949). "Teoría de la comunicación de los sistemas secretos" (PDF) . Bell System Technical Journal . 28 (4): 656–715. doi :10.1002/j.1538-7305.1949.tb00928.x. Archivado desde el original (PDF) el 2007-06-05 . Consultado el 2012-04-09 .
  7. ^ van Tilborg, Henk CA; Jajodia, Sushil, eds. (2011). Enciclopedia de criptografía y seguridad. Springer. ISBN 978-1-4419-5905-8., pág. 455.
  8. ^ van Tilborg y Jajodia 2011, pág. 1268.
  9. ^ Rupp, Martin (16 de agosto de 2019). "Los beneficios del bloque de llave Atalla". Utimaco . Archivado desde el original el 17 de octubre de 2020 . Consultado el 10 de septiembre de 2019 .
  10. ^ Hamscher, Walter (1998). "Negocios electrónicos sin miedo: la arquitectura de seguridad Tristrata" (PDF) . CiteSeerX 10.1.1.123.2371 . Archivado desde el original (PDF) el 29 de mayo de 2005. [ ¿ Fuente autopublicada? ]
  11. ^ Stiennon, Richard (17 de junio de 2014). "La gestión de claves, un espacio de rápido crecimiento". SecurityCurrent . IT-Harvest . Consultado el 21 de agosto de 2019 .
  12. ^ Junod, Pascal y Canteaut, Anne (2011). Criptoanálisis lineal avanzado de cifrados de bloques y de flujo. IOS Press. p. 2. ISBN 9781607508441.
  13. ^ Keliher, Liam; et al. (2000). "Modelado de características lineales de redes de sustitución-permutación". En Hays, Howard; Carlisle, Adam (eds.). Áreas seleccionadas en criptografía: sexto taller internacional anual, SAC'99, Kingston, Ontario, Canadá, 9 y 10 de agosto de 1999: actas. Springer. pág. 79. ISBN 9783540671855.
  14. ^ Baigneres, Thomas; Finiasz, Matthieu (2007). "Dial 'C' for Cipher". En Biham, Eli; Yousseff, Amr (eds.). Selected areas in cryptography: 13th international workshop, SAC 2006, Montreal, Canadá, 17-18 de agosto de 2006 : artículos seleccionados revisados ​​. Springer. pág. 77. ISBN 9783540744610.
  15. ^ Cusick, Thomas W.; Stanica, Pantelimon (2009). Funciones y aplicaciones criptográficas booleanas. Academic Press. pág. 164. ISBN 9780123748904.
  16. ^ Katz, Jonathan; Lindell, Yehuda (2008). Introducción a la criptografía moderna. CRC Press. pág. 166. ISBN 9781584885511., páginas 166–167.
  17. ^ Subhabrata Samajder (2017). Criptoanálisis de cifrado por bloques: una descripción general . Calcuta: Instituto de Estadística de la India. págs. 5/52.
  18. ^ desde Katz y Lindell 2008, págs. 170-172.
  19. ^ Katz y Lindell 2008, pág. 171.
  20. ^ Aumasson, Jean-Philippe; Bernstein, Daniel J. (2012). "SipHash: una PRF rápida de entrada corta" (PDF) . En Galbraith, Steven; Nandi, Mridul (eds.). Progreso en criptología: INDOCRYPT 2012: 13.ª Conferencia internacional sobre criptología en India, Calcuta, India, 9-12 de diciembre de 2012, actas . Berlín: Springer. pág. 494. doi :10.1007/978-3-642-34931-7_28. ISBN . 978-3-642-34931-7. Archivado desde el original (PDF) el 12 de marzo de 2020.
  21. ^ Menezes, van Oorschot y Vanstone 1996, págs. 228-230, capítulo 7.
  22. ^ "Modos de cifrado por bloques". Centro de recursos de seguridad informática del NIST . 4 de enero de 2017.
  23. ^ Menezes, van Oorschot y Vanstone 1996, págs. 228-233.
  24. ^ por Morris Dworkin (diciembre de 2001), "Recomendación para los modos de operación del cifrado por bloques: métodos y técnicas" (PDF) , Publicación especial 800-38A , Instituto Nacional de Estándares y Tecnología (NIST), doi :10.6028/NIST.SP.800-38A, archivado (PDF) desde el original el 2022-10-09
  25. ^ "Kryptographische Verfahren: Empfehlungen und Schlüssellängen", Bsi Tr-02102 (Technische Richtlinie) (Versión 1.0), 20 de junio de 2008
  26. ^ "ISO/IEC 10116:2006 Tecnología de la información — Técnicas de seguridad — Modos de operación para un cifrado de bloque de n bits".
  27. ^ Bellare & Rogaway 2005, pág. 101, sección 5.3.
  28. ^ Bellare y Rogaway 2005, sección 5.6.
  29. ^ de Serge Vaudenay (2002). "Fallas de seguridad inducidas por relleno CBC: aplicaciones para SSL, IPSEC, WTLS". Avances en criptología: EUROCRYPT 2002. Apuntes de clase sobre informática. Vol. 2332. Springer Verlag. págs. 534–545. doi :10.1007/3-540-46035-7_35. ISBN 978-3-540-43553-2.
  30. ^ ab Kenneth G. Paterson; Gaven J. Watson (2008). "Inmunización del modo CBC contra ataques de relleno de Oracle: un tratamiento de seguridad formal". Seguridad y criptografía para redes . Apuntes de clase en informática. Vol. 5229. Springer Verlag. págs. 340–357. doi :10.1007/978-3-540-85855-3_23. ISBN 978-3-540-85854-6.
  31. ^ ISO/IEC 9797-1: Tecnología de la información – Técnicas de seguridad – Códigos de autenticación de mensajes (MAC) – Parte 1: Mecanismos que utilizan un cifrado de bloques, ISO/IEC, 2011
  32. ^ Martin, Keith M. (2012). Criptografía cotidiana: principios fundamentales y aplicaciones. Oxford University Press. pág. 114. ISBN 9780199695591.
  33. ^ Paar, Christof; et al. (2010). Entender la criptografía: un libro de texto para estudiantes y profesionales. Springer. p. 30. ISBN 9783642041006.
  34. ^ Matsui, Mitsuru. "Criptoanálisis lineal del cifrado DES". Mitsubishi Electric Corporation . 1 (3): 43 – vía Computer & Information Systems Laboratory.
  35. ^ Matsui, M. y Yamagishi, A. "Un nuevo método para el ataque de texto plano conocido del cifrado FEAL". Avances en criptología – EUROCRYPT 1992 .
  36. ^ Menezes, van Oorschot y Vanstone 1996, pág. 227.
  37. ^ James Nechvatal; Elaine Barker; Lawrence Bassham; William Burr; Morris Dworkin; James Foti; Edward Roback (octubre de 2000), Informe sobre el desarrollo del estándar de cifrado avanzado (AES) (PDF) , Instituto Nacional de Estándares y Tecnología (NIST), archivado (PDF) desde el original el 2022-10-09
  38. ^ Ataques que demuestran que el cifrado no funciona como se anuncia (es decir, el nivel de dificultad involucrado en descifrarlo es menor que el anunciado), pero que sin embargo son de una complejidad suficientemente alta como para que no sean prácticamente alcanzables.
  39. ^ FIPS PUB 46-3 Estándar de cifrado de datos (DES) (Esta es la tercera edición, 1999, pero incluye información histórica en la sección preliminar 12.)
  40. ^ Publicación especial 800-57 del NIST Recomendación para la gestión de claves — Parte 1: General (revisada), marzo de 2007 Archivado el 6 de junio de 2014 en Wayback Machine .
  41. ^ Biryukov A. y Kushilevitz E. (1998). Criptoanálisis mejorado de RC5. EUROCRYPT 1998.
  42. ^ Bruce Schneier (1994). "Descripción de una nueva clave de longitud variable, cifrado de bloque de 64 bits (Blowfish)". Dr. Dobb's Journal . 19 (4): 38–40.
  43. ^ Liskov, M.; Rivest, R.; Wagner, D. "Cifrados de bloque modificables" (PDF) . Crypto 2002 . Archivado (PDF) desde el original el 2022-10-09.
  44. ^ "ISO/IEC 10118-2:2010 Tecnología de la información — Técnicas de seguridad — Funciones hash — Parte 2: Funciones hash que utilizan un cifrado de bloque de n bits".
  45. ^ Menezes, van Oorschot & Vanstone 1996, Capítulo 9: Funciones hash e integridad de los datos.
  46. ^ Barker, EB; Kelsey, JM (2012). "Publicación especial NIST 800-90A Recomendación para la generación de números aleatorios utilizando generadores de bits aleatorios deterministas" (PDF) . doi :10.6028/NIST.SP.800-90A. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  47. ^ Menezes, van Oorschot & Vanstone 1996, Capítulo 5: Secuencias y bits pseudoaleatorios.
  48. ^ Orr Dunkelman , Nathan Keller y Adi Shamir . "Minimalismo en criptografía: el esquema Even-Mansour revisitado".

Lectura adicional

Enlaces externos