AVR और PIC नियंत्रकों पर फर्मवेयर सुरक्षा


23

क्या कोई एचईएक्स फ़ाइल निकाल सकता है जिसे मैं एक माइक्रोकंट्रोलर में जलाता हूं जो मैं उन्हें प्रदान करता हूं?

यदि यह संभव है, तो कोई यह कैसे सुनिश्चित कर सकता है कि उनका कोड एम्बेडेड सिस्टम में सुरक्षित है? PIC और AVR माइक्रोकंट्रोलर के मामले में, कोई अपने फ़र्मवेयर को पुन: पेश करने से कैसे बचा सकता है?



1
# 1 के मामले में, आपको लगता है कि आप अपने ग्राहकों को हेक्स फ़ाइल प्रदान करते हैं, उस स्थिति में वे इसे कई क्लोन डिवाइसों पर लिख सकते हैं, कोड को विघटित करने की कोई वास्तविक आवश्यकता नहीं है, हालांकि यह संभव है। एक बंद डिवाइस (# 2) के मामले में, यह आमतौर पर मामला है कि वे कोड प्राप्त करने के लिए कितने दृढ़ हैं (दूसरे शब्दों में वे खर्च करने के लिए कितने तैयार हैं) लेकिन यह आमतौर पर संभव है।
अलेना_ए

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

जवाबों:


33

इन दिनों अधिकांश माइक्रो नियंत्रकों में एम्बेडेड फर्मवेयर कोड की सुरक्षा के लिए भाग या निर्माता विशिष्ट तरीके हैं। यह आमतौर पर सर्किट को लॉक करके किया जाता है जो आम तौर पर कोड मेमोरी को बाहर पढ़ने की अनुमति देता है। (आपको डेटा शीट में या लागू एप्लिकेशन नोटों में निर्माताओं की वेब साइट पर आंशिक विशिष्ट विवरण देखना होगा)।

एक बार लॉक होने के बाद सामान्य तकनीकों का उपयोग करके कोड मेमोरी को पढ़ना संभव नहीं है। यह आपके कोडित एप्लिकेशन के लिए मशीन कोड को देखने से अधिकांश हैकर्स को रखने के लिए उचित स्तर की सुरक्षा प्रदान करता है।

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

माइक्रोकंट्रोलर्स में कोड सुरक्षा की कोई भी चर्चा इस बात के बिना पूरी नहीं होगी कि आमतौर पर इस बात की कोई गारंटी नहीं है कि पार्ट निर्माता द्वारा दी गई कोई भी सुरक्षा योजना मूर्ख प्रमाण है। निर्माता यहां तक ​​बताएंगे कि सुरक्षा प्रणालियां 100% मूर्ख प्रमाण नहीं हैं। इसका एक कारण यह है कि एक पूरी ब्लैक मार्केट इंडस्ट्री चल रही है, जहां एक शुल्क के लिए, मेहनती हैकर किसी भी व्यक्ति के लिए संरक्षित हिस्से से कोड पढ़ेंगे जो भुगतान करना चाहते हैं। उन्होंने विभिन्न योजनाओं को तैयार किया है जो कोड को संरक्षित माइक्रो नियंत्रक पर रोम या फ्लैश से बाहर पढ़ने की अनुमति देते हैं। इन योजनाओं में से कुछ अविश्वसनीय रूप से चतुर हैं, लेकिन दूसरों की तुलना में कुछ भाग परिवारों पर बेहतर सफलता के लिए काम करती हैं। तो इस तथ्य से अवगत रहें फिर आप अपने कार्यक्रम को चुभने वाली आँखों से बचाने की कोशिश करें।

एक बार जब किसी के पास मशीन कोड की द्विआधारी छवि पर हाथ होता है जिसे एक माइक्रोकंट्रोलर से बाहर पढ़ा गया है, चाहे वह एक संरक्षित माइक्रोकंट्रोलर था या नहीं, वे मशीन कोड को एक डिस्सेम्बलर नामक उपकरण के माध्यम से संसाधित कर सकते हैं। यह बाइनरी डेटा को असेंबली लैंग्वेज कोड में बदल देगा, जिसका अध्ययन करके यह जानने की कोशिश की जा सकती है कि आपके प्रोग्राम के एल्गोरिदम कैसे काम करते हैं। मशीन कोड का सटीक डिस्प्रेशन करना एक श्रमसाध्य काम है जो भारी मात्रा में काम कर सकता है। अंत में प्रक्रिया असेंबलर कोड की ओर ले जा सकती है जैसे मैंने बताया। यदि आपका प्रोग्राम कुछ उच्च स्तरीय भाषा में लिखा गया था जैसे कि C, C ++ या बेसिक असेंबली कोड केवल आपके प्रोग्राम के संकलित और लिंक किए गए परिणाम का प्रतिनिधित्व करेगा। आमतौर पर इंजीनियर चोरी कोड को उच्च स्तरीय भाषा के स्तर पर वापस करना संभव नहीं है।

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

अधिकांश अनुभवी एम्बेडेड डेवलपर्स आपको अपने आवेदन में MCU पर दी जाने वाली किसी भी सुरक्षा योजना का उपयोग करने और आगे बढ़ने के लिए कहेंगे .... लेकिन यह आपके उत्पाद के लिए सड़क के अंत तक निर्भर करने के लिए नहीं। वे आपको बताएंगे कि प्रतियोगिता से आगे रहने का सबसे अच्छा तरीका है कि आप अपने उत्पाद को लगातार उन्नत करें ताकि पुराने संस्करण पुराने हो जाएं और उस समय तक निर्बाध रहें जब तक कि हैकर्स आपके कोड का क्लोन बना लें। कोड बदलें, नई सुविधाएँ जोड़ें, समय-समय पर अपने सभी I / Os को स्वैप करने के लिए अपने पीसी बोर्डों को स्पिन करें और किसी भी अन्य चीज़ों के बारे में जो आप सोच सकते हैं। इस तरह आप हर बार दौड़ जीत सकते हैं।


आपका बहुत बहुत धन्यवाद
@ मिचेल करस

12

मुझे लगता है कि इस सवाल के लिए माइकल का जवाब पर्याप्त है, लेकिन मैं इन दोनों लिंक को जोड़ता हूं: हैकिंग PIC 18F1320 और वे जो कुछ भी बनाते हैं, हम तोड़ सकते हैं! ये दोनों मेरे लिए बहुत दिलचस्प थे।


मेहनती ईई को उस अंतिम लिंक, और अनुसंधान / तुलना / पिक डिवाइस (ओं) का अध्ययन करना चाहिए जो सूची से गायब हैं । जटिलता हमेशा अधिक निवारक होती है - जैसे कि DS3641 या ATSHA204 जोड़ना । यद्यपि कोई अतिरिक्त सुरक्षा कभी भी 100% अटूट नहीं होगी, लेकिन अतिरिक्त जटिलता इसे सार्थक नहीं बना सकती है।
rdtsc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.