IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クリプトグラフィ リサーチ, インコーポレイテッドの特許一覧

特許7457173モノのインターネット(IOT)デバイスの管理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-18
(45)【発行日】2024-03-27
(54)【発明の名称】モノのインターネット(IOT)デバイスの管理
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240319BHJP
   G06F 21/44 20130101ALI20240319BHJP
   H04L 9/08 20060101ALI20240319BHJP
【FI】
H04L9/32 200B
G06F21/44
H04L9/08 F
【請求項の数】 15
【外国語出願】
(21)【出願番号】P 2023019200
(22)【出願日】2023-02-10
(62)【分割の表示】P 2019555755の分割
【原出願日】2018-06-14
(65)【公開番号】P2023053159
(43)【公開日】2023-04-12
【審査請求日】2023-02-16
(31)【優先権主張番号】62/521,130
(32)【優先日】2017-06-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】509285746
【氏名又は名称】クリプトグラフィ リサーチ, インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100126480
【弁理士】
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】ポシュエブ,デニス アレクサンドロヴィチ
(72)【発明者】
【氏名】ハンバーグ,マイケル エー.
(72)【発明者】
【氏名】ロハギ,パンカジ
(72)【発明者】
【氏名】カプーア,アミット
(72)【発明者】
【氏名】ウィットナー,ジョエル パトリック
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2014-517560(JP,A)
【文献】特表2003-525475(JP,A)
【文献】米国特許出願公開第2016/0285628(US,A1)
【文献】米国特許出願公開第2013/0111576(US,A1)
【文献】近藤毅, 上野正巳,IoT機器アクセス制御におけるTPMを用いた認証方式の提案,電子情報通信学会技術研究報告,Vol.116 No.45,2017年02月23日,pp.223-226
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/44
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
デバイスプロビジョニングサービスで、モノのインターネット(IoT)デバイスから、前記IoTデバイスをセキュアにプロビジョニングするためのメッセージであって、プロファイル識別子およびプロビジョニング要求を含む、メッセージを受信することと、
前記プロファイル識別子を使用してプロビジョニングポリシー情報を取得することと、
前記IoTデバイスを認証および承認するために、信頼のルート(RoT)認証サービスを決定することと、
前記デバイスプロビジョニングサービスによって、前記IoTデバイスを前記RoT認証サービスにリダイレクトして前記IoTデバイスを認証および承認するために、前記IoTデバイスにリダイレクト応答を送信することであって、前記リダイレクト応答は、前記IoTデバイスの認証に使用される暗号化されたポリシー識別子を含む、送信することと、
前記デバイスプロビジョニングサービスで、前記RoT認証サービスによって発行されたトークンを含むプロビジョニング要求を受信することと、
前記プロビジョニング要求および前記トークンを検証することと、
前記プロビジョニング要求および前記トークンが検証されると、前記デバイスプロビジョニングサービスによってプロビジョニング情報を前記IoTデバイスに送信することと、を含む、方法。
【請求項2】
前記プロビジョニング要求および前記トークンが検証されたときに、前記デバイスプロビジョニングサービスによって、前記IoTデバイスをIoTアプリケーションサービスに登録することと、をさらに含む、請求項1に記載の方法。
【請求項3】
前記デバイスプロビジョニングサービスによって、前記RoT認証サービスとセキュリティクレデンシャルを交換することと、
前記RoT認証サービスから認証方法のリストを取得することと、
前記リストから認証方法を選択することと、
前記認証方法にポリシー識別子を割り当てることと、
前記ポリシー識別子および前記認証方法を前記RoT認証サービスに送信することと、
前記RoT認証サービスとのセッションキーを確立することと、をさらに含む、請求項1に記載の方法。
【請求項4】
前記ポリシー識別子は、前記RoT認証サービスによって発行されたトークンに関する1つ以上の要件を定義する、請求項3に記載の方法。
【請求項5】
前記セキュリティクレデンシャルがメッセージ認証コード(MAC)を含む、請求項3に記載の方法。
【請求項6】
前記メッセージを受信することは、製造業者使用記述(MUD)ファイルに記述されたユニフォームリソースロケータ(URL)を受信することを含み、前記MUDファイルは前記プロファイル識別子を含む、請求項1に記載の方法。
【請求項7】
前記プロビジョニングポリシー情報から、前記RoT認証サービスによるIoTデバイスの認証に使用される認証方法を決定することであって、前記認証方法は識別ポリシー識別子を有する、決定することと、
前記リダイレクト応答のユニフォームリソースロケータ(URL)で前記識別ポリシー識別子をエンコードすることと、をさらに含む、請求項1に記載の方法。
【請求項8】
前記プロビジョニング要求内の前記トークンの形式が不明であることを決定することと、
前記RoT認証サービスに前記トークンを検証する要求を送信することと、
前記RoT認証サービスから検証応答を受信することと、をさらに含む、請求項1に記載の方法。
【請求項9】
前記プロビジョニング要求内の前記トークンにRoT属性が含まれていると決定することと、
前記トークンから前記RoT属性を抽出することと、
前記RoT認証サービスから追加のRoTセキュリティ属性を取得する要求を送信することであって、前記追加のRoTセキュリティ属性には、識別ポリシー識別子が含まれる、送信することと、
前記追加のRoTセキュリティ属性を検証することと、をさらに含む、請求項1に記載の方法。
【請求項10】
IoTアプリケーションへのアクセスをIoTデバイスに許可すべきかどうかをチェックするために、前記IoTアプリケーションサービスからアクセスチェック要求を受信することであって、前記アクセスチェック要求は、前記IoTデバイスのプロビジョニングされた情報を含む、受信することと、
前記プロビジョニングされた情報を使用して前記IoTデバイスのアクセスを検証することと、
前記デバイスプロビジョニングサービスによって、前記IoTアプリケーションサービスへの応答を送信することと、をさらに含む、請求項2に記載の方法。
【請求項11】
デバイスプロビジョニングサービスから信頼のルート(RoT)認証サービスで、トークンを発行するための要件を定義するプロビジョニングポリシー情報を受信することと、
前記RoT認証サービスで、モノのインターネット(IoT)デバイスから前記IoTデバイスを認証および承認するためにリダイレクトメッセージを受信することであって、前記メッセージは、前記プロビジョニングポリシー情報およびプロビジョニング要求を識別するために使用されるポリシー識別子を含む、受信することと、
前記プロビジョニングポリシー情報に従い、前記RoT認証サービスによって前記IoTデバイスを認証および承認することと、
前記IoTデバイスが認証および承認されたときにトークンを発行することと、
前記発行されたトークンで前記IoTデバイスにリダイレクト応答を送信することであって、前記リダイレクト応答は、前記IoTデバイスをセキュアにプロビジョニングするための要求をセキュアにプロビジョニングするためのプロビジョニング要求に発行されたトークンを使用して、前記IoTデバイスを前記デバイスプロビジョニングサービスにリダイレクトする、送信することと、を含む、方法。
【請求項12】
前記RoT認証サービスにより、前記デバイスプロビジョニングサービスとセキュリティクレデンシャルを交換することと、
認証方法のリストを前記デバイスプロビジョニングサービスに提供することと、
前記リストから1つの認証方法の選択を受信することと、
前記デバイスプロビジョニングサービスから前記ポリシー識別子および前記認証方法の割り当てを受信することと、
前記デバイスプロビジョニングサービスとのセッションキーを確立することと、をさらに含む、請求項11に記載の方法。
【請求項13】
前記ポリシー識別子は、前記RoT認証サービスによって発行されたトークンに関する1つ以上の要件を定義する、請求項12に記載の方法。
【請求項14】
前記セキュリティクレデンシャルがメッセージ認証コード(MAC)を含む、請求項12に記載の方法。
【請求項15】
前記リダイレクトメッセージを受信することは、識別ポリシー識別子でエンコードされたユニフォームリソースロケータ(URL)を受信することを含む、請求項11に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
セキュアなシステムおよびアプリケーションの必要性が高まっている。現在、セキュアな集積回路(IC)は、工場のフロアでセキュリティキーを使用してプログラムされることが多い。セキュアなキーは、例えば、保存されたデータの保護、デジタルコンテンツへのアクセスの制御、トランザクションで使用されるデータの暗号化/認証など、様々な方法で使用できる。これらのキーは、ワンタイムプログラマブルメモリに保存でき、このメモリには、キーを直接保持するか、様々な機能のキーを導出する暗号化機能で使用されるベースキーを保持できる。通常、セキュリティは、セキュリティで保護された施設でキーの読み込みプロセスを実行することにより提供される。モノのインターネット(IoT)デバイスおよびIoTアプリケーションの使用も増えている。IoTデバイスは、IoTアプリケーションサービスおよびIoTプラットフォームサービスに接続するためにクレデンシャルを必要とする。しかしながら、製造時にクレデンシャルを提供するために必要な機器および専門知識のために、製造時にこれらのクレデンシャルを提供することは困難である。また、IoTデバイスのコンピューティングリソースおよびストレージリソースは様々であり、多くの場合制限されている。
【図面の簡単な説明】
【0002】
本開示は、添付図面の図において、限定としてではなく、実施例として示されている。
【0003】
図1】一実施形態によるIoTデバイス管理(IDM)システムのシステム図を示す。
図2】一実施形態によるIDMシステムのデータフローシーケンスを示すフロー図である。
図3A】一実施形態による、信頼およびポリシー確立段階中のデバイスプロビジョニングサービスとRoT認証サービスとの間のデータフローシーケンスを示すフロー図である。
図3B】一実施形態による、デバイスプロビジョニング段階中のIoTデバイスとデバイスプロビジョニングサービスとの間のデータフローシーケンスを示すフロー図である。
図3C】一実施形態による、デバイスプロビジョニング段階の認証プロセス中のIoTデバイスとRoT認証サービスとの間のデータフローシーケンスを示すフロー図である。
図3D】一実施形態による、デバイスプロビジョニング段階のアクセスプロセス中のIoTデバイス、デバイスプロビジョニングサービス、およびRoT認証サービス間のデータフローシーケンスを示すフロー図である。
図3E】一実施形態による、デバイスプロビジョニング段階中のIoTデバイス、デバイスプロビジョニングサービス、ならびに証明書プロセスおよび登録プロセスのためのIoTアプリケーションサービス間のデータフローシーケンスを示すフロー図である。
図3F】一実施形態による、アプリケーションデータ段階中のIoTデバイス、デバイスプロビジョニングサービス、およびIoTアプリケーションサービス間のデータフローシーケンスを示すフロー図である。
図4】一実施形態による、IoTデバイス、RoT認証サービス、デバイスプロビジョニングサービス、およびIoTアプリケーションサービス間の相互作用のシーケンスを示すフロー図である。
図5】一実施形態による、IoTデバイス、RoT認証サービス、デバイスプロビジョニングサービス、ならびに認証およびアイデンティティサービスのためのIoTアプリケーションサービスの間で交換されるメッセージのシーケンスを示すフロー図である。
図6】一実施形態による、図5のシーケンスの関連するコンポーネントのそれぞれに対して実行される様々な動作を示すフロー図である。
図7】一実施形態による、IoTデバイス、RoT認証サービス、デバイスプロビジョニングサービス、およびIoTアプリケーションサービスの間で交換されるHTTPメッセージのシーケンスを示すフロー図である。
図8】一実施形態による、IoTデバイス、RoT認証サービス、デバイスプロビジョニングサービス、ならびに認証、アイデンティティ、およびデータ立証のためのIoTアプリケーションサービス間の相互作用のシーケンスを示すフロー図である。
図9】一実施形態によるpubDBベースのプロビジョニングプロセスのフロー図である。
図10】一実施形態による、図9のシーケンスの関連するコンポーネントのそれぞれに対して実行される様々な動作を示すフロー図である。
図11】一実施形態による署名PKIベースのプロビジョニングプロセスのフロー図である。
図12】一実施形態による、図11のシーケンスの関連するコンポーネントのそれぞれで実行される様々な動作を示すフロー図である。
図13】一実施形態による対称コアのTLS PKIベースのプロビジョニングプロセス1800のフロー図である。
図14】一実施形態による非対称コアのためのTLS PKIベースのプロビジョニングプロセス1900のフロー図である。
図15】一実施形態によるライブセキュリティチェックプロセスのフロー図である。
図16】一実施形態による、IoTデバイスをセキュアにプロビジョニングする方法のフロー図である。
図17】本明細書に記載の方法のいずれかが一実施形態に従って実行され得るコンピュータシステムの一実施形態の図である。
【発明を実施するための形態】
【0004】
本明細書の記載は、モノのインターネット(IoT)デバイス管理を対象とした技術について記載する。IoTデバイスは、アプリケーションサービス、プラットフォームサービスなどに接続するためにクレデンシャルを必要とする。しかしながら、必要な機器および専門知識のため、製造においてこれらのクレデンシャルを提供することは困難である。本明細書の記載は、この分野でこれらのIoTデバイスを一意に識別し、IoTデバイスにチャレンジし、IoTデバイス内にある暗号素材の知識を獲得し、IoTデバイスに独自の暗号素材の知識があることを確認するために使用できるIoTセキュリティサービス(ISS)インフラストラクチャである。IoTデバイスがそのアイデンティティの証拠を提供すると、クレデンシャルをそのIoTデバイスに与えて、プラットフォームサービス、アプリケーションサービスなどに接続できる。IoTデバイスは、一意のアイデンティティおよび暗号化キーを有する。ISSインフラストラクチャは、デバイス内の暗号化キーに関する知識を有する。IoTデバイスは、ISSインフラストラクチャのサーバの1つにメッセージを送信して、特定のプラットフォームサービスのクレデンシャルを要求できる。ISSインフラストラクチャのサーバは、そのIoTデバイスにチャレンジを送信できる。IoTデバイスは、キーを使用してチャレンジを計算し、応答で暗号計算をサーバに送信する。サーバは、チャレンジへの応答が正しいこと、およびそのアイデンティティとIoTデバイス内の暗号化キーの事前確認を検証する。チャレンジに対する応答が検証されると、サーバはプラットフォームのクレデンシャルをIoTデバイスに配布できる。
【0005】
以前は、エンドポイントをIoTドメインに登録する典型的なシナリオでは、手動登録が必要だった。手動登録プロセスでは、デバイス(例えば、IoTハブまたはプラットフォームデバイス)によってエンドポイントにケーブルを接続して、IoTデバイスのクレデンシャルを確立する必要があった。これを大規模に実行することは難しく、遠隔で実行することは不可能だった。本明細書で記載される実施形態は、IoTデバイスの登録を含むIoTデバイスの管理を、遠隔でかつより大規模に可能にする。
【0006】
一実施形態では、分散信頼ネットワークを確立するためのシステムは、ハードウェアまたはソフトウェアの信頼のルートを備えたデバイス、デバイスにアプリケーションを提供するアプリケーションサービス、およびデバイスの信頼のルートを直接知る信頼サービスのルートを有する。トラストサーバのルートは、アプリケーションサービスがデバイスの信頼ルートを直接知らなくても、デバイスとの信頼できる接続を確立できるように、アプリケーションサービスに認証サービスおよびセキュアなプロビジョニングサービスを提供する。直接的な知識は、デバイスのデバイス製造中にプロビジョニングされた1つ以上のキーに基づいている場合がある。直接的な知識とは、この情報がシステム自体以外の手段で受信されることを意味する。情報は、帯域外(空間における外部)または以前(時間における外部)で交換できる。
【0007】
図1は、一実施形態によるIoTデバイス管理(IDM)システム100のシステム図を示す。IDMシステム100は、IoTアプリケーションサービス108がIoTデバイス110のRoTを直接知らなくてもIoTデバイス110との信頼できる接続を確立できるように、認証サービス104およびデバイスプロビジョニングサービス106を提供する信頼のルート(RoT)サービス102を含む。IoTデバイス110のRoTは、ハードウェアRoT、ソフトウェアRoT、またはそれらの任意の組み合わせであり得る。RoTサービス102は、認証および承認ポリシーサーバ112(以下、「認証ポリシーサーバ112」)およびRoTアイデンティティサーバ114を含む。IoTデバイス110は、柔軟性のあるフロントエンドプロトコル101(認証および承認のためのAuthNおよびAuthZプロトコルとラベル付けされた)を使用して認証サービス104と通信することができる。一実施形態では、認証ポリシーサーバ112およびRoTアイデンティティサーバ114は、ハイパーテキスト転送プロトコルセキュア(HTTPS)などのフロントエンドプロトコル101から独立したバックエンドプロトコル103を使用して通信する。いくつかの実施形態では、フロントエンドプロトコル101はIoTデバイス110のステートを保持し、バックエンドプロトコルはステートレスである。フロントエンドプロトコル101は、IoTデバイス110に対するチップ製造業者のビジネス要件、通信プロトコル、および認証プロトコルを含むことができる。認証サービス104は、セキュリティと柔軟性のトレードオフとして2つのサーバ間で分割できる。RoTアイデンティティサーバ114を認証ポリシーサーバ112とは別のサーバとして置くことにより、柔軟性とセキュリティがあり得る。認証ポリシーサーバ112は、様々な種類のIoTデバイスとのプロトコル固有の通信に柔軟性を提供できるが、RoTアイデンティティサーバ114に保存されたセキュリティクレデンシャルは保護できる。例えば、RoTアイデンティティサーバ114は、保護される必要があるデバイスキーのデータベースを含むことができる。RoTアイデンティティサーバ114のデータベースへのアクセスは、IoTデバイス110によるRoTアイデンティティサーバ114へのより直接的なアクセスと比較して、RoTアイデンティティサーバ114によって保存されたセキュアなクレデンシャルを提供する前に、IoTデバイスを認証し、IoTデバイス110を承認する認証ポリシーサーバ112によって管理できる。実際、RoTアイデンティティサーバ114は、IoTデバイス110から隠されているとみなすことができる。他の実施形態では、認証ポリシーサーバ112およびRoTアイデンティティサーバ114は、単一のサーバに一緒に実装することができる。一実施形態では、フロントエンドプロトコル101は、IoTデバイス101に対するチップ製造業者のビジネス要件、デバイス間の通信に使用される通信プロトコル、およびIoTデバイス110を認証するために使用される認証プロトコルを含む。1つの認証ポリシーサーバ112および1つのRoTアイデンティティサーバ114が示されているが、他の実施形態では、認証サービス104は複数の認証ポリシーサーバおよび複数のRoTアイデンティティサーバ、またはそれらの任意の組み合わせを含むことができることに留意されたい。例えば、複数の認証ポリシーサーバがあっても、単一のRoTアイデンティティサーバ114がある場合がある。
【0008】
上記で記載したように、RoTサービス102は、デバイスプロビジョニングサービス106を含む。図示されるように、フロントエンドプロビジョニングポリシーサーバ116およびバックエンドプロビジョニングサーバ118は、デバイスプロビジョニングサービス106を提供することができる。IoTデバイス110は、プロトコル固有のフロントエンドプロトコル105(ラベル付きデバイスプロビジョニング)を使用して、フロントエンドプロビジョニングポリシーサーバ116と通信することができる。一実施形態では、フロントエンドプロビジョニングポリシーサーバ116およびバックエンドプロビジョニングサーバ118は、HTTPSなどのフロントエンドプロトコル105から独立したバックエンドプロトコル107を使用して通信する。デバイスプロビジョニングサービス106は、認証サービス104の認証ポリシーサーバ112およびRoTアイデンティティサーバ114のように、セキュリティと柔軟性のトレードオフとして2つのサーバ間で分割できる。プロビジョニングサーバ118をプロビジョニングポリシーサーバ116とは別のサーバとして配置することにより、柔軟性とセキュリティを確保できる。プロビジョニングポリシーサーバ116は、様々なタイプのIoTデバイスとのプロトコル固有の通信に柔軟性を提供できるが、プロビジョニングサーバ118はIoTデバイス110から隠すことができる。他の実施形態では、プロビジョニングポリシーサーバ116およびプロビジョニングサーバ118は、単一のサーバに一緒に実装することができる。1つのプロビジョニングポリシーサーバ116および1つのプロビジョニングサーバ118が示されているが、他の実施形態では、デバイスプロビジョニングサービス106は、複数のプロビジョニングポリシーサーバおよび複数のプロビジョニングサーバ、またはそれらの組み合わせを含むことができることに留意されたい。例えば、複数のプロビジョニングポリシーサーバがあっても、単一のプロビジョニングサーバ118がある場合がある。一実施形態では、フロントエンドプロトコル101は、ステートを保持し、バックエンドプロトコル103は、ステートレスである。一実施形態では、フロントエンドプロトコル105は、IoTデバイス101に対するチップ製造業者のビジネス要件、デバイス間の通信に使用される通信プロトコル、およびIoTデバイス110を認証するために使用される認証プロトコルを含む。フロントエンドプロトコル105はまた、IoTデバイス110を認証するために使用されるべきRoT認証サービスを識別してもよい。
【0009】
図1に示されるように、ポリシープロビジョニングサーバ116は、セキュアな接続109を介して認証ポリシーサーバ112(およびRoTアイデンティティサーバ114)と通信することができる。セキュアな接続109を介して、ポリシープロビジョニングサーバ116は、例えば、以下に記載するメッセージ認証コード(MAC)を提供することにより、セキュリティクレデンシャルを交換し、ポリシーを確立し、認証ポリシーサーバ112とセッションクレデンシャルを交換することができる。ポリシーは、IoTデバイス110をプロビジョニングするときの、および/またはIoTデバイス110をプロビジョニングしないときのルールまたは決定を含むことができる。
【0010】
上記のように、RoTサービス102は認証サービス104およびデバイスプロビジョニングサービス106を提供するため、IoTアプリケーションサービス108は、IoTデバイス110のRoTを直接知ることなく、IoTデバイス110との信頼できる接続を確立できる。IoTアプリケーションサービス108は、IoTアプリケーションをIoTデバイス110に提供するために、IoTアプリケーションゲートウェイ120およびIoTアプリケーションサーバ122を含む。IoTデバイス110は、プロトコル固有のフロントエンドプロトコル111(ラベル付きアプリケーションデータ)を使用してIoTアプリケーションゲートウェイ120と通信することができる。一実施形態では、IoTアプリケーションゲートウェイ120およびIoTアプリケーションサーバ122は、フロントエンドプロトコル111から独立したバックエンドプロトコル113を使用して通信することができる。本明細書に記載するように、アプリケーションデータはセキュアな接続を介して通信されるため、このバックエンドプロトコル113は必ずしもセキュアではない場合がある。あるいは、IoTアプリケーションゲートウェイ120およびIoTアプリケーションサーバ122は、HTTPSを使用して通信することができる。IoTアプリケーションゲートウェイ120は、IoT110がIoTアプリケーションサーバ122にアクセスできるかどうかを決定することができる。つまり、IoTアプリケーションゲートウェイ120は、IoTアプリケーションサーバ122がIoTアプリケーションサービス108をIoTデバイス110に提供する前に、IoTデバイス110を認証/承認することができる。実際には、IoTアプリケーションサーバ122は、IoTデバイス110から隠されているとみなすことができる。他の実施形態では、IoTアプリケーションゲートウェイ120およびIoTアプリケーションサーバ122は、単一のサーバに一緒に実装することができる。1つのIoTアプリケーションゲートウェイ120および1つのIoTアプリケーションサーバ122が示されているが、他の実施形態では、IoTアプリケーションサービス108は複数のIoTアプリケーションゲートウェイおよび複数のIoTアプリケーションサーバを含むことができることに留意されたい。
【0011】
図1に示すように、IoTアプリケーションゲートウェイ120は、セキュアな接続115を介してプロビジョニングポリシーサーバ116(およびプロビジョニングサーバ118)と通信することができる。セキュアな接続115を介して、プロビジョニングポリシーサーバ116は、IoTデバイス110によって提示されるプロビジョニングされた情報を交換して、後述するようにIoTアプリケーションゲートウェイ120によってIoTデバイス110へのアクセスを許可すべきかどうかをチェックすることができる。
【0012】
認証サービス104は、認証サービスプロバイダーなどの第1のエンティティによって管理され得る。デバイスプロビジョニングサービス106は、IoTプラットフォームプロバイダなどの第2のエンティティによって管理され得る。IoTアプリケーションサービス108は、第3のエンティティによって管理され得る。場合によっては、認証サービス104およびデバイスプロビジョニングサービス106は、単一のエンティティで管理できる。場合によっては、デバイスプロビジョニングサービス106およびIoTアプリケーションサービス108は、単一のエンティティで管理できる。また、これらのサービスのサーバは複数のマシンに展開でき、別々の施設に配置することもできることに留意されたい。例えば、認証サービス104のサーバはセキュアなデータセンターに展開でき、デバイスプロビジョニングサービス106およびIoTアプリケーションサービス108のサーバはクラウドデータセンターに展開できる。
【0013】
別の実施形態では、IoTセキュア分析サービス130は、ISSインフラストラクチャのデータ分析のための情報を収集するために、認証サービス104、デバイスプロビジョニングサービス106、およびIoTアプリケーションサービス108のそれぞれと通信することができる。図1に示された実施形態では、IoTセキュア分析サービス130は、IoTアプリケーションゲートウェイ120、プロビジョニングサーバ118、およびRoTアイデンティティサーバ114と通信する。他の実施形態では、IoTセキュア分析サービスは、それぞれのサービス内の他のサーバと通信して、分析用のデータを収集することができる。
【0014】
いくつかの実施形態では、IoTデバイス110はハードウェアRoTを含む。他の実施形態では、IoTデバイス110はソフトウェアRoTを含む。一実施形態では、IoTデバイス110の暗号コア(セキュアなコアとも呼ばれる)は、ハードウェアまたはソフトウェアRoTへのアクセスを管理することができる。ユーザーがクレデンシャルを持っている代わりに、IoTデバイスは認証サービス104に保存されている属性を持っている。これらの属性はRoT属性と呼ばれ、1)セッションキー、2)シーケンス(入力は受け入れられる)、3)コンテナ(プログラム、コードなど)、4)派生キー、またはその任意の組み合わせが含まれる場合がある。認証サービス104は、デバイスプロビジョニングサービス106、ファームウェアアップデート、グループプライバシーアイデンティティなどの外部パーティに対するRoT属性の使用を承認することができる。一部の実施形態では、RoT属性はデータベースに保存される必要はないが、認証サービス104による要求に応じて生成され得る。RoT属性は、キーマテリアル、カーネルバージョンなどのデバイスメタデータ、またはその他の属性である。
【0015】
一実施形態では、認証ポリシーサーバ112は、暗号研究部(CRD)認証承認(AuthN/AuthZ)ポリシーサーバであり、第1の施設に配置することができる。本明細書で記載するように、認証ポリシーサーバ112は、AuthN/AuthZポリシーおよびトークン管理を担当することができる。認証ポリシーサーバ112は、トークンをIoTデバイス110(クライアント)に返し、RoTアイデンティティサーバ114を使用できる。認証ポリシーサーバ112を主に使用して、クライアント側のポリシーとプロトコルをRoTアイデンティティサーバ114の1つ以上のアプリケーションプログラミングインターフェース(API)のセットにマッピングすることができる。RoTアイデンティティサーバ114は、IoTデバイス110内のRoTセキュアコアのRoT属性を保存および管理する責任を負うことができる。例えば、対称キー暗号システムでは、RoTアイデンティティサーバ114は対称キーを保存できる。
【0016】
デバイスプロビジョニングサーバ106では、プロビジョニングポリシーサーバ116は認証ポリシーサーバ112と同様であり、IoTデバイス110のプロビジョニングポリシーを管理するフロントエンドサーバとして動作する。プロビジョニングポリシーサーバ116は、IoTデバイス110に関する情報をプロビジョニングするための特定のサーバへのフロントエンドとすることができる。例えば、プロビジョニングサーバ118は証明書を発行できる。プロビジョニングポリシーサーバ116は、プロビジョニングトークン要求の一部としてアクセストークンを期待でき、アクセストークンは認証ポリシーサーバ112によって発行されたはずである。プロビジョニングポリシーサーバ116は、潜在的にアクセストークンを使用して、関連付けられたRoTの他の属性を要求することができる。トークンおよび要求が有効な場合、プロビジョニングポリシーサーバ116は、IoTデバイス110にプロビジョニング情報を発行でき、サービスプロバイダープラットフォーム(例えば、デバイスプロビジョニングサービス106のオペレーター)に通知することもできる。これは、プロビジョニングサーバ118のAPIを介して行うことができる。プロビジョニングサーバ118は、デバイスクレデンシャルを取り消すための追加のAPIコールも含み得る。この場合、プロビジョニングポリシーサーバ116は、クレデンシャルを無効にするためにサービスプロバイダーに電話をかけることができる。プロビジョニングサーバ118は、認証(certificate)局に必要な情報をプロビジョニングする役割を担う。
【0017】
IoTアプリケーションサービス108において、IoTアプリケーションゲートウェイ120は、IoTデバイス110上のセキュリティステートに関連するIoTクライアントデータを取得し、IoTデバイス110をIoTアプリケーションサーバ122にリダイレクトする責任を負う。IoTアプリケーションゲートウェイ120はサーバとして示されているが、他の実施形態では、IoTアプリケーションゲートウェイ120は、IoTアプリケーションサーバ122またはIoTプラットフォームプロバイダによって提供されるAPIに統合されたルールのセットとして実装できる。IoTアプリケーションサーバ122は、有効な証明書を持つIoTデバイス110のみがIoTアプリケーションに接続できるように構成することができる。IoTアプリケーションサーバ122は、トランスポート層セキュリティ(TLS)を介したメッセージキューイングテレメトリトランスポート(MQTT)をサポートすることができる。あるいは、IoTアプリケーションサーバ122は、他の発行-購読メッセージプロトコルをサポートすることができる。IoTアプリケーションサーバ122は、メッセージブローカーを使用しても使用しなくてもよい。IoTアプリケーションサーバ122は、アプリケーションロジック用のユーザインターフェース(UI)とともにIoTアプリケーションデータを提供することを可能にすることができる。
【0018】
IoTセキュア分析サービス130では、サーバがデータの分析とデータの異常の報告を担当する。認証統計の提供に加えて、IoTセキュア分析サービス130を使用して、ポリシー決定またはポリシー決定の変更のためのビジネスロジックの入力または考慮事項となる異常および非クレデンシャルデータを検出できる。
【0019】
一実施形態において、クライアントソフトウェア開発キット(SDKまたは開発キット)は、IoTアプリケーションと相互作用するためのアプリケーションの作成を可能にするIoTデバイス製造業者またはIoTプラットフォームプロバイダに提供され得る。クライアントSDKは、サーバからダウンロードされたスクリプトを実行して特定のプロファイルまたはポリシーを実装する追加機能を備えた機能ベースのプラグインアーキテクチャを提供できる。プラグインは動的にすることができ、追加のプラグインはダウンロードできる。リソースの少ない一部のIoTデバイスには、すべてのプラグインが保存されない場合がある。プラグインは、ダウンロード可能な(認証用に署名された)動的スクリプト(埋め込みLuaなど)を介して結合できる。IoTデバイス110は、様々なAuthN/AuthZモデルをサポートする認証ライブラリを備えてもよい。これらのライブラリとプラグインは、例えば、Open IDプロトコルでは非常に小さくする必要がある場合がある。X.509証明書のプロビジョニングライブラリサポートも提供できるが、コンピューティングリソースの観点から、プロビジョニングライブラリは非常にシンプルで軽量である必要がある。例えば、IoTクライアントライブラリには、サードパーティベンダーまたはIoTプラットフォームプロバイダが提供するIoTクライアントライブラリを含めることができる。これらのIoTクライアントライブラリは、TLSでMQTTを使用できる。
【0020】
図2~3Fは、図1の様々なコンポーネント間のデータフローを示すデータフローシーケンス図である。データフローシーケンス図には、認証トークン要求、アイデンティティトークン、およびアクセストークンへの参照がある。認証トークン要求は、RoTアイデンティティサーバ114(例えば、オープンIoTアイデンティティ接続サーバ)からのトークンに対するクライアント要求(すなわち、IoTデバイス110)である場合がある。要求の範囲に応じて、RoTアイデンティティサーバ114はアイデンティティトークン、アクセストークン、またはその両方を返すことができる。アイデンティティトークンは、認証プロセスおよびプロトコルの結果を表す場合がある。アイデンティティトークンは、IoTデバイス110のRoTの識別子を含むことができる。アイデンティティトークンには、RoTに関する追加情報(例えば、デバイス、カーネル、オペレーティングシステムに関するメタデータ)と、RoTが認証サービスでどのように認証されるかの詳細を含めることができる。アクセストークンは、RoTに関するRoT属性であるリソースなど、リソースへのアクセスを許可できる。アクセストークンには、RoTに関する情報を含めることができる。情報は、IoTデバイス110、IoTデバイス110のカーネル、オペレーティングシステム(OS)などに関するメタデータとみなすことができる。外部サービスは、RoTに関する情報(メタデータ)を使用してRoT属性にアクセスする。
【0021】
図2~3Fに関して記載された実施形態は、IoT設定におけるデバイスクレデンシャルの初期の確立に対処するアプローチを対象とする。実施形態は、エンドポイントのタイプに関係なくセキュアなクレデンシャルの確立を統合することを対象としており、したがって、IoTデバイス間の大きな多様性のチャレンジに対処している。このアプローチは、IoTエンドポイントをセキュアなインフラストラクチャに最初に信頼して登録するというチャレンジに対処するように設計されており、IoT環境内のデバイス間でセキュアな通信が可能になる。
【0022】
図2は、一実施形態によるIDMシステムのデータフローシーケンス200を示すフロー図である。データフローシーケンス200は、信頼確立段階202、セキュアなデバイスプロビジョニング段階204、およびアプリケーションデータ段階206に分解される。信頼確立段階202の間に、デバイスプロビジョニングサービス106およびRoT認証サービス104は、セキュリティクレデンシャル201を交換し、ポリシー203を確立し、任意選択で通信チャネルを介してセッションクレデンシャル205を交換する。通信チャネルは、セキュリティで保護された通信チャネルでも、帯域外の通信チャネルでも、セキュリティを強化できる。確立されたポリシーは、IoTデバイス110をプロビジョニングするかどうか、IoTデバイス110を認証するかどうか、IoTデバイス110を承認するかどうかなどを決定するために使用される決定ロジックを含むことができる。
【0023】
セキュアなデバイスプロビジョニング段階204の間に、IoTデバイス110は、デバイスプロファイル情報207を伴う要求をデバイスプロビジョニングサービス106に送信する。デバイスプロファイル情報207は、製造業者使用記述(MUD)ファイルに記述されたユニフォームリソースロケータ(URL)を含むことができる。MUDファイルは、特定のデバイスと対話する方法を記述できる。MUDファイルにはプロファイル識別子を含めることができる。MUDファイルは、RoT認証サービスがIoTデバイスの特定のRoTの計算を持つように、使用するRoT認証サービスを指定することもできる。ブロック208で、デバイスプロビジョニングサービス106は、デバイスプロファイル情報207から、RoT認証サービス104によってIoTデバイス110を認証するために使用される認証方法を決定することができる。認証方法には、識別ポリシー識別子を関連付けることができる。また、ブロック208で、デバイスプロビジョニングサービス106は、リダイレクト応答209のURL内の識別ポリシー識別子をエンコードすることができる。デバイスプロビジョニングサービス106は、リダイレクト応答209をIoTデバイス110に送信して、選択されたポリシーで指定されているように、IoTデバイス110をRoT認証サービス104にリダイレクトする。例えば、リダイレクト応答209は、IoTデバイス110がRoT認証サービス104に接続するための接続ポイントを含むことができる。IoTデバイス110は、RoT情報をRoT認証サービス104に(すなわち、リダイレクト応答209内の指定された接続ポイントに)送信する。ブロック212で、RoT認証サービス104は、ポリシーを識別し、IoTデバイス110のアイデンティティを確立し、潜在的にトークン(例えば、アクセストークン)をIoTデバイス110に発行するためのポリシーの下で要件を決定する。RoT認証サービス104は、デバイスが正しいRoT情報を有するかどうかを評価し得る。RoT認証サービス104およびIoTデバイス110は、指定されたポリシーに従ってアイデンティティ213を確立し、ポリシーに従ってアイデンティティ213が確立されると、RoT認証サービス104はポリシーに従ってトークン215を発行する。RoT認証サービス104またはデバイスプロビジョニングサービス106は、チャレンジおよびMACを送信し、IoTデバイス100を検証するために応答を評価することができる。トークン215は、本明細書で記載されるように、アクセストークンまたは、アクセストークンとアイデンティティトークンとすることができる。次に、IoTデバイス110は、トークン217を伴うプロビジョニング要求をデバイスプロビジョニングサービス106に送信する。ブロック218で、デバイスプロビジョニングサービス106は、要求とトークンを検証する。デバイスプロビジョニングサービス106は、IoTアプリケーションサービス108にIoTデバイス110を登録または取り消すために、任意選択でメッセージ219をIoTアプリケーションサービス108に送信することができる。MUDファイルは、デバイスプロビジョニングサービス106がIoTデバイス110を登録すべきかどうか、ならびにデバイスプロビジョニングサービス106がIoTデバイス110を登録するために接続すべき場所など、どのIoTアプリケーションサービス108がIoTデバイス110を登録すべきかを指定することができる。IoTアプリケーションサービス108は、RoT認証サービスによって追加されるレジストリまたは登録サービスを提供して、特定のIoTデバイス110のクレデンシャルを認識し、IoTアプリケーションサービス108に通知することができる。ブロック218で、要求およびトークンが検証される場合、デバイスプロビジョニングサービス106は、プロビジョニング情報221をIoTデバイス110に発行する。
【0024】
アプリケーションデータ段階206の間、IoTデバイス110およびIoTアプリケーションサービス108は、プロビジョニング情報221を使用して、データ223を接続および交換する。
【0025】
IDMシステムのデータフローシーケンス200は、認証がIoTアプリケーションサービス108によってRoT認証サービス104に(および/またはデバイスプロビジョニングサービス106に関連して)委任されるため、委任認証システムとみなされ得る。
【0026】
図3Aは、一実施形態による、信頼およびポリシー確立段階302中のデバイスプロビジョニングサービス106とRoT認証サービス104との間のデータフローシーケンス300を示すフロー図である。信頼およびポリシー確立段階302の間、デバイスプロビジョニングサービス106およびRoT認証サービス104は、セキュリティクレデンシャル301を交換する。セキュリティクレデンシャル301は、デバイスプロビジョニングサービス106とRoT認証サービス104との間にセキュアな接続を確立するためのキー、MACなどを含むことができる。デバイスプロビジョニングサービス106およびRoT認証サービス104は、通信チャネルを介してセキュリティクレデンシャルを交換することができる。通信チャネルは、セキュアな通信チャネルにすることができる。セキュアな通信チャネルは、よりセキュアにするために帯域外通信チャネルにすることができる。デバイスプロビジョニングサービス106は、RoT認証サービス104から認証方法のリストを要求303することができ、RoT認証サービス104は、認証方法のリストで応答304することができる。例えば、IoTデバイスの特定のクラスでは、特定の認証方法を使用できるが、IoTデバイスの異なるクラスでは異なる認証方法を使用できる。リスト内の認証方法のそれぞれについて、デバイスプロビジョニングサービス106はループ305を使用して、認証方法のそれぞれを選択307し、それぞれにポリシー識別子を割り当てることができる。ポリシー識別子は、リダイレクト応答のURLで暗号化できる。各認証方法について、デバイスプロビジョニングサービス106は、ポリシー識別子309および認証方法のリストをRoT認証サービス104にアップロードすることができる。ポリシー識別子は、検証時にIoTデバイス311に返されるトークンの要件311も定義できる。デバイスプロビジョニングサービス106およびRoT認証サービス104は、セッションキー313を交換することもできる。
【0027】
図3Bは、一実施形態による、セキュアなデバイスプロビジョニング段階402中のIoTデバイスとデバイスプロビジョニングサービス106との間のデータフローシーケンス400を示すフロー図である。セキュアなデバイスプロビジョニング段階402の間に、IoTデバイス100は、デバイスプロファイル情報401(例えば、MUDに記述されたURL)をデバイスプロビジョニングサービス106に送信する。デバイスプロビジョニングサービス106は、プロファイル情報401のプロファイル識別子に基づいてプロビジョニングポリシー情報403を取得する。デバイスプロビジョニングサービス106は、どの識別ポリシーを要求405するかを決定し、リダイレクト応答407をIoTデバイス110に送信する。リダイレクト応答407は、認証に使用される暗号化されたポリシー識別子を含むURL(例えば、URL/Topic/…)でIoTデバイス110をRoT認証サービス104にリダイレクトすることができる。プロビジョニングポリシーは、デバイスとISSバックエンド間の完全な相互作用の結果として、どのような状況でデバイスに何をプロビジョニングするかを記載していることに留意されたい。識別ポリシーは、デバイスの認証方法をISSインフラストラクチャのバックエンドに記載する。例えば、デバイスのタイプに応じて、デバイスを認証する方法(複数のキーデータベースなど)がいくつかあるため、後者が必要である。
【0028】
図3Cは、一実施形態による、セキュアなデバイスプロビジョニング段階のRoT認証プロセス502中のIoTデバイスとRoT認証サービスとの間のデータフローシーケンスを示すフロー図である。IoTデバイス110は、RoT情報501をRoT認証サービス104に送信する(例えば、デバイスプロビジョニングサービス106からのリダイレクトで供給された接続ポイントを使用して)。ブロック503で、RoT認証サービス140は、適用されるポリシー識別子(URLで暗号化されている場合)を解読する。RoT認証サービス104は、チャレンジ507をIoTデバイス110に送信し、IoTデバイス110は、応答509をRoT認証サービス104に送り返す。ブロック511で、RoT認証サービス104は応答を検証する。RoT認証サービス104は、ポリシー識別子に関連付けられたポリシーで指定された各ポリシーについて、ループ505でチャレンジおよび応答を実行することができる。ループ505は、プロビジョニングポリシーサービスによって開始でき、RoT Authentication Service(別名RoTアイデンティティサーバ)に関連する。しかしながら、代替実施形態では、RoT認証サービスによってチャレンジを発行および検証することができる。このフローは示されていないが、より複雑になる可能性があり、基本的にはデバイス認証のチャレンジ/応答に基づいて同じトークン発行を実現できる。
【0029】
別の実施形態では、IoTデバイス110は、任意選択で、データ513をRoT認証サービス104に送信して、RoT属性を交渉、生成、または変更する。RoT認証サービス104は、データ515をIoTデバイス110に送り返し、許可される場合、ブロック517でRoT属性を生成または変更することができる。
【0030】
識別ポリシーが検証された後も認証プロセスを続行すると、RoT認証サービス104はブロック519でアクセストークンを生成する。別の実施形態では、ブロック521で、RoT認証サービス104は、任意選択でRoTアイデンティティトークンを生成することができる。RoT認証サービス104は、トークン523(ブロック519のアクセストークンおよびブロック521の任意選択のアイデンティティトークン)をIoTデバイス110に送信する。また、RoT認証サービス104は、リダイレクト応答525をIoTデバイス110に送信する。リダイレクト応答525は、IoTデバイス100をIoTアプリケーションサービス108にリダイレクトすることができる。
【0031】
図3Dは、一実施形態による、セキュアなデバイスプロビジョニング段階のアクセスプロセス602中のIoTデバイス、デバイスプロビジョニングサービス、およびRoT認証サービス間のデータフローシーケンスを示すフロー図である。アクセスプロセス602の間に、IoTデバイス110は、アクセストークンとともに要求601をデバイスプロビジョニングサービス106に送信することができる。一実施形態では、デバイスプロビジョニングサービス106は、トークン603を検証し、アクセストークンをRoT認証サービス104に送信する。RoT認証サービス104は、アクセストークン607を検証し、検証応答609をデバイスプロビジョニングサービス106に送信する。別の実施形態では、デバイスプロビジョニングサービス106は、アクセストークン611から属性を抽出し、RoT認証サービス104から追加のRoTセキュリティ情報を要求する要求613を送信する。RoT認証サービス104は、セキュリティ属性615へのアクセスをチェックし、RoTセキュリティ属性をデバイスプロビジョニングサービス106に送り返す。RoTセキュリティ属性には、ポリシー識別子を含める必要がある。アクセスプロセス602を続けると、デバイスプロビジョニングサービス106は、ポリシー識別子を含むセキュリティ属性619を検証する。
【0032】
図3Eは、一実施形態による、セキュアなデバイスプロビジョニング段階中のIoTデバイス110、デバイスプロビジョニングサービス106、ならびに証明書プロセスおよび登録プロセスのためのIoTアプリケーションサービス108間のデータフローシーケンスを示すフロー図である。デバイスプロビジョニングサービス106が要求703を送信し、IoTデバイス110から応答705を受信するループ701の一部として、証明書プロセス702、および任意選択の登録プロセス704が実行され得る。
【0033】
証明書プロセス702では、IoTデバイス110は、証明書要求707をデバイスプロビジョニングサービス106に送信することができる。デバイスプロビジョニングサービス106は、証明書要求を検証709し、証明書711をIoTデバイス110に送信する。しかしながら、デバイスプロビジョニングサービス106が証明書要求を検証しない場合、証明書711はIoTデバイス110に送信されない。
【0034】
登録プロセス704では、デバイスプロビジョニングサービス106は、IoTデバイス110またはその関連するアクセストークンを登録するために、要求713をIoTアプリケーションサービス108に送信する。IoTアプリケーションサービス108は、要求713に対してローカル登録715を実行する。登録プロセス704の一部として、IoTアプリケーションサービス108は、デバイスプロビジョニングサービス106に確認応答(ACK)717を送信することもできる。
【0035】
図3Fは、一実施形態による、アプリケーションデータ段階802中のIoTデバイス110、デバイスプロビジョニングサービス106、およびIoTアプリケーションサービス108間のデータフローシーケンスを示すフロー図である。アプリケーションデータ段階802の間に、IoTデバイス110は、プロビジョニング情報を伴う要求801を送信することにより、IoTアプリケーションサービス108と接続することができる。IoTアプリケーションサービス108は、要求を許可または拒否803することができる。IoTデバイス110は、後続のメッセージ805、809をIoTアプリケーションサービス108に送信し、IoTアプリケーションサービス108からそれぞれの応答807、811を受信することができる。IoTデバイス110がIoTアプリケーションサービス108へのアクセスが完了すると(例えば、IoTアプリケーションへのアクセスがもはやなくなると)、IoTデバイス110は、IoTアプリケーションサービスから切断する要求813を送信することができる。IoTアプリケーションサービス108は、確認応答815(ACK)を送信することができる。
【0036】
別の実施形態では、IoTアプリケーションサービス108は、アクセスチェック804を実行して、IoTデバイス110がブラックリストまたはホワイトリスト上にあるかどうかを判定することができる。一実施形態では、IoTアプリケーションサービス108は、プロビジョニングされた情報とともにデバイスプロビジョニングサービス106に要求817を送信する。デバイスプロビジョニングサービス106は、このIoTデバイス110がアクセス819を有するかどうかをチェックし、その結果821をIoTアプリケーションサービス108に送り返す。アクセスチェック804は、図示されるように、プルベースのモデルであり得る。あるいは、アクセスチェック804は、プッシュベースのモデルであり得る。
【0037】
いくつかの実施形態では、IoTデバイス110は暗号マネージャ(CM)コアを含み、CMコアデバイスと呼ばれる場合がある。CMコアは、デバイスのプロキシとして動作する場合がある。CMコアは、一連のコマンドを実行できるハードウェアコアである。シーケンスはデジタル署名され、および/または有効性の他の暗号化されたデモンストレーション(例えば、MAC)を運ぶことができ、CMコアはそれを検証してシーケンスの元の有効性を確認できる。これにより、シーケンスの配信に使用される通信チャネルが信頼できない場合でも、CMコアが受け入れるデータ(および実行する操作)を制御できる。一実施形態では、CMコアはCryptoManager(商標)コアである。CryptoManager(商標)コアは、機能のアクティブ化、構成管理、およびセキュアなキー管理の暗号化制御を提供するハードウェアコアである。CryptoManager(商標)コアは、システムオンチップ(SoC)デザインに統合でき、SoCメインバスにあるレジスタインターフェースを介してアクセスできる。モジュールは、命令とデータの両方を含むプログラムであり、その実行により、シーケンスがセキュアに構築される。シーケンスは、デリゲートアプライアンスデバイス内のハードウェアセキュリティモジュール(HSM)で実行されているモジュールによって生成され、CMコアによって消費されるバイナリデータであり得る。
【0038】
一実施形態では、CMコアは、本明細書で記載されるように、IoT識別ならびにRoT認証および承認を確立するために、それぞれのサービスでセキュアなトランザクション処理を提供してもよい。IoTデバイス110は、モバイルデバイス用のチップセットを生産するファブレス半導体ベンダー、モバイルインターネット接続デバイスを製造するシステムインテグレーター(OEM)、およびこれらのデバイスをワイヤレスネットワークに展開するモバイルネットワークオペレーター(MNO)などによって製造および/または管理できる。これらの企業は、デバイスまたはコンポーネントの製造の一部を、大量生産サイトなどのリモート製造施設を運営するサードパーティの製造業者に委託する場合がある。顧客の製造および通信システムのミッションクリティカルな部分として、インフラストラクチャの設計上の優先事項は高可用性および整合性である。様々なIoTデバイスおよびしばしば制限されるコンピューティングリソースを考えると、本明細書で記載する実施形態は、図1~3Fに関して上記で記載したRoTアイデンティティ、認証、および承認プロセスを使用して高可用性および整合性を提供し得る。一実施形態では、RoT認証サービス104(および関連するサーバ)は、マスターキーを保護し、IoTアプリケーションサービス108を用いたIoTデバイス110のインストール、構成、および動作を承認するエンティティとして機能することができる。各デバイスには、機密データを保管する金庫として、および機密データに関連するコマンドまたは操作を実行するためのプラットフォームとして動作できるHSMが含まれる場合がある。機密データは、トークン、キー、シリアル番号、デバイス固有の情報、ファームウェアなどであってもよい。
【0039】
記載の様々な部分は、コンポーネント、デバイス、またはサービスを論理エンティティとして参照していることに留意されたい。論理エンティティの内部構造が重要な場合がある。例えば、サービスには複数のサーバ、共有ファイルシステム、共有データベースなどが含まれる。サービスの内部が重要であり、これらの各サーバが論理エンティティとみなされるコンテキストでは、異なる操作を実行する可能性のある他のデバイスと区別するために、それぞれを個別のサーバデバイスと呼ぶ。各サーバまたはデバイスには、メインコンピューティングデバイス(例えば、プロセッサなど)と任意選択の組み込みHSMが含まれる。一部のIDおよびキーはHSM内に保存されるが、その他はデバイスのハードドライブに保存される。IDまたはキーの正確な位置は、本明細書で記載するように、その感度および実装の詳細に基づいて決定される。IDは、インフラストラクチャ内のコンポーネントを識別するために使用される。また、図2~3Fに関して上記で記載した様々なプロセスまたはデータフローは、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア、ファームウェア、またはそれらの組み合わせを備え得る処理ロジックによって実行され得ることに留意されたい。
【0040】
別の実施形態では、アプリケーションサービスに対してデバイスを認証するためのシステムは、a)暗号素材を保存するハードウェア/ソフトウェアの信頼のルートを持つデバイス、b)デバイス上の暗号素材と同じまたは同等の認証サービス(RoT認証サービス)、c)サービスへのアクセスを許可する前に異なるモードでデバイスを認証するアプリケーションサービス、を含む。認証サービスは、暗号素材を追加の属性セットに関連付ける。これらの属性には、セッションキー、シーケンス、信頼のハードウェアルートで実行可能なセキュリティで保護されたプログラム、派生キー、データとしてエンコードされたリモート関数呼び出し、およびその他のデータが含まれる。さらなる実施形態では、デバイスは、サービスにアクセスしたいアプリケーションサービスに接続し、アプリケーションサービスはデバイスをリダイレクトして、事前に交渉されたポリシーの下で認証サービスに対して認証する。さらなる実施形態では、認証サービスはセキュアなプロトコルを使用してデバイスを認証し、デバイスがポリシー属性を満たしていることを確認し、デバイスと認証サービスは同じことを証明するために信頼のルートを使用して属性を更新し、認証サービスはセキュアに戻る潜在的に複数のトークンを使用して、デバイスにアイデンティティをバインドしたり、情報にアクセスしたりする。属性情報は、トークンに直接エンコードするか、トークンを不透明な識別子として機能させて、アプリケーションサービスが後で属性を取得できるようにすることができる。アプリケーションサービスは、トークンがi)まだ有効であること(例えば、トークンに時間制限があるか、認証サービスでチェックバックが必要な場合がある)、ii)要求されたポリシー識別子の下で発行されたこと、iii)そのアプリケーションサービスに対してのみ有効であること、をチェックできる。アプリケーションサービスは、トークンを使用してデバイスのアイデンティティを確立し、要求されたサービスを提供するために必要な属性にアクセスする。アプリケーションサービスと認証サービスは、異なるエンティティによって運用される場合がある。
【0041】
本明細書では、IoT環境内のデバイス間のセキュアな通信を可能にする、IoTエンドポイントのセキュアなインフラストラクチャへの初期の信頼できる登録のチャレンジに対処するアプローチについて記載する。以下に記載するのは、IoT設定でのデバイスクレデンシャルの初期確立が提案されていることに対処するアプローチの様々な実施形態である。この設計の実施形態は、SoC製造などのライフサイクルの初期段階でのデバイスへのセキュリティクレデンシャルのプロビジョニングと、PKI(公開キーインフラストラクチャ)などのセキュリティインフラストラクチャにデバイスをセキュアに登録するためのこれらのデバイスのその後の活用に基づいている。インフラストラクチャには、認証サービスおよび委任認証スキームが含まれており、特に、デバイスのライフサイクルの様々な段階で様々な関係者に属する新しいクレデンシャルを確立できる。さらに、提案された設計は、エンドポイントの種類に関係なくセキュアなクレデンシャルの確立を統一することを目的としているため、IoTデバイス間の大きな多様性のチャレンジに対処している。
【0042】
図4~15は、IoTデバイスおよびIDMシステム(IoTインフラストラクチャとも呼ばれる)のデバイスとの相互作用のシーケンスを示すフロー図であり、認証、アイデンティティ、および証明の3つの使用例が含まれる。認証の使用例では、プロビジョニングサービスは認証サービスの助けを借りてデバイスの信頼性を検証できる。アイデンティティの使用例では、認証サービスはプロビジョニングサービスに一意のデバイスエイリアスを提供するか、デバイス自体が提供するエイリアスが他のデバイスによって複製されていないことを確認する。3つの使用例はすべて、図9に記載されている同じベースフローを使用できる。
【0043】
図4は、一実施形態による、IoTデバイス110、RoT認証サービス104、デバイスプロビジョニングサービス106、およびIoTアプリケーションサービス108間の相互作用のシーケンス900を示すフロー図である。デバイス間の相互作用をもたらす動作は、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア、ファームウェア、またはそれらの組み合わせを含むことができる処理ロジックによって実行され得る。シーケンス900は、IoTデバイス110からデバイスプロビジョニングサービス106のフロントエンドプロビジョニングポリシーサーバ116への初期要求901で開始することができる。フロントエンドプロビジョニングポリシーサーバー116は、初期要求901に応答してIoTデバイス110にリダイレクト応答を送り返すことにより、IoTデバイス110を認証ポリシーサーバ112にリダイレクトすることができる。IoTデバイス110は、リダイレクトに続いて、RoT認証サービス104の認証ポリシーサーバ112に認証要求903を送信することができる。認証ポリシーサーバ112は、認証要求903をRoTアイデンティティサーバ114に送信し、それに応じてアイデンティティトークンおよび任意選択のアクセストークンデータを受信する。認証ポリシーサーバ112は、アイデンティティトークン905および任意選択のアクセストークンデータをIoTデバイス110に送り返す。IoTデバイス110は、アイデンティティトークン907(および任意選択のアクセストークンデータ)をフロントエンドプロビジョニングポリシーサーバ116に送信する。ブロック909で、フロントエンドプロビジョニングポリシーサーバ116は、プロビジョニングサーバ118にプロビジョニング要求を送信する前にアイデンティティトークン907をチェックする。
【0044】
本明細書で記載するプロトコルは、OpenID接続(OIDC)プロトコルといくつかの類似点があるが、いくつかの点で異なることに留意されたい。例えば、使用されるプロトコルでは、アイデンティティトークンはIoTデバイスに使用され、ユーザーにもユーザーエージェントにも使用されない。それに基づいて、デバイスはデバイスプロビジョニングサービス106へのアクセスを試み、デバイスプロビジョニングサービス106は、デバイスを認証するために別のサービス(RoT アイデンティティサーバ114)を使用する。また、システム内の任意の場所の保持ステータスを除去する(または、不可能な場合は少なくとも最小化する)ようにも設計されている。特に、このプロトコルは両方向のノンスの交換を減らし、複数のデバイスからのメッセージの処理を簡素化する。ノンスはまだあるが、クライアントを介してサーバからサーバに送信される。特に、ノンスは、プロビジョニングポリシーサーバ116からIoTデバイス110に共有される。交換ごとにリプレイ保護を実行する場合、さらにいくつかのノンスが必要になる。IoTデバイスとバックエンドサーバー間のセキュアなトランスポートに依存することにより、通常はノンスの使用によって通常提供されるセキュリティ機能、つまりリプレイ保護が提供される。具体的には、このトランスポートはサーバ認証のTLSプロトコルである必要がある。識別(および認証)後、IoTデバイス110は、本明細書で記載されるように、TLS/DTSL(MQTT、HTTPなど)などの接続を介してデータ911をIoTアプリケーションサービス108と通信することができる。
【0045】
図5は、認証の使用事例とデバイスへのドメイン固有のアイデンティティの発行とを組み合わせた交換においてエンティティ間で交換されるメッセージを記載する。
【0046】
図5は、一実施形態による、IoTデバイス110、RoT認証サービス104、デバイスプロビジョニングサービス106、および認証およびアイデンティティサービスのためのIoTアプリケーションサービス108の間で交換されるメッセージのシーケンス1000を示すフロー図である。シーケンス1000は、プロビジョニングポリシーサーバ116が、IoTデバイス110(図示せず)からの最初の要求に応答してIoTデバイス110にリダイレクト応答1001を送信することで開始することができる。リダイレクト応答1001は、ノンス、タイムスタンプ(または他の時間情報、および事前共有キー(PSK)およびノンス/時間を含むメッセージ認証コード(HMACまたはhmac)のハッシュを含むことができる。PSKは、プロビジョニングポリシーサーバ116と認証ポリシーサーバ112との間で共有することができる。ノンスは、プロビジョニングポリシーサーバ116によって選択されたランダムな値であり得る。
【0047】
リダイレクト応答1001に応答して、IoTデバイス110は、認証ポリシーサーバ112に送信する認証要求1003を生成する。認証要求1003は、不変の信頼のルートIDであるRoT識別子(rotID)、チェックサム、ノンス、タイムスタンプ、およびHMACを含むことができる。チェックサム(chksum)は、派生ルートキー(rotKey)、rotID、ノンス、およびタイムスタンプで計算されたチェックサムである。rotKeyは、キーツリーを使用して派生する。キーツリーには、ベースキーおよびパスがある。パスは、ベースキーがrotKeyに変換される方法を定義する。チェックサムは、IoTデバイス110のCMコアからのhash1プリミティブおよびhash2プリミティブを使用して計算できる。同様に、MACはhash1プリミティブとhash2プリミティブの組み合わせにすることができる。より一般的には、キー付きMAC(HMAC)は同様の操作を実行できる。その考え方は、バックエンドと実際の一意のコア(RoT)キーを共有するのではなく、バックエンドがコアと対話するたびにソリューション固有のキーを導出できるということである。この派生は、一意のコアキーを定数でハッシュすることによって行われる。
【0048】
一実施形態では、認証要求1003は、以下のHTTPリダイレクトである。
POST/ProvisionMe?response_type=code&scope=authn
HTTP/1.1
Host:provisioner.iotProvider.com
Accept:application/json
{“DeviceData”:“AAEC...AwQFBgc=”}
【0049】
認証ポリシーサーバ112は、認証要求1003を受信し、認証要求1005としてRoTアイデンティティサーバ114に認証要求1003を送信する。RoTアイデンティティサーバ114は、認証応答1007で応答し、認証応答1007は、ノンス、タイムスタンプ、およびHMACを含む。認証ポリシーサーバ112は、認証応答1007を受信する。認証応答1007が認証要求1005を検証すると仮定すると、認証ポリシーサーバ112は、アイデンティティトークン(idToken)1009をIoTデバイス110に提供する。idTokenは、クレームと同様に、ノンス、タイムスタンプ、およびHMACを含め得る。立証データ(attData)には、その属性を説明するデバイスからのデータが含まれている場合があり、そのデータは、デバイス内の信頼のルートによって検証される。一方、クレームはデバイスの属性であり、バックエンド(RoT認証サーバ)によって提供および証明される。通常、クレームにはattDataが含まれるが、過去1時間にこのデバイスがバックエンドによって認証された回数など、他の情報が含まれることもある。ノンス、タイムスタンプ、HMAC、およびクレームはデジタル署名されている場合がある。IoTデバイス110は、アイデンティティトークン1009をアイデンティティトークン1011としてプロビジョニングポリシーサーバ116に提出する。一実施形態では、以下はアイデンティティトークンの実施例である。

“iss”:https://authn.rambus.com,
“sub”:“alias1234”,
“aud”:iotProvider1”,
“exp”:1311281970,
“iat”:1311280970,
“auth_time”:1311280969,
“amr”:“um:rambuscmv1”,
“nonce”:“AWFQ ...Gwcg=”,
“req_time”:1311280802,
“mac”:“AABc ... CQEfcg=”}
【0050】
プロビジョニングポリシーサーバ116は、ブロック1013でアイデンティティトークン1011を検証する。アイデンティティトークン1011を検証するために、プロビジョニングポリシーサーバ116は、相互認証されたセキュアなチャネル1015を介してプロビジョニングサーバ118と通信することができる。同様に、認証ポリシーサーバ112およびRoTアイデンティティサーバ114は、相互に認証されたセキュアなチャネル1017で通信できる。IoTデバイス110および認証ポリシーサーバ112は、一方向認証されたセキュアなチャネル1019を介して通信し、IoTデバイスおよびプロビジョニングポリシーサーバ116は、一方向認証されたセキュアなチャネル1021を介して通信する。プロビジョニングポリシーサーバ116は、相互認証されたセキュアなチャネル1023を介して認証ポリシーサーバ112と通信することができる。
【0051】
図5は、CMコアで実行されるシーケンスおよびバックエンドで実行されるモジュールに関する、認証フローおよびキャプチャ詳細に集中するための、バックエンドでのモジュールの展開、デバイスでのシーケンス、バックエンドコンポーネント間の信頼確立など、いくつかの予備操作を示していないことに留意されたい。さらに、1つのIoTデバイス110が図示および記載されているが、この単一のインフラストラクチャによってサービスされる複数のIoTデバイスがあることに留意されたい。
【0052】
図5に関して、この単純な構成は、トランスポート層(TLS)のセキュアなチャネルに依存して、リプレイ攻撃および中間者攻撃から保護し、不変ID(rotID)の機密性に依存している。デバイス上のアプリケーションにはシーケンスが含まれる場合があるが、バックエンドはこの単純な構成で単一のモジュールを使用する。IoTデバイス110内のCMコアへのチャレンジとして、デバイスプロビジョニングサービス106によって追加のシーケンスが使用され、応答が生成されてもよい。IoTデバイスとサービス間のTLSチャネルのセキュリティプロパティに依存しないセキュアな構成を以下に記載する。
【0053】
いくつかの実施形態では、この限られたセキュリティの観点から高レベルで、アプリケーションがプロビジョニングサービス106(例えば、1001)にアクセスしようとすると、アプリケーションは認証要求を必要とする対話を開始する(1003)。プロビジョニングポリシーサーバ116は、OpenID Connectサーバ(OIDCサーバ)であり得る認証ポリシーサーバ112へのリダイレクトで応答し、図5に示すように、事前共有キーを使用した、ノンス、時間、ノンスと時間のHMACなどのいくつかの追加データを送信する。その後、IoTデバイス110は、RoTおよびRoT内部計算の助けを借りて要求を生成する。例えば、IoTデバイス110は、動作を実行するためにCMコアによって実行されるコマンドのセットである静的シーケンスを使用して、CMコアの助けを借りて要求を提供することができる。シーケンスの実行後、プロビジョニングポリシーサーバ116(ノンス、時間、およびHMAC)から受信したデータに加えて、rotID(CMコアの識別子)とチェックサムを含む出力がCM コアによって生成されたアプリケーションによってOIDCサーバ(例えば、112)に転送される。これらのデータ項目は、認証ポリシーサーバ112によってRoTアイデンティティサーバ114にさらに転送され、そこでHSMモジュールが実行される。実行する前に、時間およびHMACが検証される。次に、rotIDを使用して、派生rotKey(特定のrotIDを持つデバイスに対応するコアとインフラストラクチャ間で共有されるキー)を検索する。派生rotKeyのこの値は、チェックサムを検証するためにモジュールによって使用される。それが完了すると、RoTアイデンティティサーバ114は認証ポリシーサーバ112に認証応答1007を返し、認証ポリシーサーバ112は認証パラメーターを記述するトークンを返す。このトークンは、OpenID Connectプロトコルで指定されているidTokenであり、特にデバイスのアイデンティティ(そのエイリアス)が含まれている。このトークンは、トークン付きJSON(jwt)としてフォーマットされ、プロビジョニングポリシーサーバ116によって検証される認証ポリシーサーバ112(AuthN&AuthZポリシーサーバ)の非対称キーによって署名できる。
【0054】
図6は、一実施形態による、図5のシーケンス1000の関連するコンポーネントのそれぞれに対して実行される様々な動作を示すフロー図である。ブロック1101でプロビジョニングポリシーサーバ116は、ノンスを生成し、タイムスタンプを記録し、PSKを使用してHMACを作成し、初期応答(リダイレクト応答)を送信する。ブロック1103でIoTデバイス110のアプリケーションは、ノンスおよびタイムスタンプをCMコアのバッファに送信し、シーケンスを実行してチェックサム結果を取得する。アプリケーションは、ブロック1103で、認証ポリシーサーバ112を介してRoTアイデンティティサーバ114に認証要求を作成して送信する。ブロック1105で、RoT識別サーバ114は、HMACを検証し、rotIDを使用して導出されたrotKeyをルックアップし、認証要求のチェックサムを検証する。RoT識別サーバ114はまた、認証応答を作成し、署名し、認証ポリシーサーバ112に送り返す。ブロック1107で、認証ポリシーサーバ112は認証要求を検証する。検証時に、認証ポリシーサーバ112は、アイデンティティトークンを作成し、署名し、IoTデバイス110のアプリケーションに送信する。IoTデバイス110でのアプリケーションは、アイデンティティトークンをプロビジョニングポリシーサーバ116に送り返し、ブロック1109で、アイデンティティトークンの署名を検証し、それ自体のポリシーに対して時間をチェックする。プロビジョニングポリシーサーバ116は、プロビジョニング操作も実行する。
【0055】
上記のフローでは、どのエンティティもステートを保持せず、要求または応答オブジェクトに完全にカプセル化されているため、セッション識別子(セッションID)の明示的な識別子は必要ないことに留意されたい。要求/応答オブジェクト自体は、URLエンコードされた文字列またはJSONオブジェクトで表される場合があることにも留意されたい。
【0056】
別の実施形態では、デバイスの認証に加えて、RoTアイデンティティサーバ114は、特定のIoTアプリケーションのコンテキスト内でのみ有効なデバイスに一意のアイデンティティを提供することができる。これは、デバイスが複数のサービスで同じIDを使用できないようにすることにより、デバイス/ユーザーのプライバシーを保護しながら、デバイスを追跡する必要がある場合に役立つ。さらに、プロトコルは不変のIDを漏らしてはならない。これらのIDは通常、RoT認証サービス104によって返されるIDトークンの「サブ」フィールドで提供される。代わりに、別の実施形態では、プライバシー保護構成では、この特定のアプリケーションのデバイスを表すエイリアスがIDトークンの「サブ」フィールドで使用される。
【0057】
図5~6は、論理的またはセキュリティの観点からコンポーネント間の相互作用を示し記載しているが、これらのメッセージはHTTPまたは同様のメカニズムを使用して交換できる。以下の図は、上記の交換をHTTPメソッドにマップしている。これらは、デバイスの観点から何が起こるかのみを記載し、デバイスに関係しない交換は含まない。また、プロビジョニングポリシーサーバ116と認証ポリシーサーバ112との間の交換のメカニズムは、展開前に事前共有キーを交換することを含む、様々なタイプのメカニズムであってもよい。
【0058】
図7は、一実施形態による、IoTデバイス110、RoT認証サービス104、デバイスプロビジョニングサービス106、およびIoTアプリケーションサービス108の間で交換されるHTTPメッセージのシーケンス1200を示すフロー図である。シーケンス1200について、IoTデバイス110は最初に要求1201をプロビジョニングポリシーサーバ116に送信する。要求1201は、デバイスデータを含み得る。プロビジョニングポリシーサーバ116は、第1のリダイレクト1203(リダイレクト1)をIoTデバイス110に送り返す。第1のリダイレクト1203は、プロビジョニングデータを含む。プロビジョニングデータは、ノンス、タイムスタンプ、HMAC(ノンス|時間)などのプロビジョニングトランザクションを支援するためにプロビジョニングポリシーサーバ116によって生成された値であってもよい。第1のリダイレクト1203に続いて、IoTデバイス110は、認証要求1205(リダイレクト1に続く)を認証ポリシーサーバ112に送信する。認証要求1205には、プロビジョニングデータ、立証データ、および承認データが含まれる。立証データは、アプリケーションによってIoTデバイス110の暗号化コア(例えば、CMコア)に転送される値であり、暗号化コアによって署名(MAC化)する必要がある。立証データは、公開キーまたは証明書署名要求(CSR)によって署名される場合がある。認証データは署名またはチェックサムであり、認証サービス104が要求デバイスを認証し、着信データを検証できるようにする。認証ポリシーサーバ112は、第2のリダイレクト1207(リダイレクト1)をIoTデバイス110に送り返す。第2のリダイレクト1207は、トークンと立証データを含む。第2のリダイレクト1207に続いて、IoTデバイス110は、要求1209(リダイレクト2に続く)をプロビジョニングポリシーサーバ116に送信する。要求1209には、トークンおよび立証データが含まれている。プロビジョニングポリシーサーバ116は、トークンおよび立証データをチェックする。プロビジョニングポリシーサーバ116は、プロビジョニングされたデータ(例えば、デバイスのアプリケーション証明書および他のアプリケーション関連データ)を含むHTTP応答1213をIoTデバイス110に送り返す。デバイスプロビジョニングサービス106およびRoT認証サービス104によって認証および承認されると、IoTデバイスは、TLS/DTLS(MQTT、HTTPなど)を介したセキュアな接続の使用など、IoTアプリケーションサービス108と通信することができる。
【0059】
以下の実施例は、図7に関して上記で記載したHTTPトランザクションである。
1.要求 1201:
POST/provisionMe?response_type=code&scope=authn
HTTP/1.1
Host:provisioner.iotProvider.com
Accept:application/json
{“DeviceData”:“AAEC...AwQFBgc=”}

