(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-06
(45)【発行日】2022-01-21
(54)【発明の名称】モノのインターネット(IoT)デバイスを制御するための二次の通信チャネルを確立するためのシステム及び方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20220114BHJP
G06F 21/31 20130101ALI20220114BHJP
G06F 21/62 20130101ALI20220114BHJP
H04L 67/00 20220101ALI20220114BHJP
H04W 4/70 20180101ALI20220114BHJP
H04W 12/04 20210101ALI20220114BHJP
H04W 76/19 20180101ALI20220114BHJP
【FI】
H04L9/08
G06F21/31
G06F21/62
H04L67/00
H04W4/70
H04W12/04
H04W76/19
(21)【出願番号】P 2018531057
(86)(22)【出願日】2016-12-14
(86)【国際出願番号】 US2016066513
(87)【国際公開番号】W WO2017106258
(87)【国際公開日】2017-06-22
【審査請求日】2019-12-16
(32)【優先日】2015-12-14
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2015-12-14
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2015-12-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515290745
【氏名又は名称】アフェロ インコーポレイテッド
【氏名又は名称原語表記】Afero, Inc.
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100088694
【氏名又は名称】弟子丸 健
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】ブリット ジョー
(72)【発明者】
【氏名】ジマーマン スコット
(72)【発明者】
【氏名】ホランド シャノン
(72)【発明者】
【氏名】ザカリア オマール
【審査官】吉田 歩
(56)【参考文献】
【文献】国際公開第2015/002581(WO,A1)
【文献】特表2006-526184(JP,A)
【文献】米国特許第07055027(US,B1)
【文献】米国特許第08782774(US,B1)
【文献】特開2012-204919(JP,A)
【文献】特開平01-307341(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/31
G06F 21/62
G06F 13/00
H04W 4/70
H04W 12/04
H04W 76/19
(57)【特許請求の範囲】
【請求項1】
モノのインターネット(IoT)デバイスとクライアントデバイスとの間に二次の通信チャネルを確立する方法であって、
一次の鍵のセットを使用して前記IoTデバイスとIoTサービスとの間に一次の安全な通信チャネルを前記IoTデバイスによって確立することと、
前記一次の安全な通信チャネルを使用して二次の鍵交換を前記IoTデバイス
によって実行することであって、前記クライアントデバイス及び前記IoTデバイスは、それぞれ前記二次の鍵交換の後に二次の鍵のセットを提供される、ことと、
前記クライアントデバイスのアプリケーション(アプリ)からパスコードを前記IoTデバイスによって受信することであって、前記クライアントデバイスのユーザが前記パスコードを選び、前記パスコードは、前記一次の安全な通信チャネルを介して前記IoTデバイスに送信される、ことと
前記IoTデバイスによって、前記IoTデバイスに前記パスコードを記憶することと、
前記IoTデバイス及び/または前記クライアントデバイスによって、前記一次の安全な通信チャネルが動作不能であることを検出することと、
それに応じて、前記IoTデバイス及び/または前記クライアントデバイスによって、前記二次の鍵のセットを使用して、前記クライアントデバイスと前記IoTデバイスとの間に二次の安全な無線接続を確立することと、
前記IoTデバイスによって、前記ユーザに前記パスコードを前記クライアントデバイスから入力することを要求することと、
前記ユーザが正しいパスコードを前記クライアントデバイスから入力したときだけ、前記クライアントデバイスに、前記二次の安全な無線接続を介して前記IoTデバイスによって利用可能にされたデータ及び/又は機能へのアクセスを前記IoTデバイスによって提供することと、
を含む、方法。
【請求項2】
前記二次の安全な無線接続を介する前記データ及び/又は機能へのアクセスは、前記一次の安全な通信チャネルを介して接続されるときよりも前記データ及び/又は機能へのより限定されたアクセスを含む、請求項1に記載の方法。
【請求項3】
前記二次の安全な無線接続を確立すると、前記ユーザに前記パスコードを入力することを促すために、前記クライアントデバイスの前記アプリを実行することを更に含み、前記パスコードは、前記IoTデバイスが前記データ及び/又は機能へのアクセスを提供する前に、前記アプリから前記IoTデバイスに送信される、請求項1に記載の方法。
【請求項4】
前記IoTデバイスは、無線ドアロックを備え、前記二次の安全な通信チャネルを介してアクセスされるべき少なくとも1つの機能が、前記無線ドアロックをロック解除することを含む、請求項3に記載の方法。
【請求項5】
一次の鍵のセットを使用して、前記IoTデバイスとIoTサービスとの間に一次の安全な通信チャネルを確立することが、
IoTハブ又は前記クライアントデバイスを通して前記IoTサービスと前記IoTデバイスとの間に通信を確立することと、
サービス公開鍵及びサービス秘密鍵を前記IoTサービス上の第1の暗号化エンジンの鍵生成ロジックによって生成することと、
デバイス公開鍵及びデバイス秘密鍵を前記IoTデバイス上の第2の暗号化エンジンの鍵生成ロジックによって生成することと、
前記サービス公開鍵を前記第1の暗号化エンジンから前記第2の暗号化エンジンに送信し、前記デバイス公開鍵を前記第2の暗号化エンジンから前記第1の暗号化エンジンに送信することと、
前記デバイス公開鍵及び前記サービス秘密鍵を使用して秘密を生成することと、
前記サービス公開鍵及び前記デバイス秘密鍵を使用して同一の前記秘密を生成することと、
前記秘密を使用して又は前記秘密から派生したデータ構造を使用して、前記第1の暗号化エンジンと前記第2の暗号化エンジンとの間で送信されるデータパケットを暗号化及び復号することと、
を含む、請求項1に記載の方法。
【請求項6】
前記鍵生成ロジックは、ハードウェアセキュリティモジュール(HSM)を備える、請求項5に記載の方法。
【請求項7】
前記秘密から派生した前記データ構造は、前記第1の暗号化エンジンによって生成された第1の鍵ストリームと、前記第2の暗号化エンジンによって生成された第2の鍵ストリームと、を備える、請求項6に記載の方法。
【請求項8】
第1のカウンタは、前記第1の暗号化エンジンと関連し、第2のカウンタは、前記第2の暗号化エンジンと関連し、前記第1の暗号化エンジンは、前記第2の暗号化エンジンに送信される各データパケットに応じる前記第1のカウンタを増加させ、前記第2の暗号化エンジンは、前記第1の暗号化エンジンに送信される各データパケットに応じる前記第2のカウンタを増加させる、請求項7に記載の方法。
【請求項9】
前記第1の暗号化エンジンは、前記第1のカウンタの現在のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成し、前記第2の暗号化エンジンは、前記第2のカウンタの現在のカウンタ値及び前記秘密を使用して前記第2の鍵ストリームを生成する、請求項8に記載の方法。
【請求項10】
前記第1の暗号化エンジンは、前記第1のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成するための楕円曲線方法(ECM)モジュールを備え、前記第2の暗号化エンジンは、前記第1のカウンタ値及び前記秘密を使用して前記第2の鍵ストリームを生成するためのECMモジュールを備える、請求項9に記載の方法。
【請求項11】
前記第1の暗号化エンジンは、前記第1の鍵ストリームを使用して第1のデータパケットを暗号化することにより、第1の暗号化されたデータパケットを生成し、
前記第1の暗号化されたデータパケットを前記第1のカウンタの現在のカウンタ値と共に前記第2の暗号化エンジンに送信する、請求項9に記載の方法。
【請求項12】
前記第2の暗号化エンジンは、前記第1のカウンタの現在のカウンタ値及び前記秘密を使用して前記第1の鍵ストリームを生成し、前記第1の鍵ストリームを使用して前記第1の暗号化されたデータパケットを復号する、請求項11に記載の方法。
【請求項13】
モノのインターネット(IoT)ロジックデバイスとクライアントデバイスとの間に二次の通信チャネルを確立するシステムであって、
前記IoTロジックデバイス、前記クライアントデバイス及び認証回路を備え、
前記IoTロジックデバイスは、一次の鍵のセットを使用してIoTサービスとの一次の安全な通信チャネルを確立し、
前記IoTロジックデバイスは、前記一次の安全な通信チャネルを使用して二次の鍵交換を実行し、
前記クライアントデバイス及び前記IoTロジックデバイスは、前記二次の鍵交換の後に、それぞれ二次の鍵のセットを提供され、
前記認証回路は、前記IoTロジックデバイスにパスコードを記憶し、前記認証回路が前記IoTロジックデバイスに前記パスコードを記憶する前に前記クライアントデバイスのアプリケーション(アプリ)から前記パスコードは最初に受信され、前記クライアントデバイスのユーザは前記パスコードを選択し、前記パスコードは前記一次の安全な通信チャネルを介して前記IoTロジックデバイスへ送信され、
前記認証回路は前記IoTロジックデバイスに前記パスコードを記憶し、
前記IoTロジックデバイス及び/又は前記クライアントデバイスは、前記一次の安全な通信チャネルが動作不能であることを検出し、
前記IoTロジックデバイス及び/又は前記クライアントデバイスは、それに応じて、前記二次の鍵のセットを使用して前記クライアントデバイスと前記IoTロジックデバイスとの間に二次の安全な無線接続を確立し、
前記認証回路は前記クライアントデバイスから前記パスコードを入力するように前記ユーザを促すためのものであり、
前記IoTロジックデバイスは、前記ユーザが前記クライアントデバイスから正しいパスコードを入力したときだけ、前記クライアントデバイスに、前記二次の安全な無線接続を介して前記IoTロジックデバイスによって利用可能にされたデータ及び/又は機能へのアクセスを提供される、システム。
【請求項14】
前記二次の安全な無線接続を介するデータ及び/又は機能への前記アクセスは、前記一次の安全な通信チャネルを介して接続されるときよりも、前記データ及び/又は機能へのより限定されたアクセスを含む、請求項13に記載のシステム。
【請求項15】
前記クライアントデバイスで実行される前記アプリが、前記二次の安全な無線接続を確立すると、前記ユーザに前記パスコードを入力することを促すことを更に備え、前記パスコードは、前記IoTロジックデバイスが前記データ及び/又は機能へのアクセスを提供する前に、前記アプリから前記IoTロジックデバイスに送信される、請求項13に記載のシステム。
【請求項16】
前記IoTロジックデバイスは、無線ドアロックを備え、前記二次の安全な通信チャネルを介してアクセスされるべき少なくとも1つの機能が、前記無線ドアロックをロック固定又はロック解除することを含む、請求項15に記載のシステム。
【請求項17】
一次の鍵のセットを使用して、前記IoTロジックデバイスと前記IoTサービスとの間に一次の安全な通信チャネルを確立することが、
前記IoTロジックデバイスが、IoTハブ又は前記クライアントデバイスを通して前記IoTサービスとの通信を確立することと、
サービス公開鍵及びサービス秘密鍵を生成するための鍵生成ロジックを備える、IoTサービス上の第1の暗号化エンジンと、
デバイス公開鍵及びデバイス秘密鍵を生成するための鍵生成ロジックを備える、IoTロジックデバイス上の第2の暗号化エンジンと、を備え、
第1の暗号化エンジンは、第2の暗号化エンジンにサービス公開鍵を送信するためのものであって、第2の暗号化エンジンは、第1の暗号化エンジンにデバイス公開鍵を送信するためのものであり、
第1の暗号化エンジンは、デバイス公開鍵及びサービス秘密鍵を使用して秘密を生成するためのものであり、
前記第2の暗号化エンジンは、前記サービス公開鍵及び前記デバイス秘密鍵を使用して同一の前記秘密を生成するためのものであり、
いったん前記秘密が生成されると、前記第1の暗号化エンジン及び前記第2の暗号化エンジンは、前記秘密を使用して又は前記秘密から派生したデータ構造を使用して、前記第1の暗号化エンジンと前記第2の暗号化エンジンとの間で送信されるデータパケットを暗号化及び復号する、請求項13に記載のシステム。
【請求項18】
前記鍵生成ロジックは、ハードウェアセキュリティモジュール(HSM)を備える、請求項17に記載のシステム。
【請求項19】
前記秘密から派生したデータ構造は、前記第1の暗号化エンジンによって生成された第1の鍵ストリームと、前記第2の暗号化エンジンによって生成された第2の鍵ストリームと、を備える、請求項18に記載のシステム。
【請求項20】
前記第1の暗号化エンジンと関連する第1のカウンタと、前記第2の暗号化エンジンと関連する第2のカウンタと、を更に備え、前記第1の暗号化エンジンは、前記第2の暗号化エンジンに送信される各データパケットに応じる前記第1のカウンタを増加させ、前記第2の暗号化エンジンは、前記第1の暗号化エンジンに送信される各データパケットに応じる前記第2のカウンタを増加させる、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(背景)
本発明は、概して、コンピュータシステムの分野に関する。より具体的には、本発明は、IoTデバイスを制御するための二次の通信チャネルを確立するためのシステム及び方法に関する。
【背景技術】
【0002】
「モノのインターネット」は、インターネットインフラストラクチャ内に、一意的に識別可能に組み込まれたデバイスの相互接続を指す。最終的に、IoTは、事実上あらゆるタイプの物理的なモノが、それ自体若しくはその周囲についての情報を提供し得、及び/又はインターネットをわたってクライアントデバイスを介して遠隔制御され得る、広範囲の新しいタイプのアプリケーションをもたらすことが期待される。
【0003】
本出願の譲受人は、IoTデバイスが安全な鍵交換を実行してIoTサービスとの安全な通信チャネルを確立するシステムを開発した。いったん安全な通信チャネルが確立されると、IoTサービスは、IoTデバイスからのデータを安全に制御して受信してもよい。しかし、場合によっては、例えば、IoTサービスがアクセス不可能であるとき(例えば、ネットワークコネクティビティが失われているとき)等に、第2のチャネルがIoTデバイスによって確立されるのを可能にすることが好ましい場合がある。
本発明のより良好な理解は、以下の図面と併せた以下の詳細な説明から得ることができる。
【図面の簡単な説明】
【0004】
【
図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デバイス上に鍵を記憶するために加入者識別モジュール(subscriber identity module)(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】本発明の一実施形態による安全なペアリングのための方法を例示する。
【
図24】本発明の一実施形態によるシステムアーキテクチャを例示する。
【
図25】本発明の一実施形態による一体式の安全IoTデバイスを例示する。
【
図26】一体式の安全IoTデバイスが、本発明の一実施形態によるドアに結合されてもよいことをここに例示する。
【
図27A】圧力センサを備える本発明の別の実施形態を例示する。
【
図27B】圧力センサを備える本発明の別の実施形態を例示する。
【
図28】本発明の一実施形態による方法を例示する。
【
図29】二次の通信チャネルを支えるシステムアーキテクチャを例示する。
【
図30】二次の通信チャネルを実装するための方法を例示する。
【
図31】データ送信状態を識別するためのアドバタイジング間隔を調節するための本発明の一実施形態を例示する。
【
図32】本発明の一実施形態による方法を例示する。
【
図33】本発明の一実施形態による典型的なコマンド及び応答パターンを例示する。
【
図34】無線通信パターンを不明瞭化するための本発明の一実施形態を例示する。
【
図35】IoTサービスとIoTデバイス101との間の通信を曖昧化するための別の実施形態を例示する。
【
図36】本発明の一実施形態による方法を例示する。
【
図37】本発明の一実施形態による別の方法を例示する。
【
図38】データ送信状態を識別するためのアドバタイジング間隔を調節するための本発明の一実施形態を例示する。
【
図39】本発明の一実施形態による方法を例示する。
【発明を実施するための形態】
【0005】
以下の説明では、説明を目的として、以下に記載される本発明の実施形態の完全な理解を提供するために、多数の特定の詳細が示される。しかしながら、本発明の実施形態がこれらの特定の詳細のうちのいくつかを用いずに実施され得ることは、当業者には明らかである。他の例では、本発明の実施形態の根本的な原理を不明瞭にすることを避けるために、周知の構造及びデバイスをブロック図の形態で示す。
【0006】
本発明の一実施形態は、新しいIoTデバイス及びアプリケーションを設計及び構築するために開発者によって利用され得るモノのインターネット(IoT)プラットフォームを含む。具体的には、一実施形態は、既定のネットワーキングプロトコルスタックを含むIoTデバイス、及びIoTデバイスがインターネットに連結されるIoTハブ用の基本ハードウェア/ソフトウェアプラットフォームを含む。加えて、一実施形態は、IoTサービスを含み、これを通じてIoTハブ及び接続されたIoTデバイスが、以下に説明するようにアクセスされ、管理され得る。加えて、IoTプラットフォームの一実施形態は、IoTサービス、ハブ、及び接続されたデバイスにアクセスし、それらを構成する、IoTアプリケーション又はウェブアプリケーション(例えば、クライアントデバイス上で実行される)を含む。既存のオンライン小売業者及び他のウェブサイトオペレータは、本明細書に記載されたIoTプラットフォームを利用して、既存のユーザベースに独自のIoT機能を容易に提供することができる。
【0007】
図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など)に、アクセス可能にされてもよい。
【0008】
IoTデバイス101~105には、それ自体及びその周辺に関する情報を収集し、収集された情報を、IoTハブ110を介してIoTサービス120、ユーザデバイス135、及び/又は外部ウェブサイト130に提供するための様々なタイプのセンサが備わっていてもよい。IoTデバイス101~105のうちのいくつかは、IoTハブ110を介して送信される制御コマンドに応答して、指定された機能を実行することができる。IoTデバイス101~105によって収集される情報の様々な具体例及び制御コマンドが以下に提供される。以下に説明する一実施形態では、IoTデバイス101は、ユーザ選択を記録し、ユーザ選択をIoTサービス120及び/又はウェブサイトに送信するように設計されたユーザ入力デバイスである。
【0009】
一実施形態では、IoTハブ110は、4G(例えば、モバイルWiMAX、LTE)又は5Gセルラーデータサービスなどのセルラーサービス115を介してインターネット220への接続を確立するセルラー無線を含む。代替的に、又は加えて、IoTハブ110は、WiFiアクセスポイント又はルータ116を介してWiFi接続を確立するためのWiFi無線を含むことができ、これは、IoTハブ110をインターネットに(例えば、エンドユーザにインターネットサービスを提供するインターネットサービスプロバイダを介して)連結する。当然のことながら、本発明の基本的な原理は、特定のタイプの通信チャネル又はプロトコルに限定されないことに留意すべきである。
【0010】
一実施形態では、IoTデバイス101~105は、電池電力で長期間(例えば、数年)動作することができる超低電力デバイスである。電力を節約するために、ローカル通信チャネル130は、Bluetooth Low Energy(LE)などの低電力無線通信技術を使用して実装することができる。この実施形態では、IoTデバイス101~105及びIoTハブ110のそれぞれには、Bluetooth LE無線及びプロトコルスタックが備わっている。
【0011】
上述したように、一実施形態では、IoTプラットフォームは、ユーザが、接続されたIoTデバイス101~105、IoTハブ110、及び/又はIoTサービス120にアクセスし、それらを構成することを可能にする、ユーザデバイス135上で実行されるIoTアプリケーション又はウェブアプリケーションを含む。一実施形態では、アプリケーション又はウェブアプリケーションは、そのユーザベースにIoT機能を提供するように、ウェブサイト130のオペレータによって設計されてもよい。例示したように、ウェブサイトは、各ユーザに関連するアカウント記録を含むユーザデータベース131を維持することができる。
【0012】
図1Bは、複数のIoTハブ110~111、190に対する追加の接続オプションを例示する。この実施形態では、単一のユーザが、単一のユーザ構内180(例えば、ユーザの自宅又はビジネス)にオンサイトでインストールされた複数のハブ110~111を有することができる。これは、例えば、IoTデバイス101~105のすべてを接続するのに必要な無線範囲を拡張するために行われ得る。上述したように、ユーザが複数のハブ110、111を有する場合、それらは、ローカル通信チャネル(例えば、Wifi、イーサネット(登録商標)、電力線ネットワーキングなど)を介して接続されてもよい。一実施形態では、ハブ110~111のそれぞれは、セルラー115又はWiFi116接続(
図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との間で交換されるデータ(例えば、可能であれば、いくつかのデータ要求にローカルでサービスする)に対してフィルタリング動作を実行するための追加のプログラムコードが提供され得る。
【0013】
IoTハブ110~111がどのように接続されていようとも、一実施形態では、IoTサービス120は、ハブをユーザと論理的に関連付け、取り付けられたIoTデバイス101~105のすべてを、インストールされたアプリケーション135(及び/又はブラウザベースのインターフェース)を有するユーザデバイスを介してアクセス可能な、単一の包括的なユーザインターフェースの下に結合する。
【0014】
この実施形態では、マスターIoTハブ110及び1つ以上のスレーブIoTハブ111は、WiFiネットワーク116、イーサネットネットワーク、及び/又は電力線通信(power-line communications)(PLC)ネットワーキング(例えば、ネットワークの全部若しくは一部がユーザの電力線を介して実行される)とすることができる、ローカルネットワークを介して接続してもよい。加えて、IoTハブ110~111に対して、IoTデバイス101~105のそれぞれは、いくつか例を挙げると、WiFi、イーサネット、PLC、又はBluetooth LEなどの、任意のタイプのローカルネットワークチャネルを使用して、IoTハブ110~111と相互接続してもよい。
【0015】
図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(及び/又はブラウザベースのインターフェース)を有するユーザデバイスを介してアクセス可能にする。
【0016】
図2に例示するように、IoTデバイス101の例示的な実施形態は、プログラムコード及びデータ201~203を記憶するメモリ210と、プログラムコードを実行しデータを処理する低電力マイクロコントローラ200とを含む。メモリ210は、ダイナミックランダムアクセスメモリ(dynamic random access memory)(DRAM)などの揮発性メモリであってもよいし、フラッシュメモリなどの不揮発性メモリであってもよい。一実施形態では、不揮発性メモリを永続記憶に使用し、揮発性メモリをプログラムコードの実行及びデータの実行に使用することができる。更に、メモリ210は、低電力マイクロコントローラ200内に統合されてもよく、バス又は通信ファブリックを介して低電力マイクロコントローラ200に連結されてもよい。本発明の根本的な原理は、メモリ210のいかなる特定の実装にも限定されない。
【0017】
例示したように、プログラムコードは、IoTデバイス101のアプリケーション開発者によって利用され得る既定のビルディングブロックのセットを含む、IoTデバイス201及びライブラリコード202によって実行される特定用途向けの機能セットを定義するアプリケーションプログラムコード203を含むことができる。一実施形態では、ライブラリコード202は、各IoTデバイス101とIoTハブ110との間の通信を可能にするための通信プロトコルスタック201などのIoTデバイスを実装するために必要とされる基本機能のセットを含む。上述したように、一実施形態では、通信プロトコルスタック201は、Bluetooth LEプロトコルスタックを含む。この実施形態では、Bluetooth LE無線機及びアンテナ207は、低電力マイクロコントローラ200内に統合されてもよい。しかしながら、本発明の基本原理は、いかなる特定の通信プロトコルにも限定されない。
【0018】
図2に示す特定の実施形態はまた、ユーザ入力を受信し、ユーザ入力を低電力マイクロコントローラに提供する複数の入力デバイス又はセンサ210を含み、低電力マイクロコントローラは、アプリケーションコード203及びライブラリコード202に従ってユーザ入力を処理する。一実施形態では、入力デバイスのそれぞれは、エンドユーザにフィードバックを提供するLED209を含む。
【0019】
加えて、例示した実施形態は、低電力マイクロコントローラに電力を供給するための電池208を含む。一実施形態では、非充電式コイン型電池が使用される。しかしながら、別の実施形態では、統合された充電式電池を使用することができる(例えば、交流電源(図示せず)にIoTデバイスを接続することによって再充電可能)。
【0020】
オーディオを発生するためのスピーカ205も設けられている。一実施形態では、低電力マイクロコントローラ299は、スピーカ205上にオーディオを発生するために圧縮されたオーディオストリーム(例えば、MPEG-4/アドバンストオーディオコーディング(Advanced Audio Coding)(AAC)ストリーム)を復号するための、オーディオ復号ロジックを含む。代替的に、低出力マイクロコントローラ200及び/又はアプリケーションコード/データ203が、ユーザが入力デバイス210を介して選択を入力すると、エンドユーザに口頭のフィードバックを提供するための、デジタルでサンプリングされたオーディオスニペットを含むことができる。
【0021】
一実施形態では、IoTデバイス101が設計される特定用途に基づいて、1つ以上の他の/代替のI/Oデバイス又はセンサ250が、IoTデバイス101に含まれてもよい。例えば、温度、圧力、湿度などを測定するために環境センサを含めることができる。IoTデバイスがセキュリティデバイスとして使用される場合には、セキュリティセンサ及び/又はドアロックオープナが含まれてもよい。当然のことながら、これらの例は、単に例示のために提供されている。本発明の基本原理は、いかなる特定のタイプのIoTデバイスにも限定されない。実際に、ライブラリコード202が備わった低電力マイクロコントローラ200の高度にプログラマブルな性質を考慮すると、アプリケーション開発者は、新しいアプリケーションコード203及び新しいI/Oデバイス250を容易に開発して、実質的に任意のタイプのIoTアプリケーションのために低電力マイクロコントローラとインターフェースをとることができる。
【0022】
一実施形態では、低電力マイクロコントローラ200はまた、通信を暗号化するための、及び/又は署名を生成するための暗号鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別モジュール(SIM)内に確保されてもよい。
【0023】
一実施形態では、実質的に電力を消費していない超低電力状態からIoTデバイスを起動させるために、ウェイクアップ受信機207が含まれる。一実施形態では、ウェイクアップ受信機207は、
図3に示すように、IoTハブ110上に構成されたウェイクアップ送信機307から受信されたウェイクアップ信号に応答して、IoTデバイス101をこの低電力状態から出させるように構成される。具体的には、一実施形態では、送信機307と受信機207は共に、テスラコイルなどの電気共振トランス回路を形成する。動作中、ハブ110が非常に低い電力状態からIoTデバイス101を復帰させる必要がある場合、エネルギは送信機307から受信機207への無線周波数信号を介して送信される。エネルギ移動の理由で、IoTデバイス101は、それが低電力状態にあるときには、ハブからの信号を継続的に「聞く」必要がないので、実質的に電力を消費しないように構成することができる(ネットワーク信号を介してデバイスを起動させることができる、ネットワークプロトコルの場合と同様に)。むしろ、IoTデバイス101のマイクロコントローラ200は、送信機307から受信機207に電気的に送信されたエネルギを使用することによって、事実上パワーダウンされた後にウェイクアップするように構成することができる。
【0024】
図3に例示するように、IoTハブ110はまた、プログラムコード及びデータ305を記憶するためのメモリ317と、プログラムコードを実行しデータを処理するためのマイクロコントローラなどのハードウェアロジック301とを含む。広域ネットワーク(wide area network)(WAN)インターフェース302及びアンテナ310は、IoTハブ110をセルラーサービス115に連結する。代替的に、上述したように、IoTハブ110は、ローカルエリアネットワーク通信チャネルを確立するためにWiFiインターフェース(及びWiFiアンテナ)又はイーサネットインターフェースなどのローカルネットワークインターフェース(図示せず)を含むこともできる。一実施形態では、ハードウェアロジック301はまた、通信を暗号化するための、及び/又は署名を生成/検証するための暗号鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別モジュール(SIM)内に確保されてもよい。
【0025】
ローカル通信インターフェース303及びアンテナ311は、IoTデバイス101~105のそれぞれとのローカル通信チャネルを確立する。上述したように、一実施形態では、ローカル通信インターフェース303/アンテナ311はBluetooth LE規格を実装する。しかしながら、本発明の根底にある原理は、IoTデバイス101~105とのローカル通信チャネルを確立するためのいかなる特定のプロトコルにも限定されない。
図3においては別個のユニットとして示されているが、WANインターフェース302及び/又はローカル通信インターフェース303は、ハードウェアロジック301と同じチップ内に組み込まれてもよい。
【0026】
一実施形態では、プログラムコード及びデータは、ローカル通信インターフェース303及びWANインターフェース302を介して通信するための別個のスタックを含むことができる通信プロトコルスタック308を含む。加えて、デバイスペアリングプログラムコード及びデータ306は、IoTハブを新しいIoTデバイスとペアリングすることができるようにメモリに記憶され得る。一実施形態では、各新しいIoTデバイス101~105には、ペアリングプロセス中にIoTハブ110に通信される一意的なコードが割り当てられる。例えば、一意的なコードは、IoTデバイス上のバーコードに組み込まれてもよく、かつバーコードリーダ106によって読み取られてもよく、又はローカル通信チャネル130を介して通信されてもよい。別の実施形態では、一意的なIDコードがIoTデバイスに磁気的に組み込まれ、IoTハブは、無線周波数ID(radio frequency ID)(RFID)又は近距離通信(near field communication)(NFC)センサなどの磁気センサを有し、IoTデバイス101がIoTハブ110の数インチ内で移動するとき、コードを検出する。
【0027】
一実施形態では、一意的なIDが通信されると、IoTハブ110は、ローカルデータベース(図示せず)に問い合わせること、コードが許容可能であることを検証するためにハッシュを実行すること、並びに/又はIoTサービス120、ユーザデバイス135、及び/若しくはウェブサイト130と通信することによって、一意的なIDを検証して、IDコードの妥当性を確認することができる。妥当性が確認されると、一実施形態では、IoTハブ110は、IoTデバイス101をペアリングし、メモリ317(これは、上述したように、不揮発性メモリを含むことができる)にペアリングデータを記憶する。ペアリングが完了すると、IoTハブ110は、本明細書に記載の様々なIoT機能を実行するためにIoTデバイス101と接続することができる。
【0028】
一実施形態では、IoTサービス120を実行する組織は、開発者が新しいIoTサービスを容易に設計できるように、IoTハブ110及び基本ハードウェア/ソフトウェアプラットフォームを提供することができる。具体的には、IoTハブ110に加えて、開発者には、ハブ110内で実行されるプログラムコード及びデータ305を更新するためのソフトウェア開発キット(software development kit)(SDK)が提供されてもよい。加えて、IoTデバイス101については、SDKは、様々な異なるタイプのアプリケーション101の設計を容易にするために、ベースのIoTハードウェア(例えば、低電力マイクロコントローラ200及び
図2に示す他の構成要素)用に設計された広範なライブラリコード202のセットを含んでもよい。一実施形態では、SDKは、開発者がIoTデバイスの入力と出力を指定するだけでよいグラフィカルデザインインターフェースを含む。IoTデバイス101がハブ110及びサービス120に接続することを可能にする通信スタック201を含むネットワーキングコードはすべて、開発者のために既に配置されている。加えて、一実施形態では、SDKは、モバイルデバイス(例えば、iPhone(登録商標)及びAndroid(登録商標)デバイス)用のアプリケーションの設計を容易にするライブラリコードベースも含む。
【0029】
一実施形態では、IoTハブ110は、IoTデバイス101~105とIoTサービス120との間のデータの連続的な双方向ストリームを管理する。IoTデバイス101~105への/からの更新がリアルタイムで要求される状況(例えば、ユーザがセキュリティデバイス又は環境測定値の現在の状態を見る必要がある状況)では、IoTハブは、ユーザデバイス135及び/又は外部のウェブサイト130に定期的な更新を提供するためにオープンTCPソケットを維持することができる。更新を提供するために使用される特定のネットワーキングプロトコルは、基本用途のニーズに基づいて調整されてもよい。例えば、連続的な双方向ストリームを有することが理にかなっていない可能性がある場合、必要なときに情報を収集するために単純な要求/応答プロトコルを使用することができる。
【0030】
一実施形態では、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デバイスにインストールされているコードの最新バージョンを記録することができる。
【0031】
一実施形態では、IoTハブ110は、A/C電力を介して給電される。具体的には、IoTハブ110は、A/C電源コードを介して供給されるA/C電圧をより低いDC電圧に変換するための変圧器を備えた電源ユニット390を含むことができる。
【0032】
図4Aは、IoTシステムを使用してユニバーサル遠隔制御操作を実行するための、本発明の一実施形態を例示する。具体的には、この実施形態では、IoTデバイス101~103のセットには、(ほんの数例を挙げると)空気調節装置/ヒータ430、照明システム431、及び視聴覚機器432を含む、様々な異なるタイプの電子機器を制御する遠隔制御コードを送信するための、赤外線(infrared)(IR)及び/又は無線周波数(radio frequency)(RF)ブラスタ401~403がそれぞれ備わっている。
図4Aに示される実施形態では、IoTデバイス101~103にはまた、以下に説明するように、それらが制御するデバイスの動作を検出するためのセンサ404~406がそれぞれ備わっている。
【0033】
例えば、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を実装してもよい。
【0034】
例示した実施例におけるIoTデバイス102は、照明431を制御するために使用される。具体的には、IoTデバイス102のセンサ405は、照明設備431(又は他の照明装置)によってもたらされている光の現在の輝度を検出するように構成された光センサ又は光検出器であってもよい。ユーザは、ユーザデバイス135を介して、IoTハブ110に所望の照明レベル(オン又はオフの表示を含む)を指定してもよい。それに応答して、制御ロジック412は、照明431の現在の輝度レベルを制御するように、IR/RFブラスタ402にコマンドを送信する(例えば、現在の輝度が低すぎる場合は照明を明るくするか、若しくは現在の輝度が高すぎる場合は照明を暗くするか、又は単純に照明をオン若しくはオフにする)。
【0035】
例示した実施例におけるIoTデバイス103は、視聴覚機器432(例えば、テレビ、A/V受信機、ケーブル/衛星受信機、AppleTV(商標)など)を制御するように構成される。IoTデバイス103のセンサ406は、現在の周囲音量レベルを検出するためのオーディオセンサ(例えば、マイクロホン及び関連ロジック)、並びに/又はテレビによって生成された光に基づき、(例えば、指定されたスペクトル内の光を測定することによって)テレビがオンであるか、それともオフであるかを検出するための光センサであってもよい。代替的に、センサ406は、検出された温度に基づき、オーディオ機器がオンであるか、それともオフであるかを検出するための、視聴覚機器に接続された温度センサを含んでもよい。この場合も、ユーザデバイス135を介したユーザ入力に応答して、制御ロジック412は、IoTデバイス103のIRブラスタ403を介して視聴覚機器にコマンドを送信してもよい。
【0036】
上記が本発明の一実施形態の単なる例示した実施例であることに留意すべきである。本発明の基本原理は、IoTデバイスによって制御されるいかなる特定のタイプのセンサ又は機器にも限定されない。
【0037】
IoTデバイス101~103がBluetooth LE接続を介してIoTハブ110に連結される実施形態では、センサデータ及びコマンドは、Bluetooth LEチャネルを介して送信される。しかしながら、本発明の基本原理は、Bluetooth LE又はいずれの他の通信標準にも限定されない。
【0038】
一実施形態では、電子機器のそれぞれを制御するために必要とされる制御コードは、IoTハブ110上のデータベース413及び/又はIoTサービス120上のデータベース422に記憶される。
図4Bに例示するように、制御コードは、IoTサービス120上で維持される異なる機器に対して、制御コード422のマスターデータベースからIoTハブ110に提供されてもよい。エンドユーザは、ユーザデバイス135上で実行されるアプリケーション又はブラウザを介して制御される電子(又は他の)機器のタイプを指定してもよく、それに応答して、IoTハブ上の遠隔制御コード学習モジュール491は、IoTサービス120上の遠隔制御コードデータベース492から、必要とされるIR/RFコードを取得してもよい(例えば、一意的なIDを有する各電子機器を識別する)。
【0039】
加えて、一実施形態では、IoTハブ110には、遠隔制御コード学習モジュール491が、電子機器と共に提供された元の遠隔制御装置495から直接新しい遠隔制御コードを「学習」することを可能にする、IR/RFインターフェース490が備わっている。例えば、空気調節装置430と共に提供された元の遠隔制御装置の制御コードが、遠隔制御データベースに含まれていない場合、ユーザは、ユーザデバイス135上のアプリケーション/ブラウザを介してIoTハブ110と対話して、元の遠隔制御装置によって生成される様々な制御コードをIoTハブ110に教えてもよい(例えば、温度を上げる、温度を下げるなど)。遠隔制御コードが学習されると、それらは、IoTハブ110上の制御コードデータベース413に記憶されてもよく、かつ/又は中央遠隔制御コードデータベース492に含められるように、IoTサービス120に送り返されてもよい(続いて、同じ空気調節装置ユニット430を有する他のユーザによって使用されてもよい)。
【0040】
一実施形態では、IoTデバイス101~103のそれぞれは、極端に小さいフォームファクタを有し、両面テープ、小さい釘、磁気アタッチメントなどを使用して、それらの対応する電子機器430~432の上又は付近に取り付けられてもよい。空気調節装置430などの1つの機器を制御するために、IoTデバイス101を十分に離して配置し、センサ404が自宅内の周囲温度を正確に測定することができるようにすることが望ましい(例えば、空気調節装置上に直接IoTデバイスを配置すると、温度測定値は、空気調節装置が作動しているときは低すぎになり、ヒータが作動しているときは高すぎになるであろう)。対照的に、照明を制御するために使用されるIoTデバイス102は、センサ405が現在の照明レベルを検出するために、照明設備431の上又は付近に配置されてもよい。
【0041】
記載される一般的な制御機能を提供することに加えて、IoTハブ110及び/又はIoTサービス120の一実施形態は、各電子機器の現在の状態に関連した通知をエンドユーザに送信する。通知は、テキストメッセージ及び/又はアプリケーション特有の通知であってもよく、次いで、通知は、ユーザのモバイルデバイス135のディスプレイ上に表示されてもよい。例えば、ユーザの空気調節装置が長期間オンであるが温度が変化していない場合、IoTハブ110及び/又はIoTサービス120は、空気調節装置が適切に機能していないという通知をユーザに送信してもよい。ユーザが自宅におらず(このことは、動作センサを介して検出されてもよく、若しくはユーザの現在の検出された位置に基づいてもよい)、センサ406が、視聴覚機器430がオンであることを示すか、又はセンサ405が、照明がオンであることを示す場合、ユーザが視聴覚機器432及び/又は照明431をオフにすることを希望するか尋ねる通知がユーザに送信されてもよい。同じタイプの通知が、任意の機器のタイプに対して送信されてもよい。
【0042】
ユーザが通知を受信すると、彼/彼女は、ユーザデバイス135上のアプリケーション又はブラウザを介して電子機器430~432を遠隔制御してもよい。一実施形態では、ユーザデバイス135は、タッチスクリーンデバイスであり、アプリケーション又はブラウザは、機器430~432を制御するためのユーザが選択可能なボタンを含む遠隔制御装置の画像を表示する。通知を受信した後、ユーザは、グラフィカル遠隔制御装置を開き、様々な異なる機器をオフにするか、又は調節してもよい。IoTサービス120を介して接続されている場合、ユーザの選択は、IoTサービス120からIoTハブ110に転送されてもよく、IoTハブ110は、次いで制御ロジック412を介して機器を制御することになる。代替的に、ユーザ入力は、ユーザデバイス135からIoTハブ110に直接送信されてもよい。
【0043】
一実施形態では、ユーザは、電子機器430~432に対して様々な自動制御機能を実行するように、IoTハブ110上の制御ロジック412をプログラミングしてもよい。上記の所望の温度、輝度レベル、及び音量レベルを維持することに加えて、制御ロジック412は、ある特定の条件が検出された場合に電子機器を自動的にオフにしてもよい。例えば、制御ロジック412が、ユーザが自宅にいないこと、及び空気調節装置が機能していないことを検出する場合、制御ロジック412は、空気調節装置を自動的にオフにしてもよい。同様に、ユーザが自宅におらず、センサ406が、視聴覚機器430がオンであることを示すか、又はセンサ405が、照明がオンであることを示す場合、制御ロジック412は、視聴覚機器及び照明をそれぞれオフにするように、IR/RFブラスタ403及び402を介してコマンドを自動的に送信してもよい。
【0044】
図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は、コンロ自体内に統合されてもよい。
【0045】
図5はまた、洗濯機及び/又は乾燥機などのある特定のタイプの電子機器の動作を検出するための動作センサ504を有する、IoTデバイス105を例示する。使用され得る別のセンサは、周囲の音量レベルを検出するためのオーディオセンサ(例えば、マイクロホン及びロジック)である。上記の他の実施形態のように、この実施形態は、ある特定の指定された条件が満たされた場合、エンドユーザに通知を送信してもよい(例えば、動作が長期間検出され、洗濯機/乾燥機がオフになっていないことを示す場合)。
図5に示されないが、IoTデバイス105にはまた、自動的に、かつ/又はユーザ入力に応答して、(例えば、電気/ガスをオフに切り替えることによって)洗濯機/乾燥機531をオフにするための制御モジュールが備わっていてもよい。
【0046】
一実施形態では、制御ロジック及びスイッチを有する第1のIoTデバイスは、ユーザの自宅内のすべての電力をオフにするように構成されてもよく、制御ロジック及びスイッチを有する第2のIoTデバイスは、ユーザの自宅内のすべてのガスをオフにするように構成されてもよい。次いで、センサを有するIoTデバイスは、ユーザの自宅内の電気又はガス駆動の機器の上又は付近に位置付けられてもよい。特定の機器がオンのままである(例えば、コンロ530)ことをユーザが通知された場合、ユーザは、自宅内のすべての電気又はガスをオフにするコマンドを送信して、損害を防止してもよい。代替的に、IoTハブ110及び/又はIoTサービス120の制御ロジック512は、そのような状況において電気又はガスを自動的にオフにするように構成されてもよい。
【0047】
一実施形態では、IoTハブ110及びIoTサービス120は、周期的な間隔で通信する。IoTサービス120が、IoTハブ110への接続が切れていることを検出する場合(例えば、指定された継続時間、IoTハブからの要求又は応答を受信していないことによって)、IoTサービス120は、この情報をエンドユーザのデバイス135に通信することになる(例えば、テキストメッセージ又はアプリケーション特有の通知を送信することによって)。
通信のための装置及び方法
中間デバイスを通じたデータ
【0048】
上述したように、Bluetooth LEなどのIoTデバイスを相互接続するために使用される無線技術は概して、近距離技術であるため、IoT実装のためのハブがIoTデバイスの範囲外にある場合、IoTデバイスは、IoTハブにデータを送信することができない(逆もまた同様)。
【0049】
この欠陥に対処するために、本発明の一実施形態は、モバイルデバイスが範囲内にあるとき、1つ以上のモバイルデバイスと周期的に接続するために、IoTハブの無線範囲外にあるIoTデバイスのための機構を提供する。いったん接続されると、IoTデバイスは、IoTハブに提供される必要がある任意のデータをモバイルデバイスに送信することができ、次いでモバイルデバイスは、IoTハブにデータを転送する。
【0050】
図6に例示するように、一実施形態は、IoTハブ110と、IoTハブ110の範囲外にあるIoTデバイス601と、モバイルデバイス611とを含む。範囲外のIoTデバイス601は、データを収集及び通信することが可能な任意の形態のIoTデバイスを含んでもよい。例えば、IoTデバイス601は、冷蔵庫内の利用可能な食料品、食料品を消費するユーザ、及び現在の温度を監視するように、冷蔵庫内に構成されたデータ収集デバイスを備えてもよい。当然のことながら、本発明の基本原理は、いかなる特定のタイプのIoTデバイスにも限定されない。本明細書に記載される技術は、ほんの数例を挙げると、スマートメータ、コンロ、洗濯機、乾燥機、照明システム、HVACシステム、及び視聴覚機器に関するデータを収集及び送信するために使用されるデバイスを含む、任意のタイプのIoTデバイスを使用して実装されてもよい。
【0051】
更に、動作中のモバイルデバイスである、
図6に例示するIoTデバイス611は、データを通信及び記憶することが可能な任意の形態のモバイルデバイスであってもよい。例えば、一実施形態では、モバイルデバイス611は、本明細書に記載される技術を促進するために、アプリケーションがその上にインストールされたスマートフォンである。別の実施形態では、モバイルデバイス611は、ネックレス若しくはブレスレットに取り付けられた通信トークン、スマートウォッチ、又はフィットネスデバイスなど、装着可能なデバイスを含む。装着可能なトークンは、スマートフォンデバイスを所有しない高齢のユーザ又は他のユーザにとって特に有用であり得る。
【0052】
動作中、範囲外のIoTデバイス601は、モバイルデバイス611との接続性を周期的又は連続的にチェックしてもよい。接続を確立した後(例えば、ユーザが冷蔵庫の近くを移動する結果として)、IoTデバイス601上の任意の収集されたデータ605が、モバイルデバイス611上の一時データリポジトリ615に自動的に送信される。一実施形態では、IoTデバイス601及びモバイルデバイス611は、BTLEなどの低電力無線標準を使用して、ローカル無線通信チャネルを確立する。そのような場合、モバイルデバイス611は、既知のペアリング技術を使用してIoTデバイス601と最初にペアリングされてもよい。
【0053】
いったんデータが一時データリポジトリに伝送されると、モバイルデバイス611は、IoTハブ110との通信が確立されるとデータを送信する(例えば、ユーザがIoTハブ110の範囲内を歩くとき)。次いで、IoTハブは、中央データリポジトリ413にデータを記憶してもよく、かつ/又はインターネット上で、1つ以上のサービス及び/若しくは他のユーザデバイスにデータを送信してもよい。一実施形態では、モバイルデバイス611は、異なるタイプの通信チャネルを使用して、IoTハブ110にデータを提供してもよい(潜在的に、WiFiなどのより高出力の通信チャネル)。
【0054】
範囲外のIoTデバイス601、モバイルデバイス611、及びIoTハブはすべて、本明細書に記載される技術を実装するためのプログラムコード及び/又はロジックにより構成されてもよい。
図7に例示するように、例えば、本明細書に記載される動作を実行するために、IoTデバイス601は、中間接続ロジック及び/又はアプリケーションにより構成されてもよく、モバイルデバイス611は、中間接続ロジック/アプリケーションにより構成されてもよく、IoTハブ110は、中間接続ロジック/アプリケーション721により構成されてもよい。各デバイス上の中間接続ロジック/アプリケーションは、ハードウェア、ソフトウェア、又はこれらの任意の組み合わせで実装されてもよい。一実施形態では、IoTデバイス601の中間接続ロジック/アプリケーション701は、モバイルデバイス上の中間接続ロジック/アプリケーション711(デバイスアプリケーションとして実装されてもよい)との接続を検索及び確立して、一時データリポジトリ615にデータを伝送する。次いで、モバイルデバイス611上の中間接続ロジック/アプリケーション701は、中央データリポジトリ413にデータを記憶するIoTハブ上の中間接続ロジック/アプリケーションに、データを転送する。
【0055】
図7に例示するように、各デバイス上の中間接続ロジック/アプリケーション701、711、721は、手元のアプリケーションに基づき構成されてもよい。例えば、冷蔵庫に関して、接続ロジック/アプリケーション701は、周期的ベースで少数のパケットを送信するだけでよい。他のアプリケーション(例えば、温度センサ)に対して、接続ロジック/アプリケーション701は、より頻繁な更新を送信する必要があり得る。
【0056】
モバイルデバイス611よりはむしろ、一実施形態では、IoTデバイス601が、IoTハブ110の範囲内に位置する1つ以上の中間IoTデバイスとの無線接続を確立するように構成されてもよい。この実施形態では、IoTハブの範囲外の任意のIoTデバイス601が、他のIoTデバイスを使用して「チェーン」を形成することによってハブにリンクされてもよい。
【0057】
加えて、簡潔にするために、単一のモバイルデバイス611のみが
図6及び
図7に例示されるが、一実施形態では、異なるユーザの複数のそのようなモバイルデバイスは、IoTデバイス601と通信するように構成されてもよい。更に、同じ技術が、複数の他のIoTデバイスに対して実装されてもよく、それにより、自宅全体にわたって中間デバイスデータ収集システムを形成する。
【0058】
更に、一実施形態では、本明細書に記載される技術は、様々な異なるタイプの関連データを収集するために使用されてもよい。例えば、一実施形態では、モバイルデバイス611がIoTデバイス601と接続するたびに、ユーザの識別が、収集されたデータ605と共に含まれてもよい。このようにして、IoTシステムは、自宅内の異なるユーザの挙動を追跡するために使用されてもよい。例えば、冷蔵庫内で使用される場合、収集されたデータ605は、冷蔵庫のそばを通る各ユーザ、冷蔵庫を開ける各ユーザ、及び各ユーザによって消費される特定の食料品の識別を含んでもよい。異なるタイプのデータが、他のタイプのIoTデバイスから収集されてもよい。このデータを使用して、システムは、例えば、どのユーザが衣服を洗濯するのか、どのユーザが所与の日にテレビを観るのか、各ユーザが就寝及び起床する時間などを判定することが可能である。次いで、このクラウドソースデータのすべてが、IoTハブのデータリポジトリ413内にコンパイルされてもよく、かつ/又は外部サービス若しくはユーザに転送されてもよい。
【0059】
本明細書に記載される技術の別の有益な用途は、補助を必要とし得る高齢のユーザを監視するためのものである。このアプリケーションに関して、モバイルデバイス611は、ユーザの自宅の異なる室内の情報を収集するために、高齢のユーザによって装着された非常に小型のトークンであってもよい。ユーザが冷蔵庫を開けるたびに、例えば、このデータは、収集されたデータ605と共に含まれ、トークンを介してIoTハブ110に伝送される。次いで、IoTハブは、1つ以上の外部ユーザ(例えば、高齢のユーザを世話する子供又は他の個人)にデータを提供してもよい。データが指定された期間(例えば、12時間)収集されていない場合、これは、高齢のユーザが自宅を動き回っていない、かつ/又は冷蔵庫を開けていないことを意味する。次いで、IoTハブ110又はIoTハブに接続された外部サービスは、これらの他の個人にアラート通知を送信し、彼らに高齢のユーザを確認するべきであることを通知してもよい。加えて、収集されたデータ605は、ユーザによって消費されている食品、並びに食料品店に行くことが必要であるかどうか、高齢のユーザがテレビを観ているかどうか、及びどれほど頻繁に観ているか、高齢のユーザが衣服を洗濯する頻度などの他の関連情報を含んでもよい。
【0060】
別の実装例において、洗濯機、冷蔵庫、HVACシステムなどの電子デバイスに問題がある場合、収集されたデータは、交換される必要がある部品の指示を含んでもよい。そのような場合、通知は、問題を解決するための要求と共に技術者に送信されてもよい。次いで、技術者は、必要とされる交換部品を持って自宅に到着し得る。
【0061】
本発明の一実施形態に従った方法が
図8に例示される。本方法は、上記のアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【0062】
801において、IoTハブの範囲外にあるIoTデバイスは、データ(例えば、冷蔵庫の扉の開放、使用された食料品など)を周期的に収集する。802において、IoTデバイスは、モバイルデバイスとの接続性を周期的又は連続的にチェックする(例えば、BTLE標準によって指定されたものなど、接続を確立するための標準的なローカル無線技術を使用して)。802において、モバイルデバイスへの接続が確立され、判定された場合、803において、収集されたデータは、803においてモバイルデバイスに伝送される。804において、モバイルデバイスは、IoTハブ、外部サービス、及び/又はユーザにデータを伝送する。述べられたように、モバイルデバイスは、それが既に接続されている場合(例えば、WiFiリンクを介して)、すぐにデータを送信し得る。
【0063】
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は次いで、新しいプログラムコード更新及び/又はデータをインストールするための自動更新プロセスに入ってもよい。
【0064】
IoTデバイスを更新するための方法が、
図9Bに示される。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0065】
900において、新しいプログラムコード又はデータ更新は、IoTハブ及び/又は外部サービス(例えば、インターネット上でモバイルデバイスに連結された)上で利用可能になる。901において、モバイルデバイスは、IoTデバイスの代わりにプログラムコード又はデータ更新を受信及び記憶する。IoTデバイス及び/又はモバイルデバイスは、902において接続が確立されているかどうかを判定するために周期的にチェックする。903において接続が確立され、判定された場合、904において、更新は、IoTデバイスに伝送され、インストールされる。
改善されたセキュリティのための実施形態
【0066】
一実施形態では、各IoTデバイス101の低電力マイクロコントローラ200及びIoTハブ110の低電力ロジック/マイクロコントローラ301は、以下に記載される実施形態によって使用される暗号鍵を記憶するための安全な鍵ストアを含む(例えば、
図10~
図15及び関連する文章を参照されたい)。代替的に、鍵は、後述するように、加入者識別モジュール(SIM)内に確保されてもよい。
【0067】
図10は、IoTサービス120、IoTハブ110、並びにIoTデバイス101及び102の間の通信を暗号化するために公開鍵インフラストラクチャ(public key infrastructure)(PKI)技術及び/又は対称鍵交換/暗号化技術を使用する、高レベルアーキテクチャを例示する。
【0068】
公開/秘密鍵ペアを使用する実施形態をまず説明し、続いて、対称鍵交換/暗号化技術を使用する実施形態を説明する。具体的には、PKIを使用するある実施形態において、一意的な公開/秘密鍵ペアが、各IoTデバイス101~102、各IoTハブ110、及びIoTサービス120に関連付けられる。一実施形態では、新しいIoTハブ110がセットアップされるとき、その公開鍵がIoTサービス120に提供され、新しいIoTデバイス101がセットアップされるとき、その公開鍵がIoTハブ110及びIoTサービス120の両方に提供される。デバイス間で公開鍵を安全に交換するための様々な技術を以下に説明する。一実施形態では、いかなる受信デバイスも、署名の妥当性を確認することによって公開鍵の妥当性を検証することができるように、すべての公開鍵が、受信デバイスのすべてに既知である親鍵(すなわち、一種の証明書)によって署名される。したがって、未加工の公開鍵を単に交換するのではなく、むしろこれらの証明書が交換されることになる。
【0069】
例示したように、一実施形態では、各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内に記憶することができる。
【0070】
例として、一実施形態では、IoTサービス120が、コマンド又はデータ(例えば、ドアを開錠するコマンド、センサを読み取る要求、IoTデバイスにより処理/表示されるべきデータなど)をIoTデバイス101に送信する必要があるとき、セキュリティロジック1013は、IoTデバイス101の公開鍵を使用してそのデータ/コマンドを暗号化して、暗号化されたIoTデバイスパケットを生成する。一実施形態では、次いで、セキュリティロジック1013は、IoTハブ110の公開鍵を使用し、IoTデバイスパケットを暗号化して、IoTハブパケットを生成し、IoTハブパケットをIoTハブ110に送信する。一実施形態では、デバイス101が、それが信頼されるソースから変更されていないメッセージを受信していることを検証することができるように、サービス120は、その秘密鍵又は上述の親鍵を用いて、暗号化されたメッセージに署名する。次いで、デバイス101は、秘密鍵及び/又は親鍵に対応する公開鍵を使用して、署名の妥当性を確認してもよい。上述したように、対称鍵交換/暗号化技術が、公開/秘密鍵暗号化の代わりに使用されてもよい。これらの実施形態では、1つの鍵をプライベートに記憶し、対応する公開鍵を他のデバイスに提供するのではなく、それぞれのデバイスに、暗号化のために、かつ署名の妥当性を確認するために使用されるものと同じ対称鍵のコピーを提供してもよい。対称鍵アルゴリズムの一例は高度暗号化標準(Advanced Encryption Standard)(AES)であるが、本発明の基本原理は、いかなるタイプの特定の対称鍵にも限定されない。
【0071】
ある対称鍵実装形態を使用すると、各デバイス101は、IoTハブ110と対称鍵を交換するために、安全な鍵交換プロトコルに入る。動的対称鍵プロビジョニングプロトコル(Dynamic Symmetric Key Provisioning Protocol)(DSKPP)などの安全な鍵プロビジョニングプロトコルが、安全な通信チャネルを介して鍵を交換するために使用され得る(例えば、コメント要求(Request for Comments)(RFC)6063を参照されたい)。しかしながら、本発明の基本原理は、いかなる特定の鍵プロビジョニングプロトコルにも限定されるものではない。
【0072】
対称鍵が交換されると、それらは、各デバイス101及びIoTハブ110によって、通信を暗号化するために使用され得る。同様に、IoTハブ110及びIoTサービス120は、安全な対称鍵交換を実行し、次いで、交換された対称鍵を使用して通信を暗号化し得る。一実施形態では、新しい対称鍵が、デバイス101とハブ110との間、及びハブ110とIoTサービス120との間で定期的に交換される。一実施形態では、デバイス101、ハブ110、及びサービス120の間での新しい通信セッションのたびに、新しい対称鍵が交換される(例えば、通信セッションごとに新しい鍵が生成され、安全に交換される)。一実施形態では、IoTハブ内のセキュリティモジュール1012が信頼される場合、サービス120は、ハブセキュリティモジュール1312とセッション鍵を交渉し得、次いで、セキュリティモジュール1012が、各デバイス120とセッション鍵を交渉することになる。次いで、サービス120からのメッセージは、ハブセキュリティモジュール1012で解読及び検証され、その後、デバイス101への送信のために再暗号化される。
【0073】
一実施形態では、ハブセキュリティモジュール1012でのセキュリティ侵害を防止するために、1回限りの(恒久的な)インストール鍵が、インストール時にデバイス101とサービス120との間で交渉されてもよい。メッセージをデバイス101に送るとき、サービス120は、まずこのデバイスインストール鍵を用いて暗号化/MACし、次いでハブのセッション鍵を用いてそれを暗号化/MACし得る。次いで、ハブ110は、暗号化されたデバイスブロブを検証及び抽出し、それをデバイスに送ることになる。
【0074】
本発明の一実施形態では、リプレイアタックを防止するためにカウンタ機構が実装される。例えば、デバイス101からハブ110へ(又は逆もまた同様)の連続する通信それぞれに、継続的に増加するカウンタ値が割り当てられ得る。ハブ110とデバイス101との両方がこの値を追跡し、デバイス間での連続する通信それぞれにおいてその値が正しいことを検証する。これと同じ技術が、ハブ110とサービス120との間に実装され得る。この方法でカウンタを使用すると、各デバイス間での通信を偽装することがより困難になるであろう(カウンタ値が誤ったものになるため)。しかしながら、これを用いずとも、サービスとデバイスとの間で共有されたインストール鍵は、すべてのデバイスに対するネットワーク(ハブ)規模の攻撃を防止するであろう。
【0075】
一実施形態では、公開/秘密鍵暗号化を使用するとき、IoTハブ110は、その秘密鍵を使用してIoTハブパケットを解読し、暗号化されたIoTデバイスパケットを生成し、それを、関連付けられたIoTデバイス101に送信する。次いで、IoTデバイス101は、その秘密鍵を使用してIoTデバイスパケットを解読して、IoTサービス120を起点とするコマンド/データを生成する。次いで、IoTデバイス101は、データを処理し、かつ/又はコマンドを実行してもよい。対称暗号化を使用すると、各デバイスは、共有された対称鍵を用いて暗号化及び解読を行う。いずれかの場合であれば、各送信デバイスはまた、受信デバイスがメッセージの信頼性を検証することができるように、その秘密鍵を用いてメッセージに署名してもよい。
【0076】
異なる鍵のセットが、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は、異なる対称鍵を共有し得る。
【0077】
上記の説明において、ある特定の具体的詳細が上に記載されているが、本発明の基本原理は様々な異なる暗号化技術を使用して実装され得ることに留意すべきである。例えば、上述した一部の実施形態は非対称の公開/秘密鍵ペアを使用するが、別の実施形態は、様々なIoTデバイス101~102、IoTハブ110、及びIoTサービス120の間で安全に交換される対称鍵を使用し得る。更に、一部の実施形態では、データ/コマンド自体は暗号化されないが、データ/コマンド(又は他のデータ構造)上の署名を生成するために鍵が使用される。次いで、受信者が、その鍵を使用して署名の妥当性を確認し得る。
【0078】
図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内に記憶されてもよく、一方で秘密鍵は、プログラマブルSIM1101内に記憶されてもよい。加えて、プログラミングロジック525は、IoTハブ110、IoTサービス120、及び/又は任意の他のIoTデバイス101の公開鍵を、(IoTデバイス101上のセキュリティロジック1302による発信データの暗号化に使用するために)SIMカード1401上に記憶してもよい。いったんSIM1101がプログラミングされると、新しいIoTデバイス101に、SIMを安全な識別子として使用して(例えば、SIMを用いてデバイスを登録するための既存の技術を使用して)IoTサービス120がプロビジョニングされ得る。プロビジョニング後、IoTハブ110とIoTサービス120との両方が、IoTデバイスの公開鍵のコピーを、IoTデバイス101との通信を暗号化する際に使用されるように安全に記憶する。
【0079】
図11に関して上述した技術は、新しいIoTデバイスをエンドユーザに提供する際に多大な柔軟性を提供する。(現在行われているのと同様に)ユーザが販売/購入の際に各SIMを特定のサービスプロバイダに直接登録することを要するのではなく、SIMは、エンドユーザによりIoTハブ110を介して直接プログラミングされてもよく、プログラミングの結果は、IoTサービス120に安全に通信され得る。それ故に、新しいIoTデバイス101がオンライン又はローカルの小売業者からエンドユーザに販売され、後にIoTサービス120が安全にプロビジョニングされ得る。
【0080】
SIM(加入者識別モジュール)という具体的な文脈において登録及び暗号化技術を上述したが、本発明の基本原理は「SIM」デバイスに限定されない。むしろ、本発明の基本原理は、暗号鍵セットを記憶するための安全な記憶装置を有する、いかなるタイプのデバイスを使用して実装されてもよい。更に、上記の実施形態は取り外し可能なSIMデバイスを含むのに対し、一実施形態では、SIMデバイスは取り外し可能でないが、IoTデバイス自体が、IoTハブ110のプログラミングインターフェース1102に挿入されてもよい。
【0081】
一実施形態では、ユーザがSIM(又は他のデバイス)をプログラミングすることを要するのではなく、SIMは、エンドユーザへの流通前に、IoTデバイス101に予めプログラミングされる。この実施形態において、ユーザがIoTデバイス101をセットアップするとき、本明細書に記載される様々な技術が、IoTハブ110/IoTサービス120と新しいIoTデバイス101との間で暗号鍵を安全に交換するために使用され得る。
【0082】
例えば、
図12Aに例示するように、各IoTデバイス101又はSIM401は、IoTデバイス101及び/又はSIM1001を一意的に識別するバーコード又はQRコード1501と共に梱包されていてもよい。一実施形態では、バーコード又はQRコード1201は、IoTデバイス101又はSIM1001の公開鍵の符号化表現を含む。代替的に、バーコード又は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内に公開鍵を(後の暗号化通信に使用するために)記憶してもよい。
【0083】
一実施形態では、バーコード又はQRコード1201内に含まれるデータはまた、インストールされたIoTアプリケーション又はIoTサービスプロバイダにより設計されたブラウザベースのアプレットを用いて、ユーザデバイス135(例えば、iPhone又はAndroidデバイスなど)によりキャプチャされてもよい。キャプチャされると、バーコードデータは、安全な接続(例えば、セキュアソケットレイヤー(secure sockets layer)(SSL)接続など)を介して、IoTサービス120に安全に通信され得る。バーコードデータはまた、安全なローカル接続を介して(例えば、ローカルWiFi又はBluetooth LE接続を介して)、クライアントデバイス135からIoTハブ110に提供されてもよい。
【0084】
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により設計)を使用することによって、実装され得る。当然のことながら、本発明の基本原理は、いかなる特定のタイプの安全な実行技術にも限定されない。
【0085】
一実施形態では、バーコード又はQRコード1501は、各IoTデバイス101をIoTハブ110とペアリングするために使用され得る。例えば、Bluetooth LEデバイスをペアリングするために現在使用されている標準的な無線ペアリングプロセスを使用するのではなく、バーコード又はQRコード1501内に組み込まれたペアリングコードをIoTハブ110に提供して、IoTハブを対応するIoTデバイスとペアリングしてもよい。
【0086】
図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との通信を暗号化し得る。
【0087】
同様に、IoTデバイス101側では、ローカル通信モジュール1590が、IoTハブとのペアリングを示すペアリングデータを、ローカルの安全な記憶デバイス1595内に記憶する。ペアリングデータ1295は、バーコード/QRコード1201で識別される予めプログラミングされたペアリングコードを含んでもよい。ペアリングデータ1295はまた、安全なローカル通信チャネルを確立するために必要な、IoTハブ110上のローカル通信モジュール1280から受信されるペアリングデータ(例えば、IoTハブ110との通信を暗号化するための追加の鍵)を含んでもよい。
【0088】
したがって、バーコード/QRコード1201は、ペアリングコードが無線で送信されないため、現在の無線ペアリングプロトコルよりもはるかに安全な方法でローカルペアリングを実行するために使用され得る。加えて、一実施形態では、ペアリングに使用されるものと同じバーコード/QRコード1201を使用して暗号鍵を識別し、IoTデバイス101からIoTハブ110へ、かつIoTハブ110からIoTサービス120への安全な接続を構築することができる。
【0089】
本発明の一実施形態によるSIMカードをプログラミングするための方法が、
図13に例示される。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0090】
1301において、ユーザは、空のSIMカードを備えた新しいIoTデバイスを受け取り、1602において、ユーザは、空のSIMカードをIoTハブに挿入する。1303において、ユーザは、1つ以上の暗号鍵のセットを用いて空のSIMカードをプログラミングする。例えば、上述のように、一実施形態において、IoTハブは、公開/秘密鍵ペアをランダムに生成し、秘密鍵をSIMカード上に、かつ公開鍵をそのローカルの安全な記憶装置内に記憶し得る。加えて、1304において、IoTデバイスを識別し、かつIoTデバイスとの暗号化通信を確立するために使用され得るように、少なくとも公開鍵がIoTサービスに送信される。上述したように、一実施形態では、「SIM」カード以外のプログラマブルデバイスが、
図13に示される方法でSIMカードと同じ機能を実行するために使用されてもよい。
【0091】
新しいIoTデバイスをネットワークに統合するための方法が、
図14に例示される。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0092】
1401において、ユーザは、暗号鍵が予め割り当てられている新しいIoTデバイスを受け取る。1402において、この鍵がIoTハブに安全に提供される。上述のように、一実施形態では、これは、IoTデバイスに関連付けられたバーコードを読み取って、デバイスに割り当てられた公開/秘密鍵ペアの公開鍵を識別することを伴う。バーコードは、IoTハブによって直接読み取られても、又はアプリケーション若しくはブラウザを介してモバイルデバイスによってキャプチャされてもよい。別の実施形態では、Bluetooth LEチャネル、近距離通信(NFC)チャネル、又は安全なWiFiチャネルなどの安全な通信チャネルが、鍵の交換のためにIoTデバイスとIoTハブとの間に確立されてもよい。鍵の送信方法に関わらず、受信されると、鍵はIoTハブデバイスの安全な鍵ストア内に記憶される。上述のように、セキュアエンクレーブ、トラステッド・エグゼキューション・テクノロジー(Trusted Execution Technology)(TXT)、及び/又はTrustzoneなどの様々な安全な実行技術が、鍵の記憶及び保護のためにIoTハブで使用され得る。加えて、803において、鍵はIoTサービスに安全に送信され、IoTサービスは、この鍵をそれ自体の安全な鍵ストア内に記憶する。IoTサービスは次いで、この鍵を使用して、IoTデバイスとの通信を暗号化し得る。この場合も、この交換は、証明書/署名付き鍵を使用して実行されてもよい。ハブ110内では、記憶された鍵の改変/追加/除去を防止することが特に重要である。
【0093】
公開/秘密鍵を使用してコマンド/データをIoTデバイスに安全に通信するための方法が、
図15に例示される。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0094】
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デバイスは、データ/コマンドを処理する。
【0095】
対称鍵を使用するある実施形態において、対称鍵交換は、各デバイス間(例えば、各デバイスとハブと、及びハブとサービスとの間)で交渉され得る。鍵交換が完了すると、各送信デバイスは、対称鍵を使用して各送信を暗号化し、かつ/又はそれに署名し、その後、データを受信デバイスに送信する。
モノのインターネット(IoT)システムに安全な通信を確立するための装置及び方法
【0096】
本発明の一実施形態では、通信チャネルをサポートするために使用される中間デバイス(例えば、ユーザのモバイルデバイス611及び/又はIoTハブ110など)に関わらず、データの暗号化及び解読は、IoTサービス120と各IoTデバイス101との間で実行される。IoTハブ110を介して通信する一実施形態が
図16Aに例示され、IoTハブを必要としない別の実施形態が
図16Bに例示される。
【0097】
最初に
図16Aで、IoTデバイス101とIoTサービス120との間の通信を暗号化/解読するために、IoTサービス120は、「サービスセッション鍵」1650のセットを管理する暗号化エンジン1660を含み、各IoTデバイス101は、「デバイスセッション鍵」1651のセットを管理する暗号化エンジン1661を含む。暗号化エンジンは、本明細書に記載するセキュリティ/暗号化技術を実行するとき、セッション公開/秘密鍵ペアを生成して、このペアのセッション秘密鍵へのアクセスを防止するための(他のものの中でも)ハードウェアセキュリティモジュール1630~1631、及び導出したシークレットを使用してキーストリームを生成するためのキーストリーム生成モジュール1640~1641を含む、異なるハードウェアモジュールに依拠することができる。一実施形態では、サービスセッション鍵1650及びデバイスセッション鍵1651は、関連する公開/秘密鍵ペアを含む。例えば、一実施形態では、IoTデバイス101上のデバイスセッション鍵1651は、IoTサービス120の公開鍵、及びIoTデバイス101の秘密鍵を含む。以下に詳細に説明するように、一実施形態では、安全な通信セッションを確立するために、セッション公開/秘密鍵ペア1650及び1651がそれぞれの暗号化エンジン、それぞれ1660及び1661によって使用されて、同じシークレットを生成し、このシークレットは次にSKGM1640~1641によって使用されて、IoTサービス120とIoTデバイス101との間の通信を暗号化及び解読するキーストリームを生成する。本発明の一実施形態によるシークレットの生成及び使用に関連付けられた追加の詳細は、以下に提供される。
【0098】
図16Aで、鍵1650~1651を使用してシークレットが生成されると、クライアントは、クリアトランザクション1611によって示されるように常にIoTサービス120を介してIoTデバイス101にメッセージを送信することになる。本明細書で使用されるとき「クリア」は、根本的なメッセージが本明細書に記載された暗号化技術を使用して暗号化されていないことを示すことを意味する。しかし、例示したように、一実施形態では、セキュアソケットレイヤー(SSL)チャネル又は他の安全なチャネル(例えば、インターネットプロトコルセキュリティ(Internet Protocol Security)(IPSEC)チャネル)は、通信を保護するためにクライアントデバイス611とIoTサービス120との間で確立される。IoTサービス120上の暗号化エンジン1660は、次に、生成されたシークレットを使用してメッセージを暗号化して、1602で暗号化メッセージをIoTハブ110に送信する。メッセージを直接暗号化するためにシークレットを使用するのではなく、一実施形態では、シークレット及びカウンタ値を使用して、キーストリームを生成し、このキーストリームを使用して、それぞれのメッセージパケットを暗号化する。この実施形態の詳細は、
図17に関して以下に説明する。
【0099】
例示したように、SSL接続又は他の安全なチャネルは、IoTサービス120とIoTハブ110との間で確立することができる。IoTハブ110(一実施形態ではメッセージを解読する能力を有さない)は、1603で(例えば、Bluetooth Low Energy(BTLE)通信チャネルを介して)暗号化メッセージをIoTデバイスに送信する。IoTデバイス101上の暗号化エンジン1661は、次に、シークレットを使用してメッセージを解読して、メッセージコンテンツを処理することができる。キーストリームを生成するためにシークレットを使用する実施形態では、暗号化エンジン1661は、シークレット及びカウンタ値を使用してキーストリームを生成し、次にメッセージパケットの解読のためにキーストリームを使用することができる。
【0100】
メッセージ自体は、IoTサービス120とIoTデバイス101との間の任意の形態の通信を含むことができる。例えば、メッセージは、測定を行ってその結果をクライアントデバイス611に通知して返すことなどの特定の機能を実行することをIoTデバイス101に命令するコマンドパケットを含むことができる、又はIoTデバイス101の動作を構成するコンフィギュレーションデータを含むことができる。
【0101】
応答が必要とされる場合、IoTデバイス101上の暗号化エンジン1661は、シークレット又は導出されたキーストリームを使用して、応答を暗号化し、1604で暗号化応答をIoTハブ110に送信し、IoTハブ110は、1605で応答をIoTサービス120に転送する。IoTサービス120上の暗号化エンジン1660は、次に、シークレット又は導出されたキーストリームを使用して応答を解読して、1606で(例えば、SSL又は他の安全な通信チャネルを介して)解読された応答をクライアントデバイス611に送信する。
【0102】
図16Bは、IoTハブを必要としない実施形態を例示する。むしろ、この実施形態では、IoTデバイス101とIoTサービス120との間の通信は、クライアントデバイス611を介して行われる(例えば、
図6~
図9Bに関して上述した実施形態におけるように)。この実施形態では、メッセージをIoTデバイス101に送信するために、クライアントデバイス611は、1611でメッセージの非暗号化バージョンをIoTサービス120に送信する。暗号化エンジン1660は、シークレット又は導出されたキーストリームを使用してメッセージを暗号化して、1612で暗号化メッセージをクライアントデバイス611に返送する。クライアントデバイス611は、次に、1613で暗号化メッセージをIoTデバイス101に転送し、暗号化エンジン1661は、シークレット又は導出されたキーストリームを使用してメッセージを解読する。IoTデバイス101は、次に、本明細書に記載されたようにメッセージを処理することができる。応答が必要とされる場合、暗号化エンジン1661は、シークレットを使用して、応答を暗号化し、1614で暗号化応答をクライアントデバイス611に送信し、クライアントデバイス611は、1615で暗号化応答をIoTサービス120に転送する。暗号化エンジン1660は、次に、応答を解読して、1616で解読された応答をクライアントデバイス611に送信する。
【0103】
図17は、IoTサービス120とIoTデバイス101との間で最初に実行することができる鍵交換及びキーストリーム生成を例示する。一実施形態では、この鍵交換は、IoTサービス120及びIoTデバイス101が新しい通信セッションを確立するたびに実行することができる。代替的に、鍵交換を実行することができ、交換されたセッション鍵を指定された期間(例えば、一日、一週間など)使用することができる。簡潔にするために
図17に中間デバイスは示されていないが、通信は、IoTハブ110及び/又はクライアントデバイス611を介して行うことができる。
【0104】
一実施形態では、IoTサービス120の暗号化エンジン1660は、セッション公開/秘密鍵ペアを生成するために、コマンドをHSM1630(例えば、Amazon(登録商標)によって提供されるCloudHSMなどとすることができる)に送信する。HSM1630は、その後、このペアのセッション秘密鍵へのアクセスを防止することができる。同様に、IoTデバイス101上の暗号化エンジンは、セッション公開/秘密鍵ペアを生成してこのペアのセッション秘密鍵へのアクセスを防止するHSM1631(例えば、Atmel Corporation(登録商標)によるAtecc508 HSMなどの)にコマンドを送信することができる。当然のことながら、本発明の基本原理は、いかなる特定のタイプの暗号化エンジン又は製造業者にも限定されない。
【0105】
一実施形態では、IoTサービス120は、1701で、HSM1630を使用して生成されたそのセッション公開鍵をIoTデバイス101に送信する。IoTデバイスは、そのHSM1631を使用して、それ自体のセッション公開/秘密鍵ペアを生成し、1702でそのペアの公開鍵をIoTサービス120に送信する。一実施形態では、暗号化エンジン1660~1661は、楕円曲線Diffie-Hellman(Elliptic curve Diffie-Hellman)(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などのハードウェアモジュールに依拠する。
【0106】
シークレットが決定されると、シークレットは、暗号化エンジン1660及び1661によって使用されて、データを直接暗号化及び解読することができる。代替的に、一実施形態では、暗号化エンジン1660~1661は、コマンドをKSGM1640~1641に送信して、それぞれのデータパケットを暗号化/解読するためにシークレットを使用して新しいキーストリームを生成する(すなわち、それぞれのパケットに対して新しいキーストリームデータ構造が生成される)。具体的には、キーストリーム生成モジュール1640~1641の一実施形態は、それぞれのデータパケットに対してカウンタ値が増加され、キーストリームを生成するためにシークレットと組み合わせて使用される、Galois/カウンタモード(Galois/Counter Mode)(GCM)を実装する。したがって、データパケットをIoTサービス120に送信するために、IoTデバイス101の暗号化エンジン1661は、シークレット及び現在のカウンタ値を使用して、KSGM1640~1641に新しいキーストリームを生成させ、次のキーストリームを生成するためにカウンタ値を増加させる。次に、新たに生成されたキーストリームを使用して、データパケットを暗号化し、その後、IoTサービス120に送信される。一実施形態では、キーストリームは、データでXORされて、暗号化データパケットを生成する。一実施形態では、IoTデバイス101は、カウンタ値を暗号化データパケットと共にIoTサービス120に送信する。IoTサービス上の暗号化エンジン1660は、次に、KSGM1640と通信し、KSGM1640は、受信したカウンタ値及びシークレットを使用して、キーストリーム(同じシークレット及びカウンタ値が使用されるので同じキーストリームでなければならない)を生成し、生成されたキーストリームを使用して、データパケットを解読する。
【0107】
一実施形態では、IoTサービス120からIoTデバイス101に送信されるデータパケットは、同じ方法で暗号化される。具体的には、それぞれのデータパケットに対してカウンタが増加されて、シークレットと共に使用されて、新しいキーストリームを生成する。キーストリームは、次に、データを暗号化するために使用され(例えば、データ及びキーストリームのXORを実行して)、暗号化データパケットは、カウンタ値と共にIoTデバイス101に送信される。IoTデバイス101上の暗号化エンジン1661は、次に、KSGM1641と通信し、KSGM1641は、カウンタ値及びシークレットを使用して、データパケットを解読するために使用される同じキーストリームを生成する。したがって、この実施形態では、暗号化エンジン1660~1661は、それら自体のカウンタ値を使用して、データを暗号化するキーストリームを生成し、暗号化データパケットと共に受信したカウンタ値を使用して、データを解読するキーストリームを生成する。
【0108】
一実施形態では、それぞれの暗号化エンジン1660~1661は、それが他方から受信した最後のカウンタ値を追跡し、カウンタ値がシーケンス外で受信されたか否か又は同じカウンタ値が1回より多く受信されたか否かを検出するシーケンシングロジックを含む。カウンタ値がシーケンス外で受信された場合、又は同じカウンタ値が1回より多く受信された場合、これは、リプレイアタックが試みられていることを示し得る。それに応答して、暗号化エンジン1660~1661は、通信チャネルから接続を切ることができる、及び/又はセキュリティアラートを生成することができる。
【0109】
図18は、4バイトのカウンタ値1800と、可変サイズの暗号化データフィールド1801と、6バイトのタグ1802とを含む、本発明の一実施形態で用いられる例示的な暗号化データパケットを例示する。一実施形態では、タグ1802は、解読されたデータ(それが解読されたら)の妥当性を確認するチェックサム値を含む。
【0110】
上述したように、一実施形態では、IoTサービス120とIoTデバイス101との間で交換されたセッション公開/秘密鍵ペア1650~1651は、定期的に、及び/又はそれぞれの新しい通信セッションの開始に応答して生成することができる。
【0111】
本発明の一実施形態は、IoTサービス120とIoTデバイス101との間のセッションを認証するための追加の技術を実装する。具体的には、一実施形態では、親鍵ペア、工場鍵ペアのセット、並びにIoTサービス鍵ペアのセット及びIoTデバイス鍵ペアのセットを含む、公開/秘密鍵ペアの階層が使用される。一実施形態では、親鍵ペアは、他の鍵ペアのすべてに対する信頼のルートを含み、単一の高度に安全な場所に(例えば、本明細書に記載されたIoTシステムを実装する組織の管理下に)維持される。マスター秘密鍵を使用して、工場鍵ペアなどの様々な他の鍵ペアの上に署名を生成する(及びそれによって認証する)ことができる。署名は、次に、マスター公開鍵を使用して検証することができる。一実施形態では、IoTデバイスを製造するそれぞれの工場は、それ自体の工場鍵ペアを割り当てられ、工場鍵ペアは、次に、IoTサービス鍵及びIoTデバイス鍵を認証するために使用することができる。例えば、一実施形態では、工場秘密鍵を使用して、IoTサービス公開鍵及びIoTデバイス公開鍵の上に署名を生成する。これらの署名は、次に、対応する工場公開鍵を使用して検証することができる。これらのIoTサービス/デバイス公開鍵は、
図16A~
図16Bに関して上述した「セッション」公開/秘密鍵と同じではないことに留意されたい。上述したセッション公開/秘密鍵は、一時的であり(すなわち、サービス/デバイスセッションに対して生成される)、一方、IoTサービス/デバイス鍵ペアは、恒久的なものである(すなわち、工場で生成される)。
【0112】
親鍵、工場鍵、サービス/デバイス鍵の間の上述の関係を念頭に、本発明の一実施形態は、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デバイスは、メッセージを受信して、IoTデバイスのペアリング状態を真に設定する。
【0113】
上述の技術は「IoTサービス」及び「IoTデバイス」に関して説明したが、本発明の基本原理は、ユーザのクライアントデバイス、サーバ、及びインターネットサービスを含む、任意の2つのデバイス間で安全な通信チャネルを確立するように実装することができる。
【0114】
上述の技術は、秘密鍵が無線で共有されない(シークレットが片方の当事者から他方に送信される現在のBluetoothペアリング技術と対照的に)ので、高度に安全である。会話全体を聞いている攻撃者は、公開鍵を有するのみということになり、これは、共有シークレットを生成するために不十分である。これらの技術はまた、署名された公開鍵を交換することによる中間者攻撃を防止する。加えて、GCM及び別個のカウンタがそれぞれのデバイス上で使用されるため、任意の種類の「リプレイアタック」(中間者がデータをキャプチャしてそれを再度送信する)が防止される。いくつかの実施形態はまた、非対称カウンタを使用することによりリプレイアタックを防止する。
デバイスを正式にペアリングすることなくデータ及びコマンドを交換するための技術
【0115】
GATTは、一般属性プロファイル(Generic Attribute Profile)に対する頭字語であり、これは、2つのBluetooth Low Energy(BTLE)デバイスがデータを往復して伝送する方法を規定する。これは、属性プロトコル(Attribute Protocol)(ATT)と呼ばれる一般データプロトコルを利用し、このプロトコルは、簡単なルックアップテーブルに、テーブルへの入力ごとに16ビットの特性IDを使用してサービス、特性、及び関連データを記憶するために使用される。一方で「特性」は、「属性」と呼ばれることもあることに留意されたい。
【0116】
Bluetooth(登録商標)デバイス上で、最も一般的に使用される特性は、デバイスの「名前」(特性ID 10752 (0x2A00)を有する)である。例えば、Bluetoothデバイスは、その近傍内の他のBluetoothデバイスを、GATTを使用してこれらの他のBluetoothデバイスによって発行された「名前」特性を読み取ることにより、識別することができる。したがって、ブルートゥースデバイスは、デバイスを正式にペアリング/結合することなくデータを交換するための固有の能力を有する(「ペアリング」と「結合」とが時として交換可能に使用される点に留意されたい。この議論の残りは、用語「ペアリング」を使用することになる)。
【0117】
本発明の一実施形態は、BTLE対応IoTデバイスと、これらのデバイスと正式にペアリングすることなく通信するために、この能力を利用する。それぞれの個別のIoTデバイスとのペアリングは、ペアリングするために必要とされる時間のため、及び同時に1つのペアリングされた接続のみを確立することができるため、著しく非効率であろう。
【0118】
図19は、Bluetooth(BT)デバイス1910が、ペアリングされたBT接続を正式に確立することなくIoTデバイス101のBT通信モジュール1901とのネットワークソケットアブストラクションを確立する、特定の一実施形態を例示する。BTデバイス1910は、
図16Aに示すようなIoTハブ110及び/又はクライアントデバイス611内に含めることができる。例示したように、BT通信モジュール1901は、特性ID、それらの特性IDに関連付けられた名前、及びそれらの特性IDに対する値のリストを含むデータ構造を維持する。それぞれの特性に対する値は、現在のBT標準に従って特性IDにより識別された20バイトのバッファに記憶することができる。しかしながら、本発明の基本原理は、いかなる特定のバッファサイズにも限定されない。
【0119】
図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を読み取って、上述したようにそれを処理することができる(例えば、それを使用してシークレットを生成し、シークレットを使用してキーストリームを生成するなど)。
【0120】
鍵1701が20バイト(一部の現在の実装形態での最大バッファサイズ)より大きい場合は、鍵は20バイトの部分に書き込むことができる。例えば、最初の20バイトは、BT通信モジュール1903によって特性ID<65533>に書き込んで、IoTデバイスアプリケーションロジック1902によって読み取ることができ、IoTデバイスアプリケーションロジック1902は、次に、確認応答メッセージを特性ID<65532>により識別された交渉書込値バッファに書込むことができる。GATTを使用して、BT通信モジュール1903は、この確認応答を特性ID<65532>から読み取ることができ、それに応じて、鍵1701の次の20バイトを特性ID<65533>により識別された交渉読取値バッファに書込むことができる。この方法で、特性ID<65532>及び<65533>により規定されたネットワークソケットアブストラクションは、安全な通信チャネルを確立するために使用される交渉メッセージを交換するために確立される。
【0121】
一実施形態では、安全な通信チャネルが確立されると、特性ID<65534>(IoTデバイス101から暗号化データパケットを送信するための)及び特性ID<65533>(IoTデバイスにより暗号化データパケットを受信するための)を使用して、第2のネットワークソケットアブストラクションが確立される。すなわち、BT通信モジュール1903が送信する暗号化データパケット(例えば、
図16Aの暗号化メッセージ1603などの)を有するとき、BT通信モジュール1903は、特性ID<65533>により識別されたメッセージ読取値バッファを使用して一度に20バイト、暗号化データパケットを書込み始める。IoTデバイスアプリケーションロジック1902は、次に、読取値バッファから一度に20バイト、暗号化データパケットを読み取り、必要に応じて特性ID<65532>により識別された書込値バッファを介して確認応答メッセージをBT通信モジュール1903に送信することになる。
【0122】
一実施形態では、後述するGET、SET、及びUPDATEのコマンドを使用して、2つのBT通信モジュール1901と1903との間でデータ及びコマンドを交換する。例えば、BT通信モジュール1903は、特性ID<65533>を識別しSETコマンドを含むパケットを送信して、特性ID<65533>により識別された値フィールド/バッファに書込むことができ、それは次に、IoTデバイスアプリケーションロジック1902によって読み取ることができる。IoTデバイス101からデータを取得するために、BT通信モジュール1903は、特性ID<65534>により識別された値フィールド/バッファに向けられたGETコマンドを送信することができる。GETコマンドに応答して、BT通信モジュール1901は、特性ID<65534>により識別された値フィールド/バッファからのデータを含むUPDATEパケットをBT通信モジュール1903に送信することができる。加えて、UPDATEパケットは、IoTデバイス101上の特定の属性の変化に応答して、自動的に送信することができる。例えば、IoTデバイスが照明システムに関連付けられていて、ユーザが照明をオンにする場合、UPDATEパケットを送信して、照明アプリケーションに関連付けられたオン/オフ属性にこの変化を反映することができる。
【0123】
図20は、本発明の一実施形態による、GET、SET、及びUPDATE用に使用される例示的なパケット形式を例示する。一実施形態では、これらのパケットは、交渉の後に、メッセージ書込<65534>及びメッセージ読取<65533>チャネルを介して送信される。GETパケット2001では、最初の1バイトのフィールドは、パケットをGETパケットとして識別する値(0X10)を含む。2番目の1バイトのフィールドは、現在のGETコマンドを一意的に識別する(すなわち、GETコマンドが関連付けられた現在のトランザクションを識別する)要求IDを含む。例えば、サービス又はデバイスから送信されたGETコマンドのそれぞれのインスタンスに、異なる要求IDを割り当てることができる。これは、例えば、カウンタを増加させて、カウンタ値を要求IDとして使用することにより、実行することができる。しかしながら、本発明の基本原理は、要求IDを設定するためのいかなる特定の方法にも限定されるものではない。
【0124】
2バイトの属性IDは、パケットが向けられたアプリケーション特有の属性を識別する。例えば、GETコマンドが
図19に例示したIoTデバイス101に送信されている場合、属性IDを使用して、要求されている特定のアプリケーション特有の値を識別することができる。上述の実施例に戻って、GETコマンドは、照明システムの電源状態などのアプリケーション特有の属性IDに向けることができ、この属性IDは、照明が電源がオン又はオフになっているかを識別する値(例えば、1=オン、0=オフ)を含む。IoTデバイス101がドアに関連付けられたセキュリティ装置である場合、値フィールドは、ドアの現在の状態(例えば、1=開いている、0=閉じている)を識別することができる。GETコマンドに応答して、属性IDにより識別された現在の値を含む応答を送信することができる。
【0125】
図20に例示したSETパケット2002及びUPDATEパケット2003もまた、パケットのタイプ(すなわち、SET及びUPDATE)を識別する最初の1バイトのフィールド、要求IDを含む2番目の1バイトのフィールド、及びアプリケーションで定義された属性を識別する2バイトの属性IDフィールドを含む。加えて、SETパケットは、nバイトの値データフィールドに含まれたデータの長さを識別する2バイト長の値を含む。値データフィールドは、IoTデバイス上で実行されるコマンド、及び/又はなんらかの方法でIoTデバイスの動作を構成する(例えば、所望のパラメータを設定する、IoTデバイスの電源を切るなど)コンフィギュレーションデータを含むことができる。例えば、IoTデバイス101がファンの速度を制御する場合、値フィールドは、現在のファンの速度を反映することができる。
【0126】
UPDATEパケット2003は、SETコマンドの結果の更新を提供するために送信することができる。UPDATEパケット2003は、SETコマンドの結果に関連したデータを含むことができるnバイトの値データフィールドの長さを識別する、2バイト長の値フィールドを含む。加えて、1バイトの更新状態フィールドは、更新されている変数の現在の状態を識別することができる。例えば、SETコマンドがIoTデバイスにより制御された照明をオフにすることを試みた場合、更新状態フィールドは、照明が正常にオフにされたか否かを示すことができる。
【0127】
図21は、SET及びUPDATEコマンドを伴うIoTサービス120とIoTデバイス101との間の例示的なトランザクションのシーケンスを例示する。IoTハブ及びユーザのモバイルデバイスなどの中間デバイスは、本発明の基本原理を不明瞭にすることを避けるために示されていない。2101で、SETコマンド2101は、IoTサービスからIoTデバイス101に送信されて、BT通信モジュール1901により受信され、BT通信モジュール1901は、それに応じて、2102で特性IDにより識別されたGATT値バッファを更新する。SETコマンドは、2103で低電力マイクロコントローラ(microcontroller)(MCU)200により(又は
図19に示すIoTデバイスアプリケーションロジック1902などの低電力MCU上で実行されているプログラムコードにより)値バッファから読み取られる。2104で、MCU200又はプログラムコードは、SETコマンドに応答して動作を実行する。例えば、SETコマンドは、新しい温度などの新しいコンフィギュレーションパラメータを指定する属性IDを含むことができる、又はオン/オフなどの状態値(IoTデバイスを「オン」又は低電力状態に入らせるための)を含むことができる。したがって、2104で、新しい値がIoTデバイスに設定され、2105でUPDATEコマンドが返され、2106でGATT値フィールドの実際の値が更新される。場合により、実際の値は、所望の値に等しいであろう。他の場合では、更新された値は、異なることがある(すなわち、IoTデバイス101がある特定のタイプの値を更新するのに時間がかかることがあるため)。最終的に、2107で、GATT値フィールドからの実際の値を含むUPDATEコマンドがIoTサービス120に返送される。
【0128】
図22は、本発明の一実施形態によるIoTサービスとIoTデバイスとの間で安全な通信チャネルを実装するための方法を例示する。本方法は、上述のネットワークアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【0129】
2201で、IoTサービスは、楕円曲線デジタル署名アルゴリズム(elliptic curve digital signature algorithm)(ECDSA)証明書を使用してIoTハブと通信するための暗号化チャネルを作成する。2202で、IoTサービスは、セッションシークレットを使用してIoTデバイスパケット内のデータ/コマンドを暗号化して、暗号化デバイスパケットを作成する。上述したように、セッションシークレットは、IoTデバイス及びIoTサービスによって独自に生成することができる。2203で、IoTサービスは、暗号化チャネルを介して暗号化デバイスパケットをIoTハブに送信する。2204で、解読することなく、IoTハブは、暗号化デバイスパケットをIoTデバイスに渡す。22-5で、IoTデバイスは、セッションシークレットを使用して、暗号化デバイスパケットを解読する。上述したように、一実施形態では、これは、シークレット及びカウンタ値(暗号化デバイスパケットと共に提供される)を使用してキーストリームを生成し、次にキーストリームを使用してパケットを解読することにより実現することができる。2206で、IoTデバイスは、次に、デバイスパケットに含まれたデータ及び/又はコマンドを抽出して処理する。
【0130】
したがって、上述の技術を使用して、標準的なペアリング技術を使用して、BTデバイスを正式にペアリングすることなく、2つのBT対応デバイス間で双方向の安全なネットワークソケットアブストラクションを確立することができる。これらの技術は、IoTサービス120と通信するIoTデバイス101に関して上述したが、本発明の基本原理は、任意の2つのBT対応デバイス間で安全な通信チャネルを交渉して確立するように実装することができる。
【0131】
図23A~
図23Cは、本発明の一実施形態によるデバイスをペアリングするための詳細な方法を例示する。本方法は、上述のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0132】
2301で、IoTサービスは、IoTサービスのシリアルナンバー及び公開鍵を含むパケットを作成する。2302で、IoTサービスは、工場秘密鍵を使用してパケットに署名する。2303で、IoTサービスは、暗号化チャネルを介してIoTハブにパケットを送信し、2304で、IoTハブは、非暗号化チャネルを介してIoTデバイスにパケットを転送する。2305で、IoTデバイスは、パケットの署名を検証し、2306で、IoTデバイスは、IoTデバイスのシリアルナンバー及び公開鍵を含むパケットを生成する。2307で、IoTデバイスは、工場秘密鍵を使用してパケットに署名し、2308で、IoTデバイスは、非暗号化チャネルを介してIoTハブにパケットを送信する。
【0133】
2309で、IoTハブは、暗号化チャネルを介してパケットをIoTサービスに転送し、2310で、IoTサービスは、パケットの署名を検証する。2311で、IoTサービスは、セッション鍵ペアを生成し、2312で、IoTサービスは、セッション公開鍵を含むパケットを生成する。IoTサービスは、次に、2313で、IoTサービス秘密鍵でパケットに署名し、2314で、IoTサービスは、暗号化チャネルを介してパケットをIoTハブに送信する。
【0134】
図23Bに移って、2315で、IoTハブは、非暗号化チャネルを介してパケットをIoTデバイスに転送し、2316で、IoTデバイスは、パケットの署名を検証する。2317で、IoTデバイスは、セッション鍵ペアを生成し(例えば、上述の技術を使用して)、2318で、IoTデバイスセッション公開鍵を含むIoTデバイスパケットが生成される。2319で、IoTデバイスは、IoTデバイス秘密鍵でIoTデバイスパケットに署名する。2320で、IoTデバイスは、非暗号化チャネルを介してIoTハブにパケットを送信し、2321で、IoTハブは、暗号化チャネルを介してIoTサービスにパケットを転送する。
【0135】
2322で、IoTサービスは、パケットの署名を検証し(例えば、IoTデバイス公開鍵を使用して)、2323で、IoTサービスは、IoTサービス秘密鍵及びIoTデバイス公開鍵を使用して、セッションシークレットを生成する(先に詳細に説明したように)。2324で、IoTデバイスは、IoTデバイス秘密鍵及びIoTサービス公開鍵を使用して、セッションシークレットを生成し(また、上述したように)、2325で、IoTデバイスは、乱数を生成して、セッションシークレットを使用してその乱数を暗号化する。2326で、IoTサービスは、暗号化チャネルを介して暗号化パケットをIoTハブに送信する。2327で、IoTハブは、非暗号化チャネルを介して暗号化パケットをIoTデバイスに転送する。2328で、IoTデバイスは、セッションシークレットを使用してパケットを解読する。
【0136】
図23Cに移って、2329で、IoTデバイスは、セッションシークレットを使用してパケットを再暗号化し、2330で、IoTデバイスは、非暗号化チャネルを介して暗号化パケットをIoTハブに送信する。2331で、IoTハブは、暗号化チャネルを介して暗号化パケットをIoTサービスに転送する。2332で、IoTサービスは、セッションシークレットを使用してパケットを解読する。2333で、IoTサービスは、乱数がIoTサービスが送信した乱数と一致することを検証する。IoTサービスは、次に、2334で、ペアリングが完了したことを示すパケットを送信し、2335で、その後のメッセージはすべて、セッションシークレットを使用して暗号化される。
一体成形部品ためのシステム及び方法
モノのインターネット(IoT)セキュリティセンサ
【0137】
本発明の一実施形態は、一体成形のモノのインターネット(IoT)セキュリティセンサを備え、このセンサは、既存の無線ドア/窓センサの制約(例えば、位置調整、かさ高性、誤作動等)に対処する。
図24は、ユーザの家庭又は事業所内の様々なドア及び/又は窓に結合されている、3つのかかるIoTデバイス2401~2403を有するシステムアーキテクチャを示す。様々なシステム構成要素同士の間の相互作用は、上記のように生じてもよい。例えば、示しているアーキテクチャは、IoTハブ2405を含み、このIoTハブは、Bluetooth Low Energy(BTLE)チャネル等の低出力無線通信チャネルを介してIoTデバイス2401~2403と通信し、一実施形態では、IoTクラウドサービス2420との通信チャネルを確立する。
【0138】
示すように、IoTクラウドサービス2420は、IoTデバイスデータベース2430を含んでもよく、このデータベースは、システムに構成された(
図24に示されない複数のIoTハブ及びデバイスを含んでもよい)IoTデバイス2401~2403及びIoTハブ2405のそれぞれのためのデータベース記録を含む。IoTデバイス管理ロジック2415は、新たなIoTデバイスためのデータベース記録を作成し、IoTデバイス2401~2403のそれぞれによって送信されたデータに応じてIoTデバイス記録を更新する。IoTデバイス管理ロジック2415は、また、上記の様々なセキュリティ/暗号化機能を実装することにより、(例えば、QRコード/バーコードを使用して)システムに新たなデバイスを付加し、IoTデバイス2401~2403と通信するときに通信を暗号化するためのキーを使用するか、及び/又はデジタル署名を生成してもよい。一実施形態では、ユーザは、デバイス2401~2403のそれぞれに関連した情報にアクセスしてもよく、及び/又はAndroid(登録商標)デバイス又はiPhone(登録商標)等のスマートフォンデバイスであってもよいユーザデバイス2410にインストールされたアプリを介してデバイスを制御してもよい。それに加えて、ユーザは、デスクトップ又はラップトップコンピュータにインストールされたブラウザ又はアプリケーションを介してIoTデバイスにアクセス又は制御してもよい。一実施形態では、ユーザデバイス2410のアプリ又はアプリケーションから送信された制御信号は、インターネット2422を介してIoTクラウドサービス2420に渡され、次いで、IoTクラウドサービス2420からIoTハブ2405まで、及び、IoTハブ2405からIoTデバイス2401~2403のうちの1つ又は複数のものまで転送される。勿論、本発明の基礎原理は、ユーザが様々なIoTデバイス2401~2403にアクセス/制御するといういかなる特定の態様にも限定されない。
【0139】
上記のように、一実施形態では、IoTデバイス2401~2403は、ドア及び/又は窓に構成された一体成形のセキュリティデバイスを備える。
図25は、例示的なIoTデバイス2401を示し、このデバイスは、(例えば、上記のようなBTLE等の低出力無線リンクを使用して)セキュリティ状態をIoTハブ2405に報告するためのラジオマイクロコントローラ2510、動作を検出するための加速計2502、及び、近くのオブジェクトから反射される電磁放射を生成及び感知するための近接センサ及びロジック2505を含む。一実施形態では、電磁放射は、赤外線(IR)放射である(すなわち、IRスペクトル内にある)。しかし、様々な別の形式の電磁放射が、本発明の基礎原理に従いながら使用されてもよい。
【0140】
別の実施形態では、近接センサ2505は、現在のドア位置を検出するための磁力計を備える。例えば、磁力計は、地磁界の方向に対するドアの向きを検出するように構成されてもよい。磁力計は、ドアが閉じている位置及び開いている位置にあるときに、測定値をとることによって較正されてもよい。最新の磁力計測定値が、次いで、較正された測定値と比較されて、ドアが現在開いているか又は閉じているかを決定してもよい。
【0141】
図25に示す例では、IoTデバイス2401は、側柱2521に面するドア2520の内側部分に付着されている。一実施形態では、例えば、それはドアと側柱(ドアが確保されるフレームの鉛直部分)との間に嵌合するのに十分なほど小さくてもよい。しかし、この特定の配置は、本発明の基礎原理に従うのに必要ではないことが留意されるべきである。更に、本発明の基礎原理は、また、ユーザの家庭又はオフィスの窓又は任意の別の可動オブジェクトに実装されてもよい。
【0142】
作動中、ドア2520が静止しているとき、ラジオuC2510は、バッテリ寿命を保つために非常に低い電圧又はオフ状態に維持される。一実施形態では、ドアが動かされると、加速計2502が割り込んでラジオuC2510を起動させ、このことが、次に近接センサ/ロジック2505を使用して側柱2521がそれの前で静止しているか否かを「見る」。ドアが静止していない場合、近接センサは、ラジオuCがIoTハブ2405に送信する警告信号を生成してもよい。
【0143】
一実施形態では、近接センサ/ロジック2505は、IR放射を伝送するためのIR送信機と、側柱2521から反射するIR放射を検出するためのIR検出器と、を備える。一実施形態では、近接センサ/ロジック2505は、反射されたIR放射の強度を測定する。近接センサ/ロジック2505は、次いで、ドアが閉じているときに存在することが知られた(例えば、下記で論じるように較正を介して収集されてもよい)示度と最新のIR示度を比較してもよい。示度が一致する(又は、指定閾値内にある)場合、近接センサ/ロジック2505は、ドアが閉じている位置にあると決定する。しかし、示度が一致しない(例えば、閾値外である)場合、近接センサ/ロジック2505は、ドアが開いていると決定し、ラジオuC2510を介してアラーム状態を生成してもよい。
【0144】
一実施形態では、近接センサ/ロジック2505は、ドア2520の「閉じている」位置にIR示度を較正するための較正ロジックを含む。一実施形態では、IoTデバイス2401がドアに装着された後に、ユーザは、ドアが閉じている位置にあるときにユーザに確認することを要求するユーザデバイス2410のアプリを介して較正処理を実行する。いったんユーザが指示を与えると、示度を記録することになる近接センサ2505に通知するためにコマンドが送信されてもよい。これらの示度は、次いで、上記のような最新の示度と比較されることにより、ドアが、現時点で開いているか又は閉じているかを決定してもよい。
【0145】
図26は、IoTデバイス2401が、ドア2520の内面と側柱2521との間のドア2520の下側部分に設置されている一実施形態を示す。この実施形態のIoTデバイス2401は、近接センサ/ロジック2505だけがドア2520と側柱2521との間に設置され、同時に、IoTデバイス2401の残りの構成要素(例えば、ラジオuC及び加速計2502)がドアの面に設置されているという直角のフォームファクタを使用してもよい。この実施形態は、ドア2520と側柱2521との間に収まる部分が可能な限り薄い(例えば、場合によってはわずかに数ミリメートルである)ことを可能にし、同時に、(より嵩張る傾向があり得る)無線ラジオuC等の他の構成要素がドアの動きを妨げないことを可能にしてもよい。勿論、本発明の基礎原理は、構成要素のすべてがドア2520と側柱2521との間の単一パッケージに嵌合するのに十分なほど小さいようなIoTデバイス2401を含んでもよい。
【0146】
更に、IoTデバイス2401が、側柱2521から最も遠く離れたドアの縁部等の別の位置に置かれてもよいことが理解されるであろう。この実施形態では、近接センサ/ロジック2505は、ドアの縁部とドア枠の直ぐ隣の部分との間のIR測定値をとってもよい。同様に、IoTデバイス2401は、また、窓の縁部に又はその近傍に置かれてもよい。この実施形態では、近接センサ/ロジック2505は、窓枠又は窓敷居等の近くの構造オブジェクトから跳ね返されたIR測定値をとることになる。繰り返しになるが、較正処理が、閉じている及び/又は開いている位置での測定値をとるために実装されてもよく、それに続く示度がこれらの測定値と比較されて、窓が開いているか又は閉じているかを決定してもよい。
【0147】
様々な異なるタイプのセンサがIoTデバイス2401の内部で使用されるか又はそれに結合されることにより、ユーザの家庭又は事業所内のドア、窓、又は別の装置の位置を感知してもよい。いくつかの例示的な実施形態が以下で説明される。
【0148】
図27A~
図27Bに示すように、本発明の別の実施形態は、ドア2710の内側に結合された感圧抵抗器(force sensing resistor)(FSR)2702を含む。この示している実施形態では、FSR2702は、表すようにそれ自体がドアに直接装着されているゴムバンパ構成要素2701に装着される。FSR2702は、FSRリード線2704のセット(例えば、FSR2702に作用している最新の力を通信するワイヤのセット)を介してIoTデバイス2703に通信可能に取り付けられる。
図27に示す実施形態のように、この実施形態では、IoTデバイス2703は、表すように、FSRセンサだけがドア2710と側柱との間に設置され、同時に、IoTデバイス2703の残りの構成要素(例えば、ラジオuC及び加速計2502)は、ドアの面に設置されるという直角のフォームファクタを有してもよい。IoTデバイス2703は、(上記の実施形態の場合のように)ラジオモジュールと、電源用の小型バッテリと、を含んでもよい。
【0149】
別の実施形態において、FSR2702は、ドアの内側縁部よりもむしろドア2710の外側縁部に装着されてもよく、また、ドア枠(例えば、側柱2521)に結合されてもよい。本発明の基礎原理は、IoTデバイス2703及びFSR2702のためのなんらかの特定の取付け位置に限定されない。更に、同一の基本原理が、ユーザの家庭又は事業所の窓又は別のデバイスにFSR2702を使用するために適用されてもよい。
【0150】
図27A~
図27Bに示す例において、感圧抵抗器(FSR)2702は、ドアの内側がドア枠の極近くに入るときを検出することができる。短い距離を越えて、FSR2702は、ドアによってFSRを通してドア枠に適用されている力の連続測定値を提供する。上記のように、FSR2702の一実施形態が、力をドアからFSRを通して枠まで伝達する小型ゴムバンパ2701に装着される。バンパ2701のサイズ及び稠度(consistency)は、様々なドア間隙に適応するように変えられてもよい。(例えば、ドアが閉じている結果として)FSRに作用する力に応じて、FSR2702は、IoTデバイス2703によって受信されて処理される、及び/又は自らを通してIoTハブ2405及びIoTサービス2420に送信される電気信号を生成する。例えば、異なる抵抗が、異なるレベルの作用力に対してFSR2702にわたって測定されてもよい(すなわち、一貫した電圧を仮定したときに異なる電流量をもたらす)。指定閾値力に達したとき、IoTデバイス2703(又は、IoTハブ2405又はサービス2420)は、このことがドアが「閉じている」位置にあることを意味すると解釈してもよい。閾値未満の力が検出されるとき、IoTデバイス2703、IoTハブ2405、又はIoTサービス2420は、このことがドアが部分的にだけ開いている(例えば、わずかに半開きで、それによって部分的にだけFSRを押し下げている)ことを意味すると解釈してもよい。力が検出されないとき、IoTデバイス2703、IoTハブ2410、及び/又はサービス2420は、ドアが開いていると断定してもよい。したがって、FSR2702等、小さいダイナミックレンジにわたって連続的な力の計測値を提供するセンサを使用することは、(単にオン又はオフである既存のセキュリティセンサと対照的に)ドア位置のより正確な判定を提供する。先の実施形態のように、FSR2702/IoTデバイス2703は、(二部式である磁気ドアセンサの現在の形式の反対であるように)ドア又はドア枠に完全に付着されてもよい一体式のデバイスとして実装されてもよい。
【0151】
一実施形態では、ユーザは、最初にインストールされるときに、FSR2702/IoTデバイス2703を較正してもよい。例えば、ユーザデバイス2410のアプリによって、ユーザは、ドアが全閉である、全開である、及び半開であるときについての表示を提供することを要求されてもよい。センサ示度がそれぞれの位置でとられて、IoTデバイス2703、IoTハブ2410、及び/又はサービス2420によって記録されてもよい。これらの示度は、次いで最新の示度と比較されて、ドアの最新の状態を決定してもよい。例えば、最新の示度が、閉じているドアに対する記録された示度の指定範囲内にある場合、IoTデバイス2703、IoTハブ2410、及び/又はサービス2420は、ドアが現時点で閉じていると決定してもよい。同様の比較が、開いた及び半開の状態に対してなされてもよい。
【0152】
接着剤、圧力嵌め、ゴム製品、又は取り付けられたブラケットを含む様々な取付け技術が、フォームファクタ及び設計目標によって使用されてもよい。
図27A~
図27Bに示す実施形態において、例えば、接着剤が、ゴムバンパの裏材に適用されて、FSR2702及びIoTデバイス2703をドアに付着させてもよい。使用されてもよいFSRの一例は、Digi-Key Electronicsから利用可能なFSR 402 Round Force Sensing Resistorである。
【0153】
別の実施形態は、
図27A~
図27Bに示す特徴のすべてを含むだけでなく、パッケージに付加された圧電振動センサを含む。例えば、一実施形態では、圧電振動センサは、ゴムバンパ2701の下に設置されてもよく、又はその内部に一体化されてもよい。FSRと同様に、電気リード線が、IoTデバイス2703に圧電振動センサを通信可能に結合する。一実施形態では、圧電振動センサは、パッシブ型であって、力、曲げ、又は振動が作用すると、外部デバイスに電力供給を要求することなく高電圧を生成する。したがって、振動センサは、振動又は動きに応じて、ラジオマイクロコントローラ2510及びIoTデバイス2703内の別の構成要素を起動させるように構成されてもよく、それによって、これらの構成要素が、振動又は動きがない場合に、非常に低い電力状態に入ることを可能にする。振動センサは、例えば、ドアをノック/打撃することによって始動されてもよく、圧力/触覚センサとして作動してもよく、又は、単なる加速計(
図25の加速計2502等)として構成されてもよい。
【0154】
一実施形態では、
図27A~
図27BのFSR2702は、板ばねに結合された歪みゲージによって置換される。ドアが閉まり、ばねと接触すると、歪みゲージ抵抗は、ばね面の歪みに応じて変化する。抵抗変化は、順に、ばね角度、そのためドア角度に相関するばね曲りに対応する。この実施形態の結果は、ドア角度についてのずっと大きい動作範囲が利用可能であることを除いて、上記のFSR実施形態と同様である。しかし、歪みゲージ回路は動作範囲を増大させるための増幅を必要とし、その結果、この設計は、FSR実施形態よりも大きい電力を消費する傾向がある場合がある。
【0155】
別の実施形態では、
図27A~
図27BのFSR2702センサ要素が、圧電フィルムと圧電抵抗フィルムとの組合せによって置換される。この実施形態の圧電フィルムは、圧電振動センサに対して上記のように作動して、力、曲げ、又は振動が作用すると、外部デバイスに電力供給を要求することなく、高電圧を生成する。しかし、圧電抵抗フィルムは、ピエゾ抵抗効果を利用し、力及び曲げに基づく可変抵抗を有する。一実施形態では、これらの2つのフィルムは、上記の板ばね/歪みゲージの組合せと同様の態様で使用されてもよい。しかし、別の実施形態では、圧電/圧電抵抗フィルムの組合せは、ドア機構のラッチ/ボルトスロット内部に取り付けられてもよく、導体のセットを介してIoTデバイス2703に通信可能に結合されてもよい。ラッチがロック固定されてセンサを変形させるか、又はアンラッチされてセンサを自由にしているか否かによって、ドアのロック固定状態が生成された電気信号から決定されてもよい。一実施形態では、取付けは、枠又はドアのいずれかで実行される。この実施形態では、フィルムは、ドアラッチ近くの面に接着/固着され、ラッチ経路の中に突き出ることにより、ラッチ動作がフィルムと接触する。先の実施形態のように、この実施形態は、設置後に較正されることにより、ドアの開閉状態は、圧電抵抗フィルムの対応する抵抗と相関させられてもよい。
【0156】
更に別の実施形態は、
図27A~
図27Bの実施形態と同一又は同様の構成要素を保有するけれども、ドア内部に取り付けられる。改装中又は組立て中のいずれかで、小さい空洞が、センサが表面の平面を越えて延在するFSRバンパだけによって中に設置されるドア又は枠の内部(ヒンジ取付け台)に作成される場合がある。このようにFSRセンサを埋め込むことによって、サイズ及びフォームファクタの関与がより小さくなり、そして、より大きい容量のバッテリが使用されることにより、ユニット寿命を10年まで延長してもよい。更に、この実施形態は、ほとんどプロファイルが見えず、視覚に入り込むことがはるかにより少ない。ユニットのサイズの制限は、バッテリの様式に依存する。
【0157】
標準的なドア2710の文脈で説明されるけれども、上記の実施形態のすべては、また、引戸及び引窓に適用できる。自在戸が、現在の提案される実装例のうちの最も複雑なものである。引窓又は引戸に取り付けられると、これらの実施形態は、純粋に直線の経路を有するにもかかわらず、同一の基礎機能を実行する。
【0158】
本発明の一実施形態に従う方法が
図28に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【0159】
2801において、ドア/窓は、最初に静止位置にある。2802において動きが検出される場合、2803において、無線uCがそれ自体の低電力/スリープ状態から起動される。2804において、無線uCは、(また問合せの前には低電力状態にあってもよい、及び/又は加速計によって活性化させられていてもよい)近接センサに近接示度をとることについて問い合わせる。それに応じて、近接センサは、2805において示度を作成して、ドア/窓が開いている又は閉じている位置のいずれにあるかを決定する。ドア/窓が開いていると2806において決定される場合、2807において、IoTハブ、IoTサービス、及び/又はユーザデバイスに送信され得るアラーム状態を生成してもよい。最終的に、アラーム状態が調べられた後に、アラーム状態は2809において無効にされてもよい。一実施形態では、アラーム状態は、IoTハブ、IoTサービス、及び/又はユーザのモバイルデバイスから送信される信号に応じて無効にされてもよい。ドア/窓が開いていると2806において決定されない場合、2808において、無線uCは低電力/スリープ状態に戻されてもよく、そして処理は2801まで戻る。
【0160】
一実施形態では、ユーザは、ユーザの家庭が「保護された」状態にあるとき(例えば、ユーザが日中に家庭から離れるとき、又はユーザが眠っている夜に)、システムは上記のようにアラームを生成するように構成してもよい。別の時間の間に家庭が保護状態にないとき、IoTデバイス2401の様々な構成要素が、低電力/スリープ状態に入ってもよい。IoTハブ2405からの信号は、次いで、ユーザからの(例えば、ユーザデバイスのアプリを介する)手動入力に応じて、及び/又は毎日のスケジュール(例えば、日夜のユーザ指定時間に)に従って、IoTデバイス2401を動作モードに置いてもよい。
【0161】
様々な技術が、ドア及び窓にIoTデバイス2401を付着するために使用されてもよく、これらの技術は、例えば、接着剤(例えば、両面テープ)、IoTデバイスの筐体の取付け孔を通って嵌合するようにサイズ設定されたミニチュアねじを含む。
モノのインターネット(IoT)デバイスを制御するための二次通信チャネルを確立するためのシステム及び方法
【0162】
上記の本発明の実施形態において、安全なチャネルが、IoTハブ又はクライアントデバイスによってそれぞれのIoTデバイスとIoTサービスとの間に確立される(例えば、
図16A~
図17及び関連する本文を参照)。いったん確立されると、IoTサービスは、それぞれのIoTデバイスを制御及び構成するためのコマンドを安全に送信してもよい。逆方向に、それぞれのIoTデバイスは、IoTサービスにデータを送信して戻してもよく、そこで、データはエンドユーザによって記憶及び/又はアクセスされてもよい。例として、ドア又は窓がユーザの家庭で開いているとき、この状態を検出するように構成されたIoTデバイスが、ドア/窓が開いているという表示を安全な通信チャネルを介してIoTサービスに送信してもよい。同様に、IoTデバイスがユーザのフロントドアの無線ロック固定具として構成される場合、ユーザは、コマンドをIoTサービスからIoTデバイスまで安全な通信チャネルを介して送信させて、フロントドアをロック解除してもよい。
【0163】
上記の構成は、IoTデバイスとIoTサービスとの間に実行可能な接続が存在することを仮定している。しかし、いくつかの例では、IoTサービスへの接続は、実行不可能であってもよい。例えば、IoTサービスがダウンしていてもよく、又は(例えば、セルラーデータネットワーク又は専用家庭インターネット接続を介する)IoTサービスへのインターネット接続が動作不能であってもよい。
【0164】
図29に示すように、この問題に対処するために、本発明の一実施形態は、ユーザのクライアントデバイス611とIoTデバイス101との間に二次の通信チャネル2910を確立するための技術を提供することにより、ユーザは、(IoTハブ110とIoTサービス120との間の通信経路上にバツ印で示されるように)IoTサービス120への接続が失われたときにさえ、IoTデバイス101からのデータを制御及び収集してもよい。したがって、IoTデバイス101が無線ドアロックである場合、ユーザは、たとえIoTサービス120への一次の通信チャネル2911が動作不能であっても、二次の通信チャネル2910を使用してユーザのフロントドアをロック解除してもよい。
【0165】
一実施形態では、二次のチャネル2910は、Bluetooth Low Energy(BTLE)通信チャネルを備える。しかしながら、本発明の基本原理は、いかなる特定の無線通信プロトコルにも限定されない。
【0166】
一実施形態では、二次のチャネル鍵2950~2951のセットがクライアントデバイス611及びIoTデバイス101に記憶又は維持されることにより、IoTデバイス101とクライアントデバイス611との間に安全な二次の通信チャネル2910を確立するために使用される。二次のチャネル鍵2950~2951は、安全な鍵交換プロトコルを使用して、クライアントデバイス611とIoTデバイス101との間で交換されてもよい。例えば、上記の同一の鍵交換プロトコル(又は、そのサブセット)は、クライアントデバイス611とIoTデバイス101との間で鍵を交換するために使用されてもよい。その代替として、鍵がランダムに生成されて、安全にIoTサービス120からIoTデバイス101及びクライアントデバイス611に(すなわち、IoTサービスへの接続が動作可能である期間の間に)提供されてもよい。
【0167】
いったん鍵が交換されてしまうと、クライアントデバイス611の暗号化エンジン2960は、それ自体の鍵2950を使用してIoTデバイス101との通信を暗号化してもよく、IoTデバイス101の暗号化エンジン1661は、それ自体の鍵2951を使用してクライアントデバイス611から受信された通信を復号してもよい。反対に、IoTデバイス101の暗号化エンジン1661は、それ自体の鍵を使用して通信を暗号化してもよく、クライアントデバイス611の暗号化エンジン2960は、それ自体の鍵を使用して通信を復号してもよい。
【0168】
クライアントデバイスに鍵を記憶することが上記の実施形態よりも安全ではないので、IoTデバイス101によって公表される機能は、第2の通信チャネル2910が使用されるときに限定されてもよい。第2のチャネル2910が使用されるときに公表/可能にされる機能は、また、製品に依存してもよい。例えば、ユーザは、IoTデバイス101からデータのサブセットを取り出すのを可能にされてもよく、及び/又は、IoTデバイス101を構成又は制御するためのコマンドのサブセットを提供されてもよい。例として、IoTデバイスは、「安全な」データとみなされるデータへのユーザーアクセスを拒んでもよく、(例えば、IoTデバイスのセキュリティコードを変える等の)「安全な」コマンドへのアクセスを拒んでもよい。
【0169】
無線ドアロック等の特定タイプのIoTデバイス101は、単一の単純な機能を有してもよい。一実施形態では、これらの機能へのアクセスは、追加のセキュリティの層を使用して、二次のチャネル2910を介して提供される。例えば、一実施形態では、IoTデバイスの認証モジュール2970は、N桁の数又は英数字パスワード等のセキュリティパスコード2971によって構成される。例えば、このことは、一次の安全な通信チャネル1911がIoTサービス120とIoTデバイス101との間に確立されるという期間中に実行されてもよい。IoTサービス120に接続すると、ユーザは、クライアントデバイス611のパスコードエントリアプリ2920を介してパスコードを選んでもよい。パスコードは、次いで、IoTサービス120から安全に送信されて、IoTデバイス101の安全な記憶装置内に安全に記憶されてもよい。
【0170】
その後、ユーザが(例えば、上記のような二次のチャネル鍵を使用して)クライアントデバイス611から二次の通信チャネル2910を確立するときに、IoTデバイス101は、ユーザに、安全なパスコードを入力することを促してもよい。ユーザがパスコードエントリアプリ2920から正しく安全なパスコードを入力する場合、認証モジュール2970が、ユーザを認証して、IoTデバイス101(又は、それの指定サブセット)によって実行されるべきデータ及び機能へのアクセスを提供することになる。一実施形態では、認証エンジン2970は、指定された数のパスコード試行が失敗した後に、二次の通信チャネル2910を切断することになる。例えば、IoTデバイス101が無線ドアロックである場合、パスコードは、ユーザの家庭へのエントリのためのセキュリティの追加の層として作用する。
【0171】
本発明の一実施形態に従う方法が
図30に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0172】
3001において、安全な接続が、(例えば、上記の安全な鍵交換技術を使用して、IoTデバイスによって)IoTサービスとIoTデバイスとの間に確立される。3002において、二次の鍵交換が、IoTデバイスとクライアントデバイスとの間で実行される。上記のように、このことは、(例えば、鍵のランダムなセットを生成して、IoTデバイス及びクライアントデバイスのそれぞれに鍵を安全に提供してもよい)クライアントデバイスとIoTデバイスとの間で直接、又はIoTサービスを介してを含む様々な方法で達成されてもよい。
【0173】
3003において、IoTデバイスは、安全なパスコードによってプログラミングされる。上記のように、このことは、ユーザにN桁の数値コード又は英数字コードを入力することを促す、ユーザのクライアントデバイスのアプリを介して実行されてもよい。パスコードは、IoTサービスとIoTデバイスとの間に確立された安全なチャネルを介してIoTデバイスに安全に送信されてもよい。
【0174】
一次の安全な接続の失敗が3004において決定される場合、3005において、クライアントデバイスとIoTデバイスとの間の二次の安全な接続が、二次の通信プロトコルを使用して確立されてもよい。一実施形態では、二次のプロトコルは、3002において交換された二次の鍵を使用して、IoTデバイスとクライアントデバイスとの間の通信を暗号化する。上記のように、基礎の無線通信プロトコルは、BTLE又は別のローカル無線プロトコルを使用して実装されてもよい。
【0175】
3006において、IoTデバイスは、ユーザにユーザのクライアントデバイスを介して安全なパスワードを入力することを促す。ユーザによる正しいパスコードの入力が3007において決定される場合、IoTデバイスは、3008においてそれ自体のデータ及び機能(又は、そのサブセット)へのアクセスを許可する。ユーザが正しいパスコードを入力しない場合、3009において、IoTデバイスへのアクセスが拒否される。
【0176】
本発明の実施形態は、上で説明した様々な工程を含み得る。本工程は、汎用又は特殊目的のプロセッサに本工程を実行させるために使用され得る、機械実行可能な命令において具現化することができる。代替的に、これらの工程は、工程を実行するためのハードワイヤードロジックを含む特定のハードウェア構成要素によって、又はプログラミングされたコンピュータ構成要素及びカスタムハードウェア構成要素の任意の組み合わせによって、実行することができる。
【0177】
本明細書に記載される場合に、命令は、ある特定の動作を行うように構成されるか、又は所定の機能若しくはソフトウェア命令が非一時的コンピュータ可読媒体中に具現化されたメモリ内に記憶されている、特定用途向け集積回路(ASIC)などの、ハードウェアの特定の構成を指し得る。したがって、図面に示される技術は、1つ以上の電子デバイス(例えば、エンドステーション、ネットワーク要素など)上に記憶及び実行されるコード及びデータを使用して実装され得る。そのような電子デバイスは、非一時的コンピュータ機械可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、相変化メモリ)、並びに一時的なコンピュータ機械可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号などの電気的、光学的、音響的又は他の形態の伝搬信号)などのコンピュータ機械可読記憶媒体を使用して、コード及びデータを記憶及び(内部で及び/又はネットワークを介して他の電子デバイスと)通信する。加えて、そのような電子デバイスは、典型的に、1つ以上の記憶デバイス(非一時的機械可読記憶媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、並びにネットワーク接続などの、1つ以上の他の構成要素に連結された1つ以上のプロセッサのセットを含む。プロセッサの組と他の構成要素との連結は、典型的には、1つ以上のバス及びブリッジ(バスコントローラとも呼ばれる)を通じて行われる。記憶デバイスとネットワークトラフィックを運ぶ信号のそれぞれは、1つ以上の機械可読記憶媒体及び機械可読通信媒体を表す。したがって、所与の電子デバイスの記憶デバイスは、その電子デバイスの1つ以上のプロセッサのセット上で実行するためのコード及び/又はデータを、典型的に記憶する。当然のことながら、本発明の実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの異なる組み合わせを使用して実装されてもよい。
【0178】
この詳細な説明全体を通じて、説明を目的として、本発明の完全な理解を提供するために、多数の特定の詳細を記載した。しかしながら、本発明は、これらの具体的な詳細の一部がなくても実施され得ることは、当業者にとって明らかであろう。ある特定の例では、既知の構造及び機能は、本発明の主題を不明瞭にすることを回避するために、詳述しなかった。したがって、本発明の範囲及び趣旨は、以下の特許請求の範囲の観点から判断されるべきである。
【0179】
図31は、IoTデバイス101の一実施形態を示し、この実施形態において、BTLE通信インターフェース3110は、データが送信される準備ができているときにアドバタイジング間隔を調節するアドバタイジング間隔選択ロジック3111を含む。それに加えて、IoTハブ110のBTLE通信インターフェース3120は、アドバタイジング間隔の変化を検出し、確認応答を与え、及びデータを受信するためのアドバタイジング間隔検出ロジック3121を含む。
【0180】
特に、示している実施形態では、IoTデバイス101のアプリケーション3101は、それが送信されるべきデータを有することを示す。それに応じて、アドバタイジング間隔選択ロジック3111は、アドバタイジング間隔を修正してデータが送信されるべきこと(例えば、間隔を.75T又はなんらかの別の値に変えること等)をIoTハブ110に通知する。アドバタイジング間隔検出ロジック3121が変化を検出すると、BTLE通信インターフェース3120は、IoTデバイス101のBTLE通信インターフェース3110に接続して、それがデータを受信する準備ができていることを示す。IoTデバイス101のBTLE通信インターフェース3110は、次いで、IoTハブのBTLE通信インターフェース3120にデータを送信する。IoTハブは、次いで、自らを通してIoTサービス120に、及び/又はユーザのクライアントデバイス(図示せず)にデータを渡してもよい。データが送信された後に、アドバタイジング間隔選択ロジック3111は、次いで、通常のアドバタイジング間隔(例えば、AI=T)に戻ってもよい。
【0181】
本発明の一実施形態では、安全な通信チャネルが、上記のセキュリティ/暗号化技術のうちの1つ又は複数を使用して、IoTデバイス101とIoTサービス120との間に確立される(例えば、
図16A~
図23C及び関連する本文を参照)。例えば、一実施形態では、IoTサービス120は、上記のようにIoTデバイス101との鍵交換を実行して、IoTデバイス101とIoTサービス120との間のすべての通信を暗号化する。
【0182】
本発明の一実施形態に従う方法が
図32に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0183】
3200において、IoTデバイスは、(例えば、時間Tによって分離される)アドバタイジングパケットを生成するときに、標準のアドバタイジング間隔を使用する。3202において、IoTデバイスは、送るべきデータを有することが3201において決定されるまで、標準のアドバタイジング間隔を維持する。次いで、3203において、IoTデバイスは、アドバタイジング間隔を切り換えて送信するべきデータを有することを示す。3204において、IoTハブ又は別のネットワークデバイスは、IoTデバイスとの接続を確立することにより、IoTデバイスがそれ自体のデータを送信するのを可能にする。最終的に、3205において、IoTデバイスは、それ自体の保留データをIoTハブに送信する。
【0184】
アドバタイジング間隔技術がBTLEプロトコルと関連して本明細書に記載されているけれども、本発明の基礎原理は、BTLEに限定されないことを留意すべきである。実際に、本発明の基礎原理は、デバイス同士の間に無線通信を確立するためのアドバタイジング間隔を選択する任意のシステムに実装されてもよい。
【0185】
それに加えて、専用のIoTハブ110が上記の多くの実施形態に示されているけれども、専用のIoTハブハードウェアプラットホームが本発明の基礎原理に従うのに必要ではない。例えば、上記の様々なIoTハブは、iPhones(登録商標)及びAndroid(登録商標)デバイス等の様々な別のネットワーキングデバイス内で実行されるソフトウェアとして実装されてもよい。実際に、本明細書に記載されたIoTハブは、(例えば、BTLE又は別のローカル無線プロトコルを使用して)IoTデバイスと通信することができる、及び(例えば、WiFi又はセルラーのデータ接続を使用してIoTサービスに)インターネットを介して接続を確立することができる任意のデバイスに実装されてもよい。
無線通信パターンを曖昧化するための装置及び方法
【0186】
たとえIoTサービスとIoTデバイスとの間で送信されるデータが上記の技術を使用して暗号化されるとしても、IoTサービスとIoTデバイスとの間の無線トランザクションが収集されて分析されることによりユーザ行動を決定する。例えば、
図33に示すように、IoTサービス120は、IoTデバイスが無線ドアロックである場合に、指定時点t
0においてIoTデバイスにコマンド3302を送信して、ドアをロック解除する等の特定の機能を実行してもよい。示すように、コマンドは、IoTハブ110のWANインターフェース3321及びローカル無線通信インターフェース3320を通して(又は、IoTハブ機能を実装するモバイルデバイス又は別のデバイスを介して)渡されてもよい。IoTデバイス101のアプリケーション特有のプログラムコード3315は、次いで、3303においてコマンドを実行して、第2の時間t
1においてローカル無線通信モジュール3310に応答を提供してもよい。無線通信モジュールは、次いで、t
2において応答3304を送信する。一般に、無線リンクを介して送信されるコマンド3302と、コマンド3303の実行と、IoTサービスに送信して戻される応答3304との間のタイミングは、すべて予測可能な様式で生じることになる。例えば、コマンド3302を受信すると、アプリケーション3315は、概してそのコマンドを実行することと、応答3304を返すこととに同一の時間を要してもよい。したがって、無線通信を聴いている何者かは、通信パターンを暗号解読して、ユーザがユーザのドアをロック解除(又はロック固定)している、又は、様々な別のデバイス特有の機能を実行していることを理解し得る。
【0187】
これらの懸念に対処するために、本発明の一実施形態は、IoTデバイス101とIoTサービス120との間の通信パターンを不明瞭化又は曖昧化するための技術を実行する。
図34は、かかる一実施形態を示し、この実施形態では、IoTデバイス101のサービスプログラムコード3321及び/又はローカル無線通信インターフェース3310は、本明細書に記載された様々な技術を実装するためのメッセージ通信曖昧化ロジック3411、3410を含む。特に、一実施形態では、t
0においてコマンド3302を受信すると、アプリケーション3315は、t
1においてそれ自体のアプリケーション特有の機能を実行して応答を提供する。しかし、
図33に示す実施形態とは対照的に、
図34では、メッセージ通信曖昧化ロジック3410は、応答3404を送信するためのタイミング遅延を導入する。したがって、t
2において応答を送信する代わりに、それはt
2+Nにおいて応答を送信し、ここで、Nは、時間の指定範囲内でランダムに選択された値であってもよい。タイミングを変えることに加えて、一実施形態では、メッセージ通信曖昧化ロジック3410は、別の技術を実行して指定の又はランダムな量だけ応答3404のサイズを修正する(例えば、応答パケットにM個の追加のバイトを付加する)等、応答を曖昧化してもよい。この態様では、IoTサービスとIoTデバイスとの間のトランザクションは、先の実施形態におけるよりも予測が難しくなる。
【0188】
図35は、IoTサービス120とIoTデバイス101との間の通信を曖昧化するための別の実施形態を示す。この実施形態では、IoTサービス120のメッセージ通信曖昧化ロジック3411は、コマンドパケット3302の前後のいずれかにおいて曖昧化パケット3501を送信する。
図35に示す特定の例では、それは、前に(すなわち、時間t
xにおいて)送信される。一実施形態では、曖昧化パケット3501は、暗号化されたメッセージを含み、このメッセージは、IoTデバイス101のメッセージ通信曖昧化ロジック3410に(例えば、
図35の値Lによって識別される100ms、200ms等の)将来のなんらかの特定時間において返信メッセージ3502を送信させる。応答3502を送信する前に待機するための特定の時間は、曖昧化パケット3501において指定されてもよい。その代替として、待機時間の長さは、IoTデバイス101のメッセージ通信曖昧化ロジック3410によって指定されてもよい。例えば、時間の長さは、IoTサービス120のメッセージ通信曖昧化ロジック3411によって、又はIoTデバイス101のメッセージ通信曖昧化ロジック3410によってランダムに選択されてもよい。応答が送信される時間をランダム化することは、ハッカーが真のトラフィック2602、2604と(本質的にノーオペレーショントラフィックである)曖昧化トラフィック2801、2802との間で区別することを困難にする。示すように、IoTデバイス101のメッセージ通信曖昧化ロジック2710は、それでも実際の応答2604を送信するためのランダムな遅延を実装して、トラフィックを更に曖昧化してもよい。
【0189】
それに加えて、一実施形態では、曖昧化パケット2801は、IoTデバイス101のメッセージ通信曖昧化ロジック2710に1つ又は複数のおとりアドバタイズメントパケット2804を送信することを命令してもよい。上記の安全BTLE技術を使用するIoTデバイスは、なんらかのプログラミング可能な間隔において、それらが自らが利用可能であることを示すRF「チャープ」を送信するという「アドバタイジング」を実行する。誰でも、このアドバタズメントパケットを盗聴及び傍聴することができる。アドバタイズメントの部分として、1ビットが使用されて、IoTサービス120がIoTデバイスが読み出すためのデータを有することを示す。このように、IoTサービス120が曖昧化パケット2801を送信するとき、それは、また、デバイスが将来のいくつかのプログラミング可能な時間において、おとりアドバタイズメントを送信することを要求してもよい。この追加機構は、(明瞭である)アドバタイズメントを盗聴するハッカーが真のものとおとりとの間で区別するのを困難にする。
【0190】
一実施形態では、上記の様々な曖昧化技術は、IoTデバイス101の曖昧化ルール2712及びIoTサービス120の曖昧化ルール2713のセットに基づいてプログラミング可能である。ルール2712は、例えば、曖昧化パケット2801、応答2802、及びおとりアドバタイズメント2804に対して使用されるべき特定のタイミングを指定してもよい。一実施形態では、ルール2712、2713は、システムの最新の状態変数2720、2721にそれぞれ従って、メッセージ通信曖昧化ロジック2710、2711の動作を指定する。最新の状態変数2720、2721は、通信が曖昧化されている対象のIoTデバイス101のタイプ、IoTデバイス101の最新のバッテリレベル、時刻、最新の天気等の高水準因子を含んでもよい。例えば、特定のIoTデバイス101は、予測可能な周期的な通信パターンを本来的に生成してはならない。かかるIoTデバイスに対して、本明細書に記載された曖昧化技術は、最小のものに設定されてもよい。更に、IoTデバイス101のバッテリ寿命が短い(例えば、閾値を下回る)場合、より少ない数の曖昧化パケット2801及びおとりアドバタイズメント2804が、バッテリ寿命を保つために生成されてもよい。勿論、様々な異なるタイプのルールが、本発明の基礎原理に従いながら指定されてもよい。
【0191】
本発明の一実施形態に従う方法が
図29に示されている。方法は、上記のシステムアーキテクチャとの関連で実装されてもよいけれども、いかなる特定のシステムアーキテクチャにも限定されない。
【0192】
2900において、IoTデバイスは、IoTサービスからコマンドを受信し、2901においてコマンドを実行する。2902において、メッセージ通信曖昧化ロジックは、応答のタイミングを調節する。上記のように、このことは、ランダムな又は予め選択されたタイミング遅延を挿入することによって達成されてもよい。2903において、IoTデバイスは、調節されたタイミングに従って応答を送信する。
【0193】
一実施形態に従う別の方法が
図30に示されている。3000において、IoTサービスは、IoTデバイスにコマンド(例えば、ドアをロック解除するためのコマンド)を送信する。3001において、IoTサービスは、IoTデバイスに曖昧化パケットを送信する。上記のように、曖昧化パケットは、コマンドの前後のいずれかにおいて送信されてもよい。3002において、IoTデバイスは、コマンドを実行して(例えば、ドアをロック解除して)応答を送信する。一実施形態では、タイミング遅延は、(例えば、
図29に関して説明されたような)応答のために使用されてもよい。3003において、IoTデバイスは、曖昧化パケットに曖昧化応答を送信する。一実施形態では、曖昧化パケットは、タイミングが応答のために使用されることを示す。別の実施形態では、IoTデバイスは、(例えば、指定範囲内のランダムな時間長を選択して)応答のためのタイミングを決定する。曖昧化応答は、選択されたタイミングによって、応答の前後のいずれかにおいてコマンドに送信されてもよい。3004において、IoTデバイスは、曖昧化パケットに応じて、おとりアドバタイズメントを送信する。おとりアドバタイズメントは、単独で、又は曖昧化応答の送信に付加して送信されてもよい。
【0194】
図24は、IoTデバイス101の一実施形態を示し、この実施形態では、BTLE通信インターフェース2410が、データが送信される準備ができているときにアドバタイジング間隔を調節するアドバタイジング間隔選択ロジック2411を含む。それに加えて、IoTハブ110のBTLE通信インターフェース2420は、アドバタイジング間隔検出ロジック2421を含むことにより、アドバタイジング間隔の変化を検出し、確認応答を与え、データを受信する。
【0195】
特に、示している実施形態では、IoTデバイス101のアプリケーション2401は、送信されるべきデータが有することを示す。それに応じて、アドバタイジング間隔選択ロジック2411は、アドバタイジング間隔を修正することにより、データが送信されるべきこと(例えば、間隔を.75T、又はなんらかの別の値に変えること等)をIoTハブ110に通知する。アドバタイジング間隔検出ロジック2421が変化を検出すると、BTLE通信インターフェース2420は、IoTデバイス101のBTLE通信インターフェース2410に接続して、それがデータを受信する準備ができていることを示す。IoTデバイス101のBTLE通信インターフェース2410は、次いで、IoTハブのBTLE通信インターフェース2420にデータを送信する。IoTハブは、次いで、自らを通してIoTサービス120に、及び/又はユーザのクライアントデバイス(図示せず)にデータを渡してもよい。データが送信された後に、アドバタイジング間隔選択ロジック2411は、次いで、通常のアドバタイジング間隔(例えばAI=T)に戻ってもよい。
【0196】
本発明の一実施形態では、安全な通信チャネルが、上記のセキュリティ/暗号化技術のうちの1つ又は複数を使用して、IoTデバイス101とIoTサービス120との間に確立される(例えば、
図16A~23C及び関連する本文を参照)。例えば、一実施形態では、IoTサービス120は、上記のようにIoTデバイス101との鍵交換を実行して、IoTデバイス101とIoTサービス120との間のすべての通信を暗号化する。
【0197】
本発明の一実施形態に従う方法が
図25に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0198】
2500において、(例えば、時間Tによって分離された)アドバタイジングパケットを生成するときに、IoTデバイスは、標準のアドバタイジング間隔を使用する。IoTデバイスは、2502において、それが送るべきデータを有することが2501において決定されるまで、標準のアドバタイジング間隔を維持する。次いで、2503において、IoTデバイスは、アドバタイジング間隔を切り換えることにより、送信するべきデータを有することを示す。2504において、IoTハブ又は別のネットワークデバイスは、IoTデバイスとの接続を確立することにより、IoTデバイスがそれ自体のデータを送信するのを可能にする。最終的に、2505において、IoTデバイスは、それ自体の保留データをIoTハブに送信する。