Gerador de números aleatórios
Gerar números aleatórios dentro de um intervalo especificado para amostragem estatística e simulações.
Gerar números aleatórios
Sumário
Tipos de geradores de números aleatórios
Geradores de números aleatórios (RNGs) são componentes fundamentais em vários campos, desde criptografia e segurança até simulações científicas e jogos. Compreender os diferentes tipos e suas características é crucial para selecionar o método adequado para suas necessidades específicas.
Geradores de números aleatórios verdadeiros (TRNGs)
Geradores de números aleatórios verdadeiros derivam aleatoriedade de processos físicos que são inerentemente imprevisíveis. Esses geradores produzem sequências teoricamente impossíveis de prever, mesmo com conhecimento completo do algoritmo gerador e valores anteriores.
Fontes de Entropia Física
- Ruído atmosférico
- Decaimento radioactivo
- Ruído térmico
- Fenômenos quânticos (fraccionamento de fótons)
- Ruído eletrônico e comportamento de circuito
Tipos de Implementação do TRNG
- Geradores de números aleatórios de hardware
- Geradores de números aleatórios quânticos (QRNGs)
- Geradores baseados em ruído
- Geradores de osciladores de funcionamento livre
- Geradores baseados no caos
TRNGs são essenciais para aplicações que exigem o mais alto nível de segurança e imprevisibilidade, como geração chave criptográfica, comunicações seguras e sistemas de jogo de alto risco. No entanto, eles normalmente têm taxas de geração mais lentas e podem ser mais caros de implementar.
- Fonte de ruído (fornece entropia)
- Digitizador (converte sinais analógicos para digital)
- Condicionador/extractor (melhora a qualidade da aleatoriedade)
- Testes de saúde (verifica o funcionamento adequado)
Geradores de Números Pseudodorandom (PRNGs)
Geradores de Números Pseudorandom usam algoritmos determinísticos para gerar sequências de números que parecem aleatórias. Embora não sejam realmente aleatórios, eles são projetados para passar vários testes estatísticos para aleatoriedade e são adequados para muitas aplicações.
Frequentes PRNG Tipos
- Geradores lineares congruentes (LCG)
- Mersenne Twister
- Geradores Xorshift
- Geradores multiplicados
- Geradores lineares de longo período bem distribuídos
Características do PRNG
- Determinativo (a mesma semente produz a mesma sequência)
- Periódico (eventualmente repete após algum período)
- Geração rápida e eficiente
- Resultados facilmente reproduzíveis
- Adequado para simulações e aplicações de não segurança
PRNGs criptograficamente seguros (CSPRNGs)
Pseudorandom criptograficamente seguro Geradores de números são uma classe especial de PRNGs projetados para resistir à previsão. Eles são adequados para aplicações críticas à segurança, mas ainda funcionam deterministicamente.
CSPRNG Exemplos
- Gerador Blum-Blum-Shub (BBS)
- Gerador RSA/Rabin
- Algoritmo de Fortuna
- HMAC-DRBG
- Geradores baseados em ChaCha20
- Geradores de modo AES-CTR
CSPRNG Propriedades de segurança
- Segredo para a frente (outputs passados protegidos)
- Segredo retroactivo (futuras saídas protegidas)
- Resistir ao compromisso estatal
- Baseado em problemas computacionais difíceis
- Passa todos os testes estatísticos em tempo polinomial
Teste de Aleatória e Validação
O teste da qualidade dos geradores de números aleatórios é crucial para garantir que eles cumprem os requisitos para suas aplicações pretendidas. Várias suítes de teste padronizadas estão disponíveis:
- Bateria Diehard de testes
- NIST Statistical Test Suite (SP 800-22)
- Suite TestU01
- Qui-quadrado Ensaio
- Ensaio de frequência (teste de monobits)
- Executar o Teste
- Correlação em série Ensaio
- Kolmogorov- Smirnov Ensaio
- Espaços de Aniversário Ensaio
Abordas híbridas
Para resultados ótimos em aplicações de segurança, abordagens híbridas que combinam vários tipos de geradores de números aleatórios são frequentemente empregadas:
- Usando um TRNG para gerar sementes para um CSPRNG
- Grupos de entropia que recolhem aleatoriedade de várias fontes
- Pós-processamento de saída TRNG utilizando funções de hash criptográficas
- Combinando saídas de múltiplos geradores independentes
Melhores práticas para aplicações críticas
- Usar um TRNG para gerar entropia inicial (sementes)
- Processar a entropia através de um CSPRNG para melhores propriedades estatísticas
- Usar algoritmos e implementações estabelecidos e bem revistos
- Monitore continuamente a qualidade de saúde e saída do RNG
- Aplicar pós-processamento criptográfico (hashing) quando apropriado
- Aderir às normas relevantes (NIST SP 800-90A/B/C, BSI AIS 20/31)
O que são números aleatórios?
Números aleatórios são números que ocorrem em uma sequência tal que duas condições são cumpridas:
- Os valores são distribuídos uniformemente num intervalo definido
- É impossível prever valores futuros baseados em valores passados ou presentes
- Cada número tem uma probabilidade igual de ser selecionado
- A sequência é estatisticamente independente
Aplicações
Amostragem estatística
Selecionando amostras aleatórias de populações para análise estatística.
Simulações
Criando cenários aleatórios para simulações de Monte Carlo.
Criptografia
Gerando chaves de criptografia e valores aleatórios seguros.
Jogos
Criando resultados aleatórios em jogos e loterias.
Geração de números aleatórios
Nosso gerador de números aleatórios usa um algoritmo criptograficamente seguro para gerar números verdadeiramente aleatórios:
- Distribuição uniforme através do intervalo especificado
- Geração de números aleatórios criptograficamente seguras
- Suporte para números inteiros e decimais
- Número personalizável de casas decimais
Exemplos
Exemplo 1Números Inteiros
Intervalo: 1 a 10
Contagem: 5
Locais decimais: 0
3, 7, 1, 9, 4
Inteiros aleatórios entre 1 e 10
Exemplo 2Números decimais
Intervalo: 0 a 1
Contagem: 3
Locais decimais: 2
0.42, 0.87, 0.15
Decimais aleatórios entre 0 e 1
Exemplo 3Intervalo Personalizado
Gama: -100 a 100
Contagem: 4
Locais decimais: 1
-45.2, 78.9, -12.4, 56.7
Números aleatórios entre -100 e 100