PGP कुंजी के लिए एन्ट्रापी उत्पन्न करें


12

मैं दूरस्थ रूप से एक वीएम पर लॉग ऑन हूं और 4096bit पीजीपी कुंजी उत्पन्न करने की कोशिश कर रहा हूं, यह हमेशा के लिए लटका रहता है क्योंकि कोई एंट्रॉपी नहीं है और चूंकि मैं दूरस्थ डेस्कटॉप के माध्यम से काम कर रहा हूं, इसलिए संभवत: यह माउस आंदोलन को एन्ट्रॉपी के रूप में पहचान नहीं करता है।

मैं कुछ कैसे उत्पन्न कर सकता हूं?

मैंने कोशिश की cat /dev/urandom > /dev/nullलेकिन वह मदद नहीं करता है।

जवाबों:


13

डेटा हो रही बाहर की /dev/randomया /dev/urandomनिश्चित रूप से है नहीं मदद करने के लिए जा रहा है, यह सब कर देगा अपने एन्ट्रापी पूल व्यय करना, मुद्दा और भी बदतर बना रही है। इन दो फ़ाइलों के बीच मुख्य अंतर यह है कि जब भी कर्नेल एंट्रोपी urandomसे बाहर निकलता है , तो कम गुणवत्ता का यादृच्छिक डेटा उत्पन्न करता randomरहेगा , जबकि यह तब तक अवरुद्ध रहेगा जब तक यह ताज़ा उच्च-गुणवत्ता वाले यादृच्छिक डेटा को इकट्ठा नहीं कर सकता। पीजीपी को सुरक्षित कुंजी उत्पन्न करने के लिए उच्चतम संभव यादृच्छिक डेटा की आवश्यकता होती है, इसलिए यह हमेशा उपयोग करेगा /dev/random

आप के आसपास अच्छा यादृच्छिक डेटा है, या कुछ अन्य सर्वर के से निर्यात तो /dev/random, आप कर सकते हैं catयह में अपने सर्वर की /dev/randomअधिक प्राप्त करने के एन्ट्रापी। आपको catएक ही फाइल को कभी भी दो बार नहीं करना चाहिए /dev/random

यदि आप अक्सर अपने आप को एन्ट्रापी से बाहर निकलते हुए पाते हैं, तो आप भी हैव्ड की तरह कुछ स्थापित करने पर विचार कर सकते हैं , एक डेमन जो बैकग्राउंड में एन्ट्रापी को री-जनरेट करता है और आवश्यकतानुसार फिर से भरता /dev/randomहै।

इसके अलावा यह सहानुभूति के /dev/randomलिए मोहक हो सकता है /dev/urandom, लेकिन इसे सुरक्षा जोखिम माना जाना चाहिए क्योंकि इसका उपयोग करने से उत्पन्न कोई भी कुंजी उनके मुकाबले कम सुरक्षित हो सकती है। हालांकि यह एक कम महत्वपूर्ण अनुप्रयोगों के लिए मदद कर सकता है, आपको हर दूसरे संभावित उपयोग पर विचार करना होगा /dev/random, जिसमें अन्य उपयोगकर्ता अपनी चाबियाँ, सीएसआर, आदि उत्पन्न कर रहे हैं।


ध्यान दें कि FreeBSD पर, /dev/randomएक उच्च-गुणवत्ता वाला PRNG है , और सामान्य रूप से ब्लॉक नहीं होना चाहिए।
केविन

@ केविन /dev/randomआधुनिक बीएसडी और लिनक्स पर उच्च गुणवत्ता वाले PRNG हैं, निश्चित रूप से। लेकिन अगर पर्याप्त एन्ट्रापी उपलब्ध नहीं है तो यह ब्लॉक हो जाएगा। दूसरी तरफ, /dev/urandomपर्याप्त मात्रा में उपलब्ध नहीं होने पर ब्लॉक नहीं करेगा , लेकिन इस मामले में इसकी यादृच्छिकता गुणवत्ता पीड़ित हो सकती है। विवरण में लिनक्स और विभिन्न बीएसडी के बीच यादृच्छिक और यूरेनियम के कार्यान्वयन के बीच कई सूक्ष्मताएं हैं, लेकिन उपरोक्त सभी AFAIK पर सही होना चाहिए।
Huygens

लिनक्स पर आप केवल एक होस्ट (जैसे ping 8.8.8.8) पिंग करके अधिक एन्ट्रापी उत्पन्न कर सकते हैं यदि आपके पास एक अन्य नेटवर्क होस्ट है, तो प्रत्येक 100ms में पिंग करने का प्रयास करें (यदि आपका आरटीटी <100ms है)। और / या findअपनी हार्ड डिस्क पर फ़ाइलों को देखने के लिए उपयोग करें और प्रत्येक फ़ाइल खोज के बीच रैम कैश फ्लश करें।
ह्यूजेंस

@Huygens: मेरे द्वारा लिंक किया गया मैन पेज खोलें और Ctrl + F "kern.random.sys.seeded"; डिफ़ॉल्ट रूप से, /dev/randomFreeBSD पर ब्लॉक नहीं होता है।
केविन

