SlideShare uma empresa Scribd logo
Criptografia assimétrica RSA:
A "vaca sagrada" do infosec

                        Luis Grangeia, SysValue
                        lgrangeia@sysvalue.com
Notas soltas sobre:

História da Criptografia Moderna
    História da Computação
História da criptografia moderna
• Colossus:
  – Primeiro computador electrónico programável;
  – Desenvolvido para quebrar códigos na 2ª Grande
    Guerra (cifra Lorenz).


• Bletchley Park
  – Onde nasceu a Criptografia Moderna;
  – Onde nasceu a teoria da computação.
Alan Turing
• “Pai” da teoria da
  computação;
• Matemático
• Criptógrafo:
  – Responsável por quebrar a
    cifra Enigma
Problema:
Distribuição de Chaves
1976 – Diffie-Hellman
Ralph Merkle
Martin Hellman
Whitfield Diffie
Diffie-Hellman
• Algoritmo de troca de
  chaves;
• Permite troca de chaves
  secretas em público sem
  que sejam reveladas;
• Não fornece autenticação
  dos intervenientes.




                             Fonte: wikipedia
1978 - RSA
Adi Shamir
Ron Rivest
Leonard Adleman
RSA
• Algoritmo de criptografia de chave pública;
• Permite cifra e assinatura (fornece confidencialidade,
  integridade e não-repúdio);
• Para saber mais:
  – The Code Book
  – Simon Singh
  – 1999
  – Contém desafios 
História pessoal
Codebits V Security Quiz
               último “nível”
“key”:
-----BEGIN PUBLIC KEY-----
MD4wDQYJKoZIhvcNAQEBBQADLQAwKgIjBj8NqV9VQV2i
QgEZrI75OHukFe5yMEwUkrAs6KGRuMCNhMUCAwEAAQ==
-----END PUBLIC KEY-----

“Ciphertext”:
ArQiAjIwhpFedXJD2g14PPD11XD4UMOB8NAqDWs4sTHG
OLs=
                  E agora?
Codebits V Security Quiz
                       último “nível”




Rsa size: 35
65537 → Expoente público
47400378883230338232775581390792470724641097776
632053645187932911870219271898236101 → Módulo

   Solução: Factorizar Módulo, com factores gerar chave privada
             (usei applet java, posteriormente “msieve”)
Codebits V Security Quiz
      último “nível”




     http://1.41.x1.sl.pt
http://1.41.x1.sl.pt
“If it bleeds,
 we can kill it.”
RSA: Introdução
RSA: O que é
• O algoritmo criptográfico de chave pública mais
  utilizado no mundo
  – há outros, menos utilizados
• Utilizado em:
  – Certificados Digitais:
     • Cartão do Cidadão
     • Web (HTTPS)
     • Serviços de actualizações/patching (Windows Update)
  – Secure Shell (SSH)
  – PGP - Pretty Good Privacy
RSA: O que é (2)
  – Trusted Platform Module (TPM Chip) em PC's
    desktop
  – Trusted Software validation (iOS, Android)
  – DRM em conteúdos digitais
  – Protecção (“lock down”) de Hardware
    especializado:
    • Meo / Vodafone TV
    • XBOX 360
       – (A Playstation 3 usa ECDSA)
