IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Générateur cryptographique de nombres aléatoires


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Générateur cryptographique de nombres aléatoires
    Bonjour à tous,

    Je cherche à réaliser un générateur cryptographique de nombres pseudo-aléatoires.

    Qu'est-ce que c'est qu'un générateur de nombres aléatoires, pseudo-aléatoires ?

    C'est une fonction qui donne en sortie des nombres. A chaque appel la fonction donne un nombre différent. On l'appelle aléatoire parce que tous ces nombres semblent indépendants les uns des autres. On dit "semblent" car la machine étant totalement déterministe, les algorithmes sont eux même déterministes. Donc les nombres en sortie du générateur dépendent tout de même les uns des autres, mais il est tellement difficile de faire la relation entre les uns et les autres sans la fonction de base que l'on finit par dire qu'ils sont pseudo-aléatoires.

    Qu'est-ce qu'un générateur cryptographique de nombre pseudo-aleatoire ?

    C'est un générateur de nombres aléatoires le moins biaisé possible, c'est à dire qu'il favorise une équiprobabilité de chacunes des sorties du générateur. La plus part des générateurs le font, mais pas assez bien pour une utilisation cryptographique. C'est à dire qu'il faut favoriser l'uniformité des sorties dans le domaine de définition de la sortie de la fonction, de l'algorithme. C'est exactement le contraire de la courbe de Gauss qui donne un maximum à une certaine valeure.

    Pour quoi faire ?

    J'en ai "besoin" afin de pouvoir l'inserer dans un programme de chiffrement à clef symétrique que je développe moi même. J'ai tout de même quelques difficultés à développer un suffisement bon générateur cryptographique de nombres pseudo-aléatoires. J'en ai développé un dont les sorties ont toutes une probabilité de sortie moyenne de 0,1% avec un écart-type de 0,5%, ce qui est bien trop grand pour une utilisation cryptographique.


    Si l'un de vous sait comment développer une telle fonction je lui serais reconnaissant de bien vouloir m'aider. Par la même occasion, je sais qu'il existe un certain nombre de fonctions existant, telles que "Blum Blum Shub", "Fortuna", "ISAAC", cependant je n'arrive pas à trouver les codes sources et quand je les trouve, j'avoue ma difficulté à dénicher une once de documentation pour me permettre d'utiliser ces codes.

    Dans l'attente d'une réponse de votre part,

    phmorin

    PS: j'avais posté ce sujet sur le forum du C mais on m'a dit de le mettre ici.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Mersenne-Twister a un bon point à ce niveau.

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Aurais-tu une idée où je pourrais trouvé l'algorithme et encore mieux un code source en C?

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    si je puis me permettre, Mersenne Twister est recommandé pour l'utilisation en modélisation statistique, notamment pour sa stablité en grande dimension, mais il n'est pas recommandé pour la cryptographie, vu qu'on peut le "casser" assez facilement.

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    L'autre solution, c'est alors d'utiliser un générateur avec hasard fort, mais ça n'existe pas en algorithmie...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,
    Citation Envoyé par jobherzt
    si je puis me permettre, Mersenne Twister est recommandé pour l'utilisation en modélisation statistique, notamment pour sa stablité en grande dimension, mais il n'est pas recommandé pour la cryptographie, vu qu'on peut le "casser" assez facilement.
    Qu'appelles-tu "casser" un générateur pseudo-aléatoire ?
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Qu'appelles-tu "casser" un générateur pseudo-aléatoire
    Une définition simple serait de savoir déterminer le nombre suivant une génération.

    En général, on fait passer des tests de validations des générateurs pseudo aléatoires (pour éviter ce genre de phénomène). La majeure partie de ces tests sont statistiques (test de fréquence, test de séries, tests des intervalles, tests du collectionneur de coupons, et tests de permutations).

    Ya aussi des méthodes qui permettent de "casser" partiellement le générateur. Par exemple en prouvant que sur certaines périodes, le générateur prend autant de valeur pair qu'impair.

    TROLL ON

    Citation Envoyé par Miles
    algorithmie...
    Paraitrait-t-il que le terme algorithmie n'existe pas (même si il est parfois employé à tort), ce serait algorithmique.
    Je ne répondrai à aucune question technique en privé

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par millie
    Paraitrait-t-il que le terme algorithmie n'existe pas (même si il est parfois employé à tort), ce serait algorithmique.
    Effectivement, parfois j'emplois l'un, parfois l'autre, ils sont à priori synonymes.

  9. #9
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    "casser" un generateur aleatoire, cela vet dire : en observant une serie de valeur en sortie du generateur, parvenir a retrouver la "graine" et les eventuels parametres, et donc pouvoir predire la suite... de la suite :-) . il existe un algo qui le fait pour le mersenne twister. c'est assez subtile, mais un algo peut generer une suite qui a les propriété d'une suite impredicitble... mais qui est quand meme predictible meme sans connaitre la graine.

    donc en fait, on ne peut pas distinguer la sortie de mersenne d'une suite aleatoire... mais en fait on peut.. ces 2 affirmations qui semblent se contredire correspondent a 2 aspects mathmeatique differents ! si par exemple tu developpe un algo probabiliste (Miller Rabin, par exemple), ou que tu veux simuler un deplacement aleatoire dans un espace a plusieurs dimensions, Mersenne twister sera plus recommandé qu'un algo cryptographique, car plus riche en propriété statistique. en revanche, pour un algo de chiffrement, cela s'inverse.

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Je ne sais pas si le nombre de tirages et la borne supérieure des nombres aléatoires permettent l'implémentation, mais on peut associer à chaque tirage un nombre le nombre pseudo-aléatoire (venant d'un algo quelquonque) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1 : N1 (1)
    2 -> N2 (2)
    3 -> N3 (3)
    ...
    n -> Nn (n)
    Trier les éléments Ni (i) en ordre croissant fonction de Ni et i.
    Remplacer Ni par la position Px dans le tableau trié modulo la borne des nombres aléatoires.
    Retrier en fonction de n : ce qui pemet d'associer à n la valeur Px dont la répartition sera parfaitement equiprobable.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    graffito, j'avoue que je ne vois pas bien ou tu veux en venir..

  12. #12
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Je répondais à ce besoin :
    C'est à dire qu'il faut favoriser l'uniformité des sorties dans le domaine de définition de la sortie de la fonction, de l'algorithme.
    Le traitement proposé permet d'avoir des répartitions équiprobables.
    le nombre d'occurence d'un nombre étant soit X , soit X+1.
    (X=T div D, avec T=nb de tirages et D=nb de valeurs dans le domaine de définition).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. générateur de nombre aléatoire
    Par ndefta love dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/12/2006, 22h21
  2. Générateur de nombres aléatoires maxwelliens
    Par Selma_2037 dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/11/2006, 15h54
  3. Réponses: 6
    Dernier message: 07/10/2006, 23h12
  4. Générateur de nombres aléatoires
    Par Grand sorcier dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/07/2006, 22h44
  5. Générateurs de nombres aléatoires
    Par Cheps dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/06/2006, 00h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo