GBC083 - Segurança da Informação Aula 3 - Pseudo-aleatoriedade. 29 de Março de 2016

Documentos relacionados
GBC083 - Segurança da Informação Aula 3 - Sigilo Computacional

Com Pseudo-OTP é possível superar a primeira limitação Mas ainda tem a segunda, como evitá-la?

Criptografia. Aula 3: Segurança Computacional. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Aula 5 - Integridade e Criptografia autenticada. 9 de Maio de 2016

GBC083 - Segurança da Informação Aula 2 - Sigilo Perfeito. 28 de Março de 2016

Estatística e Modelos Probabilísticos - COE241

Estatística e Modelos Probabilísticos - COE241

Modelagem e Análise de Sistemas - COS767

Análise de dados em Fisica de Particulas

Introdução aos Números Pseudo-aleatórios. Profa. Dra. Soraia Raupp Musse

Estatística e Modelos Probabilísticos - COE241

Estatística e Modelos Probabilísticos - COE241

Avaliação do custo/benefício da adoção de autômatos celulares na geração de números pseudoaleatórios no Linux

Aula 5 - Integridade e Criptografia autenticada. 10 de Maio de 2016

O ALEATÓRIO EM COMPUTAÇÃO. Por Diogo Anderson Integrante do Grupo PET Computação

Estudo comparativo de geração de números aleatórios

Conceito. HASH são caminhos de mão única (funções matemáticas) que são utilizados para se criar códigos.

Criptografia. Aula 4: Cifras simétricas a partir de cifras por blocos. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Aula 7. Aula de hoje. Aula passada

Segurança e Auditoria de Sistemas. Confiança Mútua Assinatura Digital Certificado Digital

Introdução a Computação

Monte Carlo Method. Peter Frank Perroni. December 1, Monte Carlo Simulation

Métodos de Monte Carlo

AGT0001 Algoritmos Aula 01 O Computador

Aula 7. Ivan Sendin. 13 de setembro de FACOM - Universidade Federal de Uberlândia SEG-7.

Noções de segurança ainda mais fortes

Utilização de testes estatísticos para verificação de eficácia de algoritmos criptográficos

Sexta Lista: Geração de Números Pseudo-Aleatórios e Método de Monte Carlo

Geração e avaliação de números pseudo-aleatórios para aplicações criptográficas

6 Inserção Seletiva de Nulos

Sistemas Aleatórios. Um sistema é aleatório quando seu estado futuro só pode ser conhecido. jogar uma moeda ou um dado. decaimento de uma partícula

COMO FUNCIONA A SIMULAÇÃO. Capítulo 2 - Aula 2. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE

Aula 11. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca

Arquitetura e Organização de Computadores

Simulação: Pseudoaleatoriedade, um estudo sobre o método do meio do quadrado

Introdução à Programação. Apresentação da Disciplina e Conceitos Básicos de Computadores

Aula 5. Como gerar amostras de uma distribuição qualquer a partir de sua CDF e de um gerador de números aleatórios?

Noções de Simulação. Ciências Contábeis - FEA - Noturno. 2 o Semestre MAE0219 (IME-USP) Noções de Simulação 2 o Semestre / 23

Avaliando a Aleatoriedade do Gerador de Números Aleatórios em um Smart Card Comercial

Geração de números aleatórios verdadeiros

Prof. Sandro Wambier

Entrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -

Sistemas Operacionais. Entrada/Saída

Entrada e Saída e Dispositivos

UTILIZAÇÃO DE HASH CRIPTOGRAFADA PARA TRANSPORTE DE MENSAGENS (MAC), NO USO DO HMAC

Simulações Computacionais de Sistemas Complexos

Avaliação e Desempenho Aula 1 - Simulação

SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS TECNÓLOGO EM REDES. Professor Eduardo Maroñas Monks

Criptografia. Criptografia de Chave Pública. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Sistemas de Entrada e Saída

SSC510 Arquitetura de Computadores 1ª AULA

Programação I Aula 6 Números pseudo-aleatórios

Disciplina: Sistemas Operacionais

Discos. Hardware Tadeu Ferreira Oliveira -

Introdução a Tecnologia da Informação

Implementação Blockchain ID,hash(ID -1), dados,... Imutabilidade(?) How To Time-Stamp a Digital Document - Haber/Stornetta

INTRODUÇÃO AOS SISTEMAS LÓGICOS INTRODUÇÃO

Representando e Processando Informção

CONCEITUAÇÃO CONCEITOS

Engenharia Civil. Introdução à Programação

Programação I Aula 6 Números pseudo-aleatórios Pedro Vasconcelos DCC/FCUP

Informática básica. Professor: Francisco Ary

Informática básica. Professor: Francisco Ary

Sistemas de Entrada e Saída

Segurança Informática em Redes e Sistemas

Geração de números uniformes

Ref: H.Gould e J. Tobochnik. Para integrais em uma dimensão as regras do trapezóide e de Simpson são

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 19. Sistema de Entrada/Saída

