80 likes | 178 Views
Teste Diehard aplicado ao gerador da biblioteca OpenSSL. Instituto Superior Técnico. Segurança em Redes Móveis. Elaborado por: Luís Ricardo Fonseca. 14 de Dezembro de 2009. Indice. A. Objectivos B. Geração de Números ( OpenSSL ) C. Testes Diehard D. Resultados. 2 / 8.
E N D
Teste Diehard aplicado ao gerador da biblioteca OpenSSL Instituto Superior Técnico Segurança em Redes Móveis Elaborado por: Luís Ricardo Fonseca 14 de Dezembro de 2009
Indice A. Objectivos B. Geração de Números (OpenSSL) C. Testes Diehard D. Resultados 2 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL
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) 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: • #include <stdlib.h> • #include <stdio.h> • #include <string.h> • #include <unistd.h> • #include <sys/types.h> • #include <sys/stat.h> • #include <fcntl.h> • #include <openssl/rand.h> • intmain(intargc, char * argv[]) • { • int i,j=1024; • charstring[j]; • intfich=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; • } 4 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL
C. Testes Diehard Os testes realizados (Diehard) foram os seguintes: Birthday Spacings Overlapping Permutations Ranks of 31x31 and 32x32 matrices Ranks of 6x8 Matrices Monkey Tests on 20-bit Words Monkey Tests OPSO,OQSO,DNA Count the 1`s in a Stream of Bytes 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 Test 5 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL
C. Testes Diehard • O Diehard retorna para cada um dos testes, valores-p que pertencem ao intervalo [0,1]. Caso se obtenha um valor-p <0.025 ou >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: • c2 - 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. 6 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL
D. Resultados Da análise aos resultados obtidos (Resultados.txt) verifica-se que: Legenda: Passou Falhou 7 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL
D. Resultados • 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. 8 / 8 Teste Diehard aplicado ao gerador da biblioteca OpenSSL