Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/05/2016, à 07:07

bourinus

Générer des clefs ssh/gpg depuis une source du monde physique.

Bonjour,


Je souhaiterais pouvoir générer des clefs ssh/gpg dont une partie de l’aléa proviendrait du monde réel.
Par exemple en écoutant la rivière à cote de chez moi, le bruit de la ville, les ronrons de mon chat etc.

Idéalement on aurait pu enregistrer une grande quantité de donnée depuis une source physique sur un fichier texte.
Fichier qu'on aurait passé en paramètre a gpg/ssh lors de la génération de clef musclant ainsi /dev/urandom pour l'un et /dev/random pour l'autre.

Or d’après ce que j'ai pu voir cela n'est pas vraiment possible.
Mettons que je soit obstiné, et pense que ma sécurité doive passer par des méthodes 'moities-moities' i.e. méthodes dont les sources d'aléa
proviendraient pour moitié de moyens algorithmiques pure, /dev/urandom ou /dev/random, et l'autre moitie ne proviendrait pas de moyens algorithmiques pures, mais du monde réel.

Pour le problème de la génération de clef, pouvez vous penser a une méthode pratique qui réponde a ce critère 'moitie-moitie' ? smile


D’avance, merci beaucoup,
d

NB: pour l'instant ceci est plus une forme d'exercice, et même avec une option gpg --gen-key rsa --alea-file my_file.txt
en enregistrant les ronrons de nos chats respectifs tels quels, il très vraisemblable que cela n'apporte pas un vrai gain en terme de qualité d’aléa, on s'entend.
Mais c'est ici le principe du 'moitie-moitie' qui m’intéresse.

Hors ligne

#2 Le 15/05/2016, à 17:24

zététix

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

Salut,

ben tu dis à ton utilisateur de bouger sa souris sur l'écran le plus vite possible pendant 10 secondes et toi tu relèves la position du curseur à intervalle de temps aléatoire et là je pense que ça va te donner une séquence de chiffre bien aléatoire ! Ca va pour le "moitié-moitié" ?


Aidez-moi à faire connaître mon projet : RaidGHost, un hébergeur (presque :P) gratuit et sans publicité !

Hors ligne

#3 Le 15/05/2016, à 17:41

bourinus

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

Hello zététix,

Moi et mon utilisateur, on a lut le manuel et l'on sait que l'entropie emmagasiné repose sur les mouvements des souris et les ceux du disque dur. Merci.
Mais si tu a lu mon post tu as du comprendre que "moitié-moitié" signifiait algorithmique et non algorithmique.
Et pour"non algorithmique", je voulais que la source puisse être fixe par moi: par exemple les ronrons de mon chat.

Même si je relevais "la position du curseur à intervalle de temps aléatoire" comme tu dis pour mettre le résultat qq part:
1 - je n'en ferais rien car gpg/ssh ne possède pas d’entrée additionnelle pour une éventuelle source d'entropie secondaire
2- qd bien même cela serait le cas cela serait encore de l'algorithmique pure et dure.

Donc "Ca va pour le "moitié-moitié" ?" réponse archi pas du tout
En tout cas merci d'avoir pris de ton temps pour cette magnifique non réponse d’anthologie multi niveau. C'est gentil.

Dernière modification par bourinus (Le 15/05/2016, à 17:47)

Hors ligne

#4 Le 15/05/2016, à 17:42

Compte anonymisé

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

Certains processeurs Intel incluent un générateur de nombres aléatoire qui est censé augmenter la sécurité. Je ne sais pas comment il fonctionne mais ça doit être un phénomène physique qui génère des mesures aléatoires. Si ça se trouve, ton PC utilise déjà ça sans que tu le saches.

#5 Le 15/05/2016, à 17:56

bourinus

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

Hello TriChromureDeChaton,

Merci pour cette information, es tu certain que ces générateurs aléatoires intel dépendant de mesure physique sont utilise par /dev/(u)random ?
Pourrais tu me donner des références constructeur? Des spécifications ?

Aurais tu une idée pour incorporer une source d’aléa secondaire lors de la génération de clef ?
Une source sous contrôle de l'utilisateur ?

Merci et bonne journee

Hors ligne

#6 Le 15/05/2016, à 18:02

zététix

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

bourinus a écrit :

Moi et mon utilisateur, on a lut le manuel et l'on sait que l'entropie emmagasiné repose sur les mouvements des souris et les ceux du disque dur. Merci.

Je n'ai pas lu le manuel. Quelle page ?

bourinus a écrit :

