RSA, A Vaca Sagrada do Infosec

1,309 views

Published on

A maioria dos informáticos, incluíndo os que trabalham em segurança, tem apenas noções básicas sobre criptografia assimétrica. A maioria de nós sabe utilizar os vários algoritmos, embora desconheça como operam. Nesta talk pretendo falar um pouco mais em detalhe sobre estes algoritmos, em particular o RSA. Irei falar sobre aplicações práticas de criptografia assimétrica (desde o SSL, passando pela Playstation 3 até ao Cartão do Cidadão), limitações dos algoritmos, ataques aos mesmos e falhas de implementação recentemente conhecidas. O objectivo principal desta talk é desmistificar esta "vaca sagrada" que é a criptografia assimétrica, demonstrando que não é uma panaceia: também tem falhas e limitações.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,309
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

RSA, A Vaca Sagrada do Infosec

  1. 1. Criptografia assimétrica RSA:A "vaca sagrada" do infosec Luis Grangeia, SysValue lgrangeia@sysvalue.com
  2. 2. Notas soltas sobre:História da Criptografia Moderna História da Computação
  3. 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. 4. Alan Turing• “Pai” da teoria da computação;• Matemático• Criptógrafo: – Responsável por quebrar a cifra Enigma
  5. 5. Problema:Distribuição de Chaves
  6. 6. 1976 – Diffie-HellmanRalph MerkleMartin HellmanWhitfield Diffie
  7. 7. 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
  8. 8. 1978 - RSAAdi ShamirRon RivestLeonard Adleman
  9. 9. RSA• Algoritmo de criptografia de chave pública;• Permite cifra e assinatura (fornece confidencialidade, integridade e não-repúdio);
  10. 10. • Para saber mais: – The Code Book – Simon Singh – 1999 – Contém desafios 
  11. 11. História pessoal
  12. 12. Codebits V Security Quiz último “nível”“key”:-----BEGIN PUBLIC KEY-----MD4wDQYJKoZIhvcNAQEBBQADLQAwKgIjBj8NqV9VQV2iQgEZrI75OHukFe5yMEwUkrAs6KGRuMCNhMUCAwEAAQ==-----END PUBLIC KEY-----“Ciphertext”:ArQiAjIwhpFedXJD2g14PPD11XD4UMOB8NAqDWs4sTHGOLs= E agora?
  13. 13. Codebits V Security Quiz último “nível”Rsa size: 3565537 → Expoente público47400378883230338232775581390792470724641097776632053645187932911870219271898236101 → Módulo Solução: Factorizar Módulo, com factores gerar chave privada (usei applet java, posteriormente “msieve”)
  14. 14. Codebits V Security Quiz último “nível” http://1.41.x1.sl.pt
  15. 15. http://1.41.x1.sl.pt
  16. 16. “If it bleeds, we can kill it.”
  17. 17. RSA: Introdução
  18. 18. 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
  19. 19. RSA: O que é (2) – Trusted Platform Module (TPM Chip) em PCs 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)
  20. 20. RSA: Algoritmo(com implementação em Excel )
  21. 21. Noções Elementares
  22. 22. RSA: Geração de Chaves(simplificada)
  23. 23. RSA: Geração de ChavesExemplo
  24. 24. RSA: Encriptação / Decriptação
  25. 25. RSA• Foram feitas simplificações/omissões;• Falta o padding scheme (PKCS #1);• A ideia geral é esta…
  26. 26. RSAProblemas / Ataques
  27. 27. RSA: Problemas / Ataques1. Factorização do módulo
  28. 28. Factorização do módulo Source: crypto.stackexchange.com
  29. 29. 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
  30. 30. Factorização do módulo (3)“If we are optimistic, it may be possible to factor a 1024-bit RSAmodulus within the next decade by means of an academiceffort on the same limited scale as the effort presented here.From a practical security point of view this is not a big deal, giventhat standards recommend phasing out such moduli by the endof the year 2010.”“Another conclusion from our work is that we can confidently saythat if we restrict ourselves to an open community, academiceffort as ours and unless something dramatic happens infactoring, we will not be able to factor a 1024-bit RSA moduluswithin the next five years. After that, all bets are off.” Factorization of a 768-bit RSA modulus 18 de Fevereiro, 2010
  31. 31. “The NSA Is Building the Country’s BiggestSpy Center (Watch What You Say)” - Wired, 15 de Março de 2012
  32. 32. E RSA 2048?
  33. 33. RSA: Problemas / Ataques2. 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).
  34. 34. Chaves Fracas?PRNG’s Fracos!
  35. 35. Escolha de factores primos
  36. 36. O que acontece se duas chaves partilharemfactores primos?
  37. 37. 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):
  38. 38. Aleatoriedade é fundamental (2)• Pesquisa recente (Fevereiro de 2012):“More worrisome is that among the 4.7 milliondistinct 1024-bit RSA moduli that we hadoriginally collected, 12720 have a single largeprime factor in common.” - Ron was wrong, Whit is right, http://eprint.iacr.org/2012/064.pdf
  39. 39. Security Metrics Ou“If you can’t measure it, you can’t manage it”.
  40. 40. 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.
  41. 41. Pesquisa em PortugalPasso 1: Recolhanmap -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 
  42. 42. Pesquisa em PortugalPasso 2: Pré-processamento• PERL para parsar o ficheiro XML do nmap• Output: .db file (PERL Storable) contendo certificados recolhidos
  43. 43. # ./certstats.pl certs.storable.db31557 certificates loaded20545 self signed certificates528 keys found of bit length 512156 keys found of bit length 7686 keys found of bit length 102021633 keys found of bit length 10242 keys found of bit length 15369041 keys found of bit length 2048191 keys found of bit length 4096sha1WithRSA keys: 187ripemd160WithRSA keys: 1sha512WithRSAEncryption keys: 5sha256WithRSAEncryption keys: 74md5WithRSAEncryption keys: 11053dsaWithSHA1 keys: 19sha1WithRSAEncryption keys: 20218
  44. 44. Pesquisa em PortugalPasso 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
  45. 45. Pesquisa em PortugalPasso 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>
  46. 46. Pesquisa em PortugalPasso 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
  47. 47. Pesquisa em PortugalPasso 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
  48. 48. “That’s a bingo!”21624 1024 RSA certificates loadedCN=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+2ziVMrBFcAnNuA+nMeshxgOMst6lKqXMTwgPxFPz4ks0kg9LC1c7f8jKqoe6icYsFE2FxUm6l4Sxrfopbv+e3+1c9THOLkD/WXj624PB16IyMp1sqO6Y5IS08OWZnnAgMBAAE=-----END RSA PUBLIC KEY-----GENERATED **PRIVATE** KEY:-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQC/NQdb/Ca5O5OQXOKpBrp5LCqImJDCnMHMbgKQ98KadSfts4lTKwRXAJzbgPpzHrIcYDjLLepSqlzE8ID8RT8+JLNJIPSwtXO3/IyqqHuonGLBRNhcVJupeEsa36KW7/nt/tXPUxzi5A/1l4+tuDwdeiMjKdbKjumOSEtPDlmZ5wIDAQABAoGAWa9x6D95mmDLcmdfGZFCXhvNR4zoOaB1doITShQsf258cA5KV2xR+M0cxgjVcLHxMUYg3YyH4IZwRR/aIHoKkzZd+EPkP2zJWYkEKFLp+hgouozFeBfw37DZzt3h6XZkA4GZr85ukGiMFV7tsSqa8wgxhIZjymx5Gj61YsAORyECQQDDsfa5PzwOHlzgajaGO4WREt6uRV1iDI54FwiqxM2CwqgbrGuq1Cqh3+BEjUGA4j8F6bD4cV4roqGLoEMvShVbAkEA+iEDPbtbhy5lLwIYzQ2x1VtjbNWlMbW3fAsqsXIHc0y1vAKz53TeCpYq4pcojssMXVWwOFKHZr7S9JFzbNwXZQJAROP+ZgJDwvifW4UogqKrh4GsEI9sq1qeQNpi+7LiYfjiszNEh9O+2lN0oM1VVOjQpOU6notSSmwrEHsvi5M55wJBALSg6HVI+rTpZTqIOh7CV/zqjSdINY5rWsCiU8dmwEicSdUm4oIwHDTq8rdFT42mxhwUyDg0KQGipjblXsRrQB0CQBDPavnn9i/dC8TzjTLr1mIHzrVSKKOZSjO9uK1YHEDKqdq23XbYpYlBiyQY/8jUjt3YIhSBVEDZVj8ElOfoxYQ=-----END RSA PRIVATE KEY-----
  49. 49. Pesquisa em PortugalResultados• 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).
  50. 50. Dados interessantesData de expiração Common Name(certificados gerados “em série”?) (provavelmente nº de série)expires: Dec 30 00:00:40 2010 GMT. CN=0162032010001816expires: Dec 30 00:00:41 2010 GMT. CN=0162052010005424expires: Dec 30 00:00:42 2010 GMT. CN=0162092010004308expires: Dec 30 00:00:43 2010 GMT. CN=0162122008002400expires: Dec 30 00:00:44 2010 GMT. CN=0162122008003338expires: Dec 30 00:00:44 2010 GMT. CN=0164022008001154expires: Dec 30 00:00:45 2010 GMT. CN=0164022008001728expires: Dec 30 00:00:51 2010 GMT. CN=0164042008000522expires: Dec 30 00:00:51 2010 GMT. CN=0164042008001376expires: Dec 30 00:00:57 2010 GMT. CN=0164072009000933expires: Dec 30 00:01:01 2010 GMT. CN=0164072009000933
  51. 51. • 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”.
  52. 52. E o Cartão do Cidadão?
  53. 53. 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 )
  54. 54. Conclusões
  55. 55. 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?
  56. 56. Obrigado! Q&A? Luis Grangeialgrangeia@sysvalue.com

×