Algoritmos y protocolos de cifrado: SAFER, Blowfish, RSA, ECC, Diffie–Hellman y cifrado extremo a extremo


Algoritmos y protocolos de cifrado

SAFER (Secure And Fast Encryption Routine)

Secure And Fast Encryption Routine (SAFER): es un algoritmo de cifrado por bloques no propietario. Está orientado a bytes y emplea un tamaño de bloque de 64 bits y claves de 64 bits (SAFER K-64) o 128 bits (SAFER K-128). Tiene un número variable de rondas, pero es recomendable emplear como mínimo 6. El algoritmo original fue considerado inmune al criptoanálisis lineal y diferencial, pero Knudsen descubrió una debilidad en el generador de claves y el algoritmo fue modificado (SAFER SK-64 y SAFER SK-128).

Características: SAFER utiliza ocho rondas. El primer paso para una ronda es aplicar la primera subclave de la ronda a los ocho bytes del bloque. La operación mediante la cual cada byte de la subclave se aplica a cada byte del bloque depende de qué byte se utiliza: la secuencia es XOR, add, add, XOR, XOR, add, add, XOR.

Aplicaciones

  • Tarjeta electrónica: SAFER fue implementado en tarjetas electrónicas; el prototipo era 2.5 veces más rápido y optimizado que las tarjetas implementadas con el algoritmo Data Encryption Standard (DES).
  • Bluetooth: Una variación del algoritmo SAFER fue usada en el cifrado por bloques de Bluetooth.
  • Investigación: El algoritmo SAFER y sus variaciones aún se siguen usando en algunos proyectos de investigación, aunque su rendimiento es inferior al de algoritmos modernos.

Debilidades

El criptoanálisis temprano de SAFER K-64 mostró que SAFER K-64 podría considerarse inmune al criptoanálisis diferencial y lineal cuando el número de rondas es mayor que seis. Sin embargo, Knudsen descubrió una debilidad en el programa de clave de SAFER K-64 y pronto se introdujo un nuevo programa de claves para la familia de cifrados de SAFER.

Desencriptación

A diferencia de la mayoría de los otros algoritmos de bloque, SAFER se invierte haciendo el reverso de cada paso, en orden inverso, sin la posibilidad de lograr el mismo resultado simplemente por alguna alteración de las subclaves utilizadas. El reverso del método de mezclar pares de bytes es el siguiente: para obtener el primer byte anterior, reste el segundo byte nuevo del primer byte nuevo. El segundo byte antiguo es el segundo byte nuevo menos el primer byte anterior, que equivale al doble del segundo byte nuevo menos el primer byte nuevo.

Blowfish

Blowfish: es un algoritmo de cifrado por bloques simétrico. Este algoritmo está compuesto por 18 semiclaves (P) y 4 cajas de sustitución (substitution boxes, S). Es un proceso relativamente simple y altamente seguro, ya que a la fecha no se conoce ningún tipo de criptoanálisis efectivo contra este algoritmo de cifrado.

Función F

La función F se encarga de sustituir los valores resultantes de las operaciones XOR utilizando las cajas de sustitución (substitution boxes). La función F divide el grupo de 32 bits en 4 grupos de 8 bits. El bloque A y el bloque B se buscan en las cajas de sustitución (representadas con la letra «S» en el diagrama). El valor representado por el primer octeto de la primera caja se suma al valor representado por el segundo octeto de la segunda caja y al resultado se le aplica el módulo de 2³²; posteriormente a este resultado se aplica una operación XOR con el valor representado por el tercer bloque en la tercera caja y al resultado de esto se le suma el valor representado por el cuarto octeto en la cuarta caja y, al final, se vuelve a aplicar el módulo 2³².

Planificación de claves

Es la inicialización del arreglo de las subclaves haciéndolas dependientes de la clave de usuario. Estos valores serán las subclaves para el proceso de encriptación y desencriptación con Blowfish; por lo tanto, deben calcularse antes de comenzar a cifrar o descifrar mensajes propios.

Aplicaciones

  • Encriptación de datos de usuarios en la nube
  • Encriptación masiva
  • Generación aleatoria de bits
  • Cifrado de paquetes
  • Hashing

Debilidades

  • La clave no debe cambiar constantemente.
  • Si es para comunicaciones de N personas, se necesitan claves para cada pareja.

Desencriptación

Se hace de la misma manera que la encriptación, solo que P1,…,P18 son usados en orden inverso.

Algoritmos asimétricos

1. RSA

RSA: El problema matemático en que se basa RSA es la factorización de números primos. El sistema criptográfico con clave pública RSA es un algoritmo asimétrico cifrador de bloques. Cuando se envía un mensaje, el emisor busca la clave pública de cifrado del receptor y, una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta. Los mensajes enviados usando el algoritmo RSA se representan mediante números y el funcionamiento se basa en el producto de dos números primos grandes (mayores que 10^100) elegidos al azar para conformar la clave de descifrado. Emplea expresiones exponenciales en aritmética modular. La seguridad de este algoritmo radica en que no hay maneras rápidas conocidas de factorizar un número grande en sus factores primos utilizando computadoras tradicionales.

