क्या NodeMCU बोर्ड पर लोड किए गए प्रोग्राम निकाले जा सकते हैं?


13

मैं एक साधारण संपत्ति ट्रैकर बनाने के लिए वाईफाई क्षमताओं के साथ एक NodeMCU बोर्ड का उपयोग कर रहा हूं। मैं कुछ Arduino स्केच खोजने में कामयाब रहा हूं जो Azure IoT हब से संपर्क करने और संदेशों को पोस्ट करने में सक्षम बनाता है।

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

मेरा डर है कि कोई व्यक्ति बस बोर्ड ले सकता है और सुरक्षा क्रेडेंशियल्स तक पहुंचने के लिए फाइलों को "डाउनलोड" कर सकता है।

क्या मेरा डर अनुचित है या क्रेडेंशियल्स का नुकसान एक वास्तविक खतरा है जिसे मुझे कम करने की आवश्यकता है?


3
मुझे लगता है कि @ माईक ऑन्स्वर्थ और बेन्स कौलिक्स के उत्तर एक साथ मुझे एक अच्छा विकल्प देते हैं। दुर्भाग्य से मैं दोनों को स्वीकृत उत्तरों के रूप में चिह्नित नहीं कर सकता।
मेढ़े

जवाबों:


12

[अस्वीकरण: मैं एक सुरक्षा / क्रिप्टो पेशेवर हूं और हर दिन इस तरह की सुरक्षा वास्तुकला के सवालों से निपटता हूं।]

आप इस तरह से क्रेडेंशियल्स को संग्रहीत करने की समस्या पर ठोकर खा चुके हैं, जो एक अप्राप्य प्रक्रिया उन्हें एक्सेस कर सकती है, लेकिन एक आक्रमण नहीं कर सकता। यह एक अच्छी तरह से ज्ञात और हल करने के लिए बहुत मुश्किल समस्या है।

यदि आपके IoT डिवाइस में कुछ केपीएम की तरह मदरबोर्ड में अंतर्निहित हार्डवेयर की -स्टोर है, या एंड्रॉइड हार्डवेयर-समर्थित केइस्टोर या ऐप्पल सिक्योर एन्क्लेव के बराबर है , तो आप इसका उपयोग कर सकते हैं।

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

IoT दो कारणों से एक रिंच फेंकता है:

  1. हार्डवेयर सीरियल नंबर अद्वितीय हैं, यह धारणा शायद पकड़ में नहीं आती है, और

  2. सर्वर के विपरीत, हमलावरों के पास डिवाइस तक भौतिक पहुंच होती है, इसलिए संभवतः डिक्रिप्शन प्रोग्राम को चलाने के लिए डिवाइस पर एक शेल प्राप्त कर सकते हैं।

हार्डवेयर एन्क्रिप्शन (टीपीएम) और "हार्डवेयर फ़िंगरप्रिंट" एन्क्रिप्शन दोनों सबसे अच्छे हैं, क्योंकि मौलिक रूप से, यदि कोई स्थानीय प्रक्रिया डेटा को डिक्रिप्ट कर सकती है, तो एक हमलावर उस स्थानीय प्रक्रिया को चलाने में सक्षम हो सकता है।


तो मानक चाल की तरह लग रहा है कि यह यहाँ काम नहीं करता है। पहला सवाल जो आपको खुद से पूछने की ज़रूरत है:

  • मेरा खतरा मॉडल क्या है / यह परियोजना Secure <--> Convenientपैमाने पर कहां बैठती है ?

अंत में, मुझे लगता है कि आपको या तो यह तय करने की आवश्यकता है कि security > convenienceऔर प्रत्येक बूट-अप ( @ BenceKaulics के उत्तर जैसी किसी चीज़ का उपयोग करके ) में एक मानव ने क्रेडेंशियल्स दर्ज किया है , या आप यह निर्णय लेते हैं security < convenienceऔर केवल डिवाइस पर क्रेडेंशियल्स डालते हैं, हो सकता है कि आप किसी तरह का विरोध करें महसूस करो कि फर्क पड़ता है।


यह एक कठिन समस्या है जिसे IoT उपकरणों की प्रकृति द्वारा कठिन बना दिया गया है।