Computação L. Apresentação da Disciplina e Conceitos Básicos de Computadores

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

SSC0640 Sistemas Operacionais I

Computadores e Programação (DCC/UFRJ)

Métodos para geração de variáveis aleatórias

Algoritmos Computacionais

ORGANIZAÇÃO DE COMPUTADORES

Funções Geradoras de Variáveis Aleatórias. Simulação Discreta de Sistemas - Prof. Paulo Freitas - UFSC/CTC/INE

Informática I. Aula 7. Aula 7-17/09/2007 1

Programação. Module Introduction. Cap. 1 Fundamentos de Computadores

13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II

1. Conceitos Básicos de Computação

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

ESTATÍSTICA COMPUTACIONAL

Algoritmos e Lógica de Programação Componentes e Arquitetura

Gerência de Entrada e Saída

Cap. 12 Gerência de Dispositivos 1

SO: Introdução e Estrutura. Sistemas Operacionais Flavio Figueiredo (

MC-102 Aula 01. Instituto de Computação Unicamp

Segurança e Auditoria de Sistemas. Autenticação

Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio

Entropia, Entropia Relativa

Os computadores ditigais podem ser classificados em 5 grupos distintos:

Aula 2 - Programação de Computadores - CI208 1/21

Análise empírica de algoritmos de ordenação

CAPÍTULO XI TEMPORIZAÇÃO DO SISTEMA

Sistemas de Entrada e Saída

Criptografia Pós-Quântica Corretores de Erros

Infra-Estrutura de Software

Transcrição:

GBC083 - Segurança da Informação Aula 3 - Pseudo-aleatoriedade 29 de Março de 2016

Geração de chaves aleatórias Ao descrever o algoritmo OTP, assumimos que temos acesso a bits uniformemente aleatórios Onde encontrar esses números? Geração de número aleatórios e pseudo-aleatórios

O que significa algo aleatório? O que significa uniforme? Qual string é aleatória? 01010101010101010101 01011111010011100110 00000000000000000001 Se geramos string uniforme, cada uma dessas tem probabilidade igual de aparecer

O que significa algo aleatório? Aleatoriedade não é propriedade de uma string mas de uma distribuição Uma distribuição em string de n bits é uma função D : {0, 1} n [0, 1] tal que x D(x) = 1 A distribuição uniforme Un é tal que P(U n = x) = 2 n para todo x {0, 1} n

O que significa algo pseudo-aleatório? Informal: algo que não pode ser diferenciado de algo uniforme Pseudo-aleatoriedade é uma propriedade de uma distribuição

Pseudo-aleatoriedade Escolher uma distribuição D de string de n bits x D significa amostrar x de acordo com D Historicamente, D era considerado pseudo-aleatório se passava por um conjunto extensivo de testes estatísticos Px D (1o. bit de x é 1) 0.5 Px D (paridade de x é 1) 0.5 Px D (A i (x) = 1) P x Un (A i (x) = 1) para i 1... 20

Pseudo-aleatoriedade Mas testes não representa todo cenário de atacantes Testes de atacantes são imprevisíveis Definição criptográfica de pseudo-aleatoridade: D é pseudo-aleatório se passa por todos testes estatísticos eficientes

Pseudo-aleatoriedade concreta Seja D uma distribuição de string de n bits D é (t, ɛ)-pseudo aleatória se para todo A rodando em tempo t, P x D (A(x) = 1) P x Un (A(x) = 1) ɛ

Pseudo-aleatoriedade assintótica Parâmetro de segurança n e polinomial p Seja D n uma distribuição sobre strings de p(n) bits Pseudo-aleatoriedade é uma propriedade de uma sequência de distribuições {D n } = {D 1, D 2,...}

Pseudo-aleatoriedade assintótica {D n }, onde D n é uma distribuição sobre strings de p(n) bits, é pseudo-aleatória se para todos atacantes TPP A existe uma função negligível ɛ tal que P x Dn (A(x) = 1) P x Up(n) (A(x) = 1) ɛ(n)

Geradores Pseudo-Aleatórios (GPA) Um GPA é um algoritmo eficiente e determinístico que transforma uma semente pequena e uniforme em uma sequência mais longa e pseudo-aleatória Útil quando temos uma quantidade pequena de bits aleatórios e queremos muitos bits pseudo-aleatórios Em inglês: Pseudo-Random Number Generator (PNRG)

Geradores Pseudo-Aleatórios (GPA) Seja G um algoritmo polinomial determinístico G é expansível se G(x) = p( x ) > x semente com n bits G saída com 2 n bits

Geradores Pseudo-Aleatórios (GPA) Uma função expansível G define um conjunto de distribuições D = {D 1, D 2, D..., D p(n),...} onde D p(n) é distribuição em strings de p(n) > x = n bits definida ao escolher x U n (semente) e usar o GPA G(x) Dp(n) é definida formalmente por P Dp(n) (y) = P Un ({x : G(x) = y}) = P Un (x) = x:g(x)=y x:g(x)=y 2 n = {x : G(x) = y} /2 n

Geradores Pseudo-Aleatórios (GPA) Seja G um algoritmo polinomial determinístico G é expansível: G(x) = p( x ) > x G é um gerador pseudo-aleatório (GPA) se {D n } for pseudo-aleatório

Geradores Pseudo-Aleatórios (GPA) G é um gerador pseudo-aleatório se {D n } for pseudo-aleatório Ou seja, para qualquer atacante polinomial A existe função negligível ɛ tal que P x Dn (A(G(x)) = 1) P y Up(n) (A(y) = 1) ɛ(n) Nenhum atacante eficiente A consegue discernir se é uma dada G(x) ou se é de fato uma string uniforme y

Existem Geradores Pseudo-Aleatórios (GPA)? Não se sabe ainda... :-( Na prática, assume-se que algumas funções G são GPA Existem GPA se usarmos outras definições mais fracas

Diferença entre um Gerador Aleatório e um Pseudo-Aleatório Supor que o gerador pseudo aleatório (GPA) dobra o tamanho da semente: l(n) = 2n Tamanho de espaço de strings binárias aleatórias com tamanho 2n: 2 2n Tamanho do maior espaço que o GPA pode alcançar: 2 n O GPA pode gerar apenas uma fração de 1 2 do espaço n verdadeiramente aleatório.

Ataque de força-bruta a um GPA (parte 1) Um atacante D quer usar força-bruta para verificar se w {0, 1} n é aleatória ou pseudo-aleatória de um GPA G( ) com l(n) = 2n Atacante gera cada y = G(s {0, 1} n ) Atacante D, quando aplicado a G, retorna 1 se bem sucedido: D(G(s)) = 1

Ataque de força-bruta a um GPA (parte 2) Se w foi gerado por G( ) então atacante encontra w = y com probabilidade 1, ou seja, P(D(G(s)) = 1) = 1 Se w = r foi gerado tal que r U 2n ( ), então a chance de r G( ) é: Então a margem de sucesso é P(D(r) = 1) = 1 2 n P(D(r) = 1) P(D(G(s)) = 1) = 1 2 n > ɛ(n)

Geração de números aleatórios na prática Dois passos Continuamente manter uma reserva (um pool ) de alta-entropia, ou seja, dados imprevisíveis Quando bits aleatórios são requisitados, processar esses dados para gerar uma sequência de bits uniforme e independente Detalhes dependem do sistema Linux: SHA1 ios: algoritmo de Yarrow (milefólio) FreeBSD: Fortuna Bibliotecas de criptografia

Passo 1 eventos coletados (Linux) Coletar uma reserva (pool) de dados de alta entropia de até 4096 bits /proc/sys/kernel/random/entropy avail índice de aleatoriedade no pool de entrada Entradas externas: Atrasos entre eventos de redes de computadores Tempos de acesso a disco rígido Medições de tempo de interrupções Movimentos de teclado e mouse Hardware de geração de números aleatórios

Passo 1 processando eventos (Linux) Para cada evento de entrada, processar 3 números de 32 bits: num: número identificador do evento (se teclado, keycode) Teclado: entropia máxima é 8 bits Mouse: 12 bits Disco rígido: 3 bits Interrupção: 4 bits cycle: conteúdo do registrador de contagem de ciclos da CPU 14.8 bits de entropia jiffies: contador do kernel para o número de interrupções de relógio desde último boot 3.4 bits de entropia Dados de The Linux Pseudorandom Number Generator Revisited http://eprint.iacr.org/2012/251.pdf Produz em geral menos que 30 bits de entropia (aleatoriedade)

Passo 2 (Linux) Passo 2: processar pool de dados de alta-entropia. Mantém 2 pools de até 1024 bits aleatórios de saída: /dev/random bloqueia na falta de aleatoriedade /dev/urandom ou get random bytes() (linux/random.h) continua produção de números pseudo-aleatórios http://git.kernel.org/cgit/linux/kernel/git/ torvalds/linux.git/tree/drivers/char/random.c Misturar dados recebidos com pool atual usando a função CRC: Rápido e seguro se: 1) aleatoriedade não vem de um atacante; 2) difícil de atacante externo medir. Obter número aleatório com uma função hash SHA1 do pool de bits aleatórios Uniformemente aleatório se a quantidade de bits gerada for menor que a entropia do pool Reduz número de bits de entropia disponíveis ao fornecer bits aleatórios

Histórias reais sobre aleatoriedade Padrão NIST SP800-90A Dual EC DRBG (baixar) Histórias de horror: https://nakedsecurity.sophos.com/2011/11/07/ randomness-in-cryptography-the-devils-in-the-details/ NSA backdoor in the Dual EC DRBG PRNG The many flaws in DUAL EC DRBG PRNG

Próximos assuntos Pseudo One-Time Pad Prova de segurança computacional