Ataques RSA
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Triaje rápido
Recopilar:
n,e,c(y cualquier ciphertext adicional)- Cualquier relación entre mensajes (same plaintext? shared modulus? structured plaintext?)
- Cualquier leaks (partial
p/q, bits ofd,dp/dq, known padding)
Luego intenta:
- Comprobación de factorización (Factordb /
sage: factor(n)para casos pequeños) - Patrones de exponente bajo (
e=3, broadcast) - Módulo común / primos repetidos
- Métodos de lattice (Coppersmith/LLL) cuando algo está casi conocido
Ataques RSA comunes
Módulo común
Si dos ciphertexts c1, c2 cifran el mismo mensaje bajo el mismo modulus n pero con exponentes diferentes e1, e2 (y gcd(e1,e2)=1), puedes recuperar m usando el algoritmo extendido de Euclides:
m = c1^a * c2^b mod n where a*e1 + b*e2 = 1.
Esquema de ejemplo:
- Compute
(a, b) = xgcd(e1, e2)soa*e1 + b*e2 = 1 - Si
a < 0, interpretac1^acomoinv(c1)^{-a} mod n(lo mismo parab) - Multiplica y reduce módulo
n
Primos compartidos entre módulos
Si tienes múltiples módulos RSA del mismo reto, verifica si comparten un primo:
gcd(n1, n2) != 1implica un fallo catastrófico en la generación de claves.
Esto aparece frecuentemente en CTFs como “we generated many keys quickly” o “bad randomness”.
Håstad broadcast / exponente bajo
Si el mismo plaintext se envía a múltiples destinatarios con e pequeño (a menudo e=3) y sin padding adecuado, puedes recuperar m mediante CRT y raíz entera.
Condición técnica:
Si tienes e ciphertexts del mismo mensaje bajo módulos coprimos por pares n_i:
- Usa CRT para recuperar
M = m^esobre el productoN = Π n_i - Si
m^e < N, entoncesMes la potencia entera real, ym = integer_root(M, e)
Ataque de Wiener: exponente privado pequeño
Si d es demasiado pequeño, las fracciones continuas pueden recuperarlo a partir de e/n.
Peligros del Textbook RSA
Si ves:
- Sin OAEP/PSS, exponentiación modular sin procesar
- Cifrado determinista
entonces los ataques algebraicos y el abuso de oráculos se vuelven mucho más probables.
Herramientas
- RsaCtfTool: https://github.com/Ganapati/RsaCtfTool
- SageMath (CRT, roots, CF): https://www.sagemath.org/
Patrones de mensajes relacionados
Si ves dos ciphertexts bajo el mismo modulus con mensajes que están algebraicamente relacionados (p. ej., m2 = a*m1 + b), busca ataques “related-message” como Franklin–Reiter. Estos típicamente requieren:
- mismo modulus
n - mismo exponente
e - relación conocida entre plaintexts
En la práctica esto suele resolverse con Sage configurando polinomios modulo n y calculando un GCD.
Lattices / Coppersmith
Recurre a esto cuando tengas bits parciales, plaintext estructurado o relaciones cercanas que hagan que lo desconocido sea pequeño.
Los métodos de lattice (LLL/Coppersmith) aparecen siempre que tengas información parcial:
- Plaintext parcialmente conocido (mensaje estructurado con sufijo desconocido)
p/qparcialmente conocido (leaked high bits)- Pequeñas diferencias desconocidas entre valores relacionados
Qué reconocer
Indicadores típicos en retos:
- “We leaked the top/bottom bits of p”
- “The flag is embedded like:
m = bytes_to_long(b\"HTB{\" + unknown + b\"}\")” - “We used RSA but with a small random padding”
Herramientas
En la práctica usarás Sage para LLL y una plantilla conocida para el caso específico.
Buenos puntos de partida:
- Sage CTF crypto templates: https://github.com/defund/coppersmith
- A survey-style reference: https://martinralbrecht.wordpress.com/2013/05/06/coppersmiths-method/
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