1
@ केविन हां, आप सही हैं, एंट्रॉपी पूलिंग या कटाई शायद PRNG "सीडिंग" के दो अलग-अलग तरीके हैं। और मेरे बीएसडी बॉक्स पर कुछ परीक्षण करने के बाद, मुझे पता चला है कि यादृच्छिक और उरुग्वे उसी तरह व्यवहार करते हैं, जब वे पर्याप्त पीआरएनजी उत्पन्न नहीं कर सकते हैं तो वे ब्लॉक करते हैं। dd if=/dev/random of=/tmp/rndtest bs=64M count=1एक ताजा बूट के बाद चलने की कोशिश करें , 64 एमबी फ़ाइल वृद्धि उत्पन्न करने के लिए समय देखने के लिए लगातार 2 रन दिए। मुझे लगा कि मैं इस आशय को इनपुट के रूप में यूरेनियम के साथ नहीं देखूंगा, लेकिन फ्रीबीएसडी लिनक्स के विपरीत, इसके साथ ही अवरुद्ध होने लगता है।
Huygens

9

आप उपयोग कर सकते हैं haveged

haveged एक डेमन है जो जरूरत पड़ने पर एन्ट्रापी उत्पन्न करता है।


हां एप्ट-गेट इंस्टॉल हैवेड
यूवे बर्गर

2
आभासी वातावरण में हैवेड के साथ देखभाल करें। यह हाइपरविजर कॉन्फ़िगरेशन के आधार पर उप-रूपी हो सकता है। इस पृष्ठ को जांचें: wiki.archlinux.org/index.php/Haveged#Virtual_machines
Huygens

4

मैं आपके स्थानीय मशीन पर आपके gpg कुंजियों को उत्पन्न करने की सलाह दूंगा जिसमें रिमोट की तुलना में बहुत बेहतर यादृच्छिकता होगी। और फिर SSH का उपयोग करके कुंजियों को अपने दूरस्थ मशीन पर माइग्रेट करें।

स्थानीय रूप से उत्पन्न करना तेज़ होगा (एन्ट्रापी के लिए अधिक स्रोत), अधिक सुरक्षित (कोई भी इस प्रक्रिया की जासूसी नहीं कर सकता है यदि आपकी मशीन संक्रमित नहीं है, बेहतर यादृच्छिकता)।

यदि आप अभी भी उन रिमोट को उत्पन्न करना चाहते हैं: लिनक्स पर आप केवल एक होस्ट (उदाहरण ping 8.8.8.8) को पिंग करके अधिक एन्ट्रापी उत्पन्न कर सकते हैं ( यदि आप एक अन्य नेटवर्क होस्ट के मालिक हैं तो हर 100ms पिंग करने की कोशिश करें (यदि आपका आरटीटी निश्चित रूप से 100ms है)। और / या findअपनी हार्ड डिस्क पर फ़ाइलों को देखने के लिए उपयोग करें और प्रत्येक फ़ाइल खोज के बीच रैम कैश फ्लश करें।

havegedयदि आप इसे वर्चुअल वातावरण में चला रहे हैं तो आप इनस्टॉल भी कर सकते हैं लेकिन सीमाएँ पढ़ें: https://wiki.archlinux.org/index.php/Haveged#Virtual_machines


मेरे दिमाग में, यह सही समाधान है - मुझसे +1।
9

3

डेबियन आधारित प्रणालियों पर, आप rng-toolsatp-get का उपयोग करके पैकेज स्थापित कर सकते हैं, और फिर एंट्रॉपी उत्पन्न करने के लिए डेमॉन शुरू कर सकते हैं:

echo HRNGDEVICE=/dev/urandom >> /etc/default/rng-tools && service rng-tools restart

CentOS-6 सर्वर पर, rngडेमॉन को आधार टूल में से एक के रूप में स्थापित किया गया है (कम से कम अधिकांश प्रणालियों पर मैंने इस पर काम किया है), और एंट्रॉपी उत्पन्न करने के लिए, आप इसे शुरू करने के लिए निम्न कमांड चला सकते हैं:

sed -i \'s|EXTRAOPTIONS=\"\"|EXTRAOPTIONS=\"-r /dev/urandom\"|g\' /etc/sysconfig/rngd && service rngd restart

मुझे नहीं लगता कि rngd के लिए एक स्रोत के रूप में यूरेनियम का उपयोग करना चतुर है। यह एन्ट्रापी को तेजी से उपलब्ध कराने में मदद करेगा और एक बार नष्ट हो जाने पर यह एन्ट्रापी के लिए एक पक्षपाती स्रोत होगा। इसलिए मैं इस समाधान से बचूंगा।
ह्यूजेंस

1
sudo yum install haveged && sudo systemctl start haveged

निश्चित रूप से एक CentOS 7.2 VM पर काम करता है। कभी-कभी आप एक vm पर GPG कुंजी बनाना चाहते हैं यदि आप एक गुच्छा बना रहे हैं और अपना कीरिंग बरकरार रखना चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.