Arduino'da HTTPS nasıl elde edilir?


31

Basitçe söylemek gerekirse: Arduino'da bir HTTPS bağlantısı kurmanın bir yolu var mı?

Ona bakıyordum ve standart kütüphane ve Ethernet kalkanı ile imkansız olduğunu buldum, ancak bunu yapabilen özel bir kütüphane var mı?

Peki bir işlemci, yani WiFi kalkanı gibi? Arduino'nun ssl olup olmadığını bilen var mı?



İlk soru "Arduino ile nasıl bağlantı kurabilirsiniz?" (Örn.) SIM800 kullanıyorsanız, HTTPS dahil edilmiştir.
Peter,

Yanıtlar:


13

Arduinos'a monte edilmiş MCU'ların https bağlantılarını idare edebilecek beygir gücü yoktur.

Yún, kıvrım, wget veya python gibi bir yazılımla linux tarafındaki https işlemlerini gerçekleştiriyor . Çizimin sadece görevi linux tarafına devredebilir.

Curl düzgün çalışsa da, önceden yüklenmiş python olmasına rağmen, python-openssl'yi manuel olarak kurmanız gerekir, çünkü kutudan çıkarılmadığından (disk alanı kısıtlamaları nedeniyle)


"Yún linux tarafında https işliyor mu" derken Arduino Yún veya Yún Kalkanı mı demek istiyorsun?
Ciasto piekarz

curl wget or python'un https ile ilgisi yok
Peter

8

(Feragatname: Aslında evothings.com makalesinin yazarıyım)
Arduino UNO, TLS yapabilecek kapasiteden daha fazlasını yapıyor. Konuyla ilgili bir blog yazısı dizisi daha yeni bitirdim. Sürekli iletişim için bir AES-128 anahtarını değiştirmek üzere eliptik eğri kriptografisi (sect163r2) yapan bir Arduino UNO'nun çalışan bir örneğim var.

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

Gerçek bir HTTPS bağlantısı kurmaya çalışmak için alternatif bir yaklaşım kullandım - bunun yerine, başlık altında aynı protokolleri kullanıyor, ancak bunu yapmak için güvensiz bir iletişim kanalı kullanıyor. HTTP'de hemen hemen TLS.


6

SSL Kütüphanesinin büyüklüğü ve karmaşıklığı nedeniyle bunun mümkün olduğunu sanmıyorum, çünkü Arduino büyük olasılıkla güç altında olacaktı. Bu istekleri düzenli bir sunucuya yapabileceğinizi ve HTTPS sunucusuna isteği proxy etmek için bir çeşit PHP betiği kullanabileceğinizi söylemektedir. Ne kadar işe yarayacağından emin değilim.

Sen bakarak içine ilginizi çekebilir bu .


6

Bunu, burada bağlantılı kılma adına bir cevap olarak listeliyorum. Henüz tam https değil ama üzerinde çalışıyor ve gelecekte yapılabilir. Http://evothings.com/is-it-possible-to-secure-micro-controllers-used-within-iot/

işte bir mesaj 1024 bit açık anahtar kullanarak şifreleyen bir kriter

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*

Bu onunla gittiği kadarıyla ancak tam bir ssl / https uygulamasına ne kadar yaklaşabileceğini görmeye çalışacak bir test sunucusu kurma sürecinde.


1
Lütfen, okuduğunuz derginin daha fazla okumaya değip değmeyeceğini hemen görebilmesi için, yayınladığınız bağlantıdan en ilginç ayrıntıları anlatabilir misiniz? Aksi halde cevabınız SE politikalarına uymaz ve kapatılması gerekir.
jfpoilpret

2

Federico Fissore'un yukarıda da söylediği gibi, Yún, Yún’un Linux tarafındaki HTTPS’yi (veya SSL, ne demek istersen) kullanabilir.

Bunu yapmanın ilk yolu Python OpenSSL ile Python kullanıyor. Bunu yapma şekliniz SSH veya YunSerialTerminal aracılığıyla aşağıdaki komutları vermektir:

opkg update
opkg install python-openssl

opkg updatepaket listesinin güncel olduğundan emin olacak ve opkg installPython OpenSSL'yi kuracak. Sonra Python kullanarak Arduino ile konuşabilirsiniz. Arduino web sitesindeki bu sayfa, Python'u Arduino ile kullanmanıza yardımcı olacaktır.

Ayrıca kullanabilirsiniz curlile -ksizin kroki seçeneği. Örneğin:

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

Ayrıca, bir dosyayı indirmek istiyorsanız kullanabilirsiniz wget. Bu, wgetbu komutları SSH veya YunSerialTerminal aracılığıyla tekrar vererek yükseltmenizi gerektirir :

opkg update
opkg upgrade wget

Ve sonra bunu eskizinde yapabilirsin:

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 kullanarak da mümkün mü? Arduino yerine Yún!
Ciasto piekarz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.