Investigadores de la Universidad de California en San Diego han desarrollado una técnica avanzada de ataque al algoritmo RSA, que permite falsificar firmas digitales sin la necesidad de factorizar los números primos subyacentes de RSA y sin requerir la recuperación de la clave privada. Los recursos necesarios para llevar a cabo un ataque a una clave RSA de 1024 bits están estimados en 1380 años de cálculos en un solo núcleo de procesador, lo que permitió en un clúster universitario, durante 5 meses, determinar los parámetros necesarios para generar firmas RSA falsas (en el experimento no se utilizaron aceleradores de IA ni GPU; con su aplicación, el tiempo de cálculo podría reducirse considerablemente). En comparación, el método clásico de factorización requiere entre 500.000 y un millón de años de cálculos en un solo núcleo de procesador para recrear la clave privada RSA-1024.
Para llevar a cabo el ataque, es necesario tener la capacidad de enviar múltiples solicitudes para la firma de datos generados por el atacante, por ejemplo, al dirigirse a un servicio de autorización o módulo HSM. Para determinar los parámetros de RSA-1024, es suficiente enviar 232 de tales solicitudes, y para un ataque a claves RSA-2048, utilizadas en el protocolo Privacy Pass, se requieren 243. Una vez obtenida una matriz de datos firmados, se inicia un prolongado proceso de cálculo de parámetros (para RSA-1024, aproximadamente 265 operaciones), después de lo cual el atacante puede crear firmas falsificadas para cualquier dato, gastando aproximadamente 180 horas de cálculos en un núcleo por cada firma.
El método es aplicable solo a firmas RSA en las que no se utiliza formato y relleno adicional antes del cifrado. Las implementaciones de firma ciega son susceptibles, incluidos aquellas utilizadas en el protocolo Privacy Pass. La mayoría de las implementaciones de RSA en uso, incluyendo PKCS#1v1.5 y RSA-PSS (que se usan en TLS y SSH), aplican relleno adicional y no son vulnerables a este ataque.
La base del cifrado RSA es la operación de elevar a una potencia módulo un número grande. La clave pública contiene el módulo y la potencia. El módulo se forma a partir de dos números primos aleatorios, que solo son conocidos por el propietario de la clave privada. El método propuesto se basa en una investigación publicada en 2007, que demostró que extraer la raíz de un mensaje cifrado en la potencia especificada en la clave pública sin información sobre los factores secretos es una operación menos costosa en términos de recursos que la factorización de los propios factores.
Utilizando un método especial de cribado de campos numéricos (SNFS), los investigadores lograron reducir la complejidad de comprometer claves RSA-1024 a 265 operaciones, lo que permite realizar ataques prácticos en clústeres modernos. Para las claves de 2048 bits RSA, la complejidad del ataque se estima en 290, lo cual es teóricamente factible para grandes corporaciones o agencias de seguridad. Para las claves de 4096 bits, la complejidad del ataque asciende a 2119 operaciones, lo que en la práctica aún no es alcanzable, pero está por debajo del mínimo de 2128 recomendado por la NSA, el Instituto Nacional de Estándares y Tecnología y la Agencia Europea de Seguridad de las Redes y de la Información.
Fuente: opennet.ru
