2013-11-14 7 views
26

मैं अपने कार्यक्रमों के लिए यादृच्छिक डेटा उत्पन्न करने के लिए /dev/urandom का उपयोग कर रहा हूं। मैंने सीखा कि /dev/random खाली हो सकता है क्योंकि /dev/urandom के विपरीत, यह एसएचए का उपयोग नहीं करता है जब पर्याप्त बाइट उत्पन्न नहीं होते हैं। /dev/random "कर्नेल एन्ट्रॉपी पूल" का उपयोग करता है। जाहिर है यह कीबोर्ड समय, माउस आंदोलनों, और आईडीई समय पर निर्भर करता है।कर्नेल एन्ट्रॉपी पूल कैसे काम करता है?

लेकिन यह वास्तव में कैसे काम करता है?
और/dev/यादृच्छिक आउटपुट अनुमानित करने के लिए एंट्रॉपी पूल को "फ़ीड" करना संभव नहीं होगा?

+0

इम्हो आपको टैग में से किसी एक को प्रतिस्थापित करना चाहिए ताकि यह उल्लेख किया जा सके कि यह प्रश्न लिनक्स के लिए विशिष्ट है; वैसे भी, दूसरे भाग के बारे में - नहीं, केवल रूट ही ऐसा कर सकता है, सामान्य उपयोगकर्ता केवल नए डेटा में मिश्रण कर सकते हैं, जो हानिरहित है। – loreb

उत्तर

20

आप जो कह रहे हैं वह स्पॉट पर है, हां सैद्धांतिक रूप से /dev/random में एन्ट्रॉपी फ़ीड करना संभव है, लेकिन इसके लिए आपको बहुत सारे कर्नेल "शोर" स्रोतों को नियंत्रित करने की आवश्यकता होगी। /dev/random कहां से शोर उठाता है, यह देखने के लिए आप random.c के स्रोत को देख सकते हैं। असल में, यदि आप शोर स्रोतों की एक बड़ी संख्या को नियंत्रित करते हैं, तो आप अनुमान लगा सकते हैं कि अन्य लोग एन्ट्रॉपी पूल में क्या योगदान दे रहे हैं।

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

कहा जा रहा है कि, मैंने किसी को भी वास्तव में ऐसा नहीं देखा है, यहां तक ​​कि नियंत्रित वातावरण में भी नहीं। बेशक यह गारंटी नहीं है, लेकिन मुझे चिंता नहीं होगी।

तो मैं /dev/urandom का उपयोग करना चाहता हूं और गारंटी देता हूं कि /dev/random का उपयोग करने के बजाय एंट्रॉपी की प्रतीक्षा करते समय मेरा प्रोग्राम ब्लॉक नहीं करता है और उपयोगकर्ता को मूर्खतापूर्ण चीजें करने के लिए कहता है, जैसे माउस को ले जाना या कीबोर्ड पर बैंग करना।

मुझे लगता है कि आपको एलडब्ल्यूएन से On entropy and randomness पढ़ना चाहिए, उम्मीद है कि यह आपकी चिंताओं को शांत करेगा :-)।

क्या आपको अभी भी चिंतित होना चाहिए, तो अपने आप को HRNG प्राप्त करें।

संपादित यहाँ एन्ट्रापी पर एक छोटा सा नोट है:

मुझे लगता है कि एन्ट्रापी की अवधारणा आम तौर समझ पाना मुश्किल है। Wikipedia पर अधिक जानकारी वाला एक लेख है। लेकिन मूल रूप से, इस मामले में, आप एंट्रॉपी को यादृच्छिकता के रूप में पढ़ सकते हैं।

तो मैं इसे कैसे देखता हूं, यह है कि आपके पास रंगीन गेंदों का एक बड़ा बैग है, इस बैग में उच्च एन्ट्रॉपी बैग से खींचे गए अगले रंग की भविष्यवाणी करना कठिन है।

इस संदर्भ में, आपका एन्ट्रॉपी पूल केवल यादृच्छिक बाइट्स का एक समूह है, जहां कोई पिछले, या किसी अन्य से नहीं लिया जा सकता है। जिसका मतलब है कि आपके पास उच्च एन्ट्रॉपी है।

+0

इस वाकई अच्छे उत्तर के लिए धन्यवाद। एक गैर देशी अंग्रेजी वक्ता के रूप में शब्द "एन्ट्रॉपी" मेरे लिए पाने के लिए बहुत मुश्किल है। मैं एंट्रॉपी पूल को मेमोरी सरणी के रूप में चित्रित कर रहा हूं, जो 8/16 बिट्स से भरा हुआ है, संबंधित प्रतीक प्रिंट करता है, क्या मैं सही हूँ? – Antoninarto

+0

मैंने एंट्रॉपी पर एक छोटा सा नोट जोड़ा। उम्मीद है कि इससे चीजें आपके लिए थोड़ा स्पष्ट हो जाती हैं। – jbr

2

मैं जेब्र के उत्तर की गहराई की सराहना करता हूं। अन्य विंडो में

मैं सिर्फ स्थापित RNG-उपकरण और मेरी PKI आदेश पूरा:

वर्तमान में एक IPsec PKI आदेश या खाली एन्ट्रापी पूल पर कुछ इसी तरह अवरुद्ध घूर किसी के लिए एक व्यावहारिक अद्यतन जोड़ा जा रहा है।

apt-get install rng-tools 
0

मैं factorable पर एक कागज पढ़ने के बीच में हूँ और अनुभाग जहां यह कहते हैं की टिप्पणी की:

"पुस्तकालय डेवलपर के लिए:। सबसे सुरक्षित विन्यास को डिफ़ॉल्ट दोनों OpenSSL और /dev/random के बजाय /dev/urandom का उपयोग करने के Dropbear डिफ़ॉल्ट, और Dropbear एक कम सुरक्षित DSA हस्ताक्षर अनियमितता का उपयोग करने में चूक तकनीक एक विकल्प के रूप में एक और अधिक सुरक्षित तकनीक उपलब्ध है। "

लेखकों जबकि एन्ट्रापी /dev/random निर्माण करने के लिए एक त्वरित की तुलना में बेहतर सुरक्षा प्राप्त करने के लिए के लिए इंतज़ार कर फांसी एक आवेदन की दुविधा का समाधान है, लेकिन कम सुरक्षित, /dev/urandom से परिणाम।

+0

क्या यह हो सकता है कि आपकी अंतिम वाक्य में कोई गलती हो क्योंकि दो बार/dev/random' है। –

+0

अच्छी पकड़, केविन। दूसरी घटना/dev/urandom होना चाहिए। /dev/urandom रिटर्न परिणाम एंट्रॉपी के स्तर पर तुरंत ध्यान दिए बिना परिणाम। /dev/यादृच्छिक परिणाम प्रदान करने से पहले एंट्रॉपी के उपयुक्त स्तर के लिए प्रतीक्षा/लटका होगा। – Mike

+0

चूंकि वे एंट्रॉपी से बाहर निकलने पर अवरुद्ध नहीं होते हैं, क्या आप सैद्धांतिक रूप से एंट्रॉपी को "बिना रूट के" का उपयोग कर "चूसना" कर सकते हैं, और क्रिप्टोग्राफिक प्रोग्राम के लिए बहुत कम एन्ट्रॉपी (या छद्म को छोड़कर) छोड़कर? –

संबंधित मुद्दे