table of contents
other sections
fr::crypto::rand(3SSL) | OpenSSL | fr::crypto::rand(3SSL) |
NOM¶
rand - Générateur de nombres pseudoaléatoiresSYNOPSIS¶
#include <openssl/rand.h> int RAND_set_rand_engine(ENGINE *engine); int RAND_bytes(unsigned char *buf, int num);int RAND_pseudo_bytes(unsigned char *buf, int num); void RAND_seed(const void *buf, int num);
void RAND_add(const void *buf, int num, int entropy);
int RAND_status(void); int RAND_load_file(const char *file, long max_bytes);
int RAND_write_file(const char *file);
const char *RAND_file_name(char *file, size_t num); int RAND_egd(const char *path); void RAND_set_rand_method(const RAND_METHOD *meth);
const RAND_METHOD *RAND_get_rand_method(void);
RAND_METHOD *RAND_SSLeay(void); void RAND_cleanup(void);
/* Seulement pour Win32 */
void RAND_screen(void);
int RAND_event(UINT, WPARAM, LPARAM);
DESCRIPTION¶
Depuis l’introduction de l’interface de programmation d'ENGINE, la manière recommandée de contrôler les implémentations par défaut est d’utiliser les fonctions d’interface de programmation d'ENGINE. La RAND_METHOD par défaut, telle que définie par RAND_set_rand_method() et renvoyée par RAND_get_rand_method(), n’est utilisée que si ENGINE a été défini comme implémentation « rand » par défaut. Par conséquent, ces deux fonctions ne sont plus recommandées pour contrôler les valeurs par défaut. Si une implémentation RAND_METHOD alternative est en cours d’utilisation (soit définie directement, soit fournie par un module d’ENGINE), alors elle est entièrement responsable de la génération et de la gestion d’un flux de génération de nombres pseudoaléatoires cryptographiquement sûr. Les mécanismes décrits ci-dessous ne reposent que sur l’implémentation de génération de nombres pseudoaléatoires intégrée à OpenSSL et utilisée par défaut. Ces fonctions implémentent un générateur de nombres pseudoaléatoires cryptographiquement sûr. Il est utilisé par d’autres fonctions de bibliothèques, par exemple pour générer des clefs aléatoires, et les applications peuvent l’utiliser quand elles ont besoin de hasard. Un générateur de nombres pseudoaléatoires cryptographique doit être initialisé avec des données non prévisibles comme des mouvements de souris ou des frappes aléatoires de touches par l’utilisateur. C’est décrit dans RAND_add(3). Son état peut être enregistré dans un fichier d’initialisation (consultez RAND_load_file(3)) pour éviter de recommencer le processus d’initialisation à chaque fois que l’application est démarrée. RAND_bytes(3) décrit comment obtenir des données aléatoires du générateur de nombres pseudoaléatoires.FONCTIONNEMENT INTERNE¶
La méthode RAND_SSLeay() implémente un générateur de nombres pseudoaléatoires basé sur une fonction de hachage cryptographique. La description suivante de sa conception est basée sur la documentation de SSLeay : Pour commencer, une déclaration des choses considérées nécessaires pour un bon générateur de nombres aléatoires.- 1.
- Un bon algorithme de hachage pour mélanger les choses et convertir l’« état » du générateur en nombres aléatoires.
- 2.
- Une source de départ d’« état » de hasard.
- 3.
- L’état devrait être très grand. Si le générateur de nombres aléatoires est utilisé pour générer une clef RSA de 4096 bits, (au moins) deux chaînes aléatoires de 2048 bits sont nécessaires. Si l’état du générateur de nombres aléatoires n’a que 128 bits, l’espace de recherche est évidemment limité à 128 bits et non 2048. Ce dernier point est probablement exagéré, mais cela indique vraiment que garder beaucoup d’état du générateur de nombres aléatoires ne serait pas une mauvaise idée. Ce devrait être plus facile de casser un algorithme de chiffrement que de deviner les données d’initialisation du générateur de nombres aléatoires.
- 4.
- Toutes les données d’initialisation du générateur de nombres aléatoires devraient influencer tous les nombres aléatoires suivants générés. Cela implique que toutes les données aléatoires d’initialisation auront une influence sur tous les nombres aléatoires suivants générés.
- 5.
- Lors de l’utilisation des données pour initialiser l’état du générateur de nombres aléatoires, les données utilisées ne devraient pas pouvoir être extraites de l’état du générateur de nombres aléatoires. Ce devrait être impossible car une éventuelle source de données semi-aléatoires « secrètes » pourrait être une clef privée ou un mot de passe. Ces données ne doivent être dévoilées ni par un des nombres aléatoires suivants, ni par un déversement de la mémoire laissé par un plantage de programme.
- 6.
- À partir du même « état » initial, deux systèmes devraient dévier dans leur état du générateur de nombres aléatoires (et donc dans les nombres aléatoires générés) si possible.
- 7.
- À partir d’un flux de sortie de nombres aléatoires, il devrait être impossible de déterminer l’état du générateur de nombres aléatoires ou le nombre aléatoire suivant.
VOIR AUSSI¶
BN_rand(3), RAND_add(3), RAND_load_file(3), RAND_egd(3), RAND_bytes(3), RAND_set_rand_method(3), RAND_cleanup(3)TRADUCTION¶
La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.2015-01-30 | 1.0.1k |