En criptografía , un cifrado por bloques es un algoritmo determinista que opera sobre grupos de bits de longitud fija , denominados bloques . Los cifrados por bloques son los componentes básicos de muchos protocolos criptográficos . Son omnipresentes en el almacenamiento e intercambio de datos, donde estos se protegen y autentican mediante cifrado .
Un cifrado por bloques utiliza bloques como una transformación invariable. Incluso un cifrado por bloques seguro solo es adecuado para cifrar un único bloque de datos a la vez, utilizando una clave fija. Se han diseñado múltiples modos de operación para permitir su uso repetido de forma segura y así lograr los objetivos de seguridad de confidencialidad y autenticidad . Sin embargo, los cifrados por bloques también pueden formar parte de otros protocolos criptográficos, como las funciones hash universales y los generadores de números pseudoaleatorios .
Definición

Un cifrado de bloques consta de dos algoritmos emparejados, uno para el cifrado, E , y 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 cifrado 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 llama texto plano y C se denomina texto cifrado . Para cada K , se requiere que la función E K ( P ) sea una aplicació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 plano P , de tal manera que
Por ejemplo, un algoritmo de cifrado por bloques podría tomar como entrada un bloque de texto plano de 128 bits y generar como salida un bloque de texto cifrado de 128 bits. La transformación exacta se controla mediante una segunda entrada: la clave secreta. El descifrado es similar: en este ejemplo, el algoritmo de descifrado toma un bloque de texto cifrado de 128 bits junto con la clave secreta y genera el bloque original de texto plano de 128 bits. [ 4 ]
Para cada clave K , E K es una permutación (una aplicación biyectiva ) sobre el conjunto de bloques de entrada. Cada clave selecciona una permutación del conjunto depermutaciones posibles. [ 5 ]
Historia
El diseño moderno de los cifrados de bloques se basa en el concepto de cifrado de producto iterado . En su publicación fundamental de 1949, *Communication Theory of Secrecy Systems* , Claude Shannon analizó los cifrados de producto y los propuso como un medio para mejorar la seguridad de manera efectiva mediante la combinación de operaciones simples como sustituciones y permutaciones . [ 6 ] Los cifrados de producto iterados realizan el cifrado en múltiples rondas , cada una de las cuales utiliza una subclave diferente derivada de la clave original. Una implementación extendida de estos cifrados, denominada red Feistel en honor a Horst Feistel, se implementa notablemente en el cifrado DES . [ 7 ] Muchas otras implementaciones de cifrados de bloques, 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) reside en el Bloque de Clave Atalla (AKB), una innovación clave de la Caja Atalla , 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 necesario para intercambiar de forma segura claves simétricas o PIN con otros actores del sector bancario . Este intercambio seguro se realiza mediante el formato AKB. [ 9 ] La Caja Atalla protegía más del 90 % de todas las redes de cajeros automáticos en funcionamiento en 1998, [ 10 ] y los productos Atalla aún 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 Estándares de los Estados Unidos (posteriormente el Instituto Nacional de Estándares y Tecnología de los Estados Unidos , NIST) en 1977 fue fundamental para la comprensión pública del diseño moderno de cifrados por 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 2016Existe una gama de técnicas de ataque contra las cuales un cifrado 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 por bloques se clasifican como cifrados por bloques iterados, lo que significa que transforman bloques de texto plano de tamaño fijo en bloques de texto cifrado de tamaño idéntico , 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: [ 13 ]
dóndees el texto plano yel texto cifrado, donde r es el número de rondas.
Con frecuencia, además de esto, se utiliza el blanqueamiento de claves . Al principio y al final, los datos se modifican con material de clave (a menudo con XOR ):
Dado uno de los esquemas de diseño estándar de cifrado por bloques iterativo, es relativamente fácil construir un cifrado por bloques criptográficamente seguro, simplemente utilizando un gran número de rondas. Sin embargo, esto lo vuelve 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 por bloques está diseñado para evitar ataques de canal lateral, como la predicción de bifurcaciones y los accesos a 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. Asimismo, el cifrado debe ser conciso, para implementaciones de hardware y software pequeñas.
Redes de sustitución-permutación

