Google escolha um número aleatório de 1 a 6

Geração de número aleatório é um processo que, muitas vezes por meio de um gerador de número aleatório ( RNG ), gera uma sequência de números ou símbolos que não pode ser razoavelmente preditas melhor do que por um aleatória acaso. Os geradores de números aleatórios podem ser geradores de números aleatórios de hardware verdadeiramente aleatórios (HRNGS), que geram números aleatórios como uma função do valor atual de algum atributo do ambiente físico que está constantemente mudando de uma maneira que é praticamente impossível de modelar, ou geradores de números pseudo-aleatórios ( PRNGS), que geram números que parecem aleatórios, mas na verdade são determinísticos e podem ser reproduzidos se o estado do PRNG for conhecido.

Várias aplicações de aleatoriedade levaram ao desenvolvimento de vários métodos diferentes para gerar dados aleatórios , alguns dos quais existiram desde os tempos antigos, entre cujas fileiras estão conhecidos exemplos "clássicos", incluindo o lançamento de dados , lançamento de moeda , o embaralhamento de cartas de jogar , o uso de talos de mil-folhas (para adivinhação ) no I Ching , além de inúmeras outras técnicas. Devido à natureza mecânica dessas técnicas, gerar grandes quantidades de números suficientemente aleatórios (importante nas estatísticas) exigia muito trabalho e tempo. Assim, os resultados às vezes eram coletados e distribuídos como tabelas de números aleatórios .

Existem vários métodos computacionais para geração de números pseudo-aleatórios. Todos ficam aquém do objetivo da verdadeira aleatoriedade, embora possam cumprir, com sucesso variável, alguns dos testes estatísticos de aleatoriedade destinados a medir o quão imprevisíveis são seus resultados (isto é, em que grau seus padrões são discerníveis). Isso geralmente os torna inutilizáveis ​​para aplicativos como criptografia . No entanto, geradores de números pseudo-aleatórios (CSPRNGS) cuidadosamente projetados e criptograficamente seguros também existem, com recursos especiais projetados especificamente para uso em criptografia.

Os geradores de números aleatórios têm aplicações em jogos de azar , amostragem estatística , simulação de computador , criptografia , design completamente aleatório e outras áreas em que é desejável produzir um resultado imprevisível. Geralmente, em aplicativos que têm a imprevisibilidade como o recurso principal, como em aplicativos de segurança, geradores de hardware são geralmente preferidos em vez de algoritmos pseudo-aleatórios, quando viável.

Os geradores de números pseudo-aleatórios são muito úteis no desenvolvimento de simulações do método Monte Carlo , pois a depuração é facilitada pela capacidade de executar a mesma sequência de números aleatórios novamente começando da mesma semente aleatória . Eles também são usados ​​em criptografia - desde que a semente seja secreta. O remetente e o destinatário podem gerar o mesmo conjunto de números automaticamente para usar como chaves.

A geração de números pseudo-aleatórios é uma tarefa importante e comum na programação de computadores. Embora a criptografia e certos algoritmos numéricos exijam um grau muito alto de aleatoriedade aparente , muitas outras operações precisam apenas de uma quantidade modesta de imprevisibilidade. Alguns exemplos simples podem ser apresentar a um usuário uma "citação aleatória do dia" ou determinar de que maneira um adversário controlado por computador pode se mover em um jogo de computador. Formas mais fracas de aleatoriedade são usadas em algoritmos hash e na criação de algoritmos de busca e classificação amortizados .

Algumas aplicações que parecem à primeira vista adequadas para a aleatorização não são, de facto, tão simples. Por exemplo, um sistema que seleciona "aleatoriamente" faixas de música para um sistema de música de fundo deve aparecer apenas aleatoriamente, e pode até ter maneiras de controlar a seleção de música: um sistema verdadeiramente aleatório não teria nenhuma restrição para o mesmo item aparecer dois ou três vezes em sucessão.

Existem dois métodos principais usados ​​para gerar números aleatórios. O primeiro método mede algum fenômeno físico que se espera seja aleatório e então compensa possíveis vieses no processo de medição. Fontes de exemplo incluem medição de ruído atmosférico , ruído térmico e outros fenômenos eletromagnéticos e quânticos externos. Por exemplo, a radiação cósmica de fundo ou decadência radioativa medida em escalas de tempo curtas representam fontes de entropia natural .