पूर्णता के लिए, इस समस्या का पूर्ण विकसित औद्योगिक समाधान है:

  • प्रत्येक IoT डिवाइस को निर्माण के समय एक अद्वितीय RSA सार्वजनिक कुंजी दें। डिवाइस क्रम संख्या के विरुद्ध db में इस सार्वजनिक कुंजी को रिकॉर्ड करें।
  • एक उचित सर्वर पर संवेदनशील क्रेडेंशियल्स को स्टोर करें, चलो इसे "गेटवे" कहते हैं।
  • जब कोई IoT डिवाइस गेटवे (इसकी RSA कुंजी का उपयोग करके) को प्रमाणित करता है, तो गेटवे संग्रहीत सत्रांक का उपयोग करके इसके लिए एक सत्र खोलता है और सत्र टोकन को डिवाइस पर वापस भेजता है।
  • सर्वोत्तम सुरक्षा के लिए, गेटवे एक भौतिक (या वीपीएन) गेटवे है, ताकि IoT डिवाइस से सभी ट्रैफ़िक गेटवे से गुजरें और आपके पास फ़ायरवॉल नियमों और सामान पर अधिक नियंत्रण हो - आदर्श रूप से डिवाइस को प्रत्यक्ष (गैर-वीपीएन सुरंग रहित) होने से रोकता है। इंटरनेट का इस्तेमाल।

इस तरह, और एक डिवाइस से समझौता करने वाले हमलावर को एक सत्र खोला जा सकता है, लेकिन कभी भी क्रेडेंशियल्स तक सीधी पहुंच नहीं है।


2
हाँ। समस्या का एक बड़ा हिस्सा यह है कि यहां जो संरक्षित करने की कोशिश की जा रही है वह साझा रहस्य है जो एक वाईफाई पासवर्ड है। साझा किए गए रहस्य एक बुरा विचार है जब किसी डिवाइस को शारीरिक रूप से विच्छेदित किया जा सकता है। एक बेहतर डिज़ाइन डिवाइस की प्रत्येक आवृत्ति (या अन्य कंप्यूटर) को प्रत्येक व्यक्तिगत गैजेट और उन प्रणालियों के बीच एक विशिष्ट सुरक्षित चैनल के साथ अपने स्वयं के सुरक्षा वातावरण में अलग कर देगा, जिनसे उन्हें संवाद करने की आवश्यकता होती है। उस मामले के लिए, वाईफ़ाई किसी भी तरह से आवेदन के लिए बहुत अच्छा फिट नहीं हो सकता है, कुछ बिंदु-से-बिंदु 2.4 गीगाहर्ट्ज योजना या यहां तक ​​कि "एस्प नाउ" प्रोटोकॉल।
क्रिस स्ट्रैटन

1
अच्छी बात। आप एक SSID पासवर्ड के बजाय WPA2 एंटरप्राइज़ क्लाइंट प्रमाणपत्र का उपयोग करके साझा गुप्त समस्या को ठीक कर सकते हैं (यदि IoT डिवाइस एक TLS स्टैक के लिए पर्याप्त बड़ा है, तो कई नहीं हैं)। मैं Azure IoT हब के बारे में कुछ नहीं जानता, लेकिन मुझे लगता है कि Azure डिवाइस कनेक्शन स्ट्रिंग्स पहले से ही अद्वितीय-प्रति-डिवाइस हैं। दुर्भाग्य से, यह "DIY नो सिक्योरिटी" और "इंडस्ट्रियल-स्केल सिक्योरिटी" के बीच बहुत साफ-सुथरा काला-सफेद सा प्रतीत होता है।
माइक ऊँस्वोरथ

2
मैं सोच रहा हूं, अगर मैं इच्छा-शक्ति पर सत्र खोल सकता हूं, तो मुझे क्रेडेंशियल्स की आवश्यकता क्यों होगी?
एंड्रयू सविनाख

1
@AndrewSavinykh इस बात पर निर्भर करता है कि क्रेडेंशियल्स क्या हैं। हो सकता है कि वे सब करते हैं, एक सत्र खुला है, जिस स्थिति में हाँ, बहुत कारण नहीं। लेकिन हो सकता है कि वे Windows डोमेन AD क्रेडेंशियल हों, या IoT डिवाइस से सामान्य रूप से उपयोग नहीं किए जाने वाले / एक्सेस अतिरिक्त API तक पहुँच देते हों। शायद आप समझौता उपकरणों से आने वाले सत्रों के साथ ठीक हैं, लेकिन हमलावरों के लैपटॉप से ​​आने वाले सत्रों के साथ ठीक नहीं है। हाँ, यह उपयोग-मामला विशिष्ट बहुत जल्दी हो जाता है।
माइक ऊँस्वोरथ