Un tipo importante de cifrado por bloques iterativo conocido como red de sustitución-permutación (SPN) toma un bloque del texto plano 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 de salida. [ 14 ] La etapa de sustitución no lineal mezcla los bits de la clave con los del texto plano, creando la confusión de Shannon . La etapa de permutación lineal disipa las redundancias, creando difusión . [ 15 ] [ 16 ]
Una caja de sustitución (caja S) reemplaza un pequeño bloque de bits de entrada con otro bloque de bits de salida. Esta sustitución debe ser biunívoca para garantizar la invertibilidad (y, por lo tanto, el descifrado). Una caja S segura tendrá la propiedad de que cambiar un bit de entrada cambiará, en promedio, aproximadamente la mitad de los bits de salida, exhibiendo lo que se conoce como efecto avalancha ; es decir, tiene la propiedad de que cada bit de salida dependerá de cada bit de entrada. [ 17 ]
Una caja de permutación (P-box) es una permutación de todos los bits: toma las salidas de todas las S-boxes de una ronda, permuta los bits y los introduce en las S-boxes de la siguiente ronda. Una buena P-box tiene la propiedad de que los bits de salida de cualquier S-box se distribuyen a la mayor cantidad posible de entradas de S-box. [ 18 ]
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 .
El descifrado se realiza simplemente invirtiendo el proceso (utilizando las inversas de las cajas S y P y aplicando las claves de ronda en orden inverso). [ 19 ]
Cifrados de Feistel

En un cifrado Feistel , el bloque de texto plano que se va a cifrar se divide en dos mitades de igual tamaño. La función round se aplica a una mitad, utilizando una subclave, y luego el resultado se combina mediante XOR con la otra mitad. A continuación, se intercambian las dos mitades. [ 20 ]
Dejarsea la función redonda y deje que sean las subclaves para las rondasrespectivamente.
Entonces, la operación básica es la siguiente: [ 20 ]
Divida el bloque de texto plano en dos partes iguales, (,)
Por cada ronda, calcular
- .
Entonces el texto cifrado es.
El descifrado de un texto cifradose logra mediante el cálculo de
- .
Entonceses el texto plano de nuevo.
Una ventaja del modelo de Feistel en comparación con una red de sustitución-permutación es que la función de rondano tiene por qué ser invertible. [ 21 ]
Cifrados Lai-Massey

El esquema Lai-Massey ofrece propiedades de seguridad similares a las de la estructura Feistel . También comparte la ventaja de que la función de rondaNo 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 ambas, y el resultado se suma a ambos semibloques.
Dejarser la función redonda yuna función semicircular y dejarsean las subclaves para las rondasrespectivamente.
Entonces, el funcionamiento básico es el siguiente:
Divida el bloque de texto plano en dos partes iguales, (,)
Por cada ronda, calcular
dóndey
Entonces el texto cifrado es.
El descifrado de un texto cifradose logra mediante el cálculo de
dóndey
Entonceses el texto plano de nuevo.
Operaciones
ARX (sumar–rotar–XOR)
Muchos cifrados de bloques y funciones hash modernos son algoritmos ARX ; su función de ronda implica solo tres operaciones: (A) suma 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 de ronda. [ 22 ]
Estas operaciones ARX son populares porque son relativamente rápidas y económicas en cuanto a hardware y software, su implementación puede simplificarse enormemente y, además, se ejecutan en tiempo constante, lo que las hace inmunes a los ataques de temporización . La técnica de criptoanálisis rotacional intenta atacar este tipo de funciones de ronda.
Otras operaciones
Otras operaciones que se utilizan a menudo en los cifrados de bloques incluyen rotaciones dependientes de datos como en RC5 y RC6 , una caja de sustitución implementada como una tabla de búsqueda como en el Estándar de Cifrado de Datos y el Estándar de Cifrado Avanzado , una caja de permutación y multiplicación como en IDEA .
Modos de funcionamiento

