क्या मैं FPGA में एक (कमजोर) एन्ट्रापी स्रोत को लागू कर सकता हूं?


12

मैं मूल्यांकन और प्रोटोटाइप के लिए FPGA में IoT प्लेटफॉर्म के साथ काम कर रहा हूं। मुझे टीएलएस के लिए सहायता प्रदान करने की आवश्यकता है, और इसके लिए मुझे एक एंट्रोपी स्रोत की आवश्यकता है।

मैं समझता हूं कि सच्चे यादृच्छिक शोर स्रोत FPGA में काफी विशेषज्ञ (यदि व्यावहारिक भी हैं), क्योंकि डिवाइस का प्रदर्शन अक्सर बहुत अच्छा होता है (और किसी भी कोने-मामले के मापदंडों को खोजने के लिए कठिन है), लेकिन मैं बिना किसी छद्म यादृच्छिक अनुक्रम जनरेटर को लागू कर सकता हूं समस्या।

मेरे पास केवल कुछ मानक I / O चैनल हैं (uart, I2C, आदि), ऐसा कुछ भी नहीं जो दिखता है कि यह PRBS को बोने के लिए बहुत कुछ प्रदान कर सकता है - शायद एक ऑडियो एडीसी इनपुट के अलावा। क्या किसी FPGA में एन्ट्रापी बनाने के लिए कोई विश्वसनीय तरकीबें हैं जिन पर मुझे विचार करना चाहिए?

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

यह ठीक है अगर एन्ट्रापी स्रोत के साथ मैं ठीक से क्रिप्टो-सुरक्षित नहीं हूं (क्योंकि यह सिर्फ प्रोटोटाइप के लिए है), लेकिन मैं लागत-गुणवत्ता वाले व्यापार को समझना चाहूंगा।

जवाबों:


6

क्या आपको जरूरत है? यदि आपके पास दो चीजें हैं तो आप एक क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक जनरेटर को लागू कर सकते हैं: कुछ फिर से लिखने योग्य सुरक्षित भंडारण, और एक प्रारंभिक बीज। यही है, यह RNG को एक बार सीड करने के लिए पर्याप्त है, और फिर अपनी स्थिति को बचाने और सहेजे गए राज्य को बंद करने के लिए काम करता है। यह आदर्श नहीं है, समय-समय पर एन्ट्रापी में मिश्रण करना बेहतर होगा, लेकिन यह ठीक है, विशेष रूप से एक विकास प्रोटोपे के लिए।

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

जिस तरह से यह काम करता है, जब डिवाइस बूट होता है, तो यह वर्तमान आरएनजी राज्य को लोड करता है, और इसका उपयोग आरएनजी राज्य के आकार के दोगुने के लिए कुछ पर्याप्त यादृच्छिक बाइट्स उत्पन्न करने के लिए करता है। पहले आधे को नए सहेजे गए RNG राज्य के रूप में लिखें, और वर्तमान सत्र के लिए प्रारंभिक RNG राज्य के रूप में दूसरे छमाही का उपयोग करें। किसी भी क्रिप्टोग्राफिक रूप से सुरक्षित PRNG के साथ, यह एक क्रिप्टोग्राफिक रूप से सुरक्षित PRNG पैदावार देता है। ध्यान दें कि यह महत्वपूर्ण है कि आप किसी संग्रहीत RNG स्थिति का पुन: उपयोग न करें, इसीलिए RNG का उपयोग शुरू करने से पहले आपको एक नया स्वतंत्र RNG राज्य लिखना होगा।

प्रारंभिक एन्ट्रापी इंजेक्शन विनिर्माण के दौरान हो सकता है, या जब डिवाइस की स्थापना की जाती है। आमतौर पर वे चीजें एक पीसी के कनेक्शन के साथ होती हैं जो डिवाइस की ओर से एन्ट्रापी उत्पन्न कर सकती हैं।


ठीक है, इसलिए इस संदर्भ में मुझे नहीं लगता कि भंडारण को भी सुरक्षित करने की आवश्यकता है, यह देखते हुए उपयोग मॉडल उपभोक्ता उत्पाद नहीं है। किसी भी हमलावर को माना जा सकता है कि मेरे डिवाइस तक भौतिक पहुंच नहीं है (हालांकि उनके पास एक समान डिवाइस हो सकता है) । इसलिए मैं एक क्लोन को नहीं रोक सकता।
सीन हुलिएन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.