Social Icons

^^

domingo, 17 de abril de 2011

Random Number Vulnerabilidade

Computadores são determinísticos e, portanto, previsível. Os computadores não podem, por si só, gerar realmentenúmeros aleatórios.

Na ausência de entrada de fora, os computadores só podem criar pseudo-aleatória de números.

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

  1. Não é aleatório
  2. Previsível

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

  1. Um algoritmo de geração de bons números aleatórios
  2. Uma semente aleatória e imprevisíveis para o algoritmo de geração de números aleatóriosrandom number vulnerability Random Number Vulnerability

Random Number Vulnerabilidade Exemplos

Considere o seguinte trecho de código:

x = rand (); 

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

Vejamos um outro trecho de código:

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

Esse código faz apelo srand () com o momento atual como uma semente. No entanto, esse código é ainda inseguro, porque:

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

Vamos analisar um trecho de código de terceiros:

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

Esse código usa o BSD srandom () e random () funções, o que gera números aleatórios muito melhor do que seus antecessores C ANSI. No entanto, esse código ainda usa o tempo () para gerar o número de sementes. A melhor fonte tanto para números aleatórios em BSD e Linuxsistemas é o dispositivo / dev / random.

Número de sementes e Vulnerabilidades Random Number

Bom número de sementes provenientes de acontecimentos imprevisíveis, tais como digitação de usuário ou movimentos do mouse. Estes não são fontes de aleatoriedade perfeita, no entanto. O comportamento humano é algo previsível e hardware de computador podem buffer interrupções de teclado e mouse, 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 está gerando números aleatórios e imprevisíveis. O melhor caminho para a maioria das aplicações é a implementação de um gerador de números aleatórios existente que tenha sido submetido a criptoanálise público.

vulnerabilidades de números aleatórios são de interesse para os hackers quando eles podem ser utilizados para determinar valores de entrada para criptográfico funções. Isto pode ser utilizado em criptoanálise.

O uso inadequado do rand chamadas de função () e random () são as causas normais de vulnerabilidades de números aleatórios.

Outras fontes de informações sobre a geração de números aleatórios

Para obter mais informações sobre a geração de 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.

Nenhum comentário:

Postar um comentário

Popular Posts

- Arquivo -

 

Seguidores

Hora exata:

Total de visualizações de página