RSA vs ECC: Características y diferencias entre los dos

Escrito por Alberto López

Los certificados SSL/TLS hacen uso de criptografía asimétrica para la firma de dichos certificados, y por tanto, dotarles de la seguridad necesaria para su utilización, ya sea en página webs o en VPN de tipo SSL/TLS como puede ser OpenVPN. RSA es uno de los algoritmos más conocidos de cifrado asimétrico o de clave pública, sin embargo, también tenemos ECC (Elliptic Curve Cryptography), una variante basada en las matemáticas de las curvas elípticas. ¿Cuáles son las principales diferencias y cuál es mejor? En este artículo os explicamos todo lo que debes saber.

¿Qué es la ECC?

ECC es la abreviatura de criptografía de curva elíptica, es un método de criptografía asimétrica, o también conocida como clave pública, y está basada en el uso de curvas elípticas. El tamaño de las claves en comparación con la resistencia criptográfica, es la diferencia más importante entre ECC y el RSA que todos conocemos. ECC ofrece la misma seguridad criptográfica que el sistema RSA, pero con claves mucho más pequeñas. Una clave ECC de 256 bits equivale a una clave RSA de 3072 bits, por tanto, son muchos más pequeñas.

¿En qué mejora el ECC a RSA?

El ECC es mucho más ligero, rápido y seguro que el RSA, por eso se está empezando a utilizar en la mayoría de los certificados SSL/TLS nuevos que se crean. A día de hoy la mayoría de los certificados SSL y TLS se emiten con RSA de 2048 bits en adelante, lo que no está ayudando mucho a su adopción como sistema estándar, esto se debe a que los usuarios aún piensan que el cifrado ECC basado en curva elíptica no es totalmente compatible con los navegadores y sistemas operativos de los usuarios finales.

Esto no es cierto, el ECC es compatible con la mayoría de sistemas operativos y navegadores web modernos, el RSA estaba tan afianzado, que el ECC ha perdido mucha popularidad gracias a los mitos creados sobre la seguridad informática como que el HTTPS es más lento que el HTTP, o que los sitios que no recopilan y almacenan datos personales no necesitan de TLS. Para desmentirlo, aquí os dejamos todos los sistemas operativos que soportan ECC:

  • Microsoft Windows: desde Windows Vista soporta ECC
  • RHEL: desde 6.5 lo soporta
  • macOS: desde OS X 10.6
  • Android: desde 3.X lo soporta
  • iOS: desde iOS 7.X lo soporta.

En cuanto a los navegadores web que soportan ECC, en este caso tenemos:

  • Mozilla Firefox desde la versión 2.0
  • Google Chrome desde la versión 1.0
  • Internet Explorer 7 en adelante (Edge)
  • Safari desde la versión 4 en adelante

No hay que priorizar la interoperabilidad sobre la seguridad

Ya existen varios ataques que se han usado contra el RSA y muchas implementaciones SSL / TLS que han quedado obsoletas. Si continuamos usando y dando soporte al RSA, evitaremos atentar directamente contra la interoperabilidad, cosa que las empresas necesitan, ninguna empresa quiere bloquear a nadie fuera de sus sitios web, pero si seguimos apoyando ese canon, estamos desechando los mayores beneficios que nos ofrece el ECC.

  • Las claves son más pequeñas, lo que significa un mejor rendimiento con menor sobrecarga.
  • El ECC escala mejor, a medida que las claves crecen el RSA se vuelve muy lento y pesado.
  • Quantum Computing, el gran enemigo del RSA ya que permite romper las claves rápidamente. El ECC es mucho menos vulnerable a él.

Las claves ECC son más pequeñas

Las claves RSA son pesadas y difíciles de tratar. Actualmente la longitud estándar de RSA para dotar de seguridad a los sistemas, es de 2.048 bits, por debajo de esta longitud de clave no es recomendable usarlo. De hecho, lo más normal es utilizar actualmente longitudes de clave de 3072 bits o superior. Esto posee una clara desventaja, teniendo en cuenta el tamaño de las claves, y los recursos computacionales requeridos para usar RSA, dará como resultado que la conexión inicial con un sitio web o con nuestro servidor VPN se retrase.

