La criptografía es la ciencia del uso de códigos y cifrados para proteger los mensajes. Y el cifrado implica codificar los mensajes para que solo el destinatario previsto pueda comprender el significado del mensaje. A menudo se usa para proteger los datos en tránsito.
El cifrado es una función bidireccional, es decir, debe poder deshacer cualquier codificación que haya hecho al mensaje.
Hoy en día, existen dos tipos básicos de algoritmos: simétricos y asimétricos.
Los algoritmos simétricos también se conocen como algoritmos de ‘clave secreta’ y los algoritmos asimétricos se conocen como algoritmos de ‘clave pública’.
La diferencia clave entre los dos es que los algoritmos simétricos utilizan la misma clave para el cifrado y el descifrado, mientras que los algoritmos asimétricos utilizan claves diferentes para el cifrado y el descifrado.
El cifrado de bloques es un método de cifrado y descifrado que opera en los bloques de texto sin formato, en lugar de operar en cada bit de texto sin formato por separado. Cada bloque es de igual tamaño y tiene un número fijo de bits.
En este artículo discutiremos la definición de cifrado en bloque. También consideraremos el principio de diseño de un cifrado en bloque y los modos de operación del cifrado en bloque.
Indice
¿Qué es el cifrado de bloques (Block Cipher)?
El cifrado de bloques es un método de cifrado que divide el texto sin formato en bloques de tamaño fijo. Cada bloque tiene el mismo número de bits. A la vez, el cifrado de bloques opera solo en un bloque de texto sin formato y aplica la clave para producir el bloque correspondiente de texto cifrado.
Mientras que el descifrado también solo se opera un bloque de texto cifrado para producir su correspondiente texto sin formato. El estándar de cifrado de datos (DES) es el mejor ejemplo de ello.
DES divide el texto sin formato en el número de bloques, cada uno de 64 bits. DES opera en un bloque de texto sin formato a la vez. Se aplica una clave de 56 bits a cada bloque de texto sin formato para producir su correspondiente texto cifrado de 64 bits.
Durante el descifrado solo se opera un bloque de texto cifrado a la vez para producir su correspondiente bloque de texto sin formato. En DES, el algoritmo de descifrado es el mismo que el de cifrado.
En general, el cifrado de bloques opera en un bloque de bits a la vez en lugar de un bit a la vez. Operar bit a bit es un proceso que requiere mucho tiempo y como el cifrado de bloques es un algoritmo criptográfico basado en computadora, debe ser rápido. Es por eso que operar un bloque de bits a la vez lo hace más rápido en comparación con un cifrado de flujo.
Pero hay una limitación en el cifrado de bloque, ya que generaría el mismo texto cifrado para el patrón de texto repetido en texto sin formato. Sin embargo, esta limitación se resolvió implementando el encadenamiento en el cifrado de bloques.
Principios
Un cifrado de bloque se diseña considerando sus tres aspectos críticos que se enumeran a continuación:
Número de rondas
El número de rondas juzga la fuerza del algoritmo de cifrado de bloques. Se considera que cuanto mayor es el número de rondas, más difícil es que el criptoanálisis rompa el algoritmo.
Se considera que incluso si la función F es relativamente débil, el número de rondas haría que el algoritmo fuera difícil de romper.
Diseño de la función F
La función F del cifrado en bloque debe diseñarse de manera que sea imposible para cualquier criptoanálisis descifrar la sustitución. El criterio que fortalece la función F es su no linealidad.
Cuanto más no lineal sea la función F, más difícil será descifrarla. Al diseñar la función F, debe confirmarse que tiene una buena propiedad de avalancha que establece que un cambio en un bit de entrada debe reflejar el cambio en muchos bits de salida.
La Función F debe diseñarse de manera que posea un criterio de independencia de bits que establezca que los bits de salida deben cambiar independientemente si hay algún cambio en el bit de entrada.
Algoritmo de programación clave
Se sugiere que el programa de claves debe confirmar el efecto estricto de avalancha y el criterio de independencia de bits.
Por ejemplo, el algoritmo de programación de claves en el esquema DES divide la clave de 56 bits en dos mitades de 28 bits cada una. De manera similar, el algoritmo Serpent usa la clave de 256 bits para generar 132 palabras con una longitud de 32 bits.
¿Cómo funciona?
Como se indicó anteriormente, un cifrado de bloques es una forma de cifrado en el que el texto sin formato se divide primero en varios bloques, cada uno con un tamaño fijo. Esencialmente, cada bloque tiene el mismo número de bits de datos. En cualquier momento, el proceso de cifrado opera en un solo bloque de texto sin formato y aplica la clave de cifrado para convertirlo en un bloque de texto cifrado.
Cada bloque tiene el mismo tamaño (por ejemplo, 64 bits). Por ejemplo, un texto sin formato de 160 bits se cifra en 2 bloques de 64 bits cada uno, mientras que el tercer bloque tendrá el saldo restante de 32 bits. Se rellenará con 32 bits adicionales para mantener el mismo tamaño que otros bloques.
De manera similar, el proceso de descifrado opera en un solo bloque de texto cifrado para convertirlo nuevamente en texto sin formato. Entre los ejemplos de cifrado de bloques más eficaces, el Estándar de cifrado de datos (o DES) publicado por el Instituto Nacional de Estándares y Tecnología es un cifrado de bloques con claves simétricas.
¿Cómo es beneficioso el proceso de cifrado / descifrado de cifrado en bloque en comparación con otros métodos?
- En lugar de trabajar en un solo bit de datos, el proceso de cifrado de bloques opera en todo el bloque a la vez, por lo que es mucho más rápido que otras formas de cifrado.
- Como el tamaño de cada bloque es el mismo, este proceso no afecta la solidez general del cifrado. Sigue siendo el mismo para todos los bloques.
- No hay posibilidad de tener un tamaño de bloque más pequeño (que es más fácil de descifrar para los piratas informáticos que usan ataques de diccionario) o tamaños de bloque más grandes (que conducen a una operación ineficiente).
Modos de operación
Hay cinco modos de operación de cifrado de bloques importantes definidos por NIST. Estos cinco modos de funcionamiento mejoran el algoritmo para que pueda ser adaptado por una amplia gama de aplicaciones que utilizan cifrado de bloques para el cifrado.
Modo de retroalimentación electrónica
Se considera que este es el modo de operación de cifrado de bloques más sencillo. En el modo de libro de códigos electrónico (ECB), el texto sin formato se divide en bloques, cada uno de 64 bits. Cada bloque se cifra uno a la vez para producir el bloque de cifrado. Se utiliza la misma clave para cifrar cada bloque.
Cuando el receptor recibe el mensaje, es decir, el texto cifrado, este texto cifrado se vuelve a dividir en bloques, cada uno de 64 bits y cada bloque se descifra independientemente uno a la vez para obtener el bloque de texto sin formato correspondiente. Aquí también se utiliza la misma clave para descifrar cada bloque que se utilizó para cifrar cada bloque.
Como se usa la misma clave para cifrar cada bloque de texto sin formato, surge el problema de que, para un bloque de texto sin formato repetido, generaría el mismo cifrado y facilitará que el criptoanálisis descifre el algoritmo. Por lo tanto, ECB se considera para cifrar los mensajes pequeños que tienen una rara posibilidad de repetición de texto.
Modo de encadenamiento de bloques de cifrado
Para superar la limitación de ECB, es decir, el bloque repetido en texto sin formato produce el mismo texto cifrado, se requirió una nueva técnica que es el modo Cipher Block Chaining (CBC). CBC confirma que incluso si el texto sin formato tiene bloques repetidos, su cifrado no producirá el mismo bloque de cifrado.
Para lograr bloques de cifrado totalmente diferentes para dos mismos bloques de texto sin formato, se ha agregado el encadenamiento al cifrado de bloques. Para ello, el resultado obtenido del cifrado del primer bloque de texto plano se alimenta al cifrado del siguiente cuadro de texto plano.
De esta manera, cada bloque de texto cifrado obtenido depende de su correspondiente entrada de bloque de texto sin formato actual y de todos los bloques de texto sin formato anteriores. Pero durante el cifrado del primer bloque de texto sin formato, no hay ningún bloque de texto sin formato anterior disponible, por lo que se genera un bloque de texto aleatorio llamado vector de inicialización.
Ahora analicemos los pasos de cifrado de CBC:
- El vector de inicialización y el primer bloque de texto sin formato se someten a XOR y el resultado de XOR se encripta usando la clave para obtener el primer bloque de texto cifrado.
- El primer bloque de texto cifrado se alimenta al cifrado del segundo bloque de texto sin formato. Para el cifrado del segundo bloque de texto sin formato, el primer bloque de texto cifrado y el segundo bloque de texto sin formato se someten a XOR y el resultado de XOR se cifra utilizando la misma clave en el paso 1 para obtener el segundo bloque de texto cifrado.
De manera similar, el resultado del cifrado del segundo bloque de texto sin formato, es decir, el segundo bloque de texto cifrado se alimenta al cifrado del tercer bloque de texto sin formato para obtener el tercer bloque de texto cifrado. Y el proceso continúa para obtener todos los bloques de texto cifrado.
Pasos de descifrado de CBC:
- El primer bloque de texto cifrado se descifra utilizando la misma clave que se utilizó para cifrar todos los bloques de texto sin formato. El resultado del descifrado se aplica XOR con el vector de inicialización (IV) para obtener el primer bloque de texto sin formato.
- El segundo bloque de texto cifrado se descifra y el resultado del descifrado se somete a XOR con el primer bloque de texto cifrado para obtener el segundo bloque de texto sin formato. Y el proceso continúa hasta que se recuperan todos los bloques de texto sin formato.
Modo de retroalimentación de cifrado
Es posible que no todas las aplicaciones estén diseñadas para operar en bloques de datos, algunas pueden estar orientadas a caracteres o bits. El modo de retroalimentación de cifrado se utiliza para operar en unidades más pequeñas que los bloques.
Analicemos los pasos de cifrado en el modo de retroalimentación de cifrado:
- Aquí también utilizamos el vector de inicialización, IV se mantiene en el registro de desplazamiento y se cifra con la clave.
- Los bits más a la izquierda del IV cifrado se someten a XOR con el primer fragmento del texto sin formato de s bits. Produce el primer texto cifrado C1 de s bits.
- Ahora el registro de desplazamiento que contiene el vector de inicialización realiza un desplazamiento a la izquierda en bits s y los bits C1 reemplazan los bits de la derecha del vector de inicialización.
Por otra parte, el cifrado se realiza en IV y el bit de IV cifrado más a la izquierda se XOR con el segundo fragmento de texto plano para obtener el bit de texto cifrado C2.
El proceso continúa para obtener todos los fragmentos de texto cifrado.
Pasos de descifrado:
- El vector de inicialización se coloca en el registro de desplazamiento. Está cifrado con la misma clave. Mantener una nota que incluso en el proceso de descifrado el cifrado se implementa el algoritmo en lugar del algoritmo de descifrado. Luego, a partir del IV cifrado, los bits de s se someten a XOR con los s bits de texto cifrado C1 para recuperar s bits de texto sin formato P1.
- El IV en el registro de desplazamiento se desplaza a la izquierda en s bits y los s bits C1 reemplazan a los s bits más a la derecha de IV.
El proceso continúa hasta que se recuperan todos los fragmentos de texto sin formato.
Tiene la limitación de que si se produce un error de bit en cualquier texto cifrado C i, afectaría a todas las unidades de texto cifrado subsiguientes, ya que C i se alimenta al cifrado del siguiente P i + 1 para obtener C i + 1 . De esta forma, se propagaría el error de bit.
Modo de retroalimentación de salida
El modo de retroalimentación de salida (OFB) es casi similar al CFB. La diferencia entre CFB y OFB es que, a diferencia de CFB, en OFB el IV cifrado se alimenta al cifrado del siguiente bloque de texto sin formato. La otra diferencia es que CFB opera en un flujo de bits mientras que OFB opera en el bloque de bits.
Pasos para el cifrado:
- El vector de inicialización se cifra con la clave.
- Al IV cifrado se aplica XOR con el bloque de texto sin formato para obtener el bloque de texto cifrado.
Pasos para el descifrado:
- El vector de inicialización se cifra con la misma clave utilizada para cifrar todos los bloques de texto sin formato. En el proceso de descifrado también se implementa la función de cifrado.
- El IV cifrado luego se somete a XOR con el bloque de texto cifrado para recuperar el bloque de texto sin formato.
El IV cifrado también se alimenta al proceso de descifrado del siguiente bloque de texto cifrado.
El proceso continúa hasta que se recuperan todos los bloques de texto sin formato.
La ventaja de OFB es que protege la propagación del error de bit, lo que significa que si ocurre un error de bit en C1, solo afectará la recuperación de P1 y no afectará la recuperación de bloques de texto sin formato posteriores.
Modo contador
Es similar a OFB pero no hay mecanismo de retroalimentación en el modo contador. No se alimenta nada del paso anterior al siguiente paso, sino que utiliza una secuencia de números que se denomina contador que se ingresa en la función de cifrado junto con la clave. Después de cifrar un bloque de texto sin formato, el valor del contador se incrementa en 1.
Pasos del cifrado:
- El valor del contador se cifra mediante una clave.
- El valor del contador cifrado se somete a XOR con el bloque de texto sin formato para obtener un bloque de texto cifrado.
Para cifrar el siguiente bloque de texto sin formato, el valor del contador se incrementa en 1 y los pasos 1 y 2 se repiten para obtener el texto cifrado correspondiente.
El proceso continúa hasta que se cifra todo el bloque de texto sin formato.
Pasos para el descifrado:
- El valor del contador se cifra mediante una clave. La función de cifrado se utiliza en el proceso de descifrado. Para el descifrado se utilizan los mismos valores de contador que durante el cifrado.
- El valor del contador cifrado se somete a XOR con el bloque de texto cifrado para obtener un bloque de texto sin formato.
Para descifrar el siguiente bloque de texto cifrado, el valor del contador se incrementa en 1 y los pasos 1 y 2 se repiten para obtener el texto sin formato correspondiente.
El proceso continúa hasta que se descifra todo el bloque de texto cifrado.
Ejemplos
Muchos ejemplos de Block Cipher están operativos en el dominio del cifrado de datos. Éstos son algunos de los más populares:
Estándar de cifrado digital (DES)
Publicado inicialmente por IBM en 1975, DES cifra los datos en bloques de 64 bits cada uno. Esto significa que 64 bits de datos de texto sin formato se ingresan en DES que, a su vez, produce 64 bits de texto cifrado. Su tamaño de clave corto de 56 bits lo hace muy inseguro para aplicaciones modernas.
Triple DES
También conocido como 3DES o TDES, Triple DES es un cifrado de bloque de claves simétrico que aplica el algoritmo DES a cada bloque de datos tres veces. Cada tamaño de bloque es de 64 bits con tamaños de clave de 56, 112 o 168 bits. Publicado en 1995, Triple DES ahora está disponible en dos variantes, a saber, Triple-DES de 3 teclas (o 3TDES) y Triple-DES de 2 teclas (o 2TDES).
Estándar de cifrado avanzado (AES)
Originalmente llamado Rijndael, AES es principalmente una especificación publicada en 2001 por el Instituto Nacional de Estándares y Tecnología con sede en EE.UU. Con tamaños de bloque de 128 bits, AES tiene un rango de tamaños de clave que van desde 128, 192 y 256 bits. Entre los algoritmos de cifrado más populares, AES ha sido probado para ejecutarse al menos seis veces más rápido que Triple DES. Basado en la tecnología de red de sustitución-permutación, AES comprende una serie de operaciones vinculadas, que implican reemplazar entradas con salidas específicas (o sustitución) o mezclar bits (o permutaciones).
Algoritmo de cifrado de datos internacional (IDEA)
Propuesto inicialmente como reemplazo de DES, IDEA es otro cifrado de bloque de claves simétricas que se utiliza en el cifrado de datos. Con tamaños de bloque individuales de 64 bits, IDEA tiene un tamaño de clave de 128 bits. Aunque está restringido, el cifrado IDEA se utiliza en muchas aplicaciones, incluido el protocolo PGP. Como una adición posterior, IDEA simplificada se encuentra entre los ejemplos de cifrado de bloques ampliamente aceptados que operan en texto plano con una longitud fija de 16 bits y los cifra en 4 bloques iguales de 4 bits cada uno.
Twofish
Derivado del cifrado de bloques Blowfish anterior, Twofish tiene un tamaño de bloque de 128 bits con tamaños de clave de 128, 192 y 256 bits. Publicado inicialmente en 1998, Twofish fue uno de los cinco finalistas elegidos para el concurso AES. Adecuadamente rápido para CPU de 8 y 32 bits, Twofish se utiliza para cifrados en aplicaciones con claves que cambian con frecuencia.
Serpent
Clasificado en segundo lugar en el concurso AES, Serpent es otro cifrado de bloque con claves simétricas que tiene un tamaño de bloque de 128 bits y tamaños de clave que varían de 128, 192 a 256 bits. Al igual que AES, Serpent se basa en la tecnología de red de sustitución-permutación y opera en un bloque de cuatro palabras con 32 bits cada una.
¿Cómo intentan los atacantes romper los cifrados?
Hay una serie de técnicas que utilizan los atacantes, pero en general se incluyen en las siguientes categorías de ataque, según la información necesaria para llevarlo a cabo.
Esta no es una lista exhaustiva (hay otros ataques como los de canal lateral), pero muchos de los más comunes se incluyen en una de estas categorías.
Ataque de texto cifrado conocido
Un atacante tiene algún texto cifrado, pero no sabe qué texto sin formato se utilizó para generar este texto cifrado. El atacante no puede elegir qué texto cifrado tiene y no puede obtener / producir más.
Este es el tipo de ataque más fácil de probar, ya que es más fácil escuchar a escondidas una conversación cifrada (ya que presumiblemente las personas que tienen la conversación están usando un cifrado fuerte y no están tan preocupados por los espías). Pero es lo más difícil de tener éxito, siempre que las personas que envían mensajes utilicen un cifrado sólido y adecuado.
Ataque de texto plano conocido
Un atacante tiene algunos pares de texto sin formato y de texto cifrado que no eligió (por lo que el atacante no eligió el mensaje que estaba cifrado, pero pudo robar con éxito un mensaje de texto sin formato y su texto cifrado asociado). El atacante no puede obtener / producir más pares.
Por ejemplo: David encuentra el escondite de un espía enemigo y lo interrumpe mientras envía un mensaje encriptado. El espía es lo suficientemente tonto como para haber huido, dejando tanto el mensaje de texto plano como el texto cifrado asociado por escrito.
Ataque de texto plano elegido
Un atacante puede elegir cualquier texto sin formato y obtener el texto cifrado a cambio (pero no puede ver la clave en sí).
Esto se desglosa aún más en texto sin formato elegido por lotes (donde el atacante puede enviar un conjunto de textos sin formato y recibir el texto cifrado, pero no puede volver a hacerlo) y texto sin formato elegido adaptativo (donde el atacante puede enviar texto sin formato, recibir el texto cifrado y enviar texto sin formato adicional basado en el texto cifrado anterior.)
Por ejemplo: un estado-nación está escuchando a escondidas las comunicaciones cifradas de otro y sabe que usa la misma clave para todo su cifrado. Envían una comunicación diplomática sensible a la otra nación-estado, sabiendo que será transmitida a través del canal encriptado, dándoles así un par de texto plano – texto cifrado elegido.
Ataque de texto cifrado elegido
Esto es lo opuesto al último ataque, donde el atacante puede elegir cualquier texto cifrado y obtener el texto sin formato a cambio (pero no puede ver la clave en sí).
Por ejemplo: David sabe que un espía enemigo enviará un mensaje cifrado mañana, por lo que reemplaza el texto con el texto cifrado que él mismo eligió, luego espía al destinatario y escucha mientras lee el texto sin formato del mensaje.