लिनक्स के लिए एन्ट्रॉपी के स्रोत


9

मान लें कि मुझे एक गीगाबाइट या यादृच्छिक डेटा / dev / dev / यादृच्छिक से एक समय पैड के लिए उपयुक्त है (इसलिए / dev / urandom बाहर है।) मैं यह करने के लिए पर्याप्त एन्ट्रापी के साथ मेरे / dev / यादृच्छिक बीज कैसे करूँ? मैं इसके लिए विशिष्ट आदेशों और कार्यक्रमों की तलाश कर रहा हूं। मैं कुछ खरीदना नहीं चाहता। मैं आर्क लिनक्स का उपयोग कर रहा हूं, अगर इससे कोई फर्क पड़ता है।


क्या ऐसा कोई कार्यक्रम चालू नहीं होगा / देव / यादृच्छिक में कुछ समस्या हो सकती है जैसे कि / dev / urandom जिसे आप उपयोग नहीं करना चाहते हैं? या आप किसी ऐसी चीज का जिक्र कर रहे हैं जो किसी डिवाइस या नेटवर्क पर अतिरिक्त एंट्रॉपी हो जाती है?
एंथन

@ एंथन मैं एंट्रोपी स्रोत से यादृच्छिकता निकालने के लिए विशिष्ट कार्यक्रमों के बारे में बात कर रहा हूं, जैसे कि शॉट शोर, थर्मल शोर, कुछ डिवाइस, आदि ... प्रोग्राम यादृच्छिकता को ही नहीं बनाएगा।
PyRulez

... उदाहरण के लिए, एक कमांड या प्रोग्राम जो कहता है Here — type something:, और फिर अंतर-कीस्ट्रोके समय के डेल्टा को मापता है एक मानव की तुलना में उच्च परिशुद्धता को नियंत्रित कर सकता है?
जी-मैन ने कहा कि मोनिका '


1
इसमें दो अपवादों में से एक के रूप में एक बार के पैड का उल्लेख है कि _'... लगभग सभी क्रिप्टोग्राफिक एल्गोरिदम ... "केवल" कम्प्यूटेशनल सुरक्षा प्रदान करते हैं। जब तक आप कुछ उद्धृत नहीं कर सकते, मुझे याद है कि यह कहां कहता है कि एक बार के पैड यूरेनियम का उपयोग नहीं कर सकते हैं?
बेकार

जवाबों:


4

दो प्रोग्राम जो अतिरिक्त हार्डवेयर की आवश्यकता के बिना एन्ट्रापी पूल को बढ़ा सकते हैं rng-toolsऔर havegedrng-toolsआधुनिक CPU और चिपसेट में उपलब्ध RNG का उपयोग करता है, havegedआधुनिक CPU randomness (कैश व्यवहार आदि) का उपयोग करता है। दोनों आर्क में उपलब्ध हैं, और आर्क विकी का एक दिलचस्प पृष्ठ है जो उन पर चर्चा कर रहा है। मैंने उनका उपयोग करने के लिए डेटा के एक गीगाबाइट बनाने की कोशिश नहीं की है, लेकिन यह समय की समझदार मात्रा में संभव होना चाहिए।

आप स्पष्ट रूप से कुछ भी खरीदने को बाहर करते हैं, लेकिन सिर्फ पूर्णता के लिए वहाँ LWN में एक दिलचस्प लेख है जिसमें NeuG के साथ एन्ट्रॉपी के बारे में है , जिसमें havegedऔर विभिन्न अन्य तरीकों की चर्चा शामिल है । आप एक STM8S बोर्ड खरीद सकते हैं जो $ 10 से कम के लिए नूगा चलाने में सक्षम है, या $ 35 के लिए एक FST-01 है।


4

दुर्भाग्य से / देव / यादृच्छिक एक बार के पैड में उपयोग के लिए भी उपयुक्त नहीं है, कम से कम उस तरह के एक-बार पैड (सिद्ध सुरक्षा गारंटी के साथ) नहीं है, जो ज्यादातर लोग कल्पना करते हैं कि वे एक बार के पैड के बारे में सोचते हैं या लागू करते हैं। नीचे दी गई अधिकांश जानकारी http://www.2uo.de/myths-about-urn/ पर (बहुत लंबी) लेख से संक्षेपित है

समस्या यह है कि / देव / यादृच्छिक वास्तव में यादृच्छिक नहीं है; यह अपने आउटपुट को उत्पन्न करने के लिए CSPRNG का उपयोग करता है। वास्तव में, / dev / random ठीक उसी CSPRNG का उपयोग करता है जैसे / dev / urandom। अंतर केवल इतना है कि / देव / यादृच्छिक ब्लॉक यदि एंट्रॉपी का आंतरिक अनुमान अपर्याप्त है।

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

