RSA Attacks
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Triagem rápida
Coletar:
n,e,c(e quaisquer ciphertexts adicionais)- Quaisquer relacionamentos entre mensagens (mesmo plaintext? shared modulus? plaintext estruturado?)
- Quaisquer leaks (parciais
p/q, bits ded,dp/dq, padding conhecido)
Então tente:
- Verificação de fatoração (Factordb /
sage: factor(n)para valores pequenos) - Padrões de expoente baixo (
e=3, broadcast) - Common modulus / repeated primes
- Métodos de lattice (Coppersmith/LLL) quando algo está quase conhecido
Common RSA attacks
Common modulus
Se dois ciphertexts c1, c2 criptografarem a mesma mensagem sob o mesmo modulus n mas com expoentes diferentes e1, e2 (e gcd(e1,e2)=1), você pode recuperar m usando o algoritmo de Euclides estendido:
m = c1^a * c2^b mod n where a*e1 + b*e2 = 1.
Exemplo resumido:
- Calcule
(a, b) = xgcd(e1, e2)tal quea*e1 + b*e2 = 1 - Se
a < 0, interpretec1^acomoinv(c1)^{-a} mod n(o mesmo parab) - Multiplique e reduza módulo
n
Shared primes across moduli
Se você tem múltiplos RSA moduli do mesmo desafio, verifique se eles compartilham um primo:
gcd(n1, n2) != 1implica uma falha catastrófica na geração de chaves.
Isso aparece com frequência em CTFs como “we generated many keys quickly” ou “bad randomness”.
Håstad broadcast / low exponent
Se o mesmo plaintext for enviado para múltiplos destinatários com pequeno e (frequentemente e=3) e sem padding adequado, você pode recuperar m via CRT e raiz inteira.
Condição técnica:
Se você tem e ciphertexts da mesma mensagem sob moduli pairwise-coprime n_i:
- Use CRT para recuperar
M = m^esobre o produtoN = Π n_i - Se
m^e < N, entãoMé a verdadeira potência inteira, em = integer_root(M, e)
Wiener attack: small private exponent
Se d for muito pequeno, frações contínuas podem recuperá-lo a partir de e/n.
Textbook RSA pitfalls
Se você observar:
- Sem OAEP/PSS, exponenciação modular crua
- Criptografia determinística
então ataques algébricos e abuso de oracle tornam-se muito mais prováveis.
Tools
- RsaCtfTool: https://github.com/Ganapati/RsaCtfTool
- SageMath (CRT, roots, CF): https://www.sagemath.org/
Related-message patterns
Se você vir dois ciphertexts sob o mesmo modulus com mensagens que são algebraicamente relacionadas (por ex., m2 = a*m1 + b), procure por ataques “related-message” tais como Franklin–Reiter. Estes tipicamente requerem:
- mesmo modulus
n - mesmo exponent
e - relação conhecida entre plaintexts
Na prática isso é frequentemente resolvido com Sage montando polinômios modulo n e calculando um GCD.
Lattices / Coppersmith
Use isso quando você tiver bits parciais, plaintext estruturado, ou relações próximas que tornam o desconhecido pequeno.
Métodos de lattice (LLL/Coppersmith) aparecem sempre que você tem informação parcial:
- Plaintext parcialmente conhecido (mensagem estruturada com sufixo desconhecido)
p/qparcialmente conhecidos (high bits leaked)- Pequenas diferenças desconhecidas entre valores relacionados
O que reconhecer
Pistas típicas em desafios:
- “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”
Ferramentas
Na prática você usará Sage para LLL e um template conhecido para a instância específica.
Bons pontos 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
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


