seminário de informática teórica

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

Upload: kolya

Post on 09-Jan-2016

27 views

Category:

Documents


2 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Seminário de Informática Teórica

Seminário de Informática Seminário de Informática TeóricaTeórica

Henrique Borges Alencar Henrique Borges Alencar SiqueiraSiqueira

Page 2: Seminário de Informática Teórica

MotivaçãoMotivação

Page 3: Seminário de Informática Teórica

Geradores randômicosGeradores randômicos

Blocos fundamentais da Blocos fundamentais da Segurança Segurança

Page 4: Seminário de Informática Teórica

RoteiroRoteiro

MotivaçãoMotivação Algoritmos de criptografiaAlgoritmos de criptografia Geradores pseudo-randômicosGeradores pseudo-randômicos Explorando a falhaExplorando a falha Requisitos para geradores segurosRequisitos para geradores seguros Corrigindo a falhaCorrigindo a falha ConclusãoConclusão

Page 5: Seminário de Informática Teórica

Algoritmos de criptografiaAlgoritmos de criptografia

Iludem tentativas de análise de Iludem tentativas de análise de padrões e ataques de força-brutapadrões e ataques de força-bruta

Assumem que existe uma fonte Assumem que existe uma fonte randômica (não reproduzível) de bits randômica (não reproduzível) de bits para gerar:para gerar: Números primosNúmeros primos Chaves públicas e privadasChaves públicas e privadas

Page 6: Seminário de Informática Teórica

Algoritmos de criptografiaAlgoritmos de criptografia

Falham quando não existe uma fonte Falham quando não existe uma fonte randômica segura:randômica segura: Netscape implementation of SSLNetscape implementation of SSL

I. Goldberg and D. Wagner. Randomness and the Netscape I. Goldberg and D. Wagner. Randomness and the Netscape browser. Dr Dobb’s, pages 66–70, January 1996.browser. Dr Dobb’s, pages 66–70, January 1996.

Java session-idsJava session-ids Z. Gutterman and D. Malkhi. Hold your sessions: An attack Z. Gutterman and D. Malkhi. Hold your sessions: An attack

on Java session-id generation. In A. J. Menezes, editor, CT-on Java session-id generation. In A. J. Menezes, editor, CT-RSA, LNCS vol. 3376, pages 44–57. Springer, February RSA, LNCS vol. 3376, pages 44–57. Springer, February 2005.2005.

Page 7: Seminário de Informática Teórica

RoteiroRoteiro

MotivaçãoMotivação Algoritmos de criptografiaAlgoritmos de criptografia Geradores pseudo-randômicosGeradores pseudo-randômicos Explorando a falhaExplorando a falha Requisitos para geradores segurosRequisitos para geradores seguros Corrigindo a falhaCorrigindo a falha ConclusãoConclusão

Page 8: Seminário de Informática Teórica

Geradores pseudo-Geradores pseudo-randômicosrandômicos

Ou “Deterministic Random Bit Ou “Deterministic Random Bit Generator”Generator”

Todos os geradores randômicos por Todos os geradores randômicos por softwaresoftware

Page 9: Seminário de Informática Teórica

r.nextInt()Solicitação Função geradoraOne-way

Hash

Hora atual

Geradores pseudo-Geradores pseudo-randômicosrandômicos

Seed:

Número “randômico”

Estado interno

java.util.Random

(Fontes de entropia)

seed = (seed * multiplier + addend) & maskreturn seed >> 16

Page 10: Seminário de Informática Teórica

Geradores pseudo-Geradores pseudo-randômicosrandômicos

Mesmas fontes (seeds) + mesmo Mesmas fontes (seeds) + mesmo algoritmo = mesma seqüência de algoritmo = mesma seqüência de númerosnúmeros

java.util.Randomjava.util.Random long seed = 0;long seed = 0; Random r = new Random(seed);Random r = new Random(seed); assert (r.nextInt() == -1155484576);assert (r.nextInt() == -1155484576);

Page 11: Seminário de Informática Teórica

RoteiroRoteiro

MotivaçãoMotivação Algoritmos de criptografiaAlgoritmos de criptografia Geradores pseudo-randômicosGeradores pseudo-randômicos Explorando a falhaExplorando a falha Requisitos para geradores segurosRequisitos para geradores seguros Corrigindo a falhaCorrigindo a falha ConclusãoConclusão

Page 12: Seminário de Informática Teórica

Explorando a falhaExplorando a falha

OpenWRTOpenWRT Implementação do Linux para Implementação do Linux para

roteadores wirelessroteadores wireless Provê

SSL termination SSH server Wireless encryption

A segurança de todos estes serviços depende do gerador pseudo-randômico

Page 13: Seminário de Informática Teórica

Explorando a falhaExplorando a falha

