OVH Cloud OVH Cloud

Entropie d'un syst=c3=a8me et /dev/random

56 réponses
Avatar
Sylvain
Bonjour,

J'utilise /dev/random (et non urandom) pour créer des mots de passe sous
Débian.

J'ai lu que /dev/random exploite l'entropie de l'ordinateur pour la
génération de nombres "pseudo" aléatoires. Mais il n'est pas précisé de
quelles sources d'entropie il s'agit. Parmi ces sources, j'ai compris
qu'il y a les mouvements de la souris et les écritures disques. En
l'absence d'entropie, random ne génère plus de chiffre et bloque le
logiciel. Il suffit alors de bouger la souris pour faire avancer la
génération.

J'aimerais connaître les autres sources d'entropie afin d'éviter que mon
logiciel bloque de temps à autre en attendant que cette entropie soit
suffisante pour générer de nouveaux chiffres. Mon idée est de créer un
fork afin de générer l'entropie attendue par le générateur sans avoir à
bouger la souris.

Merci,
Sylvain

10 réponses

2 3 4 5 6
Avatar
zeLittle
"Nicolas George" a écrit dans le message de groupe de discussion :
5c8659af$0$19268$
Je comprends à peu près. Ma réponse est : si le résultat après ça n'est
pas un PRNG sans biais détectable sur les nombres générés pendant le
premier milliard d'années à la vitesse actuelle, alors tu ferais mieux
de changer de métier.
Et ton boss aussi.

Là, c'est moi qui ne comprends rien: jamais entendu parler du PRNG.
Dis moi Nicolas, est-ce que tu pourrais nous faire un tout petit topo
exhaustif, du genre photo-reportage de bric et de broc avec une prose imagée
catégorisable dans la catégorie "du comment occuper les cons avec ce que
permet un PRNG, sachant qu'il ne permet pas `ceci` ou `cela` mais qu'on se
garde bien de vous le dire"?
Le genre de post figurant parmi les "must", qu'on puisse imprimer, agrafer
et archiver?
Avatar
zeLittle
"Nicolas George" a écrit dans le message de groupe de discussion :
5c8659af$0$19268$
Je comprends à peu près. Ma réponse est : si le résultat après ça n'est
pas un PRNG sans biais détectable sur les nombres générés pendant le
premier milliard d'années à la vitesse actuelle, alors tu ferais mieux
de changer de métier.
Et ton boss aussi.

Là, c'est moi qui ne comprends rien: jamais entendu parler du PRNG.
Dis moi Nicolas, est-ce que tu pourrais nous faire un tout petit topo
exhaustif, du genre photo-reportage de bric et de broc avec une prose imagée
catégorisable dans la catégorie "du comment occuper les cons avec ce que
permet un PRNG, sachant qu'il ne permet pas `ceci` ou `cela` mais qu'on se
garde bien de vous le dire"?
Le genre de post figurant parmi les "must", qu'on puisse imprimer, agrafer
et archiver?
Avatar
Doug713705
Le 2019-03-12, zeLittle nous expliquait dans
fr.comp.os.linux.debats
(<5c87a5e7$1$21613$) :
"Nicolas George" a écrit dans le message de groupe de discussion :
5c8659af$0$19268$
Je comprends à peu près. Ma réponse est : si le résultat après ça n'est
pas un PRNG sans biais détectable sur les nombres générés pendant le
premier milliard d'années à la vitesse actuelle, alors tu ferais mieux
de changer de métier.
Et ton boss aussi.

Là, c'est moi qui ne comprends rien: jamais entendu parler du PRNG.
Dis moi Nicolas, est-ce que tu pourrais nous faire un tout petit topo
exhaustif, du genre photo-reportage de bric et de broc avec une prose imagée
catégorisable dans la catégorie "du comment occuper les cons avec ce que
permet un PRNG, sachant qu'il ne permet pas `ceci` ou `cela` mais qu'on se
garde bien de vous le dire"?
Le genre de post figurant parmi les "must", qu'on puisse imprimer, agrafer
et archiver?

