domingo, 23 de julio de 2023

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

A diferencia de los algoritmos de clave secreta, que existen desde los tiempos de los romanos, los métodos asimétricos son muy recientes. En 1976, Whitfield Diffie y Martin Hellman crearon un método con la ayuda de Ralph Merkle para iniciar una comunicación segura sin haber acordado previamente una clave secreta.

Los principales algoritmos de cifrados asimétricos son:

RSA:

RSA fue desarrollado en 1977 por Ron Rivest, Adi Shamir y Len Adleman. El nombre RSA proviene de las iniciales de los apellidos de sus inventores El algoritmo fue patentado en 1983 por MIT, pero la patente expiró el 21 de septiembre de 2000 y desde entonces se utiliza libremente.


El algoritmo asimétrico por excelencia, este algoritmo se basa en la pareja de claves, la pública y la privada de las que ya hemos hablado con anterioridad. La seguridad de este algoritmo radica en el problema de la factorización de números enteros muy grandes, y en el problema RSA, porque descifrar por completo un texto cifrado con RSA no es posible actualmente, aunque sí un descifrado parcial. Algunas características muy importantes de RSA es la longitud de clave, actualmente como mínimo se debe utilizar una longitud de 2048 bits, aunque es recomendable que sea de 4096 bits o superior para tener una mayor seguridad.

 

ElGamal:

El esquema criptográfico de ElGamal fue descrito por el criptógrafo egipcio Taher Elgamal en 1985. Como hemos comentado anteriormente, basa su seguridad en la complejidad sobre el problema matemático del logaritmo discreto. Para este caso se trabaja sobre Zp, donde p es un número primo. Las etapas de este sistema son las siguientes:

·         Generación de claves, Por un lado, el individuo A toma un generador g del grupo cíclico (Zp) y un número aleatorio a {0, ...p−1}. Además, calcula t ≡ g a mod p, lo que nos deja una clave pública kpub = (p, g, t) y una clave privada kpriv = a.

 

·         Cifrado del mensaje: Supongamos que un individuo B quiere mandar un mensaje M a un individuo A. Para ello, consulta la clave pública de A y elige al azar un número b {2, ..., p − 2} y calcula

lo que hace que obtenga el mensaje cifrado c = (c1, c2) el cual envía al individuo A.

·         Descifrado del mensaje: Cuando el individuo A recibe el mensaje cifrado c, comienza calculando el inverso de c a 1 modulo p utilizando su clave privada. Llamamos a ese valor u = c a 1 mod p. Así obtiene la decodificación del mensaje.



ECC:

ECC son las siglas de criptografía de curva elíptica. Se trata de un método de criptografía asimétrica o clave pública. Tiene diferencias respecto a RSA. La diferencia más importante es el tamaño de las claves. Ofrece la misma seguridad que RSA, pero las claves son mucho más pequeñas. Una clave ECC de 256 bits equivale a una clave RSA de 3072, por lo que hay una diferencia considerable.

Pero también ofrece otras mejoras ECC. Por ejemplo, si lo comparamos con RSA es mucho más ligero, rápido y seguro. Esto hace que se utilice cada vez más en certificados SSL/TLS. Además, ECC es compatible con la mayoría de los sistemas operativos y navegadores actuales, por lo que facilita mucho su uso. Es compatible en sistemas como Windows (desde la versión Vista), macOS, Android o iOS, así como en los principales navegadores como son Google Chrome, Mozilla Firefox, Opera o Edge.

Si hablamos estrictamente de seguridad, hay numerosos ataques que se han implementado contra RSA. ECC en este sentido aporta mayor seguridad y beneficios como los siguientes:

  • Las claves son más pequeñas, por lo que tendrán un mejor rendimiento con menor sobrecarga.
  • El ECC escala mejor, mientras que el RSA se vuelve más lento y pesado.
  • ECC es mucho menos vulnerable a Quantum Computing.

El problema más importante que salva ECC es el tamaño y peso de las claves. Como hemos mencionado, son mucho más pequeñas. Puedes ver este cuadro comparativo:

Tamaño de clave ECC

Tamaño de clave RSA

160 bits

1024 bits

224 bits

2048 bits

256 bits

3072 bits

384 bits

7680 bits

521 bits

15360 bits

En definitiva, como ves hay diferencias importantes entre ECC y RSA. La primera es más segura, menos vulnerable a ciertos ataques y además es una clave más pequeña y menos pesada. Ha ido dejando poco a poco a un lado a RSA y el hecho de tener una gran compatibilidad ayuda bastante

 

DSA:

Este algoritmo es también puramente asimétrico, una desventaja de DSA es que quiere mucho más tiempo de cómputo que RSA a igualdad de hardware. DSA se utiliza ampliamente como un algoritmo de firma digital, es actualmente un estándar, pero DSA no se utiliza para cifrar datos, solamente como firma digital. Este algoritmo se utiliza ampliamente en las conexiones SSH para comprobar la firma digital de los clientes, además, existe una variante de DSA basada en curvas elípticas (ECDSA), y está disponible en todas las librerías criptográficas actuales como OpenSSL, GnuTLS o LibreSSL. Otra característica de DSA es la longitud de clave, la mínima longitud de clave es de 512 bits, aunque lo más habitual es usar 1024 bits.

El algoritmo DSA es el utilizado de forma predeterminada por OpenSSH, el popular software del servidor/cliente SSH que usamos ampliamente en cualquier servidor NAS, router o switch compatible con este protocolo, además, tenemos también una compatibilidad perfecta con los diferentes sistemas operativos, independientemente del software utilizado. DSA suele ser más utilizado en SSH que el popular RSA.

RSA-OAEP:

El algoritmo de encriptación asimétrica RSA fue descrito en el año 1977 por Ron Rivest, Adi Shamir y Leonard Adleman. A continuación, se detallan los tres algoritmos que lo componen.

·         Generación de claves y parámetros iniciales:

·         Se escogen dos primos distintos p y q grandes.

·         Se calcula N = pq llamado módulo RSA.

·         Se calcula φ(N) = (p − 1) (q − 1).

·         Se escoge un entero positivo e (1, φ(N)) tal que mcd (e, φ(N)) = 1.

·         Se calcula d tal que d · e ≡ 1 (mód φ(N)).

·         Clave Pública = (N, e).

·         Clave Privada = (p, q, d). 2.

Encriptación de mensajes:

·         Recibe como entrada la clave pública (N, e) y un mensaje M, 0 ≤ M < N.

·         Se calcula C = Me mod N.

·         La salida es el texto cifrado C. 3.

Desencriptación de mensajes:

·         Se recibe como entrada el módulo público N, la clave privada d, y el texto cifrado C, 0 ≤ C < N.

·         Se calcula M = C d mod N.


No hay comentarios:

Publicar un comentario

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

  La criptografía simétrica o de clave publica se caracteriza porque dentro del mismo canal de transmisión un emisor (quien envía el mensaje...