A velocidade na qual a entropia pode ser obtida de fontes naturais depende dos fenômenos físicos subjacentes que estão sendo medidos. Assim, as fontes de entropia "verdadeira" de ocorrência natural são consideradas bloqueadoras  - elas são limitadas por taxa até que entropia suficiente seja coletada para atender à demanda. Em alguns sistemas semelhantes ao Unix, incluindo a maioria das distribuições Linux , o arquivo do pseudo dispositivo / dev / random será bloqueado até que entropia suficiente seja coletada do ambiente. [1] Devido a este comportamento de bloqueio, grandes leituras em massa de / dev / random , como encher uma unidade de disco rígido com bits aleatórios, pode frequentemente ser lento em sistemas que usam esse tipo de fonte de entropia.

O segundo método usa algoritmos computacionais que podem produzir longas sequências de resultados aparentemente aleatórios, que são na verdade completamente determinados por um valor inicial mais curto, conhecido como valor de semente ou chave . Como resultado, toda a sequência aparentemente aleatória pode ser reproduzida se o valor da semente for conhecido. Este tipo de gerador de números aleatórios é freqüentemente chamado de gerador de números pseudo - aleatórios . Este tipo de gerador normalmente não depende de fontes de entropia que ocorrem naturalmente, embora possa ser semeado periodicamente por fontes naturais. Este tipo de gerador não é bloqueador, portanto, eles não são limitados em taxa por um evento externo, tornando grandes leituras em massa uma possibilidade.

Alguns sistemas adotam uma abordagem híbrida, fornecendo aleatoriedade colhida de fontes naturais quando disponível, e recorrendo a geradores de números pseudo-aleatórios (CSPRNGs) criptograficamente seguros com base em software periodicamente recriados . O fallback ocorre quando a taxa de leitura de aleatoriedade desejada excede a capacidade da abordagem de colheita natural para acompanhar a demanda. Essa abordagem evita o comportamento de bloqueio de taxa limitada de geradores de números aleatórios com base em métodos mais lentos e puramente ambientais.

Embora um gerador de números pseudo-aleatórios baseado unicamente na lógica determinística nunca possa ser considerado como uma fonte de número aleatório "verdadeira" no sentido mais puro da palavra, na prática eles são geralmente suficientes até mesmo para aplicativos críticos de segurança exigentes. De fato, geradores de números pseudo-aleatórios cuidadosamente projetados e implementados podem ser certificados para fins criptográficos de segurança crítica, como é o caso com o algoritmo Yarrow e fortuna . O primeiro é a base do / dev / fonte aleatória de entropia no FreeBSD , AIX , OS X , NetBSD e outros. O OpenBSD usa um algoritmo de número pseudo-aleatório conhecido como arc4random . [2]

Em outubro de 2019, observou-se que a introdução de geradores de números aleatórios quânticos (QRNGs) em modelos de aprendizado de máquina, incluindo redes neurais e redes neurais convolucionais para distribuição de peso inicial aleatória e florestas aleatórias para processos de divisão teve um efeito profundo em sua capacidade em comparação com o método clássico de geradores de números pseudo-aleatórios (PRNGs). [3]

Os primeiros métodos para gerar números aleatórios, como dados, lançamento de moedas e roleta, ainda são usados ​​hoje, principalmente em jogos e apostas, pois tendem a ser muito lentos para a maioria das aplicações em estatística e criptografia.

Um gerador de número aleatório físico pode ser baseado em um fenômeno físico atômico ou subatômico essencialmente aleatório, cuja imprevisibilidade pode ser atribuída às leis da mecânica quântica . As fontes de entropia incluem decaimento radioativo , ruído térmico , ruído de disparo , ruído de avalanche em diodos Zener , desvio do relógio , o tempo dos movimentos reais de uma cabeça de leitura / gravação de disco rígido e ruído de rádio . No entanto, os fenômenos físicos e as ferramentas usadas para medi-los geralmente apresentam assimetrias e vieses sistemáticos que tornam seus resultados não uniformemente aleatórios. Um extrator de aleatoriedade , como uma função hash criptográfica , pode ser usado para abordar uma distribuição uniforme de bits de uma fonte não uniformemente aleatória, embora em uma taxa de bits inferior.

O aparecimento de fontes de entropia fotônica de banda larga, como caos óptico e ruído de emissão espontânea amplificado , auxiliam muito no desenvolvimento do gerador físico de números aleatórios. Dentre eles, o caos óptico [4] [5] tem um alto potencial para produzir fisicamente números aleatórios de alta velocidade devido à sua grande largura de banda e grande amplitude. Um protótipo de um gerador de bits aleatórios físicos em tempo real de alta velocidade baseado em um laser caótico foi construído em 2013. [6]