3
क्रम संख्याएँ??? एक सीरियल नंबर ढूंढना अद्वितीय है जो एक समस्या नहीं होनी चाहिए, लेकिन सीरियल नंबर गुप्त नहीं हैं। वे एक कुंजी बनाने के लिए बेकार हैं। जहां पृथ्वी पर सीरियल नंबर का उपयोग एक प्रमुख "मानक चाल" बनाने के लिए किया जाता है?
गिलेस एसओ- बुराई को रोकना '

6

खतरा वास्तविक है, लेकिन सौभाग्य से यह आप या इस तरह की सुरक्षा चिंताओं के साथ केवल एक ही नहीं है।

आपको जो चाहिए वह है ईएसपी वाईफाई मैनेजर जो आपको यहां चाहिए।

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

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

यह काम किस प्रकार करता है

  • जब आपका ईएसपी शुरू होता है, तो यह इसे स्टेशन मोड में सेट करता है और पहले से सहेजे गए एक्सेस प्वाइंट से जुड़ने की कोशिश करता है

  • यदि यह असफल है (या कोई पिछला नेटवर्क नहीं बचा है) तो यह ESP को एक्सेस प्वाइंट मोड में ले जाता है और DNS और WebServer को डिफ़ॉल्ट बनाता है (डिफ़ॉल्ट आईपी 192.168.4.1)

  • ब्राउज़र (कंप्यूटर, फोन, टैबलेट) के साथ किसी भी वाईफाई सक्षम डिवाइस का उपयोग करके नए बनाए गए एक्सेस प्वाइंट से कनेक्ट करें

  • कैप्टिव पोर्टल और डीएनएस सर्वर की वजह से आपको या तो 'जॉइन टू नेटवर्क' टाइप का पॉपअप मिलेगा या कोई भी डोमेन मिलेगा जिसे आप कॉन्फ़िगरेशन पोर्टल पर रीडायरेक्ट करने की कोशिश करेंगे

  • स्कैन किए गए एक्सेस पॉइंट्स में से एक चुनें, पासवर्ड डालें, सेव पर क्लिक करें

  • ईएसपी कनेक्ट करने का प्रयास करेगा। सफल होने पर, यह आपके ऐप पर नियंत्रण वापस कर देता है। यदि नहीं, तो एपी को फिर से कनेक्ट करें और पुन: कॉन्फ़िगर करें।

(ईएसपी वाईफाई प्रबंधक प्रलेखन)


1
या सिर्फ एपी मोड में रहते हुए रिकॉर्ड या जो भी डाउनलोड करें। उम्मीद है कि पोस्टर परिसंपत्ति ट्रैकिंग के लिए स्वयं वाईफाई का उपयोग करने की कोशिश नहीं कर रहा है।
क्रिस स्ट्रैटन

1
@ChrisStratton :-) वास्तव में, मैं परिसंपत्ति ट्रैकिंग के लिए वाईफाई का उपयोग करने की कोशिश कर रहा हूं। सौभाग्य से, मेरे द्वारा उपयोग किया जाने वाला वाईएफआई नेटवर्क सार्वजनिक और खुला है, लेकिन मैं निहितार्थ के बारे में चिंतित हूं जब मुझे एक और उपयोग करने की आवश्यकता होती है जो पासवर्ड की आवश्यकता होती है। इसके अलावा तथ्य यह है कि AzureIoT हब कनेक्शन स्ट्रिंग डिवाइस पर है।
मेढ़े

2
@ कार्ड निश्चित रूप से, डिवाइस के EEPROM को पढ़ना एक बड़ा काम नहीं होगा।
बेंस कौलिक्स

3
@ आप हार्डवेयर पर, हाँ EPROM पढ़ा जा सकता है। नए उपकरणों में कुछ सुरक्षित फ़्लैश क्षेत्र हो सकते हैं जो बेहतर संरक्षित हैं। निश्चित रूप से यह एक ज्ञात समस्या है जिसे ठीक से करने और करने के लिए ऑन-चिप समर्थन की आवश्यकता है।
सीन होउलहेन

2
@ सीनहॉलिहेन - ESP8266 में EEPROM नहीं है। एसपीआई फ्लैश यह सब कुछ के लिए उपयोग करता है (अरुडिनो कार्यक्षमता का अनुकरण करते हुए) ईएसपी 8266 के लिए बाहरी है। मल्टी-चिप मॉड्यूल में भी, यह एक अलग डाई है जिसे एक सभ्य लैब में जांचा जा सकता है।
क्रिस स्ट्रैटन

3

यदि आप इसे सादे पाठ के रूप में छोड़ते हैं, तो वे आपके पासवर्ड तक पहुँच सकते हैं।

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