OpenWRTOpenWRT Fontes de entropia (seeds) do gerador Fontes de entropia (seeds) do gerador

randômico (Março de 2006)randômico (Março de 2006) Hora de inicializaçãoHora de inicialização Recebimento de pacotes desde a Recebimento de pacotes desde a

inicializaçãoinicialização Fontes observáveis!!!Fontes observáveis!!!

Pacotes em rede Pacotes em rede wirelesswireless Ambiente facilmente reproduzidoAmbiente facilmente reproduzido

Page 14: Seminário de Informática Teórica

Explorando a falhaExplorando a falha

Código Java: Usando RSA com Código Java: Usando RSA com gerador randômico ruimgerador randômico ruim

Page 15: Seminário de Informática Teórica

RoteiroRoteiro

MotivaçãoMotivação Algoritmos de criptografiaAlgoritmos de criptografia Geradores pseudo-randômicosGeradores pseudo-randômicos Explorando a falhaExplorando a falha Requisitos para geradores segurosRequisitos para geradores seguros Corrigindo a falhaCorrigindo a falha ConclusãoConclusão

Page 16: Seminário de Informática Teórica

Requisitos para geradores Requisitos para geradores segurosseguros

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)

Page 17: Seminário de Informática Teórica

Requisitos para geradores Requisitos para geradores segurosseguros

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

Page 18: Seminário de Informática Teórica

Requisitos para geradores Requisitos para geradores segurosseguros

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)

Page 19: Seminário de Informática Teórica

RoteiroRoteiro

MotivaçãoMotivação Algoritmos de criptografiaAlgoritmos de criptografia Geradores pseudo-randômicosGeradores pseudo-randômicos Explorando a falhaExplorando a falha Requisitos para geradores segurosRequisitos para geradores seguros Corrigindo a falhaCorrigindo a falha ConclusãoConclusão

Page 20: Seminário de Informática Teórica

Corrigindo a falhaCorrigindo a falha

Usar fontes de entropia secretas e Usar fontes de entropia secretas e com a segurança desejadacom a segurança desejada Seeds com 256 bits para segurança de Seeds com 256 bits para segurança de

256 bits256 bits Usar múltiplas fontes de entropia realUsar múltiplas fontes de entropia real

Hora atual, teclas digitadas, ruído do Hora atual, teclas digitadas, ruído do microfone, giro do HD, ...microfone, giro do HD, ...

Re-seed periódicoRe-seed periódico

Page 21: Seminário de Informática Teórica

Corrigindo a falhaCorrigindo a falha

OpenWRT: Fontes de entropiaOpenWRT: Fontes de entropia Hora de inicializaçãoHora de inicialização Recebimento de pacotes desde a Recebimento de pacotes desde a

inicializaçãoinicialização

Page 22: Seminário de Informática Teórica

Corrigindo a falhaCorrigindo a falha

OpenWRT: Fontes de entropiaOpenWRT: Fontes de entropia Persistir o estado do gerador randômico Persistir o estado do gerador randômico

ao desligar o S.O.ao desligar o S.O. Re-seedRe-seed

Horário de (re) inicializaçãoHorário de (re) inicialização Recebimento de pacotesRecebimento de pacotes

Page 23: Seminário de Informática Teórica

Corrigindo a falhaCorrigindo a falha

Código Java: Fontes de entropiaCódigo Java: Fontes de entropia TimestampTimestamp

Page 24: Seminário de Informática Teórica

Corrigindo a falhaCorrigindo a falha

Código Java: Fontes de entropiaCódigo Java: Fontes de entropia Usar a implementação nativa do gerador Usar a implementação nativa do gerador

randômico (que tem seeds melhores)randômico (que tem seeds melhores) Usar Usar re-seedre-seed periódico com outras periódico com outras

fontes de entropiafontes de entropia

Page 25: Seminário de Informática Teórica

RoteiroRoteiro

MotivaçãoMotivação Algoritmos de criptografiaAlgoritmos de criptografia Geradores pseudo-randômicosGeradores pseudo-randômicos Explorando a falhaExplorando a falha Requisitos para geradores segurosRequisitos para geradores seguros Corrigindo a falhaCorrigindo a falha ConclusãoConclusão

Page 26: Seminário de Informática Teórica

ConclusãoConclusão

Um atacante sofisticado pode Um atacante sofisticado pode descobrir ser mais fácil descobrir ser mais fácil reproduzir oreproduzir o ambienteambiente que gerou os dados e que gerou os dados e procurar noprocurar no conjunto de conjunto de possibilidades geradas do que em possibilidades geradas do que em todo o espaço amostraltodo o espaço amostral

Page 27: Seminário de Informática Teórica

Dúvidas?Dúvidas?

ObrigadoObrigado