Várias maneiras criativas de coletar essa informação entrópica foram inventadas. Uma técnica é executar uma função hash em um quadro de um fluxo de vídeo de uma fonte imprevisível. Lavarand usou essa técnica com imagens de várias lâmpadas de lava . HotBits mede decaimento radioativo com tubos Geiger-Muller , [7] enquanto Random.org usa variações na amplitude do ruído atmosférico gravado com um rádio normal.

Outra fonte de entropia comum é o comportamento dos usuários humanos do sistema. Embora as pessoas não sejam consideradas bons geradores de aleatoriedade quando solicitadas, elas geram um comportamento aleatório muito bem no contexto de jogos de estratégia mista . [8] Alguns softwares de computador relacionados à segurança requerem que o usuário faça uma longa série de movimentos do mouse ou entradas de teclado para criar entropia suficiente necessária para gerar chaves aleatórias ou para inicializar geradores de números pseudo-aleatórios. [9]

Métodos computacionais

A maioria dos números aleatórios gerados por computador usa PRNGs, que são algoritmos que podem criar automaticamente longas séries de números com boas propriedades aleatórias, mas, eventualmente, a sequência se repete (ou o uso da memória aumenta sem limites). Esses números aleatórios são bons em muitas situações, mas não são tão aleatórios quanto os números gerados a partir do ruído atmosférico eletromagnético usado como fonte de entropia. [10] A série de valores gerados por tais algoritmos é geralmente determinada por um número fixo denominado semente. Um dos PRNG mais comuns é o gerador congruencial linear , que usa a recorrência

X n + 1 = ( uma X n + b ) mod m {\ displaystyle X_ {n + 1} = (aX_ {n} + b) \, {\ textrm {mod}} \, m}
Google escolha um número aleatório de 1 a 6

para gerar números, onde a , b e m são inteiros grandes, e X n + 1 {\ displaystyle X_ {n + 1}} é o próximo em X como uma série de números pseudo-aleatórios. O número máximo de números que a fórmula pode produzir é um a menos que o módulo , m -1. A relação de recorrência pode ser estendida a matrizes para ter períodos muito mais longos e melhores propriedades estatísticas. [11] Para evitar certas propriedades não aleatórias de um único gerador congruencial linear, vários desses geradores de números aleatórios com valores ligeiramente diferentes do coeficiente multiplicador, a , podem ser usados ​​em paralelo, com um gerador de número aleatório "mestre" que seleciona de entre os vários geradores diferentes. [ citação necessária ]

Um método simples de caneta e papel para gerar números aleatórios é o chamado método do quadrado do meio sugerido por John von Neumann . Embora simples de implementar, seu resultado é de baixa qualidade. Tem um período muito curto e deficiências graves, como a sequência de saída quase sempre convergindo para zero. Uma inovação recente é combinar o quadrado do meio com uma sequência de Weyl . Este método produz resultados de alta qualidade por um longo período. Veja PRNG de sequência de Weyl do quadrado do meio .

A maioria das linguagens de programação de computador inclui funções ou rotinas de biblioteca que fornecem geradores de números aleatórios. Eles geralmente são projetados para fornecer um byte ou palavra aleatória, ou um número de ponto flutuante uniformemente distribuído entre 0 e 1.

A qualidade, ou seja, a aleatoriedade de tais funções de biblioteca varia amplamente, desde uma saída completamente previsível até criptograficamente segura. O gerador de números aleatórios padrão em muitas linguagens, incluindo Python, Ruby, R, IDL e PHP é baseado no algoritmo Mersenne Twister e não é suficiente para fins de criptografia, como está explicitamente declarado na documentação da linguagem. Essas funções de biblioteca geralmente têm propriedades estatísticas pobres e algumas repetirão padrões após apenas dezenas de milhares de tentativas. Eles geralmente são inicializados usando o relógio de tempo real de um computador como semente, já que esse relógio geralmente mede em milissegundos, muito além da precisão da pessoa . Essas funções podem fornecer aleatoriedade suficiente para certas tarefas (por exemplo, videogames), mas são inadequadas onde a aleatoriedade de alta qualidade é necessária, como em aplicativos de criptografia, estatísticas ou análise numérica. [ citação necessária ]

Fontes de números aleatórios de qualidade muito mais alta estão disponíveis na maioria dos sistemas operacionais; por exemplo / dev / random em vários tipos de BSD, Linux, Mac OS X, IRIX e Solaris, ou CryptGenRandom para Microsoft Windows. A maioria das linguagens de programação, incluindo aquelas mencionadas acima, fornecem um meio de acessar essas fontes de qualidade superior.

Geração de uma distribuição de probabilidade

Existem alguns métodos para gerar um número aleatório com base em uma função de densidade de probabilidade . Esses métodos envolvem a transformação de um número aleatório uniforme de alguma forma. Por causa disso, esses métodos funcionam igualmente bem na geração de números pseudo-aleatórios e verdadeiros aleatórios. Um método, denominado método de inversão , envolve a integração de até uma área maior ou igual ao número aleatório (que deve ser gerado entre 0 e 1 para distribuições adequadas). Um segundo método, denominado método de aceitação-rejeição , envolve escolher um valor xey e testar se a função de x é maior do que o valor y. Se for, o valor x é aceito. Caso contrário, o valor x é rejeitado e o algoritmo tenta novamente. [12] [13]

Por humanos

A geração de números aleatórios também pode ser realizada por humanos, na forma de coletar várias entradas de usuários finais e usá-los como uma fonte de randomização. No entanto, a maioria dos estudos conclui que os seres humanos apresentam algum grau de não aleatoriedade ao tentar produzir uma sequência aleatória de, por exemplo, dígitos ou letras. Eles podem alternar muito entre as escolhas quando comparados a um bom gerador aleatório; [14] portanto, essa abordagem não é amplamente utilizada.

Também é possível encontrar plataformas online como o Google, que a partir de uma busca por “gerador de números aleatórios” nos dá números aleatórios apenas definindo um intervalo, por exemplo, 1 - 100. A aleatoriedade na computação desempenha um papel fundamental quando usada na estatística análise, uma vez que ajuda a resolver problemas que podem ter sempre as mesmas respostas se os números aleatórios não forem usados ​​em cada experimento.

Mesmo com uma fonte de números aleatórios plausíveis (talvez de um gerador de hardware baseado na mecânica quântica), a obtenção de números que são completamente imparciais toma cuidado. Além disso, o comportamento desses geradores geralmente muda com a temperatura, a tensão da fonte de alimentação, a idade do dispositivo ou outras interferências externas. E um bug de software em uma rotina de números pseudoaleatórios, ou um bug de hardware no hardware em que é executado, pode ser igualmente difícil de detectar.

Os números aleatórios gerados às vezes são submetidos a testes estatísticos antes do uso para garantir que a fonte subjacente ainda está funcionando e, em seguida, são pós-processados ​​para melhorar suas propriedades estatísticas. Um exemplo seria o gerador de número aleatório de hardware TRNG9803 [15] , que usa uma medida de entropia como um teste de hardware e, em seguida, pós-processa a sequência aleatória com uma cifra de fluxo de registro de deslocamento. Geralmente é difícil usar testes estatísticos para validar os números aleatórios gerados. Wang e Nicol [16] propuseram uma técnica de teste estatístico baseado em distância que é usada para identificar as fraquezas de vários geradores aleatórios. Li e Wang [17] propuseram um método de teste de números aleatórios baseado em fontes de entropia caótica de laser usando propriedades de movimento browniano.

Números aleatórios uniformemente distribuídos entre 0 e 1 podem ser usados ​​para gerar números aleatórios de qualquer distribuição desejada, passando-os pela função de distribuição cumulativa inversa (CDF) da distribuição desejada (consulte Amostragem por transformação inversa ). CDFs inversos também são chamados de funções de quantis . Para gerar um par de números aleatórios normalmente distribuídos padrão estatisticamente independentes ( x , y ), pode-se primeiro gerar as coordenadas polares ( r , θ ), onde r 2 ~ χ 2 2 e θ ~ UNIFORME (0,2π) (ver Caixa –Transformada de Müller ).

Alguns RNGs de 0 a 1 incluem 0, mas excluem 1, enquanto outros incluem ou excluem ambos.

As saídas de vários RNGs independentes podem ser combinadas (por exemplo, usando uma operação XOR bit a bit ) para fornecer um RNG combinado pelo menos tão bom quanto o melhor RNG usado. Isso é conhecido como clareamento de software .

Os geradores de números aleatórios computacionais e de hardware às vezes são combinados para refletir os benefícios de ambos os tipos. Os geradores de números aleatórios computacionais normalmente podem gerar números pseudo-aleatórios muito mais rápido do que os geradores físicos, enquanto os geradores físicos podem gerar "verdadeira aleatoriedade".

Alguns cálculos usando um gerador de números aleatórios podem ser resumidos como o cálculo de um valor total ou médio, como o cálculo de integrais pelo método de Monte Carlo . Para tais problemas, pode ser possível encontrar uma solução mais precisa pelo uso das chamadas sequências de baixa discrepância , também chamadas de números quase aleatórios . Essas sequências têm um padrão definido que preenche as lacunas de maneira uniforme, qualitativamente falando; uma sequência verdadeiramente aleatória pode, e geralmente deixa, lacunas maiores.

Os seguintes sites disponibilizam amostras de números aleatórios:

  • As páginas de recursos SOCR contêm várias atividades interativas práticas e demonstrações de geração de números aleatórios usando miniaplicativos Java.
  • O Quantum Optics Group na ANU gera números aleatórios provenientes do vácuo quântico. Amostras de números aleatórios estão disponíveis na página de pesquisa do gerador de números aleatórios quânticos.
  • A Random.org disponibiliza números aleatórios provenientes da aleatoriedade do ruído atmosférico.
  • O Quantum Random Bit Generator Service do Ruđer Bošković Institute coleta a aleatoriedade do processo quântico de emissão fotônica em semicondutores. Eles fornecem uma variedade de maneiras de buscar os dados, incluindo bibliotecas para várias linguagens de programação.
  • O Grupo da Universidade de Tecnologia de Taiyuan gera números aleatórios provenientes de um laser caótico. Amostras de números aleatórios estão disponíveis em seu Serviço de Gerador de Números Aleatórios Físicos.

Uma vez que grande parte da criptografia depende de um gerador de números aleatórios criptograficamente seguro para geração de chaves e nonce criptográfico , se um gerador de números aleatórios puder ser previsível, ele pode ser usado como backdoor por um invasor para quebrar a criptografia.

Foi relatado que a NSA inseriu uma porta dos fundos no gerador de números pseudo-aleatórios criptograficamente seguro e certificado pelo NIST Dual EC DRBG . Se, por exemplo, uma conexão SSL for criada usando este gerador de número aleatório, então, de acordo com Matthew Green, isso permitiria à NSA determinar o estado do gerador de número aleatório e, assim, eventualmente, ser capaz de ler todos os dados enviados pela conexão SSL. [18] Embora fosse aparente que Dual_EC_DRBG era um gerador de números pseudo-aleatórios muito pobre e possivelmente backdoored muito antes de o backdoor da NSA ser confirmado em 2013, ele tinha visto um uso significativo na prática até 2013, por exemplo, pela empresa de segurança RSA Security . [19] Posteriormente, houve acusações de que a RSA Security intencionalmente inseriu uma porta dos fundos da NSA em seus produtos, possivelmente como parte do programa Bullrun . A RSA negou intencionalmente a inserção de uma porta dos fundos em seus produtos. [20]

Também foi teorizado que os RNGs de hardware poderiam ser modificados secretamente para ter menos entropia do que o declarado, o que tornaria a criptografia usando o RNG de hardware suscetível a ataques. Um desses métodos, que foi publicado, funciona modificando a máscara contaminante do chip, que seria indetectável pela engenharia reversa óptica. [21] Por exemplo, para geração de números aleatórios no Linux, é visto como inaceitável usar o hardware RDRAND RNG da Intel sem misturar na saída RDRAND com outras fontes de entropia para neutralizar quaisquer backdoors no RNG de hardware, especialmente após a revelação do Programa NSA Bullrun. [22] [23]

Em 2010, um sorteio da loteria dos EUA foi manipulado pelo diretor de segurança da informação da Multi-State Lottery Association (MUSL), que instalou secretamente malware backdoor no computador RNG seguro da MUSL durante a manutenção de rotina. [24] Durante os hacks, o homem ganhou uma quantia total de $ 16.500.000 ao prever os números corretamente algumas vezes no ano.

A randomização do layout do espaço de endereço (ASLR), uma mitigação contra o rowhammer e ataques relacionados ao hardware físico dos chips de memória, foi considerada inadequada desde o início de 2017 pela VUSec. O algoritmo de número aleatório, se baseado em um registrador de deslocamento implementado em hardware, é previsível em valores suficientemente grandes de p e pode sofrer engenharia reversa com poder de processamento suficiente ( Brute Force Hack ). Isso também significa indiretamente que o malware que usa esse método pode ser executado em GPUs e CPUs, se codificado para isso, até mesmo usando GPU para quebrar o ASLR na própria CPU. [25]

  • Flipismo
  • Lista de geradores de números aleatórios
  • PP (complexidade)
  • Geração processual
  • Algoritmo Randomizado
  • Gerador de senha aleatória
  • Variável aleatória , contém um valor dependente da chance

  1. ^ random(4)  -  Linux Programmer's Manual - Special Files
  2. ^ arc4random(3)  -  Manual de funções da biblioteca OpenBSD
  3. ^ Bird, Jordan J .; Ekárt, Anikó; Faria, Diego R. (28/10/2019). "Sobre os efeitos dos geradores de números pseudo-aleatórios e quânticos-aleatórios na computação suave" . Soft Computing . Springer Science and Business Media LLC. 24 (12): 9243–9256. doi : 10.1007 / s00500-019-04450-0 . ISSN  1432-7643 .
  4. ^ Li, Pu; Wang, Yun-Cai; Zhang, Jian-Zhong (13-09-2010). "Gerador de números aleatórios rápido totalmente óptico" . Optics Express . 18 (19): 20360–20369. Bibcode : 2010OExpr..1820360L . doi : 10.1364 / OE.18.020360 . ISSN  1094-4087 . PMID  20940928 .
  5. ^ Li, Pu; Sun, Yuanyuan; Liu, Xianglian; Yi, Xiaogang; Zhang, Jianguo; Guo, Xiaomin; Guo, Yanqiang; Wang, Yuncai (15/07/2016). "Gerador físico de bits aleatórios totalmente baseado em fotônica". Cartas de óptica . 41 (14): 3347–3350. Bibcode : 2016OptL ... 41.3347L . doi : 10.1364 / OL.41.003347 . ISSN  1539-4794 . PMID  27420532 .
  6. ^ Wang, Anbang; Li, Pu; Zhang, Jianguo; Zhang, Jianzhong; Li, Lei; Wang, Yuncai (26/08/2013). "Gerador físico de bits aleatórios de alta velocidade de 4,5 Gbps em tempo real" (PDF) . Optics Express . 21 (17): 20452–20462. Bibcode : 2013OExpr..2120452W . doi : 10.1364 / OE.21.020452 . ISSN  1094-4087 . PMID  24105589 . S2CID  10397141 .
  7. ^ Walker, John. "HotBits: números aleatórios genuínos" . Página visitada em 27/06/2009 .
  8. ^ Halprin, Ran; Naor, Moni . "Jogos para extração de aleatoriedade" (PDF) . Departamento de Ciência da Computação e Matemática Aplicada, Instituto de Ciências Weizmann . Página visitada em 27/06/2009 .
  9. ^ TrueCrypt Foundation. "Tutorial do TrueCrypt para iniciantes, Parte 3" . Página visitada em 27/06/2009 .
  10. ^ "RANDOM.ORG - True Random Number Service" . www.random.org . Retirado 2016-01-14 .
  11. ^ "Geradores de números pseudo-aleatórios de alta dimensionalidade" . Página visitada em 2018-11-21 .
  12. ^ The MathWorks. "Métodos de geração comuns" . Página visitada em 2011-10-13 .
  13. ^ O Grupo de Algoritmos Numéricos. "G05 - Geradores de números aleatórios" (PDF) . Manual da Biblioteca NAG, Mark 23 . Página visitada em 09/02/2012 .
  14. ^ WA Wagenaar (1972). "Geração de sequências aleatórias por seres humanos: um levantamento crítico da literatura". Boletim psicológico . 77 (1): 65–72. CiteSeerX  10.1.1.211.9085 . doi : 10.1037 / h0032060 .
  15. ^ Dömstedt, B. (2009). "TRNG9803 Gerador de números aleatórios verdadeiros" . Fabricante: www.TRNG98.se.
  16. ^ Wang, Yongge (2014). "Propriedades estatísticas de sequências pseudo-aleatórias e experimentos com PHP e Debian OpenSSL". Segurança Informática - ESORICS 2014 . Notas de aula em Ciência da Computação. 8712 . Heidelberg: Springer LNCS. pp. 454–471. doi : 10.1007 / 978-3-319-11203-9_26 . ISBN 978-3-319-11202-2.
  17. ^ Li, Pu; Yi, Xiaogang; Liu, Xianglian; Wang, Yuncai; Wang, Yongge (11/07/2016). "Propriedades de movimento browniano de geradores optoeletrônicos de bits aleatórios baseados no caos do laser" . Optics Express . 24 (14): 15822–15833. Bibcode : 2016OExpr..2415822L . doi : 10.1364 / OE.24.015822 . ISSN  1094-4087 . PMID  27410852 .
  18. ^ Matthew Green (18/09/2013). "As muitas falhas de Dual_EC_DRBG" .
  19. ^ Matthew Green (20/09/2013). "RSA avisa os desenvolvedores para não usarem produtos RSA" .
  20. ^ "Não habilitamos backdoors em nossos produtos criptográficos, informa a RSA aos clientes" . Ars Technica . 20/09/2013.
  21. ^ "Os pesquisadores podem inserir um trojan indetectável nas CPUs Ivy Bridge da Intel" . Ars Technica . 18/09/2013.
  22. ^ Theodore Ts'o. "Estou tão feliz por resistir à pressão dos engenheiros da Intel para permitir que / dev / random confie apenas na instrução RDRAND" . Google Plus.
  23. ^ Theodore Ts'o. "Re: [PATCH] / dev / random: Insuficiente de entropia em muitas arquiteturas" . LWN.
  24. ^ Nestel, ML (7 de julho de 2015). "Por dentro do maior golpe de loteria de todos os tempos" . The Daily Beast . Recuperado em 10 de julho de 2015 .
  25. ^ “AnC - VUSec” . Página visitada em 13 de julho de 2018 .

  • Donald Knuth (1997). "Capítulo 3 - Números aleatórios". The Art of Computer Programming . Vol. 2: Algoritmos seminuméricos (3 ed.).
  • L'Ecuyer, Pierre (2017). "História da geração uniforme de números aleatórios" (PDF) . Proceedings of the 2017 Winter Simulation Conference . IEEE Press. pp. 202–230.
  • L'Ecuyer, Pierre (2012). "Geração de número aleatório" (PDF) . Em JE Gentle; W. Haerdle; Y. Mori (eds.). Manual de estatística computacional: conceitos e métodos . Handbook of Computational Statistics (segunda ed.). Springer-Verlag. pp. 35–71. doi : 10.1007 / 978-3-642-21551-3_3 . hdl : 10419/22195 . ISBN 978-3-642-21550-6.
  • Kroese, DP ; Taimre, T .; Botev, ZI (2011). "Capítulo 1 - Geração uniforme de números aleatórios" . Manual de métodos de Monte Carlo . Nova York: John Wiley & Sons. p. 772. ISBN 978-0-470-17793-8.
  • Pressione, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). "Capítulo 7. Números Aleatórios" . Receitas Numéricas: A Arte da Computação Científica (3ª ed.). Nova York: Cambridge University Press. ISBN 978-0-521-88068-8.
  • NIST SP800-90A, série B, C na geração de número aleatório
  • M. Tomassini, M. Sipper e M. Perrenoud (outubro de 2000). "Sobre a geração de números aleatórios de alta qualidade por autômatos celulares bidimensionais". Transações IEEE em computadores . 49 (10): 1146–1151. doi : 10.1109 / 12.888056 .CS1 maint: usa parâmetro de autores ( link )
  • Serviço de número aleatório verdadeiro RANDOM.ORG
  • Random e Pseudorandom em In Our Time na BBC
  • jRand uma estrutura baseada em Java para a geração de sequências de simulação, incluindo sequências pseudo-aleatórias de números
  • Geradores de números aleatórios na NAG Fortran Library
  • Randomness Beacon no NIST , transmitindo cadeias de bits de entropia total em blocos de 512 bits a cada 60 segundos. Projetado para fornecer imprevisibilidade, autonomia e consistência.
  • Uma chamada de sistema para números aleatórios: getrandom () , um artigo LWN.net que descreve uma chamada de sistema Linux dedicada
  • Propriedades estatísticas de sequências pseudo-aleatórias e experimentos com PHP e Debian OpenSSL
  • Gerador criptográfico de números de loteria pseudo-aleatórios ISAAC
  • Gerador de sequência aleatória baseado em ruído de avalanche