こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
Electric Imp社は、自社の新製品「imp005モジュール」を通してIoTセキュリティー問題に果敢に挑んでいる。あなたは最近大規模なハッキングや情報漏えいについての話を聞いたことはあるだろうか?こうした技術に詳しい方であれば、おそらく今までに一度は耳にしたことがあると思う。情報漏えいは直接的な影響だけではなく、後にその他の様々な影響を及ぼす。情報を漏えいしてしまった企業は、影響を最小限に留めるために多くの努力をしなければならないだろう。場合によっては、その過失による高額な罰金を課される可能性さえある。測りきれないほど長期間にわたり会社のブランド名を損なうことにさえなりうるのだ。
こうした暗いニュースは現在の様々なIoTのプロジェクトに広がっており、今では多くのユーザーがIoTデバイスのセキュリティ侵害は起こってしまうものと考えるようになっている。乗っ取られることによりIoT機器がボットネットに組み込まれる、ましてやネットワークへの入り口になってしまう可能性がある。ユーザー達はそのような機器を設置したいと思うだろうか。
Electric Imp社のソリューション
それこそが、Electric Imp社が解決できると考えている問題だ。同社を率いるHugo Fiennes氏は、iPhoneの第1世代から第4世代までAppleのハードウェアチームのリーダーとして関わり、その後Nestサーモスタットの設計に携わった経験を持つ人物だ。Electric Impは、Eaton、GE、Pitney Bowesなどと、印象的な開発者キットのデザインをすでにいくつか実現している。
Electric Imp社は、自分たちが“ネットワークセキュリティ”に変化をもたらすことができると考えている。同社は長い間、IoTアプリケーションの脅威となるあらゆる潜在的な攻撃の可能性について考えてきた。そうして、IoT機器の生産工場といった絶対に安全な環境で暗号化キーとコードをシリコン(半導体)に読み込んでおくことで、外部のハードウェアインターフェイスが攻撃により無効化されたことがわかるといった、様々な攻撃を発見することが可能なアプローチをゼロから構築したのだ。Electric Imp社では、開発者が自分たちでソリューションを開発したり、複数のベンダーのソリューションを統合・構築するのに数か月を費やすのではなく、同社の最初から完全に統合された、実証済みのソリューションをぜひ導入してほしいと考えている。
新製品「Imp005 Module」とは?
imp005-EZモジュールには、以下が含まれている。
- 村田製作所 Type 1GC SoC Cortex-R4 320MHz CPU (アプリケーションコード用の最大1MBのRAM搭載、約15,000行のユーザーコードに相当)
- 8MBオンボードブートSPI (アプリケーション用に4.5MBの空き容量)
I/O機構
- アンテナ内蔵デュアルバンドWi-Fi (FCC/IC認証、CEテスト済み)
- UART x 3、SPI x 1、I2C x 1、USBホスト
- GPIO x 19 (muxed I2C、SPI)
- RMIIイーサネット
さらに、動作検証用にBlinkup回路とRTCクリスタル(水晶発振子)が含まれている。
評価ボード
imp005-EZは、Evalボードにすでに搭載された状態で購入することができる。これにより、以下のすべてのI/Oに対応する物理的なコネクタが提供されている。
- デュアルバンド(2.4GHz + 5GHz) 802.11abgn Wi-Fi、アンテナ内蔵
- WANイーサネット(RJ45コネクタ経由)
- USB 2.0/1.1ロースピード/フルスピードホスト
- Arduinoシールド対応ヘッダ(3.3V)
さらに、以下のセンサが利用可能だ。
- HTS221温度・湿度センサ (136-0755)
- LIS2DH12 3軸モーションセンサ(Rev 2) (878-7465)
- MCP3208 ADC (SPI経由で接続) (379-2516)
そしてもちろん、信頼性の高い以下のアプリケーション制御LEDだ。
- APA102 RGB LED
Workshop
imp005モジュールを使用した開発について理解してもらい、自身のアプリケーションに適しているかどうかを判断してもらうため、数週間前にElectric Imp社の方々と行ったワークショップの内容を紹介する。
まずはじめに、いくつかやるべきことがある。
準備機器リスト
- プロジェクトを制御するためのWi-Fi接続対応のノートパソコン
- ローカルWi-Fiログイン情報でモジュールをセットアップするためのiPhone又はAndroidフォン(スマートフォン)
- モジュールに電力を供給するためのimp005-EZ-Evalキット及びmini-USBケーブル
- インターネット接続のためのWi-Fiアクセスポイント (impモジュール接続用のログインページセットアップではパスワードがかかっていないオープンネットワークを使用できないことに留意して欲しい)
さらに、以下を行う必要がある。
- iPhone又はAndroidフォンにBlinkUpアプリをインストール – iTunesやGoogle Playで「Electric Imp」を検索し、アプリを見つけて欲しい
- https://electricimp.com/docs/gettingstarted/developer/account/でElectric Imp開発者アカウントを作成
- IBM Bluemixアカウントを作成 – この記事で、後ほどアカウントの作成方法を紹介する
下の図は、WorkShopの概要図だ。
この図に示しているように、「スマート」冷却システムのシミュレーションを行う。冷蔵庫の温度・湿度・光の状態を監視し、その値が設定したパラメータから外れた場合に警報が発信されるよう、imp005モジュールをセットアップする。節電のため、デバイスはデータ読み取りを一括で実行して一度にまとめて送信し、サーバーから切断する。送信時以外はWi-Fiを節電で動作するものとする。
このデータのエンドポイントはIBM BluemixのWatsonだ。このワークショップでは、データを表示する目的でWatsonを使用しましたが、Bluemixクラウドサービスを活用して、携帯電話でオンコールのサービスエンジニアに警報を出したり、数百の冷却ユニットにわたるランタイムデータを収集するなど、様々なことを自由に実現できる。
imp005とIBM Watsonの間はすべて、Electric Impアーキテクチャによって処理される。以下はその例だ。
- セキュアデバイスID確認とImpCloudへのデバイス登録
- セキュアな接続の確立と管理
- デバイス及びクラウドエージェント仮想マシンのアプリケーションコンテナ
- デバイス及びクラウドソフトウェアのプロビジョニング/無線(OTA: Over The Air)アップグレード
- デバイスと運用管理・拡張性・記録
これらの各機能は、IoTアプリケーションにおける潜在的な攻撃ベクトルへのElectric Impの対策なので、そのプラットフォームを採用すると、自分で何もしなくても、すべてのセキュリティ作業が実施される。では、これがどのように実行されるかを見ていこう。
IBM Watson IoTの設定
- https://console.bluemix.net/ にて無料のアカウントを作成する
- Bluemixへの初回ログイン時は、「Organization (組織)」と「Space (スペース)」を作成する必要がある。
- サイドバーメニューで、[Services] -> [Internet of Things]を選択する。
- [Internet of Things Platform]ウィンドウで、[Get Started]ボタンをクリック。
- 次のウィンドウで、[Create]ボタンをクリック。
- その次のウィンドウで、[Launch (起動)]ボタンをクリック。
- [Dashboard]ウィンドウが開いたら、サイドバーメニューを使用して[Apps]を選択。
- [Apps]ウィンドウに表示された自身のIDをメモする(右上隅のアカウントの下に表示されるはずだ)。
- [+ Generate API Key (+ APIキーの生成)]ボタンを選択し、APIキーと認証トークンをメモするか、メモ帳に保存しておく。
- [Generate]ボタンをクリック。
- キー、トークン、IDを、Electric Imp RefrigerationMonitor.agent code (ファイルの終わり近く)のAPI_Key設定、Auth_Token設定、Org_ID設定にコピーする。この手順については、後ほど「Electric Impデバイス及びエージェント」で詳しく説明する。
Impモジュールのセットアップ
ここではElectric Impのインターネットへの接続を行う。モジュールを使用して何かを行うには、ご使用のWi-Fi接続のログインに必要な情報をモジュールに入力してあげる必要がある。これは、スマートフォンに準備されているであろうElectric Imp BlinkUpアプリを使用して行う。
- デバイスでBlinkUpアプリを起動
- アプリで、自身のElectric Imp開発者アカウントにログイン
- 自身のWIFI資格情報を入力
- アプリの指示に従って、デバイスでBlinkUpを実行
下のビデオでもBlinkUpの実行方法を参照できる。
BlinkUpが成功すると、impモジュールのLEDが緑で点滅し、下図のようにデバイスの一意のIDがアプリに表示されるだろう。
LEDが赤で素早く点滅している場合は、デバイスがBlinkUp伝送を読み込めなかったということだ。この場合、もう一度試してほしい(スマートフォンをモジュールにさらに近づけることで成功するかもしれない)。
Electric Impデバイスおよびエージェント
この例の完全版なソースコードは、下記GitHubに公開している。
ファイルが2つあり、うち1つはモジュール用、もう1つはImpCloudエージェント用だ。これらのファイルは、下記のIDEの該当するウィンドウにコピーアンドペーストする必要がある。
- RefrigeratorMonitor.agent.nut -> IDEエージェントウィンドウ(左側)
- RefrigeratorMonitor.device.nut -> IDEデバイスウィンドウ(右側)
このコードはC/C++の派生言語であるSquirrelで書かれており、JavaScriptに近いものだ。ガベージコレクションを持つ、高レベルの命令型オブジェクト指向言語である。また、Electric Imp Squirrelリソースはこちらにある。アプリケーションコードは、モジュールとImpCloudの両方の仮想マシン上で実行される。これは、ハッカーが利用できる攻撃対象領域の減少につながるであろう。
ただし、このワークショップを実行するためにSquirrelを学んでいただく必要はない。今必要なことは、Watson IoT認証情報をエージェントコードの一番下(上の図で強調表示されている場所)に忘れずにコピーすることだ。
この情報を追加したら、[Build & Run (構築と実行)]ボタンをクリックする。ログに以下のような行が表示されるはずだ。
[Device] sending readings ([デバイス] 読み取りを送信中)
[Agent] Watson send successful ([エージェント] Watsonによる送信が成功)
「Watson send error: Error: Invalid API Key or Authentication Method (Watsonがエラーを送信: エラー: 無効なAPIキー又は認証方法)」のように表示された場合は、自身のキー、トークン、IDの値をダブルクリックする。問題が解消しない場合は、Watsonが認証を伝えるのに時間がかかることがあるため、数分間待ってから再度試行する。
Watsonデータの可視化とそのセットアップ
ここからは、自分のWatson環境できれいなグラフ(必要な場合は目盛りも)を作成する方法を説明する。
[Dashboard (ダッシュボード)]ウィンドウのサイドバーメニューで、[Boards (ボード)]を選択する。次に、[+ Create New Board (+ 新規ボードの作成)]ボタンをクリックする。
ボードに名前(Refrigerator Monitorなど)を付け、必要に応じて説明を入力していく。次に[Next (次へ)]と[Submit (送信)]をクリックする。また、[Dashboard (ダッシュボード)]ウィンドウで、[Your Boards (あなたのボード)]セクションにて作成した[Board (ボード)]をクリックする。
例えば温度の折れ線グラフを作成する場合、[Line Chart (折れ線グラフ)]のカードタイプをクリックし、次に以下の手順を実行していく。
- デバイス「Arrow_Imp005-EZ」を選択し、[Next (次へ)]をクリック。
- [+ Connect new data set (+ 新しいデータセットの接続)]をクリック。
- [Event (イベント)]として「RefrigerationMonitor」を選択。
- [Property (プロパティ)]として「data.0.temperature」を選択。
- [Type (タイプ)]として[Number (数字)]を選択し、[Next (次へ)]をクリック。
- 「L」設定を選択し、[Next (次へ)]をクリック。
- タイトルを追加し、[Color Scheme (カラースキーム)]を選択して、[Submit (送信)]をクリック。
この手順を繰り返して、湿度の折れ線グラフを作成していく。同様に、データソースとして「data.0.doorOpen」を選択することで、「オープンドア警報」の値カードを作成することもできる。温度警報値カードについては、データソースとして「data.0.tempAlert」を選択する。
手順が完了すると、RefrigerationMonitorのデータがダッシュボードに自動的に表示され始めるはずだ。
最後に
私は、imp005モジュールを楽しく使用している。また、Electric ImpがIoTアーキテクチャの保護に取り入れてきた”アイディア”も気に入っていた。あるテクノロジーの予言者が言うほどに、IoTがユビキタスな、すなわち、ありふれたものになる日がいつか来るのであれば、それはテクノロジーが正しい方向へと向かうための大きな一歩に間違いないだろう。もちろん、Electric Impのソリューションが適さないアプリケーションもあるだろうが、多くの状況に関して、セキュリティやOTAアップデートのようなものを、完全に理解している専門家に任せることには数多くのメリットがあるのだ。