Cifrado (ejemplo)

Claves públicas n = 33 y k = 7. Mensaje original = 14 = P. E = Mensaje privado. Proceso: utilizamos la ecuación P^k = E (mod n). 14^7 = E (mod 33) = 105413504. 105413504 / 33 = 3194348.606…, 105413504 – (3194348.606 * 33) = 20. Se recomienda utilizar números de por lo menos 1024 bits, es decir, dígitos decimales suficientes para el cálculo de las claves, que además han de ser primos.

Aplicaciones

  • Autenticación de mensajes. Por ejemplo, si A desea enviar un SMS autenticado a Bob, A puede calcular el valor hash del SMS, elevarlo a la potencia d ≡ (mod n) (como hace cuando descifra mensajes) y adjuntarlo al mensaje como una «firma». Cuando Bob recibe el mensaje autenticado, utiliza el mismo algoritmo hash en conjunción con la clave pública de Alice.
  • Para firmar un documento se pueden aplicar algoritmos HASH como MD5 o SHA-1 como función de resumen y luego RSA como algoritmo asimétrico para cifrar.
  • Certificados digitales.

Debilidades

  • Computación cuántica: la aparición de computadoras cuánticas podría poner en riesgo la factorización segura si se desarrollan algoritmos eficaces para ello.
  • Hardware: ataques por canales laterales, por ejemplo, variación de voltaje en la alimentación del dispositivo que almacena la clave privada.

2. Diffie–Hellman

Diffie–Hellman: permite acordar una clave secreta entre dos máquinas a través de un canal inseguro enviando únicamente dos mensajes; esta clave será empleada para el cifrado de una sesión.

Funcionalidad

  1. Se establecen un primo p y un generador g ∈ Z_p^*. Estos dos valores (g y p) son públicos. Z_p^* es el conjunto de los enteros menores que p que son primos relativos de éste y además es un grupo bajo la multiplicación módulo p.
  2. A escoge x ∈ Z_{p-1} al azar, calcula X = g^x (mod p), y envía X a B.
  3. B escoge y ∈ Z_{p-1} al azar, calcula Y = g^y (mod p), y envía Y a A.
  4. A calcula K = Y^x (mod p).
  5. B calcula K = X^y (mod p).
  6. La clave compartida es K.

Ataques y mitigaciones

Si p no es un número primo grande (por ejemplo, si tiene menos de 200 dígitos), se pueden presentar ataques activos, incluidos man-in-the-middle. Para mejorar la seguridad se recomienda:

  • Control de tiempos.
  • Autenticación previa de ambas partes.
  • Autenticación del contenido.
  • Usar un tercero de confianza cuando corresponda.

3. Curvas elípticas (ECC)

Ecuación de Weierstrass: y^2 = x^3 + A x + B. El problema del logaritmo discreto en curvas elípticas es análogo al problema del logaritmo discreto en otros grupos. El logaritmo discreto de g en base b es la operación inversa a la potenciación: si g = b^k, entonces k = log_b g.

En grupos pequeños es sencillo calcular esos exponentes, pero cuando el grupo es muy grande (por ejemplo, cuando el número n es grande), el problema se vuelve intratable en la práctica, por lo que ECC se aprovecha de esta dificultad para construir sistemas criptográficos.

Aplicaciones

ECC ha sido aplicada en diversos contextos. El hecho de que requiere claves más pequeñas que otros sistemas de clave pública la hace adecuada para aplicaciones con requisitos estrictos de memoria, como sistemas de identificación mediante tarjetas.

Debilidades

La ECC es en general más compleja que RSA, tiene más incertidumbres teóricas y puede presentar sorpresas en la práctica. Además, puede ser más lenta en implementaciones iniciales.

4. Cifrado de extremo a extremo (End-to-End Encryption)

Cifrado de extremo a extremo: es un sistema de comunicación donde solo los usuarios que se comunican pueden leer los mensajes. En principio, evita que espías potenciales, incluidos los proveedores de telecomunicaciones, proveedores de Internet e incluso el proveedor del servicio de comunicación, puedan acceder a las claves criptográficas necesarias para descifrar la conversación.

Aplicaciones

  • TextSecure / Signal: se usan para asegurar la transmisión de mensajes instantáneos, mensajes grupales, archivos adjuntos y mensajes a otros usuarios.
  • Telegram, Silence, WhatsApp: implementan variantes de cifrado de extremo a extremo.

El cifrado end-to-end utiliza una combinación de algoritmos (llaves) para identificar a un usuario y otros algoritmos que identifican a una conversación para cifrar mensajes. Quien quiera acceder al mensaje tendrá que tener la llave de la conversación y su propia llave para poder descifrarla. WhatsApp crea una llave de identificación permanente para el usuario que certificará a otras: una prefirmada y muchas de un solo uso. Al iniciar una conversación, la aplicación identifica al usuario y utiliza una llave prefirmada y una de un solo uso para crear una sesión cifrada.

