1 / 27

Seminário de Informática Teórica

Seminário de Informática Teórica. Henrique Borges Alencar Siqueira. Motivação. Geradores randômicos. Blocos fundamentais da Segurança. Roteiro. Motivação Algoritmos de criptografia Geradores pseudo-randômicos Explorando a falha Requisitos para geradores seguros Corrigindo a falha

kolya
Download Presentation

Seminário de Informática Teórica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seminário de Informática Teórica Henrique Borges Alencar Siqueira

  2. Motivação

  3. Geradores randômicos Blocos fundamentais da Segurança

  4. Roteiro • Motivação • Algoritmos de criptografia • Geradores pseudo-randômicos • Explorando a falha • Requisitos para geradores seguros • Corrigindo a falha • Conclusão

  5. Algoritmos de criptografia • Iludem tentativas de análise de padrões e ataques de força-bruta • Assumem que existe uma fonte randômica (não reproduzível) de bits para gerar: • Números primos • Chaves públicas e privadas

  6. Algoritmos de criptografia • Falham quando não existe uma fonte randômica segura: • Netscape implementation of SSL • I. Goldberg and D. Wagner. Randomness and the Netscape browser. Dr Dobb’s, pages 66–70, January 1996. • Java session-ids • Z. Gutterman and D. Malkhi. Hold your sessions: An attack on Java session-id generation. In A. J. Menezes, editor, CT-RSA, LNCS vol. 3376, pages 44–57. Springer, February 2005.

  7. Roteiro • Motivação • Algoritmos de criptografia • Geradores pseudo-randômicos • Explorando a falha • Requisitos para geradores seguros • Corrigindo a falha • Conclusão

  8. Geradores pseudo-randômicos • Ou “Deterministic Random Bit Generator” • Todos os geradores randômicos por software

  9. Geradores pseudo-randômicos java.util.Random Número “randômico” Função geradora One-way Hash Solicitação r.nextInt() seed = (seed * multiplier + addend) & mask return seed >> 16 Hora atual Estado interno Seed: (Fontes de entropia)

  10. Geradores pseudo-randômicos • Mesmas fontes (seeds) + mesmo algoritmo = mesma seqüência de números • java.util.Random • long seed = 0; • Random r = new Random(seed); • assert (r.nextInt() == -1155484576);

  11. Roteiro • Motivação • Algoritmos de criptografia • Geradores pseudo-randômicos • Explorando a falha • Requisitos para geradores seguros • Corrigindo a falha • Conclusão

  12. Explorando a falha • OpenWRT • Implementação do Linux para roteadores wireless • Provê • SSL termination • SSH server • Wireless encryption • A segurança de todos estes serviços depende do gerador pseudo-randômico

  13. Explorando a falha • OpenWRT • Fontes de entropia (seeds) do gerador randômico (Março de 2006) • Hora de inicialização • Recebimento de pacotes desde a inicialização • Fontes observáveis!!! • Pacotes em rede wireless • Ambiente facilmente reproduzido

  14. Explorando a falha Código Java: Usando RSA com gerador randômico ruim

  15. Roteiro • Motivação • Algoritmos de criptografia • Geradores pseudo-randômicos • Explorando a falha • Requisitos para geradores seguros • Corrigindo a falha • Conclusão

  16. Requisitos para geradores seguros • Pseudorandomness • A saída do gerador não pode ser prevista por um observador externo • Provê segurança suficiente para adversários sem acesso ao estado interno do gerador • Obtida usando fontes de entropia (seeds) randômicas (não reproduzíveis)

  17. Requisitos para geradores seguros • Forward security • Saber o estado interno atual não implica descobrir saídas anteriores • Obtida usando funções one-way (injetoras) para a geração de números randômicos

  18. Requisitos para geradores seguros • Break-in recovery / backward security • Saber o estado interno atual não implica descobrir saídas futuras • Obtida usando re-seed periódico (re-alimentação)

  19. Roteiro • Motivação • Algoritmos de criptografia • Geradores pseudo-randômicos • Explorando a falha • Requisitos para geradores seguros • Corrigindo a falha • Conclusão

  20. Corrigindo a falha • Usar fontes de entropia secretas e com a segurança desejada • Seeds com 256 bits para segurança de 256 bits • Usar múltiplas fontes de entropia real • Hora atual, teclas digitadas, ruído do microfone, giro do HD, ... • Re-seed periódico

  21. Corrigindo a falha • OpenWRT: Fontes de entropia • Hora de inicialização • Recebimento de pacotes desde a inicialização

  22. Corrigindo a falha • OpenWRT: Fontes de entropia • Persistir o estado do gerador randômico ao desligar o S.O. • Re-seed • Horário de (re) inicialização • Recebimento de pacotes

  23. Corrigindo a falha • Código Java: Fontes de entropia • Timestamp

  24. Corrigindo a falha • Código Java: Fontes de entropia • Usar a implementação nativa do gerador randômico (que tem seeds melhores) • Usar re-seed periódico com outras fontes de entropia

  25. Roteiro • Motivação • Algoritmos de criptografia • Geradores pseudo-randômicos • Explorando a falha • Requisitos para geradores seguros • Corrigindo a falha • Conclusão

  26. Conclusão • Um atacante sofisticado pode descobrir ser mais fácil reproduzir oambiente que gerou os dados e procurar noconjunto de possibilidades geradas do que em todo o espaço amostral

  27. Dúvidas? Obrigado

More Related