एन्ट्रापी का अनुमान लगाने में बस थोड़ा सा गलत होना आपके एकमुश्त पैड को सिर्फ थोड़ा सा असुरक्षित नहीं बनाता है। एक बार के पैड की साबित सुरक्षा गारंटी सभी या कुछ भी नहीं है।

इस प्रश्न का आधार यह है कि / एन्ट्रापी जोड़कर / dev / random के साथ समस्याओं को "निश्चित" किया जा सकता है। दुर्भाग्य से, यह आधार गलत है। एन्ट्रॉपी का एक दुर्भावनापूर्ण स्रोत बिना एन्ट्रॉपी से बहुत खराब है, क्योंकि एन्ट्रापी स्रोतों में अक्सर आंतरिक डेटा तक पहुंच होती है और आरएनटी आउटपुट का उपयोग करके इस डेटा को गुप्त रूप से निर्यात कर सकते हैं - http://blog.cr.yp.to/20140205 -entropy देखें पूर्ण चर्चा के लिए .html (यहाँ संक्षेप में लंबे समय तक)। विशेष रूप से, एन्ट्रॉपी का एक हार्डवेयर स्रोत (कई अन्य उत्तरों द्वारा अनुशंसित) सुरक्षा के दृष्टिकोण से एक बहुत ही बुरा विकल्प है, क्योंकि यह हार्डवेयर दुर्भावनापूर्ण काम करने के लिए प्रमुख स्थिति में है, और यह अनिवार्य रूप से अनुचित है।


मैंने यह नहीं कहा कि मैं इसे और अधिक एन्ट्रापी के साथ ठीक कर रहा था, मुझे बस एक बड़ी कुंजी की आवश्यकता थी। यह एक अच्छा बिंदु है, हालांकि इसके बारे में दोषपूर्ण है। क्या आप कोई विकल्प सुझा सकते हैं?
PyRulez

1
हार्डवेयर स्रोतों के बारे में अंतिम बिट को छोड़कर यह एक अच्छा जवाब है। एन्ट्रॉपी के हार्डवेयर स्रोत एंट्रोपी प्राप्त करने का एकमात्र विश्वसनीय, श्रव्य तरीका है। आपको (या जिस पर आप भरोसा करते हैं) को स्रोत की ऑडिटिंग करने की आवश्यकता है - जिसके लिए डिजाइन की जानकारी होना और यह सत्यापित करना आवश्यक है कि विनिर्माण प्रक्रिया डिजाइन की जानकारी का सम्मान करती है। आप एंट्रोपी के स्रोतों को भी जोड़ सकते हैं ताकि यदि उनमें से कम से कम एक ठीक हो तो परिणाम ठीक हो (एनबी आपको इसके लिए उन्हें सही ढंग से संयोजित करने की आवश्यकता है)।
गिल्स एसओ- बुराई को रोकें '

गिल्स, दूसरी पोस्ट जो मैंने पोस्ट की, उसे पढ़ें। यह दावा करना पूरी तरह से गलत है कि यदि कम से कम एक एन्ट्रोपी स्रोत ठीक है तो परिणाम ठीक है। उस लिंक का पूरा उद्देश्य इस झूठे दावे का खंडन करना है!
djao

इसके अलावा, स्रोत और विनिर्माण प्रक्रिया का ऑडिट करना पर्याप्त नहीं है। आपको यह सुनिश्चित करने के लिए कि आपके डिवाइस को निर्माण प्रक्रिया के अनुसार निर्मित किया गया था, आपको अपने व्यक्तिगत डिवाइस का ऑडिट करने की आवश्यकता है। यह सॉफ्टवेयर में अनुरूप कार्य की तुलना में बहुत कठिन कार्य है, जिसमें केवल एक चेकसम की जांच शामिल है।
djao

विकल्प के रूप में: पीसी से 1GB यादृच्छिक डेटा प्राप्त करने के लिए कोई वैकल्पिक जादू नहीं है। इसके लिए आपको एक हार्डवेयर डिवाइस की आवश्यकता होगी (लेकिन तब ध्यान दें जो मैंने हार्डवेयर के ऑडिट में मुश्किल होने के बारे में कहा था)। यदि आप / dev / random का उपयोग करने के इच्छुक थे, तो / dev / urandom बस उतना ही अच्छा है; यह सभी क्रिप्टोग्राफ़िक अनुप्रयोगों के लिए / dev / random से अधिक खराब नहीं है।
djao

3

एक एचडब्ल्यू घटक की तरह लगता है सबसे अच्छा विचार है। कुछ एचडब्ल्यू जनरेटर आईसी बाहर हैं, लेकिन आपको उनके आने पर भरोसा करना होगा।

शोर पैदा करने के लिए घटक को प्रेरित करने के लिए शायद दो अच्छे समाधान हैं; दो प्रमुख समाधान तापमान पूर्वाग्रह प्रतीत होते हैं और एक डायोड के साथ निर्मित एवांश शोर (देखें http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rn.html )

