2010-09-21 14 views
13

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

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

दुर्भाग्य से मेरे पास पूर्वानुमानित विशेषताओं का कोई शोर स्रोत नहीं है; एडीसी कई अपेक्षाकृत कम शोर इनपुट से जुड़ा हुआ है, इसलिए मुझे लगता है कि मैं इनपुट के रूप में एडीसी के कम से कम महत्वपूर्ण बिट्स का उपयोग कर सकता हूं।

संपादित करें: इसके लायक होने के लिए, यह टीआई TMS320F28335 प्रोसेसर है।


अद्यतन/स्पष्टीकरण: मैं एन्ट्रापी एकत्र करने के सॉफ्टवेयर में एक विधि के लिए देख रहा था। मुझे अपनी समस्या का समाधान करने का एक और तरीका मिला, इसलिए एक तरह से, मेरा प्रश्न एक महत्वपूर्ण मुद्दा था, लेकिन मैं अभी भी पर विशिष्ट सॉफ़्टवेयर समाधानों को एंट्रॉपी को कम-एंट्रॉपी स्रोतों से कम-से-कम महत्वपूर्ण बिट्स से इकट्ठा करने के लिए मार्गदर्शन की तलाश कर रहा हूं यूएआरटी अक्षरों को प्राप्त करने के लिए एडीसी और सिस्टम समय।

+0

क्या प्रोसेसर? कुछ चिप विशिष्ट विकल्प हो सकते हैं ... – dls

+0

क्या आप एडीसी पोर्ट में कस्टम हार्डवेयर जोड़ सकते हैं? यदि ऐसा है तो आप वहां एक जेनर डायोड शोर जनरेटर जोड़ सकते हैं। http://electronicdesign.com/article/test-and-measurement/wide-band-analog-white-noise-generator6356.aspx – Rudi

+0

नहीं, हार्डवेयर तय किया गया है। आप उच्च गुणवत्ता वाले हार्डवेयर शोर स्रोतों के बारे में बात कर रहे हैं और मेरे पास कोई नहीं है। –

उत्तर

10

मैं का उपयोग किया है:

  • एक अस्थायी एडीसी इनपुट के सबसे कम बिट, लेकिन आप उस

  • एक अत्यंत उच्च संकल्प टाइमर (~ 10ns) को छुआ, और सबसे कम लिया उपयोगकर्ता कुंजीपटल के बीच समय जब "एन" बिट्स। यदि आप स्वीकार करते हैं कि उपयोगकर्ता कीप्रेस (उच्चतम समय संकल्प पर) प्रभावी रूप से अपने समय में यादृच्छिक हैं, तो यह बहुत अच्छी तरह से काम करता है।

आप कर सकते थे नेटवर्क पैकेट, आदि लेकिन बीच के समय की तरह भी समय बातें उन एक बहुत अधिक नियतात्मक/से उम्मीद के मुताबिक हो सकता है लोग क्या बात का एक बहुत। इलेक्ट्रिकल शोर और उपयोगकर्ता इंटरैक्शन एंट्रॉपी के बेहतर स्रोत हैं।

वैसे, "कुंजीपेशियों के बीच के समय" सामान पर, मैं उन्हें पिछले 8 या उससे अधिक के गोलाकार बफर में पावर-ऑन से शुरू होने वाली एम्बेडेड सिस्टम पर स्टोर करता हूं, क्योंकि आप कभी नहीं जानते कि आप ' उन्हें जरूरत है फिर से। (दूसरे शब्दों में: जब तक आपको यादृच्छिक बिट्स की आवश्यकता न हो, तब तक प्रतीक्षा न करें, और उसके बाद उपयोगकर्ता को बटन 3 बार दबाएं!)

0

दान के उत्तर के लिए मामूली अतिरिक्त ... यदि आपके सिस्टम में कुछ प्रकार के रेडियो शामिल हैं एक आरएसएसआई पढ़ने ले सकते हैं।

3

यह निर्भर करता है:

  • विशिष्टता की कौन सी डिग्री आप करना चाहते हैं?
  • क्या कोई गैर-अस्थिर भंडारण है?
  • आपको कितनी जल्दी उत्तर चाहिए?

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

, (जाहिर है आप और आप फ़्लैश का उपयोग कर रहे हैं और अपने फ्लैश नियंत्रक पहनने-लेवलिंग नहीं है, या अपने स्वयं के पहनने-लेवलिंग को लागू करता है, तो कुछ करना चाहते हो सकता है।)

ऐसा न करने पर फिर के सभी स्रोतों से एंट्रॉपी एकत्र करें और आपके पास पर्याप्त एंट्रॉपी होने के बाद केवल यूयूआईडी उत्पन्न करें। Zvi Gutterman (2006) नोट करता है कि ओपनडब्लूआरटी का एन्ट्रॉपी का एकमात्र स्रोत नेटवर्क एक्सेस है, जिसे आसानी से देखा जा सकता है।

एडीसी उत्पादन का उपयोग करते हुए समझदार लगता है, कुछ सरल दिशा निर्देशों के साथ:

  • सभी बिट्स (या अपने एन्ट्रापी अनुमान की तुलना में कम से कम अधिक बिट) का उपयोग करें, लेकिन परंपरागत ढंग से अपने एन्ट्रापी अनुमान वृद्धि हुई है।
  • एडीसी आउटपुट में शून्य एन्ट्रॉपी होती है जब क्लिप (और संभावित रूप से कम एंटॉपी लगभग फिसल जाता है)।

इनपुट पर शोर की मात्रा को मापें। मुझे संदेह है कि आपको नमूना प्रति कम से कम एक बिट मिलेगा। फिर अपने बिट्स हैश और संस्करण 4 यूयूआईडी उत्पन्न करें।

1

मैंने कुछ similar to Dan's answer किया है। मेरे पास पिछले 256 कीस्ट्रोक समय वाले उपयोगकर्ता कीस्ट्रोक के बीच एक उच्च रिज़ॉल्यूशन टाइमर (20ns) का उपयोग करके टाइमर अंतर के साथ गैर अस्थिर स्मृति में एक बफर था। मैं प्रत्येक बार सिस्टम चालू होने पर एक अद्वितीय संख्या प्राप्त करने के लिए 32 बिट सीआरसी की गणना करता हूं। उपयोगकर्ता इंटरैक्शन के बिना कुछ संस्करणों ने धारावाहिक बंदरगाहों पर प्राप्त संदेश के बीच का समय माप लिया

इन अद्वितीय संख्याओं को नेटवर्क पर नोड पहचानकर्ता के रूप में उपयोग किया गया था और डुप्लिकेट के साथ कभी भी कोई समस्या नहीं हुई है।

इसे बाद में DS2401 के साथ बढ़ाया गया जो एक सतत लेकिन अद्वितीय आईडी प्रदान करता है लेकिन यह केवल आपके लिए काम करेगा यदि आप हार्डवेयर बदल सकते हैं।

2

नील्स फर्ग्यूसन और ब्रूस Schneier द्वारा प्रैक्टिकल क्रिप्टोग्राफी में वर्णित भी Fortuna देखें। हालांकि, यारो और फोर्टुना दोनों एम्बेडेड सिस्टम के लिए बहुत भारी वजन हो सकते हैं।

यारो के विपरीत, फोर्टुना को आपके यादृच्छिक स्रोतों की एन्ट्रॉपी का आकलन करने की आवश्यकता नहीं है।

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