IchigoJamをIoTデバイスとして使用する時の簡易セキュリティ対策

IchigoJamをIoTデバイスとして使用する時の簡易セキュリティ対策

 IchigoJamに無線LANモジュールを接続してネットワークに接続するとセキュリティ上の危険性が考えられます。ここでは、その簡易的な対策方法について説明します。

BASICはインターネットに対して脆弱

 IchigoJam BASICはネットワークに接続しないことを前提に設計されました。このため、機能拡張を行ってインターネットに接続した場合、インターネットの脅威に関して極めて脆弱です。
 とくにESPモジュールを接続したIchigoJamは、比較的容易に外部からBASICコマンドが実行される対象となる場合があります。実行中のプログラムは「ESC」コードひとつで停止させることが出来、その後は外部から自由にプログラムを実行することが可能です。さらに、IchigoJamが悪意ある者に乗っ取られると、同じLANに接続されたパソコン内にウィルスを送り込んだり、情報を盗み取ることも容易です。現時点でIchigoJamを攻撃対象に選ぶハッカーの存在は無いと思いますがシステム構成上、極めて容易に攻撃・ハッキング可能であることを認識しておきましょう。
 いかなる被害を被った場合であっても、当方は一切の責任を負いません。
ボクにもわかる
IchigoJam用サンプルプログラム
Espressif ESP8266 ESP-WROOM-02
無線LAN ワイヤレス通信実験
https://bokunimo.net/ichigojam/esp.html

今でも出来る3つの対策

対策1.電源を切っておく。万が一、乗っ取られたら、すぐに電源を切る

 第一の対策として、実験が終わったら必ず電源を切っておきましょう。この対策はネットワークの仕組みに詳しくなくても実施可能です。しかし、実験中は侵入される懸念があります。万が一、乗っ取られたら、すぐに電源を切りましょう。

対策2. UARTからのESC無効モードと無限ループ実行

 IchigoJam BASICのバージョン1.1以降にESC無効モードが搭載される予定です(Ver 1.1β14より実装)。
 この機能にはネットワークに接続したIchigoJamのセキュリティを高める効果があります。IoTデバイスとして使用する場合に、設定しておくと良いでしょう。
 ESC無効モードに設定しておくと、プログラムが動作している限りは外部からIchigoJamに侵入しにくくなります。但し、何らかの方法でエラーを発生させて停止させたり、END命令や行番号末に到達してしまうと、BASICコマンドが実行できるようになってしまうので、無限に動作し続けるようなプログラムを実行しておく必要があります。
 使い方は下記などを参照ください。

IchigoJamのUARTシリアル制御に関する情報
https://github.com/bokunimowakaru/IchigoJam/blob/master/UART_ControlCode.txt

対策3. ファイヤーウォールとVPN

 インターネットに接続するためのゲートウェイやルーター、パソコンなどにファイヤーウォール機能が搭載されています。パソコンに関しては適切に設定している人が多いと思いますが、これは設定したパソコンへの保護が主体です。IchigoJamなどのIoTデバイスに対しては殆ど効きません(パソコンを踏み台としたアクセスはやりにくくなるが、直接、侵入される懸念に対しては効果なし)。
 そこでゲートウェイやルーターの設定についても見直し、とくにIchigoJamに接続した無線LANモジュールに対しては外部からのパケットを通さないようにしておきます。ところが、実際にはその逆を行っている人も多いでしょう。IoTデバイスこそ外出先からアクセスしたいからです。そのような場合は、VPNを使用します。性能の高いゲートウェイやルーターに搭載されています。また、パソコンやスマートフォンにもVPN接続用のクライアント機能が備わっています。
 家庭内のネットワークを適切に分離しつつ、自分や特定の機器以外からのアクセスだけを高度なセキュリティを用いて通過させることで、安全に外部からの接続が可能になるでしょう。
 具体的な設定方法については若干のネットワークの知識が必要で、またネットワーク機器の設定も少し難しいかもしれません。しかし、どれもIoTデバイスを扱ううえで必須の知識ですので、学習しておいて無駄にはならないでしょう。
なお、残念ながら、ネットワークの知識や具体的な設定方法に関す情報については、当方のサイトであまり扱っておりませんでした。少しづつ、充実させてゆこうと思います。
by ボクにもわかるIchigoJamマイコンボード

追記:受信・送信するだけなら「より安全」

IchigoJamの開発者である福野さんのブログに「表示するだけならIchigoJamのTXDにつながないというセキュリティ対策」という記事がアップされましたので、この内容を追記します(2014/11/23)。
IchigoJamのTXD、ESPモジュールのRXDの配線を行わないことで、IchigoJamからの送信を行わないという対策です。侵入者の立場になれば、応答がない対象に攻撃を行うことは難しくなりますので、有効なセキュリティ対策の一つだと思います。
あるいはIchigoJamのRXDの配線を外し、IchigoJamからの送信だけを行うと、より安全です。IchigoJamを搭載した温度センサや人感センサの値だけをネットワークに送出するような使い方です。ただし、IchigoJamが通信モジュールのセッション状態やエラーなどを確認することが出来なくなるので、安定動作させることが難しくなるかもしれません。
以上、目的に合わせて片方向の通信にするというセキュリティ対策でした。

