GPG में पर्याप्त एन्ट्रापी नहीं है


86

मुझे पृष्ठभूमि में चल रही प्रक्रियाओं का एक टन मिल गया है ताकि कोशिश करें और पर्याप्त एन्ट्रापी प्राप्त कर सकें, लेकिन मैं अभी भी असफल हो रहा हूं।

**We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 210 more bytes)**

मुझे उस कुंजी को उत्पन्न करने के लिए एक विधि की आवश्यकता है जो काम करती है, जो मैं करने की कोशिश कर रहा हूं वह स्पष्ट रूप से विफल हो रहा है।

जवाबों:


112

क्या आपकी नज़र आरएनजी पर है?

फेडोरा / Rh / Centos प्रकार: sudo yum install rng-tools

डिबेट प्रकारों पर: sudo apt-get install rng-toolsइसे सेट करने के लिए।

फिर sudo rngd -r /dev/urandomचाबी बनाने से पहले चलाएं ।

संदर्भ: http://it.toolbox.com/blogs/lim/how-to-generate-enough-entropy-for-gpg-key-generation-process-on-fedora-linux-38022


4
इसके अलावा, एक और अधिक गंभीर नोट पर, आप उपयोग कर सकते हैं sudo apt-get install rng-toolsयदि आप उबंटू पर हैं sudo yum install rng-utilsजैसे कि फेडोरा के लिए है, क्योंकि rng-utilsउबंटू के लिए कोई पैकेज मौजूद नहीं है।
जेसन स्वेट

4
पैकेज का नाम rng-toolsफेडोरा और ईएल 6 दोनों पर है, इसलिए मुझे लिंक किए गए लेख में एक टाइपो पर संदेह है। BTW, यह उत्तर में आवश्यक भागों और संदर्भ के लिए लिंक प्रदान करने के लिए एक अच्छा विचार है, अगर भविष्य में लिंक मृत हो जाता है।
माइकल हैम्पटन

11
यूरेनियम में कोई "कम-गुणवत्ता वाली एन्ट्रापी" या "नकली एन्ट्रॉपी" नहीं है। उरजनी उसी कोड को / dev / random कहते हैं। CSPRNG में अतिरिक्त यादृच्छिकता को फीड करने की आवश्यकता नहीं है (बूटटाइम को छोड़कर, और वहां आपके वितरण को ध्यान रखना चाहिए)। यह एक मिथक है और इसका प्रचार नहीं किया जाना चाहिए। उदाहरण के लिए देखें sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers या यह वीडियो: media.ccc.de/v/32c3-7441-the_plain_sepple_reality_of_entropy
सेबेस्टियन


2
अधिकांश उच्च मतदान वाली टिप्पणी बकवास है; दुर्भाग्य से मैं एसओ पर यह बहुत देखता हूं। चेतावनियां (पूरी तरह से गलत होने पर भी) बहुत सारे वोट मिलेंगे और उन्हें सही करने का कोई तरीका नहीं होगा (कोई टिप्पणी नहीं विकल्प) का अर्थ है कि हम मिथकों से छुटकारा नहीं पा सकते हैं।
स्टिजन डे विट

28

मैं द्वारा कुंजी उत्पन्न करने में सक्षम था

apt-get install rng-tools

एक और SSH विंडो खुली

 gpg --gen-key

अपने पहले एसएसएच सत्र पर वापस जाएं और चलाएं

sudo rngd -r /dev/urandom

जब तक gpg आपकी कुंजी उत्पन्न करता है तब तक इसे चलने दें!


9
मैं निश्चित रूप /dev/urandomसे किसी भी महत्व की चाबियाँ बनाने के लिए उपयोग करने के खिलाफ निश्चित रूप से सिफारिश करूंगा ।
एंड्रयू बार्बर

12
@AndrewBarber बकवास। यह अनुशंसित विधि है।
डेविड श्वार्ट्ज

3
@AndrewBarber यह स्पष्ट रूप से उस उद्देश्य के लिए बनाया गया है। असल में, /dev/randomएक डिजाइन गलती है। यह केवल पहले (कभी) आह्वान (पहले बूट पर) को कभी भी अवरुद्ध करना चाहिए जब कोई भी एंट्रॉपी अभी तक एकत्र नहीं की गई थी। जैसे यह दूसरे OS पर करता है। इसके बजाय अब हमें दो पूल मिले। बस कभी इसका उपयोग न करें /dev/randomइसके कोई फायदे नहीं हैं।
स्टिजन डे विट

