(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022048140
(43)【公開日】2022-03-25
(54)【発明の名称】モノのインターネット(IOT)デバイスとの安全な通信チャネルを確立するためのシステム及び方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20220317BHJP
H04W 12/041 20210101ALI20220317BHJP
H04W 12/06 20210101ALI20220317BHJP
H04W 12/69 20210101ALI20220317BHJP
H04W 84/10 20090101ALI20220317BHJP
H04M 11/00 20060101ALI20220317BHJP
H04Q 9/00 20060101ALI20220317BHJP
【FI】
H04L9/08 C
H04L9/08 E
H04W12/041
H04W12/06
H04W12/69
H04W84/10 110
H04M11/00 301
H04Q9/00 301D
【審査請求】有
【請求項の数】12
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021201534
(22)【出願日】2021-12-13
(62)【分割の表示】P 2018562200の分割
【原出願日】2017-05-26
(31)【優先権主張番号】15/167,848
(32)【優先日】2016-05-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/167,817
(32)【優先日】2016-05-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/167,799
(32)【優先日】2016-05-27
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】515290745
【氏名又は名称】アフェロ インコーポレイテッド
【氏名又は名称原語表記】Afero, Inc.
(74)【代理人】
【識別番号】100094569
【弁理士】
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【弁理士】
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【弁理士】
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【弁理士】
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【弁理士】
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【弁理士】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【弁理士】
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【弁理士】
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100196612
【弁理士】
【氏名又は名称】鎌田 慎也
(72)【発明者】
【氏名】ホランド シャノン
(72)【発明者】
【氏名】ポインター ロビー
(72)【発明者】
【氏名】セウェリネック スティーブン
(72)【発明者】
【氏名】ヘックマン ニコラス
(72)【発明者】
【氏名】アユート クリス
(72)【発明者】
【氏名】フィンケルシュタイン ルーカス
(72)【発明者】
【氏名】ツィマーマン スコット
(57)【要約】
【課題】モノのインターネット(IOT)デバイスとの安全な通信チャネルを確立するためのシステム及び方法を提供する。
【解決手段】安全な通信チャネルを確立するためのシステム及び方法を説明する。例えば、システムの一実施形態は、マスターシークレットを生成するためのシークレット/カウンタ処理ロジック/回路を備えるIoTデバイスであって、マスターシークレットが、IoTサービスに送信される、IoTデバイスと、第1の安全な通信チャネルを通じてIoTサービスからマスターシークレットを受信するための1つ以上のIoTハブであって、IoTハブのうちの少なくとも1つが、マスターシークレットを使用して、IoTデバイスとの第2の安全な通信チャネルを確立する、1つ以上のIoTハブとを備える。
【選択図】
図32
【特許請求の範囲】
【請求項1】
システムであって、
マスターシークレットを生成するためのシークレット/カウンタ処理ロジック/回路を備えるIoTデバイスであって、前記マスターシークレットが、IoTサービスに送信される、IoTデバイスと、
第1の安全な通信チャネルを通じて前記IoTサービスから前記マスターシークレットを受信するための1つ以上のIoTハブであって、前記IoTハブのうちの少なくとも1つが、前記マスターシークレットを使用して、前記IoTデバイスとの第2の安全な通信チャネルを確立する、1つ以上のIoTハブと、を備える、システム。
【請求項2】
前記マスターシークレットが、前記マスターシークレットを前記IoTデバイス上のシステム属性として設定することによって、前記IoTサービスに送信され、前記IoTデバイスが、そのシステム属性を前記IoTサービスと自動的に同期させるための回路/ロジックを備える、請求項1に記載のシステム。
【請求項3】
前記シークレット/カウンタ処理ロジック/回路が、第1のカウンタを生成し、前記第1のカウンタの値を前記マスターシークレットと組み合わせて使用して、共有シークレットを生成する、請求項1に記載のシステム。
【請求項4】
鍵付きハッシュメッセージ認証コード(HMAC)が、前記マスターシークレットを前記HMACの鍵として、かつ前記第1のカウンタを前記データとして使用して、前記共有シークレットを生成するために使用される、請求項3に記載のシステム。
【請求項5】
前記シークレット/カウンタ処理ロジック/回路が、第2のカウンタを生成し、前記システムが、
前記共有シークレットを鍵として使用して、前記第2のカウンタ値、及びアドバタイジングパケットからのデータを有する鍵付きハッシュメッセージ認証コード(HMAC)を生成するためのHMAC生成ロジック/回路を更に備える、請求項3に記載のシステム。
【請求項6】
前記アドバタイジングパケットからの前記データが、製造業者ID、製造業者フラグ、デバイスID、及び/又はプロトコルバージョンを含み、前記アドバタイジングパケットからの前記データの後に前記第2のカウンタ値が続く、請求項5に記載のシステム。
【請求項7】
前記アドバタイジングパケットからの前記データ、及び前記第2のカウンタ値を記憶するためのNバイトのバッファを更に備え、前記第2のカウンタ値の後に、Nバイトに水増しするための連続したゼロが続く、請求項6に記載のシステム。
【請求項8】
前記IoTデバイスが、前記HMACからの指定されたバイトのセット、及び前記第2のカウンタ値を含むアドバタイジングパケットを生成し、前記システムが、
システム属性内で指定された頻度に基づいて始動するように構成されたタイマを更に備え、前記タイマが始動したときに、前記シークレット/カウンタ処理ロジック/回路が、前記第1のカウンタ値を増加させ、前記増加させた第1のカウンタ値を前記マスターシークレットと組み合わせて使用して、新しい共有シークレットを生成する、請求項5に記載のシステム。
【請求項9】
前記シークレット/カウンタ処理ロジック/回路がまた、前記タイマの始動に応答して、前記第2のカウンタ値を増加させる、請求項8に記載のシステム。
【請求項10】
前記シークレット/カウンタ処理ロジック/回路がまた、1つ以上のアドバタイジングフラグの変化が検出されたことに応答して、前記第2のカウンタ値も増加させる、請求項8に記載のシステム。
【請求項11】
前記IoTハブが、
前記マスターシークレット及び前記第1のカウンタ値を使用して前記IoTデバイスと関連付けられた複数の共有シークレットを生成し、記憶するための共有シークレット生成ロジックを備える、請求項8に記載のシステム。
【請求項12】
前記IoTハブが、
前記複数の共有シークレット、及び前記IoTデバイスから受信したアドバタイジングパケットからのデータを使用して複数のHMACを生成するためのHMAC生成ロジックを備える、請求項11に記載のシステム。
【請求項13】
前記アドバタイジングパケットからの前記データが、前記第2のカウンタ値及びアドバタイジングデータを含む、請求項12に記載のシステム。
【請求項14】
前記IoTハブが、
HMACの指定したバイトと、前記IoTデバイスから受信したアドバタイジングパケット内のシークレットバイトとを比較するためのHMAC分析ロジックを更に備え、一致が見出されなかった場合に、アラート状態が前記IoTサービスに報告される、請求項13に記載のシステム。
【請求項15】
方法であって、
IoTデバイス上にマスターシークレットを生成することであって、前記マスターシークレットが、IoTサービスに送信される、生成することと、
第1の安全な通信チャネルを通じて1つ以上のIoTハブで前記IoTサービスから前記マスターシークレットを受信することと、
前記マスターシークレットを使用して、前記IoTデバイスとの第2の安全な通信チャネルを確立することと、を含む、方法。
【請求項16】
前記シークレットマスターが、前記マスターシークレットを前記IoTデバイス上のシステム属性として設定することによって、前記IoTサービスに送信され、前記IoTデバイスが、そのシステム属性を前記IoTサービスと自動的に同期させるための回路/ロジックを備える、請求項15に記載の方法。
【請求項17】
第1のカウンタを生成することと、
前記第1のカウンタの値を前記マスターシークレットと組み合わせて使用して、共有シークレット生成することと、を更に含む、請求項15に記載の方法。
【請求項18】
鍵付きハッシュメッセージ認証コード(HMAC)が、前記マスターシークレットを前記HMACの鍵として、かつ前記第1のカウンタを前記データとして使用して、前記共有シークレットを生成するために使用される、請求項17に記載の方法。
【請求項19】
第2のカウンタを生成することを更に含み、前記方法が、
前記共有シークレットを鍵として使用して、前記第2のカウンタ値、及びアドバタイジングパケットからのデータを有するHMACを生成することを更に含む、請求項17に記載の方法。
【請求項20】
前記アドバタイジングパケットからの前記データが、製造業者ID、製造業者フラグ、デバイスID、及び/又はプロトコルバージョンを含み、前記アドバタイジングパケットからの前記データの後に前記第2のカウンタ値が続く、請求項19に記載の方法。
【請求項21】
前記アドバタイジングパケットからの前記データ、及び前記第2のカウンタ値をNバイトのバッファに記憶することを更に含み、前記第2のカウンタ値の後に、Nバイトに水増しするための連続したゼロが続く、請求項20に記載の方法。
【請求項22】
請前記IoTデバイスが、前記HMACからの指定されたバイトのセット、及び前記第2のカウンタ値を含むアドバタイジングパケットを生成し、前記方法が、
システム属性内で指定された頻度に基づいてタイマを始動するように構成することを更に含み、前記タイマを始動したときに、前記第1のカウンタ値が増加され、前記増加させた第1のカウンタ値を前記マスターシークレットと組み合わせて使用して、新しい共有シークレットが生成される、請求項19に記載の方法。
【請求項23】
前記タイマの始動に応答して、前記第2のカウンタ値を増加させることを更に含む、請求項22に記載の方法。
【請求項24】
1つ以上のアドバタイジングフラグの変化が検出されたことに応答して、前記第2のカウンタ値を増加させることを更に含む、請求項22に記載の方法。
【請求項25】
前記マスターシークレット及び前記第1のカウンタ値を使用して前記IoTハブ上の前記IoTデバイスと関連付けられた複数の共有シークレットを生成し、記憶することを更に含む、請求項22に記載の方法。
【請求項26】
前記複数の共有シークレット、及び前記IoTデバイスから受信したアドバタイジングパケットからのデータを使用して前記IoTハブ上で複数のHMACを生成することを更に含む、請求項25に記載の方法。
【請求項27】
前記アドバタイジングパケットからの前記データが、前記第2のカウンタ値及びアドバタイジングデータを含む、請求項26に記載の方法。
【請求項28】
HMACの指定したバイトと、前記IoTデバイスから受信したアドバタイジングパケット内のシークレットバイトとを比較することを更に含み、一致が見出されなかった場合に、アラート状態が前記IoTサービスに報告される、請求項27に記載の方法。
【請求項29】
システムであって、
ローカル無線通信チャネルを通じた複数のIoTハブとの通信を確立するための無線通信モジュールを備える、モノのインターネット(IoT)デバイスと、
前記IoTデバイスが接続可能であることを示す第1のアドバタイジングビーコンを、ユーザの前記複数のIoTハブに送信するためのアドバタイジング制御ロジックであって、
前記IoTデバイスが第1のIoTハブとの接続を確立した場合に、前記IoTデバイスが接続不可能であることを示す第2のアドバタイジングビーコンをIoTハブに送信し始め、前記第1のIoTハブ以外の前記IoTハブが、前記IoTデバイスの前記接続不可能な状態をIoTサービスに報告する、アドバタイジング制御ロジックと、
前記IoTハブのうちの1つ以上から前記接続不可能な状態を受信したときに、前記IoTデバイスが任意の既知のIoTハブに接続されているかどうかを判定するための、前記IoTサービスの接続セキュリティモジュールと、を備え、
前記接続セキュリティモジュールが、前記IoTデバイスが接続されている既知のIoTハブを識別することができなかった場合に、アラート状態が生成される、システム。
【請求項30】
IoTデバイスとIoTハブとの間の接続の接続状態を記憶するための、前記IoTサービス上で管理されているデータベースを更に備え、1つ以上のIoTハブから接続不可能な表示を受信したときに、前記接続セキュリティモジュールが、前記データベースに問い合わせる、請求項29に記載のシステム。
【請求項31】
前記コマンド及び/又はデータを前記複数のIoTハブのそれぞれに送信するためのIoTサービスを更に備え、前記複数のIoTハブのそれぞれが、前記コマンド及び/又はデータを前記IoTデバイスに提供するために、前記IoTデバイスと接続するように試み、前記第1のIoTハブのみが、前記IoTデバイスとの前記接続を確立する、請求項29に記載のシステム。
【請求項32】
前記第1のIoTハブが前記IoTデバイスとの前記接続を確立し、かつ/又は確立されたときに検出し、それに応答して、前記アドバタイジング制御ロジックを制御して前記第2のアドバタイジングビーコンを送信し始めるために、接続マネージャを更に備える、請求項29に記載のシステム。
【請求項33】
前記IoTデバイスの前記無線通信モジュールが、前記第1のIoTハブ上の無線通信モジュールとの前記接続を確立する、請求項29に記載のシステム。
【請求項34】
前記IoTデバイスの前記無線通信モジュール及び前記第1のIoTハブの前記無線通信モジュールが、Bluetooth(登録商標) Low Energy(BTLE)無線通信モジュールを含む、請求項32に記載のシステム。
【請求項35】
ユーザデバイス上で実行される、前記IoTサービスとの接続を確立するためのアプリケーションを更に備え、前記ユーザが、前記アプリケーションを介して入力を提供して、前記IoTサービスに、前記IoTデバイスに送信される前記コマンド及び/又はデータを生成させる、請求項32に記載のシステム。
【請求項36】
前記コマンドが、前記IoTデバイスからセンサ読取値に関連するデータを検索するための少なくとも1つのコマンド、又は前記IoTデバイスにパラメータを設定するための少なくとも1つのコマンドを含む、請求項35に記載のシステム。
【請求項37】
方法であって、
前記IoTデバイスが接続可能であることを示す第1のアドバタイジングビーコンを、IoTデバイスから、複数のIoTハブに送信することと、
前記IoTデバイスが第1のIoTハブとの接続を確立した場合に、前記IoTデバイスが接続不可能であることを示す第2のアドバタイジングビーコンをIoTハブに送信することであって、前記第1のIoTハブ以外の前記IoTハブが、前記IoTデバイスの前記接続不可能な状態をIoTサービスに報告する、送信することと、
前記IoTハブのうちの1つ以上から前記接続不可能な状態を受信したときに、前記IoTデバイスが任意の既知のIoTハブに接続されているかどうかを判定することと、を含み、
前記IoTデバイスが接続されている既知のIoTを識別することができなかった場合に、アラート状態が生成される、方法。
【請求項38】
IoTデバイスとIoTハブとの間の接続の接続状態を記憶するための、前記IoTサービス上のデータベースを管理することを更に含み、1つ以上のIoTハブから接続不可能な表示を受信したときに、前記接続セキュリティモジュールが、前記データベースに問い合わせる、請求項37に記載の方法。
【請求項39】
前記コマンド及び/又はデータをIoTサービスから前記複数のIoTハブのそれぞれに送信することを更に含み、前記複数のIoTハブのそれぞれが、前記コマンド及び/又はデータを前記IoTデバイスに提供するために、前記IoTデバイスと接続するように試み、前記第1のIoTハブのみが、前記IoTデバイスとの前記接続を確立する、請求項37に記載の方法。
【請求項40】
前記IoTデバイスの前記無線通信モジュールが、前記第1のIoTハブ上の無線通信モジュールとの前記接続を確立する、請求項38に記載の方法。
【請求項41】
前記IoTデバイスの前記無線通信モジュール及び前記第1のIoTハブの前記無線通信モジュールが、Bluetooth(登録商標) Low Energy(BTLE)無線通信モジュールを含む、請求項40に記載の方法。
【請求項42】
ユーザデバイス上で、前記IoTサービスとの接続を確立するためのアプリケーションを実行することを更に含み、前記ユーザが、前記アプリケーションを介して入力を提供して、前記IoTサービスに、前記IoTデバイスに送信される前記コマンド及び/又はデータを生成させる、請求項38に記載の方法。
【請求項43】
前記コマンドが、前記IoTデバイスからセンサ読取値に関連するデータを検索するための少なくとも1つのコマンド、又は前記IoTデバイスにパラメータを設定するための少なくとも1つのコマンドを含む、請求項38に記載の方法。
【請求項44】
プログラムコードが記憶されている非一時的機械可読媒体であって、前記プログラムコードが、モノのインターネット(IoT)デバイスによって実行されると、前記IoTデバイスに、
前記IoTデバイスが接続可能であることを示す第1のアドバタイジングビーコンを、IoTデバイスから、複数のIoTハブに送信することと、
前記IoTデバイスが第1のIoTハブとの接続を確立した場合に、前記IoTデバイスが接続不可能であることを示す第2のアドバタイジングビーコンをIoTハブに送信することであって、前記第1のIoTハブ以外の前記IoTハブが、前記IoTデバイスの前記接続不可能な状態をIoTサービスに報告する、送信することと、
前記IoTハブのうちの1つ以上から前記接続不可能な状態を受信したときに、前記IoTデバイスが任意の既知のIoTハブに接続されているかどうかを判定することと、の動作を行わせ、
前記IoTデバイスが接続されている既知のIoTを識別することができなかった場合には、アラート状態を生成する、非一時的機械可読媒体。
【請求項45】
IoTデバイスとIoTハブとの間の接続の接続状態を記憶するための、前記IoTサービス上のデータベースを管理する動作を行わせるための追加のプログラムコードを含み、1つ以上のIoTハブから接続不可能な表示を受信したときに、前記接続セキュリティモジュールが、前記データベースに問い合わせる、請求項37に記載の機械可読媒体。
【請求項46】
前記コマンド及び/又はデータをIoTサービスから前記複数のIoTハブのそれぞれに送信する動作を行わせるための追加のプログラムコードを含み、前記複数のIoTハブのそれぞれが、前記コマンド及び/又はデータを前記IoTデバイスに提供するために、前記IoTデバイスと接続するように試み、前記第1のIoTハブのみが、前記IoTデバイスとの接続を確立する、請求項37に記載の機械可読媒体。
【請求項47】
前記IoTデバイスの前記無線通信モジュールが、前記第1のIoTハブ上の無線通信モジュールとの前記接続を確立する、請求項45に記載の機械可読媒体。
【請求項48】
前記IoTデバイスの前記無線通信モジュール及び前記第1のIoTハブの前記無線通信モジュールが、Bluetooth(登録商標) Low Energy(BTLE)無線通信モジュールを含む、請求項47に記載の機械可読媒体。
【請求項49】
ユーザデバイス上で、前記IoTサービスとの接続を確立するためのアプリケーションを実行する動作を行わせるための追加のプログラムコードを含み、前記ユーザが、前記アプリケーションを介して入力を提供して、前記IoTサービスに、前記IoTデバイスに送信される前記コマンド及び/又はデータを生成させる、請求項45に記載の機械可読媒体。
【請求項50】
前記コマンドが、前記IoTデバイスからセンサ読取値に関連するデータを検索するための少なくとも1つのコマンド、又は前記IoTデバイスにパラメータを設定するための少なくとも1つのコマンドを含む、請求項45に記載の機械可読媒体。
【請求項51】
方法であって、
モノのインターネット(IoT)デバイス及び/又はIoTサービス内で管理されるデータの複数の項目のそれぞれの属性を指定することであって、前記属性の少なくともいくつかが、現在の値を有するラッチされた属性、及びある期間にわたる前記ラッチされた属性に対する状態変化の表示を含む、指定することと、
IoTデバイスがある期間にわたって前記IoTサービスと接続できないときに、前記期間わたる前記ラッチされた属性に対して生じる任意の状態変化の表示を維持することと、
前記期間の後に、前記IoTデバイスと前記IoTサービスとの間に正常な接続を確立すると、前記IoTデバイスから前記IoTサービスに、前記ラッチされた属性の前記状態変化の表示を送信することと、
前記状態変化の表示を分析して、前記IoTサービス上のアラート状態を生成するかどうかを判定することと、を含む、方法。
【請求項52】
前記ラッチされた属性が、ドア又は窓センサと関連付けられ、前記状態変化が、前記ラッチされた属性の現在の値に関わらず、前記期間中に前記ドア又は窓が開かれたことを示す、請求項51に記載の方法。
【請求項53】
前記アラート状態の前記生成に応答して、ユーザのクライアントデバイスに通知を送信することを更に含む、請求項52に記載の方法。
【請求項54】
複数の属性クラスを定義することと、
1つ以上のラッチされた属性を含む前記属性のそれぞれを、前記属性クラスのうちの1つ以上と関連付けることであって、前記属性クラスが、前記IoTデバイス及び/又は前記IoTサービスの構成要素によって、どのように前記データの項目を記憶し、処理するべきかを指定し、
前記属性クラスが、優先度通知属性クラスを含み、1つ以上のラッチされた属性を含む属性の第1のセットが、前記属性の第1のセットと関連付けられた重要度又は重大度のレベルに基づいて、に基づいて、前記優先度通知属性クラスと関連付けられる、関連付けることと、
前記優先度通知属性クラスと関連する属性に関して前記IoTデバイスから前記IoTサービスへ通知を、前記優先度通知属性クラスと関連しない属性に関する他の通知より先に送信することと、
前記通知を受信したときに、前記通知と関連する、潜在的に危険であるか、又は望ましくない状態に対処しようと試みるために、前記IoTサービス上に優先度通知属性ルールのセットを実装することと、を更に含む、請求項51に記載の方法。
【請求項55】
前記IoTデバイスが、
特定用途向けプログラムコードを実行して、前記IoTデバイスの特定用途向け機能を実施するためのマイクロコントローラユニットと、
前記IoTサービスとの安全な無線通信チャネルを確立するための安全な無線通信モジュールと、を備える、請求項54に記載の方法。
【請求項56】
前記属性クラスが、前記特定用途向けプログラムコードを実行する際に、前記MCUによって使用可能であるアプリケーション属性クラスを含む、請求項54に記載の方法。
【請求項57】
前記属性クラスが、前記安全な無線通信モジュール、前記MCU、及び/又は前記IoTサービスによって使用可能であるシステム属性のシステム属性クラスを更に含む、請求項56に記載の方法。
【請求項58】
前記システム属性、アプリケーション属性、及び優先度通知属性が、前記IoTデバイスと前記IoTサービスとの間で同期される、請求項57に記載の方法。
【請求項59】
前記システム属性、アプリケーション属性、及び優先度通知属性のうちの1つ以上が、前記IoTサービスとクライアントデバイス及び/又は1つ以上の外部サービスとの間で同期される、請求項58に記載の方法。
【請求項60】
特定のIoTデバイスに関するフロー制御の制限により、前記優先度通知属性クラスと関連しない通知をブロックするように構成されているIoTハブが、前記優先度通知属性クラスと関連する前記IoTデバイスからの通知を通過させる、請求項59に記載の方法。
【請求項61】
システムであって、
ネットワークを通じてIoTサービスに通信可能に連結された複数のモノのインターネット(IoT)デバイスを備え、
前記IoTデバイス及び前記IoTサービスが、データの複数の項目を管理し、属性が指定され、前記データの項目のそれぞれと関連付けられ、前記属性のうちの少なくともいくつかが、現在の値を有するラッチされた属性、及びある期間にわたる前記ラッチされた属性に対する状態変化の表示を含み、
IoTデバイスがある期間にわたって前記IoTサービスと接続できないときに、前記期間わたる前記ラッチされた属性に対して生じる任意の状態変化の表示を維持し、
前記期間の後に、前記IoTデバイスと前記IoTサービスとの間に正常な接続を確立すると、前記IoTデバイスから前記IoTサービスに、前記ラッチされた属性の前記状態変化の表示を送信し、
前記状態変化の表示を分析して、前記IoTサービス上のアラート状態を生成するかどうかを判定する、システム。
【請求項62】
前記ラッチされた属性が、ドア又は窓センサと関連付けられ、前記状態変化が、前記ラッチされた属性の現在の値に関わらず、前記期間中に前記ドア又は窓が開かれたことを示す、請求項61に記載の方法。
【請求項63】
前記IoTデバイスが、
特定用途向けプログラムコードを実行して、前記IoTデバイスの特定用途向け機能を実施するマイクロコントローラユニットと、
前記IoTサービスとの安全な無線通信チャネルを確立する安全な無線通信モジュールと、を備える、請求項61に記載のシステム。
【請求項64】
前記属性クラスが、前記特定用途向けプログラムコードを実行するときに、前記MCUによって使用可能であるアプリケーション属性クラスを含む、請求項64に記載のシステム。
【請求項65】
前記属性クラスが、前記安全な無線通信モジュール、前記MCU、及び/又は前記IoTサービスによって使用可能であるシステム属性のシステム属性クラスを更に含む、請求項65に記載のシステム。
【請求項66】
前記システム属性、アプリケーション属性、及び優先度66属性が、前記IoTデバイスと前記IoTサービスとの間で同期される、請求項15に記載のシステム。
【請求項67】
前記システム属性、アプリケーション属性、及び優先度通知属性のうちの1つ以上が、前記IoTサービスとクライアントデバイス及び/又は1つ以上の外部サービスとの間で同期される、請求項67に記載のシステム。
【請求項68】
特定のIoTデバイスに関するフロー制御の制限により、前記優先度通知属性クラスと関連しない通知をブロックするように構成されているIoTハブが、前記優先度通知属性クラスと関連する前記IoTデバイスからの通知を通過させる、請求項68に記載のシステム。
【請求項69】
プログラムコードが記憶されている機械可読媒体であって、前記プログラムコードが、1台以上の機械によって実行されると、前記機械に、
モノのインターネット(IoT)デバイス及び/又はIoTサービス内で管理されるデータの複数の項目のそれぞれの属性を指定することであって、前記属性の少なくともいくつかが、現在の値を有するラッチされた属性、及びある期間にわたる前記ラッチされた属性に対する状態変化の表示を含む、指定することと、
IoTデバイスがある期間にわたって前記IoTサービスと接続できないときに、前記期間わたる前記ラッチされた属性に対して生じる任意の状態変化の表示を維持することと、
前記期間の後に、前記IoTデバイスと前記IoTサービスとの間に正常な接続を確立すると、前記IoTデバイスから前記IoTサービスに、前記ラッチされた属性の前記状態変化の表示を送信することと、
前記状態変化の表示を分析して、前記IoTサービス上のアラート状態を生成するかどうかを判定することと、の動作を行わせる、機械可読媒体。
【請求項70】
前記ラッチされた属性が、ドア又は窓センサと関連付けられ、前記状態変化が、前記ラッチされた属性の現在の値に関わらず、前記期間中に前記ドア又は窓が開かれたことを示す、請求項70に記載の方法。
【請求項71】
前記アラート状態の前記生成に応答して、ユーザのクライアントデバイスに通知を送信する動作を行わせるための追加的なプログラムコードを備える、請求項71に記載の方法。
【請求項72】
複数の属性クラスを定義することと、
1つ以上のラッチされた属性を含む前記属性のそれぞれを、前記属性クラスのうちの1つ以上と関連付けることであって、前記属性クラスが、前記IoTデバイス及び/又は前記IoTサービスの構成要素によって、どのように前記データの項目を記憶し、処理するべきかを指定し、
前記属性クラスが、優先度通知属性クラスを含み、1つ以上のラッチされた属性を含む属性の第1のセットが、前記属性の第1のセットと関連付けられた重要度又は重大度のレベルに基づいて、に基づいて、前記優先度通知属性クラスと関連付けられる、関連付けることと、
前記優先度通知属性クラスと関連する属性に関して前記IoTデバイスから前記IoTサービスへ通知を、前記優先度通知属性クラスと関連しない属性に関する他の通知より先に送信することと、
前記通知と関連する潜在的に危険であるか、又は望ましくない状態に対処しようと試みるために、前記通知を受信したときに、前記IoTサービス上に優先度通知属性ルールのセットを実装することと、を行うことを更に含む、請求項70に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータシステムの分野に関する。より具体的には、本発明は、モノのインターネット(IoT)デバイスとの安全な通信チャネルを確立するためのシステム及び方法に関する。
【背景技術】
【0002】
[関連技術の説明]
「モノのインターネット」は、インターネットインフラストラクチャ内に、一意的に識別可能に組み込まれたデバイスの相互接続を指す。最終的に、IoTは、事実上あらゆるタイプの物理的なモノが、それ自体若しくはその周囲についての情報を提供し得、及び/又はインターネットをわたってクライアントデバイスを介して遠隔制御され得る、広範囲の新しいタイプのアプリケーションをもたらすことが期待される。
本発明のより良好な理解は、以下の図面と併せた以下の詳細な説明から得ることができる。
【図面の簡単な説明】
【0003】
【
図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】本発明の一実施形態による方法を例示する。
【
図26A】多数のIoTハブがIoTデバイスにデータ/コマンドを伝達しようとする一実施形態の動作を例示する。
【
図26B】多数のIoTハブがIoTデバイスにデータ/コマンドを伝達しようとする一実施形態の動作を例示する。
【
図26C】多数のIoTハブがIoTデバイスにデータ/コマンドを伝達しようとする一実施形態の動作を例示する。
【
図27】本発明の一実施形態による方法を例示する。
【
図28】安全なIoTデバイスプロビジョニング用のシステムの一実施形態を例示する。
【
図29】本発明の一実施形態による方法を例示する。
【
図30】複数のIoTデバイスのフロー制御を行うためのシステムの一実施形態を例示する。
【
図31】本発明の一実施形態による方法を例示する。
【
図32】アプリケーション属性、システム属性、及び優先度通知属性を管理するためのシステムの一実施形態を例示する。
【
図33】安全な無線通信のためのシステム及び対応する方法の一実施形態を例示する。
【
図34】偽の接続を検出するための本発明の実施形態を例示する。
【
図35】偽の接続を検出するための本発明の実施形態を例示する。
【
図36】ラッチされた属性を実装するための本発明の1つの実施形態を例示する。
【発明を実施するための形態】
【0004】
以下の説明では、説明を目的として、以下に記載される本発明の実施形態の完全な理解を提供するために、多数の特定の詳細が示される。しかしながら、本発明の実施形態がこれらの特定の詳細のうちのいくつかを用いずに実施され得ることは、当業者には明らかである。他の例では、本発明の実施形態の根本的な原理を不明瞭にすることを避けるために、周知の構造及びデバイスをブロック図の形態で示す。
【0005】
本発明の一実施形態は、新しいIoTデバイス及びアプリケーションを設計及び構築するために開発者によって利用され得るモノのインターネット(IoT)プラットフォームを含む。具体的には、一実施形態は、既定のネットワーキングプロトコルスタックを含むIoTデバイス、及びIoTデバイスがインターネットに連結されるIoTハブ用の基本ハードウェア/ソフトウェアプラットフォームを含む。加えて、一実施形態は、IoTサービスを含み、これを通じてIoTハブ及び接続されたIoTデバイスが、以下に説明するようにアクセスされ、管理され得る。加えて、IoTプラットフォームの一実施形態は、IoTサービス、ハブ、及び接続されたデバイスにアクセスし、それらを構成する、IoTアプリケーション又はウェブアプリケーション(例えば、クライアントデバイス上で実行される)を含む。既存のオンライン小売業者及び他のウェブサイトオペレータは、本明細書に記載されたIoTプラットフォームを利用して、既存のユーザベースに独自のIoT機能を容易に提供することができる。
【0006】
図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など)に、アクセス可能にされてもよい。
【0007】
IoTデバイス101~105には、それ自体及びその周辺に関する情報を収集し、収集された情報を、IoTハブ110を介してIoTサービス120、ユーザデバイス135、及び/又は外部ウェブサイト130に提供するための様々なタイプのセンサが備わっていてもよい。IoTデバイス101~105のうちのいくつかは、IoTハブ110を介して送信される制御コマンドに応答して、指定された機能を実行することができる。IoTデバイス101~105によって収集される情報の様々な具体例及び制御コマンドが以下に提供される。以下に説明する一実施形態では、IoTデバイス101は、ユーザ選択を記録し、ユーザ選択をIoTサービス120及び/又はウェブサイトに送信するように設計されたユーザ入力デバイスである。
【0008】
一実施形態では、IoTハブ110は、4G(例えば、モバイルWiMAX、LTE)又は5Gセルラーデータサービスなどのセルラーサービス115を介してインターネット220への接続を確立するセルラー無線を含む。代替的に、又は加えて、IoTハブ110は、WiFiアクセスポイント又はルータ116を介してWiFi接続を確立するためのWiFi無線を含むことができ、これは、IoTハブ110をインターネットに(例えば、エンドユーザにインターネットサービスを提供するインターネットサービスプロバイダを介して)連結する。当然のことながら、本発明の基本的な原理は、特定のタイプの通信チャネル又はプロトコルに限定されないことに留意すべきである。
【0009】
一実施形態では、IoTデバイス101~105は、電池電力で長期間(例えば、数年)動作することができる超低電力デバイスである。電力を節約するために、ローカル通信チャネル130は、Bluetooth(登録商標) Low Energy(LE)などの低電力無線通信技術を使用して実装することができる。この実施形態では、IoTデバイス101~105及びIoTハブ110のそれぞれには、Bluetooth(登録商標) LE無線及びプロトコルスタックが備わっている。
【0010】
上述したように、一実施形態では、IoTプラットフォームは、ユーザが、接続されたIoTデバイス101~105、IoTハブ110、及び/又はIoTサービス120にアクセスし、それらを構成することを可能にする、ユーザデバイス135上で実行されるIoTアプリケーション又はウェブアプリケーションを含む。一実施形態では、アプリケーション又はウェブアプリケーションは、そのユーザベースにIoT機能を提供するように、ウェブサイト130のオペレータによって設計されてもよい。例示したように、ウェブサイトは、各ユーザに関連するアカウント記録を含むユーザデータベース131を維持することができる。
【0011】
図1Bは、複数のIoTハブ110~111、190に対する追加の接続オプションを例示する。この実施形態では、単一のユーザが、単一のユーザ構内180(例えば、ユーザの自宅又はビジネス)にオンサイトでインストールされた複数のハブ110~111を有することができる。これは、例えば、IoTデバイス101~105のすべてを接続するのに必要な無線範囲を拡張するために行われ得る。上述したように、ユーザが複数のハブ110、111を有する場合、それらは、ローカル通信チャネル(例えば、Wifi、イーサネット(登録商標)、電力線ネットワーキングなど)を介して接続されてもよい。一実施形態では、ハブ110~111のそれぞれは、セルラー115又はWiFi 116接続(
図1Bには明示されていない)を介してIoTサービス120への直接接続を確立することができる。代替的に、又は加えて、IoTハブ110などのIoTハブのうちの1つは、「マスター」ハブとして機能することができ、これは、IoTハブ111などのユーザ構内180上の他のすべてのIoTハブに接続性及び/又はローカルサービスを提供する(IoTハブ110とIoTハブ111を接続する点線で示すように)。例えば、マスターIoTハブ110は、IoTサービス120への直接接続を確立する唯一のIoTハブであってもよい。一実施形態では、「マスター」IoTハブ110のみに、IoTサービス120への接続を確立するためのセルラー通信インターフェースが備わっている。このように、IoTサービス120と他のIoTハブ111との間のすべての通信は、マスターIoTハブ110を通って流れる。この役割において、マスターIoTハブ110には、他のIoTハブ111とIoTサービス120との間で交換されるデータ(例えば、可能であれば、いくつかのデータ要求にローカルでサービスする)に対してフィルタリング動作を実行するための追加のプログラムコードが提供され得る。
【0012】
IoTハブ110~111がどのように接続されていようとも、一実施形態では、IoTサービス120は、ハブをユーザとロジック的に関連付け、取り付けられたIoTデバイス101~105のすべてを、インストールされたアプリケーション135(及び/又はブラウザベースのインターフェース)を有するユーザデバイスを介してアクセス可能な、単一の包括的なユーザインターフェースの下に結合する。
【0013】
この実施形態では、マスターIoTハブ110及び1つ以上のスレーブIoTハブ111は、WiFiネットワーク116、イーサネット(登録商標)ネットワーク、及び/又は電力線通信(power-line communications)(PLC)ネットワーキング(例えば、ネットワークの全部若しくは一部がユーザの電力線を介して実行される)とすることができる、ローカルネットワークを介して接続してもよい。加えて、IoTハブ110~111に対して、IoTデバイス101~105のそれぞれは、いくつか例を挙げると、WiFi、イーサネット(登録商標)、PLC、又はBluetooth(登録商標) LEなどの、任意のタイプのローカルネットワークチャネルを使用して、IoTハブ110~111と相互接続してもよい。
【0014】
図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(及び/又はブラウザベースのインターフェース)を有するユーザデバイスを介してアクセス可能にする。
【0015】
図2に例示するように、IoTデバイス101の例示的な実施形態は、プログラムコード及びデータ201~203を記憶するメモリ210と、プログラムコードを実行しデータを処理する低電力マイクロコントローラ200とを含む。メモリ210は、ダイナミックランダムアクセスメモリ(dynamic random access memory)(DRAM)などの揮発性メモリであってもよいし、フラッシュメモリなどの不揮発性メモリであってもよい。一実施形態では、不揮発性メモリを永続記憶に使用し、揮発性メモリをプログラムコードの実行及びデータの実行に使用することができる。更に、メモリ210は、低電力マイクロコントローラ200内に統合されてもよく、バス又は通信ファブリックを介して低電力マイクロコントローラ200に連結されてもよい。本発明の根本的な原理は、メモリ210のいかなる特定の実装にも限定されない。
【0016】
例示したように、プログラムコードは、IoTデバイス101のアプリケーション開発者によって利用され得る既定のビルディングブロックのセットを含む、IoTデバイス201及びライブラリコード202によって実行される特定用途向けの機能セットを定義するアプリケーションプログラムコード203を含むことができる。一実施形態では、ライブラリコード202は、各IoTデバイス101とIoTハブ110との間の通信を可能にするための通信プロトコルスタック201などのIoTデバイスを実装するために必要とされる基本機能のセットを含む。上述したように、一実施形態では、通信プロトコルスタック201は、Bluetooth(登録商標) LEプロトコルスタックを含む。この実施形態では、Bluetooth(登録商標) LE無線機及びアンテナ207は、低電力マイクロコントローラ200内に統合されてもよい。しかしながら、本発明の基本原理は、いかなる特定の通信プロトコルにも限定されない。
【0017】
図2に示す特定の実施形態はまた、ユーザ入力を受信し、ユーザ入力を低電力マイクロコントローラに提供する複数の入力デバイス又はセンサ210を含み、低電力マイクロコントローラは、アプリケーションコード203及びライブラリコード202に従ってユーザ入力を処理する。一実施形態では、入力デバイスのそれぞれは、エンドユーザにフィードバックを提供するLED 209を含む。
【0018】
加えて、例示した実施形態は、低電力マイクロコントローラに電力を供給するための電池208を含む。一実施形態では、非充電式コイン型電池が使用される。しかしながら、別の実施形態では、統合された充電式電池を使用することができる(例えば、交流電源(図示せず)にIoTデバイスを接続することによって再充電可能)。
【0019】
オーディオを発生するためのスピーカ205も設けられている。一実施形態では、低電力マイクロコントローラ299は、スピーカ205上にオーディオを発生するために圧縮されたオーディオストリーム(例えば、MPEG-4/アドバンストオーディオコーディング(Advanced Audio Coding)(AAC)ストリーム)を復号するためのオーディオ復号ロジックを含む。代替的に、低出力マイクロコントローラ200及び/又はアプリケーションコード/データ203が、ユーザが入力デバイス210を介して選択を入力すると、エンドユーザに口頭のフィードバックを提供するためのデジタルでサンプリングされたオーディオスニペットを含むことができる。
【0020】
一実施形態では、IoTデバイス101が設計される特定用途に基づいて、1つ以上の他の/代替のI/Oデバイス又はセンサ250が、IoTデバイス101に含まれてもよい。例えば、温度、圧力、湿度などを測定するために環境センサを含めることができる。IoTデバイスがセキュリティデバイスとして使用される場合には、セキュリティセンサ及び/又はドアロックオープナが含まれてもよい。当然のことながら、これらの例は、単に例示のために提供されている。本発明の基本原理は、いかなる特定のタイプのIoTデバイスにも限定されない。実際に、ライブラリコード202が備わった低電力マイクロコントローラ200の高度にプログラマブルな性質を考慮すると、アプリケーション開発者は、新しいアプリケーションコード203及び新しいI/Oデバイス250を容易に開発して、実質的に任意のタイプのIoTアプリケーションのために低電力マイクロコントローラとインターフェースをとることができる。
【0021】
一実施形態では、低電力マイクロコントローラ200はまた、通信を暗号化するための、及び/又は署名を生成するための暗号鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別モジュール(SIM)内に確保されてもよい。
【0022】
一実施形態では、実質的に電力を消費していない超低電力状態からIoTデバイスを起動させるために、ウェイクアップ受信機207が含まれる。一実施形態では、ウェイクアップ受信機207は、
図3に示すように、IoTハブ110上に構成されたウェイクアップ送信機307から受信されたウェイクアップ信号に応答して、IoTデバイス101をこの低電力状態から出させるように構成される。具体的には、一実施形態では、送信機307と受信機207は共に、テスラコイルなどの電気共振トランス回路を形成する。動作中、ハブ110が非常に低い電力状態からIoTデバイス101を復帰させる必要がある場合、エネルギは送信機307から受信機207への無線周波数信号を介して送信される。エネルギ移動の理由で、IoTデバイス101は、それが低電力状態にあるときには、ハブからの信号を継続的に「聞く」必要がないので、実質的に電力を消費しないように構成することができる(ネットワーク信号を介してデバイスを起動させることができる、ネットワークプロトコルの場合と同様に)。むしろ、IoTデバイス101のマイクロコントローラ200は、送信機307から受信機207に電気的に送信されたエネルギを使用することによって、事実上パワーダウンされた後にウェイクアップするように構成することができる。
【0023】
図3に例示するように、IoTハブ110はまた、プログラムコード及びデータ305を記憶するためのメモリ317と、プログラムコードを実行しデータを処理するためのマイクロコントローラなどのハードウェアロジック301とを含む。広域ネットワーク(wide area network)(WAN)インターフェース302及びアンテナ310は、IoTハブ110をセルラーサービス115に連結する。代替的に、上述したように、IoTハブ110は、ローカルエリアネットワーク通信チャネルを確立するためにWiFiインターフェース(及びWiFiアンテナ)又はイーサネット(登録商標)インターフェースなどのローカルネットワークインターフェース(図示せず)を含むこともできる。一実施形態では、ハードウェアロジック301はまた、通信を暗号化するための、及び/又は署名を生成/検証するための暗号鍵を記憶するための安全な鍵ストアを含む。代替的に、鍵は、加入者識別モジュール(SIM)内に確保されてもよい。
【0024】
ローカル通信インターフェース303及びアンテナ311は、IoTデバイス101~105のそれぞれとのローカル通信チャネルを確立する。上述したように、一実施形態では、ローカル通信インターフェース303/アンテナ311はBluetooth(登録商標) LE規格を実装する。しかしながら、本発明の根底にある原理は、IoTデバイス101~105とのローカル通信チャネルを確立するためのいかなる特定のプロトコルにも限定されない。
図3においては別個のユニットとして示されているが、WANインターフェース302及び/又はローカル通信インターフェース303は、ハードウェアロジック301と同じチップ内に組み込まれてもよい。
【0025】
一実施形態では、プログラムコード及びデータは、ローカル通信インターフェース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の数インチ内で移動するとき、コードを検出する。
【0026】
一実施形態では、一意的なIDが通信されると、IoTハブ110は、ローカルデータベース(図示せず)に問い合わせること、コードが許容可能であることを検証するためにハッシュを実行すること、並びに/又はIoTサービス120、ユーザデバイス135、及び/若しくはウェブサイト130と通信することによって、一意的なIDを検証して、IDコードの妥当性を確認することができる。妥当性が確認されると、一実施形態では、IoTハブ110は、IoTデバイス101をペアリングし、メモリ317(これは、上述したように、不揮発性メモリを含むことができる)にペアリングデータを記憶する。ペアリングが完了すると、IoTハブ110は、本明細書に記載の様々なIoT機能を実行するためにIoTデバイス101と接続することができる。
【0027】
一実施形態では、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(登録商標)デバイス)用のアプリケーションの設計を容易にするライブラリコードベースも含む。
【0028】
一実施形態では、IoTハブ110は、IoTデバイス101~105とIoTサービス120との間のデータの連続的な双方向ストリームを管理する。IoTデバイス101~105への/からの更新がリアルタイムで要求される状況(例えば、ユーザがセキュリティデバイス又は環境測定値の現在の状態を見る必要がある状況)では、IoTハブは、ユーザデバイス135及び/又は外部のウェブサイト130に定期的な更新を提供するためにオープンTCPソケットを維持することができる。更新を提供するために使用される特定のネットワーキングプロトコルは、基本用途のニーズに基づいて調整されてもよい。例えば、連続的な双方向ストリームを有することが理にかなっていない可能性がある場合、必要なときに情報を収集するために単純な要求/応答プロトコルを使用することができる。
【0029】
一実施形態では、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デバイスにインストールされているコードの最新バージョンを記録することができる。
【0030】
一実施形態では、IoTハブ110は、A/C電力を介して給電される。具体的には、IoTハブ110は、A/C電源コードを介して供給されるA/C電圧をより低いDC電圧に変換するための変圧器を備えた電源ユニット390を含むことができる。
【0031】
図4Aは、IoTシステムを使用してユニバーサル遠隔制御操作を実行するための、本発明の一実施形態を例示する。具体的には、この実施形態では、IoTデバイス101~103のセットには、(ほんの数例を挙げると)空気調節装置/ヒータ430、照明システム431、及び視聴覚機器432を含む、様々な異なるタイプの電子機器を制御する遠隔制御コードを送信するための、赤外線(infrared)(IR)及び/又は無線周波数(radio frequency)(RF)ブラスタ401~403がそれぞれ備わっている。
図4Aに示される実施形態では、IoTデバイス101~103にはまた、以下に説明するように、それらが制御するデバイスの動作を検出するためのセンサ404~406がそれぞれ備わっている。
【0032】
例えば、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を実装してもよい。
【0033】
例示した実施例におけるIoTデバイス102は、照明431を制御するために使用される。具体的には、IoTデバイス102のセンサ405は、照明設備431(又は他の照明装置)によってもたらされている光の現在の輝度を検出するように構成された光センサ又は光検出器であってもよい。ユーザは、ユーザデバイス135を介して、IoTハブ110に所望の照明レベル(オン又はオフの表示を含む)を指定してもよい。それに応答して、制御ロジック412は、照明431の現在の輝度レベルを制御するように、IR/RFブラスタ402にコマンドを送信する(例えば、現在の輝度が低すぎる場合は照明を明るくするか、若しくは現在の輝度が高すぎる場合は照明を暗くするか、又は単純に照明をオン若しくはオフにする)。
【0034】
例示した実施例におけるIoTデバイス103は、視聴覚機器432(例えば、テレビ、A/V受信機、ケーブル/衛星受信機、AppleTV(商標)など)を制御するように構成される。IoTデバイス103のセンサ406は、現在の周囲音量レベルを検出するためのオーディオセンサ(例えば、マイクロホン及び関連ロジック)、並びに/又はテレビによって生成された光に基づき、(例えば、指定されたスペクトル内の光を測定することによって)テレビがオンであるか、それともオフであるかを検出するための光センサであってもよい。代替的に、センサ406は、検出された温度に基づき、オーディオ機器がオンであるか、それともオフであるかを検出するための、視聴覚機器に接続された温度センサを含んでもよい。この場合も、ユーザデバイス135を介したユーザ入力に応答して、制御ロジック412は、IoTデバイス103のIRブラスタ403を介して視聴覚機器にコマンドを送信してもよい。
【0035】
上記が本発明の一実施形態の単なる例示した実施例であることに留意すべきである。本発明の基本原理は、IoTデバイスによって制御されるいかなる特定のタイプのセンサ又は機器にも限定されない。
【0036】
IoTデバイス101~103がBluetooth(登録商標) LE接続を介してIoTハブ110に連結される実施形態では、センサデータ及びコマンドは、Bluetooth(登録商標) LEチャネルを介して送信される。しかしながら、本発明の基本原理は、Bluetooth(登録商標) LE又はいずれの他の通信標準にも限定されない。
【0037】
一実施形態では、電子機器のそれぞれを制御するために必要とされる制御コードは、IoTハブ110上のデータベース413及び/又はIoTサービス120上のデータベース422に記憶される。
図4Bに例示するように、制御コードは、IoTサービス120上で維持される異なる機器に対して、制御コード422のマスターデータベースからIoTハブ110に提供されてもよい。エンドユーザは、ユーザデバイス135上で実行されるアプリケーション又はブラウザを介して制御される電子(又は他の)機器のタイプを指定してもよく、それに応答して、IoTハブ上の遠隔制御コード学習モジュール491は、IoTサービス120上の遠隔制御コードデータベース492から、必要とされるIR/RFコードを取得してもよい(例えば、一意的なIDを有する各電子機器を識別する)。
【0038】
加えて、一実施形態では、IoTハブ110には、遠隔制御コード学習モジュール491が、電子機器と共に提供された元の遠隔制御装置495から直接新しい遠隔制御コードを「学習」することを可能にする、IR/RFインターフェース490が備わっている。例えば、空気調節装置430と共に提供された元の遠隔制御装置の制御コードが、遠隔制御データベースに含まれていない場合、ユーザは、ユーザデバイス135上のアプリケーション/ブラウザを介してIoTハブ110と対話して、元の遠隔制御装置によって生成される様々な制御コードをIoTハブ110に教えてもよい(例えば、温度を上げる、温度を下げるなど)。遠隔制御コードが学習されると、それらは、IoTハブ110上の制御コードデータベース413に記憶されてもよく、かつ/又は中央遠隔制御コードデータベース492に含められるように、IoTサービス120に送り返されてもよい(続いて、同じ空気調節装置ユニット430を有する他のユーザによって使用されてもよい)。
【0039】
一実施形態では、IoTデバイス101~103のそれぞれは、極端に小さいフォームファクタを有し、両面テープ、小さい釘、磁気アタッチメントなどを使用して、それらの対応する電子機器430~432の上又は付近に取り付けられてもよい。空気調節装置430などの1つの機器を制御するために、IoTデバイス101を十分に離して配置し、センサ404が自宅内の周囲温度を正確に測定することができるようにすることが望ましい(例えば、空気調節装置上に直接IoTデバイスを配置すると、温度測定値は、空気調節装置が作動しているときは低すぎになり、ヒータが作動しているときは高すぎになるであろう)。対照的に、照明を制御するために使用されるIoTデバイス102は、センサ405が現在の照明レベルを検出するために、照明設備431の上又は付近に配置されてもよい。
【0040】
記載される一般的な制御機能を提供することに加えて、IoTハブ110及び/又はIoTサービス120の一実施形態は、各電子機器の現在の状態に関連した通知をエンドユーザに送信する。通知は、テキストメッセージ及び/又はアプリケーション特有の通知であってもよく、次いで、通知は、ユーザのモバイルデバイス135のディスプレイ上に表示されてもよい。例えば、ユーザの空気調節装置が長期間オンであるが温度が変化していない場合、IoTハブ110及び/又はIoTサービス120は、空気調節装置が適切に機能していないという通知をユーザに送信してもよい。ユーザが自宅におらず(このことは、動作センサを介して検出されてもよく、若しくはユーザの現在の検出された位置に基づいてもよい)、センサ406が、視聴覚機器430がオンであることを示すか、又はセンサ405が、照明がオンであることを示す場合、ユーザが視聴覚機器432及び/又は照明431をオフにすることを希望するか尋ねる通知がユーザに送信されてもよい。同じタイプの通知が、任意の機器のタイプに対して送信されてもよい。
【0041】
ユーザが通知を受信すると、彼/彼女は、ユーザデバイス135上のアプリケーション又はブラウザを介して電子機器430~432を遠隔制御してもよい。一実施形態では、ユーザデバイス135は、タッチスクリーンデバイスであり、アプリケーション又はブラウザは、機器430~432を制御するためのユーザが選択可能なボタンを含む遠隔制御装置の画像を表示する。通知を受信した後、ユーザは、グラフィカル遠隔制御装置を開き、様々な異なる機器をオフにするか、又は調節してもよい。IoTサービス120を介して接続されている場合、ユーザの選択は、IoTサービス120からIoTハブ110に転送されてもよく、IoTハブ110は、次いで制御ロジック412を介して機器を制御することになる。代替的に、ユーザ入力は、ユーザデバイス135からIoTハブ110に直接送信されてもよい。
【0042】
一実施形態では、ユーザは、電子機器430~432に対して様々な自動制御機能を実行するように、IoTハブ110上の制御ロジック412をプログラムしてもよい。上記の所望の温度、輝度レベル、及び音量レベルを維持することに加えて、制御ロジック412は、ある特定の条件が検出された場合に電子機器を自動的にオフにしてもよい。例えば、制御ロジック412が、ユーザが自宅にいないこと、及び空気調節装置が機能していないことを検出する場合、制御ロジック412は、空気調節装置を自動的にオフにしてもよい。同様に、ユーザが自宅におらず、センサ406が、視聴覚機器430がオンであることを示すか、又はセンサ405が、照明がオンであることを示す場合、制御ロジック412は、視聴覚機器及び照明をそれぞれオフにするように、IR/RFブラスタ403及び402を介してコマンドを自動的に送信してもよい。
【0043】
図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は、コンロ自体内に統合されてもよい。
【0044】
図5はまた、洗濯機及び/又は乾燥機などのある特定のタイプの電子機器の動作を検出するための動作センサ504を有する、IoTデバイス105を例示する。使用され得る別のセンサは、周囲の音量レベルを検出するためのオーディオセンサ(例えば、マイクロホン及びロジック)である。上記の他の実施形態のように、この実施形態は、ある特定の指定された条件が満たされた場合、エンドユーザに通知を送信してもよい(例えば、動作が長期間検出され、洗濯機/乾燥機がオフになっていないことを示す場合)。
図5に示されないが、IoTデバイス105にはまた、自動的に、かつ/又はユーザ入力に応答して、(例えば、電気/ガスをオフに切り替えることによって)洗濯機/乾燥機531をオフにするための制御モジュールが備わっていてもよい。
【0045】
一実施形態では、制御ロジック及びスイッチを有する第1のIoTデバイスは、ユーザの自宅内のすべての電力をオフにするように構成されてもよく、制御ロジック及びスイッチを有する第2のIoTデバイスは、ユーザの自宅内のすべてのガスをオフにするように構成されてもよい。次いで、センサを有するIoTデバイスは、ユーザの自宅内の電気又はガス駆動の機器の上又は付近に位置付けられてもよい。特定の機器がオンのままである(例えば、コンロ530)ことをユーザが通知された場合、ユーザは、自宅内のすべての電気又はガスをオフにするコマンドを送信して、損害を防止してもよい。代替的に、IoTハブ110及び/又はIoTサービス120の制御ロジック512は、そのような状況において電気又はガスを自動的にオフにするように構成されてもよい。
【0046】
一実施形態では、IoTハブ110及びIoTサービス120は、周期的な間隔で通信する。IoTサービス120が、IoTハブ110への接続が切れていることを検出する場合(例えば、指定された継続時間、IoTハブからの要求又は応答を受信していないことによって)、IoTサービス120は、この情報をエンドユーザのデバイス135に通信することになる(例えば、テキストメッセージ又はアプリケーション特有の通知を送信することによって)。
【0047】
中間デバイスを介してデータを通信するための装置及び方法
上述したように、Bluetooth(登録商標) LEなどのIoTデバイスを相互接続するために使用される無線技術は概して、近距離技術であるため、IoT実装のためのハブがIoTデバイスの範囲外にある場合、IoTデバイスは、IoTハブにデータを送信することができない(逆もまた同様)。
【0048】
この欠陥に対処するために、本発明の一実施形態は、モバイルデバイスが範囲内にあるとき、1つ以上のモバイルデバイスと周期的に接続するために、IoTハブの無線範囲外にあるIoTデバイスのための機構を提供する。いったん接続されると、IoTデバイスは、IoTハブに提供される必要がある任意のデータをモバイルデバイスに送信することができ、次いでモバイルデバイスは、IoTハブにデータを転送する。
【0049】
図6に例示するように、一実施形態は、IoTハブ110と、IoTハブ110の範囲外にあるIoTデバイス601と、モバイルデバイス611とを含む。範囲外のIoTデバイス601は、データを収集及び通信することが可能な任意の形態のIoTデバイスを含んでもよい。例えば、IoTデバイス601は、冷蔵庫内の利用可能な食料品、食料品を消費するユーザ、及び現在の温度を監視するように、冷蔵庫内に構成されたデータ収集デバイスを備えてもよい。当然のことながら、本発明の基本原理は、いかなる特定のタイプのIoTデバイスにも限定されない。本明細書に記載される技術は、ほんの数例を挙げると、スマートメータ、コンロ、洗濯機、乾燥機、照明システム、HVACシステム、及び視聴覚機器に関するデータを収集及び送信するために使用されるデバイスを含む、任意のタイプのIoTデバイスを使用して実装されてもよい。
【0050】
更に、動作中のモバイルデバイスである、
図6に例示するIoTデバイス611は、データを通信及び記憶することが可能な任意の形態のモバイルデバイスであってもよい。例えば、一実施形態では、モバイルデバイス611は、本明細書に記載される技術を促進するために、アプリケーションがその上にインストールされたスマートフォンである。別の実施形態では、モバイルデバイス611は、ネックレス若しくはブレスレットに取り付けられた通信トークン、スマートウォッチ、又はフィットネスデバイスなど、装着可能なデバイスを含む。装着可能なトークンは、スマートフォンデバイスを所有しない高齢のユーザ又は他のユーザにとって特に有用であり得る。
【0051】
動作中、範囲外のIoTデバイス601は、モバイルデバイス611との接続性を周期的又は連続的にチェックしてもよい。接続を確立した後(例えば、ユーザが冷蔵庫の近くを移動する結果として)、IoTデバイス601上の任意の収集されたデータ605が、モバイルデバイス611上の一時データリポジトリ615に自動的に送信される。一実施形態では、IoTデバイス601及びモバイルデバイス611は、BTLEなどの低電力無線標準を使用して、ローカル無線通信チャネルを確立する。そのような場合、モバイルデバイス611は、既知のペアリング技術を使用してIoTデバイス601と最初にペアリングされてもよい。
【0052】
いったんデータが一時データリポジトリに伝送されると、モバイルデバイス611は、IoTハブ110との通信が確立されるとデータを送信する(例えば、ユーザがIoTハブ110の範囲内を歩くとき)。次いで、IoTハブは、中央データリポジトリ413にデータを記憶してもよく、かつ/又はインターネット上で、1つ以上のサービス及び/若しくは他のユーザデバイスにデータを送信してもよい。一実施形態では、モバイルデバイス611は、異なるタイプの通信チャネルを使用して、IoTハブ110にデータを提供してもよい(潜在的に、WiFiなどのより高出力の通信チャネル)。
【0053】
範囲外のIoTデバイス601、モバイルデバイス611、及びIoTハブはすべて、本明細書に記載される技術を実装するためのプログラムコード及び/又はロジックにより構成されてもよい。
図7に例示するように、例えば、本明細書に記載される動作を実行するために、IoTデバイス601は、中間接続ロジック及び/又はアプリケーションにより構成されてもよく、モバイルデバイス611は、中間接続ロジック/アプリケーションにより構成されてもよく、IoTハブ110は、中間接続ロジック/アプリケーション721により構成されてもよい。各デバイス上の中間接続ロジック/アプリケーションは、ハードウェア、ソフトウェア、又はこれらの任意の組み合わせで実装されてもよい。一実施形態では、IoTデバイス601の中間接続ロジック/アプリケーション701は、モバイルデバイス上の中間接続ロジック/アプリケーション711(デバイスアプリケーションとして実装されてもよい)との接続を検索及び確立して、一時データリポジトリ615にデータを伝送する。次いで、モバイルデバイス611上の中間接続ロジック/アプリケーション701は、中央データリポジトリ413にデータを記憶するIoTハブ上の中間接続ロジック/アプリケーションに、データを転送する。
【0054】
図7に例示するように、各デバイス上の中間接続ロジック/アプリケーション701、711、721は、手元のアプリケーションに基づき構成されてもよい。例えば、冷蔵庫に関して、接続ロジック/アプリケーション701は、周期的ベースで少数のパケットを送信するだけでよい。他のアプリケーション(例えば、温度センサ)に対して、接続ロジック/アプリケーション701は、より頻繁な更新を送信する必要があり得る。
【0055】
モバイルデバイス611よりはむしろ、一実施形態では、IoTデバイス601が、IoTハブ110の範囲内に位置する1つ以上の中間IoTデバイスとの無線接続を確立するように構成されてもよい。この実施形態では、IoTハブの範囲外の任意のIoTデバイス601が、他のIoTデバイスを使用して「チェーン」を形成することによってハブにリンクされてもよい。
【0056】
加えて、簡潔にするために、単一のモバイルデバイス611のみが
図6~7に例示されるが、一実施形態では、異なるユーザの複数のそのようなモバイルデバイスは、IoTデバイス601と通信するように構成されてもよい。更に、同じ技術が、複数の他のIoTデバイスに対して実装されてもよく、それにより、自宅全体にわたって中間デバイスデータ収集システムを形成する。
【0057】
更に、一実施形態では、本明細書に記載される技術は、様々な異なるタイプの関連データを収集するために使用されてもよい。例えば、一実施形態では、モバイルデバイス611がIoTデバイス601と接続するたびに、ユーザの識別が、収集されたデータ605と共に含まれてもよい。このようにして、IoTシステムは、自宅内の異なるユーザの挙動を追跡するために使用されてもよい。例えば、冷蔵庫内で使用される場合、収集されたデータ605は、冷蔵庫のそばを通る各ユーザ、冷蔵庫を開ける各ユーザ、及び各ユーザによって消費される特定の食料品の識別を含んでもよい。異なるタイプのデータが、他のタイプのIoTデバイスから収集されてもよい。このデータを使用して、システムは、例えば、どのユーザが衣服を洗濯するのか、どのユーザが所与の日にテレビを観るのか、各ユーザが就寝及び起床する時間などを判定することが可能である。次いで、このクラウドソースデータのすべてが、IoTハブのデータリポジトリ413内にコンパイルされてもよく、かつ/又は外部サービス若しくはユーザに転送されてもよい。
【0058】
本明細書に記載される技術の別の有益な用途は、補助を必要とし得る高齢のユーザを監視するためのものである。このアプリケーションに関して、モバイルデバイス611は、ユーザの自宅の異なる室内の情報を収集するために、高齢のユーザによって装着された非常に小型のトークンであってもよい。ユーザが冷蔵庫を開けるたびに、例えば、このデータは、収集されたデータ605と共に含まれ、トークンを介してIoTハブ110に伝送される。次いで、IoTハブは、1つ以上の外部ユーザ(例えば、高齢のユーザを世話する子供又は他の個人)にデータを提供してもよい。データが指定された期間(例えば、12時間)収集されていない場合、これは、高齢のユーザが自宅を動き回っていない、かつ/又は冷蔵庫を開けていないことを意味する。次いで、IoTハブ110又はIoTハブに接続された外部サービスは、これらの他の個人にアラート通知を送信し、彼らに高齢のユーザを確認するべきであることを通知してもよい。加えて、収集されたデータ605は、ユーザによって消費されている食品、並びに食料品店に行くことが必要であるかどうか、高齢のユーザがテレビを観ているかどうか、及びどれほど頻繁に観ているか、高齢のユーザが衣服を洗濯する頻度などの他の関連情報を含んでもよい。
【0059】
別の実装例において、洗濯機、冷蔵庫、HVACシステムなどの電子デバイスに問題がある場合、収集されたデータは、交換される必要がある部品の指示を含んでもよい。そのような場合、通知は、問題を解決するための要求と共に技術者に送信されてもよい。次いで、技術者は、必要とされる交換部品を持って自宅に到着し得る。
【0060】
本発明の一実施形態による方法が
図8に示されている。本方法は、上記のアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【0061】
801において、IoTハブの範囲外にあるIoTデバイスは、データ(例えば、冷蔵庫の扉の開放、使用された食料品など)を周期的に収集する。802において、IoTデバイスは、モバイルデバイスとの接続性を周期的又は連続的にチェックする(例えば、BTLE標準によって指定されたものなど、接続を確立するための標準的なローカル無線技術を使用して)。802において、モバイルデバイスへの接続が確立され、判定された場合、803において、収集されたデータは、803においてモバイルデバイスに伝送される。804において、モバイルデバイスは、IoTハブ、外部サービス、及び/又はユーザにデータを伝送する。述べられたように、モバイルデバイスは、それが既に接続されている場合(例えば、WiFiリンクを介して)、すぐにデータを送信し得る。
【0062】
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は次いで、新しいプログラムコード更新及び/又はデータをインストールするための自動更新プロセスに入ってもよい。
【0063】
IoTデバイスを更新するための方法が、
図9Bに示される。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0064】
900において、新しいプログラムコード又はデータ更新は、IoTハブ及び/又は外部サービス(例えば、インターネット上でモバイルデバイスに連結された)上で利用可能になる。901において、モバイルデバイスは、IoTデバイスの代わりにプログラムコード又はデータ更新を受信及び記憶する。IoTデバイス及び/又はモバイルデバイスは、902において接続が確立されているかどうかを判定するために周期的にチェックする。903において接続が確立され、判定された場合、904において、更新は、IoTデバイスに伝送され、インストールされる。
【0065】
改善されたセキュリティのための実施形態
一実施形態では、各IoTデバイス101の低電力マイクロコントローラ200及びIoTハブ110の低電力ロジック/マイクロコントローラ301は、以下に記載される実施形態によって使用される暗号鍵を記憶するための安全な鍵ストアを含む(例えば、
図10~15及び関連する文章を参照されたい)。代替的に、鍵は、後述するように、加入者識別モジュール(SIM)内に確保されてもよい。
【0066】
図10は、IoTサービス120、IoTハブ110、並びにIoTデバイス101及び102の間の通信を暗号化するために公開鍵インフラストラクチャ(public key infrastructure)(PKI)技術及び/又は対称鍵交換/暗号化技術を使用する、高レベルアーキテクチャを例示する。
【0067】
公開/秘密鍵ペアを使用する実施形態をまず説明し、続いて、対称鍵交換/暗号化技術を使用する実施形態を説明する。具体的には、PKIを使用するある実施形態において、一意的な公開/秘密鍵ペアが、各IoTデバイス101~102、各IoTハブ110、及びIoTサービス120に関連付けられる。一実施形態では、新しいIoTハブ110がセットアップされるとき、その公開鍵がIoTサービス120に提供され、新しいIoTデバイス101がセットアップされるとき、その公開鍵がIoTハブ110及びIoTサービス120の両方に提供される。デバイス間で公開鍵を安全に交換するための様々な技術を以下に説明する。一実施形態では、いかなる受信デバイスも、署名の妥当性を確認することによって公開鍵の妥当性を検証することができるように、すべての公開鍵が、受信デバイスのすべてに既知である親鍵(すなわち、一種の証明書)によって署名される。したがって、未加工の公開鍵を単に交換するのではなく、むしろこれらの証明書が交換されることになる。
【0068】
例示したように、一実施形態では、各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内に記憶することができる。
【0069】
例として、一実施形態では、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)であるが、本発明の基本原理は、いかなるタイプの特定の対称鍵にも限定されない。
【0070】
ある対称鍵実装形態を使用すると、各デバイス101は、IoTハブ110と対称鍵を交換するために、安全な鍵交換プロトコルに入る。動的対称鍵プロビジョニングプロトコル(Dynamic Symmetric Key Provisioning Protocol)(DSKPP)などの安全な鍵プロビジョニングプロトコルが、安全な通信チャネルを介して鍵を交換するために使用され得る(例えば、コメント要求(Request for Comments)(RFC)6063を参照されたい)。しかしながら、本発明の基本原理は、いかなる特定の鍵プロビジョニングプロトコルにも限定されるものではない。
【0071】
対称鍵が交換されると、それらは、各デバイス101及びIoTハブ110によって、通信を暗号化するために使用され得る。同様に、IoTハブ110及びIoTサービス120は、安全な対称鍵交換を実行し、次いで、交換された対称鍵を使用して通信を暗号化し得る。一実施形態では、新しい対称鍵が、デバイス101とハブ110との間、及びハブ110とIoTサービス120との間で定期的に交換される。一実施形態では、デバイス101、ハブ110、及びサービス120の間での新しい通信セッションのたびに、新しい対称鍵が交換される(例えば、通信セッションごとに新しい鍵が生成され、安全に交換される)。一実施形態では、IoTハブ内のセキュリティモジュール1012が信頼される場合、サービス120は、ハブセキュリティモジュール1312とセッション鍵を交渉し得、次いで、セキュリティモジュール1012が、各デバイス120とセッション鍵を交渉することになる。次いで、サービス120からのメッセージは、ハブセキュリティモジュール1012で解読及び検証され、その後、デバイス101への送信のために再暗号化される。
【0072】
一実施形態では、ハブセキュリティモジュール1012でのセキュリティ侵害を防止するために、1回限りの(恒久的な)インストール鍵が、インストール時にデバイス101とサービス120との間で交渉されてもよい。メッセージをデバイス101に送るとき、サービス120は、まずこのデバイスインストール鍵を用いて暗号化/MACし、次いでハブのセッション鍵を用いてそれを暗号化/MACし得る。次いで、ハブ110は、暗号化されたデバイスブロブを検証及び抽出し、それをデバイスに送ることになる。
【0073】
本発明の一実施形態では、リプレイアタックを防止するためにカウンタ機構が実装される。例えば、デバイス101からハブ110へ(又は逆もまた同様)の連続する通信それぞれに、継続的に増加するカウンタ値が割り当てられ得る。ハブ110とデバイス101との両方がこの値を追跡し、デバイス間での連続する通信それぞれにおいてその値が正しいことを検証する。これと同じ技術が、ハブ110とサービス120との間に実装され得る。この方法でカウンタを使用すると、各デバイス間での通信を偽装することがより困難になるであろう(カウンタ値が誤ったものになるため)。しかしながら、これを用いずとも、サービスとデバイスとの間で共有されたインストール鍵は、すべてのデバイスに対するネットワーク(ハブ)規模の攻撃を防止するであろう。
【0074】
一実施形態では、公開/秘密鍵暗号化を使用するとき、IoTハブ110は、その秘密鍵を使用してIoTハブパケットを解読し、暗号化されたIoTデバイスパケットを生成し、それを、関連付けられたIoTデバイス101に送信する。次いで、IoTデバイス101は、その秘密鍵を使用してIoTデバイスパケットを解読して、IoTサービス120を起点とするコマンド/データを生成する。次いで、IoTデバイス101は、データを処理し、かつ/又はコマンドを実行してもよい。対称暗号化を使用すると、各デバイスは、共有された対称鍵を用いて暗号化及び解読を行う。いずれかの場合であれば、各送信デバイスはまた、受信デバイスがメッセージの信頼性を検証することができるように、その秘密鍵を用いてメッセージに署名してもよい。
【0075】
異なる鍵のセットが、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は、異なる対称鍵を共有し得る。
【0076】
上記の説明において、ある特定の具体的詳細が上に記載されているが、本発明の基本原理は様々な異なる暗号化技術を使用して実装され得ることに留意すべきである。例えば、上述した一部の実施形態は非対称の公開/秘密鍵ペアを使用するが、別の実施形態は、様々なIoTデバイス101~102、IoTハブ110、及びIoTサービス120の間で安全に交換される対称鍵を使用し得る。更に、一部の実施形態では、データ/コマンド自体は暗号化されないが、データ/コマンド(又は他のデータ構造)上の署名を生成するために鍵が使用される。次いで、受信者が、その鍵を使用して署名の妥当性を確認し得る。
【0077】
図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との通信を暗号化する際に使用されるように安全に記憶する。
【0078】
図11に関して上述した技術は、新しいIoTデバイスをエンドユーザに提供する際に多大な柔軟性を提供する。(現在行われているのと同様に)ユーザが販売/購入の際に各SIMを特定のサービスプロバイダに直接登録することを要するのではなく、SIMは、エンドユーザによりIoTハブ110を介して直接プログラムされてもよく、プログラミングの結果は、IoTサービス120に安全に通信され得る。それ故に、新しいIoTデバイス101がオンライン又はローカルの小売業者からエンドユーザに販売され、後にIoTサービス120が安全にプロビジョニングされ得る。
【0079】
SIM(加入者識別モジュール)という具体的な文脈において登録及び暗号化技術を上述したが、本発明の基本原理は「SIM」デバイスに限定されない。むしろ、本発明の基本原理は、暗号鍵セットを記憶するための安全な記憶装置を有する、いかなるタイプのデバイスを使用して実装されてもよい。更に、上記の実施形態は取り外し可能なSIMデバイスを含むのに対し、一実施形態では、SIMデバイスは取り外し可能でないが、IoTデバイス自体が、IoTハブ110のプログラミングインターフェース1102に挿入されてもよい。
【0080】
一実施形態では、ユーザがSIM(又は他のデバイス)をプログラムすることを要するのではなく、SIMは、エンドユーザへの流通前に、IoTデバイス101に予めプログラムされる。この実施形態において、ユーザがIoTデバイス101をセットアップするとき、本明細書に記載される様々な技術が、IoTハブ110/IoTサービス120と新しいIoTデバイス101との間で暗号鍵を安全に交換するために使用され得る。
【0081】
例えば、
図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内に公開鍵を(後の暗号化通信に使用するために)記憶してもよい。
【0082】
一実施形態では、バーコード又はQRコード(登録商標)1201内に含まれるデータはまた、インストールされたIoTアプリケーション又はIoTサービスプロバイダにより設計されたブラウザベースのアプレットを用いて、ユーザデバイス135(例えば、iPhone(登録商標)又はAndroidデバイスなど)によりキャプチャされてもよい。キャプチャされると、バーコードデータは、安全な接続(例えば、セキュアソケットレイヤー(secure sockets layer)(SSL)接続など)を介して、IoTサービス120に安全に通信され得る。バーコードデータはまた、安全なローカル接続を介して(例えば、ローカルWiFi又はBluetooth(登録商標) LE接続を介して)、クライアントデバイス135からIoTハブ110に提供されてもよい。
【0083】
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により設計)を使用することによって、実装され得る。当然のことながら、本発明の基本原理は、いかなる特定のタイプの安全な実行技術にも限定されない。
【0084】
一実施形態では、バーコード又はQRコード(登録商標)1501は、各IoTデバイス101をIoTハブ110とペアリングするために使用され得る。例えば、Bluetooth(登録商標) LEデバイスをペアリングするために現在使用されている標準的な無線ペアリングプロセスを使用するのではなく、バーコード又はQRコード(登録商標)1501内に組み込まれたペアリングコードをIoTハブ110に提供して、IoTハブを対応するIoTデバイスとペアリングしてもよい。
【0085】
図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との通信を暗号化し得る。
【0086】
同様に、IoTデバイス101側では、ローカル通信モジュール1590が、IoTハブとのペアリングを示すペアリングデータを、ローカルの安全な記憶デバイス1595内に記憶する。ペアリングデータ1295は、バーコード/QRコード(登録商標)1201で識別される予めプログラムされたペアリングコードを含んでもよい。ペアリングデータ1295はまた、安全なローカル通信チャネルを確立するために必要な、IoTハブ110上のローカル通信モジュール1280から受信されるペアリングデータ(例えば、IoTハブ110との通信を暗号化するための追加の鍵)を含んでもよい。
【0087】
したがって、バーコード/QRコード(登録商標)1201は、ペアリングコードが無線で送信されないため、現在の無線ペアリングプロトコルよりも遥かに安全な方法でローカルペアリングを実行するために使用され得る。加えて、一実施形態では、ペアリングに使用されるものと同じバーコード/QRコード(登録商標)1201を使用して暗号鍵を識別し、IoTデバイス101からIoTハブ110へ、かつIoTハブ110からIoTサービス120への安全な接続を構築することができる。
【0088】
本発明の一実施形態によるSIMカードをプログラムするための方法が、
図13に例示される。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0089】
1301において、ユーザは、空のSIMカードを備えた新しいIoTデバイスを受け取り、1602において、ユーザは、空のSIMカードをIoTハブに挿入する。1303において、ユーザは、1つ以上の暗号鍵のセットを用いて空のSIMカードをプログラムする。例えば、上述のように、一実施形態において、IoTハブは、公開/秘密鍵ペアをランダムに生成し、秘密鍵をSIMカード上に、かつ公開鍵をそのローカルの安全な記憶装置内に記憶し得る。加えて、1304において、IoTデバイスを識別し、かつIoTデバイスとの暗号化通信を確立するために使用され得るように、少なくとも公開鍵がIoTサービスに送信される。上述したように、一実施形態では、「SIM」カード以外のプログラマブルデバイスが、
図13に示される方法でSIMカードと同じ機能を実行するために使用されてもよい。
【0090】
新しいIoTデバイスをネットワークに統合するための方法が、
図14に例示される。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0091】
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内では、記憶された鍵の改変/追加/除去を防止することが特に重要である。
【0092】
公開/秘密鍵を使用してコマンド/データをIoTデバイスに安全に通信するための方法が、
図15に例示される。本方法は、上述のシステムアーキテクチャ内で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0093】
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デバイスは、データ/コマンドを処理する。
【0094】
対称鍵を使用するある実施形態において、対称鍵交換は、各デバイス間(例えば、各デバイスとハブと、及びハブとサービスとの間)で交渉され得る。鍵交換が完了すると、各送信デバイスは、対称鍵を使用して各送信を暗号化し、かつ/又はそれに署名し、その後、データを受信デバイスに送信する。
【0095】
モノのインターネット(IoT)システムに安全な通信チャネルを確立するための装置及び方法
本発明の一実施形態では、通信チャネルをサポートするために使用される中間デバイス(例えば、ユーザのモバイルデバイス611及び/又はIoTハブ110など)に関わらず、データの暗号化及び解読は、IoTサービス120と各IoTデバイス101との間で実行される。IoTハブ110を介して通信する一実施形態が
図16Aに例示され、IoTハブを必要としない別の実施形態が
図16Bに例示される。
【0096】
最初に
図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によって使用されて、同じシークレットを生成し、このシークレットは次にSKGM 1640~1641によって使用されて、IoTサービス120とIoTデバイス101との間の通信を暗号化及び解読する鍵ストリームを生成する。本発明の一実施形態によるシークレットの生成及び使用に関連付けられた追加の詳細は、以下に提供される。
【0097】
図16Aで、鍵1650~1651を使用してシークレットが生成されると、クライアントは、クリアトランザクション1611によって示されるように常にIoTサービス120を介してIoTデバイス101にメッセージを送信することになる。本明細書で使用されるとき「クリア」は、根本的なメッセージが本明細書に記載された暗号化技術を使用して暗号化されていないことを示すことを意味する。しかし、例示したように、一実施形態では、セキュアソケットレイヤー(SSL)チャネル又は他の安全なチャネル(例えば、インターネットプロトコルセキュリティ(Internet Protocol Security)(IPSEC)チャネル)は、通信を保護するためにクライアントデバイス611とIoTサービス120との間で確立される。IoTサービス120上の暗号化エンジン1660は、次に、生成されたシークレットを使用してメッセージを暗号化して、1602で暗号化メッセージをIoTハブ110に送信する。メッセージを直接暗号化するためにシークレットを使用するのではなく、一実施形態では、シークレット及びカウンタ値を使用して、鍵ストリームを生成し、この鍵ストリームを使用して、それぞれのメッセージパケットを暗号化する。この実施形態の詳細は、
図17に関して以下に説明する。
【0098】
例示したように、SSL接続又は他の安全なチャネルは、IoTサービス120とIoTハブ110との間で確立することができる。IoTハブ110(一実施形態ではメッセージを解読する能力を有さない)は、1603で(例えば、Bluetooth(登録商標) Low Energy(BTLE)通信チャネルを介して)暗号化メッセージをIoTデバイスに送信する。IoTデバイス101上の暗号化エンジン1661は、次に、シークレットを使用してメッセージを解読して、メッセージコンテンツを処理することができる。鍵ストリームを生成するためにシークレットを使用する実施形態では、暗号化エンジン1661は、シークレット及びカウンタ値を使用して鍵ストリームを生成し、次にメッセージパケットの解読のために鍵ストリームを使用することができる。
【0099】
メッセージ自体は、IoTサービス120とIoTデバイス101との間の任意の形態の通信を含むことができる。例えば、メッセージは、測定を行ってその結果をクライアントデバイス611に通知して返すことなどの特定の機能を実行することをIoTデバイス101に命令するコマンドパケットを含むことができる、又はIoTデバイス101の動作を構成する構成データを含むことができる。
【0100】
応答が必要とされる場合、IoTデバイス101上の暗号化エンジン1661は、シークレット又は導出された鍵ストリームを使用して、応答を暗号化し、1604で暗号化応答をIoTハブ110に送信し、IoTハブ110は、1605で応答をIoTサービス120に転送する。IoTサービス120上の暗号化エンジン1660は、次に、シークレット又は導出された鍵ストリームを使用して応答を解読して、1606で(例えば、SSL又は他の安全な通信チャネルを介して)解読された応答をクライアントデバイス611に送信する。
【0101】
図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に送信する。
【0102】
図17は、IoTサービス120とIoTデバイス101との間で最初に実行することができる鍵交換及び鍵ストリーム生成を例示する。一実施形態では、この鍵交換は、IoTサービス120及びIoTデバイス101が新しい通信セッションを確立するたびに実行することができる。代替的に、鍵交換を実行することができ、交換されたセッション鍵を指定された期間(例えば、一日、一週間など)使用することができる。簡潔にするために
図17に中間デバイスは示されていないが、通信は、IoTハブ110及び/又はクライアントデバイス611を介して行うことができる。
【0103】
一実施形態では、IoTサービス120の暗号化エンジン1660は、セッション公開/秘密鍵ペアを生成するために、コマンドをHSM 1630(例えば、Amazon(登録商標)によって提供されるCloudHSMなどとすることができる)に送信する。HSM 1630は、その後、このペアのセッション秘密鍵へのアクセスを防止することができる。同様に、IoTデバイス101上の暗号化エンジンは、セッション公開/秘密鍵ペアを生成してこのペアのセッション秘密鍵へのアクセスを防止するHSM 1631(例えば、Atmel Corporation(登録商標)によるAtecc508 HSMなどの)にコマンドを送信することができる。当然のことながら、本発明の基本原理は、いかなる特定のタイプの暗号化エンジン又は製造業者にも限定されない。
【0104】
一実施形態では、IoTサービス120は、1701で、HSM 1630を使用して生成されたそのセッション公開鍵をIoTデバイス101に送信する。IoTデバイスは、そのHSM 1631を使用して、それ自体のセッション公開/秘密鍵ペアを生成し、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などのハードウェアモジュールに依拠する。
【0105】
シークレットが決定されると、シークレットは、暗号化エンジン1660及び1661によって使用されて、データを直接暗号化及び解読することができる。代替的に、一実施形態では、暗号化エンジン1660~1661は、コマンドをKSGM 1640~1641に送信して、それぞれのデータパケットを暗号化/解読するためにシークレットを使用して新しい鍵ストリームを生成する(すなわち、それぞれのパケットに対して新しい鍵ストリームデータ構造が生成される)。具体的には、鍵ストリーム生成モジュール1640~1641の一実施形態は、それぞれのデータパケットに対してカウンタ値が増加され、鍵ストリームを生成するためにシークレットと組み合わせて使用される、Galois/カウンタモード(Galois/Counter Mode)(GCM)を実装する。したがって、データパケットをIoTサービス120に送信するために、IoTデバイス101の暗号化エンジン1661は、シークレット及び現在のカウンタ値を使用して、KSGM 1640~1641に新しい鍵ストリームを生成させ、次の鍵ストリームを生成するためにカウンタ値を増加させる。次に、新たに生成された鍵ストリームを使用して、データパケットを暗号化し、その後、IoTサービス120に送信される。一実施形態では、鍵ストリームは、データでXORされて、暗号化データパケットを生成する。一実施形態では、IoTデバイス101は、カウンタ値を暗号化データパケットと共にIoTサービス120に送信する。IoTサービス上の暗号化エンジン1660は、次に、KSGM 1640と通信し、KSGM 1640は、受信したカウンタ値及びシークレットを使用して、鍵ストリーム(同じシークレット及びカウンタ値が使用されるので同じ鍵ストリームでなければならない)を生成し、生成された鍵ストリームを使用して、データパケットを解読する。
【0106】
一実施形態では、IoTサービス120からIoTデバイス101に送信されるデータパケットは、同じ方法で暗号化される。具体的には、それぞれのデータパケットに対してカウンタが増加されて、シークレットと共に使用されて、新しい鍵ストリームを生成する。鍵ストリームは、次に、データを暗号化するために使用され(例えば、データ及び鍵ストリームのXORを実行して)、暗号化データパケットは、カウンタ値と共にIoTデバイス101に送信される。IoTデバイス101上の暗号化エンジン1661は、次に、KSGM 1641と通信し、KSGM 1641は、カウンタ値及びシークレットを使用して、データパケットを解読するために使用される同じ鍵ストリームを生成する。したがって、この実施形態では、暗号化エンジン1660~1661は、それら自体のカウンタ値を使用して、データを暗号化する鍵ストリームを生成し、暗号化データパケットと共に受信したカウンタ値を使用して、データを解読する鍵ストリームを生成する。
【0107】
一実施形態では、それぞれの暗号化エンジン1660~1661は、それが他方から受信した最後のカウンタ値を追跡し、カウンタ値がシーケンス外で受信されたか否か又は同じカウンタ値が1回より多く受信されたか否かを検出するシーケンシングロジックを含む。カウンタ値がシーケンス外で受信された場合、又は同じカウンタ値が1回より多く受信された場合、これは、リプレイアタックが試みられていることを示し得る。それに応答して、暗号化エンジン1660~1661は、通信チャネルから接続を切ることができる、及び/又はセキュリティアラートを生成することができる。
【0108】
図18は、4バイトのカウンタ値1800と、可変サイズの暗号化データフィールド1801と、6バイトのタグ1802とを含む、本発明の一実施形態で用いられる例示的な暗号化データパケットを例示する。一実施形態では、タグ1802は、解読されたデータ(それが解読されたら)の妥当性を確認するチェックサム値を含む。
【0109】
上述したように、一実施形態では、IoTサービス120とIoTデバイス101との間で交換されたセッション公開/秘密鍵ペア1650~1651は、定期的に、及び/又はそれぞれの新しい通信セッションの開始に応答して生成することができる。
【0110】
本発明の一実施形態は、IoTサービス120とIoTデバイス101との間のセッションを認証するための追加の技術を実装する。具体的には、一実施形態では、親鍵ペア、工場鍵ペアのセット、並びにIoTサービス鍵ペアのセット及びIoTデバイス鍵ペアのセットを含む、公開/秘密鍵ペアの階層が使用される。一実施形態では、親鍵ペアは、他の鍵ペアのすべてに対する信頼のルートを含み、単一の高度に安全な場所に(例えば、本明細書に記載されたIoTシステムを実装する組織の管理下に)維持される。マスター秘密鍵を使用して、工場鍵ペアなどの様々な他の鍵ペアの上に署名を生成する(及びそれによって認証する)ことができる。署名は、次に、マスター公開鍵を使用して検証することができる。一実施形態では、IoTデバイスを製造するそれぞれの工場は、それ自体の工場鍵ペアを割り当てられ、工場鍵ペアは、次に、IoTサービス鍵及びIoTデバイス鍵を認証するために使用することができる。例えば、一実施形態では、工場秘密鍵を使用して、IoTサービス公開鍵及びIoTデバイス公開鍵の上に署名を生成する。これらの署名は、次に、対応する工場公開鍵を使用して検証することができる。これらのIoTサービス/デバイス公開鍵は、
図16A~Bに関して上述した「セッション」公開/秘密鍵と同じではないことに留意されたい。上述したセッション公開/秘密鍵は、一時的であり(すなわち、サービス/デバイスセッションに対して生成される)、一方、IoTサービス/デバイス鍵ペアは、恒久的なものである(すなわち、工場で生成される)。
【0111】
親鍵、工場鍵、サービス/デバイス鍵の間の上述の関係を念頭に、本発明の一実施形態は、IoTサービス120とIoTデバイス101との間の認証及びセキュリティの追加のレイヤを提供するために、以下の動作を実行する。
A.一実施形態では、IoTサービス120は、最初に、以下を含むメッセージを生成する。
1.IoTサービスの一意的なID:
・IoTサービスのシリアルナンバー、
・タイムスタンプ、
・この一意的なIDに署名するために使用される工場鍵のID、
・一意的なID(すなわち、サービス)のクラス、
・IoTサービスの公開鍵、
・一意的なIDの上の署名。
2.以下を含む工場証明書:
・タイムスタンプ、
・証明書に署名するために使用される親鍵のID、
・工場公開鍵、
・工場証明書の署名。
3.IoTサービスセッション公開鍵(
図16A~Bに関して上述したような)
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デバイスのペアリング状態を真に設定する。
【0112】
上述の技術は「IoTサービス」及び「IoTデバイス」に関して説明したが、本発明の基本原理は、ユーザのクライアントデバイス、サーバ、及びインターネットサービスを含む、任意の2つのデバイス間で安全な通信チャネルを確立するように実装することができる。
【0113】
上述の技術は、秘密鍵が無線で共有されない(シークレットが片方の当事者から他方に送信される現在のBluetooth(登録商標)ペアリング技術と対照的に)ので、高度に安全である。会話全体を聞いている攻撃者は、公開鍵を有するのみということになり、これは、共有シークレットを生成するために不十分である。これらの技術はまた、署名された公開鍵を交換することによる中間者攻撃を防止する。加えて、GCM及び別個のカウンタがそれぞれのデバイス上で使用されるため、任意の種類の「リプレイアタック」(中間者がデータをキャプチャしてそれを再度送信する)が防止される。いくつかの実施形態はまた、非対称カウンタを使用することによりリプレイアタックを防止する。
【0114】
デバイスを正式にペアリングすることなくデータ及びコマンドを交換するための技術
GATTは、一般属性プロファイル(Generic Attribute Profile)に対する頭字語であり、これは、2つのBluetooth(登録商標) Low Energy(BTLE)デバイスがデータを往復して伝送する方法を規定する。これは、属性プロトコル(Attribute Protocol)(ATT)と呼ばれる一般データプロトコルを利用し、このプロトコルは、簡単なルックアップテーブルに、テーブルへの入力ごとに16ビットの特性IDを使用してサービス、特性、及び関連データを記憶するために使用される。一方で「特性」は、「属性」と呼ばれることもあることに留意されたい。
【0115】
Bluetooth(登録商標)デバイス上で、最も一般的に使用される特性は、デバイスの「名前」(特性ID 10752(0×2A00)を有する)である。例えば、Bluetooth(登録商標)デバイスは、その近傍内の他のBluetooth(登録商標)デバイスを、GATTを使用してこれらの他のBluetooth(登録商標)デバイスによって発行された「名前」特性を読み取ることにより、識別することができる。したがって、Bluetooth(登録商標)デバイスは、デバイスを正式にペアリング/結合することなくデータを交換するための固有の能力を有する(「ペアリング」と「結合」とが時として交換可能に使用される点に留意されたい。この議論の残りは、用語「ペアリング」を使用することになる)。
【0116】
本発明の一実施形態は、BTLE対応IoTデバイスと、これらのデバイスと正式にペアリングすることなく通信するために、この能力を利用する。それぞれの個別のIoTデバイスとのペアリングは、ペアリングするために必要とされる時間のため、及び同時に1つのペアリングされた接続のみを確立することができるため、著しく非効率であろう。
【0117】
図19は、Bluetooth(登録商標)(BT)デバイス1910が、ペアリングされたBT接続を正式に確立することなくIoTデバイス101のBT通信モジュール1901とのネットワークソケットアブストラクションを確立する、特定の一実施形態を例示する。BTデバイス1910は、
図16Aに示すようなIoTハブ110及び/又はクライアントデバイス611内に含めることができる。例示したように、BT通信モジュール1901は、特性ID、それらの特性IDに関連付けられた名前、及びそれらの特性IDに対する値のリストを含むデータ構造を維持する。それぞれの特性に対する値は、現在のBT標準に従って特性IDにより識別された20バイトのバッファに記憶することができる。しかしながら、本発明の基本原理は、いかなる特定のバッファサイズにも限定されない。
【0118】
図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を読み取って、上述したようにそれを処理することができる(例えば、それを使用してシークレットを生成し、シークレットを使用して鍵ストリームを生成するなど)。
【0119】
鍵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>により規定されたネットワークソケットアブストラクションは、安全な通信チャネルを確立するために使用される交渉メッセージを交換するために確立される。
【0120】
一実施形態では、安全な通信チャネルが確立されると、特性ID<65534>(IoTデバイス101から暗号化データパケットを送信するための)及び特性ID<65533>(IoTデバイスにより暗号化データパケットを受信するための)を使用して、第2のネットワークソケットアブストラクションが確立される。すなわち、BT通信モジュール1903が送信する暗号化データパケット(例えば、
図16Aの暗号化メッセージ1603などの)を有するとき、BT通信モジュール1903は、特性ID<65533>により識別されたメッセージ読取値バッファを使用して一度に20バイト、暗号化データパケットを書き込み始める。IoTデバイスアプリケーションロジック1902は、次に、読取値バッファから一度に20バイト、暗号化データパケットを読み取り、必要に応じて特性ID<65532>により識別された書込値バッファを介して確認応答メッセージをBT通信モジュール1903に送信することになる。
【0121】
一実施形態では、後述する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パケットを送信して、照明アプリケーションに関連付けられたオン/オフ属性にこの変化を反映することができる。
【0122】
図20は、本発明の一実施形態による、GET、SET、及びUPDATE用に使用される例示的なパケット形式を例示する。一実施形態では、これらのパケットは、交渉の後に、メッセージ書込<65534>及びメッセージ読取<65533>チャネルを介して送信される。GETパケット2001では、最初の1バイトのフィールドは、パケットをGETパケットとして識別する値(0×10)を含む。2番目の1バイトのフィールドは、現在のGETコマンドを一意的に識別する(すなわち、GETコマンドが関連付けられた現在のトランザクションを識別する)要求IDを含む。例えば、サービス又はデバイスから送信されたGETコマンドのそれぞれのインスタンスに、異なる要求IDを割り当てることができる。これは、例えば、カウンタを増加させて、カウンタ値を要求IDとして使用することにより、実行することができる。しかしながら、本発明の基本原理は、要求IDを設定するためのいかなる特定の方法にも限定されるものではない。
【0123】
2バイトの属性IDは、パケットが向けられたアプリケーション特有の属性を識別する。例えば、GETコマンドが
図19に例示したIoTデバイス101に送信されている場合、属性IDを使用して、要求されている特定のアプリケーション特有の値を識別することができる。上述の実施例に戻って、GETコマンドは、照明システムの電源状態などのアプリケーション特有の属性IDに向けることができ、この属性IDは、照明が電源がオン又はオフになっているかを識別する値(例えば、1=オン、0=オフ)を含む。IoTデバイス101がドアに関連付けられたセキュリティ装置である場合、値フィールドは、ドアの現在の状態(例えば、1=開いている、0=閉じている)を識別することができる。GETコマンドに応答して、属性IDにより識別された現在の値を含む応答を送信することができる。
【0124】
図20に例示したSETパケット2002及びUPDATEパケット2003もまた、パケットのタイプ(すなわち、SET及びUPDATE)を識別する最初の1バイトのフィールド、要求IDを含む2番目の1バイトのフィールド、及びアプリケーションで定義された属性を識別する2バイトの属性IDフィールドを含む。加えて、SETパケットは、nバイトの値データフィールドに含まれたデータの長さを識別する2バイト長の値を含む。値データフィールドは、IoTデバイス上で実行されるコマンド、及び/又はなんらかの方法でIoTデバイスの動作を構成する(例えば、所望のパラメータを設定する、IoTデバイスの電源を切るなど)構成データを含むことができる。例えば、IoTデバイス101がファンの速度を制御する場合、値フィールドは、現在のファンの速度を反映することができる。
【0125】
UPDATEパケット2003は、SETコマンドの結果の更新を提供するために送信することができる。UPDATEパケット2003は、SETコマンドの結果に関連したデータを含むことができるnバイトの値データフィールドの長さを識別する、2バイト長の値フィールドを含む。加えて、1バイトの更新状態フィールドは、更新されている変数の現在の状態を識別することができる。例えば、SETコマンドがIoTデバイスにより制御された照明をオフにすることを試みた場合、更新状態フィールドは、照明が正常にオフにされたか否かを示すことができる。
【0126】
図21は、SET及びUPDATEコマンドを伴うIoTサービス120とIoTデバイス101との間の例示的なトランザクションのシーケンスを例示する。IoTハブ及びユーザのモバイルデバイスなどの中間デバイスは、本発明の基本原理を不明瞭にすることを避けるために示されていない。2101で、SETコマンド2101は、IoTサービスからIoTデバイス101に送信されて、BT通信モジュール1901により受信され、BT通信モジュール1901は、それに応答して、2102で特性IDにより識別されたGATT値バッファを更新する。SETコマンドは、2103で低電力マイクロコントローラ(low power 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に返送される。
【0127】
図22は、本発明の一実施形態によるIoTサービスとIoTデバイスとの間で安全な通信チャネルを実装するための方法を例示する。本方法は、上述のネットワークアーキテクチャとの関連で実装され得るが、いかなる特定のアーキテクチャにも限定されない。
【0128】
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デバイスは、次に、デバイスパケットに含まれたデータ及び/又はコマンドを抽出して処理する。
【0129】
したがって、上述の技術を使用して、標準的なペアリング技術を使用して、BTデバイスを正式にペアリングすることなく、2つのBT対応デバイス間で双方向の安全なネットワークソケットアブストラクションを確立することができる。これらの技術は、IoTサービス120と通信するIoTデバイス101に関して上述したが、本発明の基本原理は、任意の2つのBT対応デバイス間で安全な通信チャネルを交渉して確立するように実装することができる。
【0130】
図23A~Cは、本発明の一実施形態によるデバイスをペアリングするための詳細な方法を例示する。本方法は、上述のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0131】
2301で、IoTサービスは、IoTサービスのシリアルナンバー及び公開鍵を含むパケットを作成する。2302で、IoTサービスは、工場秘密鍵を使用してパケットに署名する。2303で、IoTサービスは、暗号化チャネルを介してIoTハブにパケットを送信し、2304で、IoTハブは、非暗号化チャネルを介してIoTデバイスにパケットを転送する。2305で、IoTデバイスは、パケットの署名を検証し、2306で、IoTデバイスは、IoTデバイスのシリアルナンバー及び公開鍵を含むパケットを生成する。2307で、IoTデバイスは、工場秘密鍵を使用してパケットに署名し、2308で、IoTデバイスは、非暗号化チャネルを介してIoTハブにパケットを送信する。
【0132】
2309で、IoTハブは、暗号化チャネルを介してパケットをIoTサービスに転送し、2310で、IoTサービスは、パケットの署名を検証する。2311で、IoTサービスは、セッション鍵ペアを生成し、2312で、IoTサービスは、セッション公開鍵を含むパケットを生成する。IoTサービスは、次に、2313で、IoTサービス秘密鍵でパケットに署名し、2314で、IoTサービスは、暗号化チャネルを介してパケットをIoTハブに送信する。
【0133】
図23Bに移って、2315で、IoTハブは、非暗号化チャネルを介してパケットをIoTデバイスに転送し、2316で、IoTデバイスは、パケットの署名を検証する。2317で、IoTデバイスは、セッション鍵ペアを生成し(例えば、上述の技術を使用して)、2318で、IoTデバイスセッション公開鍵を含むIoTデバイスパケットが生成される。2319で、IoTデバイスは、IoTデバイス秘密鍵でIoTデバイスパケットに署名する。2320で、IoTデバイスは、非暗号化チャネルを介してIoTハブにパケットを送信し、2321で、IoTハブは、暗号化チャネルを介してIoTサービスにパケットを転送する。
【0134】
2322で、IoTサービスは、パケットの署名を検証し(例えば、IoTデバイス公開鍵を使用して)、2323で、IoTサービスは、IoTサービス秘密鍵及びIoTデバイス公開鍵を使用して、セッションシークレットを生成する(先に詳細に説明したように)。2324で、IoTデバイスは、IoTデバイス秘密鍵及びIoTサービス公開鍵を使用して、セッションシークレットを生成し(また、上述したように)、2325で、IoTデバイスは、乱数を生成して、セッションシークレットを使用してその乱数を暗号化する。2326で、IoTサービスは、暗号化チャネルを介して暗号化パケットをIoTハブに送信する。2327で、IoTハブは、非暗号化チャネルを介して暗号化パケットをIoTデバイスに転送する。2328で、IoTデバイスは、セッションシークレットを使用してパケットを解読する。
【0135】
図23Cに移って、2329で、IoTデバイスは、セッションシークレットを使用してパケットを再暗号化し、2330で、IoTデバイスは、非暗号化チャネルを介して暗号化パケットをIoTハブに送信する。2331で、IoTハブは、暗号化チャネルを介して暗号化パケットをIoTサービスに転送する。2332で、IoTサービスは、セッションシークレットを使用してパケットを解読する。2333で、IoTサービスは、乱数がIoTサービスが送信した乱数と一致することを検証する。IoTサービスは、次に、2334で、ペアリングが完了したことを示すパケットを送信し、2335で、その後のメッセージはすべて、セッションシークレットを使用して暗号化される。
【0136】
データ伝送状態を識別するためにパケット間隔タイミングを変更する装置及び方法
Bluetooth(登録商標) Low Energy(BTLE)デバイスは、「アドバタイジング間隔」によって分離されたアドバタイジングパケットを送信して、デバイス間の接続を確立する。BTLE周辺装置は、アドバタイジング間隔を使用して、アドバタイジングパケットをその周囲のデバイスごとにブロードキャストする。次いで、受信BTLEデバイスは、この情報に作用して、又は接続して、より多くの情報を受信することができる。
【0137】
BTLEの2.4GHzスペクトルは、2402MHz~2480MHzにわたり、また、0~39に番号付けした40個の1MHz幅のチャネルを使用する。各チャネルは、2MHz単位で分離される。チャネル37、38、及び39は、アドバタイズメントパケットを送信するためだけに使用される。残りは、接続中のデータ交換に使用される。BTLEアドバタイズメント中に、BTLE周辺装置は、パケットを3つのアドバタイジングチャネルに順々に送信する。デバイス又はビーコンのための中央デバイススキャンは、アドバタイジングパケットのためのそれらのチャネルをリッスンし、これは、近くのデバイスを発見するのを補助する。チャネル37、38、及び39は、2.4GHzスペクトル全体にわたって意図的に広げられる(すなわち、チャネル37及び39は、帯域内の最初の、及び最後のチャネルであり、チャネル38は、中間である)。任意の単一のアドバタイジングチャネルがブロックされた場合、他のチャネルは、それらが数MHzの帯域幅によって分離されているので、ブロックされる可能性が低い。
【0138】
IoTデバイスが送信するべきデータを有するとき、通常は、そのアドバタイズメントパケットの一部として、データを送信する準備ができていることを示すフラグを含む。本発明の一実施形態では、このフラグを使用するのではなく、IoTデバイスは、アドバタイジング間隔を調整して、保留データを有することを示す。例えば、Tが、いかなるデータも保留中でないときのアドバタイズメントパケット間の時間である場合、0.75T、0.5T、又は1.25Tなどの異なるアドバタイジング間隔を選択して、データが保留中であることを示してもよい。一実施形態では、2つの異なる間隔を、アプリケーションの特定の要件に基づいて、また、どの間隔がどの状態を意味するのかを判定することをより難しくするように、プログラムすることができる。
【0139】
図24は、IoTデバイス101の一実施形態を示し、この実施形態では、BTLE通信インターフェース2410が、データが送信される準備ができているときにアドバタイジング間隔を調節するアドバタイジング間隔選択ロジック2411を含む。それに加えて、IoTハブ110のBTLE通信インターフェース2420は、アドバタイジング間隔検出ロジック2421を含むことにより、アドバタイジング間隔の変化を検出し、確認応答を与え、データを受信する。
【0140】
特に、示している実施形態では、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)に戻ってもよい。
【0141】
本発明の一実施形態では、安全な通信チャネルが、上記のセキュリティ/暗号化技術のうちの1つ以上を使用して、IoTデバイス101とIoTサービス120との間に確立される(例えば、
図16A~23C及び関連する本文を参照)。例えば、一実施形態では、IoTサービス120は、上記のようにIoTデバイス101との鍵交換を実行して、IoTデバイス101とIoTサービス120との間のすべての通信を暗号化する。
【0142】
本発明の一実施形態による方法が
図25に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0143】
2500において、(例えば、時間Tによって分離された)アドバタイジングパケットを生成するときに、IoTデバイスは、標準のアドバタイジング間隔を使用する。IoTデバイスは、2502において、それが送るべきデータを有することが2501において決定されるまで、標準のアドバタイジング間隔を維持する。次いで、2503において、IoTデバイスは、アドバタイジング間隔を切り換えることにより、送信するべきデータを有することを示す。2504において、IoTハブ又は別のネットワークデバイスは、IoTデバイスとの接続を確立することにより、IoTデバイスがそれ自体のデータを送信するのを可能にする。最終的に、2505において、IoTデバイスは、それ自体の保留データをIoTハブに送信する。
【0144】
アドバタイジング間隔技術がBTLEプロトコルと関連して本明細書に記載されているけれども、本発明の基礎原理は、BTLEに限定されないことを留意すべきである。実際に、本発明の基礎原理は、デバイス同士の間に無線通信を確立するためのアドバタイジング間隔を選択する任意のシステムに実装されてもよい。
【0145】
それに加えて、専用のIoTハブ110が上記の多くの実施形態に示されているけれども、専用のIoTハブハードウェアプラットホームが本発明の基礎原理に従うのに必要ではない。例えば、上記の様々なIoTハブは、iPhones(登録商標)及びAndroid(登録商標)デバイスなどの様々な別のネットワーキングデバイス内で実行されるソフトウェアとして実装されてもよい。実際に、上述したIoTハブは、(例えば、BTLE又は別のローカル無線プロトコルを使用して)IoTデバイスと通信することができる、及び(例えば、WiFi又はセルラーのデータ接続を使用してIoTサービスに)インターネットを介して接続を確立することができる任意のデバイスに実装されてもよい。
【0146】
IOTハブをIOTデバイスに接続するときに無線トラフィックを低減させるためのシステム及び方法
複数のIoTハブが特定の位置に構成されたとき、単一のIoTデバイスは、範囲内の各IoTハブと接続する能力を有し得る。上述したように、IoTデバイスは、アドバタイジングチャネルを使用して、範囲内の任意のIoTハブにそれが「接続可能」であることを通知することができ、よって、IoTハブをそこに接続して、コマンド及び/又はデータを送信することができる。複数のIoTハブがIoTデバイスの範囲内であるとき、IoTサービスは、これらのIoTハブのそれぞれを通して、IoTデバイスにアドレス指定されたコマンド/データを送信しようと試みる場合があり、それにより、(例えば、複数の送信によって生じる干渉により)無線帯域幅を浪費し、性能を低減させる。
【0147】
この問題に対処するために、本発明の一実施形態は、特定のIoTハブがIoTデバイスに正常に接続されると、他のIoTハブが、コマンド/データを送信しようと試みることを停止するように通知されることを確実にするための技術を実装する。この実施形態は、すべてがIoTデバイス101の範囲内にあるIoTハブ110~112の例示的なセットを示す
図26A~Cに関して説明する。その結果、IoTデバイス101の安全な無線通信モジュール2610は、IoTハブ110~112のそれぞれの安全な無線通信モジュール2650~2652を確認して、接続することができる。一実施形態では、安全な無線通信モジュールは、上述した安全なBTLEモジュールを含む。しかしながら、本発明の基本原理は、いかなる特定の無線標準にも限定されない。
【0148】
図26Aに例示するように、一実施形態では、IoTデバイス101の安全な無線通信モジュール2610は、それが「接続可能」である(すなわち、範囲内の任意のデバイスによって接続することができる)ことを示すアドバタイジングビーコンを近くの無線通信デバイスに定期的に送信するために、アドバタイジング制御ロジック2610を含む。アドバタイジングビーコンを受信する任意のIoTハブ110~112は、次いで、IoTデバイス101を認識し、安全な無線通信モジュール2650~2652は、コマンド/データがIoTサービスによってIoTデバイス101にアドレス指定されたとき、IoTデバイス101の安全な無線通信モジュール2610に接続することができる。
【0149】
図26Bに例示するように、一実施形態では、IoTサービスがIoTデバイス101のためのデータ/コマンドを有するとき、それは、データ/コマンドを特定の場所内のIoTハブ110~112のすべて(例えば、ユーザアカウントと関連付けられた、及び/又はIoTデバイス101の範囲内のすべてのIoTハブ)に送信することができる。例示したように、IoTハブ110~112のそれぞれは、次いで、IoTデバイス101と接続して、コマンド/データを提供することを試みることができる。
【0150】
図26Cに例示するように、一実施形態では、単一のIoTハブ111だけがIoTデバイス101に正常に接続し、IoTデバイス101によって処理するためのコマンド/データを提供する。BTLEなどの特定の無線通信プロトコルによって、接続が行われると、安全な無線通信モジュール2610は、アドバタイジングビーコンを送信するのを停止する。このように、他のIoTハブ110、112は、IoTデバイス101がIoTハブ111からデータを正常に受信したことを知るいかなる方法も有さず、コマンド/データを送信することを試み続け、それにより、無線帯域幅を消費し、干渉を作成する。
【0151】
この制限に対処するために、安全な無線通信モジュール2610の一実施形態は、接続マネージャ2611を含み、これは、IoTハブ111の安全な無線通信モジュール2651との正常な接続を検出すると、アドバタイジング制御モジュール2612に、アドバタイジングビーコンを送信し続けさせる。しかしながら、IoTデバイス101が「接続可能」であることを示す代わりに、新しいアドバタイジングビーコンが、IoTデバイス101が「接続不可能」であることを示す。一実施形態では、「接続不可能」という表示に応答して、IoTハブ110、112の安全な無線通信モジュール2650、2652は、コマンド/データをIoTデバイスに送信しようと試みることを停止し、それにより、不必要な無線トラフィックを低減させる。
【0152】
上記の技術は、既存の無線プロトコル上で容易に実装することができる技術を使用して、望ましくない無線トラフィックに対する簡潔な解決策を提供する。例えば、一実施形態で、「接続可能」、「接続不可能」という表示は、BTLE標準との関連で実装される。しかしながら、上述したように、本発明の基本原理は、様々な異なる無線ネットワークプロトコルを使用して実装することができる。
【0153】
本発明の一実施形態による方法が
図27に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0154】
2701において、コマンド及び/又はデータは、IoTサービスから2つ以上のIoTハブを介して送信される。例えば、ユーザは、ユーザのモバイルデバイス上のアプリケーションを介して、IoTサービスに接続されたIoTデバイスを制御することを試みている場合がある。2702において、IoTハブがIoTデバイスへの接続を試み、IoTハブのうちの1つが正常に接続し、IoTデバイスにコマンド/データを提供する。上述したように、IoTハブは、「接続可能」という表示をアドバタイジングビーコンでIoTデバイスに送信した結果として、IoTデバイスを認識することができる。
【0155】
2703において、接続の成功に応答して、IoTデバイスは、「接続不可能」というアドバタイジングビーコンを送信し始め、それにより、IoTデバイスがもはや接続可能でないことを範囲内の任意のIoTハブに通知する。2704において、「接続不可能」というビーコンを受信すると、他のIoTハブは、コマンド/データをIoTデバイスに送信しようと試みることを停止する。
【0156】
安全なモノのインターネット(IOT)デバイスをプロビジョニングするためのシステム及び方法
上述したように、一実施形態では、デバイスがIoTハブにアドバタイズするとき、それは、8バイトの「デバイスID」を使用し、これは、ハブ及びIoTサービスが使用して、IoTデバイスを一意的に識別する。デバイスIDは、IoTデバイス上に印刷された一意的なバーコード又はQRコード(登録商標)内に含むことができ、それを読み取り、IoTサービスに送信して、IoTデバイスをシステムにプロビジョニング/登録する。プロビジョニング/登録されると、デバイスIDを使用して、システム内のIoTデバイスをアドレス指定する。
【0157】
この実装形態に関する1つのセキュリティ上の懸念は、バーコード/QRコード(登録商標)データが暗号化することなく送信され得るので、デバイスIDの無線送信を盗聴して、システムの障害をもたらす可能性があり、それにより、別のユーザが、自分のアカウントとデバイスIDとをと関連付けることを可能にする。
【0158】
一実施形態では、この懸念に対処するために、「関連付けID」を、各デバイスIDと関連付け、プロビジョニングプロセス中に使用して、暗号化されていないデバイスIDが決して送信されないことを確実にする。
図28に例示するように、この実施形態では、関連付けID 2812が、IoTデバイス101上に印刷されたバーコード/QRコード(登録商標)に含まれ、一方で、デバイスID 2811は、上述した技術を実装する安全な無線通信モジュール2810内で安全に維持されて、IoTサービス120との安全な通信を確実にする。一実施形態では、関連付けID 2812は、デバイスIDのような8バイトのIDであり、IoTデバイスごとに一意的である。新しいIoTデバイス101がシステムにプロビジョニングされるとき、ユーザは、IoTアプリケーションを有するユーザデバイス135、又はそこにインストールされたアプリケーションによって、関連付けID2812を含むバーコード/QRコード(登録商標)をスキャンする。代替として、又は加えて、IoTハブ110は、関連付けIDを含むバーコード/QRコード(登録商標)をキャプチャするために使用することができる。
【0159】
いずれの場合においても、関連付けIDは、各関連付けIDと各デバイスIDとの関連付けを含むデバイスデータベース2851内の検索を行うIoTサービス120上のデバイスプロビジョニングモジュール2850に送信される。デバイスプロビジョニングモジュール2850は、関連付けID 2812を使用して、デバイスID 2811を識別し、次いで、デバイスIDを使用して、システム内の新しいIoTデバイス101をプロビジョニングする。特に、デバイスデータベース2851からデバイスIDが決定されると、デバイスプロビジョニングモジュール2850は、IoTハブ110がデバイスID 2811を使用してIoTデバイス101と通信することを許可するコマンドをIoTハブ110(ユーザデバイス135を含むことができる)に送信する。
【0160】
1つの実施形態において、関連付けID 2812は、IoTデバイス101が製造されるときに(すなわち、安全な無線通信モジュール2810がプロビジョニングされるときに)工場で生成される。デバイスID 2811及び関連付けID 2812の両方は、次いで、IoTサービスに提供し、デバイスデータベース2851に記憶することができる。例示したように、デバイスデータベース2851は、各デバイスがプロビジョニングされたかどうかを指定する表示を含むことができる。例として、これは、IoTデバイス101がプロビジョニングされていることを示す第1の値(例えば、1)及びIoTデバイスがプロビジョニングされていないことを示す第2の値(例えば、0)を有する2進値であってもよい。システムがIoTデバイス101をプロビジョニング/登録すると、上述したセキュリティ技術を使用してIoTサービス120とIoTデバイス101との間の通信が保護されるので、デバイスIDを使用することができる。
【0161】
一実施形態では、ユーザがIoTデバイスを販売するとき、ユーザは、IoTサービス120にログインし、ユーザアカウントからIoTデバイスを解放することによって、デバイスIDを解放することができる。新しいユーザは、次いで、本明細書に記載されるデバイスプロビジョニング技術を使用して、IoTデバイスをプロビジョニングし、IoTデバイスを自分のアカウントと関連付けることができる。
【0162】
本発明の一実施形態による方法が
図29に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0163】
2901において、(例えば、IoTデバイスが製造される工場で)デバイスIDとIoTデバイスの関連付けIDと関連付けが生成される。関連付けIDは、IoTデバイス上にスタンプされるバーコード/QRコード(登録商標)に埋め込むことができる。2902において、デバイスIDと関連付けIDとの関連付けは、IoTサービスに記憶される。2903において、ユーザは、新しいIoTデバイスを購入し、(例えば、アプリケーションを有するユーザのモバイルデバイス、若しくはそこにインストールされたアプリケーションを介して、又はバーコードリーダを有するIoTハブを介して)関連付けIDを含むバーコード/QRコード(登録商標)をスキャンする。
【0164】
2904において、関連付けIDは、IoTサービスに送信され、2905において、関連付けIDを使用して、デバイスIDを識別する。2906において、IoTデバイスは、デバイスIDを使用してプロビジョニングされる。例えば、IoTデバイスデータベースを更新して、この特定のデバイスIDがプロビジョニングされたことを示すことができ、IoTサービスは、IoTハブにデバイスIDを通信して、IoTハブに新しいIoTデバイスと通信するように指示することができる。
【0165】
モノのインターネット(IOT)システムのフロー制御を行うためのシステム及び方法
ローカル無線ネットワークトラフィックは、所与の場所内のIoTデバイスの数に基づいて増加する。更に、いくつかの例において、IoTデバイスは、IoTデバイスによって行われている機能を考慮して、適切であるよりも多くのデータを送信している場合がある。例えば、IoTデバイス上のソフトウェア/ハードウェアは、故障する場合があり、又はIoTデバイスは、ハッキングされる場合があり、IoTに、不要なデータをIoTサービスに連続的に送信させる。
【0166】
本発明の一実施形態は、特定のIoTデバイスが指定されたデータ閾値に到達したときに、IoTハブでフロー制御を行って、データトラフィックを効果的に無視することによって、これらの問題に対処する。一実施形態では、各IoTデバイスは、IoTデバイスが送信することを許可された期間にわたるデータの量を示す、指定されたフロー制御パラメータのセットにより構成される。フロー制御パラメータは、IoTデバイスの種類に基づくことができる。例えば、ドアロック及びサーモスタットなどの特定のIoTデバイスは、典型的に、データのショートパケットを定期的に送信するのみのはずであり、一方で、ビデオカメラなどの他のIoTデバイスは、潜在的に非周期的な方法で、かなり大量のデータを送信する場合がある。したがって、フロー制御パラメータは、問題のIoTデバイスの予想される動作に基づいて、十分な量の帯域幅を提供するように設定することができる。一実施形態では、各IoTデバイスは、そのIoTデバイスのデータ要件に基づいて、特定のフロー制御「クラス」に割り当てられる。
【0167】
そのような実施形態を
図30に示すと、それは、フロー制御パラメータ3015、3031、3041の異なるセットによりそれぞれ構成された安全な無線通信モジュール2810、3030、3040を有する複数のIoTデバイス101~103を示す。一実施形態では、フロー制御パラメータは、各IoTデバイスが指定された期間にわたって送信することが予想されるデータの頻度及び/又は量(例えば、0.25メガバイト/時、50メガバイト/時、100メガバイト/日、10回の通信試行/日、など)を指定する。一実施形態では、フロー制御パラメータ3015、3031、3041は、IoTサービス120によって指定することができ、これは、例示したように、IoTデバイスデータベース2851内のデバイスあたりのフロー制御パラメータ3020のセットを管理するために、デバイス管理モジュール3021を含む。例えば、各IoTデバイスのデータ送信要件が決定されると、フローあたりの制御パラメータ3020を更新して、これらの要件を反映することができる。
【0168】
上述したように、一実施形態では、デバイスデータベース2851は、複数の異なるフロー制御「クラス」(例えば、視聴覚デバイス、温度デバイス、制御デバイス、セキュリティデバイスなど)のためのデータ送信要件を含む。新しいIoTデバイスは、システム内に導入されると、次いで、IoTデバイスの要件及び/又はIoTデバイスのタイプに基づいて、特定のフロー制御クラスと関連付けられる。
【0169】
デバイスごとのフロー制御パラメータ3020は、デバイスごとのフロー制御パラメータ3010のコピーをローカルデータベース内に記憶するためにフロー制御管理ロジック2811を含む、IoTハブ110に配信することができる。一実施形態では、フロー制御管理2811は、各IoTデバイス101~103から受信する、及び/又はそこに送信されるデータトラフィック量を監視することができる。データトラフィック量が指定された閾値(デバイスごとのフロー制御パラメータ3010によって示されるように)に到達した場合に、IoTハブ110は、ある期間にわたって送信を停止するようIoTデバイスに命令することができ、及び/又は単にIoTデバイスからトラフィックをブロックすることができる。
【0170】
特定のIoTデバイスが指定された閾値を超えるレベルで送信/受信している場合、これは、IoTデバイスが故障していることを示し得る。このように、一実施形態では、IoTサービス120は、コマンドを送信して、IoTデバイスをリセットすることができる。デバイスがそれでも閾値を超えるレベルで通信している場合、IoTサービス120は、パッチなどのソフトウェアの更新をIoTデバイスに送信することができる。更新されたソフトウェアがインストールされると、IoTデバイスは、新しいソフトウェアによってリセットされ、初期化される。加えて、IoTサービスからユーザデバイスに通知を送信して、IoTデバイスが故障していることをユーザに通知することができる。
【0171】
一実施形態では、IoTハブ110は、データ通信の閾値に到達している事実にも関わらず、特定のタイプのデータトラフィックを許容することができる。例えば、一実施形態では、IoTハブ110は、IoTデバイスがその閾値に到達している場合であっても、特定のタイプの「高優先度」の通知を許可する。例として、IoTデバイスがドアロック又はドア侵入検出器である場合は、一定の条件下で(例えば、住宅が監視されているとき)、IoTハブ110は、IoTデバイスが使用されているドアを誰かが開けたことを示すデータを渡すことができる。同様に、IoTデバイスが熱及び/又は煙検出器であった場合、IoTハブ110は、(例えば、温度が閾値に到達したので)アラーム状態を示すデータを渡すことができる。様々な他のタイプの「高優先度」の通知(例えば、潜在的に危険な状態を表すものなど)を、現在のフロー制御状態に関わらず、IoTハブ110によって渡すことができる。一実施形態では、これらの「高優先度」の通知は、下述するように、異なる属性を使用して識別される。
【0172】
本発明の一実施形態による方法が
図31に示されている。本方法は、上記のシステムアーキテクチャとの関連で実装され得るが、いかなる特定のシステムアーキテクチャにも限定されない。
【0173】
3101において、フロー制御パラメータが各IoTデバイスについて指定される。一実施形態では、IoTデバイスは、それと関連付けられたフロー制御パラメータの指定されたセットを有する、特定のIoTデバイス「クラス」に割り当てることができる。3102において、フロー制御パラメータは、IoTシステム内のIoTハブに記憶される。一実施形態では、各ハブは、すべてのIoTデバイスパラメータのサブセット(例えば、ローカルにプロビジョニングされたIoTデバイスのパラメータだけ)を記憶することができる。
【0174】
IoTハブが、特定のIoTデバイスが指定されたフロー制御パラメータの範囲外で動作していることを検出したと、3103において判定された場合、3104において、IoTハブは、一時的にIoTデバイスとの更なる通信を一時的に控える(例えば、IoTデバイスとIoTサービスとの通信をブロックする)。加えて、上述したように、IoTサービス及び/又はIoTハブは、IoTデバイスを再起動することによって、及び/又はソフトウェアの更新をIoTデバイスにインストールすることによって、問題を改善するための工程をとることができる。
【0175】
属性クラスを使用してモノのインターネット(IOT)デバイス及びトラフィックを管理するためのシステム及び方法
異なるIoTデバイスを使用して、所与の場所で異なる機能を行うことができる。例えば、特定のIoTデバイスを使用して、温度及び状態(例えば、オン/オフ状態)などのデータを収集し、このデータをIoTサービスに報告し返すことができ、それは、エンドユーザによってアクセスすることができ、及び/又は様々なタイプのアラート状態を生成することができる。この実装形態を可能にするために、本発明の一実施形態は、収集したデータ、システムデータ、及び異なるタイプの属性クラスを使用した他の形態のデータを管理する。
【0176】
図32は、シリアル周辺機器インターフェース(SPI)バスなどのシリアルインターフェース3216を通じてマイクロコントローラユニット(MCU)3215と通信する安全な無線通信モジュール3218を含む、IoTデバイスの一実施形態を例示する。安全な無線通信モジュール3218は、上述した技術を使用してIoTサービス120との安全な通信を管理し、MCU 3215は、プログラムコードを実行して、IoTデバイス101の特定用途向けの機能を行う。
【0177】
一実施形態では、様々な異なる種類の属性を使用して、IoTデバイスによって収集されるデータ、及びIoTデバイスに関連するシステム構成を管理する。特に、
図32に示される実施例では、属性は、アプリケーション属性3210、システム属性3211、及び優先度通知属性3212を含む。一実施形態では、アプリケーション属性3210は、IoTデバイス101によって行われる特定用途向けの機能に関連する属性を含む。例えば、IoTデバイスがセキュリティセンサを備える場合、アプリケーション属性3210は、ドア又は窓が開かれたかどうかを示す2進値を含むことができる。IoTデバイスが温度センサを備える場合、アプリケーション属性3210は、現在の温度を示す値を含むことができる。実質的に無制限の数の他の特定用途向けの属性を定義することができる。一実施形態では、MCU 3215は、特定用途向けのプログラムコードを実行し、特定用途向けの属性3210へのアクセスのみが提供される。例えば、アプリケーション開発者は、安全な無線通信モジュール3218、及びMCU 3215によって実行されるべき設計アプリケーションプログラムコードを有するIoTデバイス101を購入することができる。それ故に、アプリケーション開発者は、アプリケーション属性へのアクセスを有することが必要となるが、以下に説明する他のタイプの属性へのアクセスを有することは必要とならない。
【0178】
一実施形態では、システム属性3211は、IoTデバイス101及びIoTシステムのための動作及び構成の属性を定義するために使用される。例えば、システム属性は、ネットワーク構成の設定(例えば、上述したフロー制御パラメータなど)、デバイスID、ソフトウェアのバージョン、アドバタイジング間隔選択、(上述したような)セキュリティ実装形態の特徴、及びIoTデバイス101が安全にIoTサービスと通信することを可能にするために必要とされる様々な他の低レベルの変数を含むことができる。
【0179】
一実施形態では、優先度通知属性3212のセットは、それらの属性と関連付けられた重要度又は重大度のレベルに基づいて定義される。例えば、特定の属性が、温度値が閾値に到達している(例えば、ユーザがコンロを偶然にオンにしたままにしていたとき、又はユーザの自宅の熱センサをトリガーしたとき)などの危険な状態と関連付けられる場合、この属性は、優先度通知属性クラスに割り当てることができる。上述したように、優先度通知属性は、他の属性とは異なって処理することができる。例えば、特定の優先度通知属性が閾値に到達したときに、IoTハブは、IoTハブによって実装されている現在のフロー制御機構に関わらず、IoTサービスに属性の値を渡すことができる。一実施形態では、優先度通知属性はまた、IoTサービスをトリガーして、(例えば、潜在的に危険な状態をユーザに警告するために)ユーザへの通知及び/又はユーザの自宅又は会社内のアラーム状態を生成することもできる。
【0180】
図32に例示するように、一実施形態では、アプリケーション属性3210、システム属性3211、及び優先度通知属性3212の現在の状態は、IoTサービス120上のデバイスデータベース2851内に複製/ミラー化される。例えば、属性のうちの1つの変化がIoTデバイス101上で更新されたときに、安全な無線通信モジュール3218は、その変化をIoTサービス120上のデバイス管理ロジック3021に通信し、それに応答して、デバイスデータベース2851内の属性の値を更新する。加えて、ユーザが(例えば、所望の温度などの現在の状態又は条件を調整して)IoTサービス上の属性のうちの1つを更新したときに、属性の変化は、デバイス管理ロジック3021から安全な無線通信モジュール3218に送信され、次いで、その属性のローカルコピーを更新する。このようにして、属性は、一貫した様式でIoTデバイス101とIoTサービス120との間で維持される。属性はまた、IoTアプリケーションを有するユーザデバイス又はインストールされたアプリケーションを介して、及び/又は1つ以上の外部サービス3270によって、IoTサービス120からアクセスすることができる。上述したように、IoTサービス120は、アプリケーションプログラミングインターフェース(API)を公表して、様々な異なるクラスの属性へのアクセスを提供することができる。
【0181】
加えて、一実施形態では、優先度通知処理ロジック3022は、優先度通知属性3212に関連する通知の受信に応答して、ルールベースの動作を行うことができる。例えば、優先度通知属性が(例えば、ユーザがアイロン又はコンロをオンにしたままにしているなどの)危険な状態を示す場合、優先度通知処理ロジック3022は、ルールのセットを実装して、(例えば、可能であれば、デバイスに「オフ」コマンドを送信して)危険なデバイスをオフにしようと試みることができる。一実施形態では、優先度通知処理ロジック3022は、(例えば、ユーザが、危険なデバイスが「オン」の状態であるときに自宅を出たことを検出した場合)ユーザの現在の場所などの他の関連するデータを利用して、危険なデバイスをオフにするかどうかを判定することができる。加えて、優先度通知処理ロジック3022は、アラート状態をユーザのクライアントデバイスに送信して、ユーザに状態を通知することができる。様々な他のタイプのルールセットを優先度通知処理ロジック3022によって実装して、潜在的に危険な、又は別様に望ましくない状態に対処しようと試みることができる。
【0182】
また、
図32は、BTLE属性3205及び属性アドレス復号器3207の組を示す。一実施形態では、BTLE属性3205を使用して、
図19~
図20に関して上述したようなに読み出し及び書き込みポートを確立することができる。属性アドレス復号器3207は、各属性と関連付けられた一意的なIDコードを読み取って、どの属性を受信/送信しているのかを判定し、したがって、属性を処理する(例えば、属性が、安全な無線通信モジュール3218内のどこに記憶されているのかを識別する)。
【0183】
モノのインターネット(IOT)デバイスとの安全な通信チャネルを確立するためのシステム及び方法
A.偽装アドバタイジング
ある特定の例では、攻撃者が偽装IoTデバイスを使用して、定常状態(すなわち、送信するべきいかなるデータもない)実際のIoTデバイスと同じアドバタイジングデータをアドバタイズすることが可能であり得る。このアドバタイジングパケットが、実際の信号よりも強い信号を使用して送信された場合、実際のIoTデバイスに接続しようと決して試みないようにハブを制御することができる。ドアセンサの場合では、例えば、攻撃者は、次いで、検出されることなくドアを開けることができる。
【0184】
本発明の一実施形態では、各IoTデバイスは、すべてのIoTハブが利用可能になるそのアドバタイジングデータに暗号化シークレットを加えるので、それらは、実際のIoTデバイスと偽装IoTデバイスとを区別することができる。一実施形態では、暗号化シークレットは、システム属性として設定され、よって、最初にIoTサービスが利用可能になり、そこから、それは、SSL又は他の安全な通信プロトコルを使用して、各IoTハブに配信することができる。
【0185】
図33は、本発明の1つの実施形態によるIoTデバイス101、IoTサービス120、及びIoTハブ110によって行われる動作を例示する。IoTデバイスのブート時間において、IoTデバイス101がリンクされる前に、IoTデバイス101は、リンク要求フラグを有するIoTハブ110にアドバタイズし、要求フラグのセット及びシークレットバイトのセットを(リンク/接続が要求されていることを示す)0に接続することができる。次いで、IoTハブ又はクライアントデバイスとのリンクが作成される。リンクした後に、安全な無線通信モジュール3218のシークレット-カウンタ処理ロジック3310は、32バイトのマスターシークレット3322を生成し、それをシステム属性3211に設定して、(例えば、上述の属性同期技術を使用して)それをIoTサービス120が利用できるようにする。
【0186】
IoTサービス120は、次いで、SSL又は別のセキュリティプロトコルを通じて、IoTハブ110が利用可能なシークレットを作成することができる。シークレット/カウンタ処理ロジック3310は、32バイトのカウンタCOUNTER_1 3331を作成し、それを0に初期化する。シークレット/カウンタ処理ロジック3310は、32バイトのマスターシークレット3322を32バイトのCOUNTER_1 3331と組み合わせて使用して、32バイトの共有シークレット3340を作成する。一実施形態では、鍵付きハッシュメッセージ認証コード(HMAC)-SHA256を使用して、HMACの鍵としてマスターシークレットを使用し、また、データとしてCOUNTER_1を使用する共有シークレット3340を生成する。
【0187】
シークレット/カウンタ処理ロジック3310は、1バイトのカウンタCOUNTER_2 3332を作成し、それを0に初期化する。一実施形態では、HMAC生成ロジック3345は、共有シークレットを使用して、(例えば、SHA256を使用する)アドバタイジングフラグのHMAC 3312及びCOUNTER_2 3332を作成する。鍵は、32バイトの共有シークレット3340であり、データは、COUNTER_2 3332が続き、その後に32バイトに水増しするための連続したゼロが続く、アドバタイジングパケット3314からの製造業者データからなる32バイトである。一実施形態では、32バイトのバッファ3317が作成され、ゼロに設定される。バッファには、2バイトの製造業者ID、フラグ、デバイスID、プロトコルバージョンを含む製造業者データを含む、アドバタイジングパケット3314からデータをコピーする。また、現在のCOUNTER_2の値3332コピーする。HMAC生成ロジック3345は、鍵として共有シークレット3340を使用し、また、データとして32バイトのバッファ3317のコンテンツを使用して、HMAC 3312を作成する。
【0188】
一実施形態では、HMAC 3312のバイト26及び27は、アドバタイジングパケット3314内に配置され、そのすぐ後に、COUNTER_2の値3332が続く。シークレット/カウンタ処理ロジック3310は、次いで、別のシステム属性(例えば、タイマ属性)内で指定された頻度に基づいてタイマ3311を始動するように設定する。一実施形態では、この期間は、5分である。
【0189】
一実施形態では、タイマが始動すると、シークレット/カウンタ処理ロジック3310は、32バイトのCOUNTER_1を増加させ、32バイトのマスターシークレットを32バイトのCOUNTER_1と組み合わせて使用して、新しい32バイトの共有シークレットを作成する。シークレット/カウンタ処理ロジック3310は、1バイトのCOUNTER_2を増加させて、32バイトのバッファ3317を作成し、それをゼロに設定する。バッファには、2バイトの製造業者ID、フラグ、デバイスID、プロトコルバージョンを含む製造業者データ、及びCOUNTER_2の値をコピーする。HMAC生成ロジック3345は、鍵として共有シークレット3340を使用し、また、データとして32バイトのバッファ3317を使用して、HMAC 3312を作成する。HMACのバイト26及び27は、アドバタイジングパケット3314内に配置され、そのすぐ後に、COUNTER_2の値3332が続く。
【0190】
一実施形態では、アドバタイジングフラグが変化すると、シークレット/カウンタ処理ロジック3310は、1バイトのCOUNTER_2を増加させ、32バイトのバッファ3317を作成し、それをゼロに設定する。バッファ3317には、2バイトの製造業者ID、フラグ、デバイスID、プロトコルバージョンを含む製造業者データ、及びCOUNTER_2 3332をコピーする。HMAC生成3345、HMAC 3312は、鍵として共有シークレットを使用し、また、データとして32バイトのバッファを使用して作成される。HMAC 3312のバイト26及び27は、アドバタイジングパケット3314内に配置され、そのすぐ後に、COUNTER_2 3332が続く。
【0191】
本発明の一実施形態では、以下のセキュリティ処理動作がIoTハブ110上で行われる。IoTハブ110がIoTデバイス101のマスターシークレット3322及びCOUNTER_1 3331を受信すると、共有シークレット生成ロジック3350は、マスターシークレット及びCOUNTER_1(+又は-1)を使用して、IoTデバイス101の3つの共有シークレット3355を生成し、記憶する。ハブ110は、別のシステム属性内で指定された頻度(例えば、一実施形態では5分)に基づいてタイマ3351を始動するように設定する。タイマが始動すると、IoTハブ110は、COUNTER_1を増加させ、それ(+又は-1)をマスターシークレット3322と共に使用して、IoTデバイス101の3つの共有シークレット3355を生成し、記憶する。
【0192】
一実施形態では、ハブが初めて新しいデバイスを確認したときに、リンク及び接続要求ビットがアドバタイジングパケット3314内で設定されている場合は、シークレットバイトを無視し、ハブに接続する。シークレットバイトが正しくなく、かつリンク要求フラグがクリアであった場合、ハブは、セキュリティイベント報告モジュール3375を介して、サービスに対する不正な活動のフラグを立てる。IoTハブ110は、周辺機器用の共有シークレットを有しない場合、マスターシークレット3322及びCOUNTER_1 3331の値を受信するまで、周辺機器を無視する。IoTハブがIoTデバイスの共有シークレットを有する場合、HMAC生成ロジック3360は、共有シークレット3355並びにフラグ及びCOUNTER_2 3332(アドバタイジングパケット3314から)に基づいて、3つのHMAC 3365を計算する。
【0193】
一実施形態では、生成された各HMACについて、HMAC分析ロジック3370は、アドバタイジングパケット3314内の最初の2バイトとシークレットバイトとを比較する。一致が見出されなかった場合、セキュリティイベント報告モジュール3375は、不正な活動をIoTサービス120に報告し、次いで、通知をエンドユーザのクライアントに送信することができる。
【0194】
一実施形態では、IoTハブは、シークレットバイトの変化(フラグ又はCOUNTER_2ではない)のみを確認したときに、COUNTER_1 3331を増加させ、共有シークレット3355を再生成し、タイマ3351を再始動する。HMAC生成ロジック3360は、新しいHMAC 3365を生成し、HMAC分析ロジック3370は、現在のアドバタイジングパケット3314に対する新しい結果をチェックする。一致しなかった場合、セキュリティイベント報告ロジック3375は、不正な活動をIoTサービス120に報告する。
【0195】
IoTハブ110がフラグ及び/又はCOUNTER_2 3332の変化を検出したときに、IoTハブは、現在のアドバタイジングデータ3314に対して現在の共有シークレット3355を比較する(例えば、HMAC分析モジュール3370によって分析されるべき新しいHMAC 3365を生成する)。現在の共有シークレットが失敗した場合、IoTハブは、COUNTER_1を増加させ、共有シークレット3355を再生成し、タイマ3351を再始動する。IoTハブは、次いで、現在のアドバタイジングデータ3314に対する新しい共有シークレット3355をチェックする。一致しなかった場合、セキュリティイベント報告モジュール3375は、不正な活動をIoTサービス120に報告する。
【0196】
B.偽装IoTハブ
誰かが偽装IoTハブを使用してIoTデバイスに接続することが可能であり得る。接続は、最終的にタイムアウトになるが、攻撃者は、IoTデバイスへの接続を保ち、実際のIoTハブから効果的に隠蔽することができる。
【0197】
図26A~Cに関して上述したように、一実施形態では、IoTデバイス101は、IoTハブ111に接続すると、確認することができる他のIoTハブ110、112に「接続不可能」であるとしてアドバタイズする。
図35に例示するように、一実施形態では、認証IoTハブ110、112がIoTデバイスアドバタイジングを「接続不可能」であると確認した場合は、(IoTハブ110及び112によって行った、IoTサービス120への報告によって示されるように)その状態をIoTサービス120に報告する。一実施形態では、IoTサービス120は、この情報を受信したときに、デバイスデータベース2851、又はデバイス/ハブ接続状態3400を維持する任意の他のデータベースを検索して、IoTデバイス101がどのIoTハブ111に接続されているのかを判定する。
図34では、IoTデバイス101は、IoTハブ111に接続され、例示したように、IoTサービス120にその接続状態を提供する。接続セキュリティモジュール3405は、デバイス/ハブ接続状態データ3400を評価して、IoTデバイス101が正当なIoTハブ111に接続されていることを判定する。
【0198】
対照的に、IoTデバイス101がいかなるIoTハブにも接続されていない場合、
図35に例示するように、接続セキュリティモジュール3405は、(例えば、クライアントデバイス611へのアラート通知の形態で)不正な活動を報告する。特に、この実施形態では、いかなる正当なIoTハブ110~112も、IoTデバイス101との接続を報告していない。それ故に、IoTデバイス101から「接続不可能」である表示を受信しているIoTサービス120に通信するIoTハブ110~112のうちの1つ以上に応答して、正当なIoTハブとの接続の欠如と組み合わせて、接続セキュリティモジュール3405は、偽装IoTハブ3500がIoTデバイス101に接続しているかもしれないと結論する。
【0199】
C.隠蔽イベント
攻撃者が、再度ドアを閉じるまでの十分な時間にわたって、ドア開放イベントのようなイベントがサービスに報告されることを阻止することができる場合、ユーザにはイベントが生じたと警報されない場合がある。
【0200】
本発明の一実施形態は、少なくとも2つの特徴を利用して、この問題に対処する。第1に、ドアセンサが接続されるという属性は、「ラッチされた」属性であると定義され、これは、サービスに属性値を送信するときに、状態の変化並びに現在の状態を常時報告する。これは、ドアが再度閉じられる場合であっても、ユーザが、ドアが開けられたという通知を受信することを確実にする。
図36は、ラッチされた属性3610が、MCU 3215及び/又は安全な無線通信モジュール3218によって維持され、最終的に、(例えば、接続が再確立された後に)IoTサービス120と同期する一実施形態を例示する。ラッチされた属性は、その機能を行っているセンサの現在の状態を示す現在の値3600を含む。例えば、ドアセンサの場合では、現在の状態は、「開放」又は「閉鎖」であり得る。加えて、各ラッチされた属性は、IoTサービス120との最後の同期、及び/又はIoTデバイス101が最後にリセットされたとき以降に生じた、状態変化3601の表示を含む。例えば、ドアが開けられ、次いで、IoTデバイス101がIoTサービス120と接続することができなかった間に閉じられた場合、この状態変化3601は、IoTデバイスに記憶され、次いで、接続が行われると、現在の値3600に関わらず、IoTサービス120に提供される。一実施形態では、ラッチされた属性は、IoTサービス120上の対応するラッチされた属性3610と同期していないことを示すために、ダーティフラグを含む。
【0201】
第2に、本発明の一実施形態では、ラッチされた属性について、IoTサービス120からの肯定応答が必要とされる。よって、IoTデバイス101が、接続の問題又は攻撃者による干渉のため、情報をIoTサービス120に提供することができない場合、IoTデバイス101は、IoTサービス120から肯定応答を正常に受信するまで、試行し続ける。一実施形態では、肯定応答は、特別なシステム属性上の設定動作の形態で行われる。IoTデバイス101が設定要求を受信したときにのみ、ラッチされた属性3610上のダーティフラグをクリアして、値を報告しようと試みることを中止する。
【0202】
様々な機能構成要素は、「ロジック」又は「モジュール」として本明細書に記載される。これらの機能構成要素は、集積回路などのハードウェア(例えば、特定用途向け集積回路、汎用プロセッサ、マイクロコントローラなど)であってもよい。代替的に、これらの機能構成要素は、処理デバイスによって、又はハードウェア及びソフトウェアの組み合わせを使用して実行されるソフトウェア内に実装することができる。
【0203】
本発明の実施形態は、上で説明した様々な工程を含み得る。本工程は、汎用又は特殊目的のプロセッサに本工程を実行させるために使用され得る、機械実行可能な命令において具現化することができる。代替的に、これらの工程は、工程を実行するためのハードワイヤードロジックを含む特定のハードウェア構成要素によって、又はプログラムされたコンピュータ構成要素及びカスタムハードウェア構成要素の任意の組み合わせによって、実行することができる。
【0204】
本明細書に記載される場合に、命令は、ある特定の動作を行うように構成されるか、又は所定の機能若しくはソフトウェア命令が非一時的コンピュータ可読媒体中に具現化されたメモリ内に記憶されている、特定用途向け集積回路(ASIC)などの、ハードウェアの特定の構成を指し得る。したがって、図面に示される技術は、1つ以上の電子デバイス(例えば、エンドステーション、ネットワーク要素など)上に記憶及び実行されるコード及びデータを使用して実装され得る。そのような電子デバイスは、非一時的コンピュータ機械可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、読み出し専用メモリ、フラッシュメモリデバイス、相変化メモリ)、並びに一時的なコンピュータ機械可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号などの電気的、光学的、音響的又は他の形態の伝搬信号)などのコンピュータ機械可読記憶媒体を使用して、コード及びデータを記憶及び(内部で及び/又はネットワークを介して他の電子デバイスと)通信する。加えて、そのような電子デバイスは、典型的に、1つ以上の記憶デバイス(非一時的機械可読記憶媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、及び/又はディスプレイ)、並びにネットワーク接続などの、1つ以上の他の構成要素に連結された1つ以上のプロセッサのセットを含む。プロセッサの組と他の構成要素との連結は、典型的には、1つ以上のバス及びブリッジ(バスコントローラとも呼ばれる)を通じて行われる。記憶デバイスとネットワークトラフィックを運ぶ信号のそれぞれは、1つ以上の機械可読記憶媒体及び機械可読通信媒体を表す。したがって、所与の電子デバイスの記憶デバイスは、その電子デバイスの1つ以上のプロセッサのセット上で実行するためのコード及び/又はデータを、典型的に記憶する。当然のことながら、本発明の実施形態の1つ以上の部分は、ソフトウェア、ファームウェア、及び/又はハードウェアの異なる組み合わせを使用して実装されてもよい。
【0205】
この詳細な説明全体を通じて、説明を目的として、本発明の完全な理解を提供するために、多数の特定の詳細を記載した。しかしながら、本発明は、これらの具体的な詳細の一部がなくても実施され得ることは、当業者にとって明らかであろう。ある特定の例では、既知の構造及び機能は、本発明の主題を不明瞭にすることを回避するために、詳述しなかった。したがって、本発明の範囲及び趣旨は、以下の特許請求の範囲の観点から判断されるべきである。
【手続補正書】
【提出日】2022-01-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システムであって、
ローカル無線通信チャネルを通じた複数のIoTハブとの通信を確立するための無線通信モジュールを備える、モノのインターネット(IoT)デバイスと、
前記IoTデバイスが接続可能であることを示す第1のアドバタイジングビーコンを、ユーザの前記複数のIoTハブに送信するためのアドバタイジング制御ロジックであって、
前記IoTデバイスが第1のIoTハブとの接続を確立した場合に、前記IoTデバイスが接続不可能であることを示す第2のアドバタイジングビーコンをIoTハブに送信し始め、前記第1のIoTハブ以外の前記IoTハブが、前記IoTデバイスの前記接続不可能な状態をIoTサービスに報告する、アドバタイジング制御ロジックと、
前記IoTハブのうちの1つ以上から前記接続不可能な状態を受信したときに、前記IoTデバイスが任意の既知のIoTハブに接続されているかどうかを判定するための、前記IoTサービスの接続セキュリティモジュールと、を備え、
前記接続セキュリティモジュールが、前記IoTデバイスが接続されている既知のIoTハブを識別することができなかった場合に、アラート状態が生成される、システム。
【請求項2】
前記第1のIoTハブが前記IoTデバイスとの前記接続を確立し、かつ/又は確立されたときに検出し、それに応答して、前記アドバタイジング制御ロジックを制御して前記第2のアドバタイジングビーコンを送信し始めるために、接続マネージャを更に備える、請求項1に記載のシステム。
【請求項3】
ユーザデバイス上で実行される、前記IoTサービスとの接続を確立するためのアプリケーションを更に備え、前記ユーザが、前記アプリケーションを介して入力を提供して、前記IoTサービスに、前記IoTデバイスに送信される前記コマンド及び/又はデータを生成させる、請求項2に記載のシステム。
【請求項4】
前記コマンドが、前記IoTデバイスからセンサ読取値に関連するデータを検索するための少なくとも1つのコマンド、又は前記IoTデバイスにパラメータを設定するための少なくとも1つのコマンドを含む、請求項3に記載のシステム。
【請求項5】
方法であって、
前記IoTデバイスが接続可能であることを示す第1のアドバタイジングビーコンを、IoTデバイスから、複数のIoTハブに送信することと、
前記IoTデバイスが第1のIoTハブとの接続を確立した場合に、前記IoTデバイスが接続不可能であることを示す第2のアドバタイジングビーコンをIoTハブに送信することであって、前記第1のIoTハブ以外の前記IoTハブが、前記IoTデバイスの前記接続不可能な状態をIoTサービスに報告する、送信することと、
前記IoTハブのうちの1つ以上から前記接続不可能な状態を受信したときに、前記IoTデバイスが任意の既知のIoTハブに接続されているかどうかを判定することと、を含み、
前記IoTデバイスが接続されている既知のIoTを識別することができなかった場合に、アラート状態が生成される、方法。
【請求項6】
IoTデバイスとIoTハブとの間の接続の接続状態を記憶するための、前記IoTサービス上のデータベースを管理することを更に含み、1つ以上のIoTハブから接続不可能な表示を受信したときに、前記接続セキュリティモジュールが、前記データベースに問い合わせる、請求項5に記載の方法。
【請求項7】
ユーザデバイス上で、前記IoTサービスとの接続を確立するためのアプリケーションを実行することを更に含み、前記ユーザが、前記アプリケーションを介して入力を提供して、前記IoTサービスに、前記IoTデバイスに送信される前記コマンド及び/又はデータを生成させる、請求項6に記載の方法。
【請求項8】
前記コマンドが、前記IoTデバイスからセンサ読取値に関連するデータを検索するための少なくとも1つのコマンド、又は前記IoTデバイスにパラメータを設定するための少なくとも1つのコマンドを含む、請求項6に記載の方法。
【請求項9】
方法であって、
モノのインターネット(IoT)デバイス及び/又はIoTサービス内で管理されるデータの複数の項目のそれぞれの属性を指定することであって、前記属性の少なくともいくつかが、現在の値を有するラッチされた属性、及びある期間にわたる前記ラッチされた属性に対する状態変化の表示を含む、指定することと、
IoTデバイスがある期間にわたって前記IoTサービスと接続できないときに、前記期間わたる前記ラッチされた属性に対して生じる任意の状態変化の表示を維持することと、
前記期間の後に、前記IoTデバイスと前記IoTサービスとの間に正常な接続を確立すると、前記IoTデバイスから前記IoTサービスに、前記ラッチされた属性の前記状態変化の表示を送信することと、
前記状態変化の表示を分析して、前記IoTサービス上のアラート状態を生成するかどうかを判定することと、を含む、方法。
【請求項10】
前記ラッチされた属性が、ドア又は窓センサと関連付けられ、前記状態変化が、前記ラッチされた属性の現在の値に関わらず、前記期間中に前記ドア又は窓が開かれたことを示す、請求項9に記載の方法。
【請求項11】
システムであって、
ネットワークを通じてIoTサービスに通信可能に連結された複数のモノのインターネット(IoT)デバイスを備え、
前記IoTデバイス及び前記IoTサービスが、データの複数の項目を管理し、属性が指定され、前記データの項目のそれぞれと関連付けられ、前記属性のうちの少なくともいくつかが、現在の値を有するラッチされた属性、及びある期間にわたる前記ラッチされた属性に対する状態変化の表示を含み、
IoTデバイスがある期間にわたって前記IoTサービスと接続できないときに、前記期間わたる前記ラッチされた属性に対して生じる任意の状態変化の表示を維持し、
前記期間の後に、前記IoTデバイスと前記IoTサービスとの間に正常な接続を確立すると、前記IoTデバイスから前記IoTサービスに、前記ラッチされた属性の前記状態変化の表示を送信し、
前記状態変化の表示を分析して、前記IoTサービス上のアラート状態を生成するかどうかを判定する、システム。
【請求項12】
前記IoTデバイスが、
特定用途向けプログラムコードを実行して、前記IoTデバイスの特定用途向け機能を実施するマイクロコントローラユニットと、
前記IoTサービスとの安全な無線通信チャネルを確立する安全な無線通信モジュールと、を備える、請求項11に記載のシステム。
【外国語明細書】