14 de Dezembro de 2009 Teste Diehard aplicado ao gerador da biblioteca OpenSSL Segurança em Redes Móveis Elaborado por: Luís Ricardo Fonseca Instituto.

Slides:



Advertisements
Apresentações semelhantes
Estatística do 3.º Período Biblioteca Escolar
Advertisements

_______________________________________ _______________________________________ _______________________________________ _______________________________________.
TRATAMENTO DE ARQUIVOS EM C
Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser.
Introdução à Ciência da Computação Linguagens de Programação.
Um programa em C Bibliotecas Variáveis globais
Linguagem de Programação IV
Programação II Estruturas de Dados
1. Classes 2. Membros estáticos 1.1. Palavra chave this
Vamos abordar o exemplo
Programação para Engenharia I
TADS – Tipos Abstratos de Dados
Funciona, porém está ilegível!
Por Fernando B., João Victor, Rafael F. e Yulle..
Recursividade Inhaúma Neves Ferraz
Prof. Luis Otavio Alvares
Linguagem de Programação C++
Programação II Funções especiais Ricardo de Sousa Britto
Introdução Linguagem C
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
YACC.
Arquivos. 2 Namespace System.IO Toda as classes relacionadas com dispositivos de entrada e saída encontram-se em System.IO Incluir no início do programa:
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Laboratório de Programação de Computadores I
Tratamento de Ficheiros
Programação Orientada para Objectos
Programação Orientada para Objectos
Alan Malta Rodrigues CMP167 – Programação com Objetos Distribuídos Instituto de Informática Universidade Federal do Rio Grande do Sul 08 de julho de 2009.
Geração de random variates
Introdução a Computação e Cálculo Numérico
Revisão /*======================================================*/
Licenciatura em Informática ISTEC – Instituto Superior de Tecnologias Avançadas António Fonseca 2006 Multimédia CMS.
Objectos: Introdução O objecto ou classe é o conceito base de uma linguagem de programação por objectos como o C++. Tal como acontecia com as estruturas,
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 27 (1) Programação com MPI Tópicos: Modelo de Programação Funções de Ambiente Funções Básicas.
Instruções condicionais
Formulários Objectivo: obter do utilizador respostas personalizadas
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
Ordenação em memória primária
PROGRAMAÇÃO I PONTEIROS.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
José Garcia Vivas Miranda
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Programação em C++ Compiladores
1.
Programação orientada a objectos em C++
Algoritmos - Propriedades Desejáveis (1)
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Tratamento de ficheiros Abrir e fechar um ficheiro.
Uso de parâmetros na linha de comando. Parâmetros da função main:
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Tipos de dados inteiro caracter real logico
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
Programação de Computadores I – Arquivos
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
1Unidade – Estrutura Condicional CASE Algoritmos e Linguagens de Programação Estrutura Condicional CASE Faculdade INED – Abril 2007 Prof. Edwar.
Salvando em Arquivos. Arquivos Um arquivo pode estar associado a qualquer dispositivo de entrada e saída, como por exemplo: teclado, video, impressora,
Teste.
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”.
Fundamentos de Programação 1 Slides 12 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Union, Enum e Typedef ”
Teste.
Teste.
Teste.
Teste\. testes.
Algoritmos e Estruturas de Dados I
Programação de Computadores LINGUAGEM C – AULA 04 - PROF. WELLINGTON TELLES.
Transcrição da apresentação:

14 de Dezembro de 2009 Teste Diehard aplicado ao gerador da biblioteca OpenSSL Segurança em Redes Móveis Elaborado por: Luís Ricardo Fonseca Instituto Superior Técnico

2 / 8 A. Objectivos B. Geração de Números (OpenSSL) C. Testes Diehard D. Resultados Teste Diehard aplicado ao gerador da biblioteca OpenSSL Indice

A. Objectivos O Diehard consiste numa bateria de testes estatísticos que permite aferir a qualidade de uma função geradora de números pseudo-aleatórios. A biblioteca OpenSSL disponibiliza um gerador de números pseudo-aleatórios. Esta biblioteca é usada, essencialmente, para manter a privacidade e integridade dos dados de uma aplicação, e da informação trocada entre aplicações. Este trabalho teve como objectivo executar os testes do Diehard sobre um ficheiro binário de números gerados utilizando a biblioteca OpenSSL, de modo a estudar a aleatoriedade da função geradora. 3 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL

B. Geração de Números (OpenSSL) 4 / 8 O ficheiro binário de input ao teste Diehard deverá ter no mínimo 10/11MB. Assim, foi gerado um ficheiro de 12MB (Num_Gerados.dh), utilizando o programa seguinte: Teste Diehard aplicado ao gerador da biblioteca OpenSSL #include int main(int argc, char * argv[]) { int i,j=1024; char string[j]; int fich=open(Num_Gerados.dh",O_WRONLY|O_CREAT|O_APPEND,S_IRUSR|S_IWUSR); for (i=1;i<=12*1024;i=i+1) { RAND_bytes(string,j); write(fich,string,j); } return 0; }

C. Testes Diehard 1. Birthday Spacings 2. Overlapping Permutations 3. Ranks of 31x31 and 32x32 matrices 4. Ranks of 6x8 Matrices 5. Monkey Tests on 20-bit Words 6. Monkey Tests OPSO,OQSO,DNA 7. Count the 1`s in a Stream of Bytes 8. Count the 1`s in Specific Bytes 9. Parking Lot Test 10. Minimum Distance Test 11. Random Spheres Test 12. The Sqeeze Test 13. Overlapping Sums Test 14. Runs Test 15. The Craps Test 5 / 8 Os testes realizados (Diehard) foram os seguintes: Teste Diehard aplicado ao gerador da biblioteca OpenSSL

C. Testes Diehard 6 / 8 O Diehard retorna para cada um dos testes, valores-p que pertencem ao intervalo [0,1]. Caso se obtenha um valor-p 0.975, o teste falhou. De qualquer maneira, o criador dos testes, G. Marsaglia, deixa uma nota a referir que pontualmente, mesmo bons geradores, poderão falhar alguns testes. Os 15 testes mencionados são de 3 tipos distintos: 2 - Birthday spacing, Overlapping permutations, Rank of matrices (2), count the 1s (2), squeeze, craps; KS - Minimum distance, random spheres, overlapping sums, runs; N - Monkey (2), parking lot. Teste Diehard aplicado ao gerador da biblioteca OpenSSL

7 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL D. Resultados Legenda: Passou Falhou Teste Nº valores-p Ok [0.025,0.975] Nº valores-p Nok Resultado 1. Birthday Spacings90 2. Overlapping Permutations11 3. Ranks of 31x31 and 32x32 matrices20 4. Ranks of 6x8 Matrices Monkey Tests on 20-bit Words Monkey Tests OPSO,OQSO,DNA Count the 1`s in a Stream of Bytes20 8. Count the 1`s in Specific Bytes Parking Lot Test Minimum Distance Test Random Spheres Test The Sqeeze Test Overlapping Sums Test Runs Test The Craps Test20 Da análise aos resultados obtidos (Resultados.txt) verifica-se que:

D. Resultados 8 / 8 O ficheiro utilizado como input do Diehard passou em todos os testes, com excepção do teste 2. Overlapping Permutations, podendo eventualmente existir fragilidades que poderão ser exploradas por um atacante. Assim, é possível concluir que o OpenSSL é um bom gerador de números pseudo-aleatórios. Em termos de desempenho de execução, foram obtidas performances excelentes: Geração do ficheiro de números aleatórios com 12 MB – 20s; Execução dos testes Diehard – 60s. Teste Diehard aplicado ao gerador da biblioteca OpenSSL