簡単に言えば、ArduinoでHTTPS接続を取得する方法はありますか?
私はそれを探していましたが、標準ライブラリとイーサネットシールドでは不可能であることがわかりましたが、それを行うことができるカスタムライブラリはありますか?
WiFiシールドのようなコプロセッサーはどうですか?ArduinoyúnにSSLがあるかどうか誰でも知っていますか?
簡単に言えば、ArduinoでHTTPS接続を取得する方法はありますか?
私はそれを探していましたが、標準ライブラリとイーサネットシールドでは不可能であることがわかりましたが、それを行うことができるカスタムライブラリはありますか?
WiFiシールドのようなコプロセッサーはどうですか?ArduinoyúnにSSLがあるかどうか誰でも知っていますか?
回答:
ArduinosにマウントされたMCUには、https接続を処理する能力がありません。
Yúnは、curl、wget、pythonなどのソフトウェアを使用して、Linux側でhttps を処理します。あなたのスケッチはタスクをLinux側に委任するだけです。
pythonはプリインストールされていますが、curlは正常に動作しますが、python-opensslを手動でインストールする必要があります(ディスクスペースの制約のため)すぐに使用できないためです。
(免責事項:私は実際に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のほとんど。
ここにリンクしておくために、これを回答としてリストします。それはまだ完全な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実装にどれだけ近いかを確認するためにテストサーバーをセットアップする過程にあります。
Federico Fissoreが上記で述べているように、Yúnは、YúnのLinux側でHTTPS(またはSSL、必要に応じて)しか処理できません。
最初の方法は、PythonをPython OpenSSLで使用することです。これを行う方法は、SSHまたはYunSerialTerminalを介して次のコマンドを発行することです。
opkg update
opkg install python-openssl
opkg update
パッケージリストが最新であることを確認してから、opkg install
Python 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
。これには、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
WiFiシールドの使用が解決策になる可能性があります-HTTPSをサポートします。