Criptografía Asimétrica

Claves (a)simétricas, Números primos, HASH, RSA, Diffie-Hellman

@joanh (2025) CC BY 4.0

Recordatorio: ¿asimétrica vs simétrica?

  • Criptografía simétrica
    • Una sola clave: la misma para cifrar y descifrar
    • Muy rápida
    • Problema: ¿cómo compartimos la clave de forma segura?
  • Criptografía asimétrica
    • Dos claves relacionadas matemáticamente:
      • Clave pública: se puede publicar
      • Clave privada: se mantiene secreta
    • Más lenta, pero resuelve el problema de compartir secretos

Esquema básico de clave pública

Criptografía Asimétrica

¿Cómo funciona?

  • Cada usuario genera dos claves:
    • Clave pública (K_pub): se puede compartir libremente.
    • Clave privada (K_priv): debe mantenerse secreta.
  • La clave pública se distribuye libremente.
  • Propiedades principales:
    • Cifrado:
      Si Ana quiere enviar un mensaje secreto a David, cifra el mensaje usando la clave pública de David (K_pub de David).
      Solo David podrá descifrarlo con su clave privada (K_priv de David).
    • Firma digital:
      Si David quiere firmar un mensaje, utiliza su clave privada (K_priv de David) para generar la firma.
      Cualquiera puede verificar la autenticidad usando la clave pública de David (K_pub de David).
  • El diagrama muestra cómo Ana cifra un mensaje para David usando la clave pública de David, y cómo David lo descifra con su clave privada; y cómo David puede firmar digitalmente un mensaje y Ana verificarlo con la clave pública de David.

Uso de números primos en criptografía asimétrica

Números primos hasta 100

¿Por qué números primos?

  • Propiedades matemáticas especiales

  • Difíciles de factorizar

  • Ejemplo:

    • Elegimos dos primos grandes (p) y (q)
    • Calculamos el producto:

\[ n = p \cdot q \]

  • Multiplicar dos primos es fácil, pero encontrar los factores de un número grande (n) (es decir, recuperar (p) y (q) a partir de (n)) es computacionalmente muy difícil.

  • Idea clave:
    La seguridad de RSA se basa en que, aunque cualquiera puede calcular (n), solo quien conoce (p) y (q) puede realizar ciertas operaciones matemáticas (como calcular la clave privada).

Propiedad “unidireccional”

  • Fácil de calcular en una dirección:
    • Ejemplo: multiplicación
  • Difícil de revertir sin información adicional:
    • Ejemplo: factorización

¿Qué significa “grande” en criptografía?

  • Números tan grandes que las computadoras actuales no pueden factorizar en un tiempo razonable
  • Ejemplo: (2048) bits para RSA

Resumen: primos en asimétrica

  • Se utilizan números primos grandes para:
    • Generar claves en RSA
    • Asegurar la comunicación en Diffie-Hellman
  • La seguridad se basa en la dificultad de factorizar el producto de dos primos grandes

¿Qué es un hash?

  • Un hash es una función matemática que transforma cualquier dato (texto, archivo, etc.) en una cadena corta de longitud fija.
  • Propiedades:
    • Es fácil calcular el hash de un dato.
    • Es prácticamente imposible reconstruir el dato original a partir del hash.
    • Cambios mínimos en el dato producen un hash completamente diferente.
  • Usos:
    • Verificar integridad de datos.
    • Firmas digitales.
    • Almacenamiento seguro de contraseñas.
  • Ejemplo de función hash: SHA-256, MD5.

Función Hash

Irreversibilidad y colisiones en los hash

  • Irreversibilidad:
    Aunque conozcas la función hash, no puedes recuperar el mensaje original a partir del hash.
    El proceso es “unidireccional”: solo puedes calcular el hash, nunca invertirlo.

  • Colisión de hash:
    Dos mensajes diferentes pueden, en casos raros, producir el mismo hash.
    Esto se llama colisión y los buenos algoritmos de hash la hacen extremadamente improbable.

Colisiones de Hash

  • Por eso los hash se usan para verificar integridad, pero no para cifrar mensajes.

RSA: idea general

  • Basado en la dificultad de factorizar números grandes
  • Usa dos claves:
    • Clave pública ((n, e)): se comparte con todos
    • Clave privada ((n, d)): se mantiene en secreto

RSA: generación de claves (simplificado)

  1. Elegir dos números primos grandes:
    (p) y (q)

  2. Calcular el producto:
    \[ n = p \cdot q \] Este número (n) será parte de ambas claves.

  3. Calcular la función phi de Euler:
    \[ \varphi(n) = (p-1) \cdot (q-1) \] Es un valor auxiliar necesario para los siguientes pasos.

  4. Elegir el exponente público:
    Selecciona un número (e) tal que (1 < e < (n)) y que sea coprimo con ((n)), es decir: \[ \gcd(e, \varphi(n)) = 1 \] Esto garantiza que (e) tenga inverso módulo ((n)).

  5. Calcular el exponente privado:
    Busca el número (d) tal que: \[ e \cdot d \equiv 1 \pmod{\varphi(n)} \] Es decir, (d) es el inverso multiplicativo de (e) módulo ((n)).

  6. Las claves resultantes son:

    • Clave pública: (n, e)   (se puede compartir libremente)
    • Clave privada: (n, d)   (debe mantenerse secreta)