जैसा कि जाइरो और एक्सेलेरोमीटर जैसे घटकों को अधिक समझदार बताया गया है, जिससे उन्हें उच्चतम संवेदनशीलता पर काम करना पड़ता है और उनके एलएसबी मूल्य का उपयोग करना भी एक अच्छा समाधान हो सकता है, लेकिन एएफएआईके ने इसका ऑडिट नहीं किया।

हास्यास्पद है क्योंकि आरएनजी पर बहुत सारे कागज नहीं हैं, लेकिन एक एचडब्ल्यू कार्यान्वयन खुला और सत्यापित नहीं है


2

आप pycsprng.py का उपयोग कर सकते हैं । क्रिप्टोग्राफिक रूप से सुरक्षित? मुझे यकीन नहीं है, लेकिन मैं कुछ सहकर्मी-समीक्षा करना चाहूंगा।

python pycsprng.py | pv | dd of=data.file bs=1024 count=1000

पाइप pvवैकल्पिक है, और आपको यह जानने में मदद करेगा कि कितना डेटा स्थानांतरित किया गया है।

आप पा सकते हैं कि बड़े ब्लॉक-आकार (bs) परफ्यूम को बढ़ाते हैं। यदि आप ब्लॉक-आकार बढ़ाते हैं, तो आपको फ़ाइल के बहुत बड़े हिस्से को उत्पन्न नहीं करने के लिए गणना को समायोजित करना होगा।


3
वह बस का उपयोग करता है /dev/urandom...
स्टीफन किट

1
pycsprng.pyवस्तुतः एक 10 एसएलओसी लिपि है जिससे यादृच्छिकता प्राप्त होती है os.urandomडॉक्स का कहना है कि "लौटाया गया डेटा क्रिप्टोग्राफिक अनुप्रयोगों के लिए अप्रत्याशित रूप से पर्याप्त होना चाहिए [...] UNIX- जैसी प्रणाली पर यह क्वेरी करेगा /dev/urandom"यह वास्तव में करता है (हालांकि यह पुराना स्रोत है) और Security.SE का कहना है कि यह क्रिप्टो के लिए ठीक है
गोनोस्तज

एक बार पैड क्रिप्टो नहीं!
PyRulez

0

जब आप किसी माइक्रोफोन में प्लग नहीं करते हैं तो आपको एनालॉग माइक्रोफोन चैनल से क्या मिलता है। पाइप जो कि bzip2 के माध्यम से, उदाहरण के लिए, श्वेत करने के लिए, इसे यादृच्छिकता के दूसरे स्रोत (यूरेनियम या किसी अन्य माइक्रोफ़ोन जैक) के साथ मिलाते हैं, हो सकता है कि अच्छे माप के लिए ओपनसेल के माध्यम से परिणाम को पाइप करें और जो आपको मिलता है वह बहुत यादृच्छिक होना चाहिए

हालांकि परिणाम की यादृच्छिकता के बारे में किसी भी कठिन और तेज सुरक्षा गुणों को साबित करना मुश्किल होगा।


0

यदि आप लिनक्स कर्नेल 2.6.9 का उपयोग कर रहे हैं या amd64 / x86_64 प्रोसेसर, वर्चुअल या भौतिक वातावरण पर नया प्रयोग कर रहे हैं, तो आप n कंप्यूटर्स की कोशिश कर सकते हैं। एक वास्तविक रैंडम नंबर जेनरेटर, जो 64 kubits / 64 बिट्स के माध्यम से 8 KiB / s एंट्रॉपी प्रदान करता है।/dev/random

नमूना उत्पादन


लिंक का भंडाफोड़ हुआ, इसका बैकअप नहीं मिल सका।
स्लम

0

100 एमबी हार्डवेयर-जनित यादृच्छिक डेटा उत्पन्न करने के लिए, आप कर सकते हैं:

  • अपने कंप्यूटर के बिल्ट-इन माइक्रोफोन (लैपटॉप पर उपलब्ध) के साथ 20 मिनट का ऑडियो (96khz 16bit मोनो) रिकॉर्ड करें। आपको एक ~ 220 एमबी WAV फ़ाइल मिलेगी।

  • गैर-उपयोगी बिट्स को त्यागें, और बाइनरी डेटा के बिट्स को फेरबदल करें (ऐसा करने के कई तरीके) कुछ गणित के साथ

  • ~ 100 एमबी बाइनरी फ़ाइल के रूप में फेरबदल बिट्स निर्यात करें

इस बारे में एक लेख यहां दिया गया है: ऑडियो (और आपके कंप्यूटर के अंतर्निहित माइक्रोफ़ोन) के साथ सही एंट्रोपी और यादृच्छिक डेटा उत्पन्न करने का प्रयास

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