Un cifrado por bloques, por sí solo, permite cifrar únicamente un único bloque de datos del tamaño del bloque del cifrador. Para un mensaje de longitud variable, los datos deben dividirse primero en bloques de cifrado separados. En el caso más simple, conocido como modo de libro de códigos electrónico (ECB), un mensaje se divide primero en bloques separados del tamaño del bloque del cifrador (posiblemente extendiendo el último bloque con bits de relleno ), y luego cada bloque se cifra y descifra de forma independiente. Sin embargo, este método ingenuo suele ser inseguro porque los bloques de texto plano iguales siempre generarán bloques de texto cifrado iguales (para la misma clave), por lo que los patrones del mensaje de texto plano se hacen evidentes en la salida del texto cifrado. [ 23 ]
Para superar esta limitación, se han diseñado varios modos de operación denominados cifrado por bloques [ 24 ] [ 25 ] y se han especificado en recomendaciones nacionales como NIST 800-38A [ 26 ] y BSI TR-02102 [ 27 ] y estándares internacionales como ISO/IEC 10116. [ 28 ] El concepto general es utilizar la aleatorización de los datos de texto plano basada en un valor de entrada adicional, frecuentemente llamado vector de inicialización , para crear lo que se denomina cifrado probabilístico . [ 29 ] 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 plano debe ser un valor aleatorio o pseudoaleatorio , que se agrega de manera exclusiva-o al primer bloque de texto plano antes de que se cifre. El bloque de texto cifrado resultante se utiliza entonces como el nuevo vector de inicialización para el siguiente bloque de texto plano. 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 plano. 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 síncrono . El modo de contador (CTR) más reciente crea de manera similar un flujo de claves, pero tiene la ventaja de solo necesitar 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 bloque y cifrando este contador para cada bloque. [ 26 ]
Desde un punto de vista de la teoría de la seguridad , los modos de operación deben proporcionar lo que se conoce como seguridad semántica . [ 30 ] De manera informal, esto significa que, dado un texto cifrado con una clave desconocida, no se puede derivar prácticamente ninguna información del texto cifrado (aparte de la longitud del mensaje) que no se pudiera obtener sin verlo. Se ha demostrado que todos los modos mencionados anteriormente, con la excepción del modo BCE, proporcionan esta propiedad frente a los denominados ataques de texto plano elegido .
Relleno
Algunos modos, como el modo CBC, solo operan en bloques de texto plano completos. Simplemente extender el último bloque de un mensaje con bits cero es insuficiente, ya que no permite que un receptor distinga fácilmente los mensajes que difieren solo en la cantidad de bits de relleno. Más importante aún, una solución tan simple da lugar a ataques de oráculo de relleno muy eficientes . [ 31 ] Por lo tanto, se necesita un esquema de relleno adecuado para extender el último bloque de texto plano al tamaño de bloque del cifrador. Si bien se ha demostrado que muchos esquemas populares descritos en estándares y en la literatura son vulnerables a ataques de oráculo de relleno, [ 31 ] [ 32 ] 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, [ 33 ] ha demostrado ser segura contra estos ataques. [ 32 ]
Criptoanálisis
El criptoanálisis es la técnica mediante la cual se descifran códigos sin conocer la clave utilizada. Se pueden emplear diferentes ataques según la información disponible para el criptoanalista; estos modelos de ataque son:
- Solo texto cifrado : el criptoanalista solo tiene acceso a una colección de textos cifrados o textos codificados .
- Texto plano conocido : el atacante tiene un conjunto de textos cifrados para los que conoce el texto plano correspondiente .
- Texto plano elegido ( texto cifrado elegido ): el atacante puede obtener los textos cifrados (textos planos) correspondientes a un conjunto arbitrario de textos planos (textos cifrados) de su elección.
- Ataque adaptativo de texto plano elegido : similar a un ataque de texto plano elegido, excepto que el atacante puede elegir textos planos subsiguientes basándose en información aprendida de cifrados anteriores, de forma similar al ataque adaptativo de texto cifrado elegido .
- Ataque de clave relacionada : Similar a un ataque de texto plano elegido, con la diferencia de que el atacante puede obtener textos cifrados con dos claves diferentes. Las claves son desconocidas, pero se conoce la relación entre ellas; por ejemplo, dos claves que difieren en un bit.
Ataques de fuerza bruta
Esta propiedad provoca que la seguridad del cifrado se degrade cuadráticamente y debe tenerse en cuenta al seleccionar el tamaño del bloque. Sin embargo, existe una contrapartida, ya que los tamaños de bloque grandes pueden hacer que el algoritmo sea ineficiente. [ 34 ] Los primeros cifrados de bloques, como el DES, solían utilizar un tamaño de bloque de 64 bits, mientras que los diseños más recientes, como el AES, admiten tamaños de bloque de 128 bits o más, y algunos cifrados admiten una gama de tamaños de bloque diferentes. [ 35 ]
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 ataques más utilizados contra los cifrados por bloques; el otro es el criptoanálisis diferencial . [ 36 ]
El descubrimiento se atribuye a Mitsuru Matsui , quien aplicó por primera vez la técnica al cifrado FEAL (Matsui y Yamagishi, 1992). [ 37 ]
Criptoanálisis integral
El criptoanálisis integral es un ataque criptoanalítico particularmente aplicable a cifrados de bloques basados en redes de sustitución-permutación. A diferencia del criptoanálisis diferencial, que utiliza pares de textos planos elegidos con una diferencia XOR fija, el criptoanálisis integral utiliza conjuntos o incluso multiconjuntos de textos planos elegidos, de los cuales una parte se mantiene constante y otra varía en todas las posibilidades. Por ejemplo, un ataque podría utilizar 256 textos planos elegidos que tienen todos sus bits iguales excepto 8, pero todos difieren en esos 8 bits. Dicho 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 más grandes de textos inspiró el nombre de "criptoanálisis integral", tomando prestada la terminología del cálculo.
Otras técnicas

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 ataques cuadráticos e integrales), ataques de deslizamiento , ataques de bumerán , el ataque XSL , criptoanálisis diferencial imposible y ataques algebraicos. Para que un nuevo diseño de cifrado por bloques tenga alguna credibilidad, debe demostrar evidencia de seguridad contra ataques conocidos. [ 38 ]
seguridad demostrable
Cuando se utiliza un cifrado por bloques en un modo de operación determinado , el algoritmo resultante debería ser idealmente tan seguro como el propio cifrado por bloques. El cifrado ECB (mencionado anteriormente) carece claramente de esta propiedad: independientemente de la seguridad del cifrado por bloques subyacente, el modo ECB puede ser atacado fácilmente. Por otro lado, se puede demostrar la seguridad del modo CBC bajo el supuesto de que el cifrado por bloques subyacente también lo sea. Sin embargo, cabe señalar que hacer afirmaciones como esta requiere definiciones matemáticas formales de lo que significa que un algoritmo de cifrado o un cifrado por bloques sea "seguro". Esta sección describe dos nociones comunes sobre las propiedades que debería tener un cifrado por bloques. Cada una corresponde a un modelo matemático que puede utilizarse para demostrar propiedades de algoritmos de nivel superior, como CBC.
Este enfoque general de la criptografía —que consiste en demostrar que los algoritmos de nivel superior (como CBC) son seguros bajo supuestos explícitamente establecidos con respecto a sus componentes (como un cifrado por bloques)— se conoce como seguridad demostrable .
Modelo estándar
De manera informal, un cifrado por bloques es seguro en el modelo estándar si un atacante no puede distinguir entre el cifrado por bloques (equipado con una clave aleatoria) y una permutación aleatoria.
Para ser un poco más precisos, sea E un cifrado de bloques de n bits. Imaginemos el siguiente juego:
- La persona que dirige el juego lanza una moneda al aire.
- Si la moneda cae cara, elige una clave aleatoria K y define la función f = E K .
- Si la moneda cae en cruz, elige una permutación aleatoria π en el conjunto de cadenas de n bits y define la función f = π .
- El atacante elige una cadena de n bits X , y la persona que dirige el juego le dice el valor de f ( X ).
- El paso 2 se repite un total de q veces. (Cada una de estas q interacciones es una consulta ).
- El atacante adivina cómo cayó la moneda. Gana si acierta.
El atacante, que podemos modelar como un algoritmo, se llama adversario . La función f (que el adversario pudo consultar) se llama oráculo .
Nótese que un adversario puede asegurar fácilmente un 50% de probabilidad de ganar simplemente adivinando al azar (o incluso, por ejemplo, adivinando siempre "cara"). Por lo tanto, sea P E ( A ) la probabilidad de que el adversario A gane este juego contra E , y definamos la ventaja de A como 2( P E ( A ) − 1/2). De ello 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 bloques E es una permutación pseudoaleatoria (PRP) si ningún adversario tiene una ventaja significativamente mayor que 0, dadas las restricciones especificadas sobre 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 así 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 diversos modos de operación. Por ejemplo, se puede definir un juego similar para medir la seguridad de un algoritmo de cifrado basado en cifrado por bloques, y luego intentar demostrar (mediante 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 suele proporcionar límites para q y el tiempo de ejecución de A ). De forma 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 por bloques.
Modelo de cifrado ideal
Evaluación práctica
Los cifrados de bloques pueden evaluarse según múltiples criterios en la práctica. Los factores comunes incluyen: [ 39 ] [ 40 ]
- Parámetros clave, como el tamaño de la clave y el tamaño del bloque, que proporcionan un límite superior a la seguridad del cifrado.
- El nivel de seguridad estimado , que se basa en la confianza adquirida en el diseño del cifrado de bloques después de que ha resistido en gran medida los principales esfuerzos de criptoanálisis a lo largo del tiempo, la solidez matemática del diseño y la existencia de ataques prácticos o de certificación [ 41 ] .
- La complejidad del cifrado y su idoneidad para la implementación en hardware o software . Las implementaciones en hardware pueden medir la complejidad en términos de número de compuertas o consumo de energía, parámetros importantes para dispositivos con recursos limitados.
- El rendimiento del cifrador en términos de capacidad de procesamiento en diversas plataformas, incluidos sus requisitos de memoria .
- El coste del cifrado se refiere a los requisitos de licencia que puedan aplicarse debido a los derechos de propiedad intelectual .
- La flexibilidad del cifrado incluye su capacidad para admitir múltiples tamaños de clave y longitudes de bloque.
Cifrados de bloques destacados
Lucifer / DES
Lucifer se considera generalmente el primer cifrador de bloques civil, desarrollado en IBM en la década de 1970 a partir del trabajo de Horst Feistel . Una versión revisada del algoritmo fue adoptada como estándar federal de procesamiento de información del gobierno de EE. UU .: FIPS PUB 46, Estándar de Cifrado de Datos (DES). [ 42 ] Fue seleccionado por la Oficina Nacional de Estándares (NBS) de EE. UU. tras una convocatoria pública de propuestas y algunos cambios internos por parte de la NBS (y, posiblemente, de la NSA ). DES se publicó en 1976 y se ha utilizado ampliamente desde entonces.
DES fue diseñado, entre otras cosas, para resistir un ataque criptoanalítico conocido por la NSA y redescubierto por IBM, aunque desconocido para el público hasta que Eli Biham y Adi Shamir lo redescubrieron y publicaron a finales de la década de 1980. La técnica se denomina criptoanálisis diferencial y sigue siendo uno de los pocos ataques generales contra los cifrados por bloques; el criptoanálisis lineal es otro, pero es posible que incluso la NSA lo desconociera antes de su publicación por Mitsuru Matsui . DES impulsó una gran cantidad de trabajos y publicaciones en criptografía y criptoanálisis en la comunidad abierta e inspiró muchos diseños de cifrado nuevos.
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 hicieron comunes en los diseños de cifrado por bloques después de DES. La longitud de la clave dependía de varios factores, incluida la regulación gubernamental. Muchos observadores 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 insuficiencia 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 romper DES . Una extensión de DES, Triple DES , cifra cada bloque con tres claves independientes: 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. [ 43 ]
IDEA
El Algoritmo Internacional de Cifrado de Datos ( IDEA ) es un cifrado por bloques diseñado por James Massey de la ETH Zúrich y Xuejia Lai ; se describió por primera vez en 1991 como un posible sustituto de DES.
IDEA opera con 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 basa gran parte de su seguridad en la intercalación de operaciones de diferentes grupos —suma y multiplicación modulares , y la operación XOR ( coma exclusivo ) a nivel de bits— que son algebraicamente "incompatibles" en cierto sentido.
Los diseñadores analizaron IDEA para medir su resistencia frente al criptoanálisis diferencial y concluyeron que es inmune bajo ciertas suposiciones. No se han reportado vulnerabilidades lineales o algebraicas exitosas. A partir de 2012El mejor ataque, que se aplica a todas las claves, puede romper un IDEA completo de 8,5 rondas utilizando un ataque de bicliques estrechos aproximadamente cuatro veces más rápido que la fuerza bruta.
RC5

