real time random number generator testing - ISEL
Transcrição
real time random number generator testing - ISEL
REAL TIME RANDOM NUMBER GENERATOR TESTING João Dionísio e Tiago Mota Instituto Superior de Engenharia de Lisboa (ISEL), Área Departamental de Engenharia Electrónica e Telecomunicações e de Computadores (ADEETC), Lisboa, Portugal, [email protected] [email protected] Iola Pinto Instituto Superior de Engenharia de Lisboa (ISEL), Área Departamental de Matemática (ADM), Lisboa, Portugal, [email protected] Manfred Niehus Instituto Superior de Engenharia de Lisboa (ISEL), Área Departamental de Física (ADF), Lisboa, Portugal, [email protected] Keywords: Statistics Tests, Binary Sequence, Cryptography, Random Number Generator, p-values, Quantum Optics Abstract: 1 We present a random number generator (RNG) testing application in LabVIEW®, based on six of the statistical tests from the ubiquitous NIST suite that is widely used in the field of cryptography. The implementation is described, and tests measuring performance, both regarding precision and speed, are demonstrated. The application can be interfaced to real time true RNGs based on quantum optics experiments. INTRODUCTION Numa era informatizada a área da segurança informática e da criptografia têm vindo a assumir papéis cada vez mais importantes na proteção de dados e preservação de privacidade [1]. A segurança dos cripto-sistemas mais avançados, sejam eles clássicos [2] ou quânticos [3], depende da disponibilidade de uma chave de encriptação que só pode ser utilizada uma única vez (One-Time-Pad), e cuja sequência terá que ser absolutamente imprevisível. No entanto, parece agora que geradores de números aleatórios comerciais atualmente em uso não garantem, a partida, a imprevisibilidade da sequência gerada [4]. São disponíveis no domínio público testes estatísticos de forma a avaliar e quantificar os geradores de sequências aleatórias. Um conjunto de de testes estatísticos mais utilizado em aplicações de criptografia é o NIST Test suite [5]. Apresentamos aqui uma aplicação em LabVIEW® (Laboratory Virtual Instrument Engineering Workbench), baseado nestes testes, que permite o processamento e a análise em tempo real de uma sequência binária, bem como a realização de testes de aleatoriedade e consequente quantificação do grau de aleatoriedade da sequência binária. 2 STATISTICAL TESTS Entende-se por uma sequência aleatória uma sucessão binária cuja sua ordem não se consegue prever e que não evidencie qualquer tipo de padrão ou periodicidade. O NIST Test Suite [5] é um conjunto de testes que permitem quantificar o grau de aleatoriedade de sequências binárias, produzidas por hardware ou software (RNG). Estes testes concentram-se numa variedade de diferentes tipos de não-aleatoriedade que podem existir numa sequência, permitindo verificar e quantificar o grau de aleatoriedade da mesma. Foram implementados os testes enumeradas na tabela 1. Testes Frequency (Monobit) Test Descrição Verifica se o número de uns e de zero é aproximadamente igual Frequency Test Within a Block Verifica se a proporção de uns e zeros dentro dos blocos de M-bits é aproximadamente . Verifica se a repetição de zeros e uns é o expectável para uma sequência aleatória. Verifica se a sequência mais longa de uns, num bloco de dimensão M, vai de encontro ao comprimento da maior sequência de uns, expectável numa sequência aleatória. Verifica se existem dependências lineares entre as sub-matrizes obtidas a partir da sequência original. Verifica algumas características periódicas numa sequência, nomeadamente repetição intensiva de certos padrões. Runs Test (Teste de Oscilação) Longest Run of Ones in Block Binary Matrix Rank Test Discrete Fourier TransformTest Tabela 1:Descrição dos testes implementados. 3 Figura 1 - Diagrama de Blocos da aplicação. 3.1 INDIVIDUAL TESTS Para cada teste estatístico, referidos na Tabela 1 procedeu-se à sua implementação em LabVIEW®. Descrevemos aqui, a título de exemplo, a estatística e implementação do Teste 1. Descrição da estatística do Teste 1 Denota- ' [1 2 ... n ] uma sequência binária de tamanho n pelo vector. Recebendo como input uma sequência ' de tamanho n, os seus zeros e uns são convertidos em 1 e +1 respetivamente e posteriormente somados, sendo a estatística de teste dada por: IMPLEMENTATION Implementou-se em LabVIEW® uma aplicação capaz de realizar em tempo real os seis testes descritos, tentando-se aliar a rapidez e eficácia, i.e. o equilíbrio entre a precisão na análise dos resultados e a rapidez na aquisição experimental. Dividir a aplicação em quatro blocos funcionais principais como mostra a figura1. No primeiro bloco procede-se à aquisição de dados que pode ser feita de três formas: No segundo bloco as sequências binárias são submetidas ao pacote dos seis testes estatísticos consoante os parâmetros de inpus fornecidos pelo utilizador. No terceiro bloco é realizada uma análise estatística dos resultados. Começam-se por obter os P-values para cada um dos testes estatísticos. Para um dado nível de significância existe uma proporção de P-values que indicam falhas de aleatoriedade. Por exemplo, se o nível de significância for 0,01 esperase que cerca de 1% das sequências testadas indiquem falhas de aleatoriedade. Por fim realiza-se um histograma dos P-values e procede-se à realização dum teste estatístico não paramétrico para avaliar a uniformidade dos mesmos. No quarto bloco é dada a opção no início de cada teste de o utilizador guardar num ficheiro de texto os resultados finais dos testes realizados. n X S i 1 i , n X i 2 i 1, i 1,..., n (1) (2) Supondo que a hipótese nula é verdadeira (a proporção de uns é igual a ½), e que a dimensão da sequência é suficientemente grande, a estatística de teste segue distribuição normal standardizada. O cálculo do p-value obtém-se por: S P value erfc obs , 2 (3) Onde erfc representa a complementar error function. Se P-value <0,01 a sequência não rejeita a hipótese de aleatoriedade Implementação do Teste 1 De modo a obter o somatório S, a implementação inicial processa elemento a elemento: tinha-se um ciclo for que percorria os elementos do array, a transformar os zeros em -1. Assim, o teste tornou se demasiado lento para execução em tempo real. esta Figura 2 – LV snippet do Frequency (Monobit) Test . Para tornar o teste mais eficiente, implementouse o seguinte procedimento: 1º Passo - Cálculo do número de uns: n S1 i Figura 4 - Histograma de P-Values. (1) i 1 2º Passo - Cálculo do número de zeros: N0 n S1 (2) 3º Passo - Obtenção do somatório S n : Sn S1 N0 . (3) 4ª Passo - Por fim é calculado o P-value de cada sequência a partir da fórmula: S P value erfc obs 2 (4) Na Fig. 2 apresentamos um snippet de LV com o ciclo a realizar o Teste 1. 3.2 DATA ANALYSIS Após a realização de cada teste a um dado número de sequências, é avaliada a proporção de pvalues que rejeitam a hipótese de aleatoriedade e obtem-se (Fig. 3) um histograma de P-values, (Fig. 4) em que no eixo das abcissas estão representadas as 10 classes de valores em que os P-values se podem encontrar. O eixo das ordenadas corresponde à frequência relativa de cada classe. Neste bloco, verifica-se se com o P-value obtido se deve rejeitar ou não a hipótese de aleatoriedade, para um valor de significância , à escolha do utilizador. Por fim calcula-se a proporção de casos em que a hipótese de aleatoriedade é rejeitada. Para um gerador ser considerado aleatório, a proporção de P-values que levam à rejeição à hipótese de aleatoriedade para um dado nível de significância, deverá ser a expectável [6]: por exemplo para 1000 sequências em teste e para o nível de significância de 0,01, será expectável obter aproximadamente dez p-values inferiores a 0,01. Demonstra-se ainda que a distribuição dos p-values, para um dado número de sequências, deverá ser uniforme. Assim sendo, procede-se ao cálculo da proporção de p-values que levam a rejeitar a hipótese de aleatoriedade e de forma a avaliar a uniformidade na distribuição de P-values, realiza-se um teste à bondade do ajustamento, cuja estatística de teste, quando a hipótese nula é verdadeira, segue uma distribuição do Qui-quadrado com nove graus de liberdade (número de classes) escrevendo-se: k X2 i 1 (Oi Ei ) Ei (% (5 onde: Oi = # casos observados em cada classe Ei = # casos expectável em cada classe K = Número de classes Após o cálculo do valor observado para a estatística de teste ( QOBS ), obtém-se o P-value, 2 Figura 3 – LV snippet do cálculo da proporção de Pvalues inferiores a 0,01 em Labview. calculando a P[ X QOBS ] . Se P-value 0,01, podemos considerar a distribuição uniforme e por consequência aceitar o gerador como tendo boas propriedades de aleatoriedade. Figura 5 – LV snippet Histograma de p-values e de χ2 Após a realização dos histogramas parciais procede-se a análise global dos P-values. Com a totalidade dos P-values obtém-se o histograma global, O teste de Qui-quadrado permite concluir sobre a uniformidade da distribuição. 3.3 User Interface O interface do utilizador é apresentado na Fig. 6 e descrito seguidamente. 1-Para cada teste é feito um histograma relativo à frequência dos p-values. 2-Para cada sequência testada é calculado um pvalue, que é colocado num array sendo possível ao utilizador ver todos os p-values calculados, de notar que se um p-value for superior a 0,01, a sequência correspondente pode ser considerada aleatória. 3-Neste ponto são mostrados o número de pvalues inferiores a 0,01 e a respectiva proporção consoante o número de sequências em teste. 4-Para cada teste é calculada a estatística de teste respectiva e calculado o p-value relativo à distribuição xi-quadrado, se o valor for inferior a 0,01 a distribuição não é uniforme e por consequência o meio é não aleatório. 5-Se o p-value relativo à distribuição chiquadrado for superior a 0,01 o led ficará verde, caso contrário ficará vermelho. 6-Indica o tempo execução do teste em questão. 7- Indica a quantidade de bit por segundo processada em cada teste. Figura 6 – Output Teste De modo a tornar a aplicação visualmente mais simples e mais rápida recorreu-se à utilização de Subvi´s. Este método é o equivalente à chamada de uma sub-rotina em linguagens de programação baseadas em texto. Foi assim para cada teste um Subvi. Bem como um Subvi que procede ao cálculo da proporção de p-values e um de forma a realizar os histrogramas e o teste à bondade do ajustamento, Qui-Quadrado. Foram em seguida realizados alguns cenários que obtiveram os seguintes resultados registados na Tabela 2 e Tabela 3 Pode-se concluir de acordo com os cenários acima descritos (análise das tabelas 2 e 3), verificase que os todos os cenários podem ser utilizados para futuras experiencias laboratoriais em tempo real, pelo facto de apresentarem baixos tempos de execução perante uma aquisição de dados, quer em modo individual quer em modo simultâneo. Observando a tabela 3, verifica-se que existe uma grande aquisição de bits por segundo em cada teste estatísticos. No entanto comparando os cenários, conclui-se que o primeiro está abaixo da média, apresentando valores entre 2 e 5 megabits por segundo. 3.4 TIMING Para quantificar o tempo de execução dos testes realizados, realizaram-se análises com quantificadores de tempo real em cada teste. A figura 7 descreve o formato em que foram colocados os quantificadores no LabView. Figura 7 – LV snippet de quantificadores de tempo Teste 1 Teste 2 Teste 3 Teste 4 Teste 5 Teste 6 1 x n=100000 3 8 7 3 6 6 100 x n=10000 26 43 36 26 28 36 100 x n=100000 280 279 275 251 265 273 Tabela 2 - Tempo de execução de cada Teste em milissegundo. Teste 1 Teste 2 Teste 3 Teste 4 Teste 5 Teste 6 1 x n=100000 8,20 8,11 7,26 7,19 6,99 5,73 100 x n=10000 7,06 6,87 5,72 6,72 6,78 5,72 100 x n=100000 8,28 8,14 7,98 7,99 8,21 6,8 Tabela 3 - MegaBits por Segundo de cada Teste. Constatou-se também uma melhoria significativa em termos de eficiência no simulador tornando-o bastante mais rápido com os diversos SubVi’s. 3.5 INTERFACE TO REAL TIME EXPERIMENT De forma a implementar uma interface capaz de realizar testes em tempo real, recorre-se ao uso de ficheiros TDMS, um formato desenvolvido pela National Instruments que permite armazenar grandes quantidades de dados gerados em simulações de uma forma rápida e estruturada. Desta forma é dada a possibilidade ao utilizador de configurar o DAQmx, e integrar em aplicações já existentes ficheiros TDMS. Utilizando um método de transmissão de dados em disco que por meio de várias operações de memória e fazendo bypassings aos buffers do Windows aumentará a velocidade de streaming, obtendo um aumento de eficiência podendo atingir taxas de 1,2 GB/s. Figura 8 - Implementação TDMS. O uso de ficheiros TDMS permite a ligação da aplicação do LabView com uma experiencia laboratorial, no que diz respeito à captação e leitura de dados no momento da aquisição, sendo possível ao utilizador a localização de um determinado conjunto de dados de forma rápida. Na Fig. 8 demonstra-se o código que estabelece o modo de funcionamento do TDMS para aquisição de dados. Tendo como funções a escrita e leitura TDMS. 4 RESULTS AND DISCUSSION Após a implementação da aplicação procedeu-se à realização dos 6 testes a geradores aleatórios disponíveis no LabView, o MLS e o Rand, também existente em Matlab. Devido ao input mínimo recomendado para o teste 5 Binary Matrix Rank Test ser de 40000, optou-se por produzir 100 sequências binárias de tamanho 50000 de modo a averiguar a qualidade do gerador. Os resultados dos respetivos testes para os geradores MLS e Rand seguem abaixo descritos na Nº PValues<0,01 MLS RAND Teste 1 Teste 2 Teste 3 Teste 4 Teste 5 Teste 6 HISTOGRAMA FINAL 0 1 0 3 0 0 - 1 0 3 0 0 0 - Uniformidade MLS RAND SIM SIM SIM SIM NÃO SIM NÃO SIM SIM SIM SIM NÃO NÃO NÃO Tabela 4 – Resultados Aos Geradores. Após uma análise aos resultados aos dois geradores observou-se que ambos apresentam algumas falhas relativamente à uniformidade da distribuição dos Pvalues, como se verifica na tabela 6. Para o gerador MLS observa-se que não existe uniformidade no teste 5 embora não apresente qualquer P-value inferior ao nível de significância. O mesmo acontece para o gerador Rand do Mathscript nos testes 5 e 6. Estas falhas levam a que o Histograma Final, que reúne o conjunto dos P-values também não tenha distribuição uniforme. Embora isso aconteça num balanço final podemos concluir que os dois geradores apresentam boas características de aleatoriedade. REFERENCES [1] Singh, S., The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography, ed. Fourth Estate London (1999). [2] Vernam, G., Cipher printing telegraph systems for secret wire and radio telegraphic communications, J. Am. Inst. Electr. Eng. 45, 109–115. (1926) ; Shannon, C. E., Communication theory of secrecy systems, Bell Syst. Tech. J. 28, p. 656–715 (1949). [3]. Gisin, N., et. al ., Quantum Cryptography, Rev. Mod. Phys. 74, p. 145-193, (2002). [4] B. Schneier, in the Guardian, 5th of 9, 2013, www.theguardian.com/commentisfree/2013/sep/05/govern ment-betrayed-internet-nsa-spying [5] Rukhin, A. et. al. ; A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications, NIST Special Publication 800-22 Revision 1a; 2011 [6] Branning, D. , Bermudez, M., Testing Quantum Randomness in Single-photon Polarization Measurements with NIST Test Suite, J. Opt. Soc. Am. B Vol. 27, (2010). [7] J. Dionísio e T. Mota, Testes estatisticos em tempo real, Final year project, ISEL (2013)