(57)【要約】  ＩｏＴデバイスとＩｏＴサービスとの間の安全な通信のための装置及び方法が説明されている。例えば、システムの一実施形態は、ＩｏＴハブ又はモバイルユーザデバイスを通してＩｏＴデバイスとの通信を確立するためのモノのインターネット（ＩｏＴ）サービスと、サービス公開鍵及びサービス秘密鍵を生成するための鍵生成ロジックを備える、ＩｏＴサービス上の第１の暗号化エンジンと、デバイス公開鍵及びデバイス秘密鍵を生成するための鍵生成ロジックを備える、ＩｏＴデバイス上の第２の暗号化エンジンと、を備え、第１の暗号化エンジンは、第２の暗号化エンジンにサービス公開鍵を送信するためのものであって、第２の暗号化エンジンは、第１の暗号化エンジンにデバイス公開鍵を送信するためのものであり、第１の暗号化エンジンは、デバイス公開鍵及びサービス秘密鍵を使用して秘密を生成するためのものであり、第２の暗号化エンジンは、サービス公開鍵及びデバイス秘密鍵を使用して同一の秘密を生成するためのものであり、一旦秘密が生成されると、第１の暗号化エンジン及び第２の暗号化エンジンは、秘密を使用して又は秘密から派生したデータ構造を使用して、第１の暗号化エンジンと第２の暗号化エンジンとの間で送信されるデータパケットを暗号化し及び復号する。
2018525891.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
モノのインターネット（ＩｏＴ）ハブ又はモバイルユーザデバイスを通してＩｏＴデバイスとの通信を確立するためのＩｏＴサービスと、
サービス公開鍵及びサービス秘密鍵を生成するための鍵生成ロジックを備える、前記ＩｏＴサービス上の第１の暗号化エンジンと、
デバイス公開鍵及びデバイス秘密鍵を生成するための鍵生成ロジックを備える、前記ＩｏＴデバイス上の第２の暗号化エンジンと、を備え、
前記第１の暗号化エンジンは、前記第２の暗号化エンジンに前記サービス公開鍵を送信するためのものであって、前記第２の暗号化エンジンは、前記第１の暗号化エンジンに前記デバイス公開鍵を送信するためのものであり、
前記第１の暗号化エンジンは、前記デバイス公開鍵及び前記サービス秘密鍵を使用して秘密を生成するためのものであり、
前記第２の暗号化エンジンは、前記サービス公開鍵及び前記デバイス秘密鍵を使用して同一の前記秘密を生成するためのものであり、
一旦前記秘密が生成されると、前記第１の暗号化エンジン及び前記第２の暗号化エンジンは、前記秘密を使用して又は前記秘密から派生したデータ構造を使用して、前記第１の暗号化エンジンと前記第２の暗号化エンジンとの間で送信されるデータパケットを暗号化及び復号する、システム。
【請求項２】
前記鍵生成ロジックは、ハードウェアセキュリティモジュール（ＨＳＭ）を備える、請求項１に記載のシステム。
【請求項３】
前記秘密から派生したデータ構造は、前記第１の暗号化エンジンによって生成された第１の鍵ストリームと、前記第２の暗号化エンジンによって生成された第２の鍵ストリームと、を備える、請求項１に記載のシステム。
【請求項４】
前記第１の暗号化エンジンと関連する第１のカウンタと、前記第２の暗号化エンジンと関連する第２のカウンタと、を更に備え、前記第１の暗号化エンジンは、前記第２の暗号化エンジンに送信される各データパケットに応じる前記第１のカウンタを増加させ、前記第２の暗号化エンジンは、前記第１の暗号化エンジンに送信される各データパケットに応じる前記第２のカウンタを増加させる、請求項３に記載のシステム。
【請求項５】
前記第１の暗号化エンジンは、前記第１のカウンタの現在のカウンタ値及び前記秘密を使用して前記第１の鍵ストリームを生成し、前記第２の暗号化エンジンは、前記第２のカウンタの現在のカウンタ値及び前記秘密を使用して前記第２の鍵ストリームを生成する、請求項４に記載のシステム。
【請求項６】
前記第１の暗号化エンジンは、前記第１のカウンタ値及び前記秘密を使用して前記第１の鍵ストリームを生成するための楕円曲線方法（ＥＣＭ）モジュールを備え、前記第２の暗号化エンジンは、前記第１のカウンタ値及び前記第１の秘密を使用して前記第２の鍵ストリームを生成するためのＥＣＭモジュールを備える、請求項５に記載のシステム。
【請求項７】
前記第１の暗号化エンジンは、前記第１の鍵ストリームを使用して第１のデータパケットを暗号化することにより、第１の暗号化されたデータパケットを生成し、前記第１の暗号化されたデータパケットを前記第１のカウンタの現在のカウンタ値と共に前記第２の暗号化エンジンに送信する、請求項５に記載のシステム。
【請求項８】
前記第２の暗号化エンジンは、前記第１のカウンタの現在のカウンタ値及び前記秘密を使用して前記第１の鍵ストリームを生成し、前記第１の鍵ストリームを使用して前記暗号化されたデータパケットを復号する、請求項７に記載のシステム。
【請求項９】
前記第１のデータパケットを暗号化することは、前記第１の暗号化されたデータパケットを生成するために前記第１の鍵ストリームを前記第１のデータパケットとＸＯＲ演算することを備える、請求項７に記載のシステム。
【請求項１０】
前記ＩｏＴデバイスは、前記ＩｏＴデバイスを前記ＩｏＴハブ又は前記モバイルユーザ装置に通信可能に結合するためのＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＴＬＥ）通信インターフェースを備え、前記ＩｏＴハブ又は前記モバイルユーザデバイスは、前記インターネットを介して前記ＩｏＴサービスに通信可能に結合される、請求項８に記載のシステム。
【請求項１１】
方法であって、
モノのインターネット（ＩｏＴ）サービスとＩｏＴデバイスとの間の通信をＩｏＴハブ又はモバイルユーザデバイスを通して確立することと、
サービス公開鍵及びサービス秘密鍵を前記ＩｏＴサービス上の第１の暗号化エンジンの鍵生成ロジックによって生成することと、
デバイス公開鍵及びデバイス秘密鍵を前記ＩｏＴデバイス上の第２の暗号化エンジンの鍵生成ロジックによって生成することと、
前記サービス公開鍵を前記第１の暗号化エンジンから前記第２の暗号化エンジンに送信し、前記デバイス公開鍵を前記第２の暗号化エンジンから前記第１の暗号化エンジンに送信することと、
前記デバイス公開鍵及び前記サービス秘密鍵を使用して秘密を生成することと、
前記サービス公開鍵及び前記デバイス秘密鍵を使用して同一の前記秘密を生成することと、
前記秘密を使用して又は前記秘密から派生したデータ構造を使用して、前記第１の暗号化エンジンと前記第２の暗号化エンジンとの間で送信されるデータパケットを暗号化及び復号することと、
を含む、方法。
【請求項１２】
前記鍵生成ロジックは、ハードウェアセキュリティモジュール（ＨＳＭ）を備える、請求項１１に記載の方法。
【請求項１３】
前記秘密から派生した前記データ構造は、前記第１の暗号化エンジンによって生成された第１の鍵ストリームと、前記第２の暗号化エンジンによって生成された第２の鍵ストリームと、を備える、請求項１１に記載の方法。
【請求項１４】
第１のカウンタは、前記第１の暗号化エンジンと関連し、第２のカウンタは、前記第２の暗号化エンジンと関連し、前記第１の暗号化エンジンは、前記第２の暗号化エンジンに送信される各データパケットに応じる前記第１のカウンタを増加させ、前記第２の暗号化エンジンは、前記第１の暗号化エンジンに送信される各データパケットに応じる前記第２のカウンタを増加させる、請求項１３に記載の方法。
【請求項１５】
前記第１の暗号化エンジンは、前記第１のカウンタの現在のカウンタ値及び前記秘密を使用して前記第１の鍵ストリームを生成し、前記第２の暗号化エンジンは、前記第２のカウンタの現在のカウンタ値及び前記秘密を使用して前記第２の鍵ストリームを生成する、請求項１４に記載の方法。
【請求項１６】
前記第１の暗号化エンジンは、前記第１のカウンタ値及び前記秘密を使用して前記第１の鍵ストリームを生成するための楕円曲線方法（ＥＣＭ）モジュールを備え、前記第２の暗号化エンジンは、前記第１のカウンタ値及び前記第１の秘密を使用して前記第２の鍵ストリームを生成するためのＥＣＭモジュールを備える、請求項１５に記載の方法。
【請求項１７】
前記第１の暗号化エンジンは、前記第１の鍵ストリームを使用して第１のデータパケットを暗号化することにより、第１の暗号化されたデータパケットを生成し、
前記第１の暗号化されたデータパケットを前記第１のカウンタの現在のカウンタ値と共に前記第２の暗号化エンジンに送信する、請求項１５に記載の方法。
【請求項１８】
前記第２の暗号化エンジンは、前記第１のカウンタの現在のカウンタ値及び前記秘密を使用して前記第１の鍵ストリームを生成し、前記第１の鍵ストリームを使用して前記暗号化されたデータパケットを復号する、請求項１７に記載の方法。
【請求項１９】
前記第１のデータパケットを暗号化することは、前記第１の暗号化されたデータパケットを生成するために、前記第１のデータパケットを前記第１の鍵ストリームとＸＯＲ演算することを含む、請求項１７に記載の方法。
【請求項２０】
前記ＩｏＴデバイスは、前記ＩｏＴハブ又は前記モバイルユーザデバイスに前記ＩｏＴデバイスを通信可能に結合するためのＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＴＬＥ）通信インターフェースを備え、前記ＩｏＴハブ又は前記モバイルユーザデバイスは、前記インターネットを介して前記ＩｏＴサービスに通信可能に結合される、請求項１８に記載の方法。
【請求項２１】
装置であって、
第２のローカル無線通信モジュールとのローカル無線通信チャネルを確立するための第１のローカル無線通信モジュールと、
前記第１のローカル無線通信モジュールによって管理されるデータ構造であって、前記データ構造は、特性のセットを備え、各特性は、特性ＩＤによって識別され、前記特性と関連するデータを含む、前記特性ＩＤと関連する値バッファを有する、データ構造と、を備え、
前記第１の無線通信モジュールは、前記第２のローカル無線通信モジュールによって送信されたデータパケットを受信するための第１の特性、及び発信データパケットを前記第２のローカル無線通信モジュールに送信するための第２の特性を規定することによって、前記データ構造を使用して第１のネットワークソケットを形成するためのものであり、
着信データパケットは、前記第１の特性と関連する第１の値バッファに一時的にバッファされ得、前記発信パケットは、前記第２の特性と関連する第２の値バッファに一時的にバッファされ得る、装置。
【請求項２２】
前記データ構造は、テーブルを備え、前記テーブルは、特性ＩＤによって索引が付けられ、前記第１の特性と関連する前記第１の値バッファ、及び前記第２の特性と関連する前記第２の値バッファを含む各値バッファを識別するための値フィールドを備える、請求項２１に記載の装置。
【請求項２３】
前記第１及び第２の値バッファは、それぞれＮビットのサイズを有する、請求項２１に記載の装置。
【請求項２４】
Ｎ＝２０である、請求項２３に記載の装置。
【請求項２５】
前記無線通信モジュールは、Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＴＬＥ）通信モジュールを備え、前記データ構造は、Ｇｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅ（ＧＡＴＴ）データ構造を備える、請求項２１に記載の装置。
【請求項２６】
前記第１のデータパケットを前記第２の特性と関連する前記第２の値バッファに１度にＮビットだけ書き込むことによって、第１のデータパケットを前記第２の無線通信モジュールに送信するためのアプリケーションロジックを更に備える、請求項２３に記載の装置。
【請求項２７】
前記第２の無線通信モジュールは、前記第２の特性と関連する前記第２の値バッファから前記第１のデータパケットを１度にＮビットだけ読み取るためのものである、請求項２６に記載の装置。
【請求項２８】
前記第１のデータパケットを読み取るために、前記第２の無線通信モジュールは、前記第２の特性の前記特性ＩＤを含む前記第１の無線通信モジュールに第１のコマンドを送信するためのものである、請求項２７に記載の装置。
【請求項２９】
前記アプリケーションロジックは、前記第１の値バッファから前記第２のデータパケットを１度にＮビットだけ読み取ることによって、前記第２の無線通信モジュールから第２のデータパケットを受信するためのものである、請求項２６に記載の装置。
【請求項３０】
前記第２のデータパケットを前記第１の値バッファに書き込むために、前記第２の無線通信モジュールは、前記第１の特性の前記特性ＩＤを含む前記第１の無線通信モジュールに第１のコマンドを送信するためのものである、請求項２９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータシステムの分野に関する。より具体的には、本発明は、ＩｏＴシステムに安全な通信チャネルを確立するための装置及び方法に関する。
【背景技術】
【０００２】
「モノのインターネット」は、インターネットインフラストラクチャ内に、一意的に識別可能に組み込まれたデバイスの相互接続を指す。最終的に、ＩｏＴは、事実上あらゆるタイプの物理的なモノが、それ自体若しくはその周囲についての情報を提供し得、及び／又はインターネット上でクライアントデバイスを介して遠隔制御され得る、広範囲の新しいタイプのアプリケーションをもたらすことが期待される。
【０００３】
接続性、電力、及び規格化の欠如に関連する問題のために、ＩｏＴ開発及び採用は遅れている。例えば、ＩｏＴ開発及び採用に対する１つの障害は、開発者が新しいＩｏＴデバイス及びサービスを設計して提供することを可能にする標準プラットフォームが存在しないことである。ＩｏＴ市場に参入するためには、開発者は、所望のＩｏＴ実装に対応するために必要なネットワークプロトコル及びインフラストラクチャ、ハードウェア、ソフトウェア、並びにサービスを含む、ＩｏＴプラットフォーム全体を一から設計する必要がある。その結果、ＩｏＴデバイスの各プロバイダは、ＩｏＴデバイスの設計と接続のために専有の技術を使用しており、エンドユーザにとって複数のタイプのＩｏＴデバイスの採用が厄介となっている。ＩｏＴの採用への別の障害は、ＩｏＴデバイスの接続及び給電に関連する困難である。例えば、冷蔵庫、ガレージドアオープナー、環境センサ、家庭用セキュリティセンサ／コントローラなどの接続機器は、接続された各ＩｏＴ機器に給電するための電源を必要とし、そのような電源はしばしば便利な位置に設けられていない。
【０００４】
存在する別の問題は、Ｂｌｕｅｔｏｏｔｈ（登録商標）  ＬＥなどのＩｏＴデバイスを相互接続するために使用される無線技術が、概して、近距離技術であるということである。したがって、ＩｏＴ実装のためのデータ収集ハブがＩｏＴデバイスの範囲外にある場合、そのＩｏＴデバイスは、ＩｏＴハブにデータを送信することができない（逆もまた同様）。その結果として、ＩｏＴデバイスが、範囲外にあるＩｏＴハブ（又は他のＩｏＴデバイス）にデータを提供することを可能にする技術が必要とされる。
【０００５】
本発明のより良好な理解は、以下の図面と併せた以下の詳細な説明から得ることができる。
【図面の簡単な説明】
【０００６】
【図１Ａ】ＩｏＴシステムアーキテクチャの異なる実施形態を例示する。
【図１Ｂ】ＩｏＴシステムアーキテクチャの異なる実施形態を例示する。
【図２】本発明の一実施形態によるＩｏＴデバイスを例示する。
【図３】本発明の一実施形態によるＩｏＴハブを例示する。
【図４Ａ】ＩｏＴデバイスからのデータを制御及び収集し、通知を生成するための本発明の実施形態を例示する。
【図４Ｂ】ＩｏＴデバイスからのデータを制御及び収集し、通知を生成するための本発明の実施形態を例示する。
【図５】ＩｏＴデバイスからのデータを収集し、ＩｏＴハブ及び／又はＩｏＴサービスからの通知を生成するための本発明の実施形態を例示する。
【図６】中間モバイルデバイスが固定ＩｏＴデバイスからデータを収集し、データをＩｏＴハブに提供する、システムの一実施形態を例示する。
【図７】本発明の一実施形態で実装される中間接続ロジックを例示する。
【図８】本発明の一実施形態に従う方法を例示する。
【図９Ａ】プログラムコード及びデータ更新がＩｏＴデバイスに提供される一実施形態を例示する。
【図９Ｂ】プログラムコード及びデータ更新がＩｏＴデバイスに提供される方法の一実施形態を例示する。
【図１０】セキュリティアーキテクチャの一実施形態の俯瞰的な図を例示する。
【図１１】ＩｏＴデバイス上に鍵を記憶するために加入者識別モジュール（ＳＩＭ）が使用されるアーキテクチャの一実施形態を例示する。
【図１２Ａ】バーコード又はＱＲコード（登録商標）を使用してＩｏＴデバイスが登録される一実施形態を示す。
【図１２Ｂ】バーコード又はＱＲコードを使用してペアリングが実行される一実施形態を例示する。
【図１３】ＩｏＴハブを使用してＳＩＭをプログラミングするための方法の一実施形態を例示する。
【図１４】ＩｏＴデバイスをＩｏＴハブ及びＩｏＴサービスに登録するための方法の一実施形態を例示する。
【図１５】ＩｏＴデバイスに送信されるべきデータを暗号化するための方法の一実施形態を例示する。
【図１６Ａ】ＩｏＴサービスとＩｏＴデバイスとの間でデータを暗号化するための、本発明の異なる実施形態を例示する。
【図１６Ｂ】ＩｏＴサービスとＩｏＴデバイスとの間でデータを暗号化するための、本発明の異なる実施形態を例示する。
【図１７】安全な鍵交換を実行し、共通の秘密を生成し、そして秘密を使用して鍵ストリームを生成するための本発明の実施形態を例示する。
【図１８】本発明の一実施形態に従うパケット構造を例示する。
【図１９】正式にＩｏＴデバイスとペアリングすることなく、ＩｏＴデバイスに書き込む／それから読み取るための、一実施形態で使用される技術を例示する。
【図２０】本発明の一実施形態で使用されるコマンドパケットの例示的なセットを例示する。
【図２１】コマンドパケットを使用するトランザクションの例示的な順序を例示する。
【図２２】本発明の一実施形態に従う方法を例示する。
【図２３Ａ】本発明の一実施形態に従う安全なペアリングのための方法を例示する。
【図２３Ｂ】本発明の一実施形態に従う安全なペアリングのための方法を例示する。
【図２３Ｃ】本発明の一実施形態に従う安全なペアリングのための方法を例示する。
【発明を実施するための形態】
【０００７】
以下の説明では、説明を目的として、以下に記載される本発明の実施形態の完全な理解を提供するために、多数の特定の詳細が示される。しかしながら、本発明の実施形態がこれらの特定の詳細のうちのいくつかを用いずに実施され得ることは、当業者には明らかである。他の例では、本発明の実施形態の根本的な原理を不明瞭にすることを避けるために、周知の構造及びデバイスをブロック図の形態で示す。
【０００８】
本発明の一実施形態は、新しいＩｏＴデバイス及びアプリケーションを設計及び構築するために開発者によって利用され得るモノのインターネット（ＩｏＴ）プラットフォームを含む。具体的には、一実施形態は、所定のネットワーキングプロトコルスタックを含むＩｏＴデバイス、及びＩｏＴデバイスがインターネットに連結されるＩｏＴハブ用の基本ハードウェア／ソフトウェアプラットフォームを含む。加えて、一実施形態は、ＩｏＴサービスを含み、これを通じてＩｏＴハブ及び接続されたＩｏＴデバイスが、以下に説明するようにアクセスされ、管理され得る。加えて、ＩｏＴプラットフォームの一実施形態は、ＩｏＴサービス、ハブ、及び接続されたデバイスにアクセスし、それらを構成する、ＩｏＴアプリケーション又はウェブアプリケーション（例えば、クライアントデバイス上で実行される）を含む。既存のオンライン小売業者及び他のウェブサイトオペレータは、本明細書に記載されたＩｏＴプラットフォームを利用して、既存のユーザベースに独自のＩｏＴ機能を容易に提供することができる。
【０００９】
図１Ａは、本発明の実施形態を実装することができるアーキテクチャプラットフォームの概要を例示する。具体的には、例示した実施形態は、それ自体インターネット２２０を介してＩｏＴサービス１２０に通信可能に連結されている中央ＩｏＴハブ１１０に、ローカル通信チャネル１３０を介して通信可能に連結された複数のＩｏＴデバイス１０１〜１０５を含む。ＩｏＴデバイス１０１〜１０５のそれぞれは、ローカル通信チャネル１３０のそれぞれを有効にするために、ＩｏＴハブ１１０と最初にペアリングすることができる（例えば、後述するペアリング技術を使用して）。一実施形態では、ＩｏＴサービス１２０は、各ユーザのＩｏＴデバイスから収集されたユーザアカウント情報及びデータを維持するためのエンドユーザデータベース１２２を含む。例えば、ＩｏＴデバイスがセンサ（例えば、温度センサ、加速度計、熱センサ、動作検出器など）を含む場合、データベース１２２は、ＩｏＴデバイス１０１〜１０５により収集されるデータを記憶するように継続的に更新され得る。次いで、データベース１２２内に記憶されたデータは、ユーザデバイス１３５上にインストールされたＩｏＴアプリケーション又はブラウザを介して（又はデスクトップ若しくは他のクライアントコンピュータシステムを介して）エンドユーザに、かつウェブクライアント（例えば、ＩｏＴサービス１２０に加入しているウェブサイト１３０など）に、アクセス可能にされてもよい。
【００１０】
ＩｏＴデバイス１０１〜１０５には、それ自体及びその周辺に関する情報を収集し、収集された情報を、ＩｏＴハブ１１０を介してＩｏＴサービス１２０、ユーザデバイス１３５、及び／又は外部ウェブサイト１３０に提供するための様々なタイプのセンサが備わっていてもよい。ＩｏＴデバイス１０１〜１０５のうちのいくつかは、ＩｏＴハブ１１０を介して送信される制御コマンドに応答して、指定された機能を実行することができる。ＩｏＴデバイス１０１〜１０５によって収集される情報の様々な具体例及び制御コマンドが以下に提供される。以下に説明する一実施形態では、ＩｏＴデバイス１０１は、ユーザ選択を記録し、ユーザ選択をＩｏＴサービス１２０及び／又はウェブサイトに送信するように設計されたユーザ入力デバイスである。
【００１１】
一実施形態では、ＩｏＴハブ１１０は、４Ｇ（例えば、モバイルＷｉＭＡＸ、ＬＴＥ）又は５Ｇセルラーデータサービスなどのセルラーサービス１１５を介してインターネット２２０への接続を確立するセルラー無線を含む。代替的に、又は加えて、ＩｏＴハブ１１０は、ＷｉＦｉアクセスポイント又はルータ１１６を介してＷｉＦｉ接続を確立するためのＷｉＦｉ無線を含むことができ、これは、ＩｏＴハブ１１０をインターネットに（例えば、エンドユーザにインターネットサービスを提供するインターネットサービスプロバイダを介して）連結する。当然のことながら、本発明の基本的な原理は、特定のタイプの通信チャネル又はプロトコルに限定されないことに留意すべきである。
【００１２】
一実施形態では、ＩｏＴデバイス１０１〜１０５は、電池電力で長期間（例えば、数年）動作することができる超低電力デバイスである。電力を節約するために、ローカル通信チャネル１３０は、Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＬＥ）などの低電力無線通信技術を使用して実装することができる。この実施形態では、ＩｏＴデバイス１０１〜１０５及びＩｏＴハブ１１０のそれぞれには、Ｂｌｕｅｔｏｏｔｈ  ＬＥ無線及びプロトコルスタックが備わっている。
【００１３】
上述したように、一実施形態では、ＩｏＴプラットフォームは、ユーザが、接続されたＩｏＴデバイス１０１〜１０５、ＩｏＴハブ１１０、及び／又はＩｏＴサービス１２０にアクセスし、それらを構成することを可能にする、ユーザデバイス１３５上で実行されるＩｏＴアプリケーション又はウェブアプリケーションを含む。一実施形態では、アプリケーション又はウェブアプリケーションは、そのユーザベースにＩｏＴ機能性を提供するように、ウェブサイト１３０のオペレータによって設計されてもよい。例示したように、ウェブサイトは、各ユーザに関連するアカウント記録を含むユーザデータベース１３１を維持することができる。
【００１４】
図１Ｂは、複数のＩｏＴハブ１１０〜１１１、１９０に対する追加の接続オプションを例示する。この実施形態では、単一のユーザが、単一のユーザ構内１８０（例えば、ユーザーの自宅又はビジネス）にオンサイトでインストールされた複数のハブ１１０〜１１１を有することができる。これは、例えば、ＩｏＴデバイス１０１〜１０５の全てを接続するのに必要な無線範囲を拡張するために行われ得る。示したように、ユーザが複数のハブ１１０、１１１を有する場合、それらは、ローカル通信チャネル（例えば、ＷｉＦｉ、イーサネット（登録商標）、電力線ネットワーキングなど）を介して接続されてもよい。一実施形態では、ハブ１１０〜１１１のそれぞれは、セルラー１１５又はＷｉＦｉ  １１６接続（図１Ｂには明示されていない）を介してＩｏＴサービス１２０への直接接続を確立することができる。代替的に、又は加えて、ＩｏＴハブ１１０などのＩｏＴハブのうちの１つは、「マスター」ハブとして機能することができ、これは、ＩｏＴハブ１１１などのユーザ構内１８０上の他の全てのＩｏＴハブに接続性及び／又はローカルサービスを提供する（ＩｏＴハブ１１０とＩｏＴハブ１１１を接続する点線で示されるように）。例えば、マスターＩｏＴハブ１１０は、ＩｏＴサービス１２０への直接接続を確立する唯一のＩｏＴハブであってもよい。一実施形態では、「マスター」ＩｏＴハブ１１０のみに、ＩｏＴサービス１２０への接続を確立するためのセルラー通信インターフェースが備わっている。このように、ＩｏＴサービス１２０と他のＩｏＴハブ１１１との間の全ての通信は、マスターＩｏＴハブ１１０を通って流れる。この役割において、マスターＩｏＴハブ１１０には、他のＩｏＴハブ１１１とＩｏＴサービス１２０との間で交換されるデータ（例えば、可能であれば、いくつかのデータ要求にローカルでサービスする）に対してフィルタリング動作を実行するための追加のプログラムコードが提供され得る。
【００１５】
ＩｏＴハブ１１０〜１１１がどのように接続されていようとも、一実施形態では、ＩｏＴサービス１２０は、ハブをユーザと論理的に関連付け、接続されたＩｏＴデバイス１０１〜１０５の全てを、インストールされたアプリケーション（及び／又はブラウザベースのインターフェース）を有するユーザデバイス１３５を介してアクセス可能な、単一の包括的なユーザインターフェースの下に結合する。
【００１６】
この実施形態では、マスターＩｏＴハブ１１０及び１つ以上のスレーブＩｏＴハブ１１１は、ＷｉＦｉネットワーク１１６、イーサネットネットワーク、及び／又は電力線通信（ＰＬＣ）ネットワーキング（例えば、ネットワークの全部若しくは一部がユーザの電力線を介して実行される）、ローカルネットワークを介して接続してもよい。加えて、ＩｏＴハブ１１０〜１１１に対して、ＩｏＴデバイス１０１〜１０５のそれぞれは、いくつか例を挙げると、ＷｉＦｉ、イーサネット、ＰＬＣ、又はＢｌｕｅｔｏｏｔｈ  ＬＥなどの、任意のタイプのローカルネットワークチャネルを使用して、ＩｏＴハブ１１０〜１１１と相互接続してもよい。
【００１７】
図１Ｂはまた、第２のユーザ構内１８１にインストールされたＩｏＴハブ１９０を示す。実質的に無制限の数のそのようなＩｏＴハブ１９０は、世界中のユーザ構内のＩｏＴデバイス１９１〜１９２からデータを収集するようにインストールされ、構成され得る。一実施形態では、２つのユーザ構内１８０〜１８１は、同じユーザに対して構成されてもよい。例えば、一方のユーザ構内１８０がユーザの基本的なホームであり、他方のユーザ構内１８１がユーザのバケーションホームであってもよい。そのような場合、ＩｏＴサービス１２０は、ＩｏＴハブ１１０〜１１１、１９０をユーザと論理的に関連付け、取り付けられた全てのＩｏＴデバイス１０１〜１０５、１９１〜１９２を、単一の包括的なユーザインターフェースの下に結合し、インストールされたアプリケーション（及び／又はブラウザベースのインターフェース）を有するユーザデバイス１３５を介してアクセス可能にする。
【００１８】
図２に例示するように、ＩｏＴデバイス１０１の例示的な実施形態は、プログラムコード及びデータ２０１〜２０３を記憶するメモリ２１０と、プログラムコードを実行しデータを処理する低電力マイクロコントローラ２００とを含む。メモリ２１０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などの揮発性メモリであってもよいし、フラッシュメモリなどの不揮発性メモリであってもよい。一実施形態では、不揮発性メモリを永続記憶に使用し、揮発性メモリをプログラムコードの実行及びデータの実行に使用することができる。更に、メモリ２１０は、低電力マイクロコントローラ２００内に統合されてもよく、バス又は通信ファブリックを介して低電力マイクロコントローラ２００に連結されてもよい。本発明の根本的な原理は、メモリ２１０のいかなる特定の実装にも限定されない。
【００１９】
例示したように、プログラムコードは、ＩｏＴデバイス１０１のアプリケーション開発者によって利用され得る所定のビルディングブロックのセットを含む、ＩｏＴデバイス２０１及びライブラリコード２０２によって実行される特定用途向けの機能セットを定義するアプリケーションプログラムコード２０３を含むことができる。一実施形態では、ライブラリコード２０２は、各ＩｏＴデバイス１０１とＩｏＴハブ１１０との間の通信を可能にするための通信プロトコルスタック２０１などのＩｏＴデバイスを実装するために必要とされる基本機能のセットを含む。上述したように、一実施形態では、通信プロトコルスタック２０１は、Ｂｌｕｅｔｏｏｔｈ  ＬＥプロトコルスタックを含む。この実施形態では、Ｂｌｕｅｔｏｏｔｈ  ＬＥ無線機及びアンテナ２０７は、低電力マイクロコントローラ２００内に統合されてもよい。しかしながら、本発明の基本原理は、いかなる特定の通信プロトコルにも限定されない。
【００２０】
図２に示す特定の実施形態はまた、ユーザ入力を受信し、ユーザ入力を低電力マイクロコントローラに提供する複数の入力デバイス又はセンサ２１０を含み、低電力マイクロコントローラは、アプリケーションコード２０３及びライブラリコード２０２にしたがってユーザ入力を処理する。一実施形態では、入力デバイスのそれぞれは、エンドユーザにフィードバックを提供するＬＥＤ  ２０９を含む。
【００２１】
加えて、例示した実施形態は、低電力マイクロコントローラに電力を供給するための電池２０８を含む。一実施形態では、非充電式コイン型電池が使用される。しかしながら、別の実施形態では、統合された充電式電池を使用することができる（例えば、交流電源（図示せず）にＩｏＴデバイスを接続することによって再充電可能）。
【００２２】
オーディオを発生するためのスピーカ２０５も設けられている。一実施形態では、低電力マイクロコントローラ２９９は、スピーカ２０５上にオーディオを発生するために圧縮されたオーディオストリーム（例えば、ＭＰＥＧ−４／アドバンストオーディオコーディング（ＡＡＣ）ストリーム）を復号するための、オーディオ復号ロジックを含む。代替的に、低電力マイクロコントローラ２００及び／又はアプリケーションコード／データ２０３が、ユーザが入力デバイス２１０を介して選択を入力すると、エンドユーザに口頭のフィードバックを提供するための、デジタルでサンプリングされたオーディオスニペットを含むことができる。
【００２３】
一実施形態では、ＩｏＴデバイス１０１が設計される特定用途に基づいて、１つ以上の他の／代替のＩ／Ｏデバイス又はセンサ２５０が、ＩｏＴデバイス１０１に含まれてもよい。例えば、温度、圧力、湿度などを測定するために環境センサを含めることができる。ＩｏＴデバイスがセキュリティデバイスとして使用される場合には、セキュリティセンサ及び／又はドアロックオープナが含まれてもよい。当然のことながら、これらの例は、単に例示のために提供されている。本発明の基本原理は、いかなる特定のタイプのＩｏＴデバイスにも限定されない。実際に、ライブラリコード２０２が備わった低電力マイクロコントローラ２００の高度にプログラマブルな性質を考慮すると、アプリケーション開発者は、新しいアプリケーションコード２０３及び新しいＩ／Ｏデバイス２５０を容易に開発して、実質的に任意のタイプのＩｏＴアプリケーションのために低電力マイクロコントローラとインターフェースをとることができる。
【００２４】
一実施形態では、低電力マイクロコントローラ２００はまた、通信を暗号化するための、及び／又は署名を生成するための暗号化鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別するモジュール（ＳＩＭ）内に確保されてもよい。
【００２５】
一実施形態では、実質的に電力を消費していない超低電力状態からＩｏＴデバイスを起動させるために、ウェイクアップ受信機２０７が含まれる。一実施形態では、ウェイクアップ受信機２０７は、図３に示すように、ＩｏＴハブ１１０上に構成されたウェイクアップ送信機３０７から受信されたウェイクアップ信号に応答して、ＩｏＴデバイス１０１をこの低電力状態から出させるように構成される。具体的には、一実施形態では、送信機３０７と受信機２０７は共に、テスラコイルなどの電気共振トランス回路を形成する。動作中、ハブ１１０が非常に低い電力状態からＩｏＴデバイス１０１を復帰させる必要がある場合、エネルギーは送信機３０７から受信機２０７への無線周波数信号を介して送信される。エネルギー移動の理由で、ＩｏＴデバイス１０１は、それが低電力状態にあるときには、ハブからの信号を継続的に「聞く」必要がないので、実質的に電力を消費しないように構成することができる（ネットワーク信号を介してデバイスを起動させることができる、ネットワークプロトコルの場合と同様に）。むしろ、ＩｏＴデバイス１０１のマイクロコントローラ２００は、送信機３０７から受信機２０７に電気的に送信されたエネルギーを使用することによって、事実上パワーダウンされた後にウェイクアップするように構成される。
【００２６】
図３に例示するように、ＩｏＴハブ１１０はまた、プログラムコード及びデータ３０５を記憶するためのメモリ３１７と、プログラムコードを実行しデータを処理するためのマイクロコントローラなどのハードウェアロジック３０１とを含む。広域ネットワーク（ＷＡＮ）インターフェース３０２及びアンテナ３１０は、ＩｏＴハブ１１０をセルラーサービス１１５に連結する。代替的に、上述したように、ＩｏＴハブ１１０は、ローカルエリアネットワーク通信チャネルを確立するためにＷｉＦｉインターフェース（及びＷｉＦｉアンテナ）又はイーサネットインターフェースなどのローカルネットワークインターフェース（図示せず）を含むこともできる。一実施形態では、ハードウェアロジック３０１はまた、通信を暗号化するための、及び／又は署名を生成／検証するための暗号化鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別するモジュール（ＳＩＭ）内に確保されてもよい。
【００２７】
ローカル通信インターフェース３０３及びアンテナ３１１は、ＩｏＴデバイス１０１〜１０５のそれぞれとのローカル通信チャネルを確立する。上述したように、一実施形態では、ローカル通信インターフェース３０３／アンテナ３１１はＢｌｕｅｔｏｏｔｈ  ＬＥ規格を実装する。しかしながら、本発明の根底にある原理は、ＩｏＴデバイス１０１〜１０５とのローカル通信チャネルを確立するためのいかなる特定のプロトコルにも限定されない。図３においては別個のユニットとして例示されているが、ＷＡＮインターフェース３０２及び／又はローカル通信インターフェース３０３は、ハードウェアロジック３０１と同じチップ内に組み込まれてもよい。
【００２８】
一実施形態では、プログラムコード及びデータは、ローカル通信インターフェース３０３及びＷＡＮインターフェース３０２を介して通信するための別個のスタックを含む通信プロトコルスタック３０８を含む。加えて、デバイスペアリングプログラムコード及びデータ３０６は、ＩｏＴハブを新しいＩｏＴデバイスとペアリングすることができるようにメモリに記憶され得る。一実施形態では、各新しいＩｏＴデバイス１０１〜１０５には、ペアリングプロセス中にＩｏＴハブ１１０に通信される一意的なコードが割り当てられる。例えば、一意的なコードは、ＩｏＴデバイス上のバーコードに組み込まれてもよく、かつバーコードリーダ１０６によって読み取られてもよく、又はローカル通信チャネル１３０を介して通信されてもよい。別の実施形態では、一意的なＩＤコードがＩｏＴデバイスに磁気的に組み込まれ、ＩｏＴハブは、無線周波数ＩＤ（ＲＦＩＤ）又は近距離通信（ＮＦＣ）センサなどの磁気センサを有し、ＩｏＴデバイス１０１がＩｏＴハブ１１０の数インチ内で移動するとき、コードを検出する。
【００２９】
一実施形態では、一意的なＩＤが通信されると、ＩｏＴハブ１１０は、ローカルデータベース（図示せず）に問い合わせること、コードが許容可能であることを検証するためにハッシュを実行すること、及び／又はＩｏＴサービス１２０と通信することによって、一意的なＩＤの妥当性を確認し、ユーザデバイス１３５及び／又はウェブサイト１３０でＩＤコードを認証する。妥当性が確認されると、一実施形態では、ＩｏＴハブ１１０は、ＩｏＴデバイス１０１をペアリングし、メモリ３１７（これは、上述したように、不揮発性メモリを含むことができる）にペアリングデータを記憶する。ペアリングが完了すると、ＩｏＴハブ１１０は、本明細書に記載の様々な機能を実行するためにＩｏＴデバイス１０１と接続することができる。
【００３０】
一実施形態では、ＩｏＴサービス１２０を実行する組織は、開発者が新しいＩｏＴサービスを容易に設計できるように、ＩｏＴハブ１１０及び基本ハードウェア／ソフトウェアプラットフォームを提供することができる。具体的には、ＩｏＴハブ１１０に加えて、開発者には、ハブ１１０内で実行されるプログラムコード及びデータ３０５を更新するためのソフトウェア開発キット（ＳＤＫ）が提供されてもよい。加えて、ＩｏＴデバイス１０１については、ＳＤＫは、様々な異なるタイプのアプリケーション１０１の設計を容易にするために、ベースのＩｏＴハードウェア（例えば、低電力マイクロコントローラ２００及び図２に示す他の構成要素）用に設計された広範なライブラリコード２０２のセットを含んでもよい。一実施形態では、ＳＤＫは、開発者がＩｏＴデバイスの入力と出力を指定するだけでよいグラフィカルデザインインターフェースを含む。ＩｏＴデバイス１０１がハブ１１０及びサービス１２０に接続することを可能にする通信スタック２０１を含むネットワーキングコードは全て、開発者のために既に配置されている。加えて、一実施形態では、ＳＤＫは、モバイルデバイス（例えば、ＩＰＨＯＮＥ（登録商標）及びＡＮＤＲＯＩＤ（登録商標）デバイス）用のアプリケーションの設計を容易にするライブラリコードベースも含む。
【００３１】
一実施形態では、ＩｏＴハブ１１０は、ＩｏＴデバイス１０１〜１０５とＩｏＴサービス１２０との間のデータの連続的な双方向ストリームを管理する。ＩｏＴデバイス１０１〜１０５への／からの更新がリアルタイムで要求される状況では（例えば、ユーザがセキュリティデバイス又は環境読み取りの現在の状態を見る必要がある状況）、ＩｏＴハブは、ユーザデバイス１３５及び／又は外部のウェブサイト１３０に定期的な更新を提供するためにオープンＴＣＰソケットを維持することができる。更新を提供するために使用される特定のネットワーキングプロトコルは、基本用途のニーズに基づいて調整されてもよい。例えば、連続的な双方向ストリームを有することが理にかなっていない可能性がある場合、必要なときに情報を収集するために単純な要求／応答プロトコルを使用することができる。
【００３２】
一実施形態では、ＩｏＴハブ１１０及びＩｏＴデバイス１０１〜１０５の両方が、ネットワークを介して自動的に更新可能である。具体的には、ＩｏＴハブ１１０について新しい更新が利用可能であるとき、ＩｏＴサービス１２０から更新を自動的にダウンロードしてインストールすることができる。それは、古いプログラムコードを交換する前に、まず、更新されたコードをローカルメモリにコピーし、実行して、更新を検証し得る。同様に、ＩｏＴデバイス１０１〜１０５のそれぞれについて更新が利用可能である場合、更新は、ＩｏＴハブ１１０によって最初にダウンロードされ、ＩｏＴデバイス１０１〜１０５のそれぞれにプッシュアウトされてもよい。各ＩｏＴデバイス１０１〜１０５は、ＩｏＴハブに関して上述したのと同様の方法で更新を適用し、更新の結果をＩｏＴハブ１１０に報告することができる。更新が成功した場合、ＩｏＴハブ１１０は、更新をそのメモリから削除し、（例えば、各ＩｏＴデバイスについての新しい更新を確認し続けることができるように）それぞれのＩｏＴデバイスにインストールされている最新バージョンのコードを記録することができる。
【００３３】
一実施形態では、ＩｏＴハブ１１０は、Ａ／Ｃ電力を介して給電される。具体的には、ＩｏＴハブ１１０は、Ａ／Ｃ電源コードを介して供給されるＡ／Ｃ電圧をより低いＤＣ電圧に変換するための変圧器を備えた電源ユニット３９０を含むことができる。
【００３４】
図４Ａは、ＩｏＴシステムを使用してユニバーサル遠隔制御操作を実行するための、本発明の一実施形態を例示する。具体的には、この実施形態では、ＩｏＴデバイス１０１〜１０３のセットには、（ほんの数例を挙げると）空気調節装置／ヒータ４３０、照明システム４３１、及び視聴覚機器４３２を含む、様々な異なるタイプの電子機器を制御する遠隔制御コードを送信するための、赤外線（ＩＲ）及び／又は無線周波数（ＲＦ）ブラスタ４０１〜４０３がそれぞれ備わっている。図４Ａに示される実施形態では、ＩｏＴデバイス１０１〜１０３にはまた、以下に説明するように、それらが制御するデバイスの動作を検出するためのセンサ４０４〜４０６がそれぞれ備わっている。
【００３５】
例えば、ＩｏＴデバイス１０１におけるセンサ４０４は、現在の温度／湿度を検知し、それに応じて、現在の所望の温度に基づき空気調節装置／ヒータ４３０を制御するための温度及び／又は湿度センサであってもよい。この実施形態では、空気調節装置／ヒータ４３０は、遠隔制御デバイス（典型的には、それ自体が温度センサをその中に組み込んだ遠隔制御装置）を介して制御されるように設計されるものである。一実施形態では、ユーザは、ユーザデバイス１３５上にインストールされたアプリケーション又はブラウザを介して、所望の温度をＩｏＴハブ１１０に提供する。ＩｏＴハブ１１０上で実行される制御ロジック４１２は、センサ４０４から現在の温度／湿度を受信し、それに応じて、所望の温度／湿度にしたがってＩＲ／ＲＦブラスタ４０１を制御するように、ＩｏＴデバイス１０１にコマンドを送信する。例えば、温度が所望の温度未満である場合、制御ロジック４１２は、温度を上げるように、ＩＲ／ＲＦブラスタ４０１を介して空気調節装置／ヒータにコマンドを送信してもよい（例えば、空気調節装置をオフにすることか、又はヒータをオンにすることのいずれかによって）。コマンドは、ＩｏＴハブ１１０上のデータベース４１３に記憶された必要な遠隔制御コードを含んでもよい。代替的に、又は加えて、ＩｏＴサービス４２１は、指定されたユーザ選好及び記憶された制御コード４２２に基づき電子機器４３０〜４３２を制御するために、制御ロジック４２１を実装してもよい。
【００３６】
例示した実施例におけるＩｏＴデバイス１０２は、照明４３１を制御するために使用される。具体的には、ＩｏＴデバイス１０２のセンサ４０５は、照明設備４３１（又は他の照明装置）によってもたらされている光の現在の輝度を検出するように構成された光センサ又は光検出器であってもよい。ユーザは、ユーザデバイス１３５を介して、ＩｏＴハブ１１０に所望の照明レベル（オン又はオフの表示を含む）を指定してもよい。それに応答して、制御ロジック４１２は、照明４３１の現在の輝度レベルを制御するように、ＩＲ／ＲＦブラスタ４０２にコマンドを送信する（例えば、現在の輝度が低すぎる場合は照明を明るくするか、若しくは現在の輝度が高すぎる場合は照明を暗くするか、又は単純に照明をオン若しくはオフにする）。
【００３７】
例示した実施例におけるＩｏＴデバイス１０３は、視聴覚機器４３２（例えば、テレビ、Ａ／Ｖ受信器、ケーブル／衛星受信器、ＡｐｐｌｅＴＶ（商標）など）を制御するように構成される。ＩｏＴデバイス１０３のセンサ４０６は、現在の周囲音量レベルを検出するためのオーディオセンサ（例えば、マイクロホン及び関連ロジック）、並びに／又はテレビによって生成された光に基づき、（例えば、指定されたスペクトル内の光を測定することによって）テレビがオンであるか、それともオフであるかを検出するための光センサであってもよい。代替的に、センサ４０６は、検出された温度に基づき、オーディオ機器がオンであるか、それともオフであるかを検出するための、視聴覚機器に接続された温度センサを含んでもよい。この場合も、ユーザデバイス１３５を介したユーザ入力に応答して、制御ロジック４１２は、ＩｏＴデバイス１０３のＩＲブラスタ４０３を介して視聴覚機器にコマンドを送信してもよい。
【００３８】
上記が本発明の一実施形態の単なる例示した実施例であることに留意すべきである。本発明の基本原理は、ＩｏＴデバイスによって制御されるいかなる特定のタイプのセンサ又は機器にも限定されない。
【００３９】
ＩｏＴデバイス１０１〜１０３がＢｌｕｅｔｏｏｔｈ  ＬＥ接続を介してＩｏＴハブ１１０に連結される実施形態では、センサデータ及びコマンドは、Ｂｌｕｅｔｏｏｔｈ  ＬＥチャネルを介して送信される。しかしながら、本発明の基本原理は、Ｂｌｕｅｔｏｏｔｈ  ＬＥ又はいずれの他の通信標準にも限定されない。
【００４０】
一実施形態では、電子機器のそれぞれを制御するために必要とされる制御コードは、ＩｏＴハブ１１０上のデータベース４１３及び／又はＩｏＴサービス１２０上のデータベース４２２に記憶される。図４Ｂに例示するように、制御コードは、ＩｏＴサービス１２０上で維持される異なる機器に対して、制御コード４２２のマスターデータベースからＩｏＴハブ１１０に提供されてもよい。エンドユーザは、ユーザデバイス１３５上で実行されるアプリケーション又はブラウザを介して制御される電子（又は他の）機器のタイプを指定してもよく、それに応答して、ＩｏＴハブ上の遠隔制御コード学習モジュール４９１は、ＩｏＴサービス１２０上の遠隔制御コードデータベース４９２から、必要とされるＩＲ／ＲＦコードを取得してもよい（例えば、一意的なＩＤを有する各電子機器を識別する）。
【００４１】
加えて、一実施形態では、ＩｏＴハブ１１０には、遠隔制御コード学習モジュール４９１が、電子機器と共に提供された元の遠隔制御装置４９５から直接新しい遠隔制御コードを「学習」することを可能にする、ＩＲ／ＲＦインターフェース４９０が備わっている。例えば、空気調節装置４３０と共に提供された元の遠隔制御装置の制御コードが、遠隔制御データベースに含まれていない場合、ユーザは、ユーザデバイス１３５上のアプリケーション／ブラウザを介してＩｏＴハブ１１０と対話して、元の遠隔制御装置によって生成される様々な制御コードをＩｏＴハブ１１０に教えてもよい（例えば、温度を上げる、温度を下げるなど）。遠隔制御コードが学習されると、それらは、ＩｏＴハブ１１０上の制御コードデータベース４１３に記憶されてもよく、かつ／又は中央遠隔制御コードデータベース４９２に含められるように、ＩｏＴサービス１２０に送り返されてもよい（続いて、同じ空気調節装置ユニット４３０を有する他のユーザによって使用されてもよい）。
【００４２】
一実施形態では、ＩｏＴデバイス１０１〜１０３のそれぞれは、極端に小さいフォームファクタを有し、両面テープ、小さい釘、磁気アタッチメントなどを使用して、それらの対応する電子機器４３０〜４３２の上又は付近に取り付けられてもよい。空気調節装置４３０などの１つの機器を制御するために、ＩｏＴデバイス１０１を十分に離して配置し、センサ４０４が自宅内の周囲温度を正確に測定することができるようにすることが望ましい（例えば、空気調節装置上に直接ＩｏＴデバイスを配置すると、温度測定値は、空気調節装置が作動しているときは低すぎになり、ヒータが作動しているときは高すぎになるであろう）。対照的に、照明を制御するために使用されるＩｏＴデバイス１０２は、センサ４０５が現在の照明レベルを検出するために、照明設備４３１の上又は付近に配置されてもよい。
【００４３】
記載される一般的な制御機能を提供することに加えて、ＩｏＴハブ１１０及び／又はＩｏＴサービス１２０の一実施形態は、各電子機器の現在の状態に関連した通知をエンドユーザに送信する。通知は、テキストメッセージ及び／又はアプリケーション特有の通知であってもよく、次いで、通知は、ユーザのモバイルデバイス１３５のディスプレイ上に表示されてもよい。例えば、ユーザの空気調節装置が長期間オンであるが温度が変化していない場合、ＩｏＴハブ１１０及び／又はＩｏＴサービス１２０は、空気調節装置が適切に機能していないという通知をユーザに送信してもよい。ユーザが自宅におらず（このことは、人感センサを介して検出されてもよく、若しくはユーザの現在の検出された位置に基づいてもよい）、センサ４０６が、視聴覚機器４３０がオンであることを示すか、又はセンサ４０５が、照明がオンであることを示す場合、ユーザが視聴覚機器４３２及び／又は照明４３１をオフにすることを希望するか尋ねる通知がユーザに送信されてもよい。同じタイプの通知が、任意の機器のタイプに対して送信されてもよい。
【００４４】
ユーザが通知を受信すると、彼／彼女は、ユーザデバイス１３５上のアプリケーション又はブラウザを介して電子機器４３０〜４３２を遠隔制御してもよい。一実施形態では、ユーザデバイス１３５は、タッチスクリーンデバイスであり、アプリケーション又はブラウザは、機器４３０〜４３２を制御するためのユーザが選択可能なボタンを含む遠隔制御装置の画像を表示する。通知を受信した後、ユーザは、グラフィカル遠隔制御装置を開き、様々な異なる機器をオフにするか、又は調節してもよい。ＩｏＴサービス１２０を介して接続されている場合、ユーザの選択は、ＩｏＴサービス１２０からＩｏＴハブ１１０に転送されてもよく、ＩｏＴハブ１１０は、次いで制御ロジック４１２を介して機器を制御することになる。代替的に、ユーザ入力は、ユーザデバイス１３５からＩｏＴハブ１１０に直接送信されてもよい。
【００４５】
一実施形態では、ユーザは、電子機器４３０〜４３２に対して様々な自動制御機能を実行するように、ＩｏＴハブ１１０上の制御ロジック４１２をプログラミングしてもよい。上記の所望の温度、輝度レベル、及び音量レベルを維持することに加えて、制御ロジック４１２は、ある特定の条件が検出された場合に電子機器を自動的にオフにしてもよい。例えば、制御ロジック４１２が、ユーザが自宅にいないこと、及び空気調節装置が機能していないことを検出する場合、制御ロジック４１２は、空気調節装置を自動的にオフにしてもよい。同様に、ユーザが自宅におらず、センサ４０６が、視聴覚機器４３０がオンであることを示すか、又はセンサ４０５が、照明がオンであることを示す場合、制御ロジック４１２は、視聴覚機器及び照明をそれぞれオフにするように、ＩＲ／ＲＦブラスタ４０３及び４０２を介してコマンドを自動的に送信してもよい。
【００４６】
図５は、電子機器５３０及び５３１を監視するためのセンサ５０３及び５０４が備わった、ＩｏＴデバイス１０４及び１０５の追加の実施形態を例示する。具体的には、この実施形態のＩｏＴデバイス１０４は、コンロがオンのままであるときを検出するためにコンロ５３０の上又は付近に配置されてもよい、温度センサ５０３を含む。一実施形態では、ＩｏＴデバイス１０４は、温度センサ５０３によって測定された現在の温度をＩｏＴハブ１１０及び／又はＩｏＴサービス１２０に送信する。コンロが閾値期間を超えてオンであることが検出される場合（例えば、測定された温度に基づき）、制御ロジック５１２は、ストーブ５３０がオンであることをユーザに通知する通知を、エンドユーザのデバイス１３５に送信してもよい。加えて、一実施形態では、ＩｏＴデバイス１０４は、ユーザからの命令を受信することに応答して、又は自動的に（制御ロジック５１２がそうするようにユーザによってプログラミングされる場合）、のいずれかによって、コンロをオフにするための制御モジュール５０１を含んでもよい。一実施形態では、制御ロジック５０１は、コンロ５３０への電気又はガスを遮断するためのスイッチを備える。しかしながら、他の実施形態では、制御ロジック５０１は、コンロ自体内に統合されてもよい。
【００４７】
図５はまた、洗濯機及び／又は乾燥機などのある特定のタイプの電子機器の動作を検出するための動作センサ５０４を有する、ＩｏＴデバイス１０５を例示する。使用され得る別のセンサは、周囲の音量レベルを検出するためのオーディオセンサ（例えば、マイクロホン及びロジック）である。上記の他の実施形態のように、この実施形態は、ある特定の指定された条件が満たされた場合、エンドユーザに通知を送信してもよい（例えば、動作が長期間検出され、洗濯機／乾燥機がオフになっていないことを示す場合）。図５に示されないが、ＩｏＴデバイス１０５にはまた、自動的に、かつ／又はユーザ入力に応答して、（例えば、電気／ガスをオフに切り替えることによって）洗濯機／乾燥機５３１をオフにするための制御モジュールが備わっていてもよい。
【００４８】
一実施形態では、制御ロジック及びスイッチを有する第１のＩｏＴデバイスは、ユーザの自宅内の全ての電力をオフにするように構成されてもよく、制御ロジック及びスイッチを有する第２のＩｏＴデバイスは、ユーザの自宅内の全てのガスをオフにするように構成されてもよい。次いで、センサを有するＩｏＴデバイスは、ユーザの自宅内の電気又はガス駆動の機器の上又は付近に位置付けられてもよい。特定の機器がオンのままである（例えば、コンロ５３０）ことをユーザが通知された場合、ユーザは、自宅内の全ての電気又はガスをオフにするコマンドを送信して、損害を防止してもよい。代替的に、ＩｏＴハブ１１０及び／又はＩｏＴサービス１２０の制御ロジック５１２は、そのような状況において電気又はガスを自動的にオフにするように構成されてもよい。
【００４９】
一実施形態では、ＩｏＴハブ１１０及びＩｏＴサービス１２０は、周期的な間隔で通信する。ＩｏＴサービス１２０が、ＩｏＴハブ１１０への接続が切れていることを検出する場合（例えば、指定された継続時間、ＩｏＴハブからの要求又は応答を受信していないことによって）、ＩｏＴサービス１２０は、この情報をエンドユーザのデバイス１３５に通信することになる（例えば、テキストメッセージ又はアプリケーション特有の通知を送信することによって）。
中間デバイスを通してデータを通信するための装置及び方法
【００５０】
上述したように、Ｂｌｕｅｔｏｏｔｈ  ＬＥなどのＩｏＴデバイス相互接続するために使用される無線テクノロジーは概して、近距離テクノロジーであるため、ＩｏＴ実装のためのハブがＩｏＴデバイスの範囲外にある場合、ＩｏＴデバイスは、ＩｏＴハブにデータを送信することができない（逆もまた同様）。
【００５１】
この欠陥に対処するために、本発明の一実施形態は、モバイルデバイスが範囲内にあるとき、１つ以上のモバイルデバイスと周期的に接続するために、ＩｏＴハブの無線範囲外にあるＩｏＴデバイスのための機構を提供する。一旦接続されると、ＩｏＴデバイスは、ＩｏＴハブに提供される必要がある任意のデータをモバイルデバイスに送信することができ、次いでモバイルデバイスは、ＩｏＴハブにデータを転送する。
【００５２】
図６に例示するように、一実施形態は、ＩｏＴハブ１１０と、ＩｏＴハブ１１０の範囲外にあるＩｏＴデバイス６０１と、モバイルデバイス６１１とを含む。範囲外のＩｏＴデバイス６０１は、データを収集及び通信することが可能な任意の形態のＩｏＴデバイスを含んでもよい。例えば、ＩｏＴデバイス６０１は、冷蔵庫内の利用可能な食料品、食料品を消費するユーザ、及び現在の温度を監視するように、冷蔵庫内に構成されたデータ収集デバイスを備えてもよい。当然のことながら、本発明の基本原理は、いかなる特定のタイプのＩｏＴデバイスにも限定されない。本明細書に記載される技術は、ほんの数例を挙げると、スマートメータ、コンロ、洗濯機、乾燥機、照明システム、ＨＶＡＣシステム、及び視聴覚機器に関するデータを収集及び送信するために使用されるデバイスを含む、任意のタイプのＩｏＴデバイスを使用して実装されてもよい。
【００５３】
更に、動作中のモバイルデバイスである、図６に例示するＩｏＴデバイス６１１は、データを通信及び記憶することが可能な任意の形態のモバイルデバイスであってもよい。例えば、一実施形態では、モバイルデバイス６１１は、本明細書に記載される技術を促進するために、アプリケーションがその上にインストールされたスマートフォンである。別の実施形態では、モバイルデバイス６１１は、ネックレス若しくはブレスレットに取り付けられた通信トークン、スマートウォッチ、又はフィットネスデバイスなど、装着可能なデバイスを含む。装着可能なトークンは、スマートフォンデバイスを所有しない高齢のユーザ又は他のユーザにとって特に有用であり得る。
【００５４】
動作中、範囲外のＩｏＴデバイス６０１は、モバイルデバイス６１１との接続性を周期的又は連続的にチェックしてもよい。接続を確立した後（例えば、ユーザが冷蔵庫の近くを移動する結果として）、ＩｏＴデバイス６０１上の任意の収集されたデータ６０５が、モバイルデバイス６１１上の一時データリポジトリ６１５に自動的に送信される。一実施形態では、ＩｏＴデバイス６０１及びモバイルデバイス６１１は、ＢＴＬＥなどの低電力無線標準を使用して、ローカル無線通信チャネルを確立する。そのような場合、モバイルデバイス６１１は、既知のペアリング技術を使用してＩｏＴデバイス６０１と最初にペアリングされてもよい。
【００５５】
一旦データが一時データリポジトリに伝送されると、モバイルデバイス６１１は、ＩｏＴハブ１１０との通信が確立されるとデータを送信する（例えば、ユーザがＩｏＴハブ１１０の範囲内を歩くとき）。次いで、ＩｏＴハブは、中央データリポジトリ４１３にデータを記憶してもよく、かつ／又はインターネット上で、１つ以上のサービス及び／若しくは他のユーザデバイスにデータを送信してもよい。一実施形態では、モバイルデバイス６１１は、異なるタイプの通信チャネルを使用して、ＩｏＴハブ１１０にデータを提供してもよい（潜在的に、ＷｉＦｉなどのより高出力の通信チャネル）。
【００５６】
範囲外のＩｏＴデバイス６０１、モバイルデバイス６１１、及びＩｏＴハブは全て、本明細書に記載される技術を実装するためのプログラムコード及び／又はロジックにより構成されてもよい。図７に例示するように、例えば、本明細書に記載される動作を実行するために、ＩｏＴデバイス６０１は、中間接続ロジック及び／又はアプリケーションにより構成されてもよく、モバイルデバイス６１１は、中間接続ロジック／アプリケーションにより構成されてもよく、ＩｏＴハブ１１０は、中間接続ロジック／アプリケーション７２１により構成されてもよい。各デバイス上の中間接続ロジック／アプリケーションは、ハードウェア、ソフトウェア、又はこれらの任意の組み合わせで実装されてもよい。一実施形態では、ＩｏＴデバイス６０１の中間接続ロジック／アプリケーション７０１は、モバイルデバイス上の中間接続ロジック／アプリケーション７１１（デバイスアプリケーションとして実装されてもよい）との接続を検索及び確立して、一時データリポジトリ６１５にデータを伝送する。次いで、モバイルデバイス６１１上の中間接続ロジック／アプリケーション７０１は、中央データリポジトリ４１３にデータを記憶するＩｏＴハブ上の中間接続ロジック／アプリケーションに、データを転送する。
【００５７】
図７に例示するように、各デバイス上の中間接続ロジック／アプリケーション７０１、７１１、７２１は、手元のアプリケーションに基づき構成されてもよい。例えば、冷蔵庫に関して、接続ロジック／アプリケーション７０１は、周期的ベースで少数のパケットを送信するだけでよい。他のアプリケーション（例えば、温度センサ）に対して、接続ロジック／アプリケーション７０１は、より頻繁な更新を送信する必要があり得る。
【００５８】
モバイルデバイス６１１よりはむしろ、一実施形態では、ＩｏＴデバイス６０１が、ＩｏＴハブ１１０の範囲内に位置する１つ以上の中間ＩｏＴデバイスとの無線接続を確立するように構成されてもよい。この実施形態では、ＩｏＴハブの範囲外の任意のＩｏＴデバイス６０１が、他のＩｏＴデバイスを使用して「チェーン」を形成することによってハブにリンクされてもよい。
【００５９】
加えて、簡潔にするために、単一のモバイルデバイス６１１のみが図６及び図７に例示されるが、一実施形態では、異なるユーザの複数のそのようなモバイルデバイスは、ＩｏＴデバイス６０１と通信するように構成されてもよい。更に、同じ技術が、複数の他のＩｏＴデバイスに対して実装されてもよく、それにより、自宅全体にわたって中間デバイスデータ収集システムを形成する。
【００６０】
更に、一実施形態では、本明細書に記載される技術は、様々な異なるタイプの関連データを収集するために使用されてもよい。例えば、一実施形態では、モバイルデバイス６１１がＩｏＴデバイス６０１と接続するたびに、ユーザの識別が、収集されたデータ６０５と共に含まれてもよい。このようにして、ＩｏＴシステムは、自宅内の異なるユーザの挙動を追跡するために使用されてもよい。例えば、冷蔵庫内で使用される場合、収集されたデータ６０５は、冷蔵庫のそばを通る各ユーザ、冷蔵庫を開ける各ユーザ、及び各ユーザによって消費される特定の食料品についての識別を次に含んでもよい。異なるタイプのデータが、他のタイプのＩｏＴデバイスから収集されてもよい。このデータを使用して、システムは、例えば、どのユーザが衣服を洗濯するのか、どのユーザが所与の日にテレビを観るのか、各ユーザが就寝及び起床する時間などを決定することが可能である。次いで、このクラウドソースデータの全てが、ＩｏＴハブのデータリポジトリ４１３内にコンパイルされてもよく、かつ／又は外部サービス若しくはユーザに転送されてもよい。
【００６１】
本明細書に記載される技術の別の有益な用途は、補助を必要とし得る高齢のユーザを監視するためのものである。このアプリケーションに関して、モバイルデバイス６１１は、ユーザの自宅の異なる室内の情報を収集するために、高齢のユーザによって装着可能された非常に小型のトークンであってもよい。ユーザが冷蔵庫を開けるたびに、例えば、このデータは、収集されたデータ６０５と共に含まれ、トークンを介してＩｏＴハブ１１０に伝送される。次いで、ＩｏＴハブは、１つ以上の外部ユーザ（例えば、高齢のユーザを世話する子供又は他の個人）にデータを提供してもよい。データが指定された期間（例えば、１２時間）収集されていない場合、これは、高齢のユーザが自宅を動き回っていない、かつ／又は冷蔵庫を開けていないことを意味する。次いで、ＩｏＴハブ１１０又はＩｏＴハブに接続された外部サービスは、これらの他の個人にアラート通知を送信し、彼らに高齢のユーザを確認するべきであることを通知してもよい。加えて、収集されたデータ６０５は、ユーザによって消費されている食品、並びに食料品店に行くことが必要であるかどうか、高齢のユーザがテレビを観ているかどうか、及びどれほど頻繁に観ているか、高齢のユーザが衣服を洗濯する頻度などの他の関連情報を含んでもよい。
【００６２】
別の実装例において、洗濯機、冷蔵庫、ＨＶＡＣシステムなどに問題がある場合、収集されたデータは、交換される必要がある部品の指示を含んでもよい。そのような場合、通知は、問題を解決するための要求と共に技術者に送信されてもよい。次いで、技術者は、必要とされる交換部品を持って自宅に到着し得る。
【００６３】
本発明の一実施形態に従う方法が、図８に例示されている。本方法は、上記のアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【００６４】
８０１において、ＩｏＴハブの範囲外にあるＩｏＴデバイスは、データ（例えば、冷蔵庫の扉の開放、使用された食料品など）を周期的に収集する。８０２において、ＩｏＴデバイスは、モバイルデバイスとの接続性を周期的又は連続的にチェックする（例えば、ＢＴＬＥ標準によって指定されたものなど、接続を確立するための標準的なローカル無線技術を使用して）。８０２において、モバイルデバイスへの接続が確立され、決定された場合、８０３において、収集されたデータは、８０３においてモバイルデバイスに伝送される。８０４において、モバイルデバイスは、ＩｏＴハブ、外部サービス、及び／又はユーザにデータを伝送する。述べられたように、モバイルデバイスは、それが既に接続されている場合（例えば、ＷｉＦｉリンクを介して）、すぐにデータを送信し得る。
【００６５】
ＩｏＴデバイスからデータを収集することに加えて、一実施形態では、本明細書に記載される技術は、データを更新するか、又は別様にＩｏＴデバイスにデータを提供するために使用されてもよい。一例が図９Ａに示され、それは、ＩｏＴデバイス６０１（又はそのようなＩｏＴデバイスの群）上にインストールされる必要があるプログラムコード更新９０１を有する、ＩｏＴハブ１１０を示す。プログラムコード更新は、システム更新、パッチ、コンフィギュレーションデータ、及びＩｏＴデバイスがユーザの要求通り動作するために必要とされる任意の他のデータを含んでもよい。一実施形態では、ユーザは、モバイルデバイス又はコンピュータを介してＩｏＴデバイス６０１に対するコンフィギュレーションオプションを指定してもよく、それらは次いで、本明細書に記載される技術を使用して、ＩｏＴハブ１１０上に記憶され、かつＩｏＴデバイスに提供される。具体的には、一実施形態では、ＩｏＴハブ１１０上の中間接続ロジック／アプリケーション７２１は、モバイルデバイス６１１上の中間接続ロジック／アプリケーション７１１と通信して、一時記憶装置６１５内にプログラムコード更新を記憶する。モバイルデバイス６１１がＩｏＴデバイス６０１の範囲に入るとき、モバイルデバイス６１１上の中間接続ロジック／アプリケーション７１１は、ＩｏＴデバイス６０１上の中間／接続ロジック／アプリケーション７０１と接続して、デバイスにプログラムコード更新を提供する。一実施形態では、ＩｏＴデバイス６０１は次いで、新しいプログラムコード更新及び／又はデータをインストールするための自動更新プロセスに入ってもよい。
【００６６】
ＩｏＴデバイスを更新するための方法が、図９Ｂに示される。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【００６７】
９００において、新しいプログラムコード又はデータ更新は、ＩｏＴハブ及び／又は外部サービス（例えば、インターネット上でモバイルデバイスに連結された）上で利用可能になる。９０１において、モバイルデバイスは、ＩｏＴデバイスの代わりにプログラムコード又はデータ更新を受信及び記憶する。ＩｏＴデバイス及び／又はモバイルデバイスは、９０２において接続が確立されているかどうかを決定するために周期的にチェックする。９０３において接続が確立され、決定された場合、９０４において、更新は、ＩｏＴデバイスに伝送され、インストールされる。
改善されたセキュリティのための実施形態
【００６８】
一実施形態では、各ＩｏＴデバイス１０１の低電力マイクロコントローラ２００及びＩｏＴハブ１１０の低電力ロジック／マイクロコントローラ３０１は、以下に記載される実施形態によって使用される暗号化鍵を記憶するための安全な鍵ストアを含む（例えば、図１０〜図１５及び関連する文章を参照されたい）。代替的に、キーは、後述するように、加入者識別モジュール（ＳＩＭ）内に確保されてもよい。
【００６９】
図１０は、ＩｏＴサービス１２０、ＩｏＴハブ１１０、並びにＩｏＴデバイス１０１及び１０２の間の通信を暗号化するために公開鍵インフラストラクチャ（ＰＫＩ）技術及び／又は対称鍵交換／暗号化技術を使用する、俯瞰的なアーキテクチャを例示する。
【００７０】
公開／秘密鍵ペアを使用する実施形態をまず説明し、続いて、対称鍵交換／暗号化技術を使用する実施形態を説明する。具体的には、ＰＫＩを使用するある実施形態において、一意的な公開／秘密鍵ペアが、各ＩｏＴデバイス１０１〜１０２、各ＩｏＴハブ１１０、及びＩｏＴサービス１２０に関連付けられる。一実施形態では、新しいＩｏＴハブ１１０がセットアップされるとき、その公開鍵がＩｏＴサービス１２０に提供され、新しいＩｏＴデバイス１０１が設定されるとき、その公開鍵がＩｏＴハブ１１０とＩｏＴサービス１２０との両方に提供される。デバイス間で公開鍵を安全に交換するための様々な技術を以下に説明する。一実施形態では、いかなる受信デバイスも、署名の妥当性を確認することによって公開鍵の妥当性を検証することができるように、全ての公開鍵が、受信デバイスの全てに既知であるマスター鍵（すなわち、一種の証明書）によって署名される。したがって、未加工の公開鍵を単に交換するのではなく、むしろこれらの証明書が交換されることになる。
【００７１】
例示したように、一実施形態では、各ＩｏＴデバイス１０１、１０２は、各デバイスの秘密鍵を記憶するセキュリティのために、それぞれ、安全な鍵記憶装置１００１、１００３を含む。セキュリティロジック１００２、１３０４が、安全に記憶された秘密鍵を用いて、本明細書に記載された暗号化／復号動作を実行する。同様に、ＩｏＴハブ１１０は、ＩｏＴハブ秘密鍵、並びにＩｏＴデバイス１０１〜１０２及びＩｏＴサービス１２０の公開鍵を記憶するための安全な記憶装置１０１１と、鍵を使用して暗号化／復号動作を実行するためのセキュリティロジック１０１２と、を含む。最終的に、ＩｏＴサービス１２０は、それ自体の秘密鍵、様々なＩｏＴデバイス及びＩｏＴハブの公開鍵を安全に記憶するセキュリティのための安全な記憶装置１０２１と、鍵を使用してＩｏＴハブ及びデバイスとの通信を暗号化／復号するためのセキュリティロジック１０１３と、を含んでもよい。一実施形態では、ＩｏＴハブ１１０がＩｏＴデバイスから公開鍵証明書を受信すると、ＩｏＴハブ１１０は、それを（例えば、上記のようにマスター鍵を使用して署名の妥当性を確認することによって）検証し、次いで、その中から公開鍵を抽出して、その公開鍵をその安全な鍵ストア１０１１内に記憶することができる。
【００７２】
例として、一実施形態では、ＩｏＴサービス１２０が、コマンド又はデータ（例えば、ドアを開錠するコマンド、センサを読み取るリクエスト、ＩｏＴデバイスによって処理／表示されるべきデータ等）をＩｏＴデバイス１０１に送信する必要があるとき、セキュリティロジック１０１３は、ＩｏＴデバイス１０１の公開鍵を使用してそのデータ／コマンドを暗号化することにより、暗号化されたＩｏＴデバイスパケットを生成する。一実施形態では、次いで、セキュリティロジック１０１３は、ＩｏＴハブ１１０の公開鍵を使用し、ＩｏＴデバイスパケットを暗号化して、ＩｏＴハブパケットを生成し、ＩｏＴハブパケットをＩｏＴハブ１１０に送信する。一実施形態では、デバイス１０１が、それが信頼されるソースから変更されていないメッセージを受信していることを検証することができるように、サービス１２０は、その秘密鍵又は上述のマスター鍵を用いて、暗号化されたメッセージに署名する。次いで、デバイス１０１は、秘密鍵及び／又はマスター鍵に対応する公開鍵を使用して、署名の妥当性を確認してもよい。上述したように、対称鍵交換／暗号化技術が、公開／秘密鍵暗号化の代わりに使用されてもよい。これらの実施形態では、１つの鍵をプライベートに記憶し、対応する公開鍵を他のデバイスに提供するのではなく、それぞれのデバイスに、暗号化のために、かつ署名の妥当性を確認するために使用されるものと同じ対称鍵のコピーを提供してもよい。対称鍵アルゴリズムの一例は高度暗号化標準（ＡＥＳ）であるが、本発明の基本原理は、いかなるタイプの特定の対称鍵にも限定されない。
【００７３】
ある対称鍵実装形態を使用すると、各デバイス１０１は、ＩｏＴハブ１１０と対称鍵を交換するために、安全な鍵交換プロトコルに入る。動的対称鍵プロビジョニングプロトコル（ＤＳＫＰＰ）などの安全な鍵プロビジョニングプロトコルが、安全な通信チャネルを介して鍵を交換するために使用され得る（例えば、コメント要求（ＲＦＣ）６０６３を参照されたい）。しかしながら、本発明の基本原理は、いかなる特定の鍵プロビジョニングプロトコルにも限定されるものではない。
【００７４】
対称鍵が交換されると、それらは、各デバイス１０１及びＩｏＴハブ１１０によって、通信を暗号化するために使用され得る。同様に、ＩｏＴハブ１１０及びＩｏＴサービス１２０は、安全な対称鍵交換を実行し、次いで、交換された対称鍵を使用して通信を暗号化し得る。一実施形態では、新しい対称鍵が、デバイス１０１とハブ１１０との間、及びハブ１１０とＩｏＴサービス１２０との間で定期的に交換される。一実施形態では、デバイス１０１、ハブ１１０、及びサービス１２０の間での新しい通信セッションのたびに、新しい対称鍵が交換される（例えば、通信セッション毎に新しい鍵が生成され、安全に交換される）。一実施形態では、ＩｏＴハブ内のセキュリティモジュール１０１２が信頼される場合、サービス１２０は、ハブセキュリティモジュール１３１２とセッション鍵をネゴシエートし得、次いで、セキュリティモジュール１０１２は、各デバイス１２０とセッション鍵をネゴシエートすることになる。次いで、サービス１２０からのメッセージが、ハブセキュリティモジュール１０１２で復号及び検証され、その後、デバイス１０１への送信のために再暗号化される。
【００７５】
一実施形態では、ハブセキュリティモジュール１０１２でのセキュリティ侵害を防止するために、１回限りの（恒久的な）インストール鍵が、インストール時にデバイス１０１とサービス１２０との間で交渉されてもよい。メッセージをデバイス１０１に送るとき、サービス１２０は、まずこのデバイスインストール鍵を用いて暗号化／ＭＡＣし、次いでハブのセッション鍵を用いてそれを暗号化／ＭＡＣし得る。次いで、ハブ１１０は、暗号化されたデバイスブロブを検証及び抽出し、それをデバイスに送ることになる。
【００７６】
本発明の一実施形態では、リプレイアタックを防止するためにカウンタ機構が実装される。例えば、デバイス１０１からハブ１１０へ（又は逆もまた同様）の連続する通信それぞれに、継続的に増加するカウンタ値が割り当てられ得る。ハブ１１０とデバイス１０１との両方がこの値を追跡し、デバイス間での連続する通信それぞれにおいてその値が正しいことを検証する。これと同じ技術が、ハブ１１０とサービス１２０との間に実装され得る。この方法でカウンタを使用すると、各デバイス間での通信を偽装することがより困難になるであろう（カウンタ値が誤ったものになるため）。しかしながら、これを用いずとも、サービスとデバイスとの間で共有されたインストール鍵は、全てのデバイスに対するネットワーク（ハブ）規模の攻撃を防止するであろう。
【００７７】
一実施形態では、公開／秘密鍵暗号化を使用するとき、ＩｏＴハブ１１０は、その秘密鍵を使用してＩｏＴハブパケットを復号し、暗号化されたＩｏＴデバイスパケットを生成し、それを、関連付けられたＩｏＴデバイス１０１に送信する。次いで、ＩｏＴデバイス１０１は、その秘密鍵を使用してＩｏＴデバイスパケットを復号して、ＩｏＴサービス１２０を起点とするコマンド／データを生成する。次いで、ＩｏＴデバイス１０１は、データを処理し、かつ／又はコマンドを実行してもよい。対称暗号化を使用すると、各デバイスは、共有された対称鍵を用いて暗号化及び復号を行う。いずれかの場合であれば、各送信デバイスはまた、受信デバイスがメッセージの信頼性を検証することができるように、その秘密鍵を用いてメッセージに署名してもよい。
【００７８】
異なる鍵のセットが、ＩｏＴデバイス１０１からＩｏＴハブ１１０への通信及びＩｏＴサービス１２０への通信を暗号化するために使用されてもよい。例えば、一実施形態では、ある公開／秘密鍵構成を使用すると、ＩｏＴデバイス１０１上のセキュリティロジック１００２が、ＩｏＴハブ１１０の公開鍵を使用して、ＩｏＴハブ１１０に送信されるデータパケットを暗号化する。次いで、ＩｏＴハブ１１０上のセキュリティロジック１０１２は、ＩｏＴハブの秘密鍵を使用して、データパケットを復号し得る。同様に、ＩｏＴデバイス１０１上のセキュリティロジック１００２及び／又はＩｏＴハブ１１０上のセキュリティロジック１０１２は、ＩｏＴサービス１２０の公開鍵を使用して、ＩｏＴサービス１２０に送信されるデータパケットを暗号化し得る（これは次いで、サービスの秘密鍵を使用して、ＩｏＴサービス１２０上のセキュリティロジック１０１３によって復号され得る）。対称鍵を使用すると、デバイス１０１及びハブ１１０は、ある対称鍵を共有し得、一方でハブ及びサービス１２０は、異なる対称鍵を共有し得る。
【００７９】
上記の説明において、ある特定の具体的詳細が上に記載されているが、本発明の基本原理は様々な異なる暗号化技術を使用して実装され得ることに留意すべきである。例えば、上述した一部の実施形態は非対称の公開／秘密鍵ペアを使用するが、別の実施形態は、様々なＩｏＴデバイス１０１〜１０２、ＩｏＴハブ１１０、及びＩｏＴサービス１２０の間で安全に交換される対称鍵を使用し得る。更に、一部の実施形態では、データ／コマンド自体は暗号化されないが、データ／コマンド（又は他のデータ構造）上の署名を生成するために鍵が使用される。次いで、受信者が、その鍵を使用して署名の妥当性を確認し得る。
【００８０】
図１１に例示するように、一実施形態では、各ＩｏＴデバイス１０１上の安全な鍵記憶装置が、プログラマブル加入者識別モジュール（ＳＩＭ）１１０１を使用して実装される。この実施形態では、ＩｏＴデバイス１０１は、ＩｏＴデバイス１０１上のＳＩＭインターフェース１１００内に据え付けられたプログラムされていないＳＩＭカード１１０１と共にエンドユーザに最初に提供され得る。１つ以上の暗号鍵のセットを用いてＳＩＭをプログラミングするために、ユーザは、プログラマブルＳＩＭカード１１０１をＳＩＭインターフェース５００から取り出して、それをＩｏＴハブ１１０上のＳＩＭプログラミングインターフェース１１０２に挿入する。次いで、ＩｏＴハブ上のプログラミングロジック１１２５が、ＩｏＴデバイス１０１をＩｏＴハブ１１０及びＩｏＴサービス１２０に登録／ペアリングするように、ＳＩＭカード１１０１を安全にプログラミングする。一実施形態では、公開／秘密鍵ペアは、プログラミングロジック１１２５によってランダムに生成されてもよく、次いで、このペアの公開鍵は、ＩｏＴハブの安全な記憶デバイス４１１内に記憶されてもよく、一方で秘密鍵は、プログラム可能なＳＩＭ  １１０１内に記憶されてもよい。加えて、プログラミングロジック５２５は、ＩｏＴハブ１１０、ＩｏＴサービス１２０、及び／又は任意の他のＩｏＴデバイス１０１の公開鍵を、（ＩｏＴデバイス１０１上のセキュリティロジック１３０２による発信データの暗号化に使用するために）ＳＩＭカード１４０１上に記憶してもよい。一旦ＳＩＭ  １１０１がプログラミングされると、新しいＩｏＴデバイス１０１に、ＳＩＭを安全な識別子として使用して（例えば、ＳＩＭを用いてデバイスを登録するための既存の技術を使用して）ＩｏＴサービス１２０がプロビジョニングされ得る。プロビジョニング後、ＩｏＴハブ１１０とＩｏＴサービス１２０との両方が、ＩｏＴデバイスの公開鍵のコピーを、ＩｏＴデバイス１０１との通信を暗号化する際に使用されるように安全に記憶する。
【００８１】
図１１を参照して上述した技術は、新たなＩｏＴデバイスをエンドユーザに提供する際に多大な柔軟性を提供する。（現在行われているのと同様に）ユーザが販売／購入の際に各ＳＩＭを特定のサービスプロバイダに直接登録することを要するのではなく、ＳＩＭは、エンドユーザによりＩｏＴハブ１１０を介して直接プログラミングされてもよく、プログラミングの結果は、ＩｏＴサービス１２０に安全に通信され得る。それ故に、新しいＩｏＴデバイス１０１がオンライン又はローカルの小売業者からエンドユーザに販売され、後にＩｏＴサービス１２０が安全にプロビジョニングされ得る。
【００８２】
ＳＩＭ（加入者識別モジュール）という具体的な文脈において登録及び暗号化技術を上述したが、本発明の基本原理は「ＳＩＭ」デバイスに限定されない。むしろ、本発明の基本原理は、暗号鍵セットを記憶するための安全な記憶装置を有する、いかなるタイプのデバイスを使用して実装されてもよい。更に、上記の実施形態は取り外し可能なＳＩＭデバイスを含むのに対し、一実施形態では、ＳＩＭデバイスは取り外し可能でないが、ＩｏＴデバイス自体が、ＩｏＴハブ１１０のプログラミングインターフェース１１０２に挿入されてもよい。
【００８３】
一実施形態では、ユーザがＳＩＭ（又は他のデバイス）をプログラミングすることを要するのではなく、ＳＩＭは、エンドユーザへの流通前に、ＩｏＴデバイス１０１に予めプログラミングされる。この実施形態において、ユーザがＩｏＴデバイス１０１をセットアップするとき、本明細書に記載される様々な技術が、ＩｏＴハブ１１０／ＩｏＴサービス１２０と新しいＩｏＴデバイス１０１との間で暗号鍵を安全に交換するために使用され得る。
【００８４】
例えば、図１２Ａに例示するように、各ＩｏＴデバイス１０１又はＳＩＭ  ４０１は、ＩｏＴデバイス１０１及び／又はＳＩＭ  １００１を一意的に識別するバーコード又はＱＲコード１５０１と共に梱包されていてもよい。一実施形態では、バーコード又はＱＲコード１２０１は、ＩｏＴデバイス１０１又はＳＩＭ  １００１の公開鍵の符号化表現を含む。代替的に、バーコード又はＱＲコード１２０１は、ＩｏＴハブ１１０及び／又はＩｏＴサービス１２０によって、公開鍵を識別又は生成するために使用されてもよい（例えば、安全な記憶装置内に既に記憶されている公開鍵に対するポインタとして使用される）。バーコード又はＱＲコード６０１は、別個のカードに印刷されてもよく（図１２Ａに示すように）、又はＩｏＴデバイス自体に直接印刷されてもよい。バーコードが印刷される場所に関わらず、一実施形態では、ＩｏＴハブ１１０には、バーコードを読み取り、得られたデータをＩｏＴハブ１１０上のセキュリティロジック１０１２及び／又はＩｏＴサービス１２０上のセキュリティロジック１０１３に提供するための、バーコードリーダ２０６が備わっている。次いで、ＩｏＴハブ１１０上のセキュリティロジック１０１２は、その安全な鍵ストア１０１１内にＩｏＴデバイスの公開鍵を記憶してもよく、ＩｏＴサービス１２０上のセキュリティロジック１０１３は、その安全な記憶装置１０２１内に公開鍵を（後の暗号化通信に使用するために）記憶してもよい。
【００８５】
一実施形態では、バーコード又はＱＲコード１２０１内に含まれるデータはまた、インストールされたＩｏＴアプリケーション又はＩｏＴサービスプロバイダにより設計されたブラウザベースのアプレットを用いて、ユーザデバイス１３５（例えば、ｉＰｈｏｎｅ又はＡｎｄｒｏｉｄデバイスなど）によりキャプチャされてもよい。キャプチャされると、バーコードデータは、安全な接続（例えば、セキュアソケットレイヤー（ＳＳＬ）接続など）を介して、ＩｏＴサービス１２０に安全に通信され得る。バーコードデータはまた、安全なローカル接続を介して（例えば、ローカルＷｉＦｉ又はＢｌｕｅｔｏｏｔｈ  ＬＥ接続を介して）クライアントデバイス１３５からＩｏＴハブ１１０に提供されてもよい。
【００８６】
ＩｏＴデバイス１０１上のセキュリティロジック１００２及びＩｏＴハブ１１０上のセキュリティロジック１０１２は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを使用して実装され得る。例えば、一実施形態では、セキュリティロジック１００２、１０１２は、ＩｏＴデバイス１０１とＩｏＴハブ１１０との間にローカル通信チャネル１３０を確立するために使用されるチップ（例えば、ローカルチャネル１３０がＢｌｕｅｔｏｏｔｈ  ＬＥである場合は、Ｂｌｕｅｔｏｏｔｈ  ＬＥチップ）内に実装される。セキュリティロジック１００２、１０１２の具体的な位置に関わらず、一実施形態では、セキュリティロジック１００２、１０１２は、ある特定のタイプのプログラムコードを実行するために安全な実行環境を確立するように設計される。これは、例えば、ＴｒｕｓｔＺｏｎｅ技術（一部のＡＲＭプロセッサで利用可能）及び／又はトラステッド・エグゼキューション・テクノロジー（Ｉｎｔｅｌにより設計）を使用することによって、実装され得る。当然のことながら、本発明の基本原理は、いかなる特定のタイプの安全な実行技術にも限定されない。
【００８７】
一実施形態では、バーコード又はＱＲコード１５０１は、各ＩｏＴデバイス１０１をＩｏＴハブ１１０とペアリングするために使用され得る。例えば、Ｂｌｕｅｔｏｏｔｈ  ＬＥデバイスをペアリングするために現在使用されている標準的な無線ペアリングプロセスを使用するのではなく、バーコード又はＱＲコード１５０１内に組み込まれたペアリングコードをＩｏＴハブ１１０に提供して、ＩｏＴハブを対応するＩｏＴデバイスとペアリングしてもよい。
【００８８】
図１２Ｂは、ＩｏＴハブ１１０上のバーコードリーダ２０６が、ＩｏＴデバイス１０１と関連するバーコード／ＱＲコード１２０１をキャプチャする一実施形態を例示する。上述したように、バーコード／ＱＲコード１２０１は、ＩｏＴデバイス１０１に直接印刷されてもよく、又はＩｏＴデバイス１０１と共に提供される別個のカードに印刷されてもよい。いずれの場合においても、バーコードリーダ２０６は、バーコード／ＱＲコード１２０１からペアリングコードを読み取り、このペアリングコードをローカル通信モジュール１２８０に提供する。一実施形態では、ローカル通信モジュール１２８０が、Ｂｌｕｅｔｏｏｔｈ  ＬＥチップ及び関連するソフトウェアであっても、本発明の基本原理は、いかなる特定のプロトコル標準にも限定されない。一旦ペアリングコードが受信されると、それは、ペアリングデータ１２８５を含む安全な記憶装置内に記憶され、そして、ＩｏＴデバイス１０１とＩｏＴハブ１１０とが自動的にペアリングされる。この方法でＩｏＴハブが新しいＩｏＴデバイスとペアリングされるたびに、そのペアリングに関するペアリングデータが、安全な記憶装置６８５内に記憶される。一実施形態では、ＩｏＴハブ１１０のローカル通信モジュール１２８０がペアリングコードを一旦受信すると、それは、このコードを鍵として使用することにより、ローカル無線チャネルを介したＩｏＴデバイス１０１との通信を暗号化してもよい。
【００８９】
同様に、ＩｏＴデバイス１０１側では、ローカル通信モジュール１５９０が、ＩｏＴハブとのペアリングを示すペアリングデータを、ローカルの安全な記憶デバイス１５９５内に記憶する。ペアリングデータ１２９５は、バーコード／ＱＲコード１２０１で識別される予めプログラミングされたペアリングコードを含んでもよい。ペアリングデータ１２９５はまた、安全なローカル通信チャネルを確立するために必要な、ＩｏＴハブ１１０上のローカル通信モジュール１２８０から受信されるペアリングデータ（例えば、ＩｏＴハブ１１０との通信を暗号化するための追加の鍵）を含んでもよい。
【００９０】
したがって、バーコード／ＱＲコード１２０１は、ペアリングコードが無線で送信されないので、現在の無線ペアリングプロトコルよりも遥かに安全な態様でローカルペアリングを実行するために使用され得る。加えて、一実施形態では、ペアリングに使用されるものと同じバーコード／ＱＲコード１２０１を使用して暗号鍵を識別し、ＩｏＴデバイス１０１からＩｏＴハブ１１０へ、かつＩｏＴハブ１１０からＩｏＴサービス１２０への安全な接続を構築することができる。
【００９１】
本発明の一実施形態にしたがってＳＩＭカードをプログラミングするための方法が、図１３に例示されている。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【００９２】
１３０１において、ユーザは、空のＳＩＭカードを有する新しいＩｏＴデバイスを受け取り、１６０２において、ユーザは、空のＳＩＭカードをＩｏＴハブに挿入する。１３０３において、ユーザは、１つ以上の暗号鍵のセットを用いて空のＳＩＭカードをプログラミングする。例えば、上述のように、一実施形態において、ＩｏＴハブは、公開／秘密鍵ペアをランダムに生成し、秘密鍵をＳＩＭカード上に、かつ公開鍵をそのローカルの安全な記憶装置内に記憶し得る。加えて、１３０４において、少なくとも公開鍵がＩｏＴサービスに送信され、それにより、公開鍵が使用されて、ＩｏＴデバイスを識別し、そしてＩｏＴデバイスとの暗号化された通信を確立し得る。上述したように、一実施形態では、「ＳＩＭ」カード以外のプログラマブルデバイスが、図１３に示す方法でＳＩＭカードと同じ機能を実行するために使用されてもよい。
【００９３】
新しいＩｏＴデバイスをネットワークに統合するための方法が、図１４に例示されている。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【００９４】
１４０１において、ユーザは、暗号鍵が予め割り当てられている新しいＩｏＴデバイスを受け取る。１４０２において、この鍵がＩｏＴハブに安全に提供される。上述のように、一実施形態では、これは、ＩｏＴデバイスに関連付けられたバーコードを読み取って、デバイスに割り当てられた公開／秘密鍵ペアの公開鍵を識別することを伴う。バーコードは、ＩｏＴハブによって直接読み取られても、又はアプリケーション若しくはブラウザを介してモバイルデバイスによってキャプチャされてもよい。別の実施形態では、Ｂｌｕｅｔｏｏｔｈ  ＬＥチャネル、近距離通信（ＮＦＣ）チャネル、又は安全なＷｉＦｉチャネルなどの安全な通信チャネルが、鍵の交換のためにＩｏＴデバイスとＩｏＴハブとの間に確立されてもよい。鍵の送信方法に関わらず、受信されると、鍵はＩｏＴハブデバイスの安全な鍵ストア内に記憶される。上述のように、セキュアエンクレーブ、トラステッド・エグゼキューション・テクノロジー（ＴＸＴ）、及び／又はＴｒｕｓｔｚｏｎｅなどの様々な安全な実行技術が、鍵の記憶及び保護のためにＩｏＴハブで使用され得る。加えて、８０３において、鍵は、ＩｏＴサービスに安全に送信され、ＩｏＴサービスは、この鍵をそれ自体の安全な鍵ストア内に記憶する。それは次いで、この鍵を使用して、ＩｏＴデバイスとの通信を暗号化し得る。この場合も、この交換は、証明書／署名付き鍵を使用して実行されてもよい。ハブ１１０内では、記憶された鍵の改変／追加／除去を防止することが特に重要である。
【００９５】
公開／秘密鍵を使用してコマンド／データをＩｏＴデバイスに安全に通信するための方法が、図１５に例示されている。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【００９６】
１５０１において、ＩｏＴサービスは、ＩｏＴデバイス公開鍵を使用してデータ／コマンドを暗号化することにより、ＩｏＴデバイスパケットを作成する。次いで、ＩｏＴサービスは、ＩｏＴハブの公開鍵を使用し、このＩｏＴデバイスパケットを暗号化して、ＩｏＴハブパケットを作成する（例えば、ＩｏＴデバイスパケット周囲のＩｏＴハブラッパーを作成する）。１５０２において、ＩｏＴサービスは、ＩｏＴハブパケットをＩｏＴハブに送信する。１５０３において、ＩｏＴハブは、ＩｏＴハブの秘密鍵を使用してＩｏＴハブパケットを復号することにより、ＩｏＴデバイスパケットを生成する。１５０４において、ＩｏＴハブは、次いでＩｏＴデバイスパケットをＩｏＴデバイスに送信し、このＩｏＴデバイスは、１５０５において、ＩｏＴデバイス秘密鍵を使用してＩｏＴデバイスパケットを復号することにより、データ／コマンドを生成する。１５０６において、ＩｏＴデバイスは、データ／コマンドを処理する。
【００９７】
対称鍵を使用するある実施形態において、対称鍵交換は、各デバイス間（例えば、各デバイスとハブと、及びハブとサービスとの間）でネゴシエートされ得る。鍵交換が完了すると、各送信デバイスは、対称鍵を使用して各送信を暗号化し、かつ／又はそれに署名し、その後、データを受信デバイスに送信する。
モノのインターネット（ＩｏＴ）システムに安全な通信チャネルを確立するための装置及び方法
【００９８】
本発明の一実施形態では、データの暗号化及び復号は、通信チャネル（例えば、ユーザのモバイルデバイス６１１、及び／又はＩｏＴハブ１１０等）をサポートするために使用される中間デバイスに関係なく、ＩｏＴサービス１２０と各ＩｏＴデバイス１０１との間で実行される。ＩｏＴハブ１１０を介して通信する一実施形態が、図１６Ａに例示され、そして、ＩｏＴハブを必要としない別の実施形態が、図１６Ｂに例示されている。
【００９９】
最初に図１６Ａを参照すると、ＩｏＴサービス１２０が、「サービスセッション鍵」１６５０のセットを管理する暗号化エンジン１６６０を含み、そして、各ＩｏＴデバイス１０１が、ＩｏＴデバイス１０１とＩｏＴサービス１２０との間の通信を暗号化／復号するための「デバイスセッション鍵」１６５１のセットを管理する暗号化エンジン１６６１を含んでいる。暗号化エンジンは、本明細書で説明されるセキュリティ／暗号化技術を実行するとき、様々なハードウェアモジュールに依存してもよく、そのようなモジュールは、（とりわけ）セッション公開／秘密鍵ペアを生成するための、及びペアの秘密セッション鍵へのアクセスを防止するためのハードウェアセキュリティモジュール１６３０〜１６３１と、派生秘密を使用して鍵ストリームを生成するための鍵ストリーム生成モジュール１６４０−１６４１と、を含む。一実施形態では、サービスセッション鍵１６５０とデバイスセッション鍵１６５１とは、関係付けられた公開／秘密鍵ペアを備える。例えば、一実施形態では、ＩｏＴデバイス１０１でのデバイスセッション鍵１６５１は、ＩｏＴサービス１２０の公開鍵と、ＩｏＴデバイス１０１の秘密鍵と、を含む。以下で詳細に論じるように、一実施形態では、安全な通信セッションを確立するために、公開／秘密セッション鍵ペア１６５０及び１６５１が、それぞれ、各暗号化エンジン１６６０及び１６６１によって使用されてＳＫＧＭ  １６４０〜１６４１によって次に使用される同じ秘密を生成し、それにより、ＩｏＴサービス１２０とＩｏＴデバイス１０１との間の通信を暗号化及び復号するための鍵ストリームを生成する。本発明の一実施形態に従う、秘密の生成及び使用に関連する更なる詳細が以下に示される。
【０１００】
図１６Ａでは、一旦秘密が鍵１６５０〜１６５１を使用して生成されると、クライアントは、クリアトランザクション１６１１によって示されるように、常にＩｏＴサービス１２０を通してＩｏＴデバイス１０１にメッセージを送信することになる。本明細書で使用される「クリア」は、根底にあるメッセージが本明細書で説明される暗号化技術を使用して暗号化されていないことを示す意味である。しかし、一実施形態では、例示したように、安全なソケット層（ＳＳＬ）チャネル、又は別の安全なチャネル（例えば、インターネットプロトコルセキュリティ（ＩＰＳＥＣ）チャネル）が、通信を保護するためにクライアントデバイス６１１とＩｏＴサービス１２０との間に確立される。ＩｏＴサービス１２０での暗号化エンジン１６６０は、次いで、生成された秘密を使用するメッセージを暗号化し、１６０２で暗号化されたメッセージをＩｏＴハブ１１０に送信する。一実施形態では、秘密を使用して直接メッセージを暗号化するよりむしろ、秘密及びカウンタ値が使用されて、各メッセージパケットを暗号化するために使用される鍵ストリームを生成する。この実施形態の詳細は、図１７を参照して以下で説明される。
【０１０１】
例示したように、ＳＳＬ接続又は別の安全なチャネルが、ＩｏＴサービス１２０とＩｏＴハブ１１０との間で確立されてもよい。ＩｏＴハブ１１０（これは一実施形態ではメッセージを復号する能力を有しない）は、１６０３において（例えば、Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＴＬＥ）通信チャネルを介して）暗号化されたメッセージをＩｏＴデバイスに送信する。ＩｏＴデバイス１０１上の暗号化エンジン１６６１は、次いで、秘密を使用してメッセージを復号し、そしてメッセージ内容を処理してもよい。秘密を使用して鍵ストリームを生成する実施形態では、暗号化エンジン１６６１は、秘密及びカウンタ値を使用して鍵ストリームを生成し、次いで、鍵ストリームを使用してメッセージパケットを復号してもよい。
【０１０２】
メッセージ自体は、ＩｏＴサービス１２０とＩｏＴデバイス１０１との間での任意形式の通信を含んでもよい。例えば、メッセージは、ＩｏＴデバイス１０１に、測定値を取得して結果をクライアントデバイス６１１に報告すること等の特定の機能を実行するように命令するコマンドパケットを備えてもよく、又は、ＩｏＴデバイス１０１の動作を構成するためのコンフィギュレーションデータを含んでもよい。
【０１０３】
応答が必要である場合、ＩｏＴデバイス１０１の暗号化エンジン１６６１は、秘密又は派生鍵ストリームを使用して応答を暗号化し、１６０４において、暗号化された応答をＩｏＴハブ１１０に送信し、そして、ＩｏＴハブは、１６０５において、ＩｏＴサービス１２０に応答を転送する。ＩｏＴサービス１２０の暗号化エンジン１６６０は、次いで、秘密又は派生鍵ストリームを使用して応答を復号し、そして、１６０６において（例えば、ＳＳＬ又は別の安全な通信チャネルを介して）クライアントデバイス６１１に、復号された応答を送信する。
【０１０４】
図１６Ｂは、ＩｏＴハブを必要としない実施形態を例示する。むしろ、この実施形態では、ＩｏＴデバイス１０１とＩｏＴサービス１２０との間の通信は、（例えば、図６〜図９Ｂに関して上述した実施形態におけるように）クライアントデバイス６１１によって生じる。この実施形態では、ＩｏＴデバイス１０１にメッセージを送信するために、クライアントデバイス６１１は、１６１１において、ＩｏＴサービス１２０にメッセージの非暗号化バージョンを送信する。暗号化エンジン１６６０は、秘密又は派生鍵ストリームを使用してメッセージを暗号化し、そして、１６１２において、暗号化されたメッセージをクライアントデバイス６１１に送信して戻す。クライアントデバイス６１１は、次いで、１６１３において、ＩｏＴデバイス１０１に暗号化されたメッセージを転送し、そして、暗号化エンジン１６６１は、秘密又は派生鍵ストリームを使用してメッセージを復号する。ＩｏＴデバイス１０１は、次いで、本明細書で説明されるようにメッセージを処理してもよい。応答が必要である場合、暗号化エンジン１６６１は、秘密を使用して応答を暗号化し、１６１４において、暗号化された応答をクライアントデバイス６１１に送信し、そして、クライアントデバイスは、１６１５において、暗号化された応答をＩｏＴサービス１２０に転送する。暗号化エンジン１６６０は、次いで、応答を復号し、１６１６において、復号された応答をクライアントデバイス６１１に送信する。
【０１０５】
図１７は、最初にＩｏＴサービス１２０とＩｏＴデバイス１０１との間で実行され得る鍵交換及び鍵ストリーム生成を例示する。一実施形態では、この鍵交換は、ＩｏＴサービス１２０及びＩｏＴデバイス１０１が新しい通信セッションを確立するたびに実行されてもよい。代替的に、鍵交換が実行され、そして、交換されたセッション鍵が特定の期間（例えば、１日、１週間等）使用されてもよい。中間デバイスが簡潔のために図１７に示されないが、通信は、ＩｏＴハブ１１０及び／又はクライアントデバイス６１１によって生じてもよい。
【０１０６】
一実施形態では、ＩｏＴサービス１２０の暗号化エンジン１６６０は、ＨＳＭ  １６３０（例えば、これはＡｍａｚｏｎ（登録商標）によって提供されるＣｌｏｕｄＨＳＭ等であってもよい）にコマンドを送信することにより、セッション公開／秘密鍵ペアを生成する。ＨＳＭ  １６３０は、その後、ペアの秘密セッション鍵へのアクセスを防止してもよい。同様に、ＩｏＴデバイス１０１の暗号化エンジンは、セッション公開／秘密鍵ペアを生成し、ペアのセッション秘密鍵へのアクセスを防止するＨＳＭ  １６３１（例えば、Ａｔｍｅｌ社（登録商標）からのＡｔｅｃｃ５０８  ＨＳＭ等）にコマンドを送信してもよい。当然のことながら、本発明の基本原理は、いかなる特定のタイプの暗号化エンジン又はメーカーにも限定されない。
【０１０７】
一実施形態では、ＩｏＴサービス１２０は、１７０１において、ＨＳＭ  １６３０を使用して生成されたそれ自体のセッション公開鍵をＩｏＴデバイス１０１に送信する。ＩｏＴデバイスは、それ自体のＨＳＭ  １６３１を使用してそれ自体のセッション公開／秘密鍵ペアを生成し、そして、１７０２において、それ自体のペアの公開鍵をＩｏＴサービス１２０に送信する。一実施形態では、暗号化エンジン１６６０〜１６６１が、楕円曲線ディフィーヘルマン（ＥＣＤＨ）プロトコルを使用し、このプロトコルは、楕円曲線公開−秘密鍵ペアを有する２つの関係者が共有秘密を確立することを可能にする匿名の鍵共有である。一実施形態では、これらの技術を使用して、１７０３において、ＩｏＴサービス１２０の暗号化エンジン１６６０が、ＩｏＴデバイスセッション公開鍵及びそれ自体のセッション秘密鍵を使用して秘密を生成する。同様に、１７０４において、ＩｏＴデバイス１０１の暗号化エンジン１６６１が、ＩｏＴサービス１２０セッション公開鍵及びそれ自体のセッション秘密鍵を使用して同一の秘密を独立に生成する。より詳細には、一実施形態で、ＩｏＴサービス１２０の暗号化エンジン１６６０は、（式）秘密＝ＩｏＴデバイスセッション公開鍵*ＩｏＴサービスセッション秘密鍵によって秘密を生成し、ここで、「*」は、ＩｏＴデバイスセッション公開鍵がＩｏＴサービスセッション秘密鍵によって小数点乗算されることを意味する。ＩｏＴデバイス１０１の暗号化エンジン１６６１は、（式）秘密＝ＩｏＴサービスセッション公開鍵*ＩｏＴデバイスセッション秘密鍵によって秘密を生成し、ここで、ＩｏＴサービスセッション公開鍵は、ＩｏＴデバイスセッション秘密鍵によって小数点乗算される。最終的に、ＩｏＴサービス１２０及びＩｏＴデバイス１０１は、両方とも、下記で説明するように通信を暗号化するために使用されるべき同一の秘密の生成を完了する。一実施形態では、暗号化エンジン１６６０〜１６６１は、それぞれＫＳＧＭ  １６４０〜１６４１等のハードウェアモジュールに基づいて、秘密を生成するための上記の動作を実行する。
【０１０８】
一旦秘密が決定されると、それは、データを直接暗号化及び復号するために、暗号化エンジン１６６０及び１６６１によって使用されてもよい。代替的に、一実施形態では、暗号化エンジン１６６０〜１６６１は、ＫＳＧＭ  １６４０〜１６４１にコマンドを送信して、各データパケットを暗号化／復号するための秘密を使用して新たな鍵ストリームを生成する（すなわち、新たな鍵ストリームデータ構造が各パケットに対して生成される）。具体的には、鍵ストリーム生成モジュール１６４０〜１６４１の一実施形態は、Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  ＭＯＤＥ（ＧＣＭ）を実装し、このモードでは、カウンタ値が各データパケットに対して増加させられ、そして、秘密と組み合せて使用されることにより鍵ストリームを生成する。したがって、ＩｏＴサービス１２０にデータパケットを送信するために、ＩｏＴデバイス１０１の暗号化エンジン１６６１は、秘密及び現在のカウンタ値を使用して、ＫＳＧＭ  １６４０〜１６４１に新たな鍵ストリームを生成させ、そして、次の鍵ストリームを生成するためのカウンタ値を増加させる。新たに生成された鍵ストリームが、次いで使用されて、ＩｏＴサービス１２０への送信の前に、データパケットを暗号化する。一実施形態では、鍵ストリームはデータとＸＯＲ演算されることにより、暗号化されたデータパケットを生成する。一実施形態では、ＩｏＴデバイス１０１は、暗号化されたデータパケットと共にカウンタ値をＩｏＴサービス１２０に送信する。ＩｏＴサービスの暗号化エンジン１６６０は、次いで、ＫＳＧＭ  １６４０と通信し、このＫＳＧＭは、受け取られたカウンタ値及び秘密を使用して鍵ストリーム（これは、同一の秘密及びカウンタ値が使用されるので同一の鍵ストリームであるはずである）を生成し、そして、生成された鍵ストリームを使用してデータパケットを復号する。
【０１０９】
一実施形態では、ＩｏＴサービス１２０からＩｏＴデバイス１０１に送信されるデータパケットは、同一の方法で暗号化される。具体的には、カウンタは、各データパケットに対して増加させられ、そして、秘密と共に使用されて新たな鍵ストリームを生成する。鍵ストリームは、次いで使用されてデータを暗号化し（例えば、データと鍵ストリームとのＸＯＲ演算を実行する）、そして、暗号化されたデータパケットが、カウンタ値と共にＩｏＴデバイス１０１に送信される。ＩｏＴデバイス１０１の暗号化エンジン１６６１は、次いでＫＳＧＭ１６４１と通信し、このＫＳＧＭは、カウンタ値及び秘密を使用して、データパケットを復号するために使用される同一の鍵ストリームを生成する。したがって、この実施形態では、暗号化エンジン１６６０〜１６６１は、それら自体のカウンタ値を使用して、データを暗号化するための鍵ストリームを生成し、そして、暗号化されたデータパケットと共に受け取られたカウンタ値を使用して、データを復号するための鍵ストリームを生成する。
【０１１０】
一実施形態では、各暗号化エンジン１６６０〜１６６１は、それが別の暗号化エンジンから受け取った最後のカウンタ値のトラックを保持し、そして、カウンタ値が順序を外れて受け取られたか否か、又は同一のカウンタ値が一度ならず受け取られたか否かを検出するための順序付けロジックを含む。カウンタ値が順序を外れて受け取られた場合、又は同一のカウンタ値が一度ならず受け取られた場合、このことは、反射攻撃が試みられていることを示す場合がある。それに応じて、暗号化エンジン１６６０〜１６６１は、通信チャネルから分離してもよく、及び／又はセキュリティ警報を生成してもよい。
【０１１１】
図１８は、４バイトのカウンタ値１８００、可変サイズの暗号化データフィールド１８０１、及び６バイトのタグ１８０２を備える本発明の一実施形態で使用される例示的な暗号化されたデータパケットを例示する。一実施形態では、タグ１８０２は、復号されたデータを（一旦それが復号されると）確認するための検証合計値を備えている。
【０１１２】
上述のように、一実施形態では、ＩｏＴサービス１２０とＩｏＴデバイス１０１との間で交換されるセッション公開／秘密鍵ペア１６５０〜１６５１は、定期的に及び／又は各新たな通信セッションの開始に応じて生成されてもよい。
【０１１３】
本発明の１つの実施形態は、ＩｏＴサービス１２０とＩｏＴデバイス１０１との間のセッションを認証するための追加の技術を実装する。具体的には、一実施形態では、マスター鍵ペア、ファクトリ鍵ペアのセット、及びＩｏＴサービス鍵ペアのセット、並びにＩｏＴデバイス鍵ペアのセットを含む公開／秘密鍵ペアの階層が使用される。一実施形態では、マスター鍵ペアは、別の鍵ペアの全てに対する信頼のルートを備え、そして、単一の非常に安全な場所に（例えば、本明細書で説明されるＩｏＴシステムを実装する組織の制御下に）維持される。マスター秘密鍵は、ファクトリ鍵ペア等の様々な別のキーペアにわたるサインを生成する（そして、それによって認証する）ために使用されてもよい。署名は、次いで、マスター公開鍵を使用して検証され得る。一実施形態では、ＩｏＴデバイスを製造する各ファクトリは、それ自体のファクトリ鍵ペアを割り当てられ、このファクトリ鍵ペアは、次にＩｏＴサービス鍵及びＩｏＴデバイス鍵を認証するため使用され得る。例えば、一実施形態では、ファクトリ秘密鍵が使用されて、ＩｏＴサービス公開鍵及びＩｏＴデバイス公開鍵にわたる署名を生成する。これらの署名は、次いで、対応するファクトリ公開鍵を使用して検証され得る。これらのＩｏＴサービス／デバイス公開鍵は、図１６Ａ〜図１６Ｂに関して上記した「セッション」公開／秘密鍵と同一のものではない点に留意されたい。上記のセッション公開／秘密鍵は一時的なものであり（すなわち、サービス／デバイスセッションのために生成される）、一方、ＩｏＴサービス／デバイス鍵ペアは恒久的なものである（すなわち、ファクトリで生成される）。
【０１１４】
マスター鍵、ファクトリ鍵、サービス／デバイス鍵の間の前述の関係を念頭に置いて、本発明の一実施形態は、ＩｏＴサービス１２０とＩｏＴデバイス１０１との間に認証及びセキュリティの追加の層を提供するために、以下の動作を実行する。
Ａ．一実施形態では、ＩｏＴサービス１２０は、最初に下記のことを含むメッセージを生成する：
１．ＩｏＴサービスの一意的なＩＤ：
・ＩｏＴサービスのシリアル番号；
・タイムスタンプ；
・この一意的なＩＤの署名に使用されるファクトリ鍵のＩＤ；
・一意的なＩＤ（すなわち、サービス）のクラス；
・ＩｏＴサービスの公開鍵
・一意的なＩＤにわたる署名
２．ファクトリ認証は以下を含む：
・タイムスタンプ
・認証の署名に使用されるマスター鍵のＩＤ
・ファクトリ公開鍵
・ファクトリ認証の署名
３．ＩｏＴサービスセッション公開鍵（図１６Ａ〜図１６Ｂに関して上記したような）
４．ＩｏＴサービスセッション公開鍵署名（例えば、ＩｏＴサービスの秘密鍵によって署名される）
Ｂ．一実施形態では、メッセージは、ネゴシエーションチャネル（下記の）のＩｏＴデバイスに送られる。ＩｏＴデバイスはメッセージを解析し、そして：
１．ファクトリ認証の署名を検証する（メッセージペイロードに存在する場合にのみ）
２．一意的なＩＤによって識別された鍵を使用して一意的なＩＤの署名を検証する
３．一意的なＩＤからのＩｏＴサービスの公開鍵を使用してＩｏＴサービスセッション公開鍵署名を検証する
４．ＩｏＴサービスの公開鍵及びＩｏＴサービスのセッション公開鍵を保存する
５．ＩｏＴデバイスセッション鍵ペアを生成する
Ｃ．ＩｏＴデバイスは、次いで、下記のことを含むメッセージを生成する：
１．ＩｏＴデバイスの一意的なＩＤ
・ＩｏＴデバイスシリアル番号
・タイムスタンプ
・この一意的なＩＤの署名に使用されるファクトリ鍵のＩＤ
・一意的なＩＤのクラス（すなわち、ＩｏＴデバイス）
・ＩｏＴデバイスの公開鍵
・一意的なＩＤの署名
２．ＩｏＴデバイスのセッション公開鍵
３．ＩｏＴデバイスの鍵によって署名されるもの（ＩｏＴデバイスセッション公開鍵＋ＩｏＴサービスセッション公開鍵）の署名
Ｄ．このメッセージが、ＩｏＴサービスに送信して戻される。ＩｏＴサービスがメッセージを解析し、そして：
１．ファクトリ公開鍵を使用して一意的なＩＤの署名を検証する
２．ＩｏＴデバイスの公開鍵を使用してセッション公開鍵の署名を検証する
３．ＩｏＴデバイスのセッション公開鍵を保存する
Ｅ．ＩｏＴサービスは、次いで、ＩｏＴサービスの鍵によって署名されたもの（ＩｏＴデバイスセッション公開鍵＋ＩｏＴサービスセッション公開鍵）の署名を含むメッセージを生成する。
Ｆ．ＩｏＴデバイスはメッセージを解析し、そして：
１．ＩｏＴサービスの公開鍵を使用してセッション公開鍵の署名を検証する
２．ＩｏＴデバイスセッション秘密鍵及びＩｏＴサービスのセッション公開鍵から鍵ストリームを生成する
３．ＩｏＴデバイスは、次いで、「メッセージング利用可能」メッセージを送信する。
Ｇ．ＩｏＴサービスは、次いで、下記のことを行う：
１．ＩｏＴサービスセッション秘密鍵及びＩｏＴデバイスのセッション公開鍵から鍵ストリームを生成する
２．下記のことを含むメッセージングチャネルに新たなメッセージを作成する：
・ランダムな２バイトの値を生成して記憶する
・ブーメラン属性ＩＤ（下記で論じる）及びランダムな値を有する属性メッセージを設定する
Ｈ．ＩｏＴデバイスが、メッセージを受け取り、そして：
１．メッセージの復号を試みる
２．表示された属性ＩＤに同一の値を有する更新を発する
Ｉ．ＩｏＴサービスは、ブーメラン属性更新を含むメッセージペイロードを認識し、そして：
１．それのペアリングされた状態を真に設定する
２．ネゴシエータチャネルのペアリング完了メッセージを送信する
Ｊ．ＩｏＴデバイスは、メッセージを受け取り、それのペアリングされた状態を真に設定する
【０１１５】
上記の技術が、「ＩｏＴサービス」及び「ＩｏＴデバイス」に関して説明されるが、本発明の基本原理が、ユーザクライアントデバイス、サーバ、及びインターネットサーバを含む任意の２つのデバイスの間に安全な通信チャネルを確立するために実装されてもよい。
【０１１６】
上記の技術は、（秘密が、１つの関係者から別の関係者に送信される現在のブルートゥース（登録商標）ペアリング技術とは対照的に）秘密鍵が空中を介して決して共有されないので、非常に安全である。会話全体を盗聴する攻撃者は、公開鍵を有することになるだけであり、その公開鍵は共有の秘密を生成するには不十分なものである。これらの技術は、また、署名された公開鍵を交換することによって中間者攻撃（man-in-the-middle attack）を防止する。更に、ＧＣＭ及び別個のカウンタが各デバイスにおいて使用されるので、任意の種類の「反射攻撃」（この場合、中間者がデータをキャプチャし、再びそれを送信する）が防止される。いくつかの実施形態は、また、非対称カウンタを使用することによって反射攻撃を防止する。
正式にペアリングするデバイスによらずにデータ及びコマンドを交換するための技術
【０１１７】
ＧＡＴＴは、Ｇｅｎｅｒｉｃ  Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｆｉｌｅについての頭字語であり、それは、２つのＢｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＴＬＥ）デバイスが、データを往復して転送する方法を規定する。ＧＡＴＴは、Ａｔｔｒｉｂｕｔｅ  Ｐｒｏｔｏｃｏｌ（ＡＴＴ）と呼ばれるジェネリックデータプロトコルを利用し、このプロトコルが使用することにより、単一のルックアップテーブルに、テーブル内の各エントリに対する１６ビットの特性ＩＤを使用してサービス、特性、及び関係付けられたデータを記憶する。その一方で「特性」が時として「属性」と呼ばれることに留意されたい。
【０１１８】
ブルートゥースデバイスにおいて、最も一般に使用される特性は、デバイス「名称」（特性ＩＤ  １０７５２（０×２Ａ００）を有する）である。例えば、ブルートゥースデバイスは、それの近傍の別のブルートゥースデバイスを、ＧＡＴＴを使用してそれらの別のブルートゥースデバイスによって発行された「名称」特性を読み取ることによって識別してもよい。したがって、ブルートゥースデバイスは、デバイスを正式にペアリング／結合することなくデータを交換するための固有の能力を有する（「ペアリング」と「結合」とが時として交換可能に使用される点に留意されたい。この議論の残りは、用語「ペアリング」を使用することになる）。
【０１１９】
本発明の一実施形態は、この能力を利用することにより、これらのデバイスと正式にペアリングすることなく、ＢＴＬＥ対応ＩｏＴデバイスと通信する。各個々のＩｏＴデバイスとペアリングすることは、各デバイスとのペアリングに時間を要するため、及び、一度に１つのペアリングされた接続しか確立できないため、非常に非効率となる。
【０１２０】
図１９は、ブルートゥース（ＢＴ）デバイス１９１０が、ペアリングされたＢＴ接続を正式に確立することなく、ＩｏＴデバイス１０１のＢＴ通信モジュール１９０１によってネットワークソケット抽象化を確立するという特定の一実施形態を例示する。ＢＴデバイス１９１０は、例えば図１６Ａに示すようなＩｏＴハブ１１０及び／又はクライアントデバイス６１１に含まれてもよい。例示したように、ＢＴ通信モジュール１９０１は、特性ＩＤ、それらの特性ＩＤと関連する名称、及びそれらの特性ＩＤに対する値のリストを含むデータ構造を維持する。各特性に対する値は、現在のＢＴ標準にしたがって特性ＩＤによって識別される２０バイトのバッファ内に記憶されてもよい。しかし、本発明の基本原理は、いかなる特定のバッファサイズにも限定されない。
【０１２１】
図１９の例では、「名称」特性は、「ＩｏＴデバイス１４」の特性値を割り当てられたＢＴ規定特性である。本発明の一実施形態は、ＢＴデバイス１９１０と安全な通信チャネルをネゴシエートするために使用されるべき追加の特性の第１のセットと、ＢＴデバイス１９１０との通信を暗号化するために使用されるべき追加の特性の第２のセットとを特定する。具体的には、例示した実施例において特性ＩＤ＜６５５３２＞によって識別される「ネゴシエーション書込み」特性が使用されて、発信ネゴシエーションメッセージを送信してもよく、そして、特性ＩＤ＜６５５３３＞によって識別される「ネゴシエーション読取り」特性が使用されて、着信ネゴシエーションメッセージを受け取ってもよい。「ネゴシエーションメッセージ」は、本明細書で説明するように、安全な通信チャネルを確立するためにＢＴデバイス１９１０及びＢＴ通信モジュール１９０１によって使用されるメッセージを含んでもよい。例として、図１７において、ＩｏＴデバイス１０１は、「ネゴシエーション読取り」特性＜６５５３３＞を介して、ＩｏＴサービスセッション公開鍵１７０１を受け取ってもよい。鍵１７０１は、ＩｏＴサービス１２０からＢＴＬＥ対応ＩｏＴハブ１１０又はクライアントデバイス６１１に送信されてもよく、次いでＧＡＴＴを使用して特性ＩＤ＜６５５３３＞によって識別されるネゴシエーション読取り値バッファに鍵１７０１を書き込んでもよい。ＩｏＴデバイスアプリケーションロジック１９０２は、次いで、特性ＩＤ＜６５５３３＞によって識別される値バッファから鍵１７０１を読み取ってもよく、そして、上記のようにそれを処理してもよい（例えば、それを使用して、秘密を生成する、及び秘密を使用して鍵ストリームを生成する等）。
【０１２２】
鍵１７０１が２０バイト（いくつかの現在の実装例における最大バッファサイズ）よりも大きい場合、それは、２０バイトの部分に書き込まれ得る。例えば、最初の２０バイトは、ＢＴ通信モジュール１９０３によって特性ＩＤ＜６５５３３＞に書き込まれ、ＩｏＴデバイスアプリケーションロジック１９０２によって読み取られてもよく、そして、ＩｏＴデバイスアプリケーションロジックは、次いで、確認応答（acknowledgement）メッセージを特性ＩＤ＜６５５３２＞によって識別されるネゴシエーション書込み値バッファに書き込んでもよい。ＧＡＴＴを使用して、ＢＴ通信モジュール１９０３は、特性ＩＤ＜６５５３２＞からこの確認応答を読み取ってもよく、それに応じて、特性ＩＤ＜６５５３３＞によって識別されるネゴシエーション読取り値バッファに鍵１７０１の次の２０バイトを書き込んでもよい。このようにして、特性ＩＤ＜６５５３２＞及び＜６５５３３＞によって規定されるネットワークソケット抽象化は、安全な通信チャネルを確立するために使用されるネゴシエーションメッセージを交換するために確立される。
【０１２３】
一実施形態では、一旦安全な通信チャネルが確立されると、第２のネットワークソケット抽象化が、（ＩｏＴデバイス１０１から暗号化されたデータパケットを送信するために）特性ＩＤ＜６５５３４＞、及び（ＩｏＴデバイスによって暗号化されたデータパケットを受信するために）特性ＩＤ＜６５５３３＞を使用して確立される。すなわち、ＢＴ通信モジュール１９０３が、送信するための暗号化されたデータパケット（例えば、図１６Ａの暗号化されたメッセージ１６０３等）を有するとき、それは、特性ＩＤ＜６５５３３＞によって識別されるメッセージ読取り値バッファを使用して、暗号化されたデータパケットの２０バイトを一度に書き込み始める。ＩｏＴデバイスアプリケーションロジック１９０２は、次いで、読取り値バッファから暗号化されたデータパケットの２０バイトを一度に読み取り、特性ＩＤ＜６５５３２＞によって識別される書込み値バッファを介して、必要に応じてＢＴ通信モジュール１９０３に確認応答メッセージを送信することになる。
【０１２４】
一実施形態では、下記のＧＥＴ、ＳＥＴ、及びＵＰＤＡＴＥのコマンドが使用されることにより、２つのＢＴ通信モジュール１９０１及び１９０３の間でデータ及びコマンドを交換する。例えば、ＢＴ通信モジュール１９０３は、特性ＩＤ＜６５５３３＞を識別し、そしてＳＥＴコマンドを含むパケットを送信することにより、ＩｏＴデバイスアプリケーションロジック１９０２によって次に読み取られてもよい特性ＩＤ＜６５５３３＞によって識別される値フィールド／バッファに書き込んでもよい。ＩｏＴデバイス１０１からデータを検索するために、ＢＴ通信モジュール１９０３は、特性ＩＤ＜６５５３４＞によって識別される値フィールド／バッファに向けられたＧＥＴコマンドを送信してもよい。ＧＥＴコマンドに応じて、ＢＴ通信モジュール１９０１は、特性ＩＤ＜６５５３４＞によって識別される値フィールド／バッファからのデータを含むＢＴ通信モジュール１９０３にＵＰＤＡＴＥパケットを送信してもよい。更に、ＵＰＤＡＴＥパケットは、ＩｏＴデバイス１０１の特定の属性の変化に応じて、自動的に送信されてもよい。例えば、ＩｏＴデバイスが照明システムと関連しており、そしてユーザが証明をオンにする場合、ＵＰＤＡＴＥパケットが送信されて、照明アプリケーションと関連するオン／オフ属性への変更を反映してもよい。
【０１２５】
図２０は、本発明の一実施形態に従う、ＧＥＴ、ＳＥＴ、及びＵＰＤＡＴＥのために使用される例示的なパケットフォーマットを例示する。一実施形態では、これらのパケットは、ネゴシエーションに続いて、メッセージ書込み＜６５５３４＞、及びメッセージ読取り＜６５５３３＞チャネルを介して送信される。ＧＥＴパケット２００１において、第１の１バイトのフィールドは、パケットをＧＥＴパケットとして識別する値（０×１０）を含む。第２の１バイトのフィールドは、現在のＧＥＴコマンドを一意的に識別する（すなわち、ＧＥＴコマンドが関連している現在のトランザクションを識別する）リクエストＩＤを含む。例えば、サービス又はデバイスから送信されるＧＥＴコマンドの各場合に、異なるリクエストＩＤが割り当てられてもよい。このことは、例えば、カウンタを増加させ、そして、カウンタ値をリクエストＩＤとして使用することによって実行されてもよい。しかし、本発明の基本原理は、リクエストＩＤを設定するためのいかなる特定の方法にも限定されない。
【０１２６】
２バイトの属性ＩＤは、パケットが向けられるアプリケーション特有の属性を識別する。例えば、ＧＥＴコマンドが図１９に例示するＩｏＴデバイス１０１に送信されている場合、属性ＩＤが使用されて、リクエストされている特定のアプリケーション特有の値を識別してもよい。上記の例に戻って、ＧＥＴコマンドは、照明システムの電力状態等のアプリケーション特有の属性ＩＤに向けられてもよく、この属性ＩＤは、照明の電力供給がオン又はオフ（例えば、１＝オン、０＝オフ）のいずれであるかを識別する値を含む。ＩｏＴデバイス１０１がドアと関連するセキュリティ装置である場合、値フィールドは、ドアの現在の状態（例えば、１＝開いている、０＝閉じている）を識別してもよい。ＧＥＴコマンドに応じて、応答が、属性ＩＤによって識別される現在の値を含んで送信されてもよい。
【０１２７】
図２０に例示するＳＥＴパケット２００２及びＵＰＤＡＴＥパケット２００３は、また、パケットのタイプ（すなわちＳＥＴ及びＵＰＤＡＴＥ）を識別する第１の１バイトのフィールドと、リクエストＩＤを含む第２の１バイトのフィールドと、アプリケーション定義属性を識別する２バイトの属性ＩＤフィールドと、を含む。更に、ＳＥＴパケットは、ｎバイトの値データフィールドに含まれたデータの長さを識別する２バイトの長さ値を含む。値データフィールドは、（例えば、ＩｏＴデバイスを電力低下させるために所望のパラメータを設定するため等の）ＩｏＴデバイスで実行されるべきコマンド、及び／又はいくつかの態様でＩｏＴデバイスの動作を構成するための構成データを含んでもよい。例えば、ＩｏＴデバイス１０１がファンの速度を制御する場合、値フィールドは、現在のファン速度を反映してもよい。
【０１２８】
ＵＰＤＡＴＥパケット２００３は、ＳＥＴコマンドの結果の更新を提供するために送信されてもよい。ＵＰＤＡＴＥパケット２００３は、ＳＥＴコマンドの結果に関係付けられたデータを含んでもよいｎバイトの値データフィールドの長さを識別するために２バイトの長さ値フィールドを含む。それに加えて、１バイトの更新状態フィールドは、更新されている変数の現在の状態を識別してもよい。例えば、ＳＥＴコマンドが、ＩｏＴデバイスによって制御された照明をオフにすることを試みた場合、更新状態フィールドは、照明がうまくオフにされたか否かを示してもよい。
【０１２９】
図２１は、ＳＥＴ及びＵＰＤＡＴＥコマンドを含む、ＩｏＴサービス１２０とＩｏＴデバイス１０１との間のトランザクションの例示的な順序を例示する。ＩｏＴハブ等の中間デバイス、及びユーザのモバイル装置は、本発明の基本原理を不明瞭にすることを避けるために示されてない。２１０１において、ＳＥＴコマンド２１０１が、ＩｏＴサービスからＩｏＴデバイス１０１に送信されて、ＢＴ通信モジュール１９０１によって受信され、このＢＴ通信モジュールは、それに応じて、２１０２において特性ＩＤによって識別されるＧＡＴＴ値バッファを更新する。ＳＥＴコマンドは、２１０３において、低電力マイクロコントローラ（ＭＣＵ）２００によって（又は、図１９に示すＩｏＴデバイスアプリケーションロジック１９０２等の低電力ＭＣＵにおいて実行されているプログラムコードによって）値バッファから読み取られる。２１０４において、ＭＣＵ  ２００又はプログラムコードは、ＳＥＴコマンドに応じて動作を実行する。例えば、ＳＥＴコマンドは、新たな温度等の新たな構成パラメータを規定する属性ＩＤを含んでもよく、又は（ＩｏＴデバイスを「オン」若しくは低電力状態に入らせるための）オン／オフ等の状態値を含んでもよい。したがって、２１０４において新たな値がＩｏＴデバイスで設定され、２１０５においてＵＰＤＡＴＥコマンドが戻され、そして、２１０６において実際の値がＧＡＴＴ値フィールドにおいて更新される。場合によっては、実際の値は、所望の値に等しくなる。別の場合では、更新された値が、異なってもよい（すなわち、ＩｏＴデバイス１０１が、あるタイプの値を更新するのに時間を要する場合があるからである）。最終的に、２１０７において、ＵＰＤＡＴＥコマンドは、ＧＡＴＴ値フィールドからの実際の値を含んでＩｏＴサービス１２０に送信されて戻る。
【０１３０】
図２２は、本発明の一実施形態に従う、ＩｏＴサービスとＩｏＴデバイスとの間に安全な通信チャネルを実装する方法を例示する。この方法は、上記のネットワークアーキテクチャの環境内に実装されてもよいが、いかなる特定のアーキテクチャにも限定されない。
【０１３１】
２２０１において、ＩｏＴサービスは、楕円曲線デジタル署名アルゴリズム（ＥＣＤＳＡ）認証を使用してＩｏＴハブと通信するための暗号化されたチャネルを作成する。２２０２において、ＩｏＴサービスは、セッション秘密を使用してＩｏＴデバイスパケットのデータ／コマンドを暗号化することにより、暗号化されたデバイスパケットを作成する。上記のように、セッション秘密は、ＩｏＴデバイス及びＩｏＴサービスによって独立して生成されてもよい。２２０３において、ＩｏＴサービスは、暗号化されたデバイスパケットを暗号化されたチャネルを介してＩｏＴハブに送信する。２２０４において、復号することなく、ＩｏＴハブは、暗号化されたデバイスパケットをＩｏＴデバイスに渡す。２２０５において、ＩｏＴデバイスは、セッション秘密を使用して、暗号化されたデバイスパケットを復号する。上記のように、一実施形態では、このことは、秘密及びカウンタ値（暗号化されたデバイスパケットによって提供される）を使用して鍵ストリームを生成し、次いで、鍵ストリームを使用してパケットを復号することによって達成されてもよい。２２０６において、ＩｏＴデバイスは、次いで、デバイスパケット内に含まれるデータ及び／又はコマンドを抽出して処理する。
【０１３２】
したがって、上記の技術を使用して、標準的なペアリング技術を使用してＢＴデバイスを正式にペアリングすることなく、双方向の安全なネットワークソケット抽象化が、２つのＢＴ対応デバイスの間に確立されてもよい。これらの技術は、ＩｏＴサービス１２０と通信するＩｏＴデバイス１０１に関して上記されるが、本発明の基本原理は、任意の２つのＢＴ対応デバイスの間でネゴシエートして安全な通信チャネルを確立するように実装されてもよい。
【０１３３】
図２３Ａ〜図２３Ｃは、本発明の一実施形態に従う、デバイスをペアリングするための詳細な方法を例示する。この方法は、上記のシステムアーキテクチャの環境内に実装されてもよいが、いかなる特定のシステムアーキテクチャにも限定されない。
【０１３４】
２３０１において、ＩｏＴサービスは、ＩｏＴサービスのシリアル番号及び公開鍵を含むパケットを作成する。２３０２において、ＩｏＴサービスは、ファクトリ秘密鍵を使用してパケットに署名する。２３０３において、ＩｏＴサービスは、暗号化されたチャネルを介してＩｏＴハブにパケットを送信し、そして、２３０４において、ＩｏＴハブは、暗号化されていないチャネルを介してＩｏＴデバイスにパケットを転送する。２３０５において、ＩｏＴデバイスは、パケットの署名を検証し、そして、２３０６において、ＩｏＴデバイスは、ＩｏＴデバイスのシリアル番号及び公開鍵を含むパケットを生成する。２３０７において、ＩｏＴデバイスは、ファクトリ秘密鍵を使用してパケットに署名し、そして、２３０８において、ＩｏＴデバイスは、暗号化されていないチャネルを介してＩｏＴハブにパケットを送信する。
【０１３５】
２３０９において、ＩｏＴハブは、暗号化されたチャネルを介してＩｏＴサービスにパケットを転送し、そして、２３１０において、ＩｏＴサービスは、パケットの署名を検証する。２３１１において、ＩｏＴサービスは、セッション鍵ペアを生成し、そして、２３１２において、ＩｏＴサービスは、セッション公開鍵を含むパケットを生成する。ＩｏＴサービスは、次いで、２３１３において、ＩｏＴサービス秘密鍵によってパケットに署名し、そして、２３１４において、ＩｏＴサービスは、暗号化されたチャネルを介してＩｏＴハブにパケットを送信する。
【０１３６】
図２３Ｂを参照すると、ＩｏＴハブは、２３１５において、暗号化されていないチャネルを介してＩｏＴデバイスにパケットを転送し、そして、２３１６において、ＩｏＴデバイスは、パケットの署名を検証する。２３１７において、ＩｏＴデバイスは、（例えば、上記の技術を使用して）セッション鍵ペアを生成し、そして、２３１８において、ＩｏＴデバイスパケットは、ＩｏＴデバイスセッション公開鍵を含んで生成される。２３１９において、ＩｏＴデバイスは、ＩｏＴデバイスパケットをＩｏＴデバイス秘密鍵によって署名する。２３２０において、ＩｏＴデバイスは、暗号化されていないチャネルを介してＩｏＴハブにパケットを送信し、そして、２３２１において、ＩｏＴハブは、暗号化されたチャネルを介してＩｏＴサービスにパケットを転送する。
【０１３７】
２３２２において、ＩｏＴサービスは、（例えば、ＩｏＴデバイス公開鍵を使用して）パケットの署名を検証し、そして、２３２３において、ＩｏＴサービスは、ＩｏＴサービス秘密鍵及びＩｏＴデバイス公開鍵を使用してセッション秘密を生成する（これは詳細に上記されている）。２３２４において、ＩｏＴデバイスは、ＩｏＴデバイス秘密鍵及びＩｏＴサービス公開鍵を使用してセッション秘密を生成し（これも上記されている）、そして、２３２５において、ＩｏＴデバイスは、乱数を発生させて、セッション秘密を使用してそれを暗号化する。２３２６において、ＩｏＴサービスは、暗号化されたチャネルを介してＩｏＴハブに暗号化されたパケットを送信する。２３２７において、ＩｏＴハブは、暗号化されていないチャネルを介してＩｏＴデバイスに暗号化されたパケットを転送する。２３２８において、ＩｏＴデバイスは、セッション秘密を使用してパケットを復号する。
【０１３８】
図２３Ｃを参照すると、ＩｏＴデバイスは、２３２９において、セッション秘密を使用してパケットを再暗号化し、そして、２３３０において、ＩｏＴデバイスは、暗号化されていないチャネルを介してＩｏＴハブに暗号化されたパケットを送信する。２３３１において、ＩｏＴハブは、暗号化されたチャネルを介してＩｏＴサービスに暗号化されたパケットを転送する。ＩｏＴサービスは、２３３２において、セッション秘密を使用してパケットを復号する。２３３３において、ＩｏＴサービスは、乱数が、それが送信した乱数と整合することを検証する。ＩｏＴサービスは、次いで、２３３４において、ペアリングが完了したことを示すパケットを送信し、そして、２３３５において、全ての後続のメッセージが、セッション秘密を使用して暗号化される。
【０１３９】
本発明の実施形態は、上で説明した様々な工程を含み得る。本工程は、汎用又は特殊目的のプロセッサに本工程を実行させるために使用され得る、機械実行可能な命令において具現化することができる。代替的に、これらの工程は、工程を実行するためのハードワイヤードロジックを含む特定のハードウェア構成要素によって、又はプログラミングされたコンピュータ構成要素及びカスタムハードウェア構成要素の任意の組み合わせによって、実行することができる。
【０１４０】
本明細書に記載される場合に、命令は、ある特定の動作を行うように構成されるか、又は所定の機能若しくはソフトウェア命令が非一時的コンピュータ可読媒体中に具現化されたメモリ内に記憶されている、特定用途向け集積回路（ＡＳＩＣ）などの、ハードウェアの特定の構成を指し得る。したがって、図面に示される技術は、１つ以上の電子デバイス（例えば、エンドステーション、ネットワーク要素など）上に記憶及び実行されるコード及びデータを使用して実装され得る。そのような電子デバイスは、非一時的コンピュータ機械可読記憶媒体（例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、相変化メモリ）、並びに一時的なコンピュータ機械可読通信媒体（例えば、搬送波、赤外線信号、デジタル信号などの電気的、光学的、音響的又は他の形態の伝搬信号）などのコンピュータ機械可読記憶媒体を使用して、コード及びデータを記憶及び（内部で及び／又はネットワークを介して他の電子デバイスと）通信する。加えて、そのような電子デバイスは、典型的に、１つ以上の記憶デバイス（非一時的機械可読記憶媒体）、ユーザ入力／出力デバイス（例えば、キーボード、タッチスクリーン、及び／又はディスプレイ）、並びにネットワーク接続などの、１つ以上の他の構成要素に連結された１つ以上のプロセッサのセットを含む。プロセッサの組と他の構成要素との連結は、典型的には、１つ以上のバス及びブリッジ（バスコントローラとも呼ばれる）を通じて行われる。記憶デバイスとネットワークトラフィックを運ぶ信号のそれぞれは、１つ以上の機械可読記憶媒体及び機械可読通信媒体を表す。したがって、所与の電子デバイスの記憶デバイスは、その電子デバイスの１つ以上のプロセッサのセット上で実行するためのコード及び／又はデータを、典型的に記憶する。当然のことながら、本発明の実施形態の１つ以上の部分は、ソフトウェア、ファームウェア、及び／又はハードウェアの異なる組み合わせを使用して実装されてもよい。
【０１４１】
この詳細な説明全体を通じて、説明を目的として、本発明の完全な理解を提供するために、多数の特定の詳細を記載した。しかしながら、本発明は、これらの具体的な詳細の一部がなくても実施され得ることは、当業者にとって明らかであろう。ある特定の例では、既知の構造及び機能は、本発明の主題を不明瞭にすることを回避するために、詳述しなかった。したがって、本発明の範囲及び趣旨は、以下の特許請求の範囲の観点から判断されるべきである。
【図１Ａ】
2018525891.tif 000003
【図１Ｂ】
2018525891.tif 000004
【図２】
2018525891.tif 000005
【図３】
2018525891.tif 000006
【図４Ａ】
2018525891.tif 000007
【図４Ｂ】
2018525891.tif 000008
【図５】
2018525891.tif 000009
【図６】
2018525891.tif 000010
【図７】
2018525891.tif 000011
【図８】
2018525891.tif 000012
【図９Ａ】
2018525891.tif 000013
【図９Ｂ】
2018525891.tif 000014
【図１０】
2018525891.tif 000015
【図１１】
2018525891.tif 000016
【図１２Ａ】
2018525891.tif 000017
【図１２Ｂ】
2018525891.tif 000018
【図１３】
2018525891.tif 000019
【図１４】
2018525891.tif 000020
【図１５】
2018525891.tif 000021
【図１６Ａ】
2018525891.tif 000022
【図１６Ｂ】
2018525891.tif 000023
【図１７】
2018525891.tif 000024
【図１８】
2018525891.tif 000025
【図１９】
2018525891.tif 000026
【図２０】
2018525891.tif 000027
【図２１】
2018525891.tif 000028
【図２２】
2018525891.tif 000029
【図２３Ａ】
2018525891.tif 000030
【図２３Ｂ】
2018525891.tif 000031
【図２３Ｃ】
2018525891.tif 000032
【国際調査報告】
2018525891.tif 000033
2018525891.tif 000034
2018525891.tif 000035