Arduino पर HTTPS कैसे प्राप्त करें?


31

स्पष्ट रूप से कहें: क्या Arduino पर HTTPS कनेक्शन प्राप्त करने का एक तरीका है?

मैं इसे देख रहा हूं, और मैंने पाया है कि यह मानक पुस्तकालय और ईथरनेट शील्ड के साथ असंभव है, लेकिन क्या कोई कस्टम लाइब्रेरी है जो इसे कर सकती है?

एक कॉपीप्रोसेसर के बारे में क्या, जैसे कि वाईफाई शील्ड है? किसी को पता है कि अगर Arduino yn ssl है?


1
इसमें आपकी रुचि हो सकती है: stackoverflow.com/questions/15830333/arduino-due-https-support
puredevotion

पहला सवाल "आप Arduino के साथ एक कनेक्शन कैसे प्राप्त कर सकते हैं?"। यदि आप (जैसे) SIM800 का उपयोग करते हैं, तो इसमें HTTPS शामिल है।
पीटर

जवाबों:


13

Arduinos पर लगे MCUs में https कनेक्शन को संभालने के लिए घोड़े की शक्ति नहीं है।

YUn , Linux , curl, wget या python जैसे सॉफ़्टवेयर के साथ https को हैंडल करता है । आपका स्केच बस कार्य को लिनक्स पक्ष में सौंप सकता है।

जबकि कर्ल ठीक काम करता है, जबकि अजगर पूर्वस्थापित होने के बावजूद, आपको मैन्युअल रूप से अजगर-ओपनसॉल स्थापित करने की आवश्यकता है, क्योंकि यह बॉक्स से बाहर उपलब्ध नहीं है (डिस्क स्थान की कमी के कारण)


जब आप कहते हैं कि "Yún linux साइड पर https हैंडल करता है" तो क्या आपका मतलब Arduino Yún या Yún Shield है?
काइस्टो पाइकर्ज

curl wget या python का https
पीटर

8

(डिस्क्लेमर: मैं वास्तव में evothings.com लेख का लेखक हूं)
Arduino UNO TLS करने में सक्षम से अधिक है। मैंने अभी इस विषय पर एक ब्लॉग पोस्ट श्रृंखला समाप्त की है। मेरे पास एक Arduino UNO का कार्यशील उदाहरण है जो निरंतर संचार के लिए AES-128 कुंजी का आदान-प्रदान करने के लिए अण्डाकार वक्र क्रिप्टोग्राफी (sect163r2) कर रहा है।

http://ardiri.com/blog/utls_defining_lightweight_security_for_iot_part_1
...
http://ardiri.com/blog/utls_defining_lightweight_security_for_iot_part_8

मैंने एक सही HTTPS कनेक्शन बनाने की कोशिश करने के लिए एक वैकल्पिक दृष्टिकोण लिया - इसके बजाय, यह हुड के तहत एक ही प्रोटोकॉल का उपयोग कर रहा है लेकिन ऐसा करने के लिए एक असुरक्षित संचार चैनल का उपयोग कर रहा है। HTTP पर बहुत ज्यादा TLS।


6

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

आप को देख में रुचि हो सकती है इस


6

मैं इसे यहाँ से जुड़े होने के लिए एक उत्तर के रूप में सूचीबद्ध करता हूँ। यह पूर्ण https नहीं है अभी तक, लेकिन वह इस पर काम कर रहा है और यह भविष्य में संभव हो सकता है http://evothings.com/is-it-possible-to-secure-micro-controllers-used-within-iot/

यहाँ एक बेंचमार्क है जो उसने 1024 बिट सार्वजनिक कुंजी का उपयोग करके एक संदेश एन्क्रिप्ट करने का किया

Arduino UNO       16Mhz AVR               ==> 12596 ms*   8504 ms#
Arduino Leonardo  16Mhz AVR               ==> 12682 ms*   8563 ms#
Arduino Mega      16Mhz AVR               ==> 12596 ms*   8504 ms#
Arduino Due       84Mhz ARM               ==>  1032 ms*
Arduino Yún       16Mhz AVR + 400Mhz MIPS ==>   707 ms*
Intel Galileo     400Mhz x86              ==>   192 ms*

जहां तक ​​वह इसके साथ गया है, लेकिन यह देखने के लिए एक परीक्षण सर्वर स्थापित करने की प्रक्रिया में है कि यह देखने के लिए कि पूर्ण ssl / https कार्यान्वयन के करीब वह कैसे खींच सकता है।


1
क्या आप पोस्ट किए गए लिंक से सबसे दिलचस्प विवरण डाल सकते हैं ताकि पाठक तुरंत देख सकें कि यह आगे पढ़ने लायक है या नहीं? अन्यथा आपका जवाब एसई नीतियों का पालन नहीं करेगा और इसे बंद करना होगा।
jfpoilpret

2

जैसा कि Federico Fissore ऊपर कहता है, Yún लिनक्स की ओर केवल HTTPS (या SSL, जिसे आप इसे कॉल करना चाहते हैं) संभाल सकते हैं।

इसे करने का पहला तरीका अजगर ओपनएसएसएल के साथ पायथन का उपयोग कर रहा है। जिस तरह से आप यह कर रहे हैं वह एसएसएच या यूंएसरियोरलमिनल के माध्यम से निम्नलिखित कमांड जारी करके है:

opkg update
opkg install python-openssl

opkg updateयह सुनिश्चित करेगा कि पैकेज सूची अद्यतित है, और फिर opkg installपायथन ओपनएसएसएल स्थापित करता है। और फिर आप पायथॉन का उपयोग करके Arduino से बात कर सकते हैं। Arduino वेबसाइट के इस पेज पर आपको Arduino के साथ Python का उपयोग करने में मदद करनी चाहिए।

आप अपने स्केच में विकल्प के curlसाथ भी उपयोग कर सकते हैं -k। उदाहरण के लिए:

Process process;
process.runShellCommand("curl -k http://example.net");
while(p.running()); // this waits for the command to be done before continuing

इसके अलावा, यदि आप कोई फ़ाइल डाउनलोड करना चाहते हैं, तो आप उपयोग कर सकते हैं wget। इसके लिए आपको wgetSSH या YunSerialTerminal के माध्यम से फिर से ये कमांड जारी करके अपग्रेड करना होगा :

opkg update
opkg upgrade wget

और फिर आप इसे केवल अपने स्केच में कर सकते हैं:

Process process;
process.runShellCommand("wget http://example.net");
while(p.running()); // this waits for the command to be done before continuing

क्या Arduino Yún Shield का उपयोग करना भी संभव है? Arduino Yún के बजाय!
कॉयस्टो पाइकर्ज

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