web-dev-qa-db-fra.com

Pool d'alimentation / dev / entropie aléatoire?

Quelle façon d'alimenter en plus /dev/random pool d'entropie suggéreriez-vous pour produire des mots de passe aléatoires? Ou, existe-t-il peut-être un meilleur moyen de créer localement des mots de passe entièrement aléatoires?

51
pootzko

Vous pouvez l'alimenter avec du bruit blanc de votre puce audio, le cas échéant. Voir cet article: http://www.linuxfromscratch.org/hints/downloads/files/entropy.txt

24
Henri

Tu devrais utiliser /dev/urandom, ne pas /dev/random. Les deux différences entre /dev/random et /dev/urandom sont (je parle de Linux ici):

  • /dev/random pourrait être théoriquement meilleur dans le contexte d'un algorithme sécurisé sur le plan de l'information . C'est le genre d'algorithme qui est protégé contre la technologie d'aujourd'hui, et aussi la technologie de demain, et la technologie utilisée par les extraterrestres, et l'iPad de Dieu aussi. Les algorithmes sécurisés théoriquement sont protégés contre une puissance de calcul infinie. Inutile de dire que de tels algorithmes sont assez rares et si vous en utilisiez un, vous le sauriez. Il s'agit également d'un "pourrait": en interne, /dev/random utilise des fonctions de hachage conventionnelles, il est donc probable qu'il aurait de toute façon des faiblesses s'il était attaqué avec une puissance infinie (rien à craindre pour les attaquants terrestres, cependant).

  • /dev/urandom ne bloquera pas, tandis que /dev/random peut le faire. /dev/random maintient un compteur de "combien d'entropie il a encore" sous l'hypothèse que tout bit qu'il a produit est un bit d'entropie perdu. Le blocage induit des problèmes très réels, par exemple un serveur qui ne démarre pas après une installation automatisée car il stagne sur la création de la clé de son serveur SSH (oui, je l'ai vu). /dev/urandom utilise un générateur de nombres pseudo-aléatoires cryptographiquement fort pour qu'il ne se bloque jamais.

Vous voulez donc utiliser /dev/urandom et arrêtez de vous inquiéter de cette affaire d'entropie.

Vous pouvez maintenant vous soucier de l'entropie si vous écrivez le programme d'installation Linux. L'astuce est que /dev/urandom ne bloque jamais, même quand cela devrait: /dev/urandom est sécurisé tant qu'il a reçu suffisamment d'octets "d'entropie initiale" depuis le dernier démarrage (32 octets aléatoires suffisent). Une installation Linux normale créera une graine aléatoire (à partir de /dev/random) lors de l'installation et enregistrez-le sur le disque. À chaque redémarrage, la graine sera lue, introduite dans /dev/urandom, et une nouvelle graine immédiatement générée (à partir de /dev/urandom) pour le remplacer. Ainsi, cela garantit que /dev/urandom aura toujours suffisamment d'entropie initiale pour produire une alea cryptographiquement solide, parfaitement suffisante pour tout travail cryptographique banal, y compris la génération de mot de passe. Le seul point critique est lors de l'installation: l'installateur doit obtenir une certaine entropie de /dev/random, qui peut bloquer. Ce problème se produit également avec les CD live et autres variantes sans zone de stockage permanent en lecture-écriture. Dans ces situations, vous pouvez rechercher une source d'entropie pour vous assurer que /dev/random sera bien alimenté et ne bloquera pas.

Le système d'exploitation lui-même, et plus précisément le noyau, est au bon endroit pour recueillir l'entropie d'un événement matériel, car il gère le matériel. Il y a donc relativement peu que vous pouvez utiliser pour l'entropie que le noyau n'utilise pas déjà. Une de ces sources restantes est les données de la webcam: une webcam, même face à un mur vierge, produira des données avec un bruit thermique, et comme elle génère beaucoup de données , c'est un bon cueilleur d'entropie. Il suffit donc de saisir quelques images de la webcam, de les hacher avec une fonction de hachage sécurisée (SHA-256), et d'écrire cela dans /dev/urandom. C'est encore une grosse exagération.

50
Thomas Pornin

Je connais démon d'entropie audio et hasge qui est utilisé par démon hasged , essayez-les.

13
krempita

La meilleure valeur que j'ai vue dans un dispositif de hasard HW est la clé d'entropie simtec.
Dispose d'un certain nombre de protections pour se protéger contre les pannes et les attaques. Par exemple, il exécute les tests de hasard FIPS 140-2 sur chaque lot de 20 Ko, s’arrêtant si un nombre statistiquement significatif de tests échoue. J'en ai eu un quand je faisais beaucoup de clés génération pour la recherche DNSSEC, et cela a considérablement accéléré mon travail. Il passe tous les tests de découpage (notez, testez toujours vos flux aléatoires périodiquement, peu importe ce que le vendeur vous dit ;-)

7
spinkham

1) Vous n'avez pas besoin d'ajouter plus d'entropie à /dev/random, pour l'utiliser pour les mots de passe. Le système le fait déjà pour vous.

2) Pour générer un mot de passe aléatoire, il est préférable d'utiliser /dev/urandom, ne pas /dev/random. (/dev/random a quelques problèmes: il bloque, il épuise le pool d'entropie d'une manière qui peut entraîner d'autres utilisateurs de /dev/random bloquer. /dev/urandom est la meilleure interface à usage général.)

3) Voici un script simple que j'utilise pour générer un mot de passe aléatoire. Vous êtes invités à l'utiliser.

#!/bin/sh
# Make a 48-bit password (8 characters, 6 bits per char)
dd if=/dev/urandom count=1 2>/dev/null | base64 | head -1 | cut -c4-11 
7
D.W.

J'utilise une combinaison de sources de données et un bon algorithme de hachage pour générer des données aléatoires.

Sur un serveur Web, vous pouvez combiner les données du serveur (matériel, logiciel, performances), les données client (agent utilisateur, heure de la demande, cookie, variables URL, tout ce que vous pouvez collecter), certaines données externes (comme random.org), mélangez tout avec disons sha1 (mixed_data + time + some_secret_key) et vous obtenez des bits de données aléatoires assez imprévisibles.

Vous pouvez également envisager d'utiliser P2PEG pour collecter facilement l'entropie des clients et du serveur.

2
DUzun

Les mots de passe, s'ils sont courts, sont toujours craquables par la force brute si la vitesse ou le nombre d'essais n'est pas limité. Si, d'autre part, les essais sont limités (par exemple, une connexion interactive), même une petite quantité d'entropie fondamentalement non craquable - le nombre d'essais requis devient très vite prohibitif.

Donc, il ne devrait pas y avoir de cas où l'obtention d'une très bonne entropie pour les mots de passe importerait.

Il suffit donc d'utiliser/dev/urandom, c'est plus que suffisant.

Les autres réponses données ici sont de bons commentaires sur la façon de garder votre/dev/random fourni avec suffisamment d'entropie, si vous en avez besoin.

1
Nakedible