Comparar los dos directamente es un poco como comparar un tractor con un tren: ambos son vehículos pero tienen una función y construcción completamente diferentes.
RSA es un cifrado asimétrico. Es ideal para el intercambio seguro de mensajes a través de una red no confiable, ya que la clave pública puede ser conocida por todos; un mensaje cifrado con la clave pública solo puede ser descifrado por la clave privada. Como tal, si dos partes conocen las claves públicas de la otra, pueden intercambiar mensajes de forma segura. Esto significa que no se debe transmitir información secreta, siempre que se mantengan autenticidad y integridad . Afortunadamente, RSA proporciona un método para generar firmas en los datos, lo que ayuda a probar que es auténtico. Dado un mensaje firmado por una clave privada, es posible verificar esa firma usando la clave pública correspondiente.
Como regla general, solo puede cifrar datos tan grandes como la longitud de la clave RSA. Por lo tanto, si tiene una clave RSA de 4096 bits, solo puede cifrar mensajes de hasta 4096 bits de longitud. No solo eso, sino que es increíblemente lento. RSA no está diseñado como un cifrado de transporte de datos a toda velocidad.
AES es un cifrado de bloque simétrico, y es increíblemente rápido. El texto plano se divide en fragmentos denominados bloques, y cada bloque se cifra en una cadena. Hay diferentes maneras de hacer esto, pero una común se llama Cipher Block Chaining, o CBC para abreviar. Esto permite tamaños de mensaje teóricamente infinitos. Sin embargo, los cifrados simétricos como AES requieren una clave secreta para intercambiarse primero. A diferencia de RSA, la clave compartida debe permanecer desconocida para los atacantes, por lo que debe proporcionar autenticidad, integridad y secreto. Eso es difícil de hacer directamente.
Lo que tenderá a encontrar es que los esquemas ambos se implementan juntos, de manera que se usa RSA para intercambiar la clave por un cifrado de bloque como AES:
- Alice y Bob se conocen las claves públicas de RSA. En general, estos se intercambian fuera de banda, p. a través de un certificado que se implementa como parte de su sistema operativo.
- Alice elige una clave aleatoria de 256 bits para AES y la cifra con la clave pública de Bob. Ella firma este mensaje con su clave privada y se lo envía a Bob.
- Bob usa la clave pública de Alice para verificar la firma. Luego usa su clave privada para descifrar el mensaje.
- Eve (un intruso) ha visto el mensaje cifrado, pero no puede descifrarlo sin conocer la clave privada de Bob. Ella tampoco puede alterar el mensaje, ya que haría que la firma fuera incorrecta. No puede volver a generar una firma válida sin conocer la clave privada de Alice.
- Alice y Bob ahora comparten una clave secreta de 256 bits, y la usan para cifrar mensajes usando un cifrado simétrico, como AES.
Esto satisface algunos requisitos:
- La conversación puede ocurrir en una red no confiable sin que un atacante pueda leer los mensajes.
- El intercambio de claves de sesión se puede realizar de manera segura, es decir, la autenticidad y la integridad se mantienen en la clave.
- El rendimiento del cifrado y descifrado de los datos de conversación reales es muy bueno.
En términos de nivel de seguridad, realmente no tiene mucho sentido comparar RSA y AES. Hacen diferentes trabajos. Actualmente asumimos que las claves AES de 128 bits son seguras y que las claves RSA de 2048 bits son seguras, pero esto depende completamente de los requisitos de seguridad individuales. El uso de AES de 256 bits y las claves RSA de 4096 bits debería ser más que suficiente para la próxima década, suponiendo que la implementación sea sólida.
Tenga en cuenta que todo esto es una simplificación, ya que hay muchas advertencias y detalles involucrados, y describir e intercambiar RSA como "encriptación" no es estrictamente correcto, pero en general, esto debe ser una visión general razonable de alto nivel la forma en que funcionan los dos tipos de criptografía.