Con RSA, cifrado usa solo la clave pública, por lo que todos pueden tomar una clave pública RSA y encripta billones de mensajes con ella. No hay límite allí. RSA descifrado utiliza la clave privada. Si un atacante puede enviarle "mensajes" de su elección para que usted los descifre, y puede resolver la clave privada a partir de sus respuestas, eso se denomina ataque de texto cifrado elegido . Se supone que RSA debe resistir CCA.
En 1998, Bleichenbacher publicó un CCA contra RSA, como se define en PKCS # 1 (el " v1.5 relleno "). Es decir, si envía chatarra aleatoria a un motor de descifrado RSA, esa chatarra se convertirá en "descifrar correctamente" (relleno sintácticamente correcto) con una probabilidad de 1/65536 o menos; esta información es suficiente para recuperar la clave privada en aproximadamente un millón de solicitudes.
La rotación frecuente de la clave privada (por ejemplo, una vez cada 100000 usos) podría haber sido una respuesta, pero no es práctica porque una PC básica, utilizada como servidor SSL, puede usar su clave privada 100000 veces en mucho menos que una hora. En su lugar, los criptógrafos comenzaron a pensar y encontraron dos soluciones:
-
"Ocultar" la información sobre el éxito del descifrado. Esto es lo que hacen los servidores SSL: si el descifrado no produce un valor correcto, solo use uno aleatorio y continúe; El protocolo de enlace SSL fallará un par de mensajes más tarde. Esto evita el ataque porque el atacante no puede distinguir entre "el descifrado falló porque el relleno fue incorrecto" y "el descifrado se realizó correctamente y obtuvo un secreto maestro previo que el atacante no tiene".
-
Use un mejor relleno con una probabilidad de "éxito en la basura aleatoria" considerablemente más pequeña. Esto se llama relleno OAEP .
La línea inferior es: SI hay un número máximo de mensajes que puede procesar con RSA, más allá del cual la clave privada esté expuesta, ENTONCES haciendo mal.
Hablando de eso, los mantras usuales en la rotación de teclas para algoritmos simétricos son a menudo más evocador y una tradición tradicional medio olvidada que las medidas de seguridad racional. Como sugiere @CodesInChaos, AES fue diseñado con un tamaño de bloque de 128 bits precisamente para que se pueda usar en gigatones de datos sin perder la clave secreta.