(57)【要約】      （修正有）【課題】デバイスがデバイスに関するアサーションを証明可能とする。【解決手段】システム１００において、検証装置１４０は、証明識別子と、証明識別子に対応する基本秘密コードを生成することと、証明識別子及び検証秘密コードを、アサーションとともに記憶する。照明方法は、検証秘密コードが、基本秘密コードに基づいていることと、証明識別子及びデバイス秘密コードをデバイスに提供するためのアダプタ又は製造者に提供し、デバイス秘密コードは基本秘密コードに基づいていることと、を含む。【選択図】図１
2020071880.tif 000002
【特許請求の範囲】
【請求項１】
デバイスが前記デバイスに関するアサーションを証明できるようにする証明を提供する方法であって、
証明識別子と、前記証明識別子に対応する基本秘密コードを生成することと、
前記証明識別子及び検証秘密コードを、前記アサーションとともに記憶するための検証装置に提供し、前記検証秘密コードは、前記基本秘密コードに基づいていることと、
前記証明識別子及びデバイス秘密コードをデバイスに提供するためのアダプタ又は製造者に提供し、前記デバイス秘密コードは前記基本秘密コードに基づいていることと
を含む、方法。
【請求項２】
前記証明識別子及び前記デバイス秘密コードが、前記製造者又はアダプタによって前記デバイスに提供される、請求項１に記載の方法。
【請求項３】
前記デバイス秘密コードは、前記基本秘密コードと同じである、請求項１又は２に記載の方法。
【請求項４】
前記基本秘密コードは、前記検証装置に提供されない、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記検証秘密コードは、第１の所定のハッシュ関数を使用して前記基本秘密コードをハッシュすることにより生成される、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記デバイス秘密コードは前記基本秘密コードと同じであり、前記デバイスへの前記証明識別子及び前記デバイス秘密コードの提供に応じて、前記デバイスは前記検証秘密コードを生成するための前記第１の所定のハッシュ関数を使用して前記デバイス秘密コードをハッシュする、請求項５に記載の方法。
【請求項７】
前記デバイスは、第２の所定のハッシュ関数を使用して、ローカルで利用可能な情報の１つ以上の項目と組み合わせて前記検証秘密コードを更にハッシュして、ハッシュ値を生成する、請求項６に記載の方法。
【請求項８】
前記第１の所定のハッシュ関数及び第２の所定のハッシュ関数は、同じ計算関数を使用するが、異なるデータ入力で動作する、請求項７に記載の方法。
【請求項９】
前記証明識別子及びデバイス秘密コードが前記デバイスに提供される初期証明識別子及び初期デバイス秘密コードである場合、ローカルで利用可能な情報の前記１つ以上の項目はデバイス識別子を含み、
前記証明識別子及びデバイス秘密コードが前記デバイスに提供される前記初期証明識別子及び前記初期デバイス秘密コードでない場合、ローカルに記憶された情報の前記１つ以上の項目は以前のハッシュ値を含む、請求項７又は８に記載の方法。
【請求項１０】
前記以前のハッシュ値は、最新の以前のハッシュ値である、請求項９に記載の方法。
【請求項１１】
前記ハッシュ値の生成後、前記デバイスは前記ハッシュ値を記憶するが、前記デバイス秘密コード又は検証秘密コードは記憶しない、請求項９又は１０に記載の方法。
【請求項１２】
前記デバイスは、前記最新のハッシュ値のみを記憶する、請求項１１に記載の方法。
【請求項１３】
前記デバイスは、前記検証秘密コードを前記証明識別子と組み合わせて更にハッシュして、前記ハッシュ値を生成する、請求項７〜１２のいずれか一項に記載の方法。
【請求項１４】
前記ハッシュ値の生成後、前記デバイスが前記証明識別子を記憶する、請求項１３に記載の方法。
【請求項１５】
前記ローカルで利用可能な情報の１つ以上の項目は、メタデータを更に含む、請求項７〜１４のいずれか一項に記載の方法。
【請求項１６】
前記ハッシュ値の生成後、前記デバイスは前記メタデータを記憶する、請求項１５に記載の方法。
【請求項１７】
検証装置が前記デバイスに関するアサーションを証明するデバイスからの証明を検証する方法であって、
証明データベースから１つ以上のエントリを取得し、各エントリは証明識別子、検証秘密コード及びアサーションを含むことと、
前記デバイスから１つ以上の証明識別子及びハッシュ値を取得することと、
前記デバイスから取得した前記ハッシュ値を検証するために、前記証明データベースから取得した前記対応する検証秘密コードとともに、前記デバイスから取得した前記１つ以上の証明識別子に対して検証動作を実行することと、
前記検証動作の検証結果に応じて、前記デバイスから取得された１つ以上の証明識別子に関連付けられた前記１つ以上のアサーションが、前記デバイスに関して妥当か否かを判定することと
を含む、方法。
【請求項１８】
デバイス識別子が前記デバイスから更に取得され、前記検証動作が前記デバイス識別子に対して更に実行される、請求項１７に記載の方法。
【請求項１９】
前記デバイスからメタデータが更に取得され、前記メタデータに対して前記検証動作が更に実行される、請求項１７又は１８に記載の方法。
【請求項２０】
前記検証動作は、前記デバイスから取得された証明識別子ごとに少なくとも１つのハッシュ関数を含み、各ハッシュ関数は、前記以前のハッシュ関数の前記結果に繰り返し作用し、それぞれの連続するハッシュ関数は、少なくとも前記以前のハッシュ関数で入力として以前に使用されていない証明識別子を入力として取得する、請求項１７〜１９のいずれか一項に記載の方法。
【請求項２１】
複数の証明識別子が前記デバイスから取得され、前記最新のハッシュ値に対応する１つのハッシュ値のみが前記デバイスから取得され、
前記デバイスから取得された前記複数の証明識別子に関連付けられた前記複数のアサーションのうちの全てが、前記検証動作による前記検証結果に応じて前記デバイスに関して妥当であるか、又は、前記デバイスから取得された前記複数の証明識別子に関連付けられた前記複数のアサーションのうちの、前記検証動作による前記検証結果に応じて前記デバイスに関して妥当であるアサーションはないか、が判定される、請求項１７〜２０のいずれか一項に記載の方法。
【請求項２２】
複数の証明識別子が前記デバイスから取得され、複数のハッシュ値が前記デバイスから取得され、前記検証動作は複数の検証動作を含み、それによって、前記デバイスから取得された前記複数の証明識別子に関連付けられた複数のアサーションのサブセットが、前記複数の検証動作の前記検証結果に応じて妥当であるか否かが判定される、請求項１７〜２０のいずれか一項に記載の方法。
【請求項２３】
前記検証装置は、特定の証明識別子に関連する複数の検証秘密コード及びアサーションを前記証明データベースから取得し、前記特定の証明識別子が前記デバイスから取得されると、それぞれの前記可能な検証秘密コードを使用して前記検証動作が試行される、請求項１７〜２２のいずれか一項に記載の方法。
【請求項２４】
デバイスが前記デバイスに関するアサーションを証明できるようにする情報を前記デバイスに記憶する方法であって、
前記デバイスで、基本秘密コード及び対応する証明識別子を受信することと、
前記デバイスで、第１の所定のハッシュ関数を使用して、前記基本秘密コードをハッシュし、検証秘密コードを生成することと、
前記デバイスで第２の所定のハッシュ関数を使用して、第２の所定のハッシュ関数を使用してローカルで利用可能な情報の１つ以上の項目と組み合わせて前記検証秘密コードをハッシュして、ハッシュ値を生成することと
を含み、
前記ハッシュ値の生成後、前記デバイスは前記ハッシュ値を記憶する、方法。
【請求項２５】
請求項１〜２４のいずれか一項に記載の方法を実行するためにデバイスを制御するためのコンピュータプログラム。
【請求項２６】
請求項２５に記載のコンピュータプログラムを記憶する記憶媒体。
【請求項２７】
データ処理を実行するための処理回路と、
請求項１〜２４のいずれか一項に記載の方法を実行するために前記処理回路を制御するためのコンピュータプログラムを記憶するデータストレージと
を含む装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、電子デバイスの分野に関する。より具体的には、本技術は、デバイスに関するアサーションをデバイスが証明できるようにするための証明を提供することに関する。
【背景技術】
【０００２】
モバイルバンキング、ヘルスケアサービスへのアクセス又は雇用の詳細の取り扱いなど、潜在的に機密性の高い情報の取り扱いを伴う可能性のあるサービスへのアクセスに電子デバイスが使用されることが増えている。また、モノのインターネット（ＩｏＴ）の発展に伴い、温度データ又は例えばユーザが存在するか否かを示す近接情報などのセンサ情報を提供する可能性のある電子デバイスによって提供される情報に基づいて、暖房、空調、又は街路照明などのシステムが制御されることが一般的になりつつある。これらのシナリオでは、サービスプロバイダは、電子デバイスとの対話が安全であることを信頼するために、電子デバイスが特定の要件を満たしていることを検証できることが重要である。サービスプロバイダは、電子デバイスの製造に使用される製造プロセス中、又はそのライフサイクル中のデバイスのその後の適応中に特定のイベントが発生したことを確信する必要がある場合がある。例えば、このようなイベントは、デバイス製造者によって構成要素に埋め込まれているシステムオンチップ、特定の品質保証ステップを通過するデバイス、又は、デバイスに提供されているいくつかの特定のソフトウェアを含み得る。
【０００３】
外部エンティティがそのようなイベントが発生したことを検証できるようにする詳細な証明情報をデバイスに記憶する暗号技術が提供され得る。ただし、このような技術では通常、デバイス自体に大量の情報を記憶する必要がある。センサ、アクチュエータ、又はＩｏＴ内の他のデバイスなどの非常に小さなコンピューティングデバイスでは、メモリ記憶容量、処理能力及び通信帯域幅が非常に制限される可能性があるため、このようなアプローチは実行できない。更に、そのような情報をデバイスに記憶すると、情報が抽出されて別のデバイスに複製され、偽装デバイスがイベントの証明を受けたと誤って証明できる「偽装」デバイスを作成できる可能性がある。
【０００４】
本開示の少なくとも特定の実施形態は、上述のこれらの問題のうちの１つ以上に対処する。
【発明の概要】
【０００５】
特定の態様及び実施形態は、添付の特許請求の範囲に記載されている。
【０００６】
一観点から見ると、デバイスがデバイスに関するアサーションを証明できるようにする証明を提供する方法を提供でき、証明識別子と、証明識別子に対応する基本秘密コードを生成することと、証明識別子及び検証秘密コードを、アサーションとともに記憶するための検証装置に提供し、検証秘密コードは、基本秘密コードに基づいていることと、証明識別子及びデバイス秘密コードをデバイスに提供するためのアダプタ又は製造者に提供し、デバイス秘密コードは基本秘密コードに基づいていることと、を含む。
【０００７】
異なるエンティティに異なる秘密コードを提供すると、あるエンティティから秘密コードが抽出され、別のエンティティの偽装バージョンを作成するために使用されるリスクが軽減される。例えば、検証装置から検証秘密コードを抽出しても、どのデバイス秘密コードが製造者又はアダプタに提供されたのかを判定できず、したがって検証装置からのデータ盗難の影響が軽減される。更に、このアプローチでは、アサーション自体をデバイスから離れた場所に記憶できるため、デバイスの記憶領域を節約できる。いくつかの例では、証明識別子は証明生成器を使用して生成される。証明生成器は、検証装置とは物理的に別個のデバイスであってもよく、又は証明生成器及び検証装置の両方が同じ物理デバイスに配置されていてもよい。いくつかの例では、証明生成器はデバイス秘密コード及び／又は検証秘密コードを生成する。
【０００８】
いくつかの例では、証明識別子及びデバイス秘密コードは、製造者又はアダプタによってデバイスに提供される。それにより、デバイス秘密コードは、製造者又はアダプタの制御下でデバイスに配布される。したがって、この配布は、証明識別子及び基本秘密コードを生成する検証装置又はデバイス（例えば、証明生成器）の直接の関与、あるいは証明識別子及び基本秘密コードを生成する検証装置又はデバイス（例えば、証明生成器）への配布に関する情報の提供なしに行うことができる。
【０００９】
いくつかの例では、デバイス秘密コードは基本秘密コードと同じである。これにより、デバイス秘密コードを生成するための追加処理の必要性を回避できる。
【００１０】
いくつかの例では、基本秘密コードは検証装置に提供されない。これにより、検証装置は基本秘密コードにアクセスできないため、検証装置からの情報の盗難により悪意のあるエンティティがデバイス秘密コード（基本秘密コードに基づく）を生成できなくなり、したがって、この情報を使用して偽装デバイスを作成することはできない。
【００１１】
いくつかの例では、検証秘密コードは、第１の所定のハッシュ関数を使用して基本秘密コードをハッシュすることにより生成される。そのため、一方向関数（ハッシュ関数など）を使用して検証秘密コードを生成することにより、一般にハッシュ関数を逆にして検証秘密コードから基本秘密コードを生成することはできない。いくつかの例では、検証秘密コードのこの生成は、検証秘密コードを検証装置に提供する前に、証明生成器によって実行される。他の例では、基本秘密コードが証明生成器に提供され、証明生成器は検証秘密コード自体を生成する。
【００１２】
いくつかの例では、デバイス秘密コードは基本秘密コードと同じであり、デバイスへの証明識別子及びデバイス秘密コードの提供に応じて、デバイスは検証秘密コードを生成するための第１の所定のハッシュ関数を使用してデバイス秘密コードをハッシュする。これにより、デバイスで一方向関数（ハッシュ関数など）を使用して派生秘密コード（検証秘密コード）を生成することにより、基本秘密／デバイス秘密コードをデバイスに記憶する必要がなくなり、したがって、デバイスからの情報の盗難により、悪意のある者が基本秘密／デバイス秘密コードを第２のデバイスに提供して、偽装デバイスを作成することはできない。
【００１３】
いくつかの例では、デバイスは、第２の所定のハッシュ関数を使用して、ローカルで利用可能な情報の１つ以上の項目と組み合わせて検証秘密コードを更にハッシュして、ハッシュ値を生成する。それにより、デバイスは、ローカルで利用可能な情報を使用してのみ生成できる、更なる派生秘密コード（ハッシュ値）を生成する。したがってこれは、ハッシュ値は、デバイスのローカルで利用可能な情報にアクセスできるデバイスによってのみ生成され、ハッシュ値を生成できるデバイスを制限することを意味する。検証の目的で（検証装置などで）、検証エンティティは、検証時にローカルで利用可能な情報にアクセスできることだけが必要である。つまり、この時点まで、デバイスはローカルで利用可能な情報をプライベートに保つことができる。更に、デバイスが検証秘密コードを記憶する必要がないため、デバイスからの情報の盗難により、デバイスに関する証明の検証が許可されないことを意味する。
【００１４】
いくつかの例では、第１の所定のハッシュ関数及び第２の所定のハッシュ関数は同じ計算関数を使用するが、異なるデータ入力で動作する。それにより、単一の計算ハッシュ関数のみをデバイスに記憶する必要があり、したがってスペースを節約し、一般に、ハッシュ関数のパフォーマンスの更なるハードウェア／ソフトウェア最適化を可能にする。
【００１５】
いくつかの例では、証明識別子及びデバイス秘密コードがデバイスに提供される初期証明識別子及び初期デバイス秘密コードである場合、ローカルで利用可能な情報の１つ以上の項目はデバイス識別子を含み、証明識別子及びデバイス秘密コードがデバイスに提供される初期証明識別子及び初期デバイス秘密コードでない場合、ローカルに記憶された情報の１つ以上の項目は以前のハッシュ値を含む。
【００１６】
それにより、初期証明識別子／デバイス秘密コードに対する第２の所定のハッシュ関数の使用は、デバイスの識別子を使用することによりデバイス自体に結び付けられたハッシュ値を生成する。更に、初期証明識別子／デバイス秘密コードの後の証明識別子／デバイス秘密コード上で第２の所定のハッシュ関数を使用する場合、以前のハッシュ値を使用することによって、生成された更なるハッシュ値は以前のハッシュ値（単数又は複数）に部分的に基づく。
【００１７】
それにより、更なるハッシュ値は、直接的又は間接的に入力された全ての以前のハッシュ値の「ダイジェスト」として機能する（つまり、第２の所定のハッシュ関数が複数の以前の証明識別子及びデバイス秘密コードに対応する以前のハッシュ値のチェーンに繰り返し適用された）。そのため、「ダイジェスト」は、全ての中間ハッシュ値をデバイスに記憶する必要なしに、ダイジェストを作った全ての証明識別子／デバイス秘密コードに対応する証明の検証に使用できる。
【００１８】
いくつかの例では、以前のハッシュ値は最新の以前のハッシュ値である。それにより、第２の所定のハッシュ関数は以前の全てのハッシュ値に繰り返し適用されるため、デバイスによって受信された全ての証明識別子／デバイス秘密コードに対応する証明の検証に最終ハッシュ値を使用できる。
【００１９】
いくつかの例では、ハッシュ値の生成後、デバイスはハッシュ値を記憶するが、デバイス秘密コード又は検証秘密コードは記憶しない。これにより、悪意のある者がデバイスに記憶された情報にアクセスした場合でも、盗まれた情報により、悪意のある者が偽装デバイスを作成したり、デバイスに関する証明を検証したりすることはできない。
【００２０】
いくつかの例では、デバイスは最新のハッシュ値のみを記憶する。最新のハッシュ値は以前の全てのハッシュ値の「ダイジェスト」として機能できるため、最新のハッシュ値を記憶すると、以前のハッシュ値自体を記憶することによってデバイス上の記憶装置を消費する必要なく、以前のハッシュ値のそれぞれに対応する証明を検証するのに十分である。
【００２１】
いくつかの例では、デバイスは検証秘密コードを証明識別子と組み合わせて更にハッシュし、ハッシュ値を生成する。それにより、ハッシュへの入力としてより多くの要素を含めることにより、ハッシュを逆にすることをより難しくすることによりセキュリティが強化される。
【００２２】
いくつかの例では、ハッシュ値の生成後、デバイスは証明識別子を記憶する。これにより、ハッシュ値がどの証明（単数又は複数）に対応するかを識別し、特定の例では証明を検証するために必要である、情報をデバイス自体が直接提供できる。
【００２３】
いくつかの例では、ローカルで利用可能な情報の１つ以上の項目は、メタデータを更に含む。これにより、より多くの要素をハッシュへの入力として含めることでセキュリティを強化し、ハッシュを逆にするのを更に難しくすることができる。更に、メタデータは、ハッシュ値が生成された時に、特定の情報（例えば、デバイスの内部ステータス、情報ペイロード、外部ソースからデバイスが受信した情報）がデバイスで利用できたことを確立できる。いくつかの例では、メタデータは、デバイスに存在するコードの一部又は全てと、デバイスに記憶されている１つ以上の公開キーとを含んでもよい。追加又は代替として、メタデータは、デバイスソフトウェアの状態（例えば、ソフトウェア名、バージョン、ソフトウェアに署名するために使用されるハッシュ／公開キー）、ハッシュ値が生成された時刻／日付、関与する人／マシン動作（単数又は複数）あるいは動作が行われた地理的位置に関する情報を含んでもよい。
【００２４】
いくつかの例では、ハッシュ値の生成後、デバイスはメタデータを記憶する。これにより、特定の例では、証明（単数又は複数）を検証するために必要なメタデータを、デバイス自体が直接提供できる。
【００２５】
一観点から見ると、検証装置がデバイスに関するアサーションを証明するデバイスからの証明を検証する方法を提供することができ、証明データベースから１つ以上のエントリを取得し、各エントリは証明識別子、検証秘密コード及びアサーションを含むことと、デバイスから１つ以上の証明識別子及びハッシュ値を取得することと、デバイスから取得したハッシュ値を検証するために、証明データベースから取得した対応する検証秘密コードとともに、デバイスから取得した１つ以上の証明識別子に対して検証動作を実行することと、検証動作の検証結果に応じて、デバイスから取得された１つ以上の証明識別子に関連付けられた１つ以上のアサーションが、デバイスに関して妥当か否かを判定することとを含む。言い換えれば、いくつかの例では、デバイスは１つ以上の証明識別子及びハッシュ値を検証装置に単純に提供するが、別個の証明データベースから取得されるアサーション自体（つまり、証明の実際の意味論上の意味）は提供しない。また、特定の例では、アサーションを追加又は代替としてデバイス自体に記憶できることも明確に企図されている。
【００２６】
証明識別子を証明データベース及びデバイスの両方から取得することにより、デバイスからのハッシュ値を検証秘密コード及び証明デバイスから受信した証明と照合することができ、検証装置は、検証秘密コード又はアサーションをデバイス自体に記憶する必要なしに、デバイスに関して様々な証明が正しいか否か検証できるため、スペースを節約できる。これは更に、どちらのエンティティも、単独又は組み合わせで偽装デバイスの作成を可能にする情報を記憶しないため、デバイス又は証明データベースのいずれからの情報の盗難のリスクも低減する。更に、証明を検証するには、デバイスと証明データベースの両方から情報を取得する必要がある。いくつかの例では、証明データベースは検証装置と同じ物理デバイス上に配置される及び／又は検証装置の一部である。他の例では、証明データベースは検証装置とは別個の物理デバイスに配置される。
【００２７】
いくつかの例では、デバイス識別子はデバイスから更に取得され、検証動作がデバイス識別子に対して更に実行される。これにより、特定のデバイス識別子に関してアサーションが特に妥当であると判定でき、一般に、少なくとも製造者／アダプタは、デバイス識別子がどの物理デバイスに属しているかを認識している。
【００２８】
いくつかの例では、デバイスからメタデータが更に取得され、メタデータに対して検証動作が更に実行される。それにより、検証プロセスの一部として、検証装置は、ハッシュ値が生成された時点でメタデータが既知であったことを証明できる。追加又は代替として、デバイスからの証明を検証する試みが行われた時点でメタデータが既知であったことを証明するために、デバイスからメタデータを取得することができる。
【００２９】
いくつかの例では、検証動作は、デバイスから取得された証明識別子ごとに少なくとも１つのハッシュ関数を含み、各ハッシュ関数は、以前のハッシュ関数の結果に繰り返し作用し、それぞれの連続するハッシュ関数は、少なくとも以前のハッシュ関数で入力として以前に使用されていない証明識別子を入力として取得する。それにより、以前のハッシュ関数（単数又は複数）の結果（単数又は複数）を取得することにより、ハッシュ関数が互いに計算に依存する結果として、特定のシーケンスで複数の証明が生成されたことを検証できる。
【００３０】
いくつかの例では、複数の証明識別子がデバイスから取得され、最新のハッシュ値に対応する１つのハッシュ値のみがデバイスから取得され、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの全てが、検証動作による検証結果に応じてデバイスに関して妥当であるか、又は、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの、検証動作による検証結果に応じてデバイスに関して妥当であるアサーションはないか、が判定される。これにより、デバイスから単一のハッシュ値を受信するだけで複数のアサーションを検証できるため、通信帯域幅を節約し、デバイスが単一の最新のハッシュ値より多くを記憶する必要性を減らす。
【００３１】
いくつかの例では、複数の証明識別子がデバイスから取得され、複数のハッシュ値がデバイスから取得され、検証動作は複数の検証動作を含み、それによって、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのサブセットが、複数の検証動作の検証結果に応じて妥当であるか否かが判定される。したがって、複数のハッシュ値を受信することにより、検証装置はアサーションのサブセットを個別に検証できるため、ネガティブ検証の場合、アサーション（単数又は複数）のどの特定のサブセットが偽であるかを少なくとも部分的に識別することができる。したがって、例えば、（例えば、特に対話するデバイス又はエンティティへの）偽のアサーションのソースを絞り込むことができる場合がある。例えば、いくつかの例では、２、３、又は４つの証明識別子ごとにハッシュ値を取得してもよい。
【００３２】
いくつかの例では、検証装置は、特定の証明識別子に関連する複数の検証秘密コード及びアサーションを証明データベースから取得し、特定の証明識別子がデバイスから取得されると、それぞれの可能な検証秘密コードを使用して検証動作が試行される。それにより、非固有の証明識別子の使用を徹底して、証明を妥当な時間で検証できるようにしながら、短い証明識別子を使用することができる（従って、デバイスの記憶スペースを節約できる）。例えば、各証明識別子に対して３つの検証秘密コード及び３つのアサーションがある場合、最悪の場合検証動作を３回試行して、あるとすればどのアサーションが妥当であるかを判定する必要がある。ただし、テストされた最初のアサーションが妥当であることが示されている場合、いくつかの例では、検証動作は２番目と３番目のアサーションをチェックしない。
【００３３】
一観点から見ると、デバイスがデバイスに関するアサーションを証明できるようにする情報をデバイスに記憶する方法を提供することができ、デバイスで、基本秘密コード及び対応する証明識別子を受信することと、デバイスで、第１の所定のハッシュ関数を使用して、基本秘密コードをハッシュし、検証秘密コードを生成することと、デバイスで第２の所定のハッシュ関数を使用して、第２の所定のハッシュ関数を使用してローカルで利用可能な情報の１つ以上の項目と組み合わせて検証秘密コードをハッシュして、ハッシュ値を生成することとを含み、ハッシュ値の生成後、デバイスはハッシュ値を記憶する。
【００３４】
デバイスで２つのハッシュを実行して記憶されているハッシュ値を生成することにより、デバイスは基本秘密コード又は検証秘密コードのいずれも記憶する必要がない。これにより、デバイスはスペースを節約できるが、ハッシュ値がデバイスから盗まれた場合（例えば、ハッシュ値のみがデバイスに記憶されているため）、偽装デバイスを作成できないため、複製にも耐性がある。デバイスによって実行される２つのハッシュ動作は一方向の動作であるため、一般に基本秘密コードはハッシュ値から再作成できないため、偽装は作成できず、したがって、基本秘密コードは偽装を作成する第２のデバイスに提供できない。
【００３５】
一観点から見ると、デバイスを制御して上記の方法のいずれかを実行するためのコンピュータプログラムが提供され得る。いくつかの例では、コンピュータプログラムは記憶媒体に記憶される。
【００３６】
一観点から見ると、装置を提供することができ、データ処理を実行するための処理回路と、上記の方法のいずれかを実行するために処理回路を制御するためのコンピュータプログラムを記憶するデータストレージとを含む。
【００３７】
他の態様も、本開示を検討すると、特に図面の簡単な説明、発明を実施するための形態及び特許請求の範囲を検討すると明らかになるであろう。
【００３８】
本開示の例は、添付の図面を参照して、例としてのみ説明される。
【図面の簡単な説明】
【００３９】
【図１】開示の例を実装するためのシステム例を概略的に示す。
【図２】デバイスに関するアサーションをデバイスが証明できるようにするための証明を提供する方法を概略的に示す。
【図３】検証装置が、デバイスに関するアサーションを検証するデバイスからの証明を検証するための方法を概略的に示す。
【図４】証明データベースの情報コンテンツの例を概略的に示す。
【図５】デバイスが、情報をデバイスに記憶し、デバイスに関するアサーションをデバイスが証明できるようにする方法を概略的に示す。
【図６】電子デバイスの例を概略的に示す。
【発明を実施するための形態】
【００４０】
本開示は様々な修正及び代替形態の影響を受けやすいが、特定の例示的なアプローチが図面に例として示されており、本明細書で詳細に説明される。ただし、添付の図面及び詳細な説明は、開示を開示された特定の形態に限定するものではなく、開示は、特許請求された発明の精神及び範囲に含まれる全ての修正、均等物、及び代替物を網羅するものであることを理解されたい。
【００４１】
本開示の上述の例の特徴は、任意の適切な組み合わせで便利にかつ交換可能に使用できることが認識されるであろう。
【００４２】
図１は、本開示の例を実施するためのシステム１００の概略図を示している。このシステムは、証明生成器１１０、製造者／アダプタ１２０、デバイス１３０、検証装置１４０及び証明データベース１５０を含む。これらの各要素は、図６及びその対応する以下の説明に示す電子デバイスを使用して実装できる。
【００４３】
図１には、様々な要素間の複数のリンケージの例も示されている。これらのリンケージは、要素間の通信チャネルを表す。これらの通信チャネルは、有線の電気接続（イーサネット（登録商標）など）を使用して、有線の光学接続（光ファイバケーブルなど）、無線接続（Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ（登録商標）など）を使用して、又は要素がデータを通信できるようにする他の適切な技術を使用して実装してもよい。
【００４４】
複数の主要なリンケージが示されているが、特定の例では他のリンケージもまた存在してもよい。例えば、製造者／アダプタ１２０は、証明データベース１５０への直接リンクを有してもよく、又は証明生成器１１０はデバイス１３０に直接連結されてもよい。また、特定の例では、示されている全てのリンケージが存在するわけではないことも理解されよう。例えば、デバイス１３０と検証装置１４０との間のリンケージは存在しなくてもよく、代わりにデバイス１３０は、製造者／アダプタ１２０及び証明生成器１１０を介して検証装置１４０と通信してもよい。
【００４５】
また、特定の例では、全てのリンケージが永続的であるとは限らず、代わりに一時的又は周期的であることも理解される。例えば、製造者／アダプタ１２０は、製造中又は適応中にのみデバイス１３０に接続されてもよく、別の例として、デバイス１３０と検証装置１４０との間の接続は、デバイスの検証中にのみ利用可能であってもよい。
【００４６】
証明生成器１１０は、証明識別子及び対応する基本秘密コードの生成を担当する。特定の例では、証明生成器は、証明プロセスを全体的に制御している第一者によって制御される中央サーバである。
【００４７】
製造者／アダプタ１２０は、証明識別子（単数又は複数）及び対応する基本秘密コード（単数又は複数）のデバイス１３０への提供を担当するエンティティである。特定の例では、製造者／アダプタ１２０は、少なくとも部分的に完成デバイス１３０の作製を担当する第２者によって制御される製造、組立、又は適応機器に対応する。
【００４８】
デバイス１３０は、デバイスに関するアサーションの証明が行われているエンティティである。特定の例では、デバイスはモノのインターネット（ＩｏＴ）デバイスに対応する。このようなＩｏＴデバイスは通常、センサ、アクチュエータ、又はＩｏＴ内の他のデバイスなどの非常に小さいコンピューティングデバイスであり、メモリ記憶容量、処理能力及び通信帯域幅が非常に制限される可能性がある。
【００４９】
検証装置１４０は、デバイスに関するアサーションが妥当であるか否かを検証する役割を果たすエンティティである。特定の例では、検証装置は、第一者（すなわち、証明生成器と同じ当事者）によって制御されるサーバである。特定の例では、検証装置はクラウドホスト型Ｗｅｂサービスである。
【００５０】
証明データベース１５０は、証明識別子をアサーション、並びにデバイスに関するアサーションの検証に使用される秘密コードと連結する情報を記憶するエンティティである。特定の例では、証明データベースは検証装置と同じ物理デバイス上に配置される及び／又は検証装置の一部である。他の例では、証明データベースは検証装置とは別個の物理デバイスに配置され、通信チャネル（リンケージ）で接続される。
【００５１】
証明データベースの場所の選択に加えて、他の要素を組み合わせることができる。特定の例では、要素はより大きなエンティティのソフトウェア又はハードウェアモジュールとして実装できる。例えば、証明生成器１１０及び検証装置１４０は、同じ物理的／論理的デバイス上に配置されてもよい。別の例として、製造者／アダプタ１２０及び検証装置１４０は、同じ物理的／論理的デバイス上に配置されてもよい。
【００５２】
システム１００は、複数の様々な要素を含むことができることも理解されよう。例えば、システム１００は、複数のデバイス１３０に作用して、それぞれが検証された自身に関するアサーションを有することができるようにすることができる。別の例として、システム１００は、全て単一のデバイス１３０に作用するか、又はそれぞれ異なるデバイス１３０に作用してもよい複数の製造者／アダプタ１２０を含むことができる。
【００５３】
図２は、デバイス１３０が以下のステップを含むデバイス１３０に関するアサーションを証明できるようにするための証明を提供する方法２００の概略図を示す。
【００５４】
ステップＳ２１０で、証明識別子と、証明識別子に対応する基本秘密コードとが生成される。特定の例では、生成は証明生成器１１０によって実行される。
【００５５】
ステップＳ２２０で、証明識別子及び検証秘密コードが検証装置１４０に提供され、検証秘密コードは基本秘密コードに基づいている。特定の例では、証明識別子及び検証秘密コードは、証明生成器１１０によって提供される。特定の例では、基本秘密コードは検証装置１４０に提供されない。
【００５６】
特定の例では、検証秘密コードは、第１の所定のハッシュ関数を使用して基本秘密コードをハッシュすることにより生成される。第１の所定のハッシュ関数は、「一方向」関数のセキュリティを更に強化するための暗号化ハッシュ関数であってもよい。適切なハッシングアルゴリズムの例には、ＭＤ５、ＳＨＡファミリー（ＳＨＡ−２５６など）又はその他の適切なハッシングアルゴリズムが含まれる。また、いくつかの例では、第１の所定のハッシュ関数は、巡回冗長検査などの非暗号化ハッシュ関数であってもよいことも明確に企図されている。特定の例では、検証秘密コードは、証明生成器１１０で生成され、検証装置１４０が基本秘密コードに決してアクセスできないように検証装置１４０に送信される。他の例では、基本秘密コードは、検証装置１４０に送信され、検証装置１４０は、第１のハッシングアルゴリズムを使用してハッシュを実行し、検証秘密コードに到達する。
【００５７】
ステップＳ２３０で、証明識別子及びデバイス秘密コードが、デバイス１３０への提供のために製造者又はアダプタ１２０に提供される。特定の例では、証明識別子及びデバイス秘密コードは、証明生成器１１０によって提供される。特定の例では、デバイスの秘密コードは基本秘密コードと同じである。
【００５８】
ステップＳ２４０で、証明識別子及びデバイス秘密コードは、製造者又はアダプタ１２０によってデバイス１３０に提供される。特定の例では、デバイス秘密コードは基本秘密コードと同じであり、デバイス１３０への証明識別子及びデバイス秘密コードの提供に応じて、デバイス１３０は検証秘密コードを生成するための第１の所定のハッシュ関数を使用してデバイス秘密コードをハッシュする。この第１の所定のハッシュ関数は、検証装置１４０に検証秘密コードを提供するために使用されるものと同じであり、したがって、検証装置１４０及びデバイス１３０の両方は、このコードを両方のデバイスに配布することなく同じ検証秘密コードのコピーで終わる。
【００５９】
特定の例では、デバイスは次に、第２の所定のハッシュ関数を使用して、ローカルで利用可能な情報の１つ以上の項目と組み合わせて検証秘密コードを更にハッシュして、ハッシュ値を生成する。第２の所定のハッシュ関数は、第１の所定のハッシュ関数に使用されるものと同じ計算関数（例えば、ＳＨＡ−２５６）であってもよいが、異なる入力に対して単に動作するだけでもよい。
【００６０】
特定の例では、デバイス１３０は、証明識別子及びそれが受け取るデバイス秘密コードが、受信した初期（つまり最初に）のそのような証明識別子及びデバイス秘密コードであるか、又はその後受信した証明識別子及びデバイス秘密コードであるかに応じて、異なるローカルで利用可能な情報を使用してもよい。特定の例では、証明識別子及びデバイス秘密コードがデバイス１３０に提供される初期証明識別子及び初期デバイス秘密コードである場合、ローカルで利用可能な情報の１つ以上の項目はデバイス識別子を含み、証明識別子及びデバイス秘密コードがデバイス１３０に提供される初期証明識別子及び初期デバイス秘密コードでない場合、ローカルに記憶された情報の１つ以上の項目は以前のハッシュ値を含む。言い換えれば、第２の所定のハッシュ関数は、第２の所定のハッシュ関数の以前の繰り返しの以前のハッシュ値を取得して、新しい証明識別子及びデバイス秘密コードが受信されるたびに繰り返し適用される。これは、最終的なハッシュ値を、少なくともいくつかの以前のハッシュ値、したがってこれらの以前のハッシュ値を生成した対応する証明識別子及びデバイス秘密コード、の「ダイジェスト」にすることと考えることができる。いくつかの例では、以前のハッシュ値は以前のハッシュ値であり、この反復動作を通じて最終ハッシュ値はデバイス１３０で生成された全てのハッシュ値のダイジェストとして機能する。いくつかの例では、所定のハッシュ値の生成後、ハッシュ値はデバイス１３０によって記憶されるが、対応するデバイス秘密コード及び検証秘密コードは破棄され、デバイス１３０に記憶されない。更に、いくつかの例では、最新のハッシュ値のみが記憶され、最新のハッシュ値が生成された後に以前の全てのハッシュ値が破棄される。前述のように、最新のハッシュ値は以前の全てのハッシュ値のダイジェストとして機能するため、ハッシュ値自体が破棄された場合でも、以前の全てのハッシュ値の妥当性を依然として確認することができる。
【００６１】
特定の例では、データの他の項目をハッシュ関数への入力として含めて、セキュリティを更に強化できる。例えば、特定の例では、第２の所定のハッシュ関数は、証明識別子及び／又はメタデータ（例えば、デバイスの内部ステータスに関する情報、情報ペイロード、外部ソースからデバイスが受信した情報）を入力として更に取得することができる。いくつかの例では、メタデータは、デバイスに存在するコードの一部又は全てと、デバイスに記憶されている１つ以上の公開キーとを含んでもよい。追加又は代替として、メタデータは、デバイスソフトウェアの状態（例えば、ソフトウェア名、バージョン、ソフトウェアに署名するために使用されるハッシュ／公開キー）、ハッシュ値が生成された時刻／日付、関与する人／マシン動作（単数又は複数）あるいは動作が行われた地理的位置に関する情報を含んでもよい。これらの追加の入力が使用される場合、ハッシュ値が生成された後、デバイス１３０に記憶することもできる。
【００６２】
方法のステップは特定の順序で描かれているが、任意の適切な順序でステップを実行できることが明確に企図されていることが認識されよう。例えば、ステップＳ２３０は、ステップＳ２２０の前に実行することができ、ステップＳ２４０は、ステップＳ２３０が実行された後の任意の時点で実行することができる。
【００６３】
図３は、検証装置１４０が、以下のステップを含むデバイス１３０に関するアサーションを証明するデバイス１３０からの証明を検証する方法３００の概略図を示す。
【００６４】
ステップＳ３１０で、検証装置１４０は、証明データベース１５０から１つ以上のエントリを取得し、各エントリは、証明識別子、検証秘密コード及びアサーションを含む。特定の例において、特定の証明識別子に関連する複数の検証秘密コード及びアサーションは、証明データベース１５０から検証装置１４０によって取得される。言い換えれば、証明識別子は特定の検証秘密コード及びアサーションを一意に識別しない場合がある。
【００６５】
ステップＳ３２０では、検証装置１４０は、デバイス１３０から１つ以上の証明識別子及びハッシュ値を取得する。特定の例では、デバイス識別子及び／又はメタデータもまたデバイスから取得される。追加又は代替として、いくつかの例では、複数の証明識別子がデバイスから取得され、最新のハッシュ値に対応する１つのハッシュ値のみがデバイス１３０から取得される。他の例では、複数の証明識別子がデバイスから取得され、複数のハッシュ値がデバイスから取得される。
【００６６】
ステップ３３０で、検証装置１４０は、証明データベース１５０から取得した対応する検証秘密コードとともに、デバイス１３０から取得した１つ以上の証明識別子に対して検証動作を実行して、デバイス１３０から取得したハッシュ値を検証する。特定の例では、デバイス識別子及び／又はメタデータもまた、デバイスから取得されると、検証動作がデバイス識別子及び／又はメタデータに対して更に実行される。
【００６７】
特定の例では、検証動作は、デバイス１３０から取得された証明識別子ごとに少なくとも１つのハッシュ関数を含む。各ハッシュ関数は、以前のハッシュ関数の結果に繰り返し作用し、それぞれの連続するハッシュ関数は、少なくとも以前のハッシュ関数で入力として以前に使用されていない証明識別子を入力として取得する。言い換えれば、例えば、検証装置１４０により受信されたハッシュ値がデバイス１３０上で実行された反復動作により生成された場合（すなわち、送信されたハッシュ値が１つ以上の以前のハッシュ値に部分的に基づいてデバイス１３０で生成された場合）、検証動作は、この「ダイジェスト」ハッシュ値に繰り返し作用して、受信したハッシュ値の各「レイヤ」を連続的に検証し、最終的にハッシュ値のチェーン全体を検証できる。
【００６８】
特定の例では、複数の証明識別子がデバイスから取得され、最新のハッシュ値に対応する１つのハッシュ値のみがデバイスから取得され、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの全てが、検証動作による検証結果に応じてデバイスに関して妥当であるか、又は、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのうちの、検証動作による検証結果に応じてデバイスに関して妥当であるアサーションはないか、を検証動作は判定する。
【００６９】
他の例では、複数の証明識別子がデバイスから取得され、複数のハッシュ値がデバイスから取得され、検証動作は複数の個々の検証動作を含み、それによって、デバイスから取得された複数の証明識別子に関連付けられた複数のアサーションのサブセットが、複数の検証動作の検証結果に応じて妥当であるか否かが判定される。
【００７０】
更なる例では、検証装置１４０は、特定の証明識別子に関連する複数の検証秘密コード及びアサーションを証明データベース１５０から取得し、検証動作は、それぞれの可能な検証秘密コードを使用して、デバイスから取得した証明識別子に関連して試行される。言い換えると、検証動作は、一意ではない証明識別子に関連付けられた全ての可能な検証秘密コードに対して試行される。
【００７１】
ステップ３４０で、検証装置１４０は、デバイス１３０から取得された１つ以上の証明識別子に関連付けられた１つ以上のアサーションが検証動作の検証結果に応じて、デバイス１３０に関して妥当か否かを判定する。
【００７２】
方法のステップは特定の順序で描かれているが、任意の適切な順序でステップを実行できることが明確に企図されていることが認識されよう。例えば、ステップＳ３２０は、ステップＳ３１０の前に実行することができる。
【００７３】
図４は、証明データベース１５０の例示的な情報コンテンツ４００を概略的に示す。示されている特定の例では、証明識別子、検証秘密コード、アサーション、追加フィールド１及び追加フィールド２の５つのフィールドが示されている。３つのサンプルエントリが示される。最初の行には、１００１の証明識別子、ＡＢ４７ＥＦ８９の検証秘密コード及びデバイスプロパティ１のアサーションがある（例えば、データストレージ６２０のセキュリティ領域６３０がある）。２番目の行には、１００２の証明識別子、７４９ＤＡＢＥ６の検証秘密コード及びイベント１のアサーションがある（例えば、特定の製造者／アダプタ１２０によってインストールされた通信Ｉ／Ｆ  ６４０がある）。３番目の行には、１００３の証明識別子、ＢＦ５６ＤＥＦ０の検証秘密コード及び品質保証１のアサーションがある（例えば、データストレージ６２０に記憶されているＯＳの整合性が検証されている）。
【００７４】
更に、各行には２つの追加フィールド、１及び２がある。これらには、例えば、特定の証明識別子が割り当てられた特定の製造者／アダプタ、２回又は特定のアサーションを検証する要求が行われた回数など、必要な追加情報を含めることができる。実質的に任意の所望の情報をこれらのフィールドに記憶できると考えられる。いくつかの例では、フィールド（単数又は複数）は、証明が以前に見られたデバイス（単数又は複数）の識別子（例えば、デバイス識別子）を含むことができ、フィールド（単数又は複数）は証明の検証中に更新される。
【００７５】
上述したように、証明データベース１５０のこの例示的な情報コンテンツ４００は、１つの可能なフォーマットにすぎない。例えば、情報コンテンツの行と列の数は少なくても多くてもよい。例えば、情報コンテンツには、０、１、３、４、又は５つの追加フィールドがあってもよい。情報コンテンツには、実質的に必要な任意の数の行を含めることができる。証明識別子、検証秘密コード及びアサーションのエントリに表示される特定の形式は、単なる一例の形式であることが更に明確に認識される。例えば、証明識別子及び検証秘密コードは、より多く又はより少ない数の記号で構成でき、これらの記号は、例えば、１０進数、１６進数、又はＡＳＣＩＩ文字セットで構成できる。
【００７６】
図５は、デバイス１３０が情報をデバイス１３０に記憶し、デバイス１３０が以下のステップを含むデバイス１３０に関するアサーションを証明できるようにするための方法５００の概略図を示す。
【００７７】
ステップＳ５１０で、基本秘密コード及び対応する証明識別子がデバイス１３０で受信される。
【００７８】
ステップＳ５２０で、基本秘密コードは、第１の所定のハッシュ関数を使用してデバイス１３０でハッシュされ、検証秘密コードを生成する。
【００７９】
ステップＳ５３０で、検証秘密コードは、第２の所定のハッシュ関数を使用して、ローカルで利用可能な情報の１つ以上の項目と組み合わせてデバイスでハッシュされて、ハッシュ値を生成する。
【００８０】
ステップＳ５４０では、ハッシュ値がデバイス１３０に記憶される。
【００８１】
図６は、電子デバイス６００の一例を概略的に示す。デバイスは、プログラム命令に応じてデータ処理を実行するための処理回路６１０、処理回路６１０によって処理されるデータ及び命令を記憶するためのデータストレージ６２０を有する。データストレージ６２０は、ハードウェアメカニズム（例えば、信頼できる実行環境を提供するメモリ保護ユニット又はセキュリティメカニズムを使用）又はソフトウェアメカニズム（例えば、暗号化）により保護されるセキュア領域６３０を有することができ、その結果、セキュア領域６３０に記憶されたデータには、信頼できる環境内で実行されていないソフトウェアはアクセスできない。デバイス６００は、外部デバイスと通信するための通信インタフェース６４０を有する。例えば、通信インタフェース６４０は、イーサネット（登録商標）、ＷｉＦｉ（登録商標）、ブルートゥース（登録商標）、ＺｉｇＢｅｅ（登録商標）などのような他の範囲の異なる通信プロトコルを使用することができる。デバイスは、温度、圧力、近くのユーザの近接などの特定の外部条件を感知するための１つ以上のセンサ６５０を有してもよい。提供される特定のセンサ６５０は、デバイスの目的に依存し得る。図６は、デバイスに提供され得る可能なハードウェアの単なる例であり、他の構成要素も提供され得ることが理解されるであろう。例えば、情報をユーザに表示し、ユーザからの入力を受信するために、ユーザとの対話が予想されるいくつかのデバイスに、ディスプレイ及び／又はユーザインタフェースモジュールを提供することができる。他の種類のデバイスは、単にデータをキャプチャして外部デバイスにデータを送信するセンサであってもよいため、これらの種類のデバイスはユーザインタフェイスやディスプレイを必要としない場合がある。証明生成器１１０、製造者／アダプタ１２０、検証装置１４０又は証明データベース１５０のいずれかを実装する場合は、電子デバイス６００に対して、デバイス１３０を実装する場合よりも処理回路がより強力であり、データストレージがより大きくなり得ることが理解されよう。
【００８２】
上述の方法は、装置で実行されるコンピュータプログラムの制御下で実行され得る。したがって、コンピュータプログラムは、上記の方法のいずれかを実行するための装置を制御するための命令を含むことができる（証明生成器１１０、製造者／アダプタ１２０、デバイス１３０、検証装置１４０及び証明データベース１５０のいずれかで実行される方法を含む）。プログラムは、記憶媒体に記憶できる。記憶媒体は、非一時的な記録媒体又は一時的な信号媒体であってもよい。
【００８３】
本出願において、「〜ように構成される」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有することができ、又はプロセッサ若しくは他の処理装置が機能を実行するようにプログラムされてもよい。「〜ように構成される」は、定義された動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
【００８４】
本開示の例示的な教示を添付の図面を参照して詳細に説明したが、本発明はこれらの厳密な教示に限定されず、様々な変更及び修正が添付の特許請求の範囲によって規定される本発明の範囲及び趣旨から逸脱することなく、当業者により本発明の範囲内において行うことができる。
【図１】
2020071880.tif 000003
【図２】
2020071880.tif 000004
【図３】
2020071880.tif 000005
【図４】
2020071880.tif 000006
【図５】
2020071880.tif 000007
【図６】
2020071880.tif 000008
【外国語明細書】
2020071880000001.pdf