Sin duda el problema más grande para RSA, es que el tamaño de la clave no se corresponde con su seguridad, a medida que las llaves crecen, la seguridad no lo hace al mismo ritmo. A pesar de ser considerablemente más pequeñas, las claves ECC son mucho más difíciles de descifrar. En la siguiente tabla, podréis ver las equivalencias de tamaño de clave de ECC contra el RSA que todos conocemos:

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

Como ejemplo, pondremos a la Agencia de Seguridad Nacional de los Estados Unidos (NSA), requiere que todos los archivos y documentos «Top Secret» estén cifrados con claves ECC de 384 bits. En RSA estaríamos hablando de 7.680 bits, manejarla se convierte en un reto titánico.

ECC escala mejor que RSA

Como acabamos de mencionar, el RSA requiere de más recursos de los sistemas a la hora de generar las claves y descifrar los datos que el ECC, la factorización requiere un poco de cálculo, por lo que a medida que crecen las amenazas al cifrado moderno, requerirá el crecimiento de las claves RSA, lo que en última instancia acabará por enterrar al RSA, dado que ralentizará demasiado las conexiones con nuestros sitios web o servidores VPN.

Las grandes empresas o corporaciones tienen un problema más apremiante, cuando el coste de todos los «handshakes» SSL/TLS sea lo suficientemente grande, todo ese descifrado puede convertirse en una carga importante para los sistemas. Por ello, muchas empresas practican la descarga de SSL como parte de su implementación global de SSL/TLS. Tienen dispositivos dedicados donde descargan esos procesos para así liberar recursos en sus servidores de aplicaciones, y mejorar así el rendimiento general de sus sitios web.

Por tanto, las claves RSA escalan peor en comparación con su oponente, el ECC. Dado que el ECC, se adapta bien y requiere menos recursos para llevar a cabo su tarea, las empresas más pequeñas deberían tener en consideración usar este tipo de cifrado para funcionar a plena potencia desde sus inicios.

ECC es más resistente a los ordenadores cuánticos

El ECC en su iteración más común no es resistente a los ordenadores cuánticos. Pero sí que puede entrar en batalla con una variante modificada del algoritmo de Shor. Hay una forma de criptografía basada en la curva elíptica que se ha mostrado prometedora: «la criptografía isogenia de la curva elíptica súper singular». No vamos a entrar en la curva elíptica súper singular, ni en los gráficos de isogenia porque la computación cuántica a día de hoy aún está en laboratorio.

SIDH, como ha sido apodado, tiene dos grandes ventajas: los tamaños de clave más pequeños y el «Perfect Forward Secrecy«, el PFS es una práctica común entre los defensores de la privacidad, donde incluso si una clave privada está descifrada, las claves de sesión que se generaron anteriormente no se verán comprometidas. Es técnicamente posible con RSA, pero requiere claves de corta duración, lo que significa una rotación regular de las claves y generar nuevas claves RSA tiene un coste demasiado elevado. ECC se presta a este modelo debido a los tamaños de clave más pequeños y la facilidad con que se pueden variar.

¿Cómo puedo obtener un certificado ECC SSL?

Obtener un certificado ECC SSL/TLS es tan sencillo como solicitar un certificado SSL, y elegir un certificado que admita ECC, aunque hoy en día, algunos proveedores como Symanted y DigiCert ya lo admiten. También podremos elegir ECC como algoritmo de firma. Además, estos proveedores proporcionan ECC sin coste adicional, es decir, cuesta lo mismo que un certificado con RSA. Otro detalle importante, es que la mayoría de los servicios SSL, ofrecen la reemisión gratuita de su certificado SSL/TLS. Con los certificados seleccionados, simplemente se puede ingresar en el panel de control, optar por volver a emitir y usar una Solicitud de firma de certificado (CSR) para generar el nuevo pedido.

Os recomendamos visitar TheSSLStore donde encontraréis más información sobre ECC, y también os recomendamos visitar este artículo de Quora donde hacen una comparativa de ventajas y desventajas de ECC.