Click here to load reader
Upload
axl
View
26
Download
2
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
14 de Dezembro de 200914 de Dezembro de 2009
Teste Diehard aplicado ao gerador da Teste Diehard aplicado ao gerador da biblioteca OpenSSLbiblioteca OpenSSL
Segurança em Redes Segurança em Redes MóveisMóveis
Elaborado por:Elaborado por:
Luís Ricardo FonsecaLuís Ricardo Fonseca
Instituto Superior Instituto Superior TécnicoTécnico
2 / 8
A. ObjectivosA. Objectivos
B. Geração de Números (OpenSSL)B. Geração de Números (OpenSSL)
C. Testes Diehard C. Testes Diehard
D. Resultados D. Resultados
Teste Diehard aplicado ao gerador da biblioteca OpenSSL
IndiceIndice
A. ObjectivosA. 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 / 8Teste Diehard aplicado ao gerador da biblioteca OpenSSL
B. Geração de Números (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 <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>
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 C. Testes Diehard
1. Birthday Spacings2. Overlapping Permutations3. Ranks of 31x31 and 32x32 matrices4. Ranks of 6x8 Matrices5. Monkey Tests on 20-bit Words6. Monkey Tests OPSO,OQSO,DNA7. Count the 1`s in a Stream of Bytes8. Count the 1`s in Specific Bytes9. Parking Lot Test10. Minimum Distance Test11. Random Spheres Test12. The Sqeeze Test13. Overlapping Sums Test14. Runs Test15. The Craps Test
5 / 8
Os testes realizados (Diehard) foram os seguintes:
Teste Diehard aplicado ao gerador da biblioteca OpenSSL
C. Testes Diehard 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.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: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 / 8Teste Diehard aplicado ao gerador da biblioteca OpenSSL
D. ResultadosD. Resultados
Legenda:
Passou
Falhou
TesteNº valores-p Ok [0.025,0.975]
Nº valores-p Nok<0.025 ou >0.975
Resultado
1. Birthday Spacings 9 0
2. Overlapping Permutations 1 1
3. Ranks of 31x31 and 32x32 matrices 2 0
4. Ranks of 6x8 Matrices 24 1
5. Monkey Tests on 20-bit Words 20 0
6. Monkey Tests OPSO,OQSO,DNA 80 2
7. Count the 1`s in a Stream of Bytes 2 0
8. Count the 1`s in Specific Bytes 24 1
9. Parking Lot Test 10 0
10. Minimum Distance Test 1 0
11. Random Spheres Test 20 0
12. The Sqeeze Test 1 0
13. Overlapping Sums Test 10 0
14. Runs Test 4 0
15. The Craps Test 2 0
Da análise aos resultados obtidos (Resultados.txt) verifica-se que:
D. ResultadosD. 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