Question

Comment désactiver les sources d'entropie?

Voici un petit aperçu de ce que j'essaie de faire.Je construis un petit appareil RNG qui communique avec mon PC via USB.Je veux que ce soit la seule source d'entropie utilisée.J'utiliserai rngd pour ajouter mon appareil comme source d'entropie.

Était-ce utile?

La solution

La réponse rapide est "vous ne le faites pas".

Ne supprimez jamais les sources d'entropie.Les concepteurs du générateur de nombres aléatoires l'ont truqué pour que tous les nouveaux bits aléatoires soient simplement mélangés avec l'état actuel.

Avoir plusieurs sources d'entropie n'affaiblit jamais la sortie du générateur de nombres aléatoires, seulement la renforce.

La seule raison pour laquelle je peux penser à supprimer une source d'entropie est que cela prend du temps CPU ou horloge murale que vous ne pouvez pas vous permettre.Je trouve cela hautement improbable mais si tel est le cas, votre seule option est le piratage du noyau.En ce qui concerne le piratage du noyau, cela devrait être assez simple.Mettez simplement en commentaire tous les appels aux fonctions add _ * _ randomness () dans tout le code source du noyau (les fonctions elles-mêmes se trouvent dans drivers / char / random.c).Vous pouvez simplement commenter le contenu des fonctions, mais vous essayez de gagner du temps dans ce cas et le temps minuscule que prend l'appel de fonction supplémentaire pourrait être trop long.

Autres conseils

Une solution consiste à exécuter une instance Linux distincte dans une machine virtuelle.

Je pense que vous voudrez peut-être un générateur aléatoire rapide.

Modifier J'aurais dû mieux lire la question

Quoi qu'il en soit, frandom est fourni avec une archive tar complète pour le module du noyau afin que vous puissiez découvrez comment créer votre propre module autour de votre périphérique USB. Peut-être que vous pouvez même le faire remplacer / déplacer / dev / urandom afin que des applications arbitraires fonctionnent avec lui au lieu de / dev / urandom (bien sûr, avec suffisamment d'autorisations, vous pouvez simplement renommer les nœuds de périphérique et «tromper» la plupart des applications).


Vous pouvez consulter http://billauer.co.il/frandom.html , qui met en œuvre cela.

  • / dev / urandom n'est-il pas suffisant?
    • Discussions sur la nécessité d'un générateur de nombres aléatoires plus rapide depuis 1996 (que je connais). Mon opinion est que / dev / frandom est aussi nécessaire que / dev / zero, qui crée simplement un flux de zéros. L'opinion opposée commune dit généralement: faites-le dans l'espace utilisateur.
  • Quelle est la différence entre / dev / frandom et / dev / erandom?
    • Au début, j'ai écrit / dev / frandom. Ensuite, il s'est avéré que l'un des avantages de cette suite est qu'elle économise l'entropie du noyau. Mais / dev / frandom consomme 256 octets de données aléatoires du noyau (qui peuvent à leur tour manger de l'entropie) à chaque fois qu'un fichier de périphérique est ouvert, afin d'amorcer le générateur aléatoire. J'ai donc créé / dev / erandom, qui utilise un générateur aléatoire interne pour l'amorçage. Le "F" en frandom signifie "rapide", et "E" pour "économique": / dev / erandom n'utilise aucune entropie du noyau.
  • À quelle vitesse est-ce?
    • Dépend de votre ordinateur et de la version du noyau. Les tests montrent systématiquement 10 à 50 fois plus vite que / dev / urandom.
  • Cela fonctionnera-t-il sur mon noyau?
    • Ce sera probablement le cas, si c'est> 2,6
  • Est-ce stable?
    • Depuis la sortie de la version initiale à l'automne 2003, au moins 100 personnes l'ont essayée (probablement beaucoup plus) sur les systèmes i686 et x86_64. Des rapports de test réussis sont arrivés et aucune plainte. Alors oui, c'est très stable. Quant au caractère aléatoire, il n'y a pas non plus de plaintes.
  • Comment les données aléatoires sont-elles générées?
    • frandom est basé sur l'algorithme de cryptage RC4, qui est considéré comme sécurisé, et est utilisé par plusieurs applications, dont SSL. Commençons par le fonctionnement de RC4: il prend une clé et génère un flux d'octets pseudo-aléatoires. Le chiffrement réel est une opération XOR entre ce flux d'octets et le flux de données en texte clair.
    • Passons maintenant au frandom: chaque fois que / dev / frandom est ouvert, un flux pseudo-aléatoire distinct est initialisé à l'aide d'une clé de 2048 bits, qui est choisie en faisant quelque chose d'équivalent à la lecture de la clé depuis / dev / urandom. Le flux pseudo-aléatoire est ce que vous lisez à partir de / dev / frandom.
    • frandom est simplement RC4 avec une clé aléatoire, juste sans le XOR à la fin.
  • Est-ce que frandom génère de bons nombres aléatoires?
    • En raison de ses origines, les nombres aléatoires ne peuvent pas être trop mauvais. S'ils l'étaient, RC4 ne vaudrait rien. Quant aux tests: Les données directement "copiées" depuis / dev / frandom ont été testées avec la batterie de tests "Diehard", développée par George Marsaglia. Tous les tests ont réussi, ce qui est considéré comme une bonne indication.
  • Le frandom peut-il être utilisé pour créer des tampons uniques (cryptologie)?
    • frandom n'a jamais été destiné à des fins cryptographiques, et aucune pensée particulière n'a été accordée aux attaques. Mais il y a très peu de place pour attaquer le module, et comme le module est basé sur RC4, nous avons le fait suivant: utiliser les données de / dev / frandom comme pad ponctuel équivaut à utiliser l'algorithme RC4 avec un 2048- clé de bit, lire pour
m / dev / urandom.

Conclusion: il est probablement acceptable d'utiliser frandom à des fins de cryptographie.Mais ne le faites pas.Ce n'était pas l'intention.

Remarque supplémentaire, trop grande pour un commentaire:

En fonction de ses paramètres, rngd peut dominer le pool d'entropie du noyau, en lui fournissant tellement de données, si souvent, que d'autres sources d'entropie sont la plupart du temps ignorés ou perdus.Ne faites pas cela à moins que vous ne fassiez confiance à la source de rngd de données aléatoires finalement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top