ArduinoでHTTPSを取得する方法は?


31

簡単に言えば、ArduinoでHTTPS接続を取得する方法はありますか?

私はそれを探していましたが、標準ライブラリとイーサネットシールドでは不可能であることがわかりましたが、それを行うことができるカスタムライブラリはありますか?

WiFiシールドのようなコプロセッサーはどうですか?ArduinoyúnにSSLがあるかどうか誰でも知っていますか?


1
これに興味があるかもしれません:stackoverflow.com/questions/15830333/arduino-due-https-support
puredevotion 14

最初の質問は、「どうすればArduinoとの接続を取得できますか?」です。(たとえば)SIM800を使用する場合、HTTPSが含まれています。
ピーター

回答:


13

ArduinosにマウントされたMCUには、https接続を処理する能力がありません。

Yúnは、curl、wget、pythonなどのソフトウェアを使用して、Linux側でhttps 処理します。あなたのスケッチはタスクをLinux側に委任するだけです。

pythonはプリインストールされていますが、curlは正常に動作しますが、python-opensslを手動でインストールする必要があります(ディスクスペースの制約のため)すぐに使用できないためです。


「Yúnはlinux側でhttpsを処理します」と言うとき、ArduinoYúnまたはYúnShieldを意味しますか?
シアストピエカルツ

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接続を確立するために、別のアプローチを採用しました。代わりに、これは内部で同じプロトコルを使用していますが、そのために安全でない通信チャネルを使用しています。HTTP上のTLSのほとんど。


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は、YúnのLinux側でHTTPS(またはSSL、必要に応じて)しか処理できません。

最初の方法は、PythonをPython OpenSSLで使用することです。これを行う方法は、SSHまたはYunSerialTerminalを介して次のコマンドを発行することです。

opkg update
opkg install python-openssl

opkg updateパッケージリストが最新であることを確認してから、opkg installPython OpenSSLをインストールします。そして、Pythonを使用してArduinoと話すことができます。Arduino Webサイトのこのページは、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

ArduinoYúnShieldを使用することも可能ですか?ArduinoYúnの代わりに!
シアストピエカルツ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.