RSA: Algoritmo
(com implementação em Excel )
Noções Elementares
RSA: Geração de Chaves
(simplificada)
RSA: Geração de Chaves
Exemplo
RSA: Encriptação / Decriptação
RSA
• Foram feitas simplificações/omissões;
• Falta o padding scheme (PKCS #1);
• A ideia geral é esta…
RSA
Problemas / Ataques
RSA: Problemas / Ataques
1. Factorização do módulo
Factorização do módulo




            Source: crypto.stackexchange.com
Factorização do módulo (2)
• A maior chave foi quebrada em 2009
  – 768 bits
  – ~1500 anos de CPU time (2.2 GHz Opteron, 2GB
    RAM)
• Estima-se que RSA 1024 seja ~1000x mais
  difícil
Factorização do módulo (3)
“If we are optimistic, it may be possible to factor a 1024-bit RSA
modulus within the next decade by means of an academic
effort on the same limited scale as the effort presented here.
From a practical security point of view this is not a big deal, given
that standards recommend phasing out such moduli by the end
of the year 2010.”
“Another conclusion from our work is that we can confidently say
that if we restrict ourselves to an open community, academic
effort as ours and unless something dramatic happens in
factoring, we will not be able to factor a 1024-bit RSA modulus
within the next five years. After that, all bets are off.”

                            Factorization of a 768-bit RSA modulus
                                              18 de Fevereiro, 2010
“The NSA Is Building the Country’s Biggest
Spy Center (Watch What You Say)”
                    - Wired, 15 de Março de 2012
E RSA 2048?
RSA: Problemas / Ataques
2. Ataques à implementação

• Timing / Side channel attacks:
  – Remote timing attacks are practical (Boneh, 2003)
  – On the Power of Simple Branch Prediction Analysis
    (Seifert 2006)
  – A New Side-Channel Attack on RSA Prime
    Generation (Schindler 2009)
• Falhas na geração de chaves:
  – Expoente público demasiado pequeno (3);
  – Fraca escolha de factores primos (PRNG fraco).
Chaves Fracas?
PRNG’s Fracos!
Escolha de factores primos
O que acontece se duas chaves partilharem
factores primos?
Aleatoriedade é fundamental
• Se o gerador de nºs aleatórios for fraco,
  corremos o risco de repetir nºs primos;
• Acidentes de percurso:
  – Debian OpenSSL package (2008):
Aleatoriedade é fundamental (2)
• Pesquisa recente (Fevereiro de 2012):

“More worrisome is that among the 4.7 million
distinct 1024-bit RSA moduli that we had
originally collected, 12720 have a single large
prime factor in common.”

                  - Ron was wrong, Whit is right,
             http://eprint.iacr.org/2012/064.pdf
Security Metrics
                 Ou
“If you can’t measure it, you can’t
            manage it”.
Pesquisa em Portugal
• Acesso a porto 443 de todos os IP’s
  portugueses
• Obtenção do certificado SSL
• Trabalhar os dados obtidos

• Disclaimer: Não houve nem acesso ilegítimo
  nem tentativa.
Pesquisa em Portugal
Passo 1: Recolha

nmap -n -P0 -iL portugal.ranges 
     -sS -p 443 --script=ssl-cert -v 
     --max-hostgroup=16384 -T5 
     -oX portugal.certs



                 ~1,5 dias
             Amazon EC2 FTW 
Pesquisa em Portugal
Passo 2: Pré-processamento
• PERL para parsar o ficheiro XML do nmap
• Output: .db file (PERL Storable) contendo certificados
  recolhidos
# ./certstats.pl certs.storable.db
31557 certificates loaded
20545 self signed certificates
528 keys found of bit length 512
156 keys found of bit length 768
6 keys found of bit length 1020
21633 keys found of bit length 1024
2 keys found of bit length 1536
9041 keys found of bit length 2048
191 keys found of bit length 4096
sha1WithRSA keys: 187
ripemd160WithRSA keys: 1
sha512WithRSAEncryption keys: 5
sha256WithRSAEncryption keys: 74
md5WithRSAEncryption keys: 11053
dsaWithSHA1 keys: 19
sha1WithRSAEncryption keys: 20218
Pesquisa em Portugal
Passo 3: Processamento dos módulos
• Imprimir os módulos dos certificados RSA 1024 para
  um ficheiro (PERL);
   # ./printmodulo.pl certs.storable.db > moduli.txt



• NOTA: Apróx. 11k módulos repetidos (self-signed
  certs?):
   # wc -l moduli.txt ; sort -u moduli.txt | wc –l
   21624 moduli.txt
   10418
Pesquisa em Portugal
Passo 3: Processamento dos módulos (2)
• Identificar factores primos comuns entre módulos;
• Algoritmo de Euclides (gcd()) descobre-os em tempo
  polinomial;
   – Foram necessárias algumas optimizações ao gcd
     roubadas ao Dan Bernstein, ver post de Nadia
     Heninger no blog “Freedom to Tinker”;
• PERL não chega  → C
   – #include <gmp.h>
Pesquisa em Portugal
Passo 3: Processamento dos módulos (3)
• Programa em C que itera sobre uma lista de módulos
  e corre o “greatest common divisor” entre eles:
  # time ./mp uniqmoduli.txt > primefactors.txt
  real     3m1.798s
  user     2m47.286s
  sys      0m13.289s
• Resultados:
  # sort -u primefactors.txt
  10249387753767103692784797669342525230742191756836309921481183045956057
  51800105024766018701797053149445419595902893031774418216435258304910660
  7645204813147
  11119395432118879179519544495595597502419989036052902267031102247273337
  46132400213686002954086505407830524612102104573142722649728178279819107
  7518647710597
  12153720331412318215233052052111267605013844797673577393238753478791461
  21527583795843913325300705869416126187666668809666225371151350505703162
  5120636958709
Pesquisa em Portugal
Passo 4: Análise de Resultados
• Com os factores primos obtidos, podemos identificar
  quais as chaves privadas que podemos gerar:
   # cat commonfactors.txt | ./factorkeys.pl certs.storable.db
   ips.storable.db
“That’s a bingo!”
21624 1024 RSA certificates loaded
CN=self-signed, CN=system generated, CN=0162052010005424 from ip x.x.x.x is factorable!
expires: Dec 30 00:00:45 2010 GMT.
EXTRACTED PUBLIC KEY:
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAL81B1v8Jrk7k5Bc4qkGunksKoiYkMKcwcxuApD3wpp1J+2ziVMrBFcA
nNuA+nMeshxgOMst6lKqXMTwgPxFPz4ks0kg9LC1c7f8jKqoe6icYsFE2FxUm6l4
Sxrfopbv+e3+1c9THOLkD/WXj624PB16IyMp1sqO6Y5IS08OWZnnAgMBAAE=
-----END RSA PUBLIC KEY-----

GENERATED **PRIVATE** KEY:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC/NQdb/Ca5O5OQXOKpBrp5LCqImJDCnMHMbgKQ98KadSfts4lT
KwRXAJzbgPpzHrIcYDjLLepSqlzE8ID8RT8+JLNJIPSwtXO3/IyqqHuonGLBRNhc
VJupeEsa36KW7/nt/tXPUxzi5A/1l4+tuDwdeiMjKdbKjumOSEtPDlmZ5wIDAQAB
AoGAWa9x6D95mmDLcmdfGZFCXhvNR4zoOaB1doITShQsf258cA5KV2xR+M0cxgjV
cLHxMUYg3YyH4IZwRR/aIHoKkzZd+EPkP2zJWYkEKFLp+hgouozFeBfw37DZzt3h
6XZkA4GZr85ukGiMFV7tsSqa8wgxhIZjymx5Gj61YsAORyECQQDDsfa5PzwOHlzg
ajaGO4WREt6uRV1iDI54FwiqxM2CwqgbrGuq1Cqh3+BEjUGA4j8F6bD4cV4roqGL
oEMvShVbAkEA+iEDPbtbhy5lLwIYzQ2x1VtjbNWlMbW3fAsqsXIHc0y1vAKz53Te
CpYq4pcojssMXVWwOFKHZr7S9JFzbNwXZQJAROP+ZgJDwvifW4UogqKrh4GsEI9s
q1qeQNpi+7LiYfjiszNEh9O+2lN0oM1VVOjQpOU6notSSmwrEHsvi5M55wJBALSg
6HVI+rTpZTqIOh7CV/zqjSdINY5rWsCiU8dmwEicSdUm4oIwHDTq8rdFT42mxhwU
yDg0KQGipjblXsRrQB0CQBDPavnn9i/dC8TzjTLr1mIHzrVSKKOZSjO9uK1YHEDK
qdq23XbYpYlBiyQY/8jUjt3YIhSBVEDZVj8ElOfoxYQ=
-----END RSA PRIVATE KEY-----
Pesquisa em Portugal
Resultados
• 11 chaves RSA 1024 factorizáveis (em 21624);
• Todas as chaves self-signed e com a data de
  expiração no passado;
• Todas de uma única classe de dispositivo SSL VPN
  (Juniper).
Dados interessantes
Data de expiração                              Common Name
(certificados gerados “em série”?)             (provavelmente nº de série)
expires:   Dec   30   00:00:40   2010   GMT.   CN=0162032010001816
expires:   Dec   30   00:00:41   2010   GMT.   CN=0162052010005424
expires:   Dec   30   00:00:42   2010   GMT.   CN=0162092010004308
expires:   Dec   30   00:00:43   2010   GMT.   CN=0162122008002400
expires:   Dec   30   00:00:44   2010   GMT.   CN=0162122008003338
expires:   Dec   30   00:00:44   2010   GMT.   CN=0164022008001154
expires:   Dec   30   00:00:45   2010   GMT.   CN=0164022008001728
expires:   Dec   30   00:00:51   2010   GMT.   CN=0164042008000522
expires:   Dec   30   00:00:51   2010   GMT.   CN=0164042008001376
expires:   Dec   30   00:00:57   2010   GMT.   CN=0164072009000933
expires:   Dec   30   00:01:01   2010   GMT.   CN=0164072009000933
• Certificados expirados;
• Self-signed;
• O facto de a chave
  privada ser
  comprometida não é um
  grande problema a esta
  luz;
• Apenas 11 certificados e
  de “baixo valor”.
E o Cartão do Cidadão?
Cartão do Cidadão
• Chave RSA 1024 começa a parecer curta…
   – “As of 2011, new RSA keys generated by unclassified
     applications used by the U.S. Federal Government, should
     have a moduli of at least bit size 2048” – NIST SP800-57
   – Talvez porque Cartões RSA 2048 são caros?
• Onde são geradas as chaves?
   – No cartão?
      • Se sim, será o PRNG do cartão robusto?
   – Fora do cartão?
      • Se sim, será que o estado português tem uma cópia da minha
        chave privada?
• Seria interessante repetir esta análise para chaves
  públicas do CC (Olá AMA, Multicert )
Conclusões
Conclusões
• Objectivos iniciais:
   – Aprender mais sobre o RSA;
   – Retirar-lhe a aura mística 
• Pelo caminho:
   – Certificados SSL em Portugal relativamente seguros a
     este ataque
   – Cartão do cidadão é um alvo interessante para análise
     mais aprofundada:
      • Factores primos comuns?
      • Robustez face a timing/side channel attacks?
Obrigado!

        Q&A?

     Luis Grangeia
lgrangeia@sysvalue.com

Mais conteúdo relacionado

Destaque

Man vs Internet - Current challenges and future tendencies of establishing tr...
Man vs Internet - Current challenges and future tendencies of establishing tr...Man vs Internet - Current challenges and future tendencies of establishing tr...
Man vs Internet - Current challenges and future tendencies of establishing tr...
Luis Grangeia
 
SSL: Past, Present and Future
SSL: Past, Present and FutureSSL: Past, Present and Future
SSL: Past, Present and Future
Luis Grangeia
 

Destaque (6)

Man vs Internet - Current challenges and future tendencies of establishing tr...
Man vs Internet - Current challenges and future tendencies of establishing tr...Man vs Internet - Current challenges and future tendencies of establishing tr...
Man vs Internet - Current challenges and future tendencies of establishing tr...
 
SSL: Past, Present and Future
SSL: Past, Present and FutureSSL: Past, Present and Future
SSL: Past, Present and Future
 
IBWAS 2010: Web Security From an Auditor's Standpoint
IBWAS 2010: Web Security From an Auditor's StandpointIBWAS 2010: Web Security From an Auditor's Standpoint
IBWAS 2010: Web Security From an Auditor's Standpoint
 
Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1 Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1
 
Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2
 
Heartbleed && Wireless
Heartbleed && WirelessHeartbleed && Wireless
Heartbleed && Wireless
 

Semelhante a RSA, A Vaca Sagrada do Infosec

Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosApresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Sanger Dias
 
Pentest Invasão e Defesa - AnonFeh
Pentest   Invasão e Defesa - AnonFehPentest   Invasão e Defesa - AnonFeh
Pentest Invasão e Defesa - AnonFeh
Phillipe Martins
 
Certificação Digital - Aula1 Exercícios
Certificação Digital - Aula1 ExercíciosCertificação Digital - Aula1 Exercícios
Certificação Digital - Aula1 Exercícios
Leandro Rezende
 
04 cripto chave_2011
04 cripto chave_201104 cripto chave_2011
04 cripto chave_2011
Carol Luz
 
Segurança de Redes
Segurança de RedesSegurança de Redes
Segurança de Redes
Diego Casati
 
Curso hacking com BT5
Curso hacking com BT5Curso hacking com BT5
Curso hacking com BT5
Cassio Ramos
 
Segurança em redes sem fio 2
Segurança em redes sem fio 2Segurança em redes sem fio 2
Segurança em redes sem fio 2
Designer Info
 

Semelhante a RSA, A Vaca Sagrada do Infosec (20)

Ransomware
RansomwareRansomware
Ransomware
 
Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosApresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
 
Pentest Invasão e Defesa - AnonFeh
Pentest   Invasão e Defesa - AnonFehPentest   Invasão e Defesa - AnonFeh
Pentest Invasão e Defesa - AnonFeh
 
Certificação Digital - Aula1 Exercícios
Certificação Digital - Aula1 ExercíciosCertificação Digital - Aula1 Exercícios
Certificação Digital - Aula1 Exercícios
 
04 cripto chave_2011
04 cripto chave_201104 cripto chave_2011
04 cripto chave_2011
 
Segurança de Redes
Segurança de RedesSegurança de Redes
Segurança de Redes
 
06-botnet-mon
06-botnet-mon06-botnet-mon
06-botnet-mon
 
Curso hacking com BT5
Curso hacking com BT5Curso hacking com BT5
Curso hacking com BT5
 
Criptografia e criptpanalise na pratica
Criptografia e criptpanalise na praticaCriptografia e criptpanalise na pratica
Criptografia e criptpanalise na pratica
 
Estudo do Protocolo ISAKMP/OAkley como Norma de Gestão de Chaves da Arquitect...
Estudo do Protocolo ISAKMP/OAkley como Norma de Gestão de Chaves da Arquitect...Estudo do Protocolo ISAKMP/OAkley como Norma de Gestão de Chaves da Arquitect...
Estudo do Protocolo ISAKMP/OAkley como Norma de Gestão de Chaves da Arquitect...
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine Learning
 
E-Detective - sistemas de monitoramento e analise forense para redes
E-Detective - sistemas de monitoramento e analise forense para redesE-Detective - sistemas de monitoramento e analise forense para redes
E-Detective - sistemas de monitoramento e analise forense para redes
 
Conclusão Módulo de Redes TI 2012B Senac Jundiaí
Conclusão Módulo de Redes TI 2012B Senac JundiaíConclusão Módulo de Redes TI 2012B Senac Jundiaí
Conclusão Módulo de Redes TI 2012B Senac Jundiaí
 
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
 
SNMP - Rafael Rodriques
SNMP - Rafael RodriquesSNMP - Rafael Rodriques
SNMP - Rafael Rodriques
 
SonicWALL - Seja o departamento do "Sim" em sua empresa
SonicWALL - Seja o departamento do "Sim" em sua empresaSonicWALL - Seja o departamento do "Sim" em sua empresa
SonicWALL - Seja o departamento do "Sim" em sua empresa
 
Boot Seguro para Linux Embarcado
Boot Seguro para Linux EmbarcadoBoot Seguro para Linux Embarcado
Boot Seguro para Linux Embarcado
 
Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"Slide Palestra "Metasploit Framework"
Slide Palestra "Metasploit Framework"
 
Segurança em redes sem fio 2
Segurança em redes sem fio 2Segurança em redes sem fio 2
Segurança em redes sem fio 2
 

RSA, A Vaca Sagrada do Infosec

  • 1. Criptografia assimétrica RSA: A "vaca sagrada" do infosec Luis Grangeia, SysValue lgrangeia@sysvalue.com
  • 2. Notas soltas sobre: História da Criptografia Moderna História da Computação
  • 3. História da criptografia moderna • Colossus: – Primeiro computador electrónico programável; – Desenvolvido para quebrar códigos na 2ª Grande Guerra (cifra Lorenz). • Bletchley Park – Onde nasceu a Criptografia Moderna; – Onde nasceu a teoria da computação.
  • 4. Alan Turing • “Pai” da teoria da computação; • Matemático • Criptógrafo: – Responsável por quebrar a cifra Enigma
  • 5.
  • 7.
  • 8. 1976 – Diffie-Hellman Ralph Merkle Martin Hellman Whitfield Diffie
  • 9. Diffie-Hellman • Algoritmo de troca de chaves; • Permite troca de chaves secretas em público sem que sejam reveladas; • Não fornece autenticação dos intervenientes. Fonte: wikipedia
  • 10. 1978 - RSA Adi Shamir Ron Rivest Leonard Adleman
  • 11. RSA • Algoritmo de criptografia de chave pública; • Permite cifra e assinatura (fornece confidencialidade, integridade e não-repúdio);
  • 12. • Para saber mais: – The Code Book – Simon Singh – 1999 – Contém desafios 
  • 14.
  • 15. Codebits V Security Quiz último “nível” “key”: -----BEGIN PUBLIC KEY----- MD4wDQYJKoZIhvcNAQEBBQADLQAwKgIjBj8NqV9VQV2i QgEZrI75OHukFe5yMEwUkrAs6KGRuMCNhMUCAwEAAQ== -----END PUBLIC KEY----- “Ciphertext”: ArQiAjIwhpFedXJD2g14PPD11XD4UMOB8NAqDWs4sTHG OLs= E agora?
  • 16. Codebits V Security Quiz último “nível” Rsa size: 35 65537 → Expoente público 47400378883230338232775581390792470724641097776 632053645187932911870219271898236101 → Módulo Solução: Factorizar Módulo, com factores gerar chave privada (usei applet java, posteriormente “msieve”)
  • 17. Codebits V Security Quiz último “nível” http://1.41.x1.sl.pt
  • 19. “If it bleeds, we can kill it.”
  • 21. RSA: O que é • O algoritmo criptográfico de chave pública mais utilizado no mundo – há outros, menos utilizados • Utilizado em: – Certificados Digitais: • Cartão do Cidadão • Web (HTTPS) • Serviços de actualizações/patching (Windows Update) – Secure Shell (SSH) – PGP - Pretty Good Privacy
  • 22. RSA: O que é (2) – Trusted Platform Module (TPM Chip) em PC's desktop – Trusted Software validation (iOS, Android) – DRM em conteúdos digitais – Protecção (“lock down”) de Hardware especializado: • Meo / Vodafone TV • XBOX 360 – (A Playstation 3 usa ECDSA)
  • 25. RSA: Geração de Chaves (simplificada)
  • 26. RSA: Geração de Chaves Exemplo
  • 27. RSA: Encriptação / Decriptação
  • 28. RSA • Foram feitas simplificações/omissões; • Falta o padding scheme (PKCS #1); • A ideia geral é esta…
  • 30. RSA: Problemas / Ataques 1. Factorização do módulo
  • 31. Factorização do módulo Source: crypto.stackexchange.com
  • 32. Factorização do módulo (2) • A maior chave foi quebrada em 2009 – 768 bits – ~1500 anos de CPU time (2.2 GHz Opteron, 2GB RAM) • Estima-se que RSA 1024 seja ~1000x mais difícil
  • 33. Factorização do módulo (3) “If we are optimistic, it may be possible to factor a 1024-bit RSA modulus within the next decade by means of an academic effort on the same limited scale as the effort presented here. From a practical security point of view this is not a big deal, given that standards recommend phasing out such moduli by the end of the year 2010.” “Another conclusion from our work is that we can confidently say that if we restrict ourselves to an open community, academic effort as ours and unless something dramatic happens in factoring, we will not be able to factor a 1024-bit RSA modulus within the next five years. After that, all bets are off.” Factorization of a 768-bit RSA modulus 18 de Fevereiro, 2010
  • 34.
  • 35. “The NSA Is Building the Country’s Biggest Spy Center (Watch What You Say)” - Wired, 15 de Março de 2012
  • 37.
  • 38. RSA: Problemas / Ataques 2. Ataques à implementação • Timing / Side channel attacks: – Remote timing attacks are practical (Boneh, 2003) – On the Power of Simple Branch Prediction Analysis (Seifert 2006) – A New Side-Channel Attack on RSA Prime Generation (Schindler 2009) • Falhas na geração de chaves: – Expoente público demasiado pequeno (3); – Fraca escolha de factores primos (PRNG fraco).
  • 41. O que acontece se duas chaves partilharem factores primos?
  • 42. Aleatoriedade é fundamental • Se o gerador de nºs aleatórios for fraco, corremos o risco de repetir nºs primos; • Acidentes de percurso: – Debian OpenSSL package (2008):
  • 43. Aleatoriedade é fundamental (2) • Pesquisa recente (Fevereiro de 2012): “More worrisome is that among the 4.7 million distinct 1024-bit RSA moduli that we had originally collected, 12720 have a single large prime factor in common.” - Ron was wrong, Whit is right, http://eprint.iacr.org/2012/064.pdf
  • 44. Security Metrics Ou “If you can’t measure it, you can’t manage it”.
  • 45. Pesquisa em Portugal • Acesso a porto 443 de todos os IP’s portugueses • Obtenção do certificado SSL • Trabalhar os dados obtidos • Disclaimer: Não houve nem acesso ilegítimo nem tentativa.
  • 46. Pesquisa em Portugal Passo 1: Recolha nmap -n -P0 -iL portugal.ranges -sS -p 443 --script=ssl-cert -v --max-hostgroup=16384 -T5 -oX portugal.certs ~1,5 dias Amazon EC2 FTW 
  • 47. Pesquisa em Portugal Passo 2: Pré-processamento • PERL para parsar o ficheiro XML do nmap • Output: .db file (PERL Storable) contendo certificados recolhidos
  • 48. # ./certstats.pl certs.storable.db 31557 certificates loaded 20545 self signed certificates 528 keys found of bit length 512 156 keys found of bit length 768 6 keys found of bit length 1020 21633 keys found of bit length 1024 2 keys found of bit length 1536 9041 keys found of bit length 2048 191 keys found of bit length 4096 sha1WithRSA keys: 187 ripemd160WithRSA keys: 1 sha512WithRSAEncryption keys: 5 sha256WithRSAEncryption keys: 74 md5WithRSAEncryption keys: 11053 dsaWithSHA1 keys: 19 sha1WithRSAEncryption keys: 20218
  • 49. Pesquisa em Portugal Passo 3: Processamento dos módulos • Imprimir os módulos dos certificados RSA 1024 para um ficheiro (PERL); # ./printmodulo.pl certs.storable.db > moduli.txt • NOTA: Apróx. 11k módulos repetidos (self-signed certs?): # wc -l moduli.txt ; sort -u moduli.txt | wc –l 21624 moduli.txt 10418
  • 50. Pesquisa em Portugal Passo 3: Processamento dos módulos (2) • Identificar factores primos comuns entre módulos; • Algoritmo de Euclides (gcd()) descobre-os em tempo polinomial; – Foram necessárias algumas optimizações ao gcd roubadas ao Dan Bernstein, ver post de Nadia Heninger no blog “Freedom to Tinker”; • PERL não chega  → C – #include <gmp.h>
  • 51. Pesquisa em Portugal Passo 3: Processamento dos módulos (3) • Programa em C que itera sobre uma lista de módulos e corre o “greatest common divisor” entre eles: # time ./mp uniqmoduli.txt > primefactors.txt real 3m1.798s user 2m47.286s sys 0m13.289s • Resultados: # sort -u primefactors.txt 10249387753767103692784797669342525230742191756836309921481183045956057 51800105024766018701797053149445419595902893031774418216435258304910660 7645204813147 11119395432118879179519544495595597502419989036052902267031102247273337 46132400213686002954086505407830524612102104573142722649728178279819107 7518647710597 12153720331412318215233052052111267605013844797673577393238753478791461 21527583795843913325300705869416126187666668809666225371151350505703162 5120636958709
  • 52. Pesquisa em Portugal Passo 4: Análise de Resultados • Com os factores primos obtidos, podemos identificar quais as chaves privadas que podemos gerar: # cat commonfactors.txt | ./factorkeys.pl certs.storable.db ips.storable.db
  • 53. “That’s a bingo!” 21624 1024 RSA certificates loaded CN=self-signed, CN=system generated, CN=0162052010005424 from ip x.x.x.x is factorable! expires: Dec 30 00:00:45 2010 GMT. EXTRACTED PUBLIC KEY: -----BEGIN RSA PUBLIC KEY----- MIGJAoGBAL81B1v8Jrk7k5Bc4qkGunksKoiYkMKcwcxuApD3wpp1J+2ziVMrBFcA nNuA+nMeshxgOMst6lKqXMTwgPxFPz4ks0kg9LC1c7f8jKqoe6icYsFE2FxUm6l4 Sxrfopbv+e3+1c9THOLkD/WXj624PB16IyMp1sqO6Y5IS08OWZnnAgMBAAE= -----END RSA PUBLIC KEY----- GENERATED **PRIVATE** KEY: -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC/NQdb/Ca5O5OQXOKpBrp5LCqImJDCnMHMbgKQ98KadSfts4lT KwRXAJzbgPpzHrIcYDjLLepSqlzE8ID8RT8+JLNJIPSwtXO3/IyqqHuonGLBRNhc VJupeEsa36KW7/nt/tXPUxzi5A/1l4+tuDwdeiMjKdbKjumOSEtPDlmZ5wIDAQAB AoGAWa9x6D95mmDLcmdfGZFCXhvNR4zoOaB1doITShQsf258cA5KV2xR+M0cxgjV cLHxMUYg3YyH4IZwRR/aIHoKkzZd+EPkP2zJWYkEKFLp+hgouozFeBfw37DZzt3h 6XZkA4GZr85ukGiMFV7tsSqa8wgxhIZjymx5Gj61YsAORyECQQDDsfa5PzwOHlzg ajaGO4WREt6uRV1iDI54FwiqxM2CwqgbrGuq1Cqh3+BEjUGA4j8F6bD4cV4roqGL oEMvShVbAkEA+iEDPbtbhy5lLwIYzQ2x1VtjbNWlMbW3fAsqsXIHc0y1vAKz53Te CpYq4pcojssMXVWwOFKHZr7S9JFzbNwXZQJAROP+ZgJDwvifW4UogqKrh4GsEI9s q1qeQNpi+7LiYfjiszNEh9O+2lN0oM1VVOjQpOU6notSSmwrEHsvi5M55wJBALSg 6HVI+rTpZTqIOh7CV/zqjSdINY5rWsCiU8dmwEicSdUm4oIwHDTq8rdFT42mxhwU yDg0KQGipjblXsRrQB0CQBDPavnn9i/dC8TzjTLr1mIHzrVSKKOZSjO9uK1YHEDK qdq23XbYpYlBiyQY/8jUjt3YIhSBVEDZVj8ElOfoxYQ= -----END RSA PRIVATE KEY-----
  • 54. Pesquisa em Portugal Resultados • 11 chaves RSA 1024 factorizáveis (em 21624); • Todas as chaves self-signed e com a data de expiração no passado; • Todas de uma única classe de dispositivo SSL VPN (Juniper).
  • 55. Dados interessantes Data de expiração Common Name (certificados gerados “em série”?) (provavelmente nº de série) expires: Dec 30 00:00:40 2010 GMT. CN=0162032010001816 expires: Dec 30 00:00:41 2010 GMT. CN=0162052010005424 expires: Dec 30 00:00:42 2010 GMT. CN=0162092010004308 expires: Dec 30 00:00:43 2010 GMT. CN=0162122008002400 expires: Dec 30 00:00:44 2010 GMT. CN=0162122008003338 expires: Dec 30 00:00:44 2010 GMT. CN=0164022008001154 expires: Dec 30 00:00:45 2010 GMT. CN=0164022008001728 expires: Dec 30 00:00:51 2010 GMT. CN=0164042008000522 expires: Dec 30 00:00:51 2010 GMT. CN=0164042008001376 expires: Dec 30 00:00:57 2010 GMT. CN=0164072009000933 expires: Dec 30 00:01:01 2010 GMT. CN=0164072009000933
  • 56. • Certificados expirados; • Self-signed; • O facto de a chave privada ser comprometida não é um grande problema a esta luz; • Apenas 11 certificados e de “baixo valor”.
  • 57. E o Cartão do Cidadão?
  • 58. Cartão do Cidadão • Chave RSA 1024 começa a parecer curta… – “As of 2011, new RSA keys generated by unclassified applications used by the U.S. Federal Government, should have a moduli of at least bit size 2048” – NIST SP800-57 – Talvez porque Cartões RSA 2048 são caros? • Onde são geradas as chaves? – No cartão? • Se sim, será o PRNG do cartão robusto? – Fora do cartão? • Se sim, será que o estado português tem uma cópia da minha chave privada? • Seria interessante repetir esta análise para chaves públicas do CC (Olá AMA, Multicert )
  • 60. Conclusões • Objectivos iniciais: – Aprender mais sobre o RSA; – Retirar-lhe a aura mística  • Pelo caminho: – Certificados SSL em Portugal relativamente seguros a este ataque – Cartão do cidadão é um alvo interessante para análise mais aprofundada: • Factores primos comuns? • Robustez face a timing/side channel attacks?
  • 61. Obrigado! Q&A? Luis Grangeia lgrangeia@sysvalue.com