Mais si tu a lu mon post tu as du comprendre que "moitié-moitié" signifiait algorithmique et non algorithmique.

Je ne vois pas en quoi ce que je propose est différent d'un fichier texte contenant les données brutes d'un "ronron de chat". Ma solution est d'ailleurs plus simple à implémenter dans la pratique.

bourinus a écrit :

je n'en ferais rien car gpg/ssh ne possède pas d’entrée additionnelle pour une éventuelle source d'entropie secondaire

Puisque tu prends les fichiers textuels, tu peux enregistrer les positions du curseurs dedans modulo un hachage quelconque.

bourinus a écrit :

qd bien même cela serait le cas cela serait encore de l'algorithmique pure et dure.

Ce n'est pas parce que la souris est reliée à l'ordinateur que c'est de l'algorithmique pure, dixit "l'entropie emmagasiée par les mouvements du disque dur", ou alors je n'ai pas du tout compris ce que tu entends par "algorithmique pure".

bourinus a écrit :

En tout cas merci d'avoir pris de ton temps pour cette magnifique non réponse d’anthologie multi niveau. C'est gentil.

Inutile d'être désobligeant, les bons scientifiques savent rester humbles wink.


Aidez-moi à faire connaître mon projet : RaidGHost, un hébergeur (presque :P) gratuit et sans publicité !

Hors ligne

#7 Le 15/05/2016, à 19:45

bourinus

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

Hello zététix,

1 - man page: http://manpages.ubuntu.com/manpages/pre … dom.4.html

2 - La différence c'est que /dev/(u)radom sont des générateurs de nombre pseudo aléatoire: on crée de l’aléa sur des bases algorithmiques, "ce qui est péché" dixit John Von Neumann. Alors que  les ronrons de mon chat, plus sérieusement le bruit de ma rivière perso, ou le bruit diffus de l'espace; sont de vrai générateurs de nombre aléatoire. Le top étant une source quantique.

3 - ce que tu propose c'est en partie, déjà au cœur de algorithme générateur de nombre pseudo aléatoire de nos pc. En plus complexe, of course.
J'ai cherche un schéma, que j'ai perdu, représentant le fonctionnement de /dev/urandom: c'est vertigineux. Et ça n'est pas franchement simple a implémenter.

4 - En donnant a manger a mon fichier générateur de clef, une source d'entropie qui ne soit pas issue d'un mic mac algorithmique j’accède a une autre classe de securité. Parole.
"Ce n'est pas parce que la souris est reliée à l'ordinateur que c'est de l'algorithmique pure" => c'est vrai: l’aléa c'est ta souris et en faite, ta souris contient une certaine source d'alea, d'entropie.
Et c'est cette source faible qui va nourrir ton générateur d’aléa pour produire un aléa censé être pure. Ca marche mais c'est une solution faible. Algorithmique par essence.

5 - quid de
Même si je relevais "la position du curseur à intervalle de temps aléatoire" comme tu dis pour mettre le résultat qq part:
je n'en ferais rien car gpg/ssh ne possède pas d’entrée additionnelle pour une éventuelle source d'entropie secondaire"

Pour ce qui est de mon ton désobligeant, peut être que si tu avais soigne ta réponse tu ne l'aurais pas eu. As tu vraiment cherché a comprendre ma question avant de répondre. Saches que je m’excuse dans le cas ou tu l'aurais fait.
Et avant de remettre en question mon manque d'esprit scientifique, saches encore qu’effectivement les vrai scientifiques sont humbles et aussi qu'ils demandent toujours a celui qui pose une question de préciser si celle ci n'est pas clair.
Ensuite y'a réponse, éventuellement.

Hors ligne

#8 Le 15/05/2016, à 20:01

J5012

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

il y a une proposition operatoire chez wikipedia avec des lava lamps : https://fr.wikipedia.org/wiki/G%C3%A9n% … urs_mixtes à defaut d'un generateur quantique wink

et puis y a un paquet qui ajoute des echantillons de nombres aleatoire au noyau, en utilisant votre carte son : randomsound

Hors ligne

#9 Le 15/05/2016, à 20:57

Compte anonymisé

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

bourinus a écrit :

Hello TriChromureDeChaton,

Merci pour cette information, es tu certain que ces générateurs aléatoires intel dépendant de mesure physique sont utilise par /dev/(u)random ?
Pourrais tu me donner des références constructeur? Des spécifications ?

Aurais tu une idée pour incorporer une source d’aléa secondaire lors de la génération de clef ?
Une source sous contrôle de l'utilisateur ?

Merci et bonne journee

L'instruction s'appelle RdRand, et est utilisée dans le noyau pour /dev/(u)random. Ça a posé des problèmes (lien en anglais) à certaines personnes qui, après Snowden, ont du mal à faire confiance à Intel (américain), et ont eu peur que cette instruction ait été biaisée par Intel pour pouvoir casser les clés générées avec. Linus Torvalds (à l'origine de Linux) leur a gentiment répondu qu'ils savaient pas de quoi ils parlaient et qu'ils peuvent aller se faire voir.

Bref, je te raconte tout ça parce que quand on tape RdRand dans Google, on tombe là-dessus. C'est la preuve que le noyau utilise ça.

J'ai trouvé ici ce qui ressemble à des spécifications constructeur. Ça parle d'une "hardware entropy source", mais je n'ai pas trouvé le fonctionnement exact. Je suppose qu'il est gardé secret. Bonne lecture big_smile

Sinon, il reste la page Wikipédia.

Je ne sais pas ce que tu appelles "source sous contrôle de l'utilisateur". Il y a peut-être une option dans GPG pour lui donner de l'entropie supplémentaire, mais je ne l'ai pas trouvée. En tout cas, je pense qu'il utilise /dev/random, donc l'entropie de RdRand se retrouyve probablement dans les clés générées par GPG.

Dernière modification par Compte anonymisé (Le 15/05/2016, à 20:59)

#10 Le 15/05/2016, à 21:23

bourinus

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

Merci bien TriChromureDeChaton,


J'ignorais même l'existence de RdRand et la polémique sur son utilisation.
Le bon cote c'est que donc  /dev/(u)random utilisent déjà une méthode 'moitie moitie'.

Ce que j’appelle une "source sous contrôle de l'utilisateur", cela serait une une source d'alea additionnelle laisse sous la responsabilité de l'utilisateur.
Qui serait utilise en renfort des méthodes algorithmiques base de hash, mesure/estimation d'entropie et loop
et des méthodes "hardware entropy source", comme RdRand, qui normalement visent a fournir un TRNG, vrai générateur de nombre aléatoire.
RdRand concerne les processeurs Ivy Bridge.

En fait ma question se résume a pourquoi gpg ne fournit pas une telle option "alea.txt", qui ne coûte pas chère a implémenter et peut immédiatement lever tout doutes.


Merci pour les liens, je tacherai d'en ramener d'ici qq jours:
NB: gpg utilise /dev/random alors que ssh urilise /dev/urandom

Dans l'article sur Torwlad: citation de Theodore Ts'o
"I am so glad I resisted pressure from Intel engineers to let /dev/random rely only on the RDRAND instruction...
Relying solely on the hardware random number generator which is using an implementation sealed inside a chip which is impossible to audit is a BAD idea."
"Je suis tellement content d'avoir résisté a la pression des ingénieurs d’Intel qui voulaient que /dev/random repose seulement sur l'instruction RdRand...
Reposer seulement sur un générateur de nombre hardware qui utilise une implémentation scellé dans un microprocesseur et qui est impossible a auditer est une MAUVAISE idée".
Je comprends même pas qu'il y ai pu y avoir discussion une seule seconde.

Dernière modification par bourinus (Le 16/05/2016, à 07:50)

Hors ligne

#11 Le 15/05/2016, à 21:34

J5012

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

pour alea.txt , tu peux le programmer dans le programme utilisant /dev/(u)random

tu peux aussi modifier le source /dev/(u)random pour inclure l'alea ...

Hors ligne

#12 Le 15/05/2016, à 23:13

Compte anonymisé

Re : Générer des clefs ssh/gpg depuis une source du monde physique.

J5012 a écrit :

pour alea.txt , tu peux le programmer dans le programme utilisant /dev/(u)random

tu peux aussi modifier le source /dev/(u)random pour inclure l'alea ...

Ça ressemble beaucoup à une incitation à écrire soi-même du code de crypto... big_smile

On devrait t'enfermer, pauvre fou.

(je rigole, mais pas tellement en fait mad )

La règle d'or dans la crypto, et la sécurité en général, c'est de laisser faire les pros. Parce que c'est tellement facile de vouloir améliorer un truc avec une idée random qu'on a eue, pour finalement écrire un code bogué qui détruira toute la sécurité.

Bourinus, si tu as du mal à faire confiance à une boîte noire, tu devrais plutôt lire le code de tes programmes. C'est le seul moyen de leur faire totalement confiance.