एंट्रॉपी उपलब्ध के बारे में सादा अंग्रेजी में बताएं


28

अगर मैं उबंटू में यह कमांड चलाता हूं

sudo cat /proc/sys/kernel/random/entropy_avail

यह एक संख्या देता है जो इंगित करता है कि कर्नेल के लिए "एंट्रोपी" कितना उपलब्ध है, लेकिन यह सब मुझे पता है। इस एन्ट्रापी को किस इकाई में मापा जाता है? इसका क्या उपयोग है? मुझे बताया गया है कि यदि यह संख्या "कम" है तो यह "खराब" है। कितना कम "कम" है और अगर "खराब" चीजें होती हैं तो क्या होगा? इसके लिए एक अच्छी सीमा क्या है? यह कैसे निर्धारित किया जाता है?

जवाबों:


22

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

यदि / dev / random उपलब्ध एंट्रॉपी से बाहर चलता है, तो यह अधिक यादृच्छिकता की सेवा करने में असमर्थ है और अधिक यादृच्छिक सामान उपलब्ध होने तक यादृच्छिकता स्टालों की प्रतीक्षा कर रहा है। मैंने अपने करियर के दौरान जो उदाहरण देखा है वह यह है कि साइरस IMAP डेमन यादृच्छिकता के लिए / dev / random का उपयोग करना चाहते थे और इसके POP सत्र APOP कनेक्शनों में यादृच्छिक स्ट्रिंग्स / dev / random से उत्पन्न करना चाहते थे। व्यस्त माहौल में / dev / random -> सब कुछ ठप होने के लिए ट्रैफ़िक की तुलना में अधिक लॉगिन प्रयास थे। उस स्थिति में मैंने rng-tools स्थापित किया था और उसके पास मौजूद rngd को सक्रिय किया था - जो कि / dev / urandom से / dev / यादृच्छिक में केस / dev / random से "वास्तविक" एन्ट्रापी से भागे हुए अर्ध-यादृच्छिक संख्याओं को निकालता था।


19

यदि आप अंतर्निहित समस्या का एक सरल अवलोकन चाहते हैं: कुछ अनुप्रयोगों (जैसे एन्क्रिप्शन) को यादृच्छिक संख्याओं की आवश्यकता होती है। आप एक एल्गोरिथ्म का उपयोग करके यादृच्छिक संख्या उत्पन्न कर सकते हैं - लेकिन यद्यपि ये एक अर्थ में यादृच्छिक प्रतीत होते हैं क्योंकि वे दूसरे में पूरी तरह से अनुमानित हैं। उदाहरण के लिए यदि मैं आपको 58209749445923078164062862089986280348253421170679 अंक देता हूं, तो वे बहुत यादृच्छिक लगते हैं। लेकिन अगर आपको एहसास है कि वे वास्तव में पीआई के अंक हैं, तो आपको पता होगा कि अगला 8 होने वाला है।

कुछ अनुप्रयोगों के लिए यह ठीक है, लेकिन अन्य अनुप्रयोगों (विशेष रूप से सुरक्षा से जुड़े लोगों) के लिए लोग वास्तविक अप्रत्याशित यादृच्छिकता चाहते हैं - जो कि एल्गोरिथ्म (अर्थात प्रोग्राम) द्वारा उत्पन्न नहीं किया जा सकता है क्योंकि परिभाषा पूर्वानुमान के अनुसार है। यह एक समस्या है कि आपका कंप्यूटर अनिवार्य रूप से एक कार्यक्रम है, इसलिए यह संभवतः वास्तविक यादृच्छिक संख्या कैसे प्राप्त कर सकता है? इसका उत्तर बाहरी दुनिया से वास्तविक यादृच्छिक घटनाओं को मापने के द्वारा है - उदाहरण के लिए आपके कीपेस के बीच अंतराल और इनका उपयोग करना अन्यथा वास्तविक यादृच्छिक संख्या जनरेटर में वास्तविक यादृच्छिकता को इंजेक्ट करना। 'एन्ट्रापी पूल' को इस यादृच्छिकता के भंडार के रूप में सोचा जा सकता है जो किस्ट्रोक्स (या जो कुछ भी इस्तेमाल किया जा रहा है) द्वारा निर्मित होता है और यादृच्छिक संख्याओं की पीढ़ी द्वारा सूखा जाता है।


2
अच्छी व्याख्या ...
प्रदीप्त

लेकिन पीआई तर्कहीन है और इसमें उपरोक्त अनुक्रम सहित हर अनुक्रम शामिल होगा जिसमें 9 (8 के बजाय) शामिल हैं।
अजय ब्रह्मक्षत्रिय

9

एन्ट्रॉपी "रैंडमनेस" के लिए एक तकनीकी शब्द है। कंप्यूटर वास्तव में एन्ट्रापी उत्पन्न नहीं करते हैं, लेकिन हार्ड ड्राइव रोटेशन स्पीड की विविधताओं जैसे सामान को देखकर इसे इकट्ठा करते हैं (एक भौतिक घटना जो घर्षण आदि के कारण भविष्यवाणी करना बहुत कठिन है) जब कोई कंप्यूटर एक छद्म यादृच्छिक डेटा उत्पन्न करना चाहता है तो यह होगा बीज एक गणितीय सूत्र है जिसमें सही एंट्रॉपी होती है जो इसे मूसलीक, हार्ड ड्राइव स्पिन विविधताओं आदि को मापकर पाया जाता है entropy_avail/dev/random

कंप्यूटर को अपने वातावरण से एन्ट्रॉपी पढ़ने में समय लगता है जब तक कि इसमें शोर डायोड या कुछ और जैसे शांत हार्डवेयर न हों।

यदि आपके पास 4096 बिट्स की एन्ट्रॉपी उपलब्ध है और आप कैट /dev/randomकरते हैं, तो आप फाइल ब्लॉक से पहले एनट्रॉपी के 512 बाइट्स (4096 बिट्स) को पढ़ने में सक्षम होने की उम्मीद कर सकते हैं, जबकि यह अधिक एन्ट्रापी का इंतजार करता है।

उदाहरण के लिए यदि आप " cat /dev/random" अपनी एन्ट्रापी को शून्य में सिकोड़ेंगे। सबसे पहले आपको यादृच्छिक कचरे के 512 बाइट मिलेंगे, लेकिन यह कम हो जाएगा और बहुत कम आपको अधिक यादृच्छिक डेटा ट्रिकल गर्त दिखाई देगा।

हालांकि यह नहीं है कि लोगों को कैसे काम करना चाहिए /dev/random। आम तौर पर डेवलपर्स 128 बिट की तरह डेटा की एक छोटी राशि पढ़ेंगे, और इसका उपयोग किसी प्रकार के PRNG एल्गोरिथ्म को बीज बनाने के लिए करेंगे। यह विनम्र है कि /dev/randomजब तक आपको निर्माण करने के लिए इतना समय लगता है और मूल्यवान माना जाता है, तब तक किसी भी अधिक एन्ट्रापी को नहीं पढ़ना चाहिए। इस प्रकार यदि आप इसे लापरवाही से catहटाते हैं तो ऊपर की तरह फाइल /dev/randomको ब्लॉक करने से आपको अन्य अनुप्रयोगों को ब्लॉक करने के लिए पढ़ने की आवश्यकता होगी । काम पर एक प्रणाली पर हमने देखा कि बहुत सारे क्रिप्टोकरंसी के काम बंद हो रहे थे। हमें पता चला कि एक क्रॉन जॉब एक ​​पायथन लिपि कह रहा था, जो इनिशियलाइज़ करता रहाramdom.random()प्रत्येक रन पर जो हर कुछ सेकंड में चलता था। इसे ठीक करने के लिए हमने पायथन लिपि को फिर से लिखा, ताकि यह एक ऐसे डेमन के रूप में चले जो कि केवल एक बार आरम्भ हुआ और क्रोन जॉब XMLRPC के माध्यम से डेटा को पढ़े ताकि यह /dev/randomस्टार्टअप पर पढ़ना जारी न रखे ।


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

8

केवल-पढ़ने के लिए फ़ाइल entropy_avail उपलब्ध एंट्रॉपी देता है। आम तौर पर, यह 4096 (बिट्स) होगा, एक पूर्ण एन्ट्रापी पूल।

आप और अधिक पढ़ सकते हैं: http://linux.die.net/man/4/random

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