Solo quien conoce los primos originales puede calcular la clave privada. El resto del mundo solo conoce la clave pública.

RSA: cifrado y descifrado

Cifrado

  • El emisor calcula:

\[ c \equiv m^{e} \pmod{n} \]

¿Qué significa esta fórmula?

  • (m) es el mensaje convertido en número.
  • (e) es la clave pública del receptor.
  • (n) es el producto de dos números primos grandes (parte de la clave).
  • La expresión (m^{e} ) significa: eleva el mensaje a la potencia (e), divide el resultado entre (n) y quédate solo con el resto.
  • El resultado, (c), es el mensaje cifrado que se envía.
  • Envía (c) al receptor.

Descifrado

  • El receptor calcula:

\[ m \equiv c^{d} \pmod{n} \]

La seguridad de RSA se basa en que, sin conocer la clave privada (d), es prácticamente imposible recuperar el mensaje original (m) a partir de (c).

RSA: firma digital (idea)

  • Para firmar un mensaje:
    1. Se calcula un hash del mensaje (por ejemplo, SHA-256)
    2. Se aplica la operación de “descifrado” con la clave privada: \[ s \equiv h^{d} \pmod{n} \]
  • Para verificar la firma:
    1. Se vuelve a calcular el hash del mensaje
    2. Se aplica la operación de “cifrado” con la clave pública: \[ h' \equiv s^{e} \pmod{n} \]
    3. Si (h’ = h), la firma es válida

RSA: usos principales

  • Cifrado de datos: proteger información sensible
  • Firmas digitales: autenticar origen e integridad
  • Certificados digitales: verificar identidades en línea

Diffie-Hellman: el problema

  • Necesidad de compartir una clave secreta a través de un canal inseguro
  • Solución: usar un intercambio de claves basado en problemas matemáticos difíciles de resolver

Diffie-Hellman: idea básica

  • Dos partes generan claves públicas y privadas
  • Intercambian claves públicas
  • Cada parte calcula la clave secreta usando su propia clave privada y la clave pública de la otra parte

Diffie-Hellman: protocolo

  1. A elige un secreto (a) (privado) y calcula: \[ A = g^{a} \pmod{p} \] Envía (A) a B.

  2. B elige un secreto (b) (privado) y calcula: \[ B = g^{b} \pmod{p} \] Envía (B) a A.

  3. Cada uno calcula la clave compartida:

    • A calcula: \[ K = B^{a} \pmod{p} \]
    • B calcula: \[ K = A^{b} \pmod{p} \]

En ambos casos: \[ K = g^{ab} \pmod{p} \] por lo que A y B comparten la misma clave sin haberla enviado nunca.

Seguridad de Diffie-Hellman

  • Un atacante puede ver los valores públicos: \[ p,\quad g,\quad A = g^{a} \pmod{p},\quad B = g^{b} \pmod{p} \]

  • Pero para calcular la clave secreta compartida: \[ K = g^{ab} \pmod{p} \] necesitaría conocer el valor secreto de (a) o (b).

  • ¿Por qué es seguro?

    • Calcular (A) o (B) es fácil si conoces el secreto.
    • Pero, dado solo (A) y (p, g), descubrir (a) es extremadamente difícil (problema del logaritmo discreto).
    • Sin (a) ni (b), no se puede obtener (K).

La seguridad de Diffie-Hellman se basa en que, aunque los valores públicos se pueden ver y copiar, el secreto solo puede ser calculado por quienes conocen los valores privados.
Por eso se usa para acordar claves en canales inseguros.

Variantes modernas: ECDH

  • ECDH (Elliptic Curve Diffie-Hellman):
    • Basado en curvas elípticas
    • Ofrece la misma seguridad que Diffie-Hellman con claves más pequeñas

Aplicaciones de la clave simétrica

  • Cifrado de datos: proteger información almacenada o transmitida
  • Firmas digitales: autenticar documentos y software
  • Certificados digitales: verificar identidades en línea

Criptografía híbrida

  • Combina criptografía simétrica y asimétrica
  • Ejemplo: RSA para intercambiar una clave simétrica, luego AES para cifrar los datos

Ejemplo: HTTPS (TLS)

  1. El navegador y el servidor acuerdan usar RSA o Diffie-Hellman.
  2. Se establece una conexión segura y se intercambian claves.
  3. Se usa una clave simétrica (ej. AES) para cifrar la sesión.

Otros ejemplos de uso de clave simétrica

  • VPN: cifrado de túneles seguros
  • Cifrado de disco: proteger datos en reposo
  • Correo cifrado: asegurar la privacidad de las comunicaciones

Resumen general

  • RSA:
    • Basado en (n = p q)
    • Se usa para:
      • Cifrar claves simétricas
      • Firmas digitales
      • Certificados
  • Diffie-Hellman:
    • Permite acordar una clave secreta por un canal inseguro
    • Se basa en el problema del logaritmo discreto

Para el examen…

  • Explicar con tus palabras:
    • Por qué se usan números primos en criptografía asimétrica
    • En qué se basa la seguridad de RSA
    • Cómo funciona el intercambio de claves Diffie-Hellman
    • Por qué los sistemas reales usan una combinación de criptografía simétrica y asimétrica

Piensa siempre en ejemplos concretos: HTTPS, VPN, cifrado de disco, correo cifrado…