En criptografía , un cifrado en bloque es un algoritmo determinista que opera en grupos de bits de longitud fija , llamados bloques . Utiliza una transformación invariable, es decir, utiliza una clave simétrica . Son componentes elementales especificados en el diseño de muchos protocolos criptográficos y se utilizan ampliamente para implementar el cifrado de grandes cantidades de datos, incluidos los protocolos de intercambio de datos.
Incluso un cifrado de bloque 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 operación para permitir su uso repetido de una manera segura para lograr los objetivos de seguridad de confidencialidad y autenticidad . Sin embargo, los cifrados en bloque también pueden aparecer 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 cifrado de bloque 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 cifrado de bloque se especifica mediante una función de cifrado
que toma como entrada una clave K , de longitud de bits k (llamado tamaño de clave ) y una cadena de bits P , de longitud n (llamado 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 , la función miK ( P ) debe ser un mapeo invertible en {0,1}n . Lo inverso para E se define como una función
tomando una llave K y un texto cifrado C para devolver un valor de texto sin formato P , tal que
Por ejemplo, un algoritmo de cifrado de bloques podría tomar un bloque de texto plano de 128 bits como entrada y generar un bloque de texto cifrado de 128 bits correspondiente. La transformación exacta se controla mediante una segunda entrada: la clave secreta. El descifrado es similar: el algoritmo de descifrado toma, en este ejemplo, un bloque de texto cifrado de 128 bits junto con la clave secreta, y produce el bloque original de texto sin formato de 128 bits. [4]
Para cada tecla K , E K es una permutación (un mapeo biyectivo ) sobre el conjunto de bloques de entrada. Cada tecla selecciona una permutación del conjunto deposibles permutaciones. [5]
Historia
El diseño moderno de los cifrados en bloque se basa en el concepto de un cifrado de producto iterado . En su publicación seminal de 1949, Communication Theory of Secrecy Systems , Claude Shannon analizó los cifrados de productos y los sugirió 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 productos iterados llevan a cabo el cifrado en varias 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 cifrado 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 dentro del Estándar de seguridad de datos de la industria de tarjetas de pago (PCI DSS) y los estándares del American National Standards Institute (ANSI) se encuentra en Atalla Key Block (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 claves, que se requiere para intercambiar de forma segura claves simétricas o PIN con otros actores de 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 a partir de 1998, [10] y los productos Atalla aún aseguran la mayoría de las transacciones de cajeros automáticos del mundo a partir de 2014. [11]
La publicación del cifrado DES por 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 del cifrado de bloques. También influyó en el desarrollo académico de los ataques criptoanalíticos . Tanto el criptoanálisis diferencial como el lineal surgieron a partir de estudios sobre el diseño de DES. A partir de 2016[actualizar]Existe una paleta de técnicas de ataque contra las cuales un cifrado de bloque 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 texto sin formato 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 redonda , con cada iteración denominada ronda . [12]
Por lo general, la función redonda R toma diferentes teclas redondas K i como segunda entrada, que se derivan de la clave original: [ cita requerida ]
dónde es el texto plano y el texto cifrado, siendo r el número de rondas.
Con frecuencia, se utiliza un blanqueamiento clave además de esto. Al principio y al final, los datos se modifican con material clave (a menudo con XOR , pero también se utilizan operaciones aritméticas simples como sumar y restar): [ cita requerida ]
Dado uno de los esquemas de diseño de cifrado de bloque iterado estándar, es bastante fácil construir un cifrado de bloque que sea criptográficamente seguro, simplemente usando una gran cantidad de rondas. Sin embargo, esto hará que el cifrado sea ineficaz. 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 rama 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. Además, el cifrado debe ser conciso, para pequeñas implementaciones de hardware y software. Finalmente, el cifrado debe ser fácilmente criptoanalizable, de modo que se pueda mostrar a cuántas rondas se debe reducir el cifrado, de modo que los ataques criptográficos existentes funcionen y, a la inversa, que se pueda demostrar que el número de rondas reales es lo suficientemente grande para protegerse contra ellos. [ cita requerida ]
Redes de sustitución-permutación
Un tipo importante de cifrado de bloque iterado conocido como red de sustitución-permutación (SPN) toma un bloque del texto sin formato 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 salida de texto cifrado. [13] La etapa de sustitución no lineal mezcla los bits clave con los del texto plano, 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 ( caja S) sustituye un pequeño bloque de bits de entrada por otro bloque de bits de salida. Esta sustitución debe ser uno a uno , para garantizar la invertibilidad (por lo tanto, el descifrado). Una caja S segura tendrá la propiedad de que cambiar un bit de entrada cambiará aproximadamente la mitad de los bits de salida en promedio, exhibiendo lo que se conoce como efecto de avalancha, es decir, tiene la propiedad de que cada bit de salida dependerá de cada bit de entrada. [dieciséis]
Una caja de permutación ( caja P) es una permutación de todos los bits: toma las salidas de todas las cajas S de una ronda, permuta los bits y los alimenta a las cajas S de la siguiente ronda. Una buena caja P tiene la propiedad de que los bits de salida de cualquier caja S se distribuyen a tantas entradas de caja S como sea posible. [ cita requerida ]
En cada ronda, la clave redonda (obtenida de la clave con algunas operaciones simples, por ejemplo, usando cajas S y cajas P) se combina usando alguna operación de grupo, típicamente XOR . [ cita requerida ]
El descifrado se realiza simplemente invirtiendo el proceso (utilizando las inversas de las cajas S y P y aplicando las claves redondas en orden inverso). [17]
Cifrados feistel
En un cifrado de Feistel , el bloque de texto sin formato que se va a cifrar se divide en dos mitades de igual tamaño. La función de redondeo se aplica a una mitad, usando una subclave, y luego la salida se aplica XOR con la otra mitad. A continuación, se intercambian las dos mitades. [18]
Dejar ser la función redonda y dejar ser las subclaves para las rondas respectivamente.
Entonces la operación básica es la siguiente: [18]
Divida el bloque de texto sin formato en dos partes iguales, (, )
Para cada ronda , calcular
- .
Entonces el texto cifrado es .
Descifrado de un texto cifrado se logra computando para
- .
Luego es el texto sin formato de nuevo.
Una ventaja del modelo de Feistel en comparación con una red de sustitución-permutación es que la función redondano tiene que ser invertible. [19]
Cifrados de Lai-Massey
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 redondano tiene que 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 semibloques.
Dejar ser la función redonda y una función de media vuelta y dejar ser las subclaves para las rondas respectivamente.
Entonces la operación básica es la siguiente:
Divida el bloque de texto sin formato en dos partes iguales, (, )
Para cada ronda , calcular
dónde y
Entonces el texto cifrado es .
Descifrado de un texto cifrado se logra computando para
dónde y
Luego es el texto sin formato de nuevo.
Operaciones
ARX (agregar – rotar – XOR)
Muchos cifrados de bloques y hashes modernos son algoritmos ARX ; su función de redondeo implica solo tres operaciones: (A) suma modular, (R) rotación con cantidades de rotación fijas y (X) XOR . Los ejemplos incluyen ChaCha20 , Speck , XXTEA y BLAKE . Muchos autores dibujan una red ARX, una especie de diagrama de flujo de datos , para ilustrar una función tan redonda. [20]
Estas operaciones ARX son populares porque son relativamente rápidas y económicas en hardware y software, su implementación se puede hacer extremadamente simple y también porque se ejecutan en un tiempo constante y, por lo tanto, son inmunes a los ataques de tiempo . La técnica de 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 la multiplicación como en IDEA .
Modos de operacion
Un cifrado de bloque por sí mismo permite el cifrado solo de un bloque de datos de la longitud del 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 se divide primero en bloques separados del tamaño del bloque de cifrado (posiblemente extendiendo 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 es generalmente inseguro porque los bloques de texto sin formato iguales siempre generarán bloques de texto cifrado iguales (para la misma clave), por lo que los patrones en el mensaje de texto sin formato se hacen evidentes en la salida del texto cifrado. [21]
Para superar esta limitación, se han diseñado varios modos de operación de cifrado en bloque [22] [23] y se han especificado en recomendaciones nacionales como NIST 800-38A [24] y BSI TR-02102 [25] y normas internacionales como ISO / IEC 10116 . [26] El concepto general es utilizar la aleatorización de los datos de texto sin formato basándose en un valor de entrada adicional, frecuentemente llamado vector de inicialización , para crear lo que se denomina encriptación probabilística . [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 plano debe ser un valor aleatorio o pseudoaleatorio , que se agrega de manera exclusiva o al primero. bloque de texto sin formato 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 sin formato. En el modo de retroalimentación de cifrado (CFB), que emula un cifrado de flujo de sincronización automática , el vector de inicialización se cifra primero y luego se añade al bloque de texto sin formato. El modo de retroalimentación de salida (OFB) encripta 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 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 contador de bloque y cifrando este contador para cada bloque. [24]
Desde el 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 . [28] Informalmente, significa que dado algún texto cifrado bajo una clave desconocida, uno no puede prácticamente derivar ninguna información del texto cifrado (aparte de la longitud del mensaje) sobre lo que uno 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 sin formato elegidos .
Relleno
Algunos modos, como el modo CBC, solo funcionan en bloques de texto sin formato 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 . [29] Por lo tanto, se necesita un esquema de relleno adecuado para extender el último bloque de texto plano al tamaño del bloque de cifrado. Si bien muchos esquemas populares descritos en los estándares y en la literatura han demostrado ser vulnerables a los ataques de relleno de Oracle, [29] [30] una solución que agrega un bit y luego extiende el último bloque con cero bits, estandarizado como " El método de relleno 2 "en ISO / IEC 9797-1 , [31] ha demostrado ser seguro contra estos ataques. [30]
Criptoanálisis
Ataques de fuerza bruta
Esta propiedad da como resultado que la seguridad del cifrado se degrade cuadráticamente y debe tenerse en cuenta al seleccionar un tamaño de bloque. Sin embargo, existe una compensación, ya que los tamaños de bloque grandes pueden hacer que el algoritmo se vuelva ineficaz para operar. [32] Los cifrados de bloque anteriores, como el DES , normalmente 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 encontraraproximaciones afines a la acción de un cifrado . El criptoanálisis lineal es uno de los dos ataques más utilizados a los cifrados en bloque; el otro es el criptoanálisis diferencial . [34]
El descubrimiento se atribuye a Mitsuru Matsui , quien primero aplicó 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 cifrados de bloque basados en redes de sustitución-permutación. A diferencia del criptoanálisis diferencial, que utiliza pares de textos sin formato elegidos con una diferencia XOR fija, el criptoanálisis integral utiliza conjuntos o incluso conjuntos múltiples de textos sin formato elegidos, de los cuales parte se mantiene constante y otra parte varía a través de todas las posibilidades. Por ejemplo, un ataque puede usar 256 textos sin formato elegidos que tienen todos menos 8 de sus bits iguales, pero todos difieren en esos 8 bits. Tal conjunto tiene necesariamente una suma XOR de 0, y las sumas XOR de los conjuntos correspondientes de textos cifrados proporcionan información sobre la operación del cifrado. Este contraste entre las diferencias de pares de textos y las sumas de conjuntos de textos más grandes inspiró el nombre de "criptoanálisis integral", tomando prestada la terminología del cálculo. [ cita requerida ]
Otras tecnicas
Además del criptoanálisis lineal y diferencial, existe un catálogo creciente de ataques: criptoanálisis diferencial truncado , criptoanálisis diferencial parcial, criptoanálisis integral , que engloba ataques cuadrados e integrales, ataques de deslizamiento , ataques de boomerang , ataque XSL , criptoanálisis diferencial imposible y ataques algebraicos . Para que un nuevo diseño de cifrado de bloques tenga credibilidad, debe demostrar evidencia de seguridad contra ataques conocidos. [ cita requerida ]
Seguridad demostrable
Cuando se usa un cifrado de bloque en un modo de operación dado , el algoritmo resultante debería ser idealmente tan seguro como el cifrado de bloque en sí. ECB (discutido anteriormente) carece enfáticamente de esta propiedad: independientemente de cuán seguro sea el cifrado de bloque 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 bloque subyacente es igualmente seguro. Sin embargo, tenga en cuenta que hacer declaraciones como esta requiere definiciones matemáticas formales de lo que significa que un algoritmo de cifrado o un cifrado de bloque "sea seguro". Esta sección describe dos nociones comunes sobre las propiedades que debe tener un cifrado de bloque. Cada uno corresponde a un modelo matemático que puede usarse para probar propiedades de algoritmos de nivel superior, como CBC.
Este enfoque general de la criptografía, que demuestra que los algoritmos de nivel superior (como CBC) son seguros bajo supuestos explícitamente establecidos con respecto a sus componentes (como un cifrado en bloque), se conoce como seguridad demostrable .
Modelo estandar
De manera informal, un cifrado de bloque es seguro en el modelo estándar si un atacante no puede distinguir entre el cifrado de bloque (equipado con una clave aleatoria) y una permutación aleatoria.
Para ser un poco más precisos, sea E un cifrado en bloque de n bits . Imaginamos el siguiente juego:
- La persona que ejecuta el juego lanza una moneda.
- Si la moneda cae en la cabeza, él 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 X de n bits , y la persona que ejecuta 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 su conjetura es correcta.
El atacante, que podemos modelar como un algoritmo, se llama adversario . La función f (que el adversario pudo consultar) se llama oráculo .
Tenga en cuenta que un adversario puede garantizar trivialmente un 50% de posibilidades de ganar simplemente adivinando al azar (o incluso, por ejemplo, siempre adivinando "caras"). Por lo tanto, denote 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). 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 bloque 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 tienen pequeñas ventajas), entonces E es un PRP fuerte (SPRP). Un adversario no se adapta si elige todos los valores q para X antes de que comience el juego (es decir, no usa 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 funcionamiento. 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 mostrar (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 generalmente proporciona límites en qy el 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 en bloque.
Modelo de cifrado ideal
Evaluación práctica
Los cifrados en bloque pueden evaluarse de acuerdo con múltiples criterios en la práctica. Los factores comunes incluyen: [36] [37]
- Parámetros clave, como el tamaño de la clave y el tamaño del bloque, ambos proporcionan un límite superior en la seguridad del cifrado.
- El nivel de seguridad estimado , que se basa en la confianza ganada en el diseño del cifrado de bloques después de que ha resistido en gran medida los grandes esfuerzos en 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 [38] .
- La complejidad del cifrado y su idoneidad para la implementación en hardware o software . Las implementaciones de hardware pueden medir la complejidad en términos de recuento de puertas o consumo de energía, que son parámetros importantes para dispositivos con recursos limitados.
- El rendimiento del cifrado en términos de rendimiento de procesamiento en varias plataformas, incluidos sus requisitos de memoria .
- El costo del cifrado, que se refiere a los requisitos de licencia que pueden aplicarse debido a los derechos de propiedad intelectual .
- La flexibilidad del cifrado, que incluye su capacidad para admitir múltiples tamaños de clave y longitudes de bloque.
Cifrados de bloque notables
Lucifer / DES
En general, se considera que Lucifer es el primer cifrado de bloques civil, desarrollado en IBM en la década de 1970 sobre la base del trabajo realizado por Horst Feistel . Se adoptó una versión revisada del algoritmo como estándar federal de procesamiento de información del gobierno de EE. UU . : FIPS PUB 46 Data Encryption Standard (DES). [39] Fue elegido por la Oficina Nacional de Estándares de los Estados Unidos (NBS) después de una invitación pública para presentaciones y algunos cambios internos por parte de NBS (y, potencialmente, la NSA ). DES fue lanzado al público en 1976 y se ha utilizado ampliamente. [ cita requerida ]
DES fue diseñado para, entre otras cosas, resistir 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 denomina criptoanálisis diferencial y sigue siendo uno de los pocos ataques generales contra los cifrados en 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 cifrado. [ 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én? ] en la década de 1970 comentó que la longitud de clave de 56 bits utilizada para DES era demasiado corta. Con el paso del 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 , encripta tres veces 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]
OCURRENCIA
El algoritmo de cifrado de datos internacional ( IDEA ) es un cifrado en bloque diseñado por James Massey de ETH Zurich y Xuejia Lai ; se describió 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 modular , y exclusivo bit a bit o (XOR) - que son algebraicamente "incompatibles" en algún sentido.
Los diseñadores analizaron IDEA para medir su fuerza frente al criptoanálisis diferencial y concluyeron que es inmune bajo ciertos supuestos. No se han reportado debilidades lineales o algebraicas exitosas . A partir de 2012[actualizar], el mejor ataque que se aplica a todas las teclas puede romper la IDEA de 8.5 rondas usando un ataque de biclices estrechos aproximadamente cuatro veces más rápido que la fuerza bruta.
RC5
RC5 es un cifrado de bloque 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), tamaño de clave (0 a 2040 bits) y número de rondas (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 datos; Uno de los objetivos de RC5 era impulsar el estudio y la evaluación de tales operaciones como primitiva criptográfica. RC5 también consta de una serie de adiciones modulares y XOR. La estructura general del algoritmo es una red similar a 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 usando una función esencialmente unidireccional con las expansiones binarias tanto de e como de la proporción áurea como fuentes de " números sin nada bajo mi manga ". La tentadora simplicidad del algoritmo junto con la novedad de las rotaciones dependientes de los datos ha convertido a RC5 en un atractivo objeto de estudio para los criptoanalistas.
RC5 de 12 rondas (con bloques de 64 bits) es susceptible de un ataque diferencial utilizando 2 44 textos planos elegidos. [41] Se sugieren 18-20 rondas como protección suficiente.
Rijndael / AES
El cifrado de Rijndael desarrollado por los criptógrafos belgas Joan Daemen y Vincent Rijmen fue uno de los diseños en competencia para reemplazar a DES. Ganó el concurso público de 5 años para convertirse en AES (Advanced Encryption Standard).
Adoptado por 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 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. AES opera en una matriz de bytes de orden principal de 4 × 4 columnas , denominada estado (las versiones de Rijndael con un tamaño de bloque más grande tienen columnas adicionales en el estado).
Pez globo
Blowfish es un cifrado en bloque, diseñado en 1993 por Bruce Schneier e incluido en una gran cantidad de conjuntos de cifrado y productos de cifrado. Blowfish tiene un tamaño de bloque de 64 bits y una longitud de clave variabledesde 1 bit hasta 448 bits. [42] Es un cifrado Feistel de 16 rondasy utiliza cajas S grandes dependientes de claves. Las características notables del diseño incluyen las cajas S dependientes de la llavey un programa de llaves muy complejo.
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 se lanzó Blowfish, muchos otros diseños eran propietarios, estaban gravados por patentes o eran secretos comerciales / gubernamentales. Schneier ha declarado que "Blowfish no está patentado y seguirá siéndolo en todos los países. Por la presente, el algoritmo se coloca 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 cifrados en bloque llamados cifrados en bloque "modificables". [43] Un cifrado de bloque modificable acepta una segunda entrada llamada tweak junto con su entrada de texto plano o cifrado habitual. El ajuste, junto con la clave, selecciona la permutación calculada por el cifrado. Si el cambio de ajustes es lo suficientemente ligero (en comparación con una operación de configuración de teclas generalmente bastante costosa), entonces son posibles algunos modos de operación nuevos e interesantes. El artículo sobre la teoría del cifrado de disco describe algunos de estos modos.
Cifrado que conserva 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 sea también 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 conserva el formato . De manera más general, el cifrado que conserva 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 sin formato puede cifrar en varios textos cifrados diferentes, incluso cuando se utiliza una clave fija.
Relación con otras primitivas criptográficas
Los cifrados en bloque se pueden usar para construir otras primitivas criptográficas, como las que se muestran a continuación. Para que estas otras primitivas sean criptográficamente seguras, se debe tener cuidado de construirlas de la manera correcta.
- Los cifrados de flujo se pueden construir utilizando cifrados de bloque. El modo OFB y el modo CTR son modos de bloque que convierten un cifrado de bloque en un cifrado de flujo.
- Las funciones de hash criptográficas se pueden construir utilizando cifrados en bloque. [44] [45] 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 de bloques que se suelen utilizar para el cifrado.
- Se pueden construir generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG) utilizando cifrados en bloque. [46] [47]
- Se pueden construir permutaciones pseudoaleatorias seguras de conjuntos finitos de tamaño arbitrario con cifrados en bloque; consulte Cifrado de conservación de formato .
- Una permutación impredecible conocida públicamente combinada con blanqueamiento de claves es suficiente para construir un cifrado de bloque, como el cifrado de una sola clave Even-Mansour , quizás el cifrado de bloque más simple posible y probadamente seguro. [48]
- 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 tales MAC.
- El cifrado autenticado también se construye a partir de cifrados en bloque. Significa cifrar y MAC al mismo tiempo. Eso es para proporcionar confidencialidad y autenticación . CCM , EAX , GCM y OCB son estos modos de cifrado autenticados.
Así como los cifrados en bloque se pueden usar para construir funciones hash, las funciones hash se pueden usar para construir cifrados en bloque. Ejemplos de estos cifrados en bloque son SHACAL , BEAR y LION .
Ver también
- Resumen de seguridad de cifrado
- Temas de criptografía
Referencias
- ^ Cusick, Thomas W .; Stanica, Pantelimon (2009). Funciones y aplicaciones criptográficas booleanas . Prensa académica. págs. 158-159. ISBN 9780123748904.
- ^ Menezes, Alfred J .; van Oorschot, Paul C .; Vanstone, Scott A. (1996). "Capítulo 7: Block Ciphers". Manual de criptografía aplicada . Prensa CRC. ISBN 0-8493-8523-7.
- ^ Bellare, Mihir; Rogaway, Phillip (11 de mayo de 2005), Introducción a la criptografía moderna (notas de la conferencia), Capítulo 3.
- ^ Chakraborty, D .; Rodríguez-Henríquez, F. (2008). "Bloquear modos de operación de cifrado desde una perspectiva de implementación de hardware" . En Koç, Çetin K. (ed.). Ingeniería criptográfica . Saltador. pag. 321. ISBN 9780387718163.
- ^ Menezes, van Oorschot & Vanstone 1996 , sección 7.2.
- ^ Shannon, Claude (1949). "Teoría de la comunicación de los sistemas secretos" (PDF) . Revista técnica de Bell System . 28 (4): 656–715. doi : 10.1002 / j.1538-7305.1949.tb00928.x . Archivado desde el original (PDF) el 2007-06-05 . Consultado 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., pag. 455.
- ^ van Tilborg y Jajodia 2011 , p. 1268.
- ^ Rupp, Martin (16 de agosto de 2019). "Los beneficios del bloque de llaves Atalla" . Utimaco . Archivado desde el original el 17 de octubre de 2020 . Consultado el 10 de septiembre de 2019 .
- ^ Hamscher, Walter; MacWillson, Alastair; Turner, Paul (1998). "Comercio electrónico sin miedo: la arquitectura de seguridad Tristrata". Price Waterhouse . S2CID 18375242 . Cite journal requiere
|journal=
( ayuda ) - ^ Stiennon, Richard (17 de junio de 2014). "Gestión de claves un espacio de 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 flujos . IOS Press. pag. 2. ISBN 9781607508441.
- ^ 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: 6º taller internacional anual, SAC'99, Kingston, Ontario, Canadá, 9 al 10 de agosto de 1999: actas . Saltador. pag. 79 . ISBN 9783540671855.
- ^ Baigneres, Thomas; Finiasz, Matthieu (2007). "Marque 'C' para Cipher" . En Biham, Eli; Yousseff, Amr (eds.). Áreas seleccionadas en criptografía: 13º taller internacional, SAC 2006, Montreal, Canadá, 17-18 de agosto de 2006: artículos seleccionados revisados . Saltador. pag. 77. ISBN 9783540744610.
- ^ Cusick, Thomas W .; Stanica, Pantelimon (2009). Funciones y aplicaciones criptográficas booleanas . Prensa académica. pag. 164. ISBN 9780123748904.
- ^ Katz, Jonathan; Lindell, Yehuda (2008). Introducción a la criptografía moderna . Prensa CRC. pag. 166 . ISBN 9781584885511., páginas 166–167.
- ^ Subhabrata Samajder (2017). Criptoanálisis de cifrado de bloques: descripción general . Kolkata: Instituto de Estadística de la India. págs. 5/52.
- ↑ a b Katz y Lindell , 2008 , págs. 170-172.
- ^ Katz y Lindell 2008 , p. 171.
- ^ Aumasson, Jean-Philippe; Bernstein, Daniel J. (18 de septiembre de 2012). "SipHash: un PRF rápido de entrada corta" (PDF) : 5. Cite journal requiere
|journal=
( ayuda ) - ^ Menezes, Oorschot y Vanstone 1996 , págs. 228-230, Capítulo 7.
- ^ "Bloquear modos de cifrado" . Centro de recursos de seguridad informática del NIST .
- ^ Menezes, van Oorschot y Vanstone 1996 , págs. 228-233.
- ^ a b Morris Dworkin (diciembre de 2001), "Recomendación para los modos de operación de cifrado en bloque - Métodos y técnicas" (PDF) , Publicación especial 800-38A , Instituto Nacional de Estándares y Tecnología (NIST)
- ^ "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 bloque de n bits
- ^ Bellare y Rogaway , 2005 , p. 101, sección 5.3.
- ^ Bellare y Rogaway 2005 , sección 5.6.
- ^ a b Serge Vaudenay (2002). "Fallos de seguridad inducidos por aplicaciones de relleno CBC a SSL, IPSEC, WTLS ...". Avances en criptología - EUROCRYPT 2002, Proc. Congreso Internacional de Teoría y Aplicaciones de Técnicas Criptográficas . Springer Verlag (2332): 534–545.
- ^ a b 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 - SCN 2008, Lecture Notes in Computer Science . Springer Verlag (5229): 340–357.
- ^ 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 bloque , ISO / IEC, 2011
- ^ Martin, Keith M. (2012). Criptografía cotidiana: principios y aplicaciones fundamentales . Prensa de la Universidad de Oxford. pag. 114. ISBN 9780199695591.
- ^ Paar, Christof; et al. (2010). Comprensión de la criptografía: un libro de texto para estudiantes y profesionales . Saltador. pag. 30. ISBN 9783642041006.
- ^ Matsui, Mitsuru. "Criptoanálisis lineal de cifrado DES" . Mitsubishi Electric Corporation . 1 (3): 43 - a través del Laboratorio de Sistemas de Información y Computación.
- ^ Matsui, M. & Yamagishi, A. "Un nuevo método para el ataque de texto plano conocido del cifrado FEAL". Avances en criptología - EUROCRYPT 1992 .
- ^ Menezes, van Oorschot y Vanstone 1996 , p. 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)
- ^ Ataques que muestran que el cifrado no funciona como se anuncia (es decir, el nivel de dificultad involucrado en descifrarlo es más bajo de lo que se afirma), que sin embargo son de una complejidad lo suficientemente alta como para que no sean prácticamente alcanzables.
- ^ Estándar de cifrado de datos FIPS PUB 46-3 (DES) (esta es la tercera edición, 1999, pero incluye información histórica en la sección preliminar 12.)
- ^ Recomendación de la publicación especial 800-57 del NIST para la gestión de claves - Parte 1: General (revisada) , marzo de 2007 Archivado el 6 de junio de 2014 en Wayback Machine
- ^ Biryukov A. y Kushilevitz E. (1998). Criptoanálisis mejorado de RC5. EUROCRYPT 1998.
- ^ Bruce Schneier (1993). "Descripción de una nueva clave de longitud variable, cifrado de bloque de 64 bits (Blowfish)" . Cite journal requiere
|journal=
( ayuda ) - ^ Liskov, M .; Rivest, R .; Wagner, D. "Cifrados de bloque modificables" (PDF) . Cripto 2002 .
- ^ ISO / IEC 10118-2: 2010 Tecnología de la información - Técnicas de seguridad - Funciones hash - Parte 2: Funciones hash utilizando un cifrado de bloque de n bits
- ^ Menezes, van Oorschot & Vanstone 1996 , Capítulo 9: Funciones hash e integridad de los datos.
- ^ Recomendación de la publicación especial 800-90A del NIST para la generación de números aleatorios utilizando generadores de bits aleatorios deterministas
- ^ Menezes, van Oorschot & Vanstone 1996 , Capítulo 5: Secuencias y bits pseudoaleatorios.
- ^ Orr Dunkelman, Nathan Keller y Adi Shamir . "Minimalismo en criptografía: el esquema de Even-Mansour revisitado" .
Otras lecturas
- Knudsen, Lars R .; Robshaw, Matthew (2011). El compañero de cifrado de bloques . Saltador. ISBN 9783642173417.
enlaces externos
- Una lista de muchos algoritmos simétricos, la mayoría de los cuales son cifrados en bloque.
- El salón de cifrado de bloques
- ¿Qué es un cifrado en bloque? de RSA FAQ
- Cifrado en bloque basado en secuencias de oro y sistema de carpa logística caótica