O que é um número aleatório vulnerabilidade?

Os computadores são deterministas e, portanto, são previsíveis. Computadores não podem, por si, verdadeiramente gerar números aleatórios.

Na falta de fora da entrada, os computadores só podem criar números pseudo-aleatórios.

Um número aleatório vulnerabilidade ocorre quando um programa usa um método de geração de números aleatórios, que poderá ser:

  1. Não aleatória
  2. Previsível

Para gerar bons números aleatórios, o computador deve ter duas coisas:

  1. Um bom número aleatório geração algoritmo
  2. Um acaso unpredicatable e sementes para a geração de números aleatórios algoritmo

Random Number Vulnerabilidade Exemplos

Considere o seguinte código trecho:

  x = rand (); 

Este código gerado maus números aleatórios porque quando você chamar rand () antes de uma semente foi estabelecido com srand (), ele usa o valor 1 como um padrão de sementes. Nenhuma outra pessoa na mesma máquina com o mesmo compilador que chama rand () com uma semente de 1 terão o mesmo número aleatório como você fez.

Vejamos outro código snippet:

  srand (time (0)); 
  x = rand (); 

Esse código faz apelo srand () com o tempo atual como uma semente. No entanto, este código ainda está inseguro, porque:

  1. O tempo do sistema é uma semente muito mau, porque é previsível dentro de um pequeno intervalo.
  2. O ANSI C rand () função em si não gera bons números aleatórios.

Vamos examinar um terceiro código trecho:

  srandom (hora (0)); 
  x = random (); 

Esse código usa o BSD aleatório () e srandom () funções, que geram muito melhor do que os seus números aleatórios ANSI C antecessores. No entanto, este código utiliza ainda muito pouco tempo () para gerar o número de sementes. A melhor fonte de números aleatórios em sistemas Linux e BSD é o / dev / random dispositivo.

Número Sementes e Random Number Vulnerabilidades

Boa semente números vêm de acontecimentos imprevisíveis, tais como usuário teclas ou movimentos do mouse. Estes não são perfeitos fontes de aleatoriedade, no entanto. Comportamento humano é algo previsível e hardware pode buffer teclado e mouse interrupções, reduzindo a sua aleatoriedade.

Numerosos outros geradores de números aleatórios, estão disponíveis para várias plataformas e ambientes de desenvolvimento. É extremamente difícil criar uma boa, e ainda mais difícil determinar se o gerador de números aleatórios que você criou é realmente gerar números aleatórios e imprevisíveis. O melhor caminho para a maioria das aplicações está a implementar um gerador de números aleatórios existente que tenha sido objecto de público Cripto.

Número aleatório vulnerabilidades são de interesse para os hackers quando podem ser utilizadas para determinar valores de entrada para criptográfico funções. Isto pode ser utilizado em Cripto.

Uso indevido da função chamadas rand () e random () são as causas normais de número aleatório vulnerabilidades.

Fontes de informação adicional sobre a Geração de números aleatórios

Para obter mais informações sobre gerar números aleatórios, leia RFC 1750 - Aleatoriedade Recomendações de Segurança.

"Qualquer tentativa de produzir números aleatórios por meios puramente aritmética é, naturalmente, em estado de pecado." - John von Neumann.
Writing Secure Code Building Secure Software Secure Coding Secure Programming Cookbook
Compra estes excelentes livros sobre programação segura na Amazon.com


Top 5 Free Networking Ferramentas

Bookmark O que é um número aleatório vulnerabilidade?

Latest Blog Posts


Inglês Inglês Alemão Alemão Espanhol Espanhol Francês Francês Italiano Italiano Português Português Russo Russo Holandês Holandês
Grego Grego Hindi Hindi Japonês Japonês Coreano Coreano Chinês Chinês Chinês (simplificado) Chinês (simplificado) Árabe Árabe

Copyright 2009 Tech-FAQ. Todos os direitos reservados. Política de Privacidade.