RC5 es un cifrado por bloques diseñado por Ronald Rivest en 1994 que, a diferencia de muchos otros cifrados, 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 configuración original sugerida 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 dichas operaciones como primitiva criptográfica. RC5 también consta de varias sumas modulares y XOR. La estructura general del algoritmo es una red tipo Feistel . Las rutinas de cifrado y descifrado se pueden especificar en unas pocas líneas de código. Sin embargo, la planificación de claves es más compleja, expandiendo la clave mediante una función esencialmente unidireccional con las expansiones binarias de e y la proporción áurea como fuentes de números aleatorios . La tentadora simplicidad del algoritmo, junto con la novedad de las rotaciones dependientes de los datos, ha convertido a RC5 en un objeto de estudio atractivo para los criptoanalistas.
RC5 de 12 rondas (con bloques de 64 bits) es susceptible a un ataque diferencial utilizando 2 44 textos planos elegidos. [ 44 ] Se sugieren 18-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 5 años para convertirse en el AES (Estándar de Cifrado Avanzado).
Adoptado por el NIST en 2001, 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 Rijndael puede especificarse con tamaños de bloque y clave en cualquier múltiplo de 32 bits, con un mínimo de 128 bits. El tamaño del bloque tiene un máximo de 256 bits, pero el tamaño de la clave no tiene un máximo teórico. AES opera sobre una matriz de bytes de orden columnar 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 is a block cipher, designed in 1993 by Bruce Schneier and included in a large number of cipher suites and encryption products. Blowfish has a 64-bit block size and a variable key length from 1 bit up to 448 bits.[45] It is a 16-round Feistel cipher and uses large key-dependent S-boxes. Notable features of the design include the key-dependent S-boxes and a highly complex key schedule.
It was designed as a general-purpose algorithm, intended as an alternative to the aging DES and free of the problems and constraints associated with other algorithms. At the time Blowfish was released, many other designs were proprietary, encumbered by patents, or were commercial/government secrets. Schneier has stated that "Blowfish is unpatented, and will remain so in all countries. The algorithm is hereby placed in the public domain, and can be freely used by anyone." The same applies to Twofish, a successor algorithm from Schneier.
Additional National Block Ciphers
Several block ciphers exist that are generally only used in certain localities or jurisdictions, some of the more well known ones include:
- SM4 — China
- Kuznyechik (GOST R 34.12-2015) — Russia
- GOST 28147-89 — Soviet Union / Russia (deprecated)
- ARIA — South Korea
- SEED — South Korea
- Camellia — Japan, also used internationally to an extent.
- Kalyna — Ukraine
Generalizations
Tweakable block ciphers
M. Liskov, R. Rivest, and D. Wagner have described a generalized version of block ciphers called "tweakable" block ciphers.[46] A tweakable block cipher accepts a second input called the tweak along with its usual plaintext or ciphertext input. The tweak, along with the key, selects the permutation computed by the cipher. If changing tweaks is sufficiently lightweight (compared with a usually fairly expensive key setup operation), then some interesting new operation modes become possible. The disk encryption theory article describes some of these modes.
Format-preserving encryption
Los cifrados por bloques tradicionalmente funcionan con un alfabeto binario . Es decir, tanto la entrada como la salida son cadenas binarias, compuestas por n ceros y unos. Sin embargo, en algunas situaciones, puede ser conveniente utilizar un cifrado por bloques que funcione con otro alfabeto; por ejemplo, cifrar números de tarjetas de crédito de 16 dígitos de forma que el texto cifrado también sea un número de 16 dígitos podría facilitar la incorporación de una capa de cifrado a software heredado. Este es un ejemplo de cifrado que preserva el formato . En términos más generales, el cifrado que preserva el formato requiere una permutación con clave en algún lenguaje finito . Esto convierte a los esquemas de cifrado que preservan el formato en una generalización natural de los cifrados por bloques (ajustables). En cambio, los esquemas de cifrado tradicionales, como CBC, no son permutaciones, ya que el mismo texto plano puede cifrar varios textos cifrados diferentes, incluso utilizando una clave fija.
Relación con otras primitivas criptográficas
Los cifrados por bloques pueden utilizarse para construir otras primitivas criptográficas, como las que se muestran a continuación. Para que estas otras primitivas sean criptográficamente seguras, es necesario tener cuidado al construirlas.
- Los cifradores de flujo se pueden construir utilizando cifradores de bloques. Los modos OFB y CTR son modos de bloque que convierten un cifrador de bloques en un cifrador de flujo.
- Las funciones hash criptográficas se pueden construir utilizando cifrados por bloques. [ 47 ] [ 48 ] Consulte la función de compresión unidireccional para obtener descripciones de varios de estos métodos. Los métodos se asemejan a los modos de operación de cifrado por bloques que se utilizan habitualmente para el cifrado.
- Los generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG) se pueden construir utilizando cifrados de bloques. [ 49 ] [ 50 ]
- Se pueden construir permutaciones pseudoaleatorias seguras de conjuntos finitos de tamaño arbitrario con cifrados de bloques; véase Cifrado que preserva el formato .
- Una permutación impredecible conocida públicamente combinada con el blanqueamiento de clave es suficiente para construir un cifrado de bloques, como el cifrado Even-Mansour de clave única , quizás el cifrado de bloques demostrablemente seguro más simple posible. [ 51 ]
- Los códigos de autenticación de mensajes (MAC) suelen construirse a partir de cifrados de bloques. CBC-MAC , OMAC y PMAC son ejemplos de este tipo de MAC.
- El cifrado autenticado también se basa en cifrados por bloques. Consiste en cifrar y realizar el MAC simultáneamente, lo que proporciona confidencialidad y autenticación . CCM , EAX , GCM y OCB son ejemplos de modos de cifrado autenticado.
Así como los cifrados de bloques se pueden usar para construir funciones hash, como SHA-1 y SHA-2, que se basan en cifrados de bloques que también se usan de forma independiente como SHACAL , las funciones hash se pueden usar para construir cifrados de bloques. Ejemplos de dichos cifrados de bloques son BEAR y LION .
Véase también
Referencias
- ↑ Cusick, Thomas W.; Stanica, Pantelimon (2009). Funciones booleanas criptográficas y aplicaciones . Academic Press. págs. 158–159 . ISBN 9780123748904.
- ↑ Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (1996). «Capítulo 7: Cifrados por bloques». Manual de criptografía aplicada . CRC Press. ISBN 0-8493-8523-7Archivado del original el 3 de febrero de 2021. Consultado el 15 de julio de 2012 .
- ↑ Bellare, Mihir; Rogaway, Phillip (11 de mayo de 2005), Introducción a la criptografía moderna (apuntes de clase) , archivado (PDF) del original el 9 de octubre de 2022, capítulo 3.
- ↑ Chakraborty, D.; Rodriguez-Henriquez, F. (2008). "Modos de operación del 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.
- ↑ Menezes, van Oorschot & Vanstone 1996 , sección 7.2.
- ↑ Shannon, Claude (1949). "Teoría de la comunicación de los sistemas de secreto" (PDF) . Bell System Technical Journal . 28 (4): 656– 715. Bibcode : 1949BSTJ...28..656S . doi : 10.1002/j.1538-7305.1949.tb00928.x . Archivado del original (PDF) el 5 de junio de 2007. Recuperado el 9 de abril de 2012 .
- ^ van Tilborg, Henk CA; Jajodia, Sushil, eds. (2011). Enciclopedia de Criptografía y Seguridad . Saltador. ISBN 978-1-4419-5905-8., pág. 455.
- ^ van Tilborg y Jajodia 2011 , pág. 1268.
- ↑ Rupp, Martin (16 de agosto de 2019). "Los beneficios del bloque de llave Atalla" . Utimaco . Archivado del original el 17 de octubre de 2020. Recuperado el 10 de septiembre de 2019 .
- ↑ Hamscher, Walter (1998). "Negocios electrónicos sin miedo: la arquitectura de seguridad de Tristrata" (PDF) . CiteSeerX 10.1.1.123.2371 . Archivado del original (PDF) el 29 de mayo de 2005.
- ↑ Stiennon, Richard (17 de junio de 2014). "La gestión de claves: un sector en rápido crecimiento" . SecurityCurrent . IT-Harvest . Consultado el 21 de agosto de 2019 .
- ↑ Junod, Pascal y Canteaut, Anne (2011). Criptoanálisis lineal avanzado de cifrados de bloques y de flujo . IOS Press. pág. 2. ISBN 9781607508441.
- ↑ Aumasson, Jean-Philippe (6 de noviembre de 2017). Criptografía seria: Una introducción práctica al cifrado moderno . No Starch Press. pág. 56. ISBN 978-1-59327-826-7OCLC 1012843116
- ↑ Keliher, Liam; et al. (2000). "Modelado de las características lineales de las redes de sustitución-permutación". En Hays, Howard; Carlisle, Adam (eds.). Áreas selectas en criptografía: 6.º taller internacional anual, SAC'99, Kingston, Ontario, Canadá, 9-10 de agosto de 1999 : actas . Springer. pág . 79. ISBN 9783540671855.
- ↑ 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 : Revised selected papers . Springer. p. 77. ISBN 9783540744610.
- ↑ Cusick, Thomas W.; Stanica, Pantelimon (2009). Funciones booleanas criptográficas y aplicaciones . Academic Press. pág. 164. ISBN 9780123748904.
- ↑ Katz, Jonathan; Lindell, Yehuda (2008). Introducción a la criptografía moderna . CRC Press. pág . 166. ISBN 9781584885511.páginas 166–167.
- ↑ Nayaka, Raja Jitendra; Biradar, RC (2013). "Algoritmo de selección de caja S basado en clave y expansión de clave para criptografía de red de sustitución-permutación". Conferencia Internacional Anual de 2013 sobre Áreas de Investigación Emergentes y Conferencia Internacional de 2013 sobre Microelectrónica, Comunicaciones y Energía Renovable . págs. 1–6 . doi : 10.1109/AICERA-ICMiCR.2013.6575944 . ISBN 978-1-4673-5149-2.
- ↑ Subhabrata Samajder (2017). Criptoanálisis de cifrado por bloques: una visión general . Calcuta: Instituto Estadístico Indio. págs. 5/52.
- 1 2 Katz y Lindell 2008 , págs. 170–172.
- ↑ Katz y Lindell 2008 , pág. 171.
- ↑ Aumasson, Jean-Philippe; Bernstein, Daniel J. (2012). "SipHash: una PRF rápida con entrada corta" (PDF) . En Galbraith, Steven; Nandi, Mridul (eds.). Avances 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-7Archivado del original (PDF) el 12 de marzo de 2020.
- ^ Menezes, van Oorschot y Vanstone 1996 , págs. 228-230, capítulo 7.
- ↑ "Modos de cifrado por bloques" . Centro de recursos de seguridad informática del NIST . 4 de enero de 2017.
- ^ Menezes, van Oorschot y Vanstone 1996 , págs .
- 1 2 Morris Dworkin (diciembre de 2001), "Recomendación para modos de operación de 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) del original el 9 de octubre de 2022
- ^ "Kryptographische Verfahren: Empfehlungen und Schlüssellängen", Bsi Tr-02102 (Technische Richtlinie) (Versión 1.0), 20 de junio de 2008
- ↑ "ISO/IEC 10116:2006 Tecnología de la información — Técnicas de seguridad — Modos de operación para un cifrado de bloques de n bits " .
- ^ Bellare y Rogaway 2005 , pág. 101, sección 5.3.
- ↑ Bellare y Rogaway 2005 , sección 5.6.
- 1 2 Serge Vaudenay (2002). "Fallos de seguridad inducidos por el relleno CBC: aplicaciones a SSL, IPSEC, WTLS". Avances en criptología — EUROCRYPT 2002. Notas de clase en informática. Vol. 2332. Springer Verlag. págs. 534–545 . doi : 10.1007/3-540-46035-7_35 . ISBN 978-3-540-43553-2.
- 1 2 Kenneth G. Paterson; Gaven J. Watson (2008). "Inmunización del modo CBC contra ataques de oráculo de relleno: un tratamiento formal de seguridad". Seguridad y criptografía para redes . Notas de clase en ciencias de la computación. Vol. 5229. Springer Verlag. págs. 340–357 . doi : 10.1007/978-3-540-85855-3_23 . ISBN 978-3-540-85854-6.
- ↑ 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 por bloques , ISO/IEC, 2011
- ↑ Martin, Keith M. (2012). Criptografía cotidiana: principios fundamentales y aplicaciones . Oxford University Press. pág. 114. ISBN 9780199695591.
- ↑ Paar, Christof; et al. (2010). Comprensión de la criptografía: Un libro de texto para estudiantes y profesionales . Springer. pág. 30. ISBN 9783642041006.
- ↑ Matsui, Mitsuru. "Criptoanálisis lineal del cifrado DES" . Mitsubishi Electric Corporation . 1 (3): 43 – vía Computer & Information Systems Laboratory.
- ↑ 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 .
- ↑ Wu, Shengbao; Wang, Mingsheng (2011), Evaluación de seguridad frente al criptoanálisis diferencial para estructuras de cifrado por bloques , consultado el 1 de enero de 2025
- ^ Menezes, van Oorschot y Vanstone 1996 , pág. 227.
- ↑ 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) del original el 9 de octubre de 2022
- ↑ Ataques que demuestran que el cifrado no funciona como se anuncia (es decir, que el nivel de dificultad para descifrarlo es menor de lo que se afirma), pero que, sin embargo, tienen una complejidad lo suficientemente alta como para que no sean factibles en la práctica.
- ↑ FIPS PUB 46-3 Estándar de cifrado de datos (DES) (Esta es la tercera edición, de 1999, pero incluye información histórica en la sección preliminar 12).
- ↑ Publicación especial 800-57 del NIST Recomendación para la gestión de claves — Parte 1: General (Revisada) , marzo de 2007 Archivada el 6 de junio de 2014 en Wayback Machine .
- ↑ Biryukov A. y Kushilevitz E. (1998). Criptoanálisis mejorado de RC5. EUROCRYPT 1998.
- ↑ Bruce Schneier (1994). "Descripción de un nuevo cifrado de bloques de 64 bits con clave de longitud variable (Blowfish)" . Dr. Dobb's Journal . 19 (4): 38– 40.
- ↑ Liskov, M.; Rivest, R.; Wagner, D. "Cifrados de bloques modificables" (PDF) . Crypto 2002. Archivado ( PDF) del original el 9 de octubre de 2022.
- ↑ "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 bloques de n bits " .
- ^ Menezes, van Oorschot & Vanstone 1996 , Capítulo 9: Funciones hash e integridad de los datos.
- ↑ Barker, EB; Kelsey, JM (2012). "Recomendación de la publicación especial 800-90A del NIST para la generación de números aleatorios mediante generadores de bits aleatorios deterministas " (PDF) . doi : 10.6028/NIST.SP.800-90A .
{{cite journal}}: Para citar una revista se requiere|journal=( ayuda ) - ^ Menezes, van Oorschot & Vanstone 1996 , Capítulo 5: Secuencias y bits pseudoaleatorios.
- ↑ Orr Dunkelman , Nathan Keller y Adi Shamir . "Minimalismo en criptografía: una revisión del esquema Even-Mansour" .
Lecturas adicionales
- Knudsen, Lars R.; Robshaw, Matthew (2011). The Block Cipher Companion . Springer. ISBN 9783642173417.
Enlaces externos
- Una lista de numerosos algoritmos simétricos, la mayoría de los cuales son cifrados por bloques.
- El salón de cifrado por bloques
- ¿Qué es un cifrado por bloques? (de las preguntas frecuentes de RSA)
- Cifrado de bloques basado en secuencias de oro y sistema de tienda logística caótica.
- Cifrados de bloques
- Primitivas criptográficas