Bagaimana cara mendapatkan HTTPS di Arduino?

31

Sederhananya: apakah ada cara untuk mendapatkan koneksi HTTPS di Arduino?

Saya telah mencari di dalamnya, dan saya telah menemukan itu tidak mungkin dengan perpustakaan standar dan perisai Ethernet, tetapi apakah ada perpustakaan khusus yang dapat melakukannya?

Bagaimana dengan coprocessor, seperti yang dimiliki WiFi shield? Adakah yang tahu apakah Arduino yún memiliki ssl?

Dokter
sumber
1
Anda mungkin tertarik pada ini: stackoverflow.com/questions/15830333/arduino-due-https-support
puredevotion
Pertanyaan pertama adalah "bagaimana Anda bisa mendapatkan koneksi dengan Arduino?". Jika Anda menggunakan (misalnya) SIM800, HTTPS sudah disertakan.
Peter

Jawaban:

13

MCU yang dipasang di Arduinos tidak memiliki kekuatan kuda untuk menangani koneksi https.

Anda menangani https di sisi linux , dengan perangkat lunak seperti curl, wget atau python. Sketsa Anda hanya dapat mendelegasikan tugas ke sisi linux.

Walaupun curl berfungsi dengan baik, walaupun memiliki python yang sudah diinstal, Anda perlu menginstal python-openssl secara manual, karena itu tidak tersedia di luar kotak (karena keterbatasan ruang disk)

Federico Fissore
sumber
Ketika Anda mengatakan "Anda tidak menangani https di sisi linux", maksud Anda Arduino Yún atau Yún Shield?
Ciasto piekarz
curl wget atau python tidak ada hubungannya dengan https
Peter
8

(Penafian: Saya sebenarnya penulis artikel evothings.com)
Arduino UNO lebih dari mampu melakukan TLS. Saya baru saja menyelesaikan serangkaian posting blog tentang topik tersebut. Saya punya contoh kerja dari Arduino UNO melakukan kriptografi kurva eliptik (sect163r2) untuk bertukar kunci AES-128 untuk komunikasi yang berkelanjutan.

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

Saya mengambil pendekatan alternatif untuk mencoba membuat koneksi HTTPS yang benar - sebagai gantinya, ini menggunakan protokol yang sama di bawah tenda tetapi menggunakan saluran komunikasi yang tidak aman untuk melakukannya. Cukup banyak TLS di HTTP.

Aaron Ardiri
sumber
6

Saya tidak berpikir itu mungkin karena ukuran dan kompleksitas Perpustakaan SSL, karena Arduino kemungkinan besar akan di bawah daya. Yang sedang berkata Anda bisa membuat permintaan ke server biasa dan menggunakan semacam skrip PHP untuk mem-proxy permintaan ke server HTTPS. Tidak yakin seberapa baik itu akan berhasil.

Anda mungkin tertarik melihat ini .

JVarhol
sumber
6

Saya mencantumkan ini sebagai jawaban untuk membuatnya terhubung di sini. Hal ini tidak penuh https belum tapi dia bekerja di atasnya dan mungkin bisa dilakukan di masa depan http://evothings.com/is-it-possible-to-secure-micro-controllers-used-within-iot/

di sini adalah patokan dia mengenkripsi pesan menggunakan kunci publik 1024 bit

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*

Ini sejauh yang dia lakukan dengan itu tetapi sedang dalam proses menyiapkan server uji untuk bekerja pada melihat seberapa dekat dengan implementasi ssl / https penuh dia bisa melakukan.

Seth M Rainsdon
sumber
1
Bisakah Anda memasukkan detail paling menarik dari tautan yang Anda poskan sehingga pembaca dapat langsung melihat apakah perlu dibaca lebih lanjut atau tidak? Kalau tidak, jawaban Anda tidak akan mengikuti kebijakan SE dan harus ditutup.
jfpoilpret
2

Seperti yang dikatakan Federico Fissore di atas, Yún hanya dapat menangani HTTPS (atau apa pun yang Anda ingin menyebutnya) di sisi Linux Yún.

Cara pertama untuk melakukannya adalah menggunakan Python dengan Python OpenSSL. Cara Anda melakukan ini adalah dengan mengeluarkan perintah berikut melalui SSH atau YunSerialTerminal:

opkg update
opkg install python-openssl

opkg updateakan memastikan daftar paket terbaru, dan kemudian opkg installmenginstal Python OpenSSL. Dan kemudian Anda dapat berbicara dengan Arduino menggunakan Python. Halaman ini di situs web Arduino akan membantu Anda dalam menggunakan Python dengan Arduino.

Anda juga bisa menggunakan curldengan -kpilihan dalam sketsa Anda. Sebagai contoh:

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

Juga, jika Anda ingin mengunduh file, Anda bisa menggunakan wget. Ini akan mengharuskan Anda untuk memutakhirkan wgetdengan kembali mengeluarkan perintah ini melalui SSH atau YunSerialTerminal:

opkg update
opkg upgrade wget

Dan kemudian Anda bisa melakukan ini di sketsa Anda:

Process process;
process.runShellCommand("wget http://example.net");
while(p.running()); // this waits for the command to be done before continuing
hichris123
sumber
apakah mungkin menggunakan Arduino Yún Shield? bukannya Arduino Yún!
Ciasto piekarz