Mieux que ça, il ny a une page Wikipedia pour ça:
https://en.wikipedia.org/wiki/Pseudorandom_generator
En français:
https://fr.wikipedia.org/wiki/Générateur_de_nombres_pseudo-aléatoires
Rien n'empèche de l'imprimer, de l'agrafer et de l'archiver ;-)
--
Je ne connaîtrai rien de tes habitudes
Il se peut même que tu sois décédée
Mais j'demanderai ta main pour la couper
-- H.F. Thiéfaine, L'ascenceur de 22H43
Avatar
Doug713705
Le 2019-03-12, zeLittle nous expliquait dans
fr.comp.os.linux.debats
(<5c87a5e7$1$21613$) :
"Nicolas George" a écrit dans le message de groupe de discussion :
5c8659af$0$19268$
Je comprends à peu près. Ma réponse est : si le résultat après ça n'est
pas un PRNG sans biais détectable sur les nombres générés pendant le
premier milliard d'années à la vitesse actuelle, alors tu ferais mieux
de changer de métier.
Et ton boss aussi.

Là, c'est moi qui ne comprends rien: jamais entendu parler du PRNG.
Dis moi Nicolas, est-ce que tu pourrais nous faire un tout petit topo
exhaustif, du genre photo-reportage de bric et de broc avec une prose imagée
catégorisable dans la catégorie "du comment occuper les cons avec ce que
permet un PRNG, sachant qu'il ne permet pas `ceci` ou `cela` mais qu'on se
garde bien de vous le dire"?
Le genre de post figurant parmi les "must", qu'on puisse imprimer, agrafer
et archiver?

Mieux que ça, il y a une page Wikipedia pour ça:
https://en.wikipedia.org/wiki/Pseudorandom_generator
En français:
https://fr.wikipedia.org/wiki/Générateur_de_nombres_pseudo-aléatoires
Rien n'empèche de l'imprimer, de l'agrafer et de l'archiver ;-)
--
Je ne connaîtrai rien de tes habitudes
Il se peut même que tu sois décédée
Mais j'demanderai ta main pour la couper
-- H.F. Thiéfaine, L'ascenceur de 22H43
Avatar
Sylvain
Le 12/03/2019 à 12:09, remy a écrit :
juste par curiosité,test ton aléa avec
http://www.fourmilab.ch/random/
il y en a pour 10 minute
cdl remy

Les tests sont réalisés sur des générations de 256 caractères, soit
alphanumériques soit étendus (accessibles au clavier).
Pour /dev/random :
------------------
Test 1, alphanumérique :
Entropy = 5.809202 bits per byte.
Optimum compression would reduce the size
of this 258 byte file by 27 percent.
Chi square distribution for 258 samples is 1045.81, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 87.3295 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is 0.010354 (totally uncorrelated
= 0.0).
Test 2, alphanumérique :
Entropy = 5.821990 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 27 percent.
Chi square distribution for 257 samples is 1007.06, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 88.4942 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is 0.053500 (totally uncorrelated
= 0.0).
Test 3, caractères étendus :
Entropy = 6.295568 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 21 percent.
Chi square distribution for 257 samples is 684.32, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 77.7743 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is -0.045732 (totally
uncorrelated = 0.0).
Test 4, caractères étendus :
Entropy = 6.239974 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 22 percent.
Chi square distribution for 257 samples is 716.20, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 79.6576 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is -0.092714 (totally
uncorrelated = 0.0).
Pour /dev/urandom :
-------------------
Test 1, alphanumérique :
Entropy = 5.831114 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 27 percent.
Chi square distribution for 257 samples is 991.12, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 85.6187 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is 0.028588 (totally uncorrelated
= 0.0).
Test 2, alphanumérique :
Entropy = 5.736589 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 28 percent.
Chi square distribution for 257 samples is 1082.77, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 87.1167 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is 0.056510 (totally uncorrelated
= 0.0).
Test 3, caractères étendus :
Entropy = 6.169022 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 22 percent.
Chi square distribution for 257 samples is 787.92, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 77.9689 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is 0.038211 (totally uncorrelated
= 0.0).
Test 4, caractères étendus :
Entropy = 6.313077 bits per byte.
Optimum compression would reduce the size
of this 257 byte file by 21 percent.
Chi square distribution for 257 samples is 666.39, and randomly
would exceed this value less than 0.01 percent of the times.
Arithmetic mean value of data bytes is 77.8249 (127.5 = random).
Monte Carlo value for Pi is 4.000000000 (error 27.32 percent).
Serial correlation coefficient is -0.110998 (totally
uncorrelated = 0.0).
Avatar
Sylvain
Le 13/03/2019 à 14:11, Sylvain a écrit :
Le 12/03/2019 à 12:09, remy a écrit :
juste par curiosité,test ton aléa avec
http://www.fourmilab.ch/random/
il y en a pour 10 minute
cdl remy

