Nadie utiliza RSA para cifrar directamente los datos transmitidos a través de http (web) o SMTP (correo electrónico). El RSA de 2048 bits solo le permitiría cifrar 245 bytes a la vez, y cada una de estas operaciones es costosa.
Los protocolos reúnen a una de las partes o a ambas partes para generar un nuevo número aleatorio que sea lo suficientemente largo como para que sea indiscutible y único. 128 bits son suficientes, aunque TLS utiliza más. Luego usan este número como una clave de cifrado simétrica (técnicamente, semilla para KDF), lo que les permite cifrar rápidamente una gran cantidad de datos.
Si el CSPRNG es backdoor-ed, el adversario puede predecir la clave secreta compartida. Si la clave compartida no es secreta, rompe completamente la seguridad.
Si una de las partes generó la clave secreta compartida, debe transmitirla a la otra parte, de manera que sea inmune a las escuchas ilegales. Una forma sencilla es cifrar la clave secreta compartida utilizando la clave pública del destinatario. PGP hace esto, y SSL / TLS anterior hizo esto.
Un problema con la transmisión de la clave secreta aleatoria compartida encriptada con la clave pública del destinatario es que, si tiene en sus manos la clave privada del destinatario, quizás años más tarde cuando ya no usen este par de claves, puede descifrar los textos cifrados previamente grabados. Por lo tanto, un disco duro desechado con la clave privada hace mucho tiempo que el certificado del servidor TLS caducado permitiría, por ejemplo. La NSA para descifrar años de tráfico antiguo.
Los protocolos más nuevos exigen el uso de un mejor esquema: Diffie Hellman para establecer un secreto compartido anónimo, y las firmas digitales para demostrar que la otra parte es quien dicen ser.
En los protocolos modernos, RSA solo se utiliza para firmar y verificar firmas.
Nota: Es posible que haya leído una explicación de las firmas RSA como un tipo de cifrado. Es una muy mala explicación, no la uses .
Tenga en cuenta que el libro de texto RSA es inseguro y no debe utilizarse. Debe usar esquemas de relleno seguro para el cifrado RSA y para las firmas RSA. Los esquemas de relleno para los dos casos de uso tienen objetivos diferentes y son diferentes. Mezclarlos es inseguro.
Tenga en cuenta que el antiguo TLS usó pkcs # 1v1.5, ahora se considera inseguro, use RSASSA-PSS en su lugar.
Como ha notado, implementar RSA de forma segura es difícil, la recomendación moderna es usar mejores primitivos criptográficos, como los de libsodium (o mejor aún, el propio libsodium).