14 de dezembro de 2009

8

Click here to load reader

Upload: axl

Post on 14-Jan-2016

26 views

Category:

Documents


2 download

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

TRANSCRIPT

Page 1: 14 de Dezembro de 2009

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

Page 2: 14 de Dezembro de 2009

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

Page 3: 14 de Dezembro de 2009

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

Page 4: 14 de Dezembro de 2009

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;

}

Page 5: 14 de Dezembro de 2009

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

Page 6: 14 de Dezembro de 2009

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

Page 7: 14 de Dezembro de 2009

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:

Page 8: 14 de Dezembro de 2009

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