Les tests sont réalisés sur des générations de 256 caractères, soit
alphanumériques soit étendus (accessibles au clavier).

En effet, pour ces tests, il ne semble pas y avoir de grosses
différences entre /dev/random et /dev/urandom...
Avatar
Michel Talon
Le 13/03/2019 à 14:15, Sylvain a écrit :
En effet, pour ces tests, il ne semble pas y avoir de grosses
différences entre /dev/random et /dev/urandom...

Si yu veux voir une implémentation du "Mersenne twister" il y en a une
dans le logiciel de calcul formel maxima. C'est comme ça que marche la
fonction random de maxima.
--
Michel Talon
Avatar
remy
Le 13/03/2019 à 14:15, Sylvain a écrit :
Le 13/03/2019 à 14:11, Sylvain a écrit :
Le 12/03/2019 à 12:09, remy a écrit :
juste par curiosité,test ton aléa avec
http://www.fourmilab.ch/random/
il y en a pour 10 minute
cdl remy

Les tests sont réalisés sur des générations de 256 caractères, soit
alphanumériques soit étendus (accessibles au clavier).

En effet, pour ces tests, il ne semble pas y avoir de grosses
différences entre /dev/random et /dev/urandom...

la sortie de mon generateur
http://remyaumeunier.chez-alice.fr/testAlea.php
le tout est testé avec le programme ent les résultats au form at texte
sont
http://remyaumeunier.chez-alice.fr/codeSourceGene/gene.txt
et je te laisse la conclusion
remy
--
http://remyaumeunier.chez-alice.fr/
toujours autant dyslexique
Avatar
Sylvain
Le 13/03/2019 à 16:57, remy a écrit :
Le 13/03/2019 à 14:15, Sylvain a écrit :
Le 13/03/2019 à 14:11, Sylvain a écrit :
Le 12/03/2019 à 12:09, remy a écrit :
juste par curiosité,test ton aléa avec
http://www.fourmilab.ch/random/
il y en a pour 10 minute
cdl remy

Les tests sont réalisés sur des générations de 256 caractères, soit
alphanumériques soit étendus (accessibles au clavier).

En effet, pour ces tests, il ne semble pas y avoir de grosses
différences entre /dev/random et /dev/urandom...

la sortie de mon generateur
http://remyaumeunier.chez-alice.fr/testAlea.php
 le tout est testé avec le programme ent les résultats au format texte
sont
http://remyaumeunier.chez-alice.fr/codeSourceGene/gene.txt
et je te laisse la conclusion
remy

Wikipedia :
"On calcule la sortie de BBS en itérant la suite : x n + 1 = ( x n ) 2
mod M {displaystyle x_{n+1}=(x_{n})^{2}!mod M}
x_{{n+1}}=(x_{n})^{2}!mod M où "mod" est l'opérateur reste lors de la
division par M = p q {displaystyle M=p,q} M=p,q, le produit de deux
grands nombres premiers p {displaystyle p} p et q {displaystyle q} q.
La sortie de l'algorithme est le bit le moins significatif ou les
derniers bits de x n + 1 {displaystyle x_{n+1}} x_{{n+1}}.
Les deux nombres premiers, p {displaystyle p} p et q {displaystyle q}
q, devraient tous deux être congrus à 3 modulo 4 (cela garantit que
chaque résidu quadratique possède une racine carrée qui soit également
un résidu quadratique) et le PGCD de φ {displaystyle varphi } varphi
( p ) {displaystyle (p)} {displaystyle (p)} et φ {displaystyle
varphi } varphi ( q ) {displaystyle (q)} (q) doit être petit (ce qui
fait que le cycle est long)"
BBS est certainement très performant, tes tests le montrent, mais pour
mon usage c'est beaucoup trop lourd : comment établis-tu les deux grands
nombres premiers nécessaires et répondant aux critères ? Je suppose en
plus qu'il faut les changer régulièrement pour ne pas retomber sur les
mêmes séquences.
Sylvain
Avatar
remy
Le 13/03/2019 à 17:43, Sylvain a écrit :
Le 13/03/2019 à 16:57, remy a écrit :
Le 13/03/2019 à 14:15, Sylvain a écrit :
Le 13/03/2019 à 14:11, Sylvain a écrit :
Le 12/03/2019 à 12:09, remy a écrit :
juste par curiosité,test ton aléa avec
http://www.fourmilab.ch/random/
il y en a pour 10 minute
cdl remy

Les tests sont réalisés sur des générations de 2 56 caractères, soit
alphanumériques soit étendus (accessibles au clavier).

En effet, pour ces tests, il ne semble pas y avoir de grosses
différences entre /dev/random et /dev/urandom...

la sortie de mon generateur
http://remyaumeunier.chez-alice.fr/testAlea.php
  le tout est testé avec le programme ent les résu ltats au format
texte sont
http://remyaumeunier.chez-alice.fr/codeSourceGene/gene.txt
et je te laisse la conclusion
remy

Wikipedia :
"On calcule la sortie de BBS en itérant la suite : x n + 1 = ( x n ) 2
mod M {displaystyle x_{n+1}=(x_{n})^{2}!mod M}
x_{{n+1}}=(x_{n})^{2}!mod M où "mod" est l'opérateur rest e lors de la
division par M = p q {displaystyle M=p,q} M=p,q, le produit de deux
grands nombres premiers p {displaystyle p} p et q {displaystyle q} q.
La sortie de l'algorithme est le bit le moins significatif ou les
derniers bits de x n + 1 {displaystyle x_{n+1}} x_{{n+1}}.
Les deux nombres premiers, p {displaystyle p} p et q {displaystyle q}
q, devraient tous deux être congrus à 3 modulo 4 (cela garant it que
chaque résidu quadratique possède une racine carrée qui soit également
un résidu quadratique) et le PGCD de φ {displaystyle varphi } varphi
( p ) {displaystyle (p)} {displaystyle (p)} et φ {displaystyle
varphi } varphi ( q ) {displaystyle (q)} (q) doit être petit (c e qui
fait que le cycle est long)"
BBS est certainement très performant, tes tests le montrent, mais pour
mon usage c'est beaucoup trop lourd : comment établis-tu les deux grands
nombres premiers nécessaires et répondant aux critères ? Je suppose en
plus qu'il faut les changer régulièrement pour ne pas retombe r sur les
mêmes séquences.
Sylvain

bon ok je reprend mon code n’utilise pas la formule bbs
les résultas que j'ai poste sont issu de mon générateur de nombre pseudo
aléatoire mon algo et decrit ici
http://remyaumeunier.chez-alice.fr/pdf/conference.pdf
en gros tu prend 2 nombre premier puis tu calcule px modulo py=et tu
récupère quelque bit de poid faible et tu change l'un ou les 2 nombres
premiers
pour généré des nombre premier soit tu utilise mon approch e
elle a l'avantage de pourvoir synchronise les générateurs de no mbre
aléatoire
en gros bob et alice on le même résulta si il on la même g rain ou point
de départ
si tu veux QUE des nombres aléatoire et donc tu te fou de la
reproductibilité du résulta
un truc du style en java devrais sufir
Random rnd = new Random();
p1 = BigInteger.probablePrime(1024, rnd); un de 1024
p2 = BigInteger.probablePrime(512, rnd); un de 512
p1%p2 tu récupéré 1 ou 2 bits de poid faible attention il sont tout les
2 impaire par définition donc pas le dernier bits
et tu change les 2 nombres premier
p1 = BigInteger.probablePrime(1024, rnd);
p2 = BigInteger.probablePrime(512, rnd);
cdl remy
il utilise mon generateur de grand nombre premier
--
http://remyaumeunier.chez-alice.fr/
toujours autant dyslexique
2 3 4 5 6