Cómo funciona y cuáles son sus algoritmos representativos

Entre los algoritmos de clave pública más conocidos se encuentran:

Algoritmo RSA


El RSA, creado en 1977, es llamado así por las siglas de sus creadores (Rivest, Shamir y Adelman). RSA es un sistema criptográfico que permite enviar mensajes cifrados sin tener que intercambiar una clave privada y es el más utilizado para este fin. El algoritmo se basa en la dificultad de factorizar números grandes en sus factores primos, por lo que es muy seguro para la encriptación de mensajes.

Comparado con los sistemas de cifrado simétrico como el DES, el algoritmo de RSA es 100 veces más lento en software y de 1000 a 10000 veces más lento en hardware.


¿Cómo funciona?


  1. El primer paso es generar las claves. Para ello, hay que encontrar dos números primos muy grandes y relativamente separados p y q.

  1. El siguiente paso es encontrar el módulo (n)

n = p * q

  1. Luego se emplea la función totient de Carmichael

λ (n) = mcm ( p – 1, q – 1), donde

λ (n) es el totient de Carmichael para n

mcm es el mínimo común múltiplo para p y q

  1. Ahora, hay que generar la clave pública. Está compuesta por un número e, coprimo con λ (n) y menor que λ (n)

  1. Para generar la clave privada se calcula el inverso multiplicativo de e módulo λ (n), es decir, un número d tal que:

(d * e) % λ (n) = 1

  1. Para cifrar el mensaje se sigue este procedimiento:

  • El emisor convierte el mensaje en una secuencia de números

  • Usa la clave pública del receptor para cifrar cada número utilizando la fórmula:

c = (m^e) % n, donde

c es el número cifrado

m es el número original

  1. Para descifrar el mensaje se sigue este procedimiento:

  • El receptor usa su clave privada para descifrar cada número utilizando la fórmula:

m = (c^d) % n, donde

m es el número original

c es el número cifrado



Algoritmo DSA


El algoritmo DSA (Digital Signature Algorithm) fue diseñado por el Instituto Nacional de Estándares y Tecnología de Estados Unidos (NIST). Funciona mediante el uso de claves públicas y privadas para el cifrado y descifrado de la información.

Asegura la autenticidad e integridad de los datos que se transmiten electrónicamente, y es de amplio uso en la banca en línea y la autenticación de datos. Ayuda a evitar fraudes y robos de identidad.

Uno de los usos más extendidos del algoritmo DSA es la firma electrónica. Para generarlas, el DSA es uno de los algoritmos más populares.


¿Cómo funciona?


Para firmar digitalmente un mensaje empleando el algoritmo DSA se siguen estos pasos:


  • Se genera un par de claves pública-privada. El algoritmo DSA utiliza operaciones matemáticas basadas en teoría de números y curvas elípticas para generar estas clave
  • El propietario de la clave privada cifra el mensaje empleando su clave privada. Para ello, utiliza una función hash criptográfica para resumir los datos y luego realiza una serie de cálculos utilizando su clave privada. Estos cálculos producen una firma digital única que se adjunta al mensaje
  • El propietario de la clave pública verifica la autenticidad de los datos firmados usando la clave pública. Utilizando la misma función hash criptográfica y siguiendo una serie de cálculos, se puede verificar si la firma digital coincide con los datos originales. Si la firma coincide, se considera que la firma es válida y los datos no se han modificado desde que se firmaron.


El algoritmo DSA no se emplea para cifrar datos, sino para firmar digitalmente. Así mismo, requiere más tiempo de cálculo, comparado con otros algoritmos de cifrado asimétrico como el RSA.



Algoritmo ECC


La criptografía de curva elíptica (ECC) es un método de encriptación ampliamente utilizado. Hace uso de la estructura algebraica de curvas elípticas para la generación de claves, las cuales son de un tamaño menor que las generadas a través de otros métodos sin sacrificar la seguridad. No en vano la Agencia Nacional de Seguridad de los Estados Unidos (NSA) la emplea para la protección de información de alto secreto.


La ECC tiene gran cantidad de aplicaciones, como acuerdos de claves, firmas digitales, generadores pseudoaleatorios, y más. También se puede emplear en esquemas híbridos, en que se combina el acuerdo de claves con cifrado simétrico.


Como es común en la criptografía pública, en la ECC se genera muy fácilmente una clave, pero es casi imposible romperla. Logra esta solidez gracias a una propiedad matemática conocida como “problema de logaritmo discreto de curva elíptica (ECDLP)”. Gracias a esta característica, es el método de encriptación favorito de la internet, incluyendo los sistemas de criptomonedas como Bitcoin y Ethereum. El algoritmo de firma digital de curva elíptica es un método de encriptación que usa ECC.


Como se mencionó anteriormente, una de las características más notables de este algoritmo es el menor tamaño de las claves generadas. Esta es una comparación de diferentes algoritmos de encriptación y los tamaños de las claves generadas.


Tamaño de clave equivalente (bits)

Simétrico

ECDSA

RSA

80

160

1024

112

224

2048

128

256

3072

192

384

7680

256

512

15360


A menor tamaño de la clave se requiere menor potencia computacional y menor ancho de banda. Por ello, ECDSA tiene ventaja sobre RSA, principalmente para su uso en dispositivos móviles y de Internet de las cosas.



¿Cómo funciona?


La criptografía ECC no emplea números primos, como RSA, sino coordenadas en una curva elíptica.


La representación algebraica de una curva elíptica se expresa con la siguiente ecuación:


y^2 = x^3 ax b


Dependiendo del valor de a y b, las curvas elípticas tomarán distintas formas en el plano.

En el caso de Bitcoin, se utiliza una curva elíptica ECDSA usando la curva secp256k1, que tiene este aspecto:




El funcionamiento básico del algoritmo ECC es el siguiente:

  • Generación de claves: Se elige una curva elíptica y se selecciona un punto base en la curva. Luego, se genera una clave privada aleatoria y se calcula la clave pública multiplicando la clave privada por el punto base de la curva.
  • Encriptación: Para encriptar un mensaje, se elige un punto aleatorio en la curva y se realiza una serie de operaciones matemáticas para obtener un punto resultante. Este punto resultante y el mensaje encriptado se envían al destinatario.
  • Desencriptación: El destinatario utiliza su clave privada para realizar operaciones matemáticas con el punto resultante recibido y así obtener el mensaje original.


Referencias


Ciberseg. (2022). ¿Qué es el cifrado RSA y cómo funciona? Ciberseguridad. https://ciberseguridad.com/guias/prevencion-proteccion/criptografia/cifrado-rsa/

Seguridad en JAVA: Técnicas criptográficas: Algoritmos de clave pública. (n.d.-b). https://www.uv.es/~sto/cursos/seguridad.java/html/sjava-13.html

Khan, M. W. (2023, January 30). Cifrado RSA en Python. Delft Stack. https://www.delftstack.com/es/howto/python/rsa-encryption-python/

GeeksforGeeks. (2023). RSA Algorithm in Cryptography. GeeksforGeeks. https://www.geeksforgeeks.org/rsa-algorithm-cryptography/

Santos, M. D. (2023). DSA: todo lo que necesitas saber sobre el algoritmo de firma digital de NIST. - Polaridad.es. Polaridad.es. https://polaridad.es/dsa-todo-lo-que-necesitas-saber-sobre-el-algoritmo-de-firma-digital-de-nist/

Aguirre Hernández, Eduardo. 2018. Algoritmo de firma digital DSA. Universidad Autónoma del Estado de Hidalgo. https://repository.uaeh.edu.mx/bitstream/123456789/18970

SSL Corp. (2021). ¿Qué es la criptografía de curva elíptica (ECC)? - SSL.com. SSL.com. https://www.ssl.com/es/preguntas-frecuentes/%C2%BFQu%C3%A9-es-la-criptograf%C3%ADa-de-curva-el%C3%ADptica%3F/

Maldonado, José. (2020). Criptografía de Curva Elíptica (ECC), el corazón de la seguridad en el mundo cripto y de Internet. Cointelegraph en español. https://es.cointelegraph.com/explained/elliptic-curve-cryptography-ecc-the-heart-of-security-in-the-crypto-and-internet-world

Por una Internet más segura: el caso de las firmas ECDSA. (n.d.). https://www.ui1.es/blog-ui1/por-una-internet-mas-segura-el-caso-de-las-firmas-ecdsa


Comentarios

Entradas populares de este blog

¿Qué es el criptosistema de clave pública?

Observaciones y recomendaciones para implementar el criptosistema

Caso práctico de aplicación (qué algoritmo, dónde y cómo usarlo)