Làm thế nào để có được HTTPS trên Arduino?


31

Nói một cách rõ ràng: có cách nào để có kết nối HTTPS trên Arduino không?

Tôi đã tìm kiếm nó và tôi thấy điều đó là không thể đối với thư viện tiêu chuẩn và lá chắn Ethernet, nhưng liệu có một thư viện tùy chỉnh có thể làm điều đó không?

Điều gì về một bộ đồng xử lý, tức là như lá chắn WiFi có? Bất cứ ai cũng biết nếu Arduino yún có ssl?


1
bạn có thể quan tâm đến điều này: stackoverflow.com/questions/15830333/arduino-due-https-support
puredevotion

Câu hỏi đầu tiên là "làm thế nào bạn có thể có kết nối với Arduino?". Nếu bạn sử dụng (ví dụ) SIM800, nó có HTTPS đi kèm.
Peter

Câu trả lời:


13

MCU được gắn trên Arduinos không có sức ngựa để xử lý các kết nối https.

Yún xử lý https ở phía linux , với các phần mềm như curl, wget hoặc python. Bản phác thảo của bạn chỉ có thể ủy thác nhiệm vụ cho phía linux.

Mặc dù curl hoạt động tốt, mặc dù đã cài đặt sẵn python, bạn cần cài đặt thủ công python-openssl, vì nó không có sẵn trong hộp (do hạn chế về không gian đĩa)


Khi bạn nói "Yún xử lý https ở phía linux", bạn có nghĩa là Arduino Yún hoặc Yún Shield?
Ciasto piekarz

curl wget hoặc python không liên quan gì đến https
Peter

8

(Tuyên bố miễn trừ trách nhiệm: Tôi thực sự là tác giả của bài viết evothings.com)
Arduino UNO không chỉ có khả năng thực hiện TLS. Tôi vừa hoàn thành một loạt bài viết trên blog về chủ đề này. Tôi có một ví dụ hoạt động của Arduino UNO đang thực hiện mã hóa đường cong elip (sect163r2) để trao đổi khóa AES-128 để tiếp tục liên lạc.

http://ardiri.com/blog/utls_defining_light weight_security_for_iot_part_1
...
http://ardiri.com/blog/utls_defining_light weight_security_for_iot_part_8

Tôi đã thực hiện một cách tiếp cận khác để cố gắng tạo kết nối HTTPS thực sự - thay vào đó, đây là sử dụng cùng một giao thức dưới mui xe nhưng sử dụng kênh liên lạc không an toàn để thực hiện. Khá nhiều TLS trên HTTP.


6

Tôi không nghĩ có thể do kích thước và độ phức tạp của Thư viện SSL, vì Arduino rất có thể sẽ được cung cấp năng lượng. Điều đó đang được nói rằng bạn có thể thực hiện các yêu cầu đến một máy chủ thông thường và sử dụng một số loại tập lệnh PHP để ủy quyền yêu cầu đến máy chủ HTTPS. Không chắc nó sẽ hoạt động tốt như thế nào.

Bạn có thể quan tâm đến việc này .


6

Tôi liệt kê đây là một câu trả lời cho mục đích liên kết ở đây. Nó chưa đầy đủ https nhưng anh ấy đang làm việc với nó và có thể thực hiện được trong tương lai http://evothings.com/is-it-possible-to-secure-micro-controllers- used-within -iot /

Đây là một điểm chuẩn anh ấy đã mã hóa tin nhắn bằng khóa công khai 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*

Điều này là theo như anh ấy đã đi với nó nhưng đang trong quá trình thiết lập một máy chủ thử nghiệm để xem mức độ gần với một triển khai ssl / https đầy đủ mà anh ấy có thể thực hiện.


1
Bạn có thể vui lòng đặt các chi tiết thú vị nhất từ ​​liên kết bạn đã đăng để người đọc có thể xem ngay nếu nó đáng để đọc thêm hay không? Nếu không, câu trả lời của bạn sẽ không tuân theo các chính sách SE và sẽ phải bị đóng lại.
jfpoilpret

2

Như Federico Fissore đã nói ở trên, Yún chỉ có thể xử lý HTTPS (hoặc SSL, bất cứ điều gì bạn muốn gọi nó) về phía Linux của Yún.

Cách đầu tiên để làm điều đó là sử dụng Python với Python OpenSSL. Cách bạn làm điều này là bằng cách ban hành các lệnh sau thông qua SSH hoặc YunSerialTerminal:

opkg update
opkg install python-openssl

opkg updatesẽ đảm bảo danh sách gói được cập nhật và sau đó opkg installcài đặt Python OpenSSL. Và sau đó bạn có thể nói chuyện với Arduino bằng Python. Trang này trên trang web Arduino sẽ giúp bạn sử dụng Python với Arduino.

Bạn cũng có thể sử dụng curlvới -ktùy chọn trong bản phác thảo của bạn. Ví dụ:

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

Ngoài ra, nếu bạn muốn tải xuống một tập tin, bạn có thể sử dụng wget. Điều này sẽ yêu cầu bạn nâng cấp wgetbằng cách phát hành lại các lệnh này thông qua SSH hoặc YunSerialTerminal:

opkg update
opkg upgrade wget

Và sau đó bạn có thể làm điều này trong bản phác thảo của bạn:

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

cũng có thể sử dụng Arduino Yún Shield? thay vì Arduino Yún!
Ciasto piekarz

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.