(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-12
(45)【発行日】2022-08-22
(54)【発明の名称】モノのインターネット(IoT)システムに安全な通信チャネルを確立するための装置及び方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20220815BHJP
G06F 21/60 20130101ALI20220815BHJP
H04L 9/10 20060101ALI20220815BHJP
【FI】
H04L9/08 C
H04L9/08 F
G06F21/60 320
H04L9/10 A
(21)【出願番号】P 2018500307
(86)(22)【出願日】2016-07-01
(86)【国際出願番号】 US2016040819
(87)【国際公開番号】W WO2017007725
(87)【国際公開日】2017-01-12
【審査請求日】2019-07-01
(32)【優先日】2015-07-03
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2015-07-03
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】515290745
【氏名又は名称】アフェロ インコーポレイテッド
【氏名又は名称原語表記】Afero, Inc.
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】ブリット ジョー
(72)【発明者】
【氏名】ザカリア オマール
(72)【発明者】
【氏名】ツィマーマン スコット
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2006-140743(JP,A)
【文献】特開2011-120051(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
システムであって、
モノのインターネット(IoT)ハブ又はモバイルユーザデバイスを通してIoTデバイスとの通信を確立するためのIoTサービスと、
サービスセッション公開鍵及びサービスセッション秘密鍵を生成するための鍵生成ロジックを前記IoTサービス上に備えた第1の暗号化回路であって、該第1の暗号化回路は、前記サービスセッション公開鍵と第1の署名を前記IoTデバイスに送信するためのものであり、前記第1の署名は、IoTサービス公開/秘密鍵ペアのIoTサービス秘密鍵を用いて前記サービスセッション公開鍵上で生成されるようになっている、第1の暗号化回路と、
前記IoTサービス秘密鍵と関連付けられたIoTサービス公開鍵を用いて前記第1の署名を検証するための前記IoTデバイス上の第2の暗号化回路であって、鍵生成ロジックを前記IoTデバイス上に備えた前記第2の暗号化回路は、肯定的な検証に応答して、デバイスセッション公開鍵及びデバイスセッション秘密鍵を生成するようになっており、前記第2の暗号化回路はさらに、前記IoTサービスに前記IoTデバイスセッション公開鍵及び第2の署名を送信するようになっており、前記第2の署名は、IoTデバイス公開/秘密鍵ペアのIoTデバイス秘密鍵を用いて前記IoTデバイスセッション公開鍵及びIoTサービスセッション公開鍵上で生成されるようになっている、第2の暗号化回路と、を備え、
前記第1の暗号化回路は、前記IoTデバイス秘密鍵と関連付けられたIoTデバイス公開鍵を用いて前記第2の署名を検証するようになっており、肯定的検証に応答して、前記第1の暗号化回路は、第3の署名を前記IoTデバイスに送信するようになっており、
前記第3の署名は、前記IoTサービス秘密鍵を用いて前記IoTデバイスセッション公開鍵及びIoTサービスセッション公開鍵上で生成されるようになっており、
前記第2の暗号化回路は、前記IoTサービス公開鍵を用いて前記第3の署名を検証するようになっており、
前記第1の暗号化回路は、前記デバイスセッション公開鍵及び前記サービスセッション秘密鍵を使用して秘密を生成するためのものであり、
前記第2の暗号化回路は、前記サービスセッション公開鍵及び前記デバイスセッション秘密鍵を使用して同一の前記秘密を生成するためのものであり、
一旦前記秘密が生成されると、前記第1の暗号化回路及び前記第2の暗号化回路は、前記秘密から派生したデータ構造を使用して、前記第1の暗号化回路と前記第2の暗号化回路との間で送信されるデータパケットを暗号化及び復号するようになっており、前記秘密から派生したデータ構造は、前記第1の暗号化回路によって生成された第1の鍵ストリームと、前記第2の暗号化回路によって生成された第2の鍵ストリームと、を備えており、そして、
前記第1の暗号化回路と関連する第1のカウンタと、前記第2の暗号化回路と関連する第2のカウンタと、を更に備え、
前記第1の暗号化回路は、前記第2の暗号化回路に送信される各データパケットに応じる前記第1のカウンタを増加させ、前記第2の暗号化回路は、前記第1の暗号化回路に送信される各データパケットに応じる前記第2のカウンタを増加させる、システム。
【請求項2】
前記鍵生成ロジックは、ハードウェアセキュリティモジュール(HSM)を備える、請求項1に記載のシステム。
【請求項3】
前記第1の暗号化回路は、前記第1のカウンタの現在のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成し、前記第2の暗号化回路は、前記第2のカウンタの現在のカウンタ値及び前記秘密を使用して前記第2の鍵ストリームを生成する、
請求項1に記載のシステム。
【請求項4】
前記第1の暗号化回路は、前記第1のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成するための楕円曲線方法(ECM)モジュールを備え、前記第2の暗号化回路は、前記第1のカウンタ値及び前記秘密を使用して前記第2の鍵ストリームを生成するためのECMモジュールを備える、請求項3に記載のシステム。
【請求項5】
前記第1の暗号化回路は、前記第1の鍵ストリームを使用して第1のデータパケットを暗号化することにより、第1の暗号化されたデータパケットを生成し、前記第1の暗号化されたデータパケットを前記第1のカウンタの現在のカウンタ値と共に前記第2の暗号化回路に送信する、請求項3に記載のシステム。
【請求項6】
前記第2の暗号化回路は、前記第1のカウンタの現在のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成し、前記第1の鍵ストリームを使用して前記暗号化されたデータパケットを復号する、請求項5に記載のシステム。
【請求項7】
前記第1のデータパケットを暗号化することは、前記第1の暗号化されたデータパケットを生成するために前記第1の鍵ストリームを前記第1のデータパケットとXOR演算することを備える、請求項5に記載のシステム。
【請求項8】
前記IoTデバイスは、前記IoTデバイスを前記IoTハブ又は前記モバイルユーザ装置に通信可能に結合するためのBluetooth Low Energy(BTLE)通信インターフェースを備え、前記IoTハブ又は前記モバイルユーザデバイスは、前記インターネットを介して前記IoTサービスに通信可能に結合される、請求項6に記載のシステム。
【請求項9】
コンピュータにより実行される方法であって、
モノのインターネット(IoT)サービスとIoTデバイスとの間の通信をIoTハブ又はモバイルユーザデバイスを通して確立することと、
サービスセッション公開鍵及びサービスセッション秘密鍵を前記IoTサービス上の第1の暗号化回路の鍵生成ロジックによって生成することと、
IoTサービス公開/秘密鍵ペアのIoTサービス秘密鍵を用いて前記サービスセッション公開鍵上で生成される前記サービスセッション公開鍵と第1の署名とを前記IoTサービスから前記IoTデバイスに送信することと、
前記IoTサービス秘密鍵と関連付けられたIoTサービス公開鍵を用いて前記第1の署名を、前記IoTデバイス上の第2の暗号化回路によって検証することと、
前記第1の署名の肯定的検証に応答して、デバイス公開鍵及びデバイス秘密鍵を前記IoTデバイス上の第2の暗号化回路の鍵生成ロジックによって生成することと、
IoTデバイス公開/秘密鍵ペアのIoTデバイス秘密鍵を用いてIoTデバイスセッション公開鍵及び前記IoTサービスセッション公開鍵上で生成される前記IoTデバイスセッション公開鍵及び第2の署名を前記IoTデバイスから前記IoTサービスに送信することと、
前記IoTデバイス秘密鍵と関連付けられたIoTデバイス公開鍵を用いて前記第2の署名を、前記IoTサービス上の前記第1の暗号化回路によって検証することと、
前記第2の署名の肯定的検証に応答して、前記IoTサービス秘密鍵を用いて前記IoTデバイスセッション公開鍵及び前記IoTサービスセッション公開鍵上で生成される第3の署名を、前記IoTサービスから前記IoTデバイスに送信することと、
前記IoTサービス公開鍵を用いて前記第3の署名を、前記第2の暗号化回路によって検証することと、
前記デバイス公開鍵及び前記サービス秘密鍵を使用して秘密を、前記第1の暗号化回路によって生成することと、
前記サービス公開鍵及び前記デバイス秘密鍵を使用して同一の前記秘密を、前記第2の暗号化回路によって生成することと、
前記秘密から派生したデータ構造を使用して、前記第1の暗号化回路と前記第2の暗号化回路との間で送信されるデータパケットを暗号化及び復号することと、
を含み、
前記秘密から派生した前記データ構造は、前記第1の暗号化回路によって生成された第1の鍵ストリームと、前記第2の暗号化回路によって生成された第2の鍵ストリームと、を備え、そして、
第1のカウンタは、前記第1の暗号化回路と関連し、第2のカウンタは、前記第2の暗号化回路と関連し、前記第1の暗号化回路は、前記第2の暗号化回路に送信される各データパケットに応じる前記第1のカウンタを増加させ、前記第2の暗号化回路は、前記第1の暗号化回路に送信される各データパケットに応じる前記第2のカウンタを増加させる、方法。
【請求項10】
前記鍵生成ロジックは、ハードウェアセキュリティモジュール(HSM)を備える、請求項9に記載の方法。
【請求項11】
前記第1の暗号化回路は、前記第1のカウンタの現在のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成し、前記第2の暗号化回路は、前記第2のカウンタの現在のカウンタ値及び前記秘密を使用して前記第2の鍵ストリームを生成する、請求項9に記載の方法。
【請求項12】
前記第1の暗号化回路は、前記第1のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成するための楕円曲線方法(ECM)モジュールを備え、前記第2の暗号化回路は、前記第1のカウンタ値及び前記秘密を使用して前記第2の鍵ストリームを生成するためのECMモジュールを備える、請求項11に記載の方法。
【請求項13】
前記第1の暗号化回路は、前記第1の鍵ストリームを使用して第1のデータパケットを暗号化することにより、第1の暗号化されたデータパケットを生成し、
前記第1の暗号化されたデータパケットを前記第1のカウンタの現在のカウンタ値と共に前記第2の暗号化回路に送信する、請求項11に記載の方法。
【請求項14】
前記第2の暗号化回路は、前記第1のカウンタの現在のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成し、前記第1の鍵ストリームを使用して前記暗号化されたデータパケットを復号する、請求項13に記載の方法。
【請求項15】
前記第1のデータパケットを暗号化することは、前記第1の暗号化されたデータパケットを生成するために、前記第1のデータパケットを前記第1の鍵ストリームとXOR演算することを含む、請求項13に記載の方法。
【請求項16】
前記IoTデバイスは、前記IoTハブ又は前記モバイルユーザデバイスに前記IoTデバイスを通信可能に結合するためのBluetooth Low Energy(BTLE)通信インターフェースを備え、前記IoTハブ又は前記モバイルユーザデバイスは、前記インターネットを介して前記IoTサービスに通信可能に結合される、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータシステムの分野に関する。より具体的には、本発明は、IoTシステムに安全な通信チャネルを確立するための装置及び方法に関する。
【背景技術】
【0002】
「モノのインターネット」は、インターネットインフラストラクチャ内に、一意的に識別可能に組み込まれたデバイスの相互接続を指す。最終的に、IoTは、事実上あらゆるタイプの物理的なモノが、それ自体若しくはその周囲についての情報を提供し得、及び/又はインターネット上でクライアントデバイスを介して遠隔制御され得る、広範囲の新しいタイプのアプリケーションをもたらすことが期待される。
【0003】
接続性、電力、及び規格化の欠如に関連する問題のために、IoT開発及び採用は遅れている。例えば、IoT開発及び採用に対する1つの障害は、開発者が新しいIoTデバイス及びサービスを設計して提供することを可能にする標準プラットフォームが存在しないことである。IoT市場に参入するためには、開発者は、所望のIoT実装に対応するために必要なネットワークプロトコル及びインフラストラクチャ、ハードウェア、ソフトウェア、並びにサービスを含む、IoTプラットフォーム全体を一から設計する必要がある。その結果、IoTデバイスの各プロバイダは、IoTデバイスの設計と接続のために専有の技術を使用しており、エンドユーザにとって複数のタイプのIoTデバイスの採用が厄介となっている。IoTの採用への別の障害は、IoTデバイスの接続及び給電に関連する困難である。例えば、冷蔵庫、ガレージドアオープナー、環境センサ、家庭用セキュリティセンサ/コントローラなどの接続機器は、接続された各IoT機器に給電するための電源を必要とし、そのような電源はしばしば便利な位置に設けられていない。
【0004】
存在する別の問題は、Bluetooth(登録商標) LEなどのIoTデバイスを相互接続するために使用される無線技術が、概して、近距離技術であるということである。したがって、IoT実装のためのデータ収集ハブがIoTデバイスの範囲外にある場合、そのIoTデバイスは、IoTハブにデータを送信することができない(逆もまた同様)。その結果として、IoTデバイスが、範囲外にあるIoTハブ(又は他のIoTデバイス)にデータを提供することを可能にする技術が必要とされる。
【0005】
本発明のより良好な理解は、以下の図面と併せた以下の詳細な説明から得ることができる。
【図面の簡単な説明】
【0006】
【
図1A】IoTシステムアーキテクチャの異なる実施形態を例示する。
【
図1B】IoTシステムアーキテクチャの異なる実施形態を例示する。
【
図2】本発明の一実施形態によるIoTデバイスを例示する。
【
図3】本発明の一実施形態によるIoTハブを例示する。
【
図4A】IoTデバイスからのデータを制御及び収集し、通知を生成するための本発明の実施形態を例示する。
【
図4B】IoTデバイスからのデータを制御及び収集し、通知を生成するための本発明の実施形態を例示する。
【
図5】IoTデバイスからのデータを収集し、IoTハブ及び/又はIoTサービスからの通知を生成するための本発明の実施形態を例示する。
【
図6】中間モバイルデバイスが固定IoTデバイスからデータを収集し、データをIoTハブに提供する、システムの一実施形態を例示する。
【
図7】本発明の一実施形態で実装される中間接続ロジックを例示する。
【
図9A】プログラムコード及びデータ更新がIoTデバイスに提供される一実施形態を例示する。
【
図9B】プログラムコード及びデータ更新がIoTデバイスに提供される方法の一実施形態を例示する。
【
図10】セキュリティアーキテクチャの一実施形態の俯瞰的な図を例示する。
【
図11】IoTデバイス上に鍵を記憶するために加入者識別モジュール(SIM)が使用されるアーキテクチャの一実施形態を例示する。
【
図12A】バーコード又はQRコード(登録商標)を使用してIoTデバイスが登録される一実施形態を示す。
【
図12B】バーコード又はQRコードを使用してペアリングが実行される一実施形態を例示する。
【
図13】IoTハブを使用してSIMをプログラミングするための方法の一実施形態を例示する。
【
図14】IoTデバイスをIoTハブ及びIoTサービスに登録するための方法の一実施形態を例示する。
【
図15】IoTデバイスに送信されるべきデータを暗号化するための方法の一実施形態を例示する。
【
図16A】IoTサービスとIoTデバイスとの間でデータを暗号化するための、本発明の異なる実施形態を例示する。
【
図16B】IoTサービスとIoTデバイスとの間でデータを暗号化するための、本発明の異なる実施形態を例示する。
【
図17】安全な鍵交換を実行し、共通の秘密を生成し、そして秘密を使用して鍵ストリームを生成するための本発明の実施形態を例示する。
【
図18】本発明の一実施形態に従うパケット構造を例示する。
【
図19】正式にIoTデバイスとペアリングすることなく、IoTデバイスに書き込む/それから読み取るための、一実施形態で使用される技術を例示する。
【
図20】本発明の一実施形態で使用されるコマンドパケットの例示的なセットを例示する。
【
図21】コマンドパケットを使用するトランザクションの例示的な順序を例示する。
【
図22】本発明の一実施形態に従う方法を例示する。
【
図23A】本発明の一実施形態に従う安全なペアリングのための方法を例示する。
【
図23B】本発明の一実施形態に従う安全なペアリングのための方法を例示する。
【
図23C】本発明の一実施形態に従う安全なペアリングのための方法を例示する。
【発明を実施するための形態】
【0007】
以下の説明では、説明を目的として、以下に記載される本発明の実施形態の完全な理解を提供するために、多数の特定の詳細が示される。しかしながら、本発明の実施形態がこれらの特定の詳細のうちのいくつかを用いずに実施され得ることは、当業者には明らかである。他の例では、本発明の実施形態の根本的な原理を不明瞭にすることを避けるために、周知の構造及びデバイスをブロック図の形態で示す。
【0008】
本発明の一実施形態は、新しいIoTデバイス及びアプリケーションを設計及び構築するために開発者によって利用され得るモノのインターネット(IoT)プラットフォームを含む。具体的には、一実施形態は、所定のネットワーキングプロトコルスタックを含むIoTデバイス、及びIoTデバイスがインターネットに連結されるIoTハブ用の基本ハードウェア/ソフトウェアプラットフォームを含む。加えて、一実施形態は、IoTサービスを含み、これを通じてIoTハブ及び接続されたIoTデバイスが、以下に説明するようにアクセスされ、管理され得る。加えて、IoTプラットフォームの一実施形態は、IoTサービス、ハブ、及び接続されたデバイスにアクセスし、それらを構成する、IoTアプリケーション又はウェブアプリケーション(例えば、クライアントデバイス上で実行される)を含む。既存のオンライン小売業者及び他のウェブサイトオペレータは、本明細書に記載されたIoTプラットフォームを利用して、既存のユーザベースに独自のIoT機能を容易に提供することができる。
【0009】
図1Aは、本発明の実施形態を実装することができるアーキテクチャプラットフォームの概要を例示する。具体的には、例示した実施形態は、それ自体インターネット220を介してIoTサービス120に通信可能に連結されている中央IoTハブ110に、ローカル通信チャネル130を介して通信可能に連結された複数のIoTデバイス101~105を含む。IoTデバイス101~105のそれぞれは、ローカル通信チャネル130のそれぞれを有効にするために、IoTハブ110と最初にペアリングすることができる(例えば、後述するペアリング技術を使用して)。一実施形態では、IoTサービス120は、各ユーザのIoTデバイスから収集されたユーザアカウント情報及びデータを維持するためのエンドユーザデータベース122を含む。例えば、IoTデバイスがセンサ(例えば、温度センサ、加速度計、熱センサ、動作検出器など)を含む場合、データベース122は、IoTデバイス101~105により収集されるデータを記憶するように継続的に更新され得る。次いで、データベース122内に記憶されたデータは、ユーザデバイス135上にインストールされたIoTアプリケーション又はブラウザを介して(又はデスクトップ若しくは他のクライアントコンピュータシステムを介して)エンドユーザに、かつウェブクライアント(例えば、IoTサービス120に加入しているウェブサイト130など)に、アクセス可能にされてもよい。
【0010】
IoTデバイス101~105には、それ自体及びその周辺に関する情報を収集し、収集された情報を、IoTハブ110を介してIoTサービス120、ユーザデバイス135、及び/又は外部ウェブサイト130に提供するための様々なタイプのセンサが備わっていてもよい。IoTデバイス101~105のうちのいくつかは、IoTハブ110を介して送信される制御コマンドに応答して、指定された機能を実行することができる。IoTデバイス101~105によって収集される情報の様々な具体例及び制御コマンドが以下に提供される。以下に説明する一実施形態では、IoTデバイス101は、ユーザ選択を記録し、ユーザ選択をIoTサービス120及び/又はウェブサイトに送信するように設計されたユーザ入力デバイスである。
【0011】
一実施形態では、IoTハブ110は、4G(例えば、モバイルWiMAX、LTE)又は5Gセルラーデータサービスなどのセルラーサービス115を介してインターネット220への接続を確立するセルラー無線を含む。代替的に、又は加えて、IoTハブ110は、WiFiアクセスポイント又はルータ116を介してWiFi接続を確立するためのWiFi無線を含むことができ、これは、IoTハブ110をインターネットに(例えば、エンドユーザにインターネットサービスを提供するインターネットサービスプロバイダを介して)連結する。当然のことながら、本発明の基本的な原理は、特定のタイプの通信チャネル又はプロトコルに限定されないことに留意すべきである。
【0012】
一実施形態では、IoTデバイス101~105は、電池電力で長期間(例えば、数年)動作することができる超低電力デバイスである。電力を節約するために、ローカル通信チャネル130は、Bluetooth Low Energy(LE)などの低電力無線通信技術を使用して実装することができる。この実施形態では、IoTデバイス101~105及びIoTハブ110のそれぞれには、Bluetooth LE無線及びプロトコルスタックが備わっている。
【0013】
上述したように、一実施形態では、IoTプラットフォームは、ユーザが、接続されたIoTデバイス101~105、IoTハブ110、及び/又はIoTサービス120にアクセスし、それらを構成することを可能にする、ユーザデバイス135上で実行されるIoTアプリケーション又はウェブアプリケーションを含む。一実施形態では、アプリケーション又はウェブアプリケーションは、そのユーザベースにIoT機能性を提供するように、ウェブサイト130のオペレータによって設計されてもよい。例示したように、ウェブサイトは、各ユーザに関連するアカウント記録を含むユーザデータベース131を維持することができる。
【0014】
図1Bは、複数のIoTハブ110~111、190に対する追加の接続オプションを例示する。この実施形態では、単一のユーザが、単一のユーザ構内180(例えば、ユーザーの自宅又はビジネス)にオンサイトでインストールされた複数のハブ110~111を有することができる。これは、例えば、IoTデバイス101~105の全てを接続するのに必要な無線範囲を拡張するために行われ得る。示したように、ユーザが複数のハブ110、111を有する場合、それらは、ローカル通信チャネル(例えば、WiFi、イーサネット(登録商標)、電力線ネットワーキングなど)を介して接続されてもよい。一実施形態では、ハブ110~111のそれぞれは、セルラー115又はWiFi 116接続(
図1Bには明示されていない)を介してIoTサービス120への直接接続を確立することができる。代替的に、又は加えて、IoTハブ110などのIoTハブのうちの1つは、「マスター」ハブとして機能することができ、これは、IoTハブ111などのユーザ構内180上の他の全てのIoTハブに接続性及び/又はローカルサービスを提供する(IoTハブ110とIoTハブ111を接続する点線で示されるように)。例えば、マスターIoTハブ110は、IoTサービス120への直接接続を確立する唯一のIoTハブであってもよい。一実施形態では、「マスター」IoTハブ110のみに、IoTサービス120への接続を確立するためのセルラー通信インターフェースが備わっている。このように、IoTサービス120と他のIoTハブ111との間の全ての通信は、マスターIoTハブ110を通って流れる。この役割において、マスターIoTハブ110には、他のIoTハブ111とIoTサービス120との間で交換されるデータ(例えば、可能であれば、いくつかのデータ要求にローカルでサービスする)に対してフィルタリング動作を実行するための追加のプログラムコードが提供され得る。
【0015】
IoTハブ110~111がどのように接続されていようとも、一実施形態では、IoTサービス120は、ハブをユーザと論理的に関連付け、接続されたIoTデバイス101~105の全てを、インストールされたアプリケーション(及び/又はブラウザベースのインターフェース)を有するユーザデバイス135を介してアクセス可能な、単一の包括的なユーザインターフェースの下に結合する。
【0016】
この実施形態では、マスターIoTハブ110及び1つ以上のスレーブIoTハブ111は、WiFiネットワーク116、イーサネットネットワーク、及び/又は電力線通信(PLC)ネットワーキング(例えば、ネットワークの全部若しくは一部がユーザの電力線を介して実行される)、ローカルネットワークを介して接続してもよい。加えて、IoTハブ110~111に対して、IoTデバイス101~105のそれぞれは、いくつか例を挙げると、WiFi、イーサネット、PLC、又はBluetooth LEなどの、任意のタイプのローカルネットワークチャネルを使用して、IoTハブ110~111と相互接続してもよい。
【0017】
図1Bはまた、第2のユーザ構内181にインストールされたIoTハブ190を示す。実質的に無制限の数のそのようなIoTハブ190は、世界中のユーザ構内のIoTデバイス191~192からデータを収集するようにインストールされ、構成され得る。一実施形態では、2つのユーザ構内180~181は、同じユーザに対して構成されてもよい。例えば、一方のユーザ構内180がユーザの基本的なホームであり、他方のユーザ構内181がユーザのバケーションホームであってもよい。そのような場合、IoTサービス120は、IoTハブ110~111、190をユーザと論理的に関連付け、取り付けられた全てのIoTデバイス101~105、191~192を、単一の包括的なユーザインターフェースの下に結合し、インストールされたアプリケーション(及び/又はブラウザベースのインターフェース)を有するユーザデバイス135を介してアクセス可能にする。
【0018】
図2に例示するように、IoTデバイス101の例示的な実施形態は、プログラムコード及びデータ201~203を記憶するメモリ210と、プログラムコードを実行しデータを処理する低電力マイクロコントローラ200とを含む。メモリ210は、ダイナミックランダムアクセスメモリ(DRAM)などの揮発性メモリであってもよいし、フラッシュメモリなどの不揮発性メモリであってもよい。一実施形態では、不揮発性メモリを永続記憶に使用し、揮発性メモリをプログラムコードの実行及びデータの実行に使用することができる。更に、メモリ210は、低電力マイクロコントローラ200内に統合されてもよく、バス又は通信ファブリックを介して低電力マイクロコントローラ200に連結されてもよい。本発明の根本的な原理は、メモリ210のいかなる特定の実装にも限定されない。
【0019】
例示したように、プログラムコードは、IoTデバイス101のアプリケーション開発者によって利用され得る所定のビルディングブロックのセットを含む、IoTデバイス201及びライブラリコード202によって実行される特定用途向けの機能セットを定義するアプリケーションプログラムコード203を含むことができる。一実施形態では、ライブラリコード202は、各IoTデバイス101とIoTハブ110との間の通信を可能にするための通信プロトコルスタック201などのIoTデバイスを実装するために必要とされる基本機能のセットを含む。上述したように、一実施形態では、通信プロトコルスタック201は、Bluetooth LEプロトコルスタックを含む。この実施形態では、Bluetooth LE無線機及びアンテナ207は、低電力マイクロコントローラ200内に統合されてもよい。しかしながら、本発明の基本原理は、いかなる特定の通信プロトコルにも限定されない。
【0020】
図2に示す特定の実施形態はまた、ユーザ入力を受信し、ユーザ入力を低電力マイクロコントローラに提供する複数の入力デバイス又はセンサ210を含み、低電力マイクロコントローラは、アプリケーションコード203及びライブラリコード202にしたがってユーザ入力を処理する。一実施形態では、入力デバイスのそれぞれは、エンドユーザにフィードバックを提供するLED 209を含む。
【0021】
加えて、例示した実施形態は、低電力マイクロコントローラに電力を供給するための電池208を含む。一実施形態では、非充電式コイン型電池が使用される。しかしながら、別の実施形態では、統合された充電式電池を使用することができる(例えば、交流電源(図示せず)にIoTデバイスを接続することによって再充電可能)。
【0022】
オーディオを発生するためのスピーカ205も設けられている。一実施形態では、低電力マイクロコントローラ299は、スピーカ205上にオーディオを発生するために圧縮されたオーディオストリーム(例えば、MPEG-4/アドバンストオーディオコーディング(AAC)ストリーム)を復号するための、オーディオ復号ロジックを含む。代替的に、低電力マイクロコントローラ200及び/又はアプリケーションコード/データ203が、ユーザが入力デバイス210を介して選択を入力すると、エンドユーザに口頭のフィードバックを提供するための、デジタルでサンプリングされたオーディオスニペットを含むことができる。
【0023】
一実施形態では、IoTデバイス101が設計される特定用途に基づいて、1つ以上の他の/代替のI/Oデバイス又はセンサ250が、IoTデバイス101に含まれてもよい。例えば、温度、圧力、湿度などを測定するために環境センサを含めることができる。IoTデバイスがセキュリティデバイスとして使用される場合には、セキュリティセンサ及び/又はドアロックオープナが含まれてもよい。当然のことながら、これらの例は、単に例示のために提供されている。本発明の基本原理は、いかなる特定のタイプのIoTデバイスにも限定されない。実際に、ライブラリコード202が備わった低電力マイクロコントローラ200の高度にプログラマブルな性質を考慮すると、アプリケーション開発者は、新しいアプリケーションコード203及び新しいI/Oデバイス250を容易に開発して、実質的に任意のタイプのIoTアプリケーションのために低電力マイクロコントローラとインターフェースをとることができる。
【0024】
一実施形態では、低電力マイクロコントローラ200はまた、通信を暗号化するための、及び/又は署名を生成するための暗号化鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別するモジュール(SIM)内に確保されてもよい。
【0025】
一実施形態では、実質的に電力を消費していない超低電力状態からIoTデバイスを起動させるために、ウェイクアップ受信機207が含まれる。一実施形態では、ウェイクアップ受信機207は、
図3に示すように、IoTハブ110上に構成されたウェイクアップ送信機307から受信されたウェイクアップ信号に応答して、IoTデバイス101をこの低電力状態から出させるように構成される。具体的には、一実施形態では、送信機307と受信機207は共に、テスラコイルなどの電気共振トランス回路を形成する。動作中、ハブ110が非常に低い電力状態からIoTデバイス101を復帰させる必要がある場合、エネルギーは送信機307から受信機207への無線周波数信号を介して送信される。エネルギー移動の理由で、IoTデバイス101は、それが低電力状態にあるときには、ハブからの信号を継続的に「聞く」必要がないので、実質的に電力を消費しないように構成することができる(ネットワーク信号を介してデバイスを起動させることができる、ネットワークプロトコルの場合と同様に)。むしろ、IoTデバイス101のマイクロコントローラ200は、送信機307から受信機207に電気的に送信されたエネルギーを使用することによって、事実上パワーダウンされた後にウェイクアップするように構成される。
【0026】
図3に例示するように、IoTハブ110はまた、プログラムコード及びデータ305を記憶するためのメモリ317と、プログラムコードを実行しデータを処理するためのマイクロコントローラなどのハードウェアロジック301とを含む。広域ネットワーク(WAN)インターフェース302及びアンテナ310は、IoTハブ110をセルラーサービス115に連結する。代替的に、上述したように、IoTハブ110は、ローカルエリアネットワーク通信チャネルを確立するためにWiFiインターフェース(及びWiFiアンテナ)又はイーサネットインターフェースなどのローカルネットワークインターフェース(図示せず)を含むこともできる。一実施形態では、ハードウェアロジック301はまた、通信を暗号化するための、及び/又は署名を生成/検証するための暗号化鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別するモジュール(SIM)内に確保されてもよい。
【0027】
ローカル通信インターフェース303及びアンテナ311は、IoTデバイス101~105のそれぞれとのローカル通信チャネルを確立する。上述したように、一実施形態では、ローカル通信インターフェース303/アンテナ311はBluetooth LE規格を実装する。しかしながら、本発明の根底にある原理は、IoTデバイス101~105とのローカル通信チャネルを確立するためのいかなる特定のプロトコルにも限定されない。
図3においては別個のユニットとして例示されているが、WANインターフェース302及び/又はローカル通信インターフェース303は、ハードウェアロジック301と同じチップ内に組み込まれてもよい。
【0028】
一実施形態では、プログラムコード及びデータは、ローカル通信インターフェース303及びWANインターフェース302を介して通信するための別個のスタックを含む通信プロトコルスタック308を含む。加えて、デバイスペアリングプログラムコード及びデータ306は、IoTハブを新しいIoTデバイスとペアリングすることができるようにメモリに記憶され得る。一実施形態では、各新しいIoTデバイス101~105には、ペアリングプロセス中にIoTハブ110に通信される一意的なコードが割り当てられる。例えば、一意的なコードは、IoTデバイス上のバーコードに組み込まれてもよく、かつバーコードリーダ106によって読み取られてもよく、又はローカル通信チャネル130を介して通信されてもよい。別の実施形態では、一意的なIDコードがIoTデバイスに磁気的に組み込まれ、IoTハブは、無線周波数ID(RFID)又は近距離通信(NFC)センサなどの磁気センサを有し、IoTデバイス101がIoTハブ110の数インチ内で移動するとき、コードを検出する。
【0029】
一実施形態では、一意的なIDが通信されると、IoTハブ110は、ローカルデータベース(図示せず)に問い合わせること、コードが許容可能であることを検証するためにハッシュを実行すること、及び/又はIoTサービス120と通信することによって、一意的なIDの妥当性を確認し、ユーザデバイス135及び/又はウェブサイト130でIDコードを認証する。妥当性が確認されると、一実施形態では、IoTハブ110は、IoTデバイス101をペアリングし、メモリ317(これは、上述したように、不揮発性メモリを含むことができる)にペアリングデータを記憶する。ペアリングが完了すると、IoTハブ110は、本明細書に記載の様々な機能を実行するためにIoTデバイス101と接続することができる。
【0030】
一実施形態では、IoTサービス120を実行する組織は、開発者が新しいIoTサービスを容易に設計できるように、IoTハブ110及び基本ハードウェア/ソフトウェアプラットフォームを提供することができる。具体的には、IoTハブ110に加えて、開発者には、ハブ110内で実行されるプログラムコード及びデータ305を更新するためのソフトウェア開発キット(SDK)が提供されてもよい。加えて、IoTデバイス101については、SDKは、様々な異なるタイプのアプリケーション101の設計を容易にするために、ベースのIoTハードウェア(例えば、低電力マイクロコントローラ200及び
図2に示す他の構成要素)用に設計された広範なライブラリコード202のセットを含んでもよい。一実施形態では、SDKは、開発者がIoTデバイスの入力と出力を指定するだけでよいグラフィカルデザインインターフェースを含む。IoTデバイス101がハブ110及びサービス120に接続することを可能にする通信スタック201を含むネットワーキングコードは全て、開発者のために既に配置されている。加えて、一実施形態では、SDKは、モバイルデバイス(例えば、IPHONE(登録商標)及びANDROID(登録商標)デバイス)用のアプリケーションの設計を容易にするライブラリコードベースも含む。
【0031】
一実施形態では、IoTハブ110は、IoTデバイス101~105とIoTサービス120との間のデータの連続的な双方向ストリームを管理する。IoTデバイス101~105への/からの更新がリアルタイムで要求される状況では(例えば、ユーザがセキュリティデバイス又は環境読み取りの現在の状態を見る必要がある状況)、IoTハブは、ユーザデバイス135及び/又は外部のウェブサイト130に定期的な更新を提供するためにオープンTCPソケットを維持することができる。更新を提供するために使用される特定のネットワーキングプロトコルは、基本用途のニーズに基づいて調整されてもよい。例えば、連続的な双方向ストリームを有することが理にかなっていない可能性がある場合、必要なときに情報を収集するために単純な要求/応答プロトコルを使用することができる。
【0032】
一実施形態では、IoTハブ110及びIoTデバイス101~105の両方が、ネットワークを介して自動的に更新可能である。具体的には、IoTハブ110について新しい更新が利用可能であるとき、IoTサービス120から更新を自動的にダウンロードしてインストールすることができる。それは、古いプログラムコードを交換する前に、まず、更新されたコードをローカルメモリにコピーし、実行して、更新を検証し得る。同様に、IoTデバイス101~105のそれぞれについて更新が利用可能である場合、更新は、IoTハブ110によって最初にダウンロードされ、IoTデバイス101~105のそれぞれにプッシュアウトされてもよい。各IoTデバイス101~105は、IoTハブに関して上述したのと同様の方法で更新を適用し、更新の結果をIoTハブ110に報告することができる。更新が成功した場合、IoTハブ110は、更新をそのメモリから削除し、(例えば、各IoTデバイスについての新しい更新を確認し続けることができるように)それぞれのIoTデバイスにインストールされている最新バージョンのコードを記録することができる。
【0033】
一実施形態では、IoTハブ110は、A/C電力を介して給電される。具体的には、IoTハブ110は、A/C電源コードを介して供給されるA/C電圧をより低いDC電圧に変換するための変圧器を備えた電源ユニット390を含むことができる。
【0034】
図4Aは、IoTシステムを使用してユニバーサル遠隔制御操作を実行するための、本発明の一実施形態を例示する。具体的には、この実施形態では、IoTデバイス101~103のセットには、(ほんの数例を挙げると)空気調節装置/ヒータ430、照明システム431、及び視聴覚機器432を含む、様々な異なるタイプの電子機器を制御する遠隔制御コードを送信するための、赤外線(IR)及び/又は無線周波数(RF)ブラスタ401~403がそれぞれ備わっている。
図4Aに示される実施形態では、IoTデバイス101~103にはまた、以下に説明するように、それらが制御するデバイスの動作を検出するためのセンサ404~406がそれぞれ備わっている。
【0035】
例えば、IoTデバイス101におけるセンサ404は、現在の温度/湿度を検知し、それに応じて、現在の所望の温度に基づき空気調節装置/ヒータ430を制御するための温度及び/又は湿度センサであってもよい。この実施形態では、空気調節装置/ヒータ430は、遠隔制御デバイス(典型的には、それ自体が温度センサをその中に組み込んだ遠隔制御装置)を介して制御されるように設計されるものである。一実施形態では、ユーザは、ユーザデバイス135上にインストールされたアプリケーション又はブラウザを介して、所望の温度をIoTハブ110に提供する。IoTハブ110上で実行される制御ロジック412は、センサ404から現在の温度/湿度を受信し、それに応じて、所望の温度/湿度にしたがってIR/RFブラスタ401を制御するように、IoTデバイス101にコマンドを送信する。例えば、温度が所望の温度未満である場合、制御ロジック412は、温度を上げるように、IR/RFブラスタ401を介して空気調節装置/ヒータにコマンドを送信してもよい(例えば、空気調節装置をオフにすることか、又はヒータをオンにすることのいずれかによって)。コマンドは、IoTハブ110上のデータベース413に記憶された必要な遠隔制御コードを含んでもよい。代替的に、又は加えて、IoTサービス421は、指定されたユーザ選好及び記憶された制御コード422に基づき電子機器430~432を制御するために、制御ロジック421を実装してもよい。
【0036】
例示した実施例におけるIoTデバイス102は、照明431を制御するために使用される。具体的には、IoTデバイス102のセンサ405は、照明設備431(又は他の照明装置)によってもたらされている光の現在の輝度を検出するように構成された光センサ又は光検出器であってもよい。ユーザは、ユーザデバイス135を介して、IoTハブ110に所望の照明レベル(オン又はオフの表示を含む)を指定してもよい。それに応答して、制御ロジック412は、照明431の現在の輝度レベルを制御するように、IR/RFブラスタ402にコマンドを送信する(例えば、現在の輝度が低すぎる場合は照明を明るくするか、若しくは現在の輝度が高すぎる場合は照明を暗くするか、又は単純に照明をオン若しくはオフにする)。
【0037】
例示した実施例におけるIoTデバイス103は、視聴覚機器432(例えば、テレビ、A/V受信器、ケーブル/衛星受信器、AppleTV(商標)など)を制御するように構成される。IoTデバイス103のセンサ406は、現在の周囲音量レベルを検出するためのオーディオセンサ(例えば、マイクロホン及び関連ロジック)、並びに/又はテレビによって生成された光に基づき、(例えば、指定されたスペクトル内の光を測定することによって)テレビがオンであるか、それともオフであるかを検出するための光センサであってもよい。代替的に、センサ406は、検出された温度に基づき、オーディオ機器がオンであるか、それともオフであるかを検出するための、視聴覚機器に接続された温度センサを含んでもよい。この場合も、ユーザデバイス135を介したユーザ入力に応答して、制御ロジック412は、IoTデバイス103のIRブラスタ403を介して視聴覚機器にコマンドを送信してもよい。
【0038】
上記が本発明の一実施形態の単なる例示した実施例であることに留意すべきである。本発明の基本原理は、IoTデバイスによって制御されるいかなる特定のタイプのセンサ又は機器にも限定されない。
【0039】
IoTデバイス101~103がBluetooth LE接続を介してIoTハブ110に連結される実施形態では、センサデータ及びコマンドは、Bluetooth LEチャネルを介して送信される。しかしながら、本発明の基本原理は、Bluetooth LE又はいずれの他の通信標準にも限定されない。
【0040】
一実施形態では、電子機器のそれぞれを制御するために必要とされる制御コードは、IoTハブ110上のデータベース413及び/又はIoTサービス120上のデータベース422に記憶される。
図4Bに例示するように、制御コードは、IoTサービス120上で維持される異なる機器に対して、制御コード422のマスターデータベースからIoTハブ110に提供されてもよい。エンドユーザは、ユーザデバイス135上で実行されるアプリケーション又はブラウザを介して制御される電子(又は他の)機器のタイプを指定してもよく、それに応答して、IoTハブ上の遠隔制御コード学習モジュール491は、IoTサービス120上の遠隔制御コードデータベース492から、必要とされるIR/RFコードを取得してもよい(例えば、一意的なIDを有する各電子機器を識別する)。
【0041】
加えて、一実施形態では、IoTハブ110には、遠隔制御コード学習モジュール491が、電子機器と共に提供された元の遠隔制御装置495から直接新しい遠隔制御コードを「学習」することを可能にする、IR/RFインターフェース490が備わっている。例えば、空気調節装置430と共に提供された元の遠隔制御装置の制御コードが、遠隔制御データベースに含まれていない場合、ユーザは、ユーザデバイス135上のアプリケーション/ブラウザを介してIoTハブ110と対話して、元の遠隔制御装置によって生成される様々な制御コードをIoTハブ110に教えてもよい(例えば、温度を上げる、温度を下げるなど)。遠隔制御コードが学習されると、それらは、IoTハブ110上の制御コードデータベース413に記憶されてもよく、かつ/又は中央遠隔制御コードデータベース492に含められるように、IoTサービス120に送り返されてもよい(続いて、同じ空気調節装置ユニット430を有する他のユーザによって使用されてもよい)。
【0042】
一実施形態では、IoTデバイス101~103のそれぞれは、極端に小さいフォームファクタを有し、両面テープ、小さい釘、磁気アタッチメントなどを使用して、それらの対応する電子機器430~432の上又は付近に取り付けられてもよい。空気調節装置430などの1つの機器を制御するために、IoTデバイス101を十分に離して配置し、センサ404が自宅内の周囲温度を正確に測定することができるようにすることが望ましい(例えば、空気調節装置上に直接IoTデバイスを配置すると、温度測定値は、空気調節装置が作動しているときは低すぎになり、ヒータが作動しているときは高すぎになるであろう)。対照的に、照明を制御するために使用されるIoTデバイス102は、センサ405が現在の照明レベルを検出するために、照明設備431の上又は付近に配置されてもよい。
【0043】
記載される一般的な制御機能を提供することに加えて、IoTハブ110及び/又はIoTサービス120の一実施形態は、各電子機器の現在の状態に関連した通知をエンドユーザに送信する。通知は、テキストメッセージ及び/又はアプリケーション特有の通知であってもよく、次いで、通知は、ユーザのモバイルデバイス135のディスプレイ上に表示されてもよい。例えば、ユーザの空気調節装置が長期間オンであるが温度が変化していない場合、IoTハブ110及び/又はIoTサービス120は、空気調節装置が適切に機能していないという通知をユーザに送信してもよい。ユーザが自宅におらず(このことは、人感センサを介して検出されてもよく、若しくはユーザの現在の検出された位置に基づいてもよい)、センサ406が、視聴覚機器430がオンであることを示すか、又はセンサ405が、照明がオンであることを示す場合、ユーザが視聴覚機器432及び/又は照明431をオフにすることを希望するか尋ねる通知がユーザに送信されてもよい。同じタイプの通知が、任意の機器のタイプに対して送信されてもよい。
【0044】
ユーザが通知を受信すると、彼/彼女は、ユーザデバイス135上のアプリケーション又はブラウザを介して電子機器430~432を遠隔制御してもよい。一実施形態では、ユーザデバイス135は、タッチスクリーンデバイスであり、アプリケーション又はブラウザは、機器430~432を制御するためのユーザが選択可能なボタンを含む遠隔制御装置の画像を表示する。通知を受信した後、ユーザは、グラフィカル遠隔制御装置を開き、様々な異なる機器をオフにするか、又は調節してもよい。IoTサービス120を介して接続されている場合、ユーザの選択は、IoTサービス120からIoTハブ110に転送されてもよく、IoTハブ110は、次いで制御ロジック412を介して機器を制御することになる。代替的に、ユーザ入力は、ユーザデバイス135からIoTハブ110に直接送信されてもよい。
【0045】
一実施形態では、ユーザは、電子機器430~432に対して様々な自動制御機能を実行するように、IoTハブ110上の制御ロジック412をプログラミングしてもよい。上記の所望の温度、輝度レベル、及び音量レベルを維持することに加えて、制御ロジック412は、ある特定の条件が検出された場合に電子機器を自動的にオフにしてもよい。例えば、制御ロジック412が、ユーザが自宅にいないこと、及び空気調節装置が機能していないことを検出する場合、制御ロジック412は、空気調節装置を自動的にオフにしてもよい。同様に、ユーザが自宅におらず、センサ406が、視聴覚機器430がオンであることを示すか、又はセンサ405が、照明がオンであることを示す場合、制御ロジック412は、視聴覚機器及び照明をそれぞれオフにするように、IR/RFブラスタ403及び402を介してコマンドを自動的に送信してもよい。
【0046】
図5は、電子機器530及び531を監視するためのセンサ503及び504が備わった、IoTデバイス104及び105の追加の実施形態を例示する。具体的には、この実施形態のIoTデバイス104は、コンロがオンのままであるときを検出するためにコンロ530の上又は付近に配置されてもよい、温度センサ503を含む。一実施形態では、IoTデバイス104は、温度センサ503によって測定された現在の温度をIoTハブ110及び/又はIoTサービス120に送信する。コンロが閾値期間を超えてオンであることが検出される場合(例えば、測定された温度に基づき)、制御ロジック512は、ストーブ530がオンであることをユーザに通知する通知を、エンドユーザのデバイス135に送信してもよい。加えて、一実施形態では、IoTデバイス104は、ユーザからの命令を受信することに応答して、又は自動的に(制御ロジック512がそうするようにユーザによってプログラミングされる場合)、のいずれかによって、コンロをオフにするための制御モジュール501を含んでもよい。一実施形態では、制御ロジック501は、コンロ530への電気又はガスを遮断するためのスイッチを備える。しかしながら、他の実施形態では、制御ロジック501は、コンロ自体内に統合されてもよい。
【0047】
図5はまた、洗濯機及び/又は乾燥機などのある特定のタイプの電子機器の動作を検出するための動作センサ504を有する、IoTデバイス105を例示する。使用され得る別のセンサは、周囲の音量レベルを検出するためのオーディオセンサ(例えば、マイクロホン及びロジック)である。上記の他の実施形態のように、この実施形態は、ある特定の指定された条件が満たされた場合、エンドユーザに通知を送信してもよい(例えば、動作が長期間検出され、洗濯機/乾燥機がオフになっていないことを示す場合)。
図5に示されないが、IoTデバイス105にはまた、自動的に、かつ/又はユーザ入力に応答して、(例えば、電気/ガスをオフに切り替えることによって)洗濯機/乾燥機531をオフにするための制御モジュールが備わっていてもよい。
【0048】
一実施形態では、制御ロジック及びスイッチを有する第1のIoTデバイスは、ユーザの自宅内の全ての電力をオフにするように構成されてもよく、制御ロジック及びスイッチを有する第2のIoTデバイスは、ユーザの自宅内の全てのガスをオフにするように構成されてもよい。次いで、センサを有するIoTデバイスは、ユーザの自宅内の電気又はガス駆動の機器の上又は付近に位置付けられてもよい。特定の機器がオンのままである(例えば、コンロ530)ことをユーザが通知された場合、ユーザは、自宅内の全ての電気又はガスをオフにするコマンドを送信して、損害を防止してもよい。代替的に、IoTハブ110及び/又はIoTサービス120の制御ロジック512は、そのような状況において電気又はガスを自動的にオフにするように構成されてもよい。
【0049】
一実施形態では、IoTハブ110及びIoTサービス120は、周期的な間隔で通信する。IoTサービス120が、IoTハブ110への接続が切れていることを検出する場合(例えば、指定された継続時間、IoTハブからの要求又は応答を受信していないことによって)、IoTサービス120は、この情報をエンドユーザのデバイス135に通信することになる(例えば、テキストメッセージ又はアプリケーション特有の通知を送信することによって)。
中間デバイスを通してデータを通信するための装置及び方法
【0050】
上述したように、Bluetooth LEなどのIoTデバイス相互接続するために使用される無線テクノロジーは概して、近距離テクノロジーであるため、IoT実装のためのハブがIoTデバイスの範囲外にある場合、IoTデバイスは、IoTハブにデータを送信することができない(逆もまた同様)。
【0051】
この欠陥に対処するために、本発明の一実施形態は、モバイルデバイスが範囲内にあるとき、1つ以上のモバイルデバイスと周期的に接続するために、IoTハブの無線範囲外にあるIoTデバイスのための機構を提供する。一旦接続されると、IoTデバイスは、IoTハブに提供される必要がある任意のデータをモバイルデバイスに送信することができ、次いでモバイルデバイスは、IoTハブにデータを転送する。
【0052】
図6に例示するように、一実施形態は、IoTハブ110と、IoTハブ110の範囲外にあるIoTデバイス601と、モバイルデバイス611とを含む。範囲外のIoTデバイス601は、データを収集及び通信することが可能な任意の形態のIoTデバイスを含んでもよい。例えば、IoTデバイス601は、冷蔵庫内の利用可能な食料品、食料品を消費するユーザ、及び現在の温度を監視するように、冷蔵庫内に構成されたデータ収集デバイスを備えてもよい。当然のことながら、本発明の基本原理は、いかなる特定のタイプのIoTデバイスにも限定されない。本明細書に記載される技術は、ほんの数例を挙げると、スマートメータ、コンロ、洗濯機、乾燥機、照明システム、HVACシステム、及び視聴覚機器に関するデータを収集及び送信するために使用されるデバイスを含む、任意のタイプのIoTデバイスを使用して実装されてもよい。
【0053】
更に、動作中のモバイルデバイスである、
図6に例示するIoTデバイス611は、データを通信及び記憶することが可能な任意の形態のモバイルデバイスであってもよい。例えば、一実施形態では、モバイルデバイス611は、本明細書に記載される技術を促進するために、アプリケーションがその上にインストールされたスマートフォンである。別の実施形態では、モバイルデバイス611は、ネックレス若しくはブレスレットに取り付けられた通信トークン、スマートウォッチ、又はフィットネスデバイスなど、装着可能なデバイスを含む。装着可能なトークンは、スマートフォンデバイスを所有しない高齢のユーザ又は他のユーザにとって特に有用であり得る。
【0054】
動作中、範囲外のIoTデバイス601は、モバイルデバイス611との接続性を周期的又は連続的にチェックしてもよい。接続を確立した後(例えば、ユーザが冷蔵庫の近くを移動する結果として)、IoTデバイス601上の任意の収集されたデータ605が、モバイルデバイス611上の一時データリポジトリ615に自動的に送信される。一実施形態では、IoTデバイス601及びモバイルデバイス611は、BTLEなどの低電力無線標準を使用して、ローカル無線通信チャネルを確立する。そのような場合、モバイルデバイス611は、既知のペアリング技術を使用してIoTデバイス601と最初にペアリングされてもよい。
【0055】
一旦データが一時データリポジトリに伝送されると、モバイルデバイス611は、IoTハブ110との通信が確立されるとデータを送信する(例えば、ユーザがIoTハブ110の範囲内を歩くとき)。次いで、IoTハブは、中央データリポジトリ413にデータを記憶してもよく、かつ/又はインターネット上で、1つ以上のサービス及び/若しくは他のユーザデバイスにデータを送信してもよい。一実施形態では、モバイルデバイス611は、異なるタイプの通信チャネルを使用して、IoTハブ110にデータを提供してもよい(潜在的に、WiFiなどのより高出力の通信チャネル)。
【0056】
範囲外のIoTデバイス601、モバイルデバイス611、及びIoTハブは全て、本明細書に記載される技術を実装するためのプログラムコード及び/又はロジックにより構成されてもよい。
図7に例示するように、例えば、本明細書に記載される動作を実行するために、IoTデバイス601は、中間接続ロジック及び/又はアプリケーションにより構成されてもよく、モバイルデバイス611は、中間接続ロジック/アプリケーションにより構成されてもよく、IoTハブ110は、中間接続ロジック/アプリケーション721により構成されてもよい。各デバイス上の中間接続ロジック/アプリケーションは、ハードウェア、ソフトウェア、又はこれらの任意の組み合わせで実装されてもよい。一実施形態では、IoTデバイス601の中間接続ロジック/アプリケーション701は、モバイルデバイス上の中間接続ロジック/アプリケーション711(デバイスアプリケーションとして実装されてもよい)との接続を検索及び確立して、一時データリポジトリ615にデータを伝送する。次いで、モバイルデバイス611上の中間接続ロジック/アプリケーション701は、中央データリポジトリ413にデータを記憶するIoTハブ上の中間接続ロジック/アプリケーションに、データを転送する。
【0057】
図7に例示するように、各デバイス上の中間接続ロジック/アプリケーション701、711、721は、手元のアプリケーションに基づき構成されてもよい。例えば、冷蔵庫に関して、接続ロジック/アプリケーション701は、周期的ベースで少数のパケットを送信するだけでよい。他のアプリケーション(例えば、温度センサ)に対して、接続ロジック/アプリケーション701は、より頻繁な更新を送信する必要があり得る。
【0058】
モバイルデバイス611よりはむしろ、一実施形態では、IoTデバイス601が、IoTハブ110の範囲内に位置する1つ以上の中間IoTデバイスとの無線接続を確立するように構成されてもよい。この実施形態では、IoTハブの範囲外の任意のIoTデバイス601が、他のIoTデバイスを使用して「チェーン」を形成することによってハブにリンクされてもよい。
【0059】
加えて、簡潔にするために、単一のモバイルデバイス611のみが
図6及び
図7に例示されるが、一実施形態では、異なるユーザの複数のそのようなモバイルデバイスは、IoTデバイス601と通信するように構成されてもよい。更に、同じ技術が、複数の他のIoTデバイスに対して実装されてもよく、それにより、自宅全体にわたって中間デバイスデータ収集システムを形成する。
【0060】
更に、一実施形態では、本明細書に記載される技術は、様々な異なるタイプの関連データを収集するために使用されてもよい。例えば、一実施形態では、モバイルデバイス611がIoTデバイス601と接続するたびに、ユーザの識別が、収集されたデータ605と共に含まれてもよい。このようにして、IoTシステムは、自宅内の異なるユーザの挙動を追跡するために使用されてもよい。例えば、冷蔵庫内で使用される場合、収集されたデータ605は、冷蔵庫のそばを通る各ユーザ、冷蔵庫を開ける各ユーザ、及び各ユーザによって消費される特定の食料品についての識別を次に含んでもよい。異なるタイプのデータが、他のタイプのIoTデバイスから収集されてもよい。このデータを使用して、システムは、例えば、どのユーザが衣服を洗濯するのか、どのユーザが所与の日にテレビを観るのか、各ユーザが就寝及び起床する時間などを決定することが可能である。次いで、このクラウドソースデータの全てが、IoTハブのデータリポジトリ413内にコンパイルされてもよく、かつ/又は外部サービス若しくはユーザに転送されてもよい。
【0061】
本明細書に記載される技術の別の有益な用途は、補助を必要とし得る高齢のユーザを監視するためのものである。このアプリケーションに関して、モバイルデバイス611は、ユーザの自宅の異なる室内の情報を収集するために、高齢のユーザによって装着可能された非常に小型のトークンであってもよい。ユーザが冷蔵庫を開けるたびに、例えば、このデータは、収集されたデータ605と共に含まれ、トークンを介してIoTハブ110に伝送される。次いで、IoTハブは、1つ以上の外部ユーザ(例えば、高齢のユーザを世話する子供又は他の個人)にデータを提供してもよい。データが指定された期間(例えば、12時間)収集されていない場合、これは、高齢のユーザが自宅を動き回っていない、かつ/又は冷蔵庫を開けていないことを意味する。次いで、IoTハブ110又はIoTハブに接続された外部サービスは、これらの他の個人にアラート通知を送信し、彼らに高齢のユーザを確認するべきであることを通知してもよい。加えて、収集されたデータ605は、ユーザによって消費されている食品、並びに食料品店に行くことが必要であるかどうか、高齢のユーザがテレビを観ているかどうか、及びどれほど頻繁に観ているか、高齢のユーザが衣服を洗濯する頻度などの他の関連情報を含んでもよい。
【0062】
別の実装例において、洗濯機、冷蔵庫、HVACシステムなどに問題がある場合、収集されたデータは、交換される必要がある部品の指示を含んでもよい。そのような場合、通知は、問題を解決するための要求と共に技術者に送信されてもよい。次いで、技術者は、必要とされる交換部品を持って自宅に到着し得る。
【0063】
本発明の一実施形態に従う方法が、
図8に例示されている。本方法は、上記のアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【0064】
801において、IoTハブの範囲外にあるIoTデバイスは、データ(例えば、冷蔵庫の扉の開放、使用された食料品など)を周期的に収集する。802において、IoTデバイスは、モバイルデバイスとの接続性を周期的又は連続的にチェックする(例えば、BTLE標準によって指定されたものなど、接続を確立するための標準的なローカル無線技術を使用して)。802において、モバイルデバイスへの接続が確立され、決定された場合、803において、収集されたデータは、803においてモバイルデバイスに伝送される。804において、モバイルデバイスは、IoTハブ、外部サービス、及び/又はユーザにデータを伝送する。述べられたように、モバイルデバイスは、それが既に接続されている場合(例えば、WiFiリンクを介して)、すぐにデータを送信し得る。
【0065】
IoTデバイスからデータを収集することに加えて、一実施形態では、本明細書に記載される技術は、データを更新するか、又は別様にIoTデバイスにデータを提供するために使用されてもよい。一例が
図9Aに示され、それは、IoTデバイス601(又はそのようなIoTデバイスの群)上にインストールされる必要があるプログラムコード更新901を有する、IoTハブ110を示す。プログラムコード更新は、システム更新、パッチ、コンフィギュレーションデータ、及びIoTデバイスがユーザの要求通り動作するために必要とされる任意の他のデータを含んでもよい。一実施形態では、ユーザは、モバイルデバイス又はコンピュータを介してIoTデバイス601に対するコンフィギュレーションオプションを指定してもよく、それらは次いで、本明細書に記載される技術を使用して、IoTハブ110上に記憶され、かつIoTデバイスに提供される。具体的には、一実施形態では、IoTハブ110上の中間接続ロジック/アプリケーション721は、モバイルデバイス611上の中間接続ロジック/アプリケーション711と通信して、一時記憶装置615内にプログラムコード更新を記憶する。モバイルデバイス611がIoTデバイス601の範囲に入るとき、モバイルデバイス611上の中間接続ロジック/アプリケーション711は、IoTデバイス601上の中間/接続ロジック/アプリケーション701と接続して、デバイスにプログラムコード更新を提供する。一実施形態では、IoTデバイス601は次いで、新しいプログラムコード更新及び/又はデータをインストールするための自動更新プロセスに入ってもよい。
【0066】
IoTデバイスを更新するための方法が、
図9Bに示される。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0067】
900において、新しいプログラムコード又はデータ更新は、IoTハブ及び/又は外部サービス(例えば、インターネット上でモバイルデバイスに連結された)上で利用可能になる。901において、モバイルデバイスは、IoTデバイスの代わりにプログラムコード又はデータ更新を受信及び記憶する。IoTデバイス及び/又はモバイルデバイスは、902において接続が確立されているかどうかを決定するために周期的にチェックする。903において接続が確立され、決定された場合、904において、更新は、IoTデバイスに伝送され、インストールされる。
改善されたセキュリティのための実施形態
【0068】
一実施形態では、各IoTデバイス101の低電力マイクロコントローラ200及びIoTハブ110の低電力ロジック/マイクロコントローラ301は、以下に記載される実施形態によって使用される暗号化鍵を記憶するための安全な鍵ストアを含む(例えば、
図10~
図15及び関連する文章を参照されたい)。代替的に、キーは、後述するように、加入者識別モジュール(SIM)内に確保されてもよい。
【0069】
図10は、IoTサービス120、IoTハブ110、並びにIoTデバイス101及び102の間の通信を暗号化するために公開鍵インフラストラクチャ(PKI)技術及び/又は対称鍵交換/暗号化技術を使用する、俯瞰的なアーキテクチャを例示する。
【0070】
公開/秘密鍵ペアを使用する実施形態をまず説明し、続いて、対称鍵交換/暗号化技術を使用する実施形態を説明する。具体的には、PKIを使用するある実施形態において、一意的な公開/秘密鍵ペアが、各IoTデバイス101~102、各IoTハブ110、及びIoTサービス120に関連付けられる。一実施形態では、新しいIoTハブ110がセットアップされるとき、その公開鍵がIoTサービス120に提供され、新しいIoTデバイス101が設定されるとき、その公開鍵がIoTハブ110とIoTサービス120との両方に提供される。デバイス間で公開鍵を安全に交換するための様々な技術を以下に説明する。一実施形態では、いかなる受信デバイスも、署名の妥当性を確認することによって公開鍵の妥当性を検証することができるように、全ての公開鍵が、受信デバイスの全てに既知であるマスター鍵(すなわち、一種の証明書)によって署名される。したがって、未加工の公開鍵を単に交換するのではなく、むしろこれらの証明書が交換されることになる。
【0071】
例示したように、一実施形態では、各IoTデバイス101、102は、各デバイスの秘密鍵を記憶するセキュリティのために、それぞれ、安全な鍵記憶装置1001、1003を含む。セキュリティロジック1002、1304が、安全に記憶された秘密鍵を用いて、本明細書に記載された暗号化/復号動作を実行する。同様に、IoTハブ110は、IoTハブ秘密鍵、並びにIoTデバイス101~102及びIoTサービス120の公開鍵を記憶するための安全な記憶装置1011と、鍵を使用して暗号化/復号動作を実行するためのセキュリティロジック1012と、を含む。最終的に、IoTサービス120は、それ自体の秘密鍵、様々なIoTデバイス及びIoTハブの公開鍵を安全に記憶するセキュリティのための安全な記憶装置1021と、鍵を使用してIoTハブ及びデバイスとの通信を暗号化/復号するためのセキュリティロジック1013と、を含んでもよい。一実施形態では、IoTハブ110がIoTデバイスから公開鍵証明書を受信すると、IoTハブ110は、それを(例えば、上記のようにマスター鍵を使用して署名の妥当性を確認することによって)検証し、次いで、その中から公開鍵を抽出して、その公開鍵をその安全な鍵ストア1011内に記憶することができる。
【0072】
例として、一実施形態では、IoTサービス120が、コマンド又はデータ(例えば、ドアを開錠するコマンド、センサを読み取るリクエスト、IoTデバイスによって処理/表示されるべきデータ等)をIoTデバイス101に送信する必要があるとき、セキュリティロジック1013は、IoTデバイス101の公開鍵を使用してそのデータ/コマンドを暗号化することにより、暗号化されたIoTデバイスパケットを生成する。一実施形態では、次いで、セキュリティロジック1013は、IoTハブ110の公開鍵を使用し、IoTデバイスパケットを暗号化して、IoTハブパケットを生成し、IoTハブパケットをIoTハブ110に送信する。一実施形態では、デバイス101が、それが信頼されるソースから変更されていないメッセージを受信していることを検証することができるように、サービス120は、その秘密鍵又は上述のマスター鍵を用いて、暗号化されたメッセージに署名する。次いで、デバイス101は、秘密鍵及び/又はマスター鍵に対応する公開鍵を使用して、署名の妥当性を確認してもよい。上述したように、対称鍵交換/暗号化技術が、公開/秘密鍵暗号化の代わりに使用されてもよい。これらの実施形態では、1つの鍵をプライベートに記憶し、対応する公開鍵を他のデバイスに提供するのではなく、それぞれのデバイスに、暗号化のために、かつ署名の妥当性を確認するために使用されるものと同じ対称鍵のコピーを提供してもよい。対称鍵アルゴリズムの一例は高度暗号化標準(AES)であるが、本発明の基本原理は、いかなるタイプの特定の対称鍵にも限定されない。
【0073】
ある対称鍵実装形態を使用すると、各デバイス101は、IoTハブ110と対称鍵を交換するために、安全な鍵交換プロトコルに入る。動的対称鍵プロビジョニングプロトコル(DSKPP)などの安全な鍵プロビジョニングプロトコルが、安全な通信チャネルを介して鍵を交換するために使用され得る(例えば、コメント要求(RFC)6063を参照されたい)。しかしながら、本発明の基本原理は、いかなる特定の鍵プロビジョニングプロトコルにも限定されるものではない。
【0074】
対称鍵が交換されると、それらは、各デバイス101及びIoTハブ110によって、通信を暗号化するために使用され得る。同様に、IoTハブ110及びIoTサービス120は、安全な対称鍵交換を実行し、次いで、交換された対称鍵を使用して通信を暗号化し得る。一実施形態では、新しい対称鍵が、デバイス101とハブ110との間、及びハブ110とIoTサービス120との間で定期的に交換される。一実施形態では、デバイス101、ハブ110、及びサービス120の間での新しい通信セッションのたびに、新しい対称鍵が交換される(例えば、通信セッション毎に新しい鍵が生成され、安全に交換される)。一実施形態では、IoTハブ内のセキュリティモジュール1012が信頼される場合、サービス120は、ハブセキュリティモジュール1312とセッション鍵をネゴシエートし得、次いで、セキュリティモジュール1012は、各デバイス120とセッション鍵をネゴシエートすることになる。次いで、サービス120からのメッセージが、ハブセキュリティモジュール1012で復号及び検証され、その後、デバイス101への送信のために再暗号化される。
【0075】
一実施形態では、ハブセキュリティモジュール1012でのセキュリティ侵害を防止するために、1回限りの(恒久的な)インストール鍵が、インストール時にデバイス101とサービス120との間で交渉されてもよい。メッセージをデバイス101に送るとき、サービス120は、まずこのデバイスインストール鍵を用いて暗号化/MACし、次いでハブのセッション鍵を用いてそれを暗号化/MACし得る。次いで、ハブ110は、暗号化されたデバイスブロブを検証及び抽出し、それをデバイスに送ることになる。
【0076】
本発明の一実施形態では、リプレイアタックを防止するためにカウンタ機構が実装される。例えば、デバイス101からハブ110へ(又は逆もまた同様)の連続する通信それぞれに、継続的に増加するカウンタ値が割り当てられ得る。ハブ110とデバイス101との両方がこの値を追跡し、デバイス間での連続する通信それぞれにおいてその値が正しいことを検証する。これと同じ技術が、ハブ110とサービス120との間に実装され得る。この方法でカウンタを使用すると、各デバイス間での通信を偽装することがより困難になるであろう(カウンタ値が誤ったものになるため)。しかしながら、これを用いずとも、サービスとデバイスとの間で共有されたインストール鍵は、全てのデバイスに対するネットワーク(ハブ)規模の攻撃を防止するであろう。
【0077】
一実施形態では、公開/秘密鍵暗号化を使用するとき、IoTハブ110は、その秘密鍵を使用してIoTハブパケットを復号し、暗号化されたIoTデバイスパケットを生成し、それを、関連付けられたIoTデバイス101に送信する。次いで、IoTデバイス101は、その秘密鍵を使用してIoTデバイスパケットを復号して、IoTサービス120を起点とするコマンド/データを生成する。次いで、IoTデバイス101は、データを処理し、かつ/又はコマンドを実行してもよい。対称暗号化を使用すると、各デバイスは、共有された対称鍵を用いて暗号化及び復号を行う。いずれかの場合であれば、各送信デバイスはまた、受信デバイスがメッセージの信頼性を検証することができるように、その秘密鍵を用いてメッセージに署名してもよい。
【0078】
異なる鍵のセットが、IoTデバイス101からIoTハブ110への通信及びIoTサービス120への通信を暗号化するために使用されてもよい。例えば、一実施形態では、ある公開/秘密鍵構成を使用すると、IoTデバイス101上のセキュリティロジック1002が、IoTハブ110の公開鍵を使用して、IoTハブ110に送信されるデータパケットを暗号化する。次いで、IoTハブ110上のセキュリティロジック1012は、IoTハブの秘密鍵を使用して、データパケットを復号し得る。同様に、IoTデバイス101上のセキュリティロジック1002及び/又はIoTハブ110上のセキュリティロジック1012は、IoTサービス120の公開鍵を使用して、IoTサービス120に送信されるデータパケットを暗号化し得る(これは次いで、サービスの秘密鍵を使用して、IoTサービス120上のセキュリティロジック1013によって復号され得る)。対称鍵を使用すると、デバイス101及びハブ110は、ある対称鍵を共有し得、一方でハブ及びサービス120は、異なる対称鍵を共有し得る。
【0079】
上記の説明において、ある特定の具体的詳細が上に記載されているが、本発明の基本原理は様々な異なる暗号化技術を使用して実装され得ることに留意すべきである。例えば、上述した一部の実施形態は非対称の公開/秘密鍵ペアを使用するが、別の実施形態は、様々なIoTデバイス101~102、IoTハブ110、及びIoTサービス120の間で安全に交換される対称鍵を使用し得る。更に、一部の実施形態では、データ/コマンド自体は暗号化されないが、データ/コマンド(又は他のデータ構造)上の署名を生成するために鍵が使用される。次いで、受信者が、その鍵を使用して署名の妥当性を確認し得る。
【0080】
図11に例示するように、一実施形態では、各IoTデバイス101上の安全な鍵記憶装置が、プログラマブル加入者識別モジュール(SIM)1101を使用して実装される。この実施形態では、IoTデバイス101は、IoTデバイス101上のSIMインターフェース1100内に据え付けられたプログラムされていないSIMカード1101と共にエンドユーザに最初に提供され得る。1つ以上の暗号鍵のセットを用いてSIMをプログラミングするために、ユーザは、プログラマブルSIMカード1101をSIMインターフェース500から取り出して、それをIoTハブ110上のSIMプログラミングインターフェース1102に挿入する。次いで、IoTハブ上のプログラミングロジック1125が、IoTデバイス101をIoTハブ110及びIoTサービス120に登録/ペアリングするように、SIMカード1101を安全にプログラミングする。一実施形態では、公開/秘密鍵ペアは、プログラミングロジック1125によってランダムに生成されてもよく、次いで、このペアの公開鍵は、IoTハブの安全な記憶デバイス411内に記憶されてもよく、一方で秘密鍵は、プログラム可能なSIM 1101内に記憶されてもよい。加えて、プログラミングロジック525は、IoTハブ110、IoTサービス120、及び/又は任意の他のIoTデバイス101の公開鍵を、(IoTデバイス101上のセキュリティロジック1302による発信データの暗号化に使用するために)SIMカード1401上に記憶してもよい。一旦SIM 1101がプログラミングされると、新しいIoTデバイス101に、SIMを安全な識別子として使用して(例えば、SIMを用いてデバイスを登録するための既存の技術を使用して)IoTサービス120がプロビジョニングされ得る。プロビジョニング後、IoTハブ110とIoTサービス120との両方が、IoTデバイスの公開鍵のコピーを、IoTデバイス101との通信を暗号化する際に使用されるように安全に記憶する。
【0081】
図11を参照して上述した技術は、新たなIoTデバイスをエンドユーザに提供する際に多大な柔軟性を提供する。(現在行われているのと同様に)ユーザが販売/購入の際に各SIMを特定のサービスプロバイダに直接登録することを要するのではなく、SIMは、エンドユーザによりIoTハブ110を介して直接プログラミングされてもよく、プログラミングの結果は、IoTサービス120に安全に通信され得る。それ故に、新しいIoTデバイス101がオンライン又はローカルの小売業者からエンドユーザに販売され、後にIoTサービス120が安全にプロビジョニングされ得る。
【0082】
SIM(加入者識別モジュール)という具体的な文脈において登録及び暗号化技術を上述したが、本発明の基本原理は「SIM」デバイスに限定されない。むしろ、本発明の基本原理は、暗号鍵セットを記憶するための安全な記憶装置を有する、いかなるタイプのデバイスを使用して実装されてもよい。更に、上記の実施形態は取り外し可能なSIMデバイスを含むのに対し、一実施形態では、SIMデバイスは取り外し可能でないが、IoTデバイス自体が、IoTハブ110のプログラミングインターフェース1102に挿入されてもよい。
【0083】
一実施形態では、ユーザがSIM(又は他のデバイス)をプログラミングすることを要するのではなく、SIMは、エンドユーザへの流通前に、IoTデバイス101に予めプログラミングされる。この実施形態において、ユーザがIoTデバイス101をセットアップするとき、本明細書に記載される様々な技術が、IoTハブ110/IoTサービス120と新しいIoTデバイス101との間で暗号鍵を安全に交換するために使用され得る。
【0084】
例えば、
図12Aに例示するように、各IoTデバイス101又はSIM 401は、IoTデバイス101及び/又はSIM 1001を一意的に識別するバーコード又はQRコード1501と共に梱包されていてもよい。一実施形態では、バーコード又はQRコード1201は、IoTデバイス101又はSIM 1001の公開鍵の符号化表現を含む。代替的に、バーコード又はQRコード1201は、IoTハブ110及び/又はIoTサービス120によって、公開鍵を識別又は生成するために使用されてもよい(例えば、安全な記憶装置内に既に記憶されている公開鍵に対するポインタとして使用される)。バーコード又はQRコード601は、別個のカードに印刷されてもよく(
図12Aに示すように)、又はIoTデバイス自体に直接印刷されてもよい。バーコードが印刷される場所に関わらず、一実施形態では、IoTハブ110には、バーコードを読み取り、得られたデータをIoTハブ110上のセキュリティロジック1012及び/又はIoTサービス120上のセキュリティロジック1013に提供するための、バーコードリーダ206が備わっている。次いで、IoTハブ110上のセキュリティロジック1012は、その安全な鍵ストア1011内にIoTデバイスの公開鍵を記憶してもよく、IoTサービス120上のセキュリティロジック1013は、その安全な記憶装置1021内に公開鍵を(後の暗号化通信に使用するために)記憶してもよい。
【0085】
一実施形態では、バーコード又はQRコード1201内に含まれるデータはまた、インストールされたIoTアプリケーション又はIoTサービスプロバイダにより設計されたブラウザベースのアプレットを用いて、ユーザデバイス135(例えば、iPhone又はAndroidデバイスなど)によりキャプチャされてもよい。キャプチャされると、バーコードデータは、安全な接続(例えば、セキュアソケットレイヤー(SSL)接続など)を介して、IoTサービス120に安全に通信され得る。バーコードデータはまた、安全なローカル接続を介して(例えば、ローカルWiFi又はBluetooth LE接続を介して)クライアントデバイス135からIoTハブ110に提供されてもよい。
【0086】
IoTデバイス101上のセキュリティロジック1002及びIoTハブ110上のセキュリティロジック1012は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを使用して実装され得る。例えば、一実施形態では、セキュリティロジック1002、1012は、IoTデバイス101とIoTハブ110との間にローカル通信チャネル130を確立するために使用されるチップ(例えば、ローカルチャネル130がBluetooth LEである場合は、Bluetooth LEチップ)内に実装される。セキュリティロジック1002、1012の具体的な位置に関わらず、一実施形態では、セキュリティロジック1002、1012は、ある特定のタイプのプログラムコードを実行するために安全な実行環境を確立するように設計される。これは、例えば、TrustZone技術(一部のARMプロセッサで利用可能)及び/又はトラステッド・エグゼキューション・テクノロジー(Intelにより設計)を使用することによって、実装され得る。当然のことながら、本発明の基本原理は、いかなる特定のタイプの安全な実行技術にも限定されない。
【0087】
一実施形態では、バーコード又はQRコード1501は、各IoTデバイス101をIoTハブ110とペアリングするために使用され得る。例えば、Bluetooth LEデバイスをペアリングするために現在使用されている標準的な無線ペアリングプロセスを使用するのではなく、バーコード又はQRコード1501内に組み込まれたペアリングコードをIoTハブ110に提供して、IoTハブを対応するIoTデバイスとペアリングしてもよい。
【0088】
図12Bは、IoTハブ110上のバーコードリーダ206が、IoTデバイス101と関連するバーコード/QRコード1201をキャプチャする一実施形態を例示する。上述したように、バーコード/QRコード1201は、IoTデバイス101に直接印刷されてもよく、又はIoTデバイス101と共に提供される別個のカードに印刷されてもよい。いずれの場合においても、バーコードリーダ206は、バーコード/QRコード1201からペアリングコードを読み取り、このペアリングコードをローカル通信モジュール1280に提供する。一実施形態では、ローカル通信モジュール1280が、Bluetooth LEチップ及び関連するソフトウェアであっても、本発明の基本原理は、いかなる特定のプロトコル標準にも限定されない。一旦ペアリングコードが受信されると、それは、ペアリングデータ1285を含む安全な記憶装置内に記憶され、そして、IoTデバイス101とIoTハブ110とが自動的にペアリングされる。この方法でIoTハブが新しいIoTデバイスとペアリングされるたびに、そのペアリングに関するペアリングデータが、安全な記憶装置685内に記憶される。一実施形態では、IoTハブ110のローカル通信モジュール1280がペアリングコードを一旦受信すると、それは、このコードを鍵として使用することにより、ローカル無線チャネルを介したIoTデバイス101との通信を暗号化してもよい。
【0089】
同様に、IoTデバイス101側では、ローカル通信モジュール1590が、IoTハブとのペアリングを示すペアリングデータを、ローカルの安全な記憶デバイス1595内に記憶する。ペアリングデータ1295は、バーコード/QRコード1201で識別される予めプログラミングされたペアリングコードを含んでもよい。ペアリングデータ1295はまた、安全なローカル通信チャネルを確立するために必要な、IoTハブ110上のローカル通信モジュール1280から受信されるペアリングデータ(例えば、IoTハブ110との通信を暗号化するための追加の鍵)を含んでもよい。
【0090】
したがって、バーコード/QRコード1201は、ペアリングコードが無線で送信されないので、現在の無線ペアリングプロトコルよりも遥かに安全な態様でローカルペアリングを実行するために使用され得る。加えて、一実施形態では、ペアリングに使用されるものと同じバーコード/QRコード1201を使用して暗号鍵を識別し、IoTデバイス101からIoTハブ110へ、かつIoTハブ110からIoTサービス120への安全な接続を構築することができる。
【0091】
本発明の一実施形態にしたがってSIMカードをプログラミングするための方法が、
図13に例示されている。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0092】
1301において、ユーザは、空のSIMカードを有する新しいIoTデバイスを受け取り、1602において、ユーザは、空のSIMカードをIoTハブに挿入する。1303において、ユーザは、1つ以上の暗号鍵のセットを用いて空のSIMカードをプログラミングする。例えば、上述のように、一実施形態において、IoTハブは、公開/秘密鍵ペアをランダムに生成し、秘密鍵をSIMカード上に、かつ公開鍵をそのローカルの安全な記憶装置内に記憶し得る。加えて、1304において、少なくとも公開鍵がIoTサービスに送信され、それにより、公開鍵が使用されて、IoTデバイスを識別し、そしてIoTデバイスとの暗号化された通信を確立し得る。上述したように、一実施形態では、「SIM」カード以外のプログラマブルデバイスが、
図13に示す方法でSIMカードと同じ機能を実行するために使用されてもよい。
【0093】
新しいIoTデバイスをネットワークに統合するための方法が、
図14に例示されている。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0094】
1401において、ユーザは、暗号鍵が予め割り当てられている新しいIoTデバイスを受け取る。1402において、この鍵がIoTハブに安全に提供される。上述のように、一実施形態では、これは、IoTデバイスに関連付けられたバーコードを読み取って、デバイスに割り当てられた公開/秘密鍵ペアの公開鍵を識別することを伴う。バーコードは、IoTハブによって直接読み取られても、又はアプリケーション若しくはブラウザを介してモバイルデバイスによってキャプチャされてもよい。別の実施形態では、Bluetooth LEチャネル、近距離通信(NFC)チャネル、又は安全なWiFiチャネルなどの安全な通信チャネルが、鍵の交換のためにIoTデバイスとIoTハブとの間に確立されてもよい。鍵の送信方法に関わらず、受信されると、鍵はIoTハブデバイスの安全な鍵ストア内に記憶される。上述のように、セキュアエンクレーブ、トラステッド・エグゼキューション・テクノロジー(TXT)、及び/又はTrustzoneなどの様々な安全な実行技術が、鍵の記憶及び保護のためにIoTハブで使用され得る。加えて、803において、鍵は、IoTサービスに安全に送信され、IoTサービスは、この鍵をそれ自体の安全な鍵ストア内に記憶する。それは次いで、この鍵を使用して、IoTデバイスとの通信を暗号化し得る。この場合も、この交換は、証明書/署名付き鍵を使用して実行されてもよい。ハブ110内では、記憶された鍵の改変/追加/除去を防止することが特に重要である。
【0095】
公開/秘密鍵を使用してコマンド/データをIoTデバイスに安全に通信するための方法が、
図15に例示されている。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0096】
1501において、IoTサービスは、IoTデバイス公開鍵を使用してデータ/コマンドを暗号化することにより、IoTデバイスパケットを作成する。次いで、IoTサービスは、IoTハブの公開鍵を使用し、このIoTデバイスパケットを暗号化して、IoTハブパケットを作成する(例えば、IoTデバイスパケット周囲のIoTハブラッパーを作成する)。1502において、IoTサービスは、IoTハブパケットをIoTハブに送信する。1503において、IoTハブは、IoTハブの秘密鍵を使用してIoTハブパケットを復号することにより、IoTデバイスパケットを生成する。1504において、IoTハブは、次いでIoTデバイスパケットをIoTデバイスに送信し、このIoTデバイスは、1505において、IoTデバイス秘密鍵を使用してIoTデバイスパケットを復号することにより、データ/コマンドを生成する。1506において、IoTデバイスは、データ/コマンドを処理する。
【0097】
対称鍵を使用するある実施形態において、対称鍵交換は、各デバイス間(例えば、各デバイスとハブと、及びハブとサービスとの間)でネゴシエートされ得る。鍵交換が完了すると、各送信デバイスは、対称鍵を使用して各送信を暗号化し、かつ/又はそれに署名し、その後、データを受信デバイスに送信する。
モノのインターネット(IoT)システムに安全な通信チャネルを確立するための装置及び方法
【0098】
本発明の一実施形態では、データの暗号化及び復号は、通信チャネル(例えば、ユーザのモバイルデバイス611、及び/又はIoTハブ110等)をサポートするために使用される中間デバイスに関係なく、IoTサービス120と各IoTデバイス101との間で実行される。IoTハブ110を介して通信する一実施形態が、
図16Aに例示され、そして、IoTハブを必要としない別の実施形態が、
図16Bに例示されている。
【0099】
最初に
図16Aを参照すると、IoTサービス120が、「サービスセッション鍵」1650のセットを管理する暗号化エンジン1660を含み、そして、各IoTデバイス101が、IoTデバイス101とIoTサービス120との間の通信を暗号化/復号するための「デバイスセッション鍵」1651のセットを管理する暗号化エンジン1661を含んでいる。暗号化エンジンは、本明細書で説明されるセキュリティ/暗号化技術を実行するとき、様々なハードウェアモジュールに依存してもよく、そのようなモジュールは、(とりわけ)セッション公開/秘密鍵ペアを生成するための、及びペアの秘密セッション鍵へのアクセスを防止するためのハードウェアセキュリティモジュール1630~1631と、派生秘密を使用して鍵ストリームを生成するための鍵ストリーム生成モジュール1640-1641と、を含む。一実施形態では、サービスセッション鍵1650とデバイスセッション鍵1651とは、関係付けられた公開/秘密鍵ペアを備える。例えば、一実施形態では、IoTデバイス101でのデバイスセッション鍵1651は、IoTサービス120の公開鍵と、IoTデバイス101の秘密鍵と、を含む。以下で詳細に論じるように、一実施形態では、安全な通信セッションを確立するために、公開/秘密セッション鍵ペア1650及び1651が、それぞれ、各暗号化エンジン1660及び1661によって使用されてSKGM 1640~1641によって次に使用される同じ秘密を生成し、それにより、IoTサービス120とIoTデバイス101との間の通信を暗号化及び復号するための鍵ストリームを生成する。本発明の一実施形態に従う、秘密の生成及び使用に関連する更なる詳細が以下に示される。
【0100】
図16Aでは、一旦秘密が鍵1650~1651を使用して生成されると、クライアントは、クリアトランザクション1611によって示されるように、常にIoTサービス120を通してIoTデバイス101にメッセージを送信することになる。本明細書で使用される「クリア」は、根底にあるメッセージが本明細書で説明される暗号化技術を使用して暗号化されていないことを示す意味である。しかし、一実施形態では、例示したように、安全なソケット層(SSL)チャネル、又は別の安全なチャネル(例えば、インターネットプロトコルセキュリティ(IPSEC)チャネル)が、通信を保護するためにクライアントデバイス611とIoTサービス120との間に確立される。IoTサービス120での暗号化エンジン1660は、次いで、生成された秘密を使用するメッセージを暗号化し、1602で暗号化されたメッセージをIoTハブ110に送信する。一実施形態では、秘密を使用して直接メッセージを暗号化するよりむしろ、秘密及びカウンタ値が使用されて、各メッセージパケットを暗号化するために使用される鍵ストリームを生成する。この実施形態の詳細は、
図17を参照して以下で説明される。
【0101】
例示したように、SSL接続又は別の安全なチャネルが、IoTサービス120とIoTハブ110との間で確立されてもよい。IoTハブ110(これは一実施形態ではメッセージを復号する能力を有しない)は、1603において(例えば、Bluetooth Low Energy(BTLE)通信チャネルを介して)暗号化されたメッセージをIoTデバイスに送信する。IoTデバイス101上の暗号化エンジン1661は、次いで、秘密を使用してメッセージを復号し、そしてメッセージ内容を処理してもよい。秘密を使用して鍵ストリームを生成する実施形態では、暗号化エンジン1661は、秘密及びカウンタ値を使用して鍵ストリームを生成し、次いで、鍵ストリームを使用してメッセージパケットを復号してもよい。
【0102】
メッセージ自体は、IoTサービス120とIoTデバイス101との間での任意形式の通信を含んでもよい。例えば、メッセージは、IoTデバイス101に、測定値を取得して結果をクライアントデバイス611に報告すること等の特定の機能を実行するように命令するコマンドパケットを備えてもよく、又は、IoTデバイス101の動作を構成するためのコンフィギュレーションデータを含んでもよい。
【0103】
応答が必要である場合、IoTデバイス101の暗号化エンジン1661は、秘密又は派生鍵ストリームを使用して応答を暗号化し、1604において、暗号化された応答をIoTハブ110に送信し、そして、IoTハブは、1605において、IoTサービス120に応答を転送する。IoTサービス120の暗号化エンジン1660は、次いで、秘密又は派生鍵ストリームを使用して応答を復号し、そして、1606において(例えば、SSL又は別の安全な通信チャネルを介して)クライアントデバイス611に、復号された応答を送信する。
【0104】
図16Bは、IoTハブを必要としない実施形態を例示する。むしろ、この実施形態では、IoTデバイス101とIoTサービス120との間の通信は、(例えば、
図6~
図9Bに関して上述した実施形態におけるように)クライアントデバイス611によって生じる。この実施形態では、IoTデバイス101にメッセージを送信するために、クライアントデバイス611は、1611において、IoTサービス120にメッセージの非暗号化バージョンを送信する。暗号化エンジン1660は、秘密又は派生鍵ストリームを使用してメッセージを暗号化し、そして、1612において、暗号化されたメッセージをクライアントデバイス611に送信して戻す。クライアントデバイス611は、次いで、1613において、IoTデバイス101に暗号化されたメッセージを転送し、そして、暗号化エンジン1661は、秘密又は派生鍵ストリームを使用してメッセージを復号する。IoTデバイス101は、次いで、本明細書で説明されるようにメッセージを処理してもよい。応答が必要である場合、暗号化エンジン1661は、秘密を使用して応答を暗号化し、1614において、暗号化された応答をクライアントデバイス611に送信し、そして、クライアントデバイスは、1615において、暗号化された応答をIoTサービス120に転送する。暗号化エンジン1660は、次いで、応答を復号し、1616において、復号された応答をクライアントデバイス611に送信する。
【0105】
図17は、最初にIoTサービス120とIoTデバイス101との間で実行され得る鍵交換及び鍵ストリーム生成を例示する。一実施形態では、この鍵交換は、IoTサービス120及びIoTデバイス101が新しい通信セッションを確立するたびに実行されてもよい。代替的に、鍵交換が実行され、そして、交換されたセッション鍵が特定の期間(例えば、1日、1週間等)使用されてもよい。中間デバイスが簡潔のために
図17に示されないが、通信は、IoTハブ110及び/又はクライアントデバイス611によって生じてもよい。
【0106】
一実施形態では、IoTサービス120の暗号化エンジン1660は、HSM 1630(例えば、これはAmazon(登録商標)によって提供されるCloudHSM等であってもよい)にコマンドを送信することにより、セッション公開/秘密鍵ペアを生成する。HSM 1630は、その後、ペアの秘密セッション鍵へのアクセスを防止してもよい。同様に、IoTデバイス101の暗号化エンジンは、セッション公開/秘密鍵ペアを生成し、ペアのセッション秘密鍵へのアクセスを防止するHSM 1631(例えば、Atmel社(登録商標)からのAtecc508 HSM等)にコマンドを送信してもよい。当然のことながら、本発明の基本原理は、いかなる特定のタイプの暗号化エンジン又はメーカーにも限定されない。
【0107】
一実施形態では、IoTサービス120は、1701において、HSM 1630を使用して生成されたそれ自体のセッション公開鍵をIoTデバイス101に送信する。IoTデバイスは、それ自体のHSM 1631を使用してそれ自体のセッション公開/秘密鍵ペアを生成し、そして、1702において、それ自体のペアの公開鍵をIoTサービス120に送信する。一実施形態では、暗号化エンジン1660~1661が、楕円曲線ディフィーヘルマン(ECDH)プロトコルを使用し、このプロトコルは、楕円曲線公開-秘密鍵ペアを有する2つの関係者が共有秘密を確立することを可能にする匿名の鍵共有である。一実施形態では、これらの技術を使用して、1703において、IoTサービス120の暗号化エンジン1660が、IoTデバイスセッション公開鍵及びそれ自体のセッション秘密鍵を使用して秘密を生成する。同様に、1704において、IoTデバイス101の暗号化エンジン1661が、IoTサービス120セッション公開鍵及びそれ自体のセッション秘密鍵を使用して同一の秘密を独立に生成する。より詳細には、一実施形態で、IoTサービス120の暗号化エンジン1660は、(式)秘密=IoTデバイスセッション公開鍵*IoTサービスセッション秘密鍵によって秘密を生成し、ここで、「*」は、IoTデバイスセッション公開鍵がIoTサービスセッション秘密鍵によって小数点乗算されることを意味する。IoTデバイス101の暗号化エンジン1661は、(式)秘密=IoTサービスセッション公開鍵*IoTデバイスセッション秘密鍵によって秘密を生成し、ここで、IoTサービスセッション公開鍵は、IoTデバイスセッション秘密鍵によって小数点乗算される。最終的に、IoTサービス120及びIoTデバイス101は、両方とも、下記で説明するように通信を暗号化するために使用されるべき同一の秘密の生成を完了する。一実施形態では、暗号化エンジン1660~1661は、それぞれKSGM 1640~1641等のハードウェアモジュールに基づいて、秘密を生成するための上記の動作を実行する。
【0108】
一旦秘密が決定されると、それは、データを直接暗号化及び復号するために、暗号化エンジン1660及び1661によって使用されてもよい。代替的に、一実施形態では、暗号化エンジン1660~1661は、KSGM 1640~1641にコマンドを送信して、各データパケットを暗号化/復号するための秘密を使用して新たな鍵ストリームを生成する(すなわち、新たな鍵ストリームデータ構造が各パケットに対して生成される)。具体的には、鍵ストリーム生成モジュール1640~1641の一実施形態は、Galois/Counter MODE(GCM)を実装し、このモードでは、カウンタ値が各データパケットに対して増加させられ、そして、秘密と組み合せて使用されることにより鍵ストリームを生成する。したがって、IoTサービス120にデータパケットを送信するために、IoTデバイス101の暗号化エンジン1661は、秘密及び現在のカウンタ値を使用して、KSGM 1640~1641に新たな鍵ストリームを生成させ、そして、次の鍵ストリームを生成するためのカウンタ値を増加させる。新たに生成された鍵ストリームが、次いで使用されて、IoTサービス120への送信の前に、データパケットを暗号化する。一実施形態では、鍵ストリームはデータとXOR演算されることにより、暗号化されたデータパケットを生成する。一実施形態では、IoTデバイス101は、暗号化されたデータパケットと共にカウンタ値をIoTサービス120に送信する。IoTサービスの暗号化エンジン1660は、次いで、KSGM 1640と通信し、このKSGMは、受け取られたカウンタ値及び秘密を使用して鍵ストリーム(これは、同一の秘密及びカウンタ値が使用されるので同一の鍵ストリームであるはずである)を生成し、そして、生成された鍵ストリームを使用してデータパケットを復号する。
【0109】
一実施形態では、IoTサービス120からIoTデバイス101に送信されるデータパケットは、同一の方法で暗号化される。具体的には、カウンタは、各データパケットに対して増加させられ、そして、秘密と共に使用されて新たな鍵ストリームを生成する。鍵ストリームは、次いで使用されてデータを暗号化し(例えば、データと鍵ストリームとのXOR演算を実行する)、そして、暗号化されたデータパケットが、カウンタ値と共にIoTデバイス101に送信される。IoTデバイス101の暗号化エンジン1661は、次いでKSGM1641と通信し、このKSGMは、カウンタ値及び秘密を使用して、データパケットを復号するために使用される同一の鍵ストリームを生成する。したがって、この実施形態では、暗号化エンジン1660~1661は、それら自体のカウンタ値を使用して、データを暗号化するための鍵ストリームを生成し、そして、暗号化されたデータパケットと共に受け取られたカウンタ値を使用して、データを復号するための鍵ストリームを生成する。
【0110】
一実施形態では、各暗号化エンジン1660~1661は、それが別の暗号化エンジンから受け取った最後のカウンタ値のトラックを保持し、そして、カウンタ値が順序を外れて受け取られたか否か、又は同一のカウンタ値が一度ならず受け取られたか否かを検出するための順序付けロジックを含む。カウンタ値が順序を外れて受け取られた場合、又は同一のカウンタ値が一度ならず受け取られた場合、このことは、反射攻撃が試みられていることを示す場合がある。それに応じて、暗号化エンジン1660~1661は、通信チャネルから分離してもよく、及び/又はセキュリティ警報を生成してもよい。
【0111】
図18は、4バイトのカウンタ値1800、可変サイズの暗号化データフィールド1801、及び6バイトのタグ1802を備える本発明の一実施形態で使用される例示的な暗号化されたデータパケットを例示する。一実施形態では、タグ1802は、復号されたデータを(一旦それが復号されると)確認するための検証合計値を備えている。
【0112】
上述のように、一実施形態では、IoTサービス120とIoTデバイス101との間で交換されるセッション公開/秘密鍵ペア1650~1651は、定期的に及び/又は各新たな通信セッションの開始に応じて生成されてもよい。
【0113】
本発明の1つの実施形態は、IoTサービス120とIoTデバイス101との間のセッションを認証するための追加の技術を実装する。具体的には、一実施形態では、マスター鍵ペア、ファクトリ鍵ペアのセット、及びIoTサービス鍵ペアのセット、並びにIoTデバイス鍵ペアのセットを含む公開/秘密鍵ペアの階層が使用される。一実施形態では、マスター鍵ペアは、別の鍵ペアの全てに対する信頼のルートを備え、そして、単一の非常に安全な場所に(例えば、本明細書で説明されるIoTシステムを実装する組織の制御下に)維持される。マスター秘密鍵は、ファクトリ鍵ペア等の様々な別のキーペアにわたるサインを生成する(そして、それによって認証する)ために使用されてもよい。署名は、次いで、マスター公開鍵を使用して検証され得る。一実施形態では、IoTデバイスを製造する各ファクトリは、それ自体のファクトリ鍵ペアを割り当てられ、このファクトリ鍵ペアは、次にIoTサービス鍵及びIoTデバイス鍵を認証するため使用され得る。例えば、一実施形態では、ファクトリ秘密鍵が使用されて、IoTサービス公開鍵及びIoTデバイス公開鍵にわたる署名を生成する。これらの署名は、次いで、対応するファクトリ公開鍵を使用して検証され得る。これらのIoTサービス/デバイス公開鍵は、
図16A~
図16Bに関して上記した「セッション」公開/秘密鍵と同一のものではない点に留意されたい。上記のセッション公開/秘密鍵は一時的なものであり(すなわち、サービス/デバイスセッションのために生成される)、一方、IoTサービス/デバイス鍵ペアは恒久的なものである(すなわち、ファクトリで生成される)。
【0114】
マスター鍵、ファクトリ鍵、サービス/デバイス鍵の間の前述の関係を念頭に置いて、本発明の一実施形態は、IoTサービス120とIoTデバイス101との間に認証及びセキュリティの追加の層を提供するために、以下の動作を実行する。
A.一実施形態では、IoTサービス120は、最初に下記のことを含むメッセージを生成する:
1.IoTサービスの一意的なID:
・IoTサービスのシリアル番号;
・タイムスタンプ;
・この一意的なIDの署名に使用されるファクトリ鍵のID;
・一意的なID(すなわち、サービス)のクラス;
・IoTサービスの公開鍵
・一意的なIDにわたる署名
2.ファクトリ認証は以下を含む:
・タイムスタンプ
・認証の署名に使用されるマスター鍵のID
・ファクトリ公開鍵
・ファクトリ認証の署名
3.IoTサービスセッション公開鍵(
図16A~
図16Bに関して上記したような)
4.IoTサービスセッション公開鍵署名(例えば、IoTサービスの秘密鍵によって署名される)
B.一実施形態では、メッセージは、ネゴシエーションチャネル(下記の)のIoTデバイスに送られる。IoTデバイスはメッセージを解析し、そして:
1.ファクトリ認証の署名を検証する(メッセージペイロードに存在する場合にのみ)
2.一意的なIDによって識別された鍵を使用して一意的なIDの署名を検証する
3.一意的なIDからのIoTサービスの公開鍵を使用してIoTサービスセッション公開鍵署名を検証する
4.IoTサービスの公開鍵及びIoTサービスのセッション公開鍵を保存する
5.IoTデバイスセッション鍵ペアを生成する
C.IoTデバイスは、次いで、下記のことを含むメッセージを生成する:
1.IoTデバイスの一意的なID
・IoTデバイスシリアル番号
・タイムスタンプ
・この一意的なIDの署名に使用されるファクトリ鍵のID
・一意的なIDのクラス(すなわち、IoTデバイス)
・IoTデバイスの公開鍵
・一意的なIDの署名
2.IoTデバイスのセッション公開鍵
3.IoTデバイスの鍵によって署名されるもの(IoTデバイスセッション公開鍵+IoTサービスセッション公開鍵)の署名
D.このメッセージが、IoTサービスに送信して戻される。IoTサービスがメッセージを解析し、そして:
1.ファクトリ公開鍵を使用して一意的なIDの署名を検証する
2.IoTデバイスの公開鍵を使用してセッション公開鍵の署名を検証する
3.IoTデバイスのセッション公開鍵を保存する
E.IoTサービスは、次いで、IoTサービスの鍵によって署名されたもの(IoTデバイスセッション公開鍵+IoTサービスセッション公開鍵)の署名を含むメッセージを生成する。
F.IoTデバイスはメッセージを解析し、そして:
1.IoTサービスの公開鍵を使用してセッション公開鍵の署名を検証する
2.IoTデバイスセッション秘密鍵及びIoTサービスのセッション公開鍵から鍵ストリームを生成する
3.IoTデバイスは、次いで、「メッセージング利用可能」メッセージを送信する。
G.IoTサービスは、次いで、下記のことを行う:
1.IoTサービスセッション秘密鍵及びIoTデバイスのセッション公開鍵から鍵ストリームを生成する
2.下記のことを含むメッセージングチャネルに新たなメッセージを作成する:
・ランダムな2バイトの値を生成して記憶する
・ブーメラン属性ID(下記で論じる)及びランダムな値を有する属性メッセージを設定する
H.IoTデバイスが、メッセージを受け取り、そして:
1.メッセージの復号を試みる
2.表示された属性IDに同一の値を有する更新を発する
I.IoTサービスは、ブーメラン属性更新を含むメッセージペイロードを認識し、そして:
1.それのペアリングされた状態を真に設定する
2.ネゴシエータチャネルのペアリング完了メッセージを送信する
J.IoTデバイスは、メッセージを受け取り、それのペアリングされた状態を真に設定する
【0115】
上記の技術が、「IoTサービス」及び「IoTデバイス」に関して説明されるが、本発明の基本原理が、ユーザクライアントデバイス、サーバ、及びインターネットサーバを含む任意の2つのデバイスの間に安全な通信チャネルを確立するために実装されてもよい。
【0116】
上記の技術は、(秘密が、1つの関係者から別の関係者に送信される現在のブルートゥース(登録商標)ペアリング技術とは対照的に)秘密鍵が空中を介して決して共有されないので、非常に安全である。会話全体を盗聴する攻撃者は、公開鍵を有することになるだけであり、その公開鍵は共有の秘密を生成するには不十分なものである。これらの技術は、また、署名された公開鍵を交換することによって中間者攻撃(man-in-the-middle attack)を防止する。更に、GCM及び別個のカウンタが各デバイスにおいて使用されるので、任意の種類の「反射攻撃」(この場合、中間者がデータをキャプチャし、再びそれを送信する)が防止される。いくつかの実施形態は、また、非対称カウンタを使用することによって反射攻撃を防止する。
正式にペアリングするデバイスによらずにデータ及びコマンドを交換するための技術
【0117】
GATTは、Generic Attribute Profileについての頭字語であり、それは、2つのBluetooth Low Energy(BTLE)デバイスが、データを往復して転送する方法を規定する。GATTは、Attribute Protocol(ATT)と呼ばれるジェネリックデータプロトコルを利用し、このプロトコルが使用することにより、単一のルックアップテーブルに、テーブル内の各エントリに対する16ビットの特性IDを使用してサービス、特性、及び関係付けられたデータを記憶する。その一方で「特性」が時として「属性」と呼ばれることに留意されたい。
【0118】
ブルートゥースデバイスにおいて、最も一般に使用される特性は、デバイス「名称」(特性ID 10752(0×2A00)を有する)である。例えば、ブルートゥースデバイスは、それの近傍の別のブルートゥースデバイスを、GATTを使用してそれらの別のブルートゥースデバイスによって発行された「名称」特性を読み取ることによって識別してもよい。したがって、ブルートゥースデバイスは、デバイスを正式にペアリング/結合することなくデータを交換するための固有の能力を有する(「ペアリング」と「結合」とが時として交換可能に使用される点に留意されたい。この議論の残りは、用語「ペアリング」を使用することになる)。
【0119】
本発明の一実施形態は、この能力を利用することにより、これらのデバイスと正式にペアリングすることなく、BTLE対応IoTデバイスと通信する。各個々のIoTデバイスとペアリングすることは、各デバイスとのペアリングに時間を要するため、及び、一度に1つのペアリングされた接続しか確立できないため、非常に非効率となる。
【0120】
図19は、ブルートゥース(BT)デバイス1910が、ペアリングされたBT接続を正式に確立することなく、IoTデバイス101のBT通信モジュール1901によってネットワークソケット抽象化を確立するという特定の一実施形態を例示する。BTデバイス1910は、例えば
図16Aに示すようなIoTハブ110及び/又はクライアントデバイス611に含まれてもよい。例示したように、BT通信モジュール1901は、特性ID、それらの特性IDと関連する名称、及びそれらの特性IDに対する値のリストを含むデータ構造を維持する。各特性に対する値は、現在のBT標準にしたがって特性IDによって識別される20バイトのバッファ内に記憶されてもよい。しかし、本発明の基本原理は、いかなる特定のバッファサイズにも限定されない。
【0121】
図19の例では、「名称」特性は、「IoTデバイス14」の特性値を割り当てられたBT規定特性である。本発明の一実施形態は、BTデバイス1910と安全な通信チャネルをネゴシエートするために使用されるべき追加の特性の第1のセットと、BTデバイス1910との通信を暗号化するために使用されるべき追加の特性の第2のセットとを特定する。具体的には、例示した実施例において特性ID<65532>によって識別される「ネゴシエーション書込み」特性が使用されて、発信ネゴシエーションメッセージを送信してもよく、そして、特性ID<65533>によって識別される「ネゴシエーション読取り」特性が使用されて、着信ネゴシエーションメッセージを受け取ってもよい。「ネゴシエーションメッセージ」は、本明細書で説明するように、安全な通信チャネルを確立するためにBTデバイス1910及びBT通信モジュール1901によって使用されるメッセージを含んでもよい。例として、
図17において、IoTデバイス101は、「ネゴシエーション読取り」特性<65533>を介して、IoTサービスセッション公開鍵1701を受け取ってもよい。鍵1701は、IoTサービス120からBTLE対応IoTハブ110又はクライアントデバイス611に送信されてもよく、次いでGATTを使用して特性ID<65533>によって識別されるネゴシエーション読取り値バッファに鍵1701を書き込んでもよい。IoTデバイスアプリケーションロジック1902は、次いで、特性ID<65533>によって識別される値バッファから鍵1701を読み取ってもよく、そして、上記のようにそれを処理してもよい(例えば、それを使用して、秘密を生成する、及び秘密を使用して鍵ストリームを生成する等)。
【0122】
鍵1701が20バイト(いくつかの現在の実装例における最大バッファサイズ)よりも大きい場合、それは、20バイトの部分に書き込まれ得る。例えば、最初の20バイトは、BT通信モジュール1903によって特性ID<65533>に書き込まれ、IoTデバイスアプリケーションロジック1902によって読み取られてもよく、そして、IoTデバイスアプリケーションロジックは、次いで、確認応答(acknowledgement)メッセージを特性ID<65532>によって識別されるネゴシエーション書込み値バッファに書き込んでもよい。GATTを使用して、BT通信モジュール1903は、特性ID<65532>からこの確認応答を読み取ってもよく、それに応じて、特性ID<65533>によって識別されるネゴシエーション読取り値バッファに鍵1701の次の20バイトを書き込んでもよい。このようにして、特性ID<65532>及び<65533>によって規定されるネットワークソケット抽象化は、安全な通信チャネルを確立するために使用されるネゴシエーションメッセージを交換するために確立される。
【0123】
一実施形態では、一旦安全な通信チャネルが確立されると、第2のネットワークソケット抽象化が、(IoTデバイス101から暗号化されたデータパケットを送信するために)特性ID<65534>、及び(IoTデバイスによって暗号化されたデータパケットを受信するために)特性ID<65533>を使用して確立される。すなわち、BT通信モジュール1903が、送信するための暗号化されたデータパケット(例えば、
図16Aの暗号化されたメッセージ1603等)を有するとき、それは、特性ID<65533>によって識別されるメッセージ読取り値バッファを使用して、暗号化されたデータパケットの20バイトを一度に書き込み始める。IoTデバイスアプリケーションロジック1902は、次いで、読取り値バッファから暗号化されたデータパケットの20バイトを一度に読み取り、特性ID<65532>によって識別される書込み値バッファを介して、必要に応じてBT通信モジュール1903に確認応答メッセージを送信することになる。
【0124】
一実施形態では、下記のGET、SET、及びUPDATEのコマンドが使用されることにより、2つのBT通信モジュール1901及び1903の間でデータ及びコマンドを交換する。例えば、BT通信モジュール1903は、特性ID<65533>を識別し、そしてSETコマンドを含むパケットを送信することにより、IoTデバイスアプリケーションロジック1902によって次に読み取られてもよい特性ID<65533>によって識別される値フィールド/バッファに書き込んでもよい。IoTデバイス101からデータを検索するために、BT通信モジュール1903は、特性ID<65534>によって識別される値フィールド/バッファに向けられたGETコマンドを送信してもよい。GETコマンドに応じて、BT通信モジュール1901は、特性ID<65534>によって識別される値フィールド/バッファからのデータを含むBT通信モジュール1903にUPDATEパケットを送信してもよい。更に、UPDATEパケットは、IoTデバイス101の特定の属性の変化に応じて、自動的に送信されてもよい。例えば、IoTデバイスが照明システムと関連しており、そしてユーザが証明をオンにする場合、UPDATEパケットが送信されて、照明アプリケーションと関連するオン/オフ属性への変更を反映してもよい。
【0125】
図20は、本発明の一実施形態に従う、GET、SET、及びUPDATEのために使用される例示的なパケットフォーマットを例示する。一実施形態では、これらのパケットは、ネゴシエーションに続いて、メッセージ書込み<65534>、及びメッセージ読取り<65533>チャネルを介して送信される。GETパケット2001において、第1の1バイトのフィールドは、パケットをGETパケットとして識別する値(0×10)を含む。第2の1バイトのフィールドは、現在のGETコマンドを一意的に識別する(すなわち、GETコマンドが関連している現在のトランザクションを識別する)リクエストIDを含む。例えば、サービス又はデバイスから送信されるGETコマンドの各場合に、異なるリクエストIDが割り当てられてもよい。このことは、例えば、カウンタを増加させ、そして、カウンタ値をリクエストIDとして使用することによって実行されてもよい。しかし、本発明の基本原理は、リクエストIDを設定するためのいかなる特定の方法にも限定されない。
【0126】
2バイトの属性IDは、パケットが向けられるアプリケーション特有の属性を識別する。例えば、GETコマンドが
図19に例示するIoTデバイス101に送信されている場合、属性IDが使用されて、リクエストされている特定のアプリケーション特有の値を識別してもよい。上記の例に戻って、GETコマンドは、照明システムの電力状態等のアプリケーション特有の属性IDに向けられてもよく、この属性IDは、照明の電力供給がオン又はオフ(例えば、1=オン、0=オフ)のいずれであるかを識別する値を含む。IoTデバイス101がドアと関連するセキュリティ装置である場合、値フィールドは、ドアの現在の状態(例えば、1=開いている、0=閉じている)を識別してもよい。GETコマンドに応じて、応答が、属性IDによって識別される現在の値を含んで送信されてもよい。
【0127】
図20に例示するSETパケット2002及びUPDATEパケット2003は、また、パケットのタイプ(すなわちSET及びUPDATE)を識別する第1の1バイトのフィールドと、リクエストIDを含む第2の1バイトのフィールドと、アプリケーション定義属性を識別する2バイトの属性IDフィールドと、を含む。更に、SETパケットは、nバイトの値データフィールドに含まれたデータの長さを識別する2バイトの長さ値を含む。値データフィールドは、(例えば、IoTデバイスを電力低下させるために所望のパラメータを設定するため等の)IoTデバイスで実行されるべきコマンド、及び/又はいくつかの態様でIoTデバイスの動作を構成するための構成データを含んでもよい。例えば、IoTデバイス101がファンの速度を制御する場合、値フィールドは、現在のファン速度を反映してもよい。
【0128】
UPDATEパケット2003は、SETコマンドの結果の更新を提供するために送信されてもよい。UPDATEパケット2003は、SETコマンドの結果に関係付けられたデータを含んでもよいnバイトの値データフィールドの長さを識別するために2バイトの長さ値フィールドを含む。それに加えて、1バイトの更新状態フィールドは、更新されている変数の現在の状態を識別してもよい。例えば、SETコマンドが、IoTデバイスによって制御された照明をオフにすることを試みた場合、更新状態フィールドは、照明がうまくオフにされたか否かを示してもよい。
【0129】
図21は、SET及びUPDATEコマンドを含む、IoTサービス120とIoTデバイス101との間のトランザクションの例示的な順序を例示する。IoTハブ等の中間デバイス、及びユーザのモバイル装置は、本発明の基本原理を不明瞭にすることを避けるために示されてない。2101において、SETコマンド2101が、IoTサービスからIoTデバイス101に送信されて、BT通信モジュール1901によって受信され、このBT通信モジュールは、それに応じて、2102において特性IDによって識別されるGATT値バッファを更新する。SETコマンドは、2103において、低電力マイクロコントローラ(MCU)200によって(又は、
図19に示すIoTデバイスアプリケーションロジック1902等の低電力MCUにおいて実行されているプログラムコードによって)値バッファから読み取られる。2104において、MCU 200又はプログラムコードは、SETコマンドに応じて動作を実行する。例えば、SETコマンドは、新たな温度等の新たな構成パラメータを規定する属性IDを含んでもよく、又は(IoTデバイスを「オン」若しくは低電力状態に入らせるための)オン/オフ等の状態値を含んでもよい。したがって、2104において新たな値がIoTデバイスで設定され、2105においてUPDATEコマンドが戻され、そして、2106において実際の値がGATT値フィールドにおいて更新される。場合によっては、実際の値は、所望の値に等しくなる。別の場合では、更新された値が、異なってもよい(すなわち、IoTデバイス101が、あるタイプの値を更新するのに時間を要する場合があるからである)。最終的に、2107において、UPDATEコマンドは、GATT値フィールドからの実際の値を含んでIoTサービス120に送信されて戻る。
【0130】
図22は、本発明の一実施形態に従う、IoTサービスとIoTデバイスとの間に安全な通信チャネルを実装する方法を例示する。この方法は、上記のネットワークアーキテクチャの環境内に実装されてもよいが、いかなる特定のアーキテクチャにも限定されない。
【0131】
2201において、IoTサービスは、楕円曲線デジタル署名アルゴリズム(ECDSA)認証を使用してIoTハブと通信するための暗号化されたチャネルを作成する。2202において、IoTサービスは、セッション秘密を使用してIoTデバイスパケットのデータ/コマンドを暗号化することにより、暗号化されたデバイスパケットを作成する。上記のように、セッション秘密は、IoTデバイス及びIoTサービスによって独立して生成されてもよい。2203において、IoTサービスは、暗号化されたデバイスパケットを暗号化されたチャネルを介してIoTハブに送信する。2204において、復号することなく、IoTハブは、暗号化されたデバイスパケットをIoTデバイスに渡す。2205において、IoTデバイスは、セッション秘密を使用して、暗号化されたデバイスパケットを復号する。上記のように、一実施形態では、このことは、秘密及びカウンタ値(暗号化されたデバイスパケットによって提供される)を使用して鍵ストリームを生成し、次いで、鍵ストリームを使用してパケットを復号することによって達成されてもよい。2206において、IoTデバイスは、次いで、デバイスパケット内に含まれるデータ及び/又はコマンドを抽出して処理する。
【0132】
したがって、上記の技術を使用して、標準的なペアリング技術を使用してBTデバイスを正式にペアリングすることなく、双方向の安全なネットワークソケット抽象化が、2つのBT対応デバイスの間に確立されてもよい。これらの技術は、IoTサービス120と通信するIoTデバイス101に関して上記されるが、本発明の基本原理は、任意の2つのBT対応デバイスの間でネゴシエートして安全な通信チャネルを確立するように実装されてもよい。
【0133】
図23A~
図23Cは、本発明の一実施形態に従う、デバイスをペアリングするための詳細な方法を例示する。この方法は、上記のシステムアーキテクチャの環境内に実装されてもよいが、いかなる特定のシステムアーキテクチャにも限定されない。
【0134】
2301において、IoTサービスは、IoTサービスのシリアル番号及び公開鍵を含むパケットを作成する。2302において、IoTサービスは、ファクトリ秘密鍵を使用してパケットに署名する。2303において、IoTサービスは、暗号化されたチャネルを介してIoTハブにパケットを送信し、そして、2304において、IoTハブは、暗号化されていないチャネルを介してIoTデバイスにパケットを転送する。2305において、IoTデバイスは、パケットの署名を検証し、そして、2306において、IoTデバイスは、IoTデバイスのシリアル番号及び公開鍵を含むパケットを生成する。2307において、IoTデバイスは、ファクトリ秘密鍵を使用してパケットに署名し、そして、2308において、IoTデバイスは、暗号化されていないチャネルを介してIoTハブにパケットを送信する。
【0135】
2309において、IoTハブは、暗号化されたチャネルを介してIoTサービスにパケットを転送し、そして、2310において、IoTサービスは、パケットの署名を検証する。2311において、IoTサービスは、セッション鍵ペアを生成し、そして、2312において、IoTサービスは、セッション公開鍵を含むパケットを生成する。IoTサービスは、次いで、2313において、IoTサービス秘密鍵によってパケットに署名し、そして、2314において、IoTサービスは、暗号化されたチャネルを介してIoTハブにパケットを送信する。
【0136】
図23Bを参照すると、IoTハブは、2315において、暗号化されていないチャネルを介してIoTデバイスにパケットを転送し、そして、2316において、IoTデバイスは、パケットの署名を検証する。2317において、IoTデバイスは、(例えば、上記の技術を使用して)セッション鍵ペアを生成し、そして、2318において、IoTデバイスパケットは、IoTデバイスセッション公開鍵を含んで生成される。2319において、IoTデバイスは、IoTデバイスパケットをIoTデバイス秘密鍵によって署名する。2320において、IoTデバイスは、暗号化されていないチャネルを介してIoTハブにパケットを送信し、そして、2321において、IoTハブは、暗号化されたチャネルを介してIoTサービスにパケットを転送する。
【0137】
2322において、IoTサービスは、(例えば、IoTデバイス公開鍵を使用して)パケットの署名を検証し、そして、2323において、IoTサービスは、IoTサービス秘密鍵及びIoTデバイス公開鍵を使用してセッション秘密を生成する(これは詳細に上記されている)。2324において、IoTデバイスは、IoTデバイス秘密鍵及びIoTサービス公開鍵を使用してセッション秘密を生成し(これも上記されている)、そして、2325において、IoTデバイスは、乱数を発生させて、セッション秘密を使用してそれを暗号化する。2326において、IoTサービスは、暗号化されたチャネルを介してIoTハブに暗号化されたパケットを送信する。2327において、IoTハブは、暗号化されていないチャネルを介してIoTデバイスに暗号化されたパケットを転送する。2328において、IoTデバイスは、セッション秘密を使用してパケットを復号する。
【0138】
図23Cを参照すると、IoTデバイスは、2329において、セッション秘密を使用してパケットを再暗号化し、そして、2330において、IoTデバイスは、暗号化されていないチャネルを介してIoTハブに暗号化されたパケットを送信する。2331において、IoTハブは、暗号化されたチャネルを介してIoTサービスに暗号化されたパケットを転送する。IoTサービスは、2332において、セッション秘密を使用してパケットを復号する。2333において、IoTサービスは、乱数が、それが送信した乱数と整合することを検証する。IoTサービスは、次いで、2334において、ペアリングが完了したことを示すパケットを送信し、そして、2335において、全ての後続のメッセージが、セッション秘密を使用して暗号化される。
【0139】
本発明の実施形態は、上で説明した様々な工程を含み得る。本工程は、汎用又は特殊目的のプロセッサに本工程を実行させるために使用され得る、機械実行可能な命令において具現化することができる。代替的に、これらの工程は、工程を実行するためのハードワイヤードロジックを含む特定のハードウェア構成要素によって、又はプログラミングされたコンピュータ構成要素及びカスタムハードウェア構成要素の任意の組み合わせによって、実行することができる。
【0140】
本明細書に記載される場合に、命令は、ある特定の動作を行うように構成されるか、又は所定の機能若しくはソフトウェア命令が非一時的コンピュータ可読媒体中に具現化されたメモリ内に記憶されている、特定用途向け集積回路(ASIC)などの、ハードウェアの特定の構成を指し得る。したがって、図面に示される技術は、1つ以上の電子デバイス(例えば、エンドステーション、ネットワーク要素など)上に記憶及び実行されるコード及びデータを使用して実装され得る。そのような電子デバイスは、非一時的コンピュータ機械可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、相変化メモリ)、並びに一時的なコンピュータ機械可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号などの電気的、光学的、音響的又は他の形態の伝搬信号)などのコンピュータ機械可読記憶媒体を使用して、コード及びデータを記憶及び(内部で及び/又はネットワークを介して他の電子デバイスと)通信する。加えて、そのような電子デバイスは、典型的に、1つ以上の記憶デバイス(非一時的機械可読記憶媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、並びにネットワーク接続などの、1つ以上の他の構成要素に連結された1つ以上のプロセッサのセットを含む。プロセッサの組と他の構成要素との連結は、典型的には、1つ以上のバス及びブリッジ(バスコントローラとも呼ばれる)を通じて行われる。記憶デバイスとネットワークトラフィックを運ぶ信号のそれぞれは、1つ以上の機械可読記憶媒体及び機械可読通信媒体を表す。したがって、所与の電子デバイスの記憶デバイスは、その電子デバイスの1つ以上のプロセッサのセット上で実行するためのコード及び/又はデータを、典型的に記憶する。当然のことながら、本発明の実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの異なる組み合わせを使用して実装されてもよい。
【0141】
この詳細な説明全体を通じて、説明を目的として、本発明の完全な理解を提供するために、多数の特定の詳細を記載した。しかしながら、本発明は、これらの具体的な詳細の一部がなくても実施され得ることは、当業者にとって明らかであろう。ある特定の例では、既知の構造及び機能は、本発明の主題を不明瞭にすることを回避するために、詳述しなかった。したがって、本発明の範囲及び趣旨は、以下の特許請求の範囲の観点から判断されるべきである。