Qu'est-ce qu'un nombre aléatoire vulnérabilité?

Les ordinateurs sont déterministes et sont donc prévisibles. Les ordinateurs ne peuvent pas, en eux-mêmes, de générer des nombres aléatoires vraiment.

En l'absence de contributions extérieures, de l'informatique ne peut créer que des nombres pseudo aléatoires.

Un nombre aléatoire vulnérabilité se produit lorsqu'un programme utilise une méthode de génération de nombres aléatoires qui est soit:

  1. Non aléatoire
  2. Prévisible

Pour générer des nombres aléatoires de manière satisfaisante, l'ordinateur doit disposer de deux choses:

  1. Un bon algorithme de génération de nombres aléatoires
  2. Un hasard et unpredicatable des graines pour la génération de nombres aléatoires algorithme

Random Number Vulnérabilité Exemples

Prenons l'extrait de code suivant:

  x = rand (); 

Ce code de nombres aléatoires générés mauvaise parce que quand vous appelez de rand () avant de semences a été établi avec srand (), il utilise la valeur 1 par défaut semences. Quelqu'un d'autre sur la même machine avec le même compilateur qui appelle rand () avec une graine de 1 auront le même nombre aléatoire, comme vous venez de fait.

Regardons un autre extrait de code:

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

Ce code ne fait appel srand () avec l'heure actuelle comme une graine. Toutefois, ce code est encore incertain, parce que:

  1. Le système le temps est une très mauvaise graine, car il est prévisible dans un petit nombre.
  2. The ANSI C rand () fonction elle-même ne génère pas de bon nombres aléatoires.

Voyons un troisième extrait de code:

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

Ce code utilise la BSD random () et srandom () fonctions, ce qui génère des nombres aléatoires beaucoup mieux que leurs prédécesseurs en C ANSI. Toutefois, ce code utilise toujours le temps () pour générer le nombre de graines. Une bien meilleure source de nombres aléatoires sur les systèmes Linux et BSD est le / dev / random appareil.

Nombre de graines et de Random Number Vulnerabilities

Bon nombre viennent de semences événements imprévisibles tels que des utilisateurs de frappes ou les mouvements de la souris. Ces sources ne sont pas parfaits du hasard, cependant. Le comportement humain est quelque peu prévisible et de matériel informatique peuvent atténuer les interruptions clavier et la souris, la réduction de leur caractère aléatoire.

De nombreux autres générateurs de nombres aléatoires sont disponibles pour différentes plates-formes et environnements de développement. Il est extrêmement difficile de créer un bon, et encore plus difficile de déterminer si le générateur de nombres aléatoires que vous avez créé est vraiment générer des nombres aléatoires et imprévisibles. La meilleure voie pour la plupart des applications est de mettre en oeuvre un générateur de nombres aléatoires qui a été soumis à la cryptanalyse.

Random nombre des vulnérabilités sont d'intérêt pour les pirates quand ils peuvent être utilisés pour déterminer les valeurs d'entrée de cryptographie fonctions. Cela peut être utilisé en cryptanalyse.

L'utilisation abusive de la fonction des appels de rand () et random () sont les causes de la normale de nombre aléatoire vulnérabilités.

Autres sources d'information sur la Production de nombres au hasard

Pour plus d'informations sur la création de nombres aléatoires, lire RFC 1750 - Recommandations pour la sécurité Randomness.

"Quiconque tente de produire des nombres aléatoires par des moyens purement arithmétique, bien sûr, dans un état de péché." - John Von Neumann.
Writing Secure Code Building Secure Software Secure Coding Secure Programming Cookbook
Acheter ces excellents livres sur la programmation sécurisée à Amazon.com


Top 5 Free Networking Tools

Bookmark Qu'est-ce qu'un nombre aléatoire vulnérabilité?

Latest Blog Posts


Anglais Anglais Allemand Allemand Espagnol Espagnol Français Français Italien Italien Portugais Portugais Russe Russe Néerlandais Néerlandais
Grec Grec Hindi Hindi Japonais Japonais Coréen Coréen Chinois Chinois Chinois (simplifié) Chinois (simplifié) Arabe Arabe

Copyright 2009 Tech-FAQ. Tous droits réservés. Politique de confidentialité.