2.リダイレクト1 1203:
HTTP/1.0 302 Found
Location:https://oidcserszer.com/provisionMe/
{“AuthChain”:“AQFA...EAwCBcg=”,
“nonce”:“BCXF..BCEwUxn=”,
“reqTime”:1311280969,
“hmac”:“AFBC..AAEwOnb=”}

3.リダイレクト1に続く 1205:
POST/provisionMe?response_type=code&scope=authn HTTP/1.1
Host:oidcserver.com
Accept:application/json
{“AttestationData”:“AAAw...ECQFBcg=”,
“AuthData”:“AAEC..AwQFBgc=”,
“nonce”:“BCXF..BCEwUxn=”,
“reqTime”:1311280969,
“hmac”:“AFBC..AAEwQnb=”}

4.リダイレクト2 1207:
HTTP/1.0 302 Found
Location:https://provisioner.iotProvider.com/provisionMe/token/(tokenID>
<Token>(以下に例)

5.リダイレクト2に続く 1209:
POST/provisionMe/token/(tokenID>HTTP/1.1
Host:provisioner.iotProvider.com
Accept:application/json
{“AttestationData”:“AAAw...ECQFBcg=”}

6.HTTPレスポンス 1213:
HTTP/1.0 200 OK
Content-Type:application/json
Content-Length:xxxx
{“Data:“AwQF...AAECBgc=”}
【0060】
上記で記載したように、第2のリダイレクト1207は、1つ以上のトークンを含む。トークンはアイデンティティトークンでも、トークンはアイデンティティトークンとアクセストークンでもよい。モジュールの出力、および結果のデータをアイデンティティトークン(idToken)および任意選択でアクセストークンに変換する方法に関して、いくつかの代替案がある。まず、出力は使用例に依存する。以下は、2つの使用例での2つの実施例の出力である。第1の実施例は、デバイスの認証のみが必要な場合である。第2の実施例は、立証データが含まれる。暗号化コアは、証明書署名要求を立証データとして提供できる。出力は認証の成功または失敗に依存することに留意されたい。成功した認証がRoTアイデンティティサーバ114によって完了した場合、以下の実施例1に示す形式などでアイデンティティトークンが発行される。認証に失敗した場合、エラーメッセージを送り返すことができる。あるいは、別のアプローチでは、デバイスまたはRoTアイデンティティサーバ114の外部のデバイスにエラーメッセージが返されない。エラーメッセージを送り返すことはシステムのロードに役立つが、エラーメッセージを送り返さないことはセキュリティに役立ち、攻撃者は失敗した認証試行について簡単に知ることができない。
【0061】
実施例1-認証のみの使用例:第2のリダイレクト1207に含まれるモジュール応答(モジュールによって返され、RoTアイデンティティサーバ114から認証ポリシーサーバ112に送信される)。
{“IdentityToken”:

“sub”:“alias1234”, /* デバイスのrotIDに基づいて選択されたエイリアス */
“auth_time”:1311280969, /* 認証の時間 */
“nonce”:“AWFQ...Gwcg=”, /* 要求からコピー */
“req_time”:1311280802, /* 要求からコピー */
“hmac”:“AABc...CQEfcg=” /* 要求からコピー */


トークンの内容(AuthNおよびAuthZポリシーサーバによって作成):
{“IdentityToken”:

“iss”:“https://authn.abc.com”,/* 発行者-特定のサーバの静的な値 */
“sub”:“alias1234”, /* 別名-モジュールによって与えられる */
“aud”:“iotProvider1”, /* オーディエンス-ソリューションの静的な価値 */
“exp”:1311281970, /* 以下のポリシーと認証時間(iat)に基づいて計算 */
“iat”:1311280970, /* トークンの発行時間 */
“auth_time”:1311280969, /* 認証の時間-モジュールによって与えられる */
“amr”:“urn:abc:cmv1”, /* 認証方法の参照-認証方法に基づく静的な値 */
“nonce”:“AWFQ...Gwcg=”, /* 要求からコピー */
“req_time”:1311280802, /* 要求からコピー */
“hmac”:“AABc....CQEfcg=” /* 要求からコピー */


トークン:
ヘッダー:
{“alg”:“ES256”,“enc”:“none”}.
{token(上からのクレームで)}.
signature
eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
cGxlLmNvbS9pc19yb290Ijp0cnVlfQ

dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
【0062】
上記のトークンは、エンコードされたトークンの形式の実施例であるが、現実的なデータは含まれていない。
【0063】
実施例2-認証および立証データの使用例:第2のリダイレクト1207に含まれるモジュール応答(モジュールによって返され、RoTアイデンティティサーバ114から認証ポリシーサーバ112に送信される)。
{“IdentityToken”:

“sub”:“alias1234”, /* デバイスのrotIDに基づいて選択されたエイリアス */
“auth_time”:1311280969, /* 認証の時間 */
“nonce”:“AWFQ...Gwcg=”, /* 要求からコピー */
“req_time”:1311280802, /* 要求からコピー */
“hmac”:“AABc...CQEfcg=” /* 要求からコピー */
},
“AccessToken”:

“attesetationData”:“AQEc....CfABcg=”, /* ベース64-エンコードされた立証データ、すなわちCSR */


トークンの内容(AuthNおよびAuthZポリシーサーバによって作成):
{“IdentityToken”:

“iss”:“https://authn.abc.com”,/* 発行者-特定のサーバの静的な値 */
“sub”:“alias1234”, /* 別名-モジュールによって与えられる */
“aud”:“iotProvider1”, /* オーディエンス-ソリューションの静的な価値 */
“exp”:1311281970, /* 以下のポリシーと認証時間(iat)に基づいて計算 */
“iat”:1311280970, /* トークンの発行時間 */
“auth_time”:1311280969, /* 認証の時間-モジュールによって与えられる */
“amr”:“urn:abc:cmv1”, /* 認証方法の参照-認証方法に基づく静的な値 */
“nonce”:“AWFQ...Gwcg=”, /* 要求からコピー */
“req_time”:1311280802, /* 要求からコピー */
“hmac”:“AABc....CQEfcg=” /* 要求からコピー */
},
“AccessToken”:

“attesetationData”:“AQEc....CfABcg=”, /* ベース64-エンコードされた立証データ、すなわちCSR */


トークン:
ヘッダー:
{“alg”:“ES256”,“enc”:“none”}.
{token(上からのクレームで)}.
signature
eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9

eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFt
cGxlLmNvbS9pc19yb290Ijp0cnVlfQ

dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
【0064】
上記のトークンは、エンコードされたトークンの形式の実施例であるが、現実的なデータは含まれていない。
【0065】
認証および識別サービスは有用であるが、他の実施形態では、インフラストラクチャはデータ立証機能も提供できる。この機能を使用すると、アプリケーションは、暗号化コアによって署名された公開キー(または証明書署名要求)をバックエンドで検証し、プロビジョニングポリシーサーバ116で検証することができる。この検証は、デバイスで実行されているアプリケーションに証明書を発行するためのポリシーとして使用できる。暗号コアは、与えられたデータにブラインド署名する場合があるが、このデータの署名は、図8のフローとシーケンスの詳細で示すように、証明書の発行の検証層を提供するのに依然として有用であることに留意されたい。
【0066】
図8は、一実施形態による、IoTデバイス110、RoT認証サービス104、デバイスプロビジョニングサービス106、および認証、アイデンティティ、ならびにデータ立証サービスのためのIoTアプリケーションサービス108間の相互作用のシーケンス1300を示すフロー図である。シーケンス1300は、プロビジョニングポリシーサーバ116が、IoTデバイス110からの最初の要求に応答してリダイレクト応答1301をIoTデバイス110に送信することで開始することができる(図示せず)。リダイレクト応答1301は、ノンス、タイムスタンプ(または他の時間情報、およびHMAC(PSK、ノンス|時間)を含み得る。上記で記載したように、PSKは、プロビジョニングポリシーサーバ116と認証ポリシーサーバ112との間の事前共有キーとすることができる。ノンスは、プロビジョニングポリシーサーバ116によって選択されたランダムな値であり得る。
【0067】
リダイレクト応答1301に応答して、IoTデバイス110は、認証ポリシーサーバ112に送信する認証要求1303を生成する。認証要求1303は、rotID、チェックサム、ノンス、タイムスタンプ、HMAC、および立証データ(attDataとラベル付けされた)を含むことができる。チェックサム(chksum)は、導出されたPADAK、rotID、およびデバイスデータ(Pub)で計算できる。PADAKは、他のキーを派生できるベース(またはルート)キーである。PADAKは、シリコンの製造中にプログラムできるが、最終顧客(例えば、OEM)が知られる前である。これらのデバイスは様々なOEMに配布できるため、デバイスとOEMに固有のPADAKに基づいて新しいキーが導出される。チェックサムを使用して、デバイスを認証し、デバイスデータ(Pub)を検証できる。Pubは、公開キーへの参照であり、公開キーは、通常、証明書署名要求の基礎となる立証データまたはデバイスデータの一部である。立証データは、アプリケーションによって暗号化コア(例えば、CMコア)に提供される追加データである。暗号化コアは、このデータを認証ポリシーサーバ112に送信する前に暗号化して署名する。この立証データは検証され、アクセストークンの一部としてパッケージ化される。そのようなデータの実施例は、プロビジョニングサーバ118による証明書発行の基盤として使用できるアプリケーションの公開キーである。一実装形態では、IoTデバイス110によって証明されるデータは、IoTアプリケーションとのセキュアなトランザクションに使用されるその公開キーである。IoTデバイス110によって証明される公開キーは、証明書を作成するために使用される。その証明書は、IoTアプリケーションとの相互認証されたトランスポート層セキュリティ(TLS)セッション中に使用される。データ1317(例えば、cert)にはこの公開キーが含まれている。RoT chksum計算でTLS公開キーを使用すると、このIoTデバイス110とこのデバイスのみがこの公開キーとそれに関連する秘密キーを持っているという証拠が得られる。
【0068】
認証ポリシーサーバ112は、立証データを伴う認証要求1303を受信し、認証要求1305としてRoTアイデンティティサーバ114に認証要求1303を送信する。認証要求1305は、立証データも含む。RoT識別サーバ114は、ノンス、タイムスタンプ、HMAC、および立証データを含む認証応答1307で応答する。認証ポリシーサーバ112は、認証応答1307を受信する。認証応答1307が認証要求1305を検証すると仮定すると、認証ポリシーサーバ112は、アイデンティティトークン(idToken)およびアクセストークン(accessToken)1309をIoTデバイス110に提供する。上記のように、アクセストークンは署名された立証データである場合がある。idTokenには、ノンス、タイムスタンプ、およびHMACが含まれる場合がある。ノンス、タイムスタンプ、およびHMACはデジタル署名されている場合がある。IoTデバイス110は、アイデンティティトークンおよびアクセストークン1309を、アイデンティティトークンおよびアクセストークン1311としてプロビジョニングポリシーサーバ116に提出する。
【0069】
プロビジョニングポリシーサーバ116は、ブロック1313でアイデンティティトークン1011を検証する。アイデンティティトークンを検証するために、プロビジョニングポリシーサーバ116は、相互認証されたセキュアなチャネル1015を介してプロビジョニングサーバ118と通信できる。ブロック1315で、プロビジョニングサーバ118は、証明書を発行するかどうかを決定する。プロビジョニングサーバ118が証明書を発行すると、プロビジョニングポリシーサーバ116は、証明書を含むデータ1317をIoTデバイス110に送り返す。同様に、認証ポリシーサーバ112とRoTアイデンティティサーバ114は、相互に認証されたセキュアなチャネルで通信できる。IoTデバイス110および認証ポリシーサーバ112は、一方向認証されたセキュアなチャネルを介して通信し、IoTデバイスおよびプロビジョニングポリシーサーバ116は、一方向認証されたセキュアなチャネルを介して通信する。
【0070】
いくつかの実施形態では、この限られたセキュリティの観点から高レベルで、アプリケーションがプロビジョニングサービス106(例えば、1301)にアクセスしようとすると、アプリケーションは認証要求を必要とする対話を開始する(1303)。プロビジョニングポリシーサーバ116は、認証ポリシーサーバ112へのリダイレクトで応答し、リダイレクトは、図8に示された追加のデータ、例えば、ノンス、時間、およびHMACを含む。続いて、IoTデバイス110は、静的シーケンスを使用して、CMコアの助けを借りて要求を生成する。シーケンスの実行後、プロビジョニングポリシーサーバ116(ノンス、時間、およびHMAC)から受信したデータに加えて、rotID(CMコアの識別子)とチェックサムを含む出力がCM コアによって生成されたアプリケーションによってOIDCサーバ(例えば、112)に転送される。出力には、立証データも含まれる。これらのデータ項目は、認証ポリシーサーバ112によってRoTアイデンティティサーバ114にさらに転送され、そこでHSMモジュールが実行される。実行する前に、時間およびHMACが検証される。次に、rotIDを使用して、派生rotKey(特定のrotIDを持つデバイスに対応するコアとインフラストラクチャ間で共有されるキー)を検索する。派生rotKeyのこの値は、チェックサムを検証するためにモジュールによって使用される。それが完了すると、RoTアイデンティティサーバ114は認証ポリシーサーバ112に認証応答1307を返し、認証ポリシーサーバ112は認証パラメーターを記述する2つのトークンを返す。1つのトークンは、OpenID Connectプロトコルで指定されたアイデンティティトークンである場合があり、これには、とりわけデバイスのアイデンティティ(エイリアス)が含まれる。このトークンは、トークン付きJSON(jwt)としてフォーマットされ、プロビジョニングポリシーサーバ116によって検証される認証ポリシーサーバ112(AuthN&AuthZポリシーサーバ)の非対称キーによって署名できる。他のトークンはアクセストークンである場合があり、アクセストークンには、デバイスプロビジョニングサービス106で検証できる署名付き立証データが含まれる。このデータの実施例としては、アプリケーションの公開キーがあり、これは、ブロック1315でプロビジョニングサーバ118による証明書発行の基盤として使用できる。
【0071】
上記の様々な実施形態は、デバイス上の信頼のルートが対称キーを使用するCMコアであると想定している。しかしながら、インフラストラクチャ内の様々なIoTデバイス(IoTエンドポイントとも呼ばれる)をIDMでサポートする必要がある。CMコアの実施形態で説明したように、入力検証だけでなく、pubDBベースのプロビジョニングとPKIベースのプロビジョニングを含む暗号コアのクレデンシャルとして、非対称キーを使用する暗号コアに依存する2つの代替案を以下に記載する。PKIベースのプロビジョニングでは、パーソナライズの結果はコア証明書である。この代替案は、コアがプロビジョニング公開キーインフラストラクチャ(PKI)の一部になるという点で、対称コアの実施形態に似ている。別の代替案であるpubDBベースのプロビジョニングでは、デバイスに非対称キーペアを有するが、証明書は有さない。代わりに、バックエンドには、デバイスの公開キーのデータベースがあり、そのID(rotID)によってインデックス付けされている。これは、キールックアップデータベースがある対称キーベースのプロビジョニングと、コアのクレデンシャルとして非対称キーがあるPKIベースのプロビジョニングのハイブリッドとみなすことができる。
【0072】
図9は、一実施形態によるpubDBベースのプロビジョニングプロセスのフロー図である。記載を簡単にするために、プロセス1400は、同様の参照番号で示されている図8の相互作用の同じシーケンス1300を使用する。この実施形態は、有用なプロビジョニングケースであるため、立証データを使用する。リダイレクト応答1301に応答して、IoTデバイス110は、認証ポリシーサーバ112に送信する認証要求1403を生成して送信する。認証要求1403は、rotID、署名、ノンス、タイムスタンプ、HMAC、および立証データ(attDataとラベル付けされた)を含む。署名はECDSA署名である場合があり、rotID、時間、およびデバイスデータ(Pub)上のデバイスの秘密キーを使用して計算される場合がある。署名は、上記で詳しく記載したように、デバイスを認証し、デバイスデータ(Pub)を検証するために使用される。シーケンス1300のように、立証データは、アプリケーションによって非対称暗号化コアに提供される追加データである。暗号化コアは、このデータを認証ポリシーサーバ112に送信する前に暗号化して署名する。この立証データは検証され、アクセストークンの一部としてパッケージ化される。そのようなデータの実施例は、プロビジョニングサーバ118による証明書発行の基盤として使用できるアプリケーションの公開キーである。
【0073】
認証ポリシーサーバ112は、立証データとデバイス証明書を含む認証要求1403を受信し、認証要求1305としてRoTアイデンティティサーバ114に立証データを有する認証要求1403を送信する。RoT識別サーバ114は、ノンス、タイムスタンプ、HMAC、および立証データを含む認証応答1307で応答する。認証ポリシーサーバ112は、認証応答1307を受信する。認証応答1307が認証要求1305を検証すると仮定すると、認証ポリシーサーバ112は、アイデンティティトークン(idToken)およびアクセストークン(accessToken)1309をIoTデバイス110に提供する。上記のように、アクセストークンは署名された立証データである場合がある。idTokenには、ノンス、タイムスタンプ、およびHMACが含まれる場合がある。ノンス、タイムスタンプ、およびHMACはデジタル署名されている場合がある。IoTデバイス110は、アイデンティティトークンおよびアクセストークン1309を、アイデンティティトークンおよびアクセストークン1311としてプロビジョニングポリシーサーバ116に提出する。
【0074】
図9の実施形態と図8の実施形態との間の主な違いは、非対称コアによって計算された署名のタイプであることに留意されたい。ここでは、対称コアの場合、署名は対称コア(例えば、CMコア)によって計算された独自のチェックサムであるのに対し、それはECDSAであると想定されている。
【0075】
図10は、一実施形態による、図9のシーケンスの関連するコンポーネントのそれぞれに対して実行される様々な動作を示すフロー図である。ブロック1501でプロビジョニングポリシーサーバ116は、ノンスを生成し、タイムスタンプを記録し、PSKを使用してHMACを作成し、初期応答(リダイレクト応答)を送信する。ブロック1503でIoTデバイス110のアプリケーションは、ノンスおよびタイムスタンプを非対称コアのバッファに送信し、非対称コアはシーケンスを実行して署名結果を取得する。例えば、署名結果は、ナンス、タイムスタンプ、およびHMACを使用して計算されるECDSA署名である。アプリケーションは、ブロック1503で、認証ポリシーサーバ112を介してRoTアイデンティティサーバ114に認証要求を作成して送信する。ブロック1505で、RoT識別サーバ114は、HMACを検証し、デバイスの公開キーのデータベースでコアの公開キーをルックアップし、それらのID(rotID)によってインデックス付けされる。RoT識別サーバ114はまた、認証要求の署名を検証する。RoT識別サーバ114はまた、認証応答を作成し、署名し、認証ポリシーサーバ112に送り返す。ブロック1507で、認証ポリシーサーバ112は認証要求を検証する。検証時に、認証ポリシーサーバ112は、アイデンティティトークン(および任意選択のアクセストークン)を作成し、署名し、IoTデバイス110のアプリケーションに送信する。IoTデバイス110でのアプリケーションは、アイデンティティトークンをプロビジョニングポリシーサーバ116に送り返し、ブロック1509で、アイデンティティトークンの署名を検証し、それ自体のポリシーに対して時間をチェックする。プロビジョニングポリシーサーバ116は、プロビジョニング操作も実行する。
【0076】
上記のフローでは、どのエンティティもステートを保持せず、要求または応答オブジェクトに完全にカプセル化されているため、セッション識別子(セッションID)の明示的な識別子は必要ないことに留意されたい。要求/応答オブジェクト自体は、URLエンコードされた文字列またはJSONオブジェクトで表される場合があることにも留意されたい。
【0077】
別の実施形態では、デバイスの認証に加えて、RoTアイデンティティサーバ114は、特定のIoTアプリケーションのコンテキスト内でのみ有効なデバイスに一意のアイデンティティを提供することができる。これは、デバイスが複数のサービスで同じIDを使用できないようにすることにより、デバイス/ユーザーのプライバシーを保護しながら、デバイスを追跡する必要がある場合に役立つ。さらに、プロトコルは不変のIDを漏らしてはならない。これらのIDは通常、RoT認証サービス104によって返されるIDトークンの「サブ」フィールドで提供される。代わりに、別の実施形態では、プライバシー保護構成では、この特定のアプリケーションのデバイスを表すエイリアスがIDトークンの「サブ」フィールドで使用される。pubDBベースのプロビジョニングでは、エイリアスはアプリケーションとそのクレデンシャルに関連付けられ、不変IDは公開キーを検索するためにバックエンドによって使用される。
【0078】
以下で記載するのは、PKIベースのプロビジョニングの2つのサブケースである。1つのサブケースは、図9~10に関して上で例示され記載されたpubDBベースのフローおよび処理と同様のフローおよび処理を使用する。すなわち、非対称コアはECDSAを使用してナンス、時間、HMAC、および立証データの署名を行っており、IoTデバイス110はその結果を認証ポリシーサーバ112に送信する。このサブケースは、図11~12に示すように、署名PKIベースのプロビジョニングプロセスと呼ばれる。別のサブケースは、コアで終端されたTLS接続を使用し、ホストデバイスから提供されたTLSに依存しないことである。これはセキュリティの観点からはより良い代替案であり得るが、デバイスのオペレーティングシステム(例えば、高レベルオペレーティングシステム(HLOS))は他のすべての場合のようにTLSエンドポイントではなくプロキシとして機能する必要があるため、より複雑な設計になる可能性がある。このサブケースは、図13~14に示すように、TLS PKIベースのプロビジョニングと呼ばれる。
【0079】
図11は、一実施形態による署名PKIベースのプロビジョニングプロセス1600のフロー図である。記載を簡単にするために、プロセス1600は、同様の参照番号で示されるように、立証データを含む図9の相互作用の同じシーケンス1400を使用する。リダイレクト応答1301に応答して、IoTデバイス110は、認証ポリシーサーバ112に送信する認証要求1603を生成して送信する。認証要求1603は、ノンスの署名、タイムスタンプ、HMAC、立証データ(attDataとラベル付けされた)、およびデバイス証明書(deviceCert)を含む。署名はECDSA署名であり得、ノンス、時間、HMAC、および立証データを使用して計算され得る。署名は、デバイスの認証およびデバイスデータ(Pub)の検証に使用される。シーケンス1400のように、立証データは、アプリケーションによって非対称暗号化コアに提供される追加データである。暗号化コアは、このデータを認証ポリシーサーバ112に送信する前に暗号化して署名する。この立証データは検証され、アクセストークンの一部としてパッケージ化される。そのようなデータの実施例は、プロビジョニングサーバ118による証明書発行の基盤として使用できるアプリケーションの公開キーである。
【0080】
認証ポリシーサーバ112は、立証データとデバイス証明書を含む認証要求1603を受信し、認証要求1605としてRoTアイデンティティサーバ114に立証データおよびデバイス証明書を有する認証要求1603を送信する。RoT識別サーバ114は、ノンス、タイムスタンプ、HMAC、および立証データを含む認証応答1307で応答する。RoT識別サーバ114は、デバイス証明書が信頼できる機関によって署名されていることを検証でき、その後、信頼できるデバイス証明書から公開キーを抽出できる。その後、デバイス証明書からの公開キーを使用して、認証応答(デジタル署名)を検証できる。概して、RoTアイデンティティサーバ114は証明書(対称キーまたは公開キーのデータベースと同様に)を使用してデバイスを認証できる。例えば、「製造証明書」および「アプリケーション証明書」がある。後者は、前者が提供する認証に基づいて発行できる。認証ポリシーサーバ112は、認証応答1307を受信する。認証応答1307が認証要求1305を検証すると仮定すると、認証ポリシーサーバ112は、アイデンティティトークン(idToken)およびアクセストークン(accessToken)1309をIoTデバイス110に提供する。上記のように、アクセストークンは署名された立証データである場合がある。idTokenには、ノンス、タイムスタンプ、およびHMACが含まれる場合がある。ノンス、タイムスタンプ、およびHMACはデジタル署名されている場合がある。IoTデバイス110は、アイデンティティトークンおよびアクセストークン1309を、アイデンティティトークンおよびアクセストークン1311としてプロビジョニングポリシーサーバ116に提出する。
【0081】
図11の実施形態と図9の実施形態との間の主な違いは、認証要求1603で送信される非対称コアおよびデバイス証明書によって計算された署名であることに留意されたい。
【0082】
図12は、一実施形態による、図11のシーケンスの関連するコンポーネントのそれぞれで実行される様々な動作を示すフロー図である。ブロック1701でプロビジョニングポリシーサーバ116は、ノンスを生成し、タイムスタンプを記録し、PSKを使用してHMACを作成し、初期応答(リダイレクト応答)を送信する。ブロック1703でIoTデバイス110のアプリケーションは、ノンスおよびタイムスタンプを非対称コアのバッファに送信し、非対称コアはシーケンスを実行して署名結果を取得する。例えば、署名結果は、ナンス、タイムスタンプ、およびHMACを使用して計算されるECDSA署名である。アプリケーションは、ブロック1703で、認証ポリシーサーバ112を介してRoTアイデンティティサーバ114に認証要求を作成して送信する。上記の認証要求には、デバイス証明書が含まれる。ブロック1705で、RoT識別サーバ114は、HMACを検証し、デバイス証明書を検証し、認証要求の署名を検証する。RoT識別サーバ114はまた、認証応答を作成し、署名し、認証ポリシーサーバ112に送り返す。ブロック1707で、認証ポリシーサーバ112は認証要求を検証する。検証時に、認証ポリシーサーバ112は、アイデンティティトークン(および任意選択のアクセストークン)を作成し、署名し、IoTデバイス110のアプリケーションに送信する。IoTデバイス110でのアプリケーションは、アイデンティティトークンをプロビジョニングポリシーサーバ116に送り返し、ブロック1709で、アイデンティティトークンの署名を検証し、それ自体のポリシーに対して時間をチェックする。プロビジョニングポリシーサーバ116は、プロビジョニング操作も実行する。
【0083】
上記のフローでは、どのエンティティもステートを保持せず、要求または応答オブジェクトに完全にカプセル化されているため、セッション識別子(セッションID)の明示的な識別子は必要ないことに留意されたい。要求/応答オブジェクト自体は、URLエンコードされた文字列またはJSONオブジェクトで表される場合があることにも留意されたい。
【0084】
上記の記載のように、TLS PKIベースのプロビジョニングでは、コアはTLSクライアントとして機能し、TLSセッション内のクライアント認証にデバイスの秘密キーおよび証明書を使用する。そのセッションが確立されると、図13で使用されるセキュリティ境界およびキーで記載されているような別の証明書のプロビジョニングを含む、アプリケーション層プロトコルをその上で実行できる。
【0085】
図13は、一実施形態による対称コアのTLS PKIベースのプロビジョニングプロセス1800のフロー図である。プロセス1800では、一部のデバイスは、ルートキー(rotKey)1812が格納されているIoTデバイス110のハードウェアセキュリティ境界1810、認証(certificate)局秘密キー(CApriv)1822が格納されるプロビジョニングサーバ118のハードウェアセキュリティ境界1820、ならびに、データベースラップキー(dbWrapKey)1832および派生ルートキー(drotkey)1834が格納されるRoTアイデンティティサーバ114のハードウェアセキュリティ境界1830、を含むハードウェアセキュリティ境界を有する。dbWrapKeyは、デバイスキーのデータベースを暗号化するために使用されるキーである。例えば、バックエンドが対称キーと関連するデバイスIDのデータベースを使用する場合、保管時に暗号化する必要がある。このために、dbWrapKeyが使用される。いくつかの実施形態では、RoTアイデンティティサーバ114は、キーデータベース1842が格納されるハードウェアセキュリティ境界1840を含む。
【0086】
記載を簡単にするために、プロセス1800は、同様の参照番号で示されるように、図5の相互作用の同じシーケンス1000を使用する。しかしながら、プロセス1800のシーケンスでは、以下で記載するようにTLSを使用する。例えば、プロビジョニングポリシーサーバ116および認証ポリシーサーバ112は、TLSキーペア1850を使用して相互認証されたセキュアなチャネル1023上で通信することができる。プロビジョニングポリシーサーバ116および認証ポリシーサーバ112は、事前共有キー(PSK)1852を交換することができる。同様に、認証ポリシーサーバ112およびRoTアイデンティティサーバ114は、TLSキーペア1850を使用して、相互認証されたセキュアなチャネル1017で通信できる。IoTデバイス110は、デバイスTLSキーペア1854を使用して、一方向認証されたセキュアなチャネル1019を介して認証ポリシーサーバ112と、一方向認証されたセキュアなチャネル1021を介してプロビジョニングポリシーサーバ116と、またはその両方と通信することができる。
【0087】
図14は、一実施形態による非対称コアのためのTLS PKIベースのプロビジョニングプロセス1900のフロー図である。プロセス1900では、一部のデバイスは、デバイス秘密キー1912およびIoTアプリケーション秘密キー1914が格納されるIoTデバイス110のハードウェアセキュリティ境界1910、ならびに、認証(certificate)局秘密キー(CApriv)1922が格納されるプロビジョニングサーバ118のハードウェアセキュリティ境界1920、を含むハードウェアセキュリティ境界を有する。RoT識別サーバ114は、ハードウェアセキュリティ境界内に格納される必要のない公開鍵データベース1942を格納できることに留意されたい。
【0088】
記載を簡単にするために、プロセス1900は、同様の参照番号で示されるように、図11の相互作用の同じシーケンス1600を使用する。しかしながら、プロセス1900のシーケンスでは、以下で記載するようにTLSを使用する。例えば、プロビジョニングポリシーサーバ116および認証ポリシーサーバ112は、TLSキーペア1950を使用して相互認証されたセキュアなチャネル1023上で通信することができる。プロビジョニングポリシーサーバ116および認証ポリシーサーバ112は、事前共有キー(PSK)1952を交換することができる。同様に、認証ポリシーサーバ112およびRoTアイデンティティサーバ114は、TLSキーペア1950を使用して、相互認証されたセキュアなチャネル1017で通信できる。IoTデバイス110は、デバイスTLSキーペア1954を使用して、一方向認証されたセキュアなチャネル1019を介して認証ポリシーサーバ112と、一方向認証されたセキュアなチャネル1021を介してプロビジョニングポリシーサーバ116と、またはその両方と通信することができる。
【0089】
上記に記載の認証、アイデンティティ、および立証サービスに加えて、必要に応じて、追加のセキュリティチェックがシステムによって実行できる。追加のセキュリティチェックの一実施例を図15に示す。
【0090】
図15は、一実施形態によるライブセキュリティチェックプロセス2000のフロー図である。記載を簡単にするために、ライブセキュリティチェックプロセス2000は、同様の参照番号で示されるように、図5の相互作用の同じシーケンス1000を使用する。IoTデバイス110がアイデンティティトークン1009をアイデンティティトークン1011としてプロビジョニングポリシーサーバ116に送信すると、プロビジョニングポリシーサーバ116はブロック1013でアイデンティティトークン1009を検証し、IoTデバイス110に追加のチャレンジ2013を発行できる。このチャレンジ2013は、IoTデバイス110の現在のステートに基づいて応答を生成する別の静的シーケンスである可能性がある。IoTデバイス110は、応答2015を計算し、それを検証のためにプロビジョニングポリシーサーバ116に送り返す。並行して、プロビジョニングポリシーサーバ116は、認証ポリシーサーバ112を介してRoTアイデンティティサーバ114に要求2017(getExpectedResponse)を送信し、認証ポリシーサーバ112を介してRoTアイデンティティサーバ114から期待される応答2019を受信することができる。プロビジョニングポリシーサーバ116は、期待される応答2019をIoTデバイス110から受信した応答2015と比較して、それらが一致するかどうかを確認することができる。それらが一致する場合、プロビジョニングポリシーサーバ116は、データ2021をIoTデバイス110に送信することができる。応答2015が期待される応答2019と一致しない場合、プロビジョニングポリシーサーバ116は、IoTデバイス110にエラー応答を送信することができる。あるいは、プロビジョニングポリシーサーバ116はエラー応答を送信しない。
【0091】
このライブセキュリティチェックでは、RoTアイデンティティサーバ114がIoTデバイス110のステートを保持する必要があることに留意されたい。例えば、RoT識別サーバ114は、モジュールを実行した後に期待される応答をキャッシュしなければならないだろう。
【0092】
別の実施形態では、証明書の登録をセキュアするのに役立つかもしれない暗号化コアへのデータ入力を立証することに加えて、スキームを修正して、暗号化コアとバックエンドサービスの間で共有できる対称キーを生成することができる。
【0093】
図16は、一実施形態による、IoTデバイスをセキュアなプロビジョニングする方法2100のフロー図である。方法2100は、ハードウェア(例えば、回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア、ファームウェア、またはそれらの組み合わせを備え得る処理ロジックによって実行され得る。方法2100は、デバイスプロビジョニングサービスの1つ以上のサーバで実行され得る。図16に戻って、方法2100は、ブロック2102で処理ロジックがモノのインターネット(IoT)デバイスからメッセージを受信し、IoTデバイスをセキュアにプロビジョニングすることから始まる。メッセージはプロファイル識別子を含む。処理ロジックは、プロファイル識別子を使用してプロビジョニングポリシー情報を取得し(ブロック2104)、IoTデバイスを認証および承認するための信頼のルート(RoT)認証サービスを決定する(ブロック2016)。処理ロジックは、IoTデバイスをRoT認証サービスにリダイレクトしてIoTデバイスを認証および承認するために、IoTデバイスにリダイレクト応答を送信する(ブロック2108)。リダイレクト応答には、IoTデバイスの認証に使用される暗号化されたポリシー識別子が含まれる場合がある。その後、処理ロジックは、RoT認証サービスによって発行されたトークンを含むプロビジョニング要求を受信する(ブロック2110)。処理ロジックは、プロビジョニング要求およびトークンを検証する(ブロック2112)。プロビジョニング要求およびトークンがブロック2112で検証されると、処理ロジックはプロビジョニング情報をIoTデバイスに送信し(ブロック2114)、方法2100は終了する。プロビジョニング要求、トークン、またはその両方がブロック2112で検証されない場合、処理ロジックはエラーメッセージを送信する(またはしない)(ブロック2116)ため、方法2100は終了する。
【0094】
さらなる実施形態において、処理ロジックは、ブロック2112でプロビジョニング要求およびトークンが検証されると、IoTデバイスをIoTアプリケーションサービスに登録する。場合によっては、トークン、デバイス、またはその両方を登録できる。IoTアプリケーションサービスはローカル登録を実行し、デバイスプロビジョニングサービスに確認応答(ACK)を送り返すことができる。
【0095】
さらなる実施形態では、処理ロジックは、セキュリティクレデンシャルをRoT認証サービスと交換する。処理ロジックは、RoT認証サービスから認証方法のリストを取得(または受信)する。認証方法は、IoTプラットフォームプロバイダによって指定されるなど、IoTデバイスの認証に使用されるプロセスである。処理ロジックは、リストから認証方法を選択し、認証方法のポリシー識別子を割り当てる。処理ロジックは、ポリシー識別子および認証方法をRoT認証サービスに送信する。処理ロジックは、RoT認証サービスおよびセッションキーを確立することもできる。一実施形態では、ポリシー識別子は、RoT認証サービスによって発行されたトークンに関する1つ以上の要件を定義する。別の実施形態では、セキュリティクレデンシャルはMACを含む。
【0096】
別の実施形態では、処理ロジックは、MUDファイルに記載されたURLを受信することによりメッセージを受信し、MUDファイルはプロファイル識別子を含む。さらなる実施形態では、処理ロジックは、プロビジョニングポリシー情報から、RoT認証サービスによってIoTデバイスを認証するために使用される認証方法を決定し、認証方法は識別ポリシー識別子を有する。処理ロジックは、リダイレクト応答のURLに識別ポリシー識別子をエンコードする。
【0097】
別の実施形態において、処理ロジックは、プロビジョニング要求内のトークンが未知の形式を有することを決定し、トークンをRoT認証サービスに検証する要求を送信し、RoT認証サービスから検証応答を受信する。別の実施形態では、処理ロジックは、プロビジョニング要求内のトークンがRoT属性を含むことを決定し、トークンからRoT属性を抽出する。処理ロジックは、RoT認証サービスから追加のRoTセキュリティ属性を取得する要求を送信し、追加のRoTセキュリティ属性には、識別ポリシー識別子が含まれる。処理ロジックは、追加のRoTセキュリティ属性を検証する。
【0098】
別の実施形態では、処理ロジックは、IoTアプリケーションへのアクセスがIoTデバイスに許可されるべきかどうかをチェックするために、IoTアプリケーションサービスからチェックアクセス要求を受信する。アクセス確認リクエストには、IoTデバイスのプロビジョニングされた情報が含まれる。処理ロジックは、プロビジョニングされた情報を使用してIoTデバイスのアクセスを検証し、IoTアプリケーションサービスに応答を送信する。
【0099】
上記で記載した様々な実施形態は、本明細書で記載したデバイスプロビジョニングサービスの1つ以上のサーバによって実行される動作に関するものであり得る。他の実施形態では、デバイスプロビジョニングサービス106のプロビジョニングポリシーサーバ116およびプロビジョニングサーバ118など、本明細書で記載されたデバイスの指定されたサーバによって他の方法が実行されてもよい。他の実施形態では、認証ポリシーサーバ112およびRoT識別サーバ114に関して上記で記載した動作を含む他の方法がRoT認証サービスによって実行されてもよい。同様に、本明細書で記載されたIoTアプリケーションゲートウェイ120およびIoTアプリケーションサーバ122を含む、IoTデバイス110、およびIoTアプリケーションサービス108によって他の方法が実行されてもよい。
【0100】
図17は、本明細書に記載の方法のいずれかが一実施形態に従って実行され得るコンピュータシステム2200の一実施形態の図である。コンピュータシステム2200は、プロセッサ2202、メインメモリ2204、ストレージメモリ2206、チップセット2208、1つ以上の周辺機器2210、ネットワークインターフェースデバイス2222を含むことができ、リムーバブルストレージデバイスインターフェース2203は、リムーバブルストレージデバイス2215と接続するように構成可能である。プロセッサ2202は、本明細書で記載された方法論のいずれかに従って命令2226(またはソフトウェア)を実行するように動作可能である。命令2226は、メインメモリ2204またはリムーバブルストレージデバイス2205に格納され、プロセッサ2202によって実行される命令を含むことができ、本明細書で記載された認証、アイデンティティ、立証、およびライブセキュリティチェックサービスに関する様々な操作を実行するために使用できる。一実施形態では、コンピュータシステム2200は、IoTデバイス110、認証ポリシーサーバ112、RoTアイデンティティサーバ114、プロビジョニングポリシーサーバ116 プロビジョニングサーバ118、IoTアプリケーションゲートウェイ120、IoTアプリケーションサーバ122、またはIoTセキュア分析サービス130の任意のデバイスのような、図1のIDM100のデバイスのいずれか1つ以上を表す。
【0101】
コンピュータシステム2200は、場合によっては、(例えば、ネットワークされた)LAN、イントラネット、エクストラネット、またはインターネット内の他のマシンに接続されてもよい。コンピュータシステム2200は、クラウド内のホスト、クラウドプロバイダーシステム、クラウドコントローラ、サーバ、クライアント、または他のマシンであり得る。コンピュータシステム2200は、クライアントサーバネットワーク環境のサーバまたはクライアントマシンの容量で、またはピアツーピア(または分散)ネットワーク環境のピアマシンとして動作することができる。マシンは、パーソナルコンピュータ(PC)、タブレットPC、コンソールデバイスまたはセットトップボックス(STB)、携帯情報端末(PDA)、携帯電話機、ウエブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、もしくはそのマシンが実行するアクションを指定する(一連のまたはそれ以外の)命令セットを実行する。さらに、単一のマシンのみが示されているが、「マシン」という用語は、本明細書で記載する方法論の1つ以上を実行する1つの命令セット(または複数のセット)を個別または共同で実行するマシン(例えば、コンピュータ)の集合体も含むものとする。
【0102】
コンピュータシステム2200は、バス2230を介して互いに通信するプロセッサ2202(例えば、ホストプロセッサまたは処理装置)、メインメモリ2204(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM))、ストレージメモリ2206(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびセカンダリメモリ2218(例えば、ドライブユニットの形式のデータストレージデバイスであり、これには、固定または取り外し可能なコンピュータ可読ストレージメディアが含まれる場合がある)を含む。
【0103】
プロセッサ2202は、マイクロプロセッサ、中央処理装置などの1つ以上の汎用処理デバイスを表す。より具体的には、プロセッサ2202は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサであり得る 。プロセッサ2202は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理装置であってもよい。
【0104】
一実施形態では、プロセッサ2202は第1の集積回路上に存在してもよく、メインメモリ2204は第2の集積回路上に存在してもよい。例えば、集積回路は、ホストコンピュータ(例えば、1つ以上の処理コア、L1キャッシュ、L2キャッシュなどを有するCPU)、ホストコントローラ、または他のタイプのプロセッサ2202を含み得る。第2の集積回路は、ホストデバイスに結合されたメモリデバイスを含むことができ、その主な機能はホストデバイスに依存するため、ホストデバイスのコアアーキテクチャの一部を形成せずに、ホストデバイスの機能を拡張するとみなすことができる。メモリデバイスは、ホストデバイスと通信可能であってもよい。例えば、メモリデバイスは、共通の集積回路基板上の単一のICデバイスの任意の組み合わせを含む単一のICまたはマルチICモジュールであり得る。図17の構成要素は、例えば、集積回路(「IC」)ダイ基板、マルチICモジュール基板などの「共通キャリア基板」上に存在することができる。あるいは、メモリデバイスは、例えば、マザーボード、ドーターボード、または他のタイプの回路カードなどの1つ以上のプリント回路基板上に存在してもよい。他の実装形態では、メインメモリおよびプロセッサ2202は、同じまたは異なるキャリア基板上に常駐することができる。
【0105】
コンピュータシステム2200は、プロセッサ2202と共に動作するように設計され、プロセッサ2202と外部デバイスとの間の通信を制御する集積回路またはチップのグループを指すチップセット2208を含むことができる。例えば、チップセット2208は、プロセッサ2202をメインメモリ2204やグラフィックコントローラなどの非常に高速なデバイスにリンクし、処理デバイスをUSB、PCI、またはISAバスなどの周辺機器2210低速の周辺バスにリンクするマザーボード上のICのセットである場合がある。一実施形態では、リムーバブル記憶装置インターフェース2203は、チップセット2208に実装することができる。
【0106】
コンピュータシステム2200は、ネットワークインターフェースデバイス2222をさらに含むことができる。また、コンピュータシステム2200は、グラフィックポートおよびグラフィックチップセットを介してコンピュータシステムに接続されたビデオディスプレイユニット(例えば、液晶ディスプレイ(LCD))、英数字入力デバイス(例えば、キーボード)、カーソル制御デバイス(例えば、マウス)、信号生成デバイス(例えば、スピーカ)などの1つ以上の周辺機器2210を含み得る。集積回路デバイスの「プログラミング」には、例えば、制限なしに、ホスト命令に応じてデバイス内のレジスタまたはその他のストレージ回路に制御値をロードし、デバイスの動作面を制御すること、ワンタイムプログラミング操作(例えば、デバイスの製造中に構成回路内でヒューズを切断すること)により、デバイス構成を確立するか、またはデバイスの動作面を制御すること、および/または、デバイスの1つ以上の選択されたピンまたは他の接触構造を基準電圧線に接続して(ストラッピングとも呼ばれる)、デバイスの特定のデバイス構成または動作を確立すること、を含み得る。「例示的」という用語は、好みまたは要件ではなく、実施例を表すために使用される。
【0107】
上記の記載では、多くの詳細が説明されている。しかしながら、本開示の利益を有する当業者には、これらの特定の詳細なしで本発明の実施形態を実施できることが明らかであろう。場合によっては、記載を不明瞭にしないために、よく知られた構造とデバイスは、むしろ詳細ではなく、ブロック図形式で示されている。
【0108】
詳細な記載の一部は、コンピューターメモリ内のデータビットに対する操作のアルゴリズムおよび記号表現の観点から提示されている。これらのアルゴリズムの記載および表現は、データ処理分野の当業者が自分の仕事の内容を他の当業者に最も効果的に伝えるために使用する手段である。アルゴリズムは、ここで、そして概して、望ましい結果をもたらす一貫したステップのシーケンスであると考えられている。ステップは、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は、格納、転送、結合、比較、その他の操作が可能な電気信号または磁気信号の形式を取る。主に一般的な使用上の理由から、これらの信号をビット、値、要素、記号、文字、用語、数字などと呼ぶと便利な場合がある。
【0109】
しかしながら、これらの用語および類似の用語はすべて適切な物理量に関連付けられるものであり、これらの量に適用される便利なラベルにすぎないことに留意されたい。上記の議論から明らかであると特に明記しない限り、明細書、「暗号化」、「復号化」、「格納」、「提供」、「導出」、「取得」、「受信」、「認証」、「削除」、「実行」、「要求」、「通信」などの用語を使用する議論の全体を通して、コンピューティングシステムのレジスタおよびメモリ内の物理(電子など)量として表されるデータを、コンピューティングシステムメモリまたはレジスタ、またはその他のそのような情報の格納デバイス、送信デバイス、または表示デバイス内の物理量として同様に表される他のデータに操作および変換する、コンピューティングシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを指す。
【0110】
本明細書では、「実施例」または「例示的な」という言葉は、じっし例、事例、または例証として役立つことを意味するために使用される。「実施例」または「例示的」として本明細書で記載される任意の態様または設計は、必ずしも他の態様または設計よりも好ましいまたは有利であると解釈されるべきではない。むしろ、「実施例」または「例示的な」という言葉の使用は、概念を具体的な方法で提示することを意図している。本開示で使用される「または」という用語は、排他的な「または」ではなく、包括的な「または」を意味することを意図している。すなわち、特に指定しない限り、または文脈から明らかでない限り、「XはAまたはBを含む」は、自然な包括的な順列のいずれかを意味することを意図している。すなわち、XはAを含む、XはBを含む、または、XはAおよびBの両方を含む、であれば、「XはAまたはBを含む」は、前述のいずれかの場合で満たされる。さらに、本開示および添付の特許請求の範囲で使用される冠詞「a」および「an」は、特に明記しない限り、または単数形を対象とする文脈から明確でない限り、「1つ以上」を意味すると解釈されるべきである。さらに、「実施形態」または「一実施形態」または「実装形態」または「一実装形態」という用語は、そのように記載しない限り、同じ実施形態または実装形態を意味するものではない。
【0111】
本明細書で記載される実施形態は、本明細書の動作を実行するための装置にも関連し得る。この装置は、必要な目的のために特別に構築されてもよいし、コンピュータに保存されたコンピュータプログラムによって選択的に起動または再構成される汎用コンピュータを備えてもよい。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROMおよび光磁気ディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カードまたは光カード、フラッシュメモリ、または電子命令の格納に適したあらゆる種類のメディアを含む任意のタイプのディスクなどの、しかしながらこれらに限定されない、非一時的なコンピュータ可読記憶媒体に格納されてもよい。用語「コンピュータ可読記憶媒体」は、命令の1つ以上のセットを格納する単一の媒体または複数の媒体(例えば、集中型または分散型データベースおよび/または関連するキャッシュおよびサーバ)を含むと解釈されるべきである。「コンピュータ可読媒体」という用語は、マシンによる実行のための命令セットを格納、エンコード、または実行することができ、マシンに本実施形態の1つまたは複数の方法論のいずれかを実行させる任意の媒体も含むものとする。したがって、「コンピュータ可読記憶媒体」という用語は、固体メモリ、光学媒体、磁気媒体、マシンによる実行のための命令セットを格納できる任意の媒体、およびこれらに限定されないものと解釈されるものとし、これにより、マシンは、本実施形態の方法論のいずれか1つ以上を実行する。
【0112】
本明細書で提示されるアルゴリズムおよび表示は、特定のコンピュータまたは他の装置に本質的に関連するものではない。本明細書の教示に従って、様々な汎用システムをプログラムと共に使用することができ、または必要な方法ステップを実行するためにより特化した装置を構築することが便利であることが判明する場合がある。これらの様々なシステムに必要な構造は、以下の記載から明らかになる。さらに、本実施形態は、特定のプログラミング言語を参照して記載されていない。本明細書に記載の実施形態の教示を実施するために、様々なプログラミング言語を使用できることが理解されよう。
【0113】
上記の記載は、本発明のいくつかの実施形態の良好な理解を提供するために、特定のシステム、コンポーネント、方法などの実施例などの多数の特定の詳細を示している。しかしながら、本発明の少なくともいくつかの実施形態は、これらの特定の詳細なしで実施できることが当業者には明らかであろう。他の実施例では、本発明を不必要に不明瞭にすることを避けるために、周知のコンポーネントまたは方法は詳細に説明されないか、または単純なブロック図形式で提示される。したがって、上記の特定の詳細は単なる例示にすぎない。特定の実装形態は、これらの例示的な詳細とは異なる場合があり、それでも本発明の範囲内にあると考えられる。
【0114】
上記の記載は例示的なものであり、限定的なものではないことを理解されたい。上記の記載を読んで理解すると、多くの他の実施形態が当業者に明らかになるであろう。したがって、本発明の範囲は、添付の特許請求の範囲を参照して、そのような特許請求の範囲が権利を有する均等物の全範囲とともに決定されるべきである。
【0115】
本発明をその特定の実施形態を参照して記載してきたが、本発明のより広い精神および範囲から逸脱することなく、様々な修正および変更を加えることができることは明らかであろう。例えば、少なくとも実施可能な場合、実施形態のいずれかの特徴または態様を、他の実施形態と組み合わせて、または対応する特徴または態様の代わりに適用することができる。したがって、明細書および図面は、制限的な意味ではなく、例示的な意味でみなされるべきである。
図1
図2
図3A
図3B
図3C
図3D
図3E
図3F
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17