วิธีรับ HTTPS บน Arduino


31

อธิบายอย่างชัดเจน: มีวิธีรับการเชื่อมต่อ HTTPS บน Arduino หรือไม่?

ฉันได้เข้าไปดูแล้วและพบว่ามันเป็นไปไม่ได้ในไลบรารีมาตรฐานและตัวป้องกันอีเธอร์เน็ต แต่มีไลบรารีแบบกำหนดเองที่สามารถทำได้หรือไม่

สิ่งที่เกี่ยวกับตัวประมวลผลร่วมเช่นโล่ WiFi มี? ใครรู้ว่า Arduino yúnมี ssl หรือไม่?


1
คุณอาจสนใจสิ่งนี้: stackoverflow.com/questions/15830333/arduino-due-https-support
puredevotion

คำถามแรกคือ "คุณจะเชื่อมต่อกับ Arduino ได้อย่างไร" หากคุณใช้ (เช่น) SIM800 จะมี HTTPS รวมอยู่ด้วย
ปีเตอร์

คำตอบ:


13

MCUs ที่ติดตั้งบน Arduinos ไม่มีพลังม้าในการจัดการการเชื่อมต่อ https

Yúnจัดการกับ https บนฝั่ง linuxด้วยซอฟต์แวร์เช่น curl, wget หรือ python ร่างของคุณสามารถมอบหมายงานให้ฝ่ายลินุกซ์

ในขณะที่ curl ทำงานได้ดีแม้ว่าจะมีการติดตั้ง python ไว้ล่วงหน้าคุณจะต้องติดตั้ง python-openssl ด้วยตนเองเนื่องจากไม่สามารถใช้งานได้นอกกรอบ (เนื่องจากข้อ จำกัด ของพื้นที่ดิสก์)


เมื่อคุณพูดว่า "Yúnจัดการ https บนฝั่ง linux" คุณหมายถึง Arduino YúnหรือYún Shield หรือไม่
Ciasto piekarz

curl wget หรือ python ไม่มีส่วนเกี่ยวข้องกับ https
Peter

8

(ข้อสงวนสิทธิ์: จริง ๆ แล้วฉันเป็นผู้เขียนบทความ evothings.com)
Arduino UNO เป็นมากกว่าความสามารถในการทำ TLS ฉันเพิ่งจะโพสต์บล็อกชุดในหัวข้อ ฉันมีตัวอย่างการทำงานของ Arduino UNO ที่ใช้การเข้ารหัสแบบวงรีรูปไข่ (sect163r2) เพื่อแลกเปลี่ยนคีย์ AES-128 เพื่อการสื่อสารอย่างต่อเนื่อง

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 อย่างแท้จริง - แทนนี่คือการใช้โปรโตคอลเดียวกันภายใต้ประทุน แต่ใช้ช่องทางการสื่อสารที่ไม่ปลอดภัยเพื่อทำเช่นนั้น TLS ค่อนข้างมากบน HTTP


6

ฉันไม่คิดว่ามันเป็นไปได้เนื่องจากขนาดและความซับซ้อนของห้องสมุด SSL เพราะ Arduino อาจจะอยู่ภายใต้การขับเคลื่อน อย่างที่บอกไปแล้วว่าคุณสามารถร้องขอไปยังเซิร์ฟเวอร์ปกติและใช้สคริปต์ PHP บางประเภทเพื่อทำหน้าที่ร้องขอไปยังเซิร์ฟเวอร์ HTTPS ไม่แน่ใจว่ามันจะทำงานได้ดีแค่ไหน

คุณอาจจะสนใจเข้ามาดูที่นี้


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
คุณช่วยเพิ่มรายละเอียดที่น่าสนใจที่สุดจากลิงค์ที่คุณโพสต์ไว้เพื่อให้ผู้อ่านเห็นได้ทันทีหรือไม่ว่ามันคุ้มค่าที่จะอ่านเพิ่มเติมหรือไม่? มิฉะนั้นคำตอบของคุณจะไม่เป็นไปตามนโยบายของ SE และจะต้องถูกปิด
jfpoilpret

2

ดังที่ Federico Fissore กล่าวไว้ข้างต้นYúnสามารถจัดการ HTTPS (หรือ SSL ได้ทุกอย่างที่คุณต้องการโทรหา) ทางด้าน Linux ของYún

วิธีแรกในการใช้ Python กับ Python OpenSSL วิธีที่คุณทำคือการออกคำสั่งต่อไปนี้ผ่าน SSH หรือ YunSerialTerminal:

opkg update
opkg install python-openssl

opkg updateจะทำให้แน่ใจว่ารายการแพ็กเกจนั้นทันสมัยแล้วopkg installติดตั้ง Python OpenSSL จากนั้นคุณสามารถคุยกับ Arduino โดยใช้ Python หน้านี้บนเว็บไซต์ Arduinoควรช่วยคุณในการใช้ Python กับ Arduino

คุณสามารถใช้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นอกจากนี้ถ้าคุณต้องการที่จะดาวน์โหลดไฟล์ที่คุณสามารถใช้ สิ่งนี้จะทำให้คุณต้องอัปเกรดwgetโดยออกคำสั่งเหล่านี้อีกครั้งผ่าน SSH หรือ 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!
Ciasto piekarz

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.