参考にしたブログ:
  福野泰介の一日一創
  BASICでつくるIoT、PM2.5表示デバイスをIchigoJamとESP-WROOM-02で試作

IchigoJam 用 micro EEPROMカセット

IchigoJam 用 micro EEPROMカセット ~ICソケットにICソケットを~

IchigoJam用のEEPROMカセットが色々と提案されていますが、その中で私の提案はEEPROMにICソケットを取り付けただけの micro EEPROM カセットです。
(単純なネタなのですが、かなり有用ですので、騙されたと思って、一度、お試しください。)
実際に取り付けた micro EEPROM カセットの様子は以下のようになります。
これを、EEPROM用のソケットに差し込んで使用します。つまり、ICソケットとICソケットをコネクタ代わりにするのです。使用時の様子は下図のようになります。
ほぼEEPROMのICパッケージサイズということで、勝手に micro EEPROMカセットと命名しました。
この方法の良い点は、取り付けや取り外し時にあまり力を要しないことです。このため、ICピンもソケットのピンも折り曲がらずに済みます。半年くらい何度も抜き差しして使い続けていますが、痛んだ様子や接触不良の発生はありません。
ICソケットに使われている端子にはバネ性があり折り曲げ強度に対する耐久性の高い金属が使われています。EEPROMのリード端子に比べて丈夫で長持ちします。
しかも、本来の使い方ではないので勘合が緩く、ちょうどカセットとして使うのに良い硬さになりました。
取り付けていない保存用のmicro EEPROMカセットは、導電性のスポンジに取り付けて保存します。
プリント基板の提供までお待ちいただくか、KUGADEN社のオリジナル基板などで、ぜひ、ご活用ください。

その他のEEPROMカセット仕様に関する情報

各種のEEPROMカセットについて調べた情報を下記に公開しています。興味のある方は、ご覧ください。

追記:IchigoJam開発者の福野さんのブログの一部に紹介していただきました

2015/11/18
上記の画像の出典:福野泰介の一日一創 CC BY 4.0 http://fukuno.jig.jp/1210

by ボクにもわかるIchigoJam用マイコンボード

Raspberry Pi 用 XBee ZigBee セットアップマニュアル

Raspberry Pi 用 XBee ZigBee セットアップマニュアル

今週末はRaspberry用XBee ZBのサンプル集(https://bokunimo.net/blog/raspberry-pi/168/)を動かすにあたっての、セットアップマニュアルを作成しました。
引き続き、少しづつ情報を増強してゆきます。
また、実験用の簡単な子機の回路図を作成しました。
セットアップマニュアルでは、下記の子機の電源電圧を測定結果をRaspberry Pi(親機)からリモートで取得する方法について説明しています。
by ボクにもわかるRaspberry Pi

Raspberry Pi 用 XBee ZigBee サンプルプログラム集

Raspberry Pi 用 XBee ZigBee サンプルプログラム集<作成中>

作成中のRaspberry Pi用のXBee サンプルプログラム集です。
前回(https://bokunimo.net/blog/raspberry-pi/170/)はUSB接続でしたが、Raspberry Pi基板上の拡張用GPIO端子を使って接続してみました。

ハードウェア

Raspberry Piの拡張用GPIO端子を使用する場合:
    • Raspberry Pi 一式
    • ITED RPI Arduino Shield aitendo 1280円
    • Arduino Wireless Shield
    • XBee ZB モジュール
    • 何らかの子機 XBee デバイス※
XBee USBエクスプローラを使う場合:
    • Raspberry Pi 一式
    • XBee USB エクスプローラ (FTDIチップ搭載品を推奨)
    • XBee ZB モジュール
    • 何らかの子機 XBee デバイス※
※子機は下記などの情報をもとに製作・購入してください:

インストール方法

$ cd xbeeCoord/examples_pi/
$ make clean; make

実行方法

実行ファイルの後に「スペース」とポート番号が必要です。基板上のGPIO端子を使う場合は、「-16」を入れてください。USBの場合は「/dev/ttyUSB」の後ろについている数字を入れます。
Raspberry Piの拡張用GPIO端子を使用する場合:
$ ./example01_rssi -16
XBee USBエクスプローラを使う場合:
$ ./example01_rssi n
n:USBシリアルのポート番号
最初の方の一部のサンプルしか確認していません。
XBee Wi-Fiは、きっと動かないと思います。
by ボクにもわかるRaspberry Pi