@AndrewBarber आप इसके बजाय क्या सुझाएंगे?
कोडेनिंजा

13

वर्तमान में उपलब्ध एंट्रॉपी के बाइट्स की मात्रा की जांच करने के लिए, उपयोग करें

cat /proc/sys/kernel/random/entropy_avail

एन्ट्रापी बकेट 4096 बाइट्स बड़ी है, जो बहुत जल्दी खत्म हो सकती है।

इस छोटे 'रीड्सपीड' टूल ( http://1wt.eu/tools/readspeed/ ) का उपयोग करके , आप माप सकते हैं कि एंट्रॉपी बाल्टी कितनी तेजी से विभिन्न तरीकों से भरी हुई है।

उदाहरण के लिए, लॉन्च करें:

$ ./readspeed < /dev/random

और अपने माउस को घुमाएँ। आप देखेंगे कि 'readdspeed' एन्ट्रापी बाल्टी को भरते ही खाली कर देता है, और जब आप माउस को हिलाते हैं, तो वह थोड़ा भर जाता है।

विभिन्न तरीकों की कोशिश करते हुए, ऐसा लगता है कि कीबोर्ड इनपुट और माउस मूवमेंट उस बाल्टी को फिर से भरने के लिए सबसे अधिक प्रभावी हैं। नेटवर्क स्थानान्तरण और हार्ड ड्राइव प्रतियों का अधिक प्रभाव नहीं है।

अंत में, एन्ट्रापी जेनरेशन डिवाइस उपलब्ध हैं, जैसे कि यह एक: http://www.entropykey.co.uk/


4
यूरेनियम में कोई "निम्न-गुणवत्ता वाली एंट्रॉपी" नहीं है। उरजनी उसी कोड को / dev / random कहते हैं। यह एक मिथक है और इसका प्रचार नहीं किया जाना चाहिए। उदाहरण के लिए देखें sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers या यह वीडियो: media.ccc.de/v/32c3-7441-the_plain_sple_reality_of_entropy
सेबेस्टियन

यह उत्तर 5 साल पुराना है। हमने सोचा था कि तब उर्जैंड रैंडम जितना सुरक्षित नहीं था, लेकिन चीजें बदल गई हैं और यूरेनियम को सुरक्षित माना जाता है।
जूलियन वाहन

1
तथ्य यह है कि यह शुरू से ही सुरक्षित था। 7 साल पहले भी चेतावनी गलत थी।
स्टिजन डे विट

8

रींग-टूल्स के लिए +1

यदि आप ऐसी स्थिति में फंस गए हैं, जैसे कि मैं बिना किसी इनपुट हार्डवेयर (साउंड कार्ड, कीबोर्ड, माउस) के साथ हेडलेस सर्वर पर नए सॉफ्टवेयर (आरएनजी-टूल्स) को स्थापित करने की अनुमति नहीं देता हूं। एन्ट्रापी में जोड़ने के लिए आप एक ही सर्वर से कनेक्ट होने वाले दूसरे टर्मिनल से इस सरल कोड को चला सकते हैं। इससे कोई फर्क नहीं पड़ता कि आप इसे शुरू करने से पहले या बाद में चलाना शुरू करते हैंgpg --gen-key

$ nice -n 19 bash
$ until [ $COUNT -lt 1 ]; do
  let COUNT=`cat /proc/sys/kernel/random/entropy_avail`
  echo "`date` COUNTER $COUNT"
done

पहली पंक्ति एक नया बैश शेल शुरू करना है, जिसमें कम प्राथमिकता (मुझे कई उपयोगकर्ताओं द्वारा साझा किए गए सर्वर पर अच्छा होना चाहिए)। जब तक लूप अनंत नहीं होता है, इसलिए कुंजी उत्पन्न होने के बाद इसे तोड़ना याद रखें। यह सब वह कर रहा है जिससे नेटवर्क ट्रैफिक में प्रवेश में वृद्धि हो रही है। यह एन्ट्रापी_वेल काउंटर को भी दिखाता है कि यह कैसे भरा जाता है और दूसरी ओर gpg द्वारा खाली किया जाता है। मेरे मामले में, काउंटर को जल्दी से 64 तक भर दिया गया और 0 पर वापस खाली कर दिया गया (अनुमान है कि जीपीएस 64 के चंक में उठा है)। मैं सर्वर पर 3 घंटे से अधिक के लिए 4096 बिट कुंजी की प्रतीक्षा कर रहा था। इस स्क्रिप्ट को शुरू करने के बाद, यह 5 मिनट से कम समय में समाप्त हो गया।


मुझे दूरस्थ सर्वर पर रूट एक्सेस नहीं मिला और इसने कुछ एन्ट्रापी बनाने में काम किया। मुझे लगता है कि हालत को बदलना चाहिए [ $COUNT -lt 0 ]। क्योंकि वास्तव में कम एन्ट्रॉपी वाली प्रणाली के लिए , यह कभी-कभी 0 पर पहुंच जाता है और रुक जाता है। जीपीजी वास्तव में एन्ट्रापी भूखा है।
अजय ब्रह्मक्षत्रिय

धन्यवाद, यह मेरे लिए एक airgapped बॉक्स पर कुछ ट्राफी की पीढ़ी बनाने के लिए बहुत होना चाहिए। सिवाय इसके कि मैं तारीख का उपयोग नहीं करूंगा क्योंकि यह अनुमानित है
grepsedawk

7

मैं एक 4096 कुंजी के साथ उत्पन्न करने के लिए अपने हेडलेस Ubuntu 14.04 सर्वर पर एन्ट्रापी उत्पन्न करने के लिए बाध्य और दृढ़ था gpg --gen-key

इसमें हेजेज नामक एन्ट्रापी उत्पन्न करने के लिए एक पैकेज है। स्थापित करने का उदाहरण:

sudo apt-get install haveged

मुझे sudo apt-get install rng-toolsनिम्नलिखित परीक्षण में एक निर्भरता थी क्योंकि मुझे यह करना था ।

एक परीक्षण का उदाहरण यह देखने के लिए कि क्या उकसावे में प्रवेश होता है:

cat /dev/random | rngtest -c 1000

किसी भी यादृच्छिक संख्या जनरेटर में विफलताओं की एक बहुत छोटी राशि स्वीकार्य है, लेकिन आप hovered का उपयोग करते समय 998-1000 सफलताओं को बहुत बार देखने की उम्मीद कर सकते हैं।

मुझे यहां एक ट्यूटोरियल में इसके बारे में पता चला:

https://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged

मेरे पास दौड़ने के बाद अब चाबी है gpg --gen-key


0

मैं इस मुद्दे में भाग गया जब pacman-key --initआर्च में चल रहा था। यहाँ अन्य समाधान मेरे लिए अच्छी तरह से काम नहीं करते थे, लेकिन मैंने पाया कि मेरे राउटर को केवल बाढ़ने से काम होता है:ping -f ip.of.my.router


0

यहाँ प्रस्तुत समाधानों की तुलना में, यह मेरे विचार से आसान है:

ls -R /

आरएसए / 4096 कुंजी जोड़ी बनाने के लिए आवश्यक एन्ट्रापी प्रदान करने के लिए ऊपर दिए गए कमांड द्वारा प्रदान की गई यादृच्छिक बाइट्स पर्याप्त थीं।

से लिया गया: https://www.thingy-ma-jig.co.uk/blog/22-01-2010/generate-entropy-gnupg


0

havegedसबसे अच्छा तरीका है, लेकिन अगर आप कुछ भी स्थापित नहीं कर सकते हैं, तो आप मैन्युअल रूप से एन्ट्रॉपी उत्पन्न कर सकते हैं। इस विधि gpg --gen-kenको मेरी मशीन पर 1-2 मिनट में पूरा करने की अनुमति है (10s के साथ तुलना में haveged)। तो यह लगभग 10x धीमा है।

इसे चलाने के दौरान दूसरे टर्मिनल में चलाएं gpg --gen-key:

while true; do
    # print entropy available
    cat /proc/sys/kernel/random/entropy_avail
    # write a 1 MB stream of zeros to /tmp/foo
    # "conv=fdatasync" flushes the disk cache
    dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync
done

एक लाइन:

while true; do cat /proc/sys/kernel/random/entropy_avail; dd bs=1M count=1 if=/dev/zero of=/tmp/foo conv=fdatasync; done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.