web-dev-qa-db-fra.com

Tomcat prend trop de temps pour démarrer - Java SecureRandom

S'il vous plaît ne marquez pas comme un doublon. C'est une question de suivi pour ces deux questions.

Je comprends cela, en remplaçant

securerandom.source=file:/dev/urandom

avec

securerandom.source=file:/dev/./urandom

dans $Java_PATH/jre/lib/security/Java.security va résoudre ce problème.

Ma question est la suivante: est-il possible de le faire en production? Cela aura-t-il un impact sur la sécurité (comme l'identification de session devenant prévisible)? Si cela est moins sécurisé, existe-t-il un autre moyen de donner assez d'entropie plus rapidement?

Mettre à jour

J'utilise openstack pour le déploiement (ou disons simplement, utilise AWS ou GCP ou tout autre fournisseur de cloud). Ainsi, ajouter un périphérique matériel tel qu'une carte son n'est pas une option pour moi.

17
so-random-dude

Après quelques recherches approfondies sur Google avec les bons termes de recherche, je suis tombé sur cet article de Nice sur DigitalOcean . Je ne fais que citer la partie pertinente ici.

Il existe deux périphériques aléatoires généraux sur Linux:/dev/random et /Dev/urandom. Le meilleur caractère aléatoire provient de/dev/random, puisqu'il s'agit d'un dispositif de blocage Et attend jusqu'à ce qu'une entropie suffisante soit disponible Pour continuer à fournir une sortie. En supposant que votre entropie soit suffisante, vous Devriez voir la même qualité d’aléatoire de/dev/urandom; Cependant, étant un périphérique non bloquant, il continuera à produire des données «aléatoires» , même lorsque le pool d'entropie sera épuisé. Cela peut entraîner une perte de qualité des données aléatoires , Car il est beaucoup plus probable que des données précédentes se répètent. Beaucoup de problèmes peuvent se produire lorsque l'entropie disponible est réduite sur un serveur de production , en particulier lorsque ce serveur exécute des fonctions cryptographiques .

Donc, c'est un risque de sécurité potentiel.

Solution pour le remplissage de piscines d'entropie

Linux obtient déjà des données aléatoires de très bonne qualité à partir de sources matérielles différentes , mais puisqu'un ordinateur dépourvu de têtes ne possède généralement pas de clavier ni de souris, il génère beaucoup moins d'entropie. Les disques Et les E/S réseau représentent la majorité des sources de génération d'entropie Pour ces machines, et celles-ci produisent des quantités d'entropie très rares. Depuis très peu de machines sans tête, comme les serveurs ou le cloud. Les serveurs/machines virtuelles disposent de toutes les solutions RNG matérielles dédiées, . Il existe plusieurs solutions utilisateur permettant de générer une entropie supplémentaire en utilisant des interruptions matérielles provenant de périphériques plus "bruyants" que durs. disques, comme les cartes vidéo, les cartes son, etc. Cela s'avère encore une fois être un problème pour pour les serveurs, malheureusement, car ils ne contiennent généralement pas

Solution: avoir

Basé sur le principe HAVEGE, et précédemment sur sa bibliothèque Associée, hasged permet de générer un caractère aléatoire en fonction des variations du temps d'exécution du code Sur un processeur. Puisqu'il est presque impossible pour Un morceau de code de prendre le même temps exact pour s'exécuter, même dans le même environnement Sur le même matériel, le moment d'exécution d'un seul Ou plusieurs programmes devraient convenir pour ensemencer une source aléatoire. Les Ont généré les sources d'implémentation de la source aléatoire de votre système (généralement /Dev/random) en utilisant des différences dans le compteur d'horodatage de votre processeur (TSC) après l'exécution répétée d'une boucle

Comment installer asged

Suivez les étapes décrites dans cet article. https://www.digitalocean.com/community/tutorials/how-to-setup-addopy-entropy-for-cloud-servers-using-haveged

9
so-random-dude

Si quelqu'un a ce problème

Je viens de résoudre le mien en enlevant simplement tous les BREAKPOINTS du débogueur.

0
Leroy