3
यदि वे हैश किए गए पासवर्ड को निकाल सकते हैं, जो हैशेड करते समय काम करता है, तो उन्हें कभी भी उल्टा किए बिना इसे उपयोग करने से रोकने के लिए क्या है?
क्रिस स्ट्रैटन

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

1
हां, वास्तव में यह कुछ अन्य सिस्टम पर वाईफाई पासवर्ड के पुन: उपयोग के मामले में कुछ सुरक्षा प्रदान करेगा, लेकिन उस वाईफाई एक्सेस बिंदु के अनधिकृत कनेक्शन के खिलाफ बहुत अधिक नहीं है।
क्रिस स्ट्रैटन

1
@ChrisStratton हाँ, उदाहरण के लिए मैक वाइटेल्टिस्टिंग केवल एक पासवर्ड रखने की तुलना में अधिक सुरक्षित है और इसे हैशिंग करते हैं, लेकिन ये चरण सामान्य रूप से वाईफाई सुरक्षा के लिए हैं, सार्वजनिक उपकरणों पर क्रेडेंशियल की गोपनीयता के लिए नहीं।
atakanyenel

2
नहीं, मैक व्हाइटलाइटिंग एक मजाक है - वहाँ कोई रहस्य नहीं है । और निश्चित रूप से मैक आसानी से चोरी किए गए ईएसपी 8266 या इसके एसपीआई फ्लैश से निकाला जाता है। मैक वाइटलाईस्टिंग के बारे में एकमात्र जगह ऐसे लोगों के खिलाफ है जो वाईफाई नेटवर्क में शामिल होने के लिए GUI का उपयोग करते हैं, या यदि कोई एक्सेस प्वाइंट वहां बैठा हुआ है जो किसी क्लाइंट से कनेक्शन के लिए इंतजार कर रहा है जो किसी दिन दिखाई दे सकता है, लेकिन वह इससे कभी जुड़ा नहीं था - यानी , पत्थर प्रकार के सामान में तलवार।
क्रिस स्ट्रैटन

1

सरल उत्तर - हाँ। यह किया जा सकता है। आपको कम से कम, कम से कम सुरक्षा प्रदान करने के लिए किसी प्रकार का आक्षेप करना होगा।


1
ऑबफसिकेशन से यह पता लगाना कठिन हो जाता है कि उपकरण कैसे काम करता है, लेकिन डिवाइस के क्लोनिंग से बचाव करना बेकार है। क्रेडेंशियल्स के निष्कर्षण से बचाने के लिए यह बेकार है: आपको बस एक एमुलेटर में फ़र्मवेयर चलाना है।
गिलेस एसओ- बुराई को रोकना '

पूर्णतया सहमत। इस तरह का जवाब देने वाली मेरी प्रेरणा यह ध्यान देने वाली थी कि <IoT नेटवर्क सुरक्षा पर विचार करना होगा>। @ माइक ऑन्क्सवर्थ ने एईएस और / या आरएसए इन्फ्रास्ट्रक्चर का उपयोग करते हुए विस्तृत उत्तर दिया। मैं एक और उत्तर देने पर विचार कर रहा हूं, लेकिन मुझे यकीन नहीं है कि जाने के लिए कैसे क्रिप्टोग्राफी में डुबकी (मैं भुगतान और बैंकिंग समाधानों में कई वर्षों के लिए भी हूं)। मेरी सोच यह है कि हमें व्यावहारिक / संतुलित सलाह प्रदान करनी होगी क्योंकि आमतौर पर लोग अपने पिछवाड़े में IoT उपकरणों की सुरक्षा के लिए क्रिप्टोग्राफी में जाने से बचेंगे।
अमित वुजिक

1
यदि लोग असुरक्षित डिवाइस बनाना चाहते हैं क्योंकि उन्हें यह पता लगाने के लिए परेशान नहीं किया जा सकता है कि सुरक्षित डिवाइस कैसे बनायें, तो मुझे उन्हें सक्षम करने का कोई कारण नहीं दिखता है।
गिल्स एसओ- बुराई को रोकना '

मेरा अनुभव है कि लोग सीखना चाहते हैं लेकिन फिर से, सुरक्षा स्तर और जटिलता के बीच संतुलन होना चाहिए। भुगतान उद्योग में SET ( en.wikipedia.org/wiki/Secure_Electronic_Transaction ) के संबंध में प्रसिद्ध कहानी है जो लागू करने के लिए बहुत सुरक्षित लेकिन जटिल थी और इस वजह से अभ्यास में असफल रही।
अमित वुजिक

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