Debilidades

  • Ataque man-in-the-middle (MITM): un intruso puede hacerse pasar por el destinatario del mensaje durante el intercambio de claves o sustituyendo su clave pública por la del destinatario.
  • Autenticación: la mayoría de los protocolos de encriptación de extremo a extremo incluyen algún tipo de autenticación de punto final para evitar ataques MITM. Una técnica alternativa es generar hashes criptográficos (huellas digitales) basados en las claves públicas o claves secretas compartidas de los usuarios que se comunican.
  • Seguridad de punto final: la protección de los dispositivos finales es crítica; por ejemplo, aislar la generación de claves, el almacenamiento y las operaciones criptográficas en un módulo seguro o tarjeta inteligente (ej.: Project Vault de Google).

5. Merkle–Hellman

Merkle–Hellman: es un criptosistema asimétrico. A diferencia de RSA, sirve sólo para cifrado. Esto quiere decir que la llave pública es usada sólo para cifrar (no para verificar firmas) y la llave privada es usada sólo para descifrar (no para firmar). Por ese motivo, no se puede usar para tareas de autenticación por firmas electrónicas.

Generación de claves

Las claves están compuestas por secuencias. La clave pública es una secuencia «difícil», o una secuencia de valores supercrecientes.

Cifrado

El mensaje debe ser una secuencia de bits de la misma longitud de la secuencia difícil. Se eligen los elementos de la secuencia difícil que correspondan a bits en 1 del mensaje (mientras que los elementos correspondientes a bits en 0 son descartados). Luego se suman los elementos así elegidos, y el resultado de eso es el texto cifrado.

Descifrado

El multiplicador y el módulo usados para transformar la llave privada (fácil) en la llave pública (difícil) también pueden ser usados para transformar el texto cifrado en la suma de los elementos que conforman la subsecuencia supercreciente. Así, el problema de la mochila puede ser resuelto en O(n) operaciones.

Ejemplo

La clave privada de Bob es [3, 4, 9, 19, 38, 77] con p = 27 y m = 155. Clave pública:

  • 3 * 27 (mod 155) = 81
  • 4 * 27 (mod 155) = 108
  • 9 * 27 (mod 155) = 88
  • 19 * 27 (mod 155) = 48
  • 38 * 27 (mod 155) = 96
  • 77 * 27 (mod 155) = 64

La clave pública de Bob es [81, 108, 88, 48, 96, 64].

Aplicación

La aplicación más obvia de este sistema de cifrado de clave pública es para el cifrado de la comunicación con el propósito de proporcionar confidencialidad: un mensaje que el remitente encripta con la clave pública del destinatario sólo puede ser descifrado mediante la clave privada emparejada del destinatario.

Debilidades

  • No se necesitó un millón de máquinas para romper el criptosistema en ataques históricos.
  • Se recuperó primero un bit de texto claro en algunos ataques.
  • Shamir descubrió que puede ser roto bajo ciertas circunstancias.
  • Shamir y Zippel encontraron defectos en la transformación que permiten reconstruir la mochila superincremental a partir de la mochila normal.

Desencriptación

El receptor tendría que resolver una instancia del problema de la mochila, el cual se sabe que es NP-hard.

6. Goldwasser–Micali–Rivest (GMR)

Goldwasser–Micali–Rivest (GMR): esquema de firma robusto contra el ataque de mensaje elegido adaptativo llamado GMR. Ningún adversario que recibe firmas por primera vez a los mensajes de su elección puede crear una firma de un solo mensaje adicional.

Firma digital

Claramente este tipo de cifrado es asimétrico ya que requiere dos claves: una privada y otra pública. Es el resultado del valor hash de un mensaje con la clave privada del usuario.

Procedimientos y observaciones

El esquema GMR original sufre de dos inconvenientes estéticos: 1) El esquema de firma no es completamente sin estado; esto quiere decir que la firma generada por el firmante depende ligeramente de los mensajes firmados anteriormente. 2) El proceso de firma en la implementación basada en la factorización sugerida es demasiado lento.

Descripción del esquema

El esquema GMR es básicamente un proceso de autenticación de dos etapas. Primero, el firmante inserta en el archivo público elementos que se utilizan para autenticar un punto de referencia aleatorio (en adelante llamado REF). A continuación, este REF se utiliza para autenticar el mensaje bit a bit. El mismo REF nunca se usa para autenticar dos mensajes diferentes.

Recordando los puntos más importantes del esquema:

  • Permutación de pares sin garras.
  • Mapeo sin prefijo.
  • Árbol de autenticación.

Nota: El documento resume características, aplicaciones y debilidades de varios algoritmos y protocolos criptográficos. Se han corregido errores ortográficos y de estilo, ajustado el uso de mayúsculas y minúsculas, y estructurado el contenido en secciones con títulos y listas para mejorar la legibilidad y SEO, sin eliminar contenido original.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *