Quem pensaria que gerar um número aleatório seria uma bagunça, deveria ser tão direto quanto adivinhar um número em qualquer lugar entre um determinado intervalo. Mas não é tão simples quanto parece e também até agora todas as máquinas provam ser incapazes de gerar um verdadeiro número aleatório por conta própria.
Por que as máquinas não podem gerar um número aleatório verdadeiro por conta própria?
Máquinas ainda são apenas conjuntos de mecanismos e circuitos, e, portanto, não podem ser instruídos a pensar em um número aleatório por si só sem ajuda. E é por isso que até agora e mais, estamos envolvendo a natureza ou humanos com máquinas para gerar um verdadeiro número aleatório. Não discutiremos aqui como gerar um número aleatório verdadeiro, mas discutiremos sobre os geradores de números aleatórios já implementados e seus trabalhos e fraquezas.
Por que gerar um verdadeiro número aleatório é tão importante?
Surge a pergunta que por que a geração de números aleatórios verdadeiros são importantes e a resposta é por causa das preocupações de segurança. A maioria dos algoritmos criptográficos é baseada na geração de números aleatórios, pois esses números aleatórios são usados para criar chaves criptográficas e se os números aleatórios gerados não são verdadeiramente aleatórios por natureza, eles tornam inteiras essas técnicas criptográficas mais fracas e essas chaves podem ser previstas relativamente mais fáceis Usando o algoritmo que foi usado para gerar essas chaves aleatórias. Este é o motivo mais importante para um verdadeiro números aleatórios, além de aplicações como o jogo.
Gerador de números aleatórios em kernels Linux:
O tópico de nossa discussão hoje é baseado no gerador de números aleatórios do Linux, em que fatores esse gerador baseia e é realmente aleatório ou é apenas mais um número aleatório tipicamente não confiável.
O Linux usa pseudo -gerador de números aleatórios (PRNG) ou criptograficamente seguro Gerador de Números Aleatórios (CSPRNG), o que significa que usa fórmulas matemáticas complexas e propriedades ambientais para alcançar a máxima aleatoriedade. Linux foi o primeiro sistema operacional a incluir o PRNG em seu espaço no kernel. Isso foi implementado por Theodore Ts'o em 1994.
Linux tem três categorias de geradores de números aleatórios, /dev /aleatom, /dev /urandom, /dev /arandom. Estes três são os arquivos nos quais o Linux armazena números aleatórios. Os números aleatórios nesses arquivos são gerados usando o ruído ambiental dos drivers de dispositivo e outras fontes. Além disso, para garantir a aleatoriedade em seus números aleatórios, o Linux usa entropia, que é a extensão da incerteza ou desordem entre eles. Você também pode encontrar a página manual do Linux Random Number Generator (RNG) aqui:
http: // man7.org/linux/man-páginas/man4/aleatório.4.html
/dev/aleatório versus /dev /urandom versus /dev /arandom:
As principais diferenças entre /dev /aleatória, /dev /urandom e /dev /arandom é que /dev /aleatórios se a entropia não estiver indicando aleatoriedade suficiente, /dev /urandom não bloqueia, mesmo quando o gerador de número aleatório do pseudo não é totalmente semeado quando inicializado e, por último, /dev /arandom bloqueia apenas quando o pseudo -número aleatório gerador ainda não está totalmente semeado. Em suma, /dev /aleatória é o mais seguro de todos, então vem /dev /arandom e o menos seguro é /dev /urandom. Normalmente /dev /aleatório e /dev /urandom são usados porque /dev /arandom em muitos termos é semelhante a /dev /urandom. A estimativa de entropia para o pool de números aleatórios em abrevante é usada para determinar a aleatoriedade dos números gerados. Quanto mais entropia é, mais aleatoriedade é alcançada e melhor é. A quantidade atual de entropia e tamanho de seu pool de entropia estão disponíveis em/proc/sys/kernel/aleatória/nomeado como entropy_avail e pool_size, respectivamente, que podem ser exibidos no terminal usando comandos:
gato/proc/sys/kernel/random/entropy_avail
E:
gato/proc/sys/kernel/random/pool_size
Tanto Urandom quanto aleatório são usados em diferentes cenários. 'Urandom' é usado onde há necessidade constante de números aleatórios e sua aleatoriedade não é muito importante enquanto 'aleatório' é usado onde há uma preocupação de segurança e sua aleatoriedade deve ser confiável, pois bloqueia os números aleatórios se não estiver de acordo com a marca. Embora a entropia para Urandom (ilimitada aleatória) não seja muito mais fraca, mas é recomendável usar aleatório quando mais segurança é necessária devido à possibilidade de ataques a número gerado pelo Urandom.
Fraquezas em geradores de números aleatórios Linux
Para hardware de memória não volátil:
Para os kernels Linux, o gerador de números aleatórios não é bom para hardware incorporado, como roteadores, no qual o estado inicializável é previsível e a fonte de entropia suficiente é limitada. Para esse tipo de hardware, é recomendável salvar e usar o estado do gerador de números aleatórios (RNG) antes do desligamento, que será usado na próxima inicialização. Nesses casos de roteadores, os atacantes só podem comprometer e prever os números aleatórios gerados se tiverem acesso a todos os links do roteador e estão espionando seus links de comunicação ou se eles acessaram diretamente o estado de RNG salvo do próprio roteador.
Para esta falha do RNG em caso de hardware, os geradores de entropia de terceiros chegam ao resgate. Esses geradores de entropia, como 'Hasged', usam o tempo de cache do processador, dispositivos externos de entrada e entrada de vídeo para aumentar a entropia em um grau aceitável.
Estimativa de entropia:
Como mencionado antes do kernel Linux, determina a aleatoriedade em termos de entropia, mas na verdade não calcula a entropia a cada vez e, em vez disso, usa estimativas de entropia. Várias pesquisas também revelaram que a estimativa de entropia de números aleatórios usados no Linux não é adequada ou mais próxima, tornando assim a aleatoriedade geral dos números mais fracos.
Embora existam algumas fraquezas no gerador de números aleatórios do Linux, mas é uma opção muito melhor em comparação com outros RNGs, para não esquecer os patches em andamento que são fornecidos por colaboradores e desenvolvedores do Linux e desenvolvedores.
Tudo isso foi do meu lado sobre o gerador de números aleatórios no kernel Linux. Eu me diverti muito para espalhar esse conhecimento com você. Espero que você tenha aprendido algo novo com ele e também que você compartilhe o conhecimento mais adiante para o mundo. Por fim, obrigado por investir tempo neste artigo.