हालात का इंटरनेट (IOT) के साथ व्यापक रूप से लोकप्रिय उपकरणों है - गहने के लिए वायरलेस स्मार्ट शहर से, दैनिक जीवन के लगभग हर कदम चित्रित तेजी से तत्काल प्राथमिकता के एम्बेडेड सिस्टम सुरक्षा आवश्यकताओं के प्रकार सुरक्षा सुनिश्चित करने के बातों के लिए, में बातें। स्टार्टअप प्रक्रिया आवेदन की दुर्भावनापूर्ण सॉफ़्टवेयर आवश्यक हिस्सा रोकने के लिए किसी भी एम्बेडेड सिस्टम, साथ ही बाधाओं की रक्षा के लिए पहला कदम है। हमें अपनी शक्तियों और कमजोरियों को देखो, और एक आम प्रोसेसर --i.MX6 में इलेक्ट्रॉनिक्स उद्योग के लिए एक उदाहरण वर्णन करने के लिए।
एक सुरक्षित शुरू क्या है?
'सिक्योर बूट' एक ऐसी प्रक्रिया है जिसके द्वारा ऑपरेटिंग सिस्टम (ओएस) को मिररिंग और कोड को लॉन्च करने से पहले हार्डवेयर के खिलाफ प्रमाणित करना होगा, इससे पहले कि इसे स्टार्टअप के लिए इस्तेमाल किया जा सके। हार्डवेयर को इस तरह से अग्रिम रूप से तैयार करना चाहिए: यह केवल प्रमाणीकरण विश्वसनीय सुरक्षा क्रेडेंशियल्स द्वारा जेनरेट किए गए कोड का उपयोग करता है संक्षेप में, यह सुनिश्चित करता है कि बूट-अप और ओएस सॉफ़्टवेयर इरादा निर्माता के संस्करण हैं और मैलवेयर या दुर्भावनापूर्ण तृतीय पक्षों द्वारा छेड़छाड़ नहीं किया गया है।
किसी भी एकल उपयोग के लिए सुरक्षित बूट उपकरण, जैसे कि ई-रीडर जो i.MX6 सोलो और डुलाइट एकीकृत ई-इंक डिस्प्ले नियंत्रकों जैसे i.mx6 प्रोसेसर का व्यापक उपयोग करते हैं, जो मुख्य रूप से उपयोग किए जाते हैं। ईपुस्तकों को पढ़ना, सामान्य परिचालन नहीं, जो उस समय बूट वातावरण में लिनक्स पर्यावरण को लॉक करने में सहायक होता है।
उदाहरण के लिए, एंड्रॉइड फोन जैसी अन्य चीजें वैकल्पिक हो सकती हैं, सुरक्षित बूट का उपयोग अतिथि-रोम को निष्पादित करने की अंतिम-उपयोगकर्ता की क्षमता को सीमित कर सकता है। यह एक फीचर सुविधा हो सकती है, या यह उत्पाद लेआउट या सुरक्षा आवश्यकताओं पर आधारित हो सकती है आदर्श रूप से, एक सुरक्षित बूट के साथ आरंभ करने का आदर्श समय मूल रूप से होता है जब आप नहीं चाहते कि किसी अन्य पार्टी को आपके ऑपरेटिंग सिस्टम या अन्य बूट लोडर आपके डिवाइस में लोड हो।
अधिक लोग लिनक्स आईपी कैमरे जैसे उच्च स्तर के एकीकरण वाले सिस्टम को सुरक्षित बूट की सलाह देंगे क्योंकि किसी भी दुर्भावनापूर्ण बूट कोड या ऑपरेटिंग सिस्टम सॉफ़्टवेयर आपके डिवाइस को एक बोनेट में बदल सकते हैं या शायद कैमरे से ली गई तस्वीर को सार्वजनिक रूप से इंटरनेट पर अपलोड किया गया है या वीडियो मेमोरी जैसे कि वीडियो होस्ट को जानकारी शामिल करने के लिए संशोधित किया गया है।
सुरक्षित स्टार्ट-अप प्रक्रिया पर i.mx6
बूट छवि को i.mx6 पर सेट अप करने के बाद, सुरक्षित उद्देश्य का लाभ उठाने के लिए इस उद्देश्य के लिए SSL प्रमाणपत्र तैयार किया जाना चाहिए।
इन चाबियाँ सुरक्षा निर्देशों का एक सेट उत्पन्न करने के लिए उपयोग की जाती हैं और फिर बूट छवि में फ़्रीस्केल और एनएक्सपी जैसे विक्रेताओं द्वारा प्रदान किए गए उपकरणों के जरिए संकलित किया जाता है। प्रोसेसर तब पहले चरण बूट लोडर लेता है, सुरक्षित स्टार्टअप संकलन उपकरण द्वारा उत्पन्न क्रेडेंशियल प्रमाणित करने के लिए और अपने क्रेडेंशियल्स का उपयोग करें।
बूट मीडिया को लिखते समय, यदि बूट कुंजी छवि डेटा प्रोसेसर के सुरक्षित भंडारण में संग्रहीत कुंजी डेटा से मेल खाता है, तो सुरक्षा आदेश को निष्पादित करने के लिए शुरू हो जाएगा और फिर यह सुनिश्चित करने के लिए कि वह सुरक्षा संकेत यदि वे मैच करते हैं, तो प्रोसेसर लोड हो रहा है और आपकी बूट छवि निष्पादित करेगा।
एक बार जब यह प्रक्रिया सीपीयू के आंतरिक बूट लोडर द्वारा शुरू की जाती है, तब भी आप सुरक्षित बूट लाइब्रेरी को कोड से लोड कर सकते हैं जो कि लोडर की शुरुआत करता है, जो आपको ऑपरेटिंग सिस्टम छवि लोड करने और लोडर को सीपीयू बूट लोडर के साथ शुरू करने की अनुमति देता है। प्रमाणित होने के लिए उसी तरह का कार्यक्रम
इस प्रक्रिया के अंत में, ऑपरेटिंग सिस्टम एक सत्यापित, सुरक्षित वातावरण में शुरू होगा, जिसे आप जानते हैं उचित है क्योंकि प्रत्येक चरण प्रोसेसर में संग्रहीत प्रमुख हैश के प्रमाणीकरण परीक्षण करता है।
एक बार प्रोग्रामयोग्य डिजाइन
एक सुरक्षा परिप्रेक्ष्य से, यह प्रक्रिया SSL प्रमाण पत्र से एक मूल कुंजी उत्पन्न करती है जो नकली है और फिर एक बार प्रोग्रामयोग्य (OTP) डिजाइन में सीपीयू में जला दिया जाता है। एक बार कुंजी को प्रोसेसर में जला दिया जाता है बदल नहीं सकते - एक कारण सुरक्षा है
बूट छवि को कुंजी के आधार पर भी हस्ताक्षरित किया जाता है, और हस्ताक्षर प्रक्रिया के दौरान तैयार की जाने वाली जानकारी को छवि के साथ जोड़ा जाता है। प्रोसेसर आपकी छवि कुंजी को इसकी कुंजी के साथ जांचता है, और यदि वह मेल खाता है, कुंजी आपकी छवि को जांचती है। यदि यह अभी भी मेल खाता है, तो आप एक दर्पण कर सकते हैं। यह कदम आप उच्च स्तर की श्रृंखला में ले जाएगा, सीपीयू से सामान्य बूट लोडर तक लोड प्रक्रिया शुरू करने के लिए, ऑपरेटिंग सिस्टम पर।
बेशक, यह i.mx6 के लिए मामला हो सकता है, वास्तव में विभिन्न प्रकार के सुरक्षा बूटिंग हैं, जैसे कि यूटीआई सुरक्षा बूट के साथ एक्स 86, लेकिन इस लेख को समझने के लिए I.MX6 पर केंद्रित है।
हार्डवेयर का उपयोग करें
I.MX6 हार्डवेयर किट में कई विशेष सुरक्षा तंत्र शामिल हैं जो स्टार्टअप के लिए सुरक्षित हैं, और सुरक्षित स्टार्टअप की कुंजी कुंजी में जला करने के लिए उपयोग की जाने वाली एक बार फ़्यूज़ है। परिणामस्वरूप, आपके कुंजी को जला दिया जाने के बाद, हैश मान स्थायी रहता है। एकाधिक कुंजी को एक ही कुंजी हैश में भी एकीकृत किया जा सकता है, इसलिए एक कुंजी को रद्द कर दिया जा सकता है यदि यह समझौता किया गया हो।
प्रणाली की एक अन्य विशेषता सीपीयू बूटलोडर की आंतरिक सुरक्षा है, यह एक सुरक्षा-परीक्षण एक ही स्थिर कोड है। यह पूरी श्रृंखला के लिए एक महत्वपूर्ण आधार की सुरक्षा बनाए रखने के ऑपरेटिंग सिस्टम पर निर्भर है।
इसके अलावा, एक हार्डवेयर क्रिप्टोग्राफिक एल्गोरिथम i.MX6 त्वरक हो रही है। इस तरह के एईएस, ट्रिपल DES हैश, शाल और SHA256 एल्गोरिथ्म, आदि के रूप में हैश, i.MX6 प्रोसेसर के माध्यम से त्वरित किया जा सकता है, जिससे काफी सुरक्षा प्रक्रिया की गति बढ़ा सकते हैं।
कमी
सबसे स्पष्ट नुकसान यह है कि आप अपने खुद के सुरक्षा के लिए जिम्मेदार होना चाहिए है। अपने प्रमुख बाहर की दुनिया में लीक हो गया है, तो लोगों को, प्रोसेसर में संग्रहीत हस्ताक्षर कोड करने के लिए कुंजी का उपयोग करें ताकि आप उस प्रक्रियाओं और हार्डवेयर सुरक्षा सुनिश्चित करना चाहिए होगा।
इसके अलावा, सुरक्षित बूट उद्देश्यों के लिए कॉन्फ़िगर किए गए एक प्रोसेसर केवल छवि को ठीक से हस्ताक्षरित होने के बाद ही शुरू होता है, इसलिए प्रोसेसर में हैश को जलाने में कोई भी त्रुटि प्रोसेसर को कोड निष्पादित करने में विफल हो सकती है, क्योंकि हैश मान मेल नहीं खाता - इस तरह एक बेकार प्रोसेसर बनने के लिए
प्रोसेसर को सुरक्षित निष्पादन के लिए सेट अप करने के बाद, आपको एक सुरक्षित कोड लोड करना होगा, जो आपको केवल सुरक्षित रूप से भंडारण से लोड करने की अनुमति देगा (जैसे कि एक एसडी कार्ड या नंद फ़्लैश मेमोरी) या अन्यथा सॉफ्टवेयर लोड करें प्रोसेसर (यूएसबी छवि लोडिंग)
इसलिए, हार्डवेयर और प्रोसेसर की तैयारी की गारंटी दी जानी चाहिए, और आपको यह भी सुनिश्चित करना चाहिए कि आपका बूट लोडर इसके लिए अच्छी तरह तैयार है।
जैसा कि पहले उल्लेख किया गया है, बूट शृंखला के अगले चरण को प्रमाणित करने के लिए आपके बूट लोडर को प्रोसेसर पर सुरक्षित बूट लाइब्रेरी को कॉल करना होगा। यदि आप सुरक्षित लायब्रेरी के उचित उपयोग के लिए बूट लोडर को ठीक से संहिता नहीं देते हैं, तो आप ऑपरेटिंग सिस्टम की सुरक्षा पूरी तरह से सुनिश्चित करें।
झूठी सुरक्षा के जाल में मत आना
यह समझना महत्वपूर्ण है कि i.mx6 के सुरक्षित स्टार्टअप पूरे सिस्टम को लॉक नहीं करता है, लेकिन केवल ऑपरेटिंग सिस्टम सॉफ़्टवेयर, इसलिए कोई लिनक्स मैलवेयर लिख सकता है जो ऑपरेटिंग सिस्टम पर चलता है और, अगर वह सफलतापूर्वक लोड हो जाए पूरे सिस्टम को नुकसान पहुंचाएं
i.mx6 सुरक्षित प्रारंभ प्रमाणन
यदि अधिक पूर्ण सुरक्षा की आवश्यकता है, तो आप बाकी फाइल सिस्टम को प्रमाणित कर सकते हैं और कोड i.mx6 सुरक्षित बूट प्रक्रिया सिद्धांत यह है कि एक विशेष मेमोरी ब्लॉक में एक विशिष्ट क्रिप्टोग्राफिक हैश मान और संबंधित हस्ताक्षर जानकारी है ताकि यह संभव हो सके ऑपरेटिंग सिस्टम की रूट फ़ाइल सिस्टम और अन्य महत्वपूर्ण फाइलों को सही सुरक्षा अनुदेश सेट लोड करते समय मेमोरी में एक निश्चित स्थान में लोड करना आपको आवश्यक होने पर बाकी सिस्टम को प्रमाणित करने की अनुमति देता है
i.mx6 सुरक्षित महत्वपूर्ण चाल शुरू करें
1. सुनिश्चित करें कि बूट प्रक्रिया सुरक्षित है एक बार सुरक्षित बूट पथ पर निर्णय लेने के बाद, आपको यह सुनिश्चित करना होगा कि प्रक्रिया उत्पादन में कुंजी के रिसाव के साथ-साथ हाथ में हो जाती है।
2. सुनिश्चित करें कि मजबूत एन्क्रिप्शन पद्धति यह सुनिश्चित करता है कि एन्क्रिप्शन पद्धति का इस्तेमाल किया गया है कि यह काफी मजबूत है कि उपयोगकर्ता कमजोर कुंजी स्थापित करने की संभावना है और I.MX6 पर सुरक्षित बूट भी पुराने या अब समझौता समझौता इसलिए, सुनिश्चित करें कि आपका एल्गोरिदम अप-टू-डेट है और आपके लक्ष्यों को पूरा करने में सक्षम है।
3. अपने कोड की जांच करें एक सुरक्षित स्टार्टअप के लिए, जिसका मतलब है कि लोडर में शेष कोड शुरू करने सहित कुछ और, ऑपरेटिंग सिस्टम और अन्य सॉफ़्टवेयर किसी सुरक्षा के दोषों के साथ किसी सुरक्षित बूट पर ठीक से लिखे जाने चाहिए।
इसके अतिरिक्त, बूट प्रक्रिया के प्रत्येक चरण को निष्पादित करने से पहले अगले चरण के लिए जांच की जानी चाहिए, और यदि ऐसा नहीं किया गया है, या यदि यह कुछ भाग में किया गया है, तो प्रक्रिया सुरक्षा कहलाए जाने का दायरा बहुत छोटा होगा।
4. हर जगह प्रमाणीकृत करें वास्तविक सुरक्षा के लिए, जितनी चाहें उतना कोड को प्रमाणित करने का प्रयास करें और सुनिश्चित करें कि आप अपने लाइब्रेरी के निर्माण के निर्देशों का पालन करें।
आपको यह सुनिश्चित करना है कि पूरी प्रक्रिया सुरक्षित है, वह यह है कि कैसे अपनी कुंजी को जनरेट और संचयित करें। सुरक्षित बूट केवल हस्ताक्षर की जांच करता है, और किसी भी हस्ताक्षरित छवि प्रोसेसर द्वारा सुरक्षित माना जाता है।
इसलिए, सुनिश्चित करें कि आप लिखते हुए कोड का हर एक टुकड़ा प्रोसेसर की सुरक्षित बूट लाइब्रेरी पर लगाया जाता है ताकि आपके दर्पण को प्रमाणित किया जा सके क्योंकि अधिकांश i.mx6 बोर्डों में कई चरणों बूट प्रक्रिया के दौरान, सीपीयू के आंतरिक बूट लोडर पहले एसपीएल को लोड करता है, और फिर एसपीएल फिर ऑपरेटिंग सिस्टम में लोड करने के लिए पूर्ण बूट लोडर लोड करता है। प्रत्येक चरण को यह सुनिश्चित करने के लिए पिछले चरण में प्रमाणित होना चाहिए कि यह सुरक्षित है।
5. सत्यापित करें कि यह प्रक्रिया सुनिश्चित करने के लिए पुष्टि की जाती है कि कोड वास्तव में सुरक्षित बूट करता है। यह महत्वपूर्ण है कि यहां तक कि सुरक्षित कोड स्मृति में कहीं भी कूद सकता है क्योंकि प्रोसेसर ठीक काम करता है। यह वास्तव में सुनिश्चित करना महत्वपूर्ण है कि कोड अगले चरण को प्रमाणित करेगा।
I.mx6 के लिए सबसे अधिक इस्तेमाल किया बूट लोडर यू-बूट है, जो वास्तव में i.mx6 पर सुरक्षित बूट का समर्थन करता है। इसे कॉन्फ़िगर करने की आवश्यकता है, लेकिन यह आसान है। जब बहुत काम हो गया है, तो आप कम गलतियां चाहिए। खरोंच से सुरक्षा लिखना एक अच्छा विचार नहीं है, लेकिन निर्माण के लिए एक ज्ञात, आदर्श दृष्टिकोण लेने और अपने डिजाइन की आवश्यकताओं के अनुसार इसे अनुकूल बनाना सबसे अच्छा है।