(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-06-08
(54)【発明の名称】運転中の緊急車両のIDの検証
(51)【国際特許分類】
H04L 9/32 20060101AFI20220601BHJP
H04L 9/10 20060101ALI20220601BHJP
G06F 21/44 20130101ALI20220601BHJP
G06F 21/73 20130101ALI20220601BHJP
G08G 1/087 20060101ALI20220601BHJP
G08G 1/09 20060101ALI20220601BHJP
H04L 9/08 20060101ALI20220601BHJP
【FI】
H04L9/32 100B
H04L9/10 Z
G06F21/44
G06F21/73
G08G1/087
G08G1/09 H
H04L9/08 F
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021557291
(86)(22)【出願日】2020-03-04
(85)【翻訳文提出日】2021-11-10
(86)【国際出願番号】 US2020020909
(87)【国際公開番号】W WO2020197724
(87)【国際公開日】2020-10-01
(32)【優先日】2019-03-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】モンデッロ アントニノ
(72)【発明者】
【氏名】トロイア アルベルト
【テーマコード(参考)】
5H181
【Fターム(参考)】
5H181AA12
5H181BB04
5H181JJ10
5H181LL09
(57)【要約】
方法は、以下を含む。第1の車両のコンピューティングデバイスによって、ホストデバイスからのコマンドを受信する。コマンドを受信することに応答して、新規デバイスシークレットをメモリに格納する。新規デバイスシークレットを使用するコンピューティングデバイスによって、識別子、証明書、及び公開キーを含むトリプルを生成する。また、コンピューティングデバイスによって、トリプルを第2の車両に送信し、第2の車両は、トリプルを使用して第1の車両のIDを検証するように構成される。
【特許請求の範囲】
【請求項1】
方法であって、
第1の車両のコンピューティングデバイスによって、ホストデバイスからのコマンドを受信すること、
前記コマンドを受信することに応答して、新規デバイスシークレットをメモリに格納すること、
前記新規デバイスシークレットを使用して前記コンピューティングデバイスによって、識別子、証明書、及び公開キーを含むトリプルを生成すること、及び
前記コンピューティングデバイスによって、前記トリプルを第2の車両に送信することであって、前記第2の車両は、前記トリプルを使用して前記第1の車両のIDを検証するように構成される、前記送信すること、
を含む、前記方法。
【請求項2】
前記新規デバイスシークレットが、
前記ホストデバイスから受信されるか、
前記ホストデバイスから前記コマンドを受信した後、前記コンピューティングデバイスによって生成される、請求項1に記載の方法。
【請求項3】
前記新規デバイスシークレットは、前記第1の車両の所定のステータスまたはクラスに関連付けられている、請求項1に記載の方法。
【請求項4】
前記第2の車両が前記第1の車両の前記IDを検証することに応答してアクションを実行するように構成されている、請求項1に記載の方法。
【請求項5】
前記アクションは、前記第2の車両のユーザディスプレイにアラートを提示すること、前記第2の車両のナビゲーションの経路または速度を変更すること、または前記第2の車両のブレーキシステムを作動させることの少なくとも1つである、請求項4に記載の方法。
【請求項6】
前記コンピューティングデバイスによって、前記トリプルを交通管制システムに送信することをさらに含み、前記交通管制システムは、
前記トリプルを使用して前記第1の車両の前記IDを検証し、
前記第1の車両の前記IDを検証することに応じて、前記交通管制システムの状態を変更して、前記第1の車両の通過を許可するように構成される、請求項1に記載の方法。
【請求項7】
前記新規デバイスシークレットが、前記メモリの中で以前に格納されたデバイスシークレットを置き換える、請求項1に記載の方法。
【請求項8】
前記ホストデバイスと通信するために使用されるシークレットキーを格納することをさらに含み、前記シークレットキーは、前記新規デバイスシークレットを生成するためのメッセージ認証コードへの入力として使用される、請求項1に記載の方法。
【請求項9】
前記コマンドが、前記シークレットキーを使用して認証され、前記方法が、前記コンピューティングデバイスによって前記ホストデバイスに、前記新規デバイスシークレットが格納されたことの確認を送信することをさらに含む、請求項8に記載の方法。
【請求項10】
前記第2の車両が前記第1の車両の前記IDを検証した後に、
秘密キーを使用して前記コンピューティングデバイスにより、メッセージを暗号化することであって、前記秘密キーと前記公開キーは、前記新規デバイスシークレットを使用して生成された関連するペアである、前記暗号化すること、及び
前記コンピューティングデバイスによって、前記暗号化されたメッセージを前記第2の車両に送信することであって、前記暗号化されたメッセージはフレッシュネスを含む、前記送信することをさらに含む、請求項1に記載の方法。
【請求項11】
前記メッセージが構成データを含み、前記第2の車両は、前記メッセージを受信することに応答してアクションを実行するように構成され、前記アクションは、前記構成データに従って前記第2の車両によって実行される、請求項10に記載の方法。
【請求項12】
第1の車両で使用するためのシステムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに、
ホストデバイスからコマンドを受信すること、
前記コマンドを受信することに応答して、新規デバイスシークレットを格納すること、
前記新規デバイスシークレットを使用して、証明書を生成すること、及び
前記証明書を第2の車両に送信することであって、前記第2の車両が、前記証明書を使用して前記第1の車両のIDを検証するように構成される、前記送信すること
を命令するように構成される命令を含むメモリと、
を含む、前記システム。
【請求項13】
前記新規デバイスシークレットは、
前記ホストデバイスから受信されるか、
前記ホストデバイスから前記コマンドを受信した後、前記システムによって生成されるかである、請求項12に記載のシステム。
【請求項14】
前記ホストデバイスと通信するためのシークレットキーを格納するメモリをさらに含み、前記命令が、前記シークレットキーを、前記新規デバイスシークレットを生成するためのメッセージ認証コードへの入力として使用するように前記少なくとも1つのプロセッサに命令するようさらに構成される、請求項12に記載のシステム。
【請求項15】
前記第2の車両が、前記第1の車両の前記IDを検証することに応答してアクションを実行するように構成され、前記アクションは、前記第2の車両のユーザディスプレイにアラートを提示すること、前記第2の車両のナビゲーションの経路または速度を変更すること、または前記第2の車両のブレーキシステムを作動させることの少なくとも1つである、請求項12に記載のシステム。
【請求項16】
前記新規デバイスシークレットは、前記第1の車両の所定のステータスまたはクラスに関連付けられている、請求項12に記載の方法。
【請求項17】
第1の車両のコンピューティングデバイスで実行されるとき、前記コンピューティングデバイスに、少なくとも、
ホストデバイスからコマンドを受信すること、
前記コマンドを受信することに応答して、新規デバイスシークレットをメモリに格納すること、
前記新規デバイスシークレットを使用して、識別子、証明書、及び公開キーを含むトリプルを生成すること、及び
前記トリプルを第2の車両に送信することであって、前記第2の車両は、前記トリプルを使用して前記第1の車両の前記IDを検証するように構成される、前記送信すること、を引き起こす命令を格納する、非一時的コンピュータ記憶媒体。
【請求項18】
前記新規デバイスシークレットをメモリに格納することが、以前に格納されたデバイスシークレットを前記新規デバイスシークレットと置換することを含み、前記命令は、さらに、前記コンピューティングデバイスに前記識別子を前記ホストデバイスに送信させる、請求項17に記載の非一時的コンピュータ記憶媒体。
【請求項19】
前記識別子は公開識別子であり、第1の非対称ジェネレータは、前記公開識別子と秘密識別子を関連付けられたペアとして生成し、
第2の非対称ジェネレータは、前記公開キーと秘密キーを関連付けられたペアとして生成する、請求項17に記載の非一時的コンピュータ記憶媒体。
【請求項20】
前記トリプルを生成することは、
前記ホストデバイスからメッセージを受信すること、
前記メッセージを前記公開キーと連結して、第1のデータを提供すること、
前記秘密識別子を使用して前記第1のデータを暗号化し、第2のデータを提供すること、
前記秘密キーを使用して前記第2のデータを暗号化し、前記証明書を提供することを含む、請求項19に記載の非一時的コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本願は、2019年3月25日に出願され、「VERIFYING IDENTITY OF AN EMERGENCY VEHICLE DURING OPERATION」と題された米国特許出願公開第16/363,088号に対する優先権を主張するものであり、その開示全体が参照により本明細書に組み込まれる。
【0002】
本願は、2018年5月3日に出願されたPisasaleらによる「KEY GENERATION AND SECURE STORAGE IN A NOISY ENVIRONMENT」と題された、米国非仮特許出願第15/970,660号に関し、この出願の全内容は、本明細書に完全に記載されているかのように、参照により組み込まれる。
【0003】
本願は、2017年12月22日に出願されたMondelloらによる「PHYSICAL UNCLONABLE FUNCTION USING MESSAGE AUTHENTICATION CODE」と題された米国非仮特許出願第15/853,498号に関連しており、この出願の全内容は、本明細書に完全に記載されているかのように、参照により組み込まれる。
【0004】
本願は、2018年4月27日に出願されたMondelloらによる「SECURE DISTRIBUTION OF SECRET KEY USING A MONOTONIC COUNTER」と題された米国非仮特許出願第15/965,731号に関し、この出願の全内容は、本明細書に完全に記載されているかのように、参照により組み込まれる。
(技術分野)
【0005】
本明細書に開示される少なくともいくつかの実施形態は、概して、コンピューティングデバイスのIDに関し、より具体的には、ただし限定されることなく、運転中の車両のIDを検証することに関する。
【背景技術】
【0006】
物理複製困難関数(PUF)は、例えば、マイクロプロセッサなどの半導体デバイスの一意のIDとして機能できるデジタルの値を提供する。PUFは、例えば、半導体製造中に自然に発生し、他の点では同一の半導体チップを区別できるようにする物理的な変動に基づいている。
【0007】
PUFは通常、暗号化で使用される。PUFは、例えば、物理的構造で具体化される物理的実体であり得る。PUFは多くの場合、集積回路に実装され、通常、セキュリティ要件の高い用途で使用される。例えば、PUFは、一意で、改ざんできないデバイスの識別子として使用できる。PUFは、安全なキーの生成やランダム性のソースとしても使用できる。
【0008】
デバイスの識別に関連する一例では、Microsoft(登録商標)Azure(登録商標)IoTプラットフォームは、Microsoftが提供するクラウドサービスのセットである。Azure(登録商標)IoTプラットフォームは、Device Identity Composition Engine(DICE)及び様々な種類のハードウェアセキュリティモジュール(HSM)をサポートする。DICEは、デバイスの識別と認証に関するTrusted Computing Group(TCG)の今後の標準であり、製造業者はシリコンゲートを使用して、ハードウェアに基づくデバイスの識別を作成できる。HSMは、デバイスのIDを保護し、ハードウェアベースのデバイス認証やゼロタッチプロビジョニングなどの高度な機能を提供するために使用される。
【0009】
DICEは、HSMフットプリントを使用して、認証、セキュアブート、リモート認証などのセキュリティソリューションの構築にて使用するための信頼を定める、スケーラブルなセキュリティの枠組みを提供する。DICEは、IoTデバイスを特徴付ける制約的なコンピューティングの現在の環境に有用であり、Trusted Computing Group(TCG)やTrusted Platform Module(TPM)などの従来のセキュリティの枠組みの標準に代わるものを提供する。Azure(登録商標)IoTプラットフォームは、一部のシリコンベンダーのHSMでDICEをHSMでサポートしている。
【0010】
信頼サービスに関連する1つの例で、ロバストなモノのインターネット(RIoT)は、コンピューティングデバイスに信頼サービスを提供するためのアーキテクチャである。信頼サービスには、デバイスのID、認証、及びデータの整合性が含まれる。RIoTアーキテクチャを使用して、マルウェアによって侵害されたデバイスへの信頼をリモートで再確立できる。また、RIoTサービスは、非常に小さなデバイスでも、低いコストで提供できる。
【0011】
セキュリティ技術の向上により、現場の製品をより頻繁にソフトウェアで更新する必要が生じている。ただし、これらの更新は、人間の関与なしに管理及び検証しなければならない。RIoTは、これらの技術的な問題に対処するために使用できる。
【0012】
RIoTは、多くのセキュリティシナリオの暗号化操作とキー管理の基盤を提供する。認証、整合性の検証、及びデータの保護には、暗号化及び復号化をするための暗号化キーと、データをハッシュ及び署名するためのメカニズムが必要である。ほとんどのインターネット接続デバイスは、他のデバイスとの通信を保護するために暗号化も使用している。
【0013】
RIoTによって提供される暗号化サービスには、デバイスのID、データの保護、及び認証が含まれる。デバイスのIDに関しては、デバイスは通常、暗号化キーの所持を証明することによって、自身を認証する。デバイスに関連付けられたキーが抽出されて複製された場合、デバイスは偽装できる。
【0014】
データの保護に関しては、デバイスは通常、暗号化を使用してローカルに格納されたデータを暗号化し、整合性を保護する。暗号化キーが許可されたコードにのみアクセス可能である場合、許可されていないソフトウェアはデータを復号化または変更できない。
【0015】
認証に関しては、デバイスが実行中のコードとセキュリティ構成を報告する必要がある場合がある。例えば、認証は、デバイスが最新のコードを実行していることを証明するために使用される。
【0016】
キーがソフトウェアのみで管理されている場合、ソフトウェアコンポーネントのバグにより、キーが危険に曝される可能性がある。ソフトウェアのみのシステムの場合、キーの侵害後に信頼を回復する主な方法は、更新されたソフトウェアをインストールし、デバイスに新しいキーを与えることである。これはサーバ及びモバイルデバイスでは時間を要し、デバイスに物理的にアクセスできないときは不可能である。
【0017】
リモート再プロビジョニングを保護するためのいくつかのアプローチは、ハードウェアベースのセキュリティを使用する。ソフトウェアレベルの攻撃により、ハッカーはハードウェアで保護されたキーを使用できるが、それらを抽出することはできない。したがって、ハードウェアで保護されたキーは、侵害されたシステムを安全に再プロビジョニングするための便利な構成要素である。トラステッドプラットフォームモジュール、すなわちTPMは、キーのハードウェアでの保護をもたらし、デバイスが実行中のソフトウェアを報告(証明)できるようにもするセキュリティモジュールの例である。したがって、侵害されたTPMを備えたデバイスは、安全に新しいキーを発行でき、認証レポートを提供できる。
【0018】
TPMは、コンピューティングプラットフォームで広く利用できる(例えば、SoC統合及びプロセッサモードの分離されたファームウェアTPMを使用)。ただし、TPMは多くの場合実用的ではない。例えば、小型のIoTデバイスは、コストと電力のニーズを大幅に増やすことなくTPMをサポートすることはできない。
【0019】
RIoTは、小型のコンピューティングデバイスにデバイスのセキュリティを設けるために使用できるが、任意のプロセッサまたはコンピュータシステムに適用することもできる。RIoTコアの外部のソフトウェアコンポーネントが危険に曝された場合、RIoTは安全なパッチの適用と再プロビジョニングを提供する。RIoTはまた、暗号化キーの保護に対しても異なるアプローチを使用する。RIoTの枠組みで使用される最も保護された暗号化キーは、起動時に短時間しか使用できない。
【0020】
実施形態は、例として例示されており、同様の参照が同様の要素を示す添付の図面の図に限定されない。
【図面の簡単な説明】
【0021】
【
図1】一実施形態による、コンピューティングデバイスのIDを検証するホストデバイスを示す。
【
図2】一実施形態による、IDコンポーネント及び検証コンポーネントを有する例示的なコンピューティングシステムを示す。
【
図3】一実施形態による、車両の例示的なコンピューティングデバイスを示す。
【
図4】一実施形態による、車両の例示的なコンピューティングデバイスと通信する例示的なホストデバイスを示す。
【
図5A】一実施形態による、ホストデバイスの識別子、証明書、及びキーを生成するアプリケーションボードを示す。
【
図5B】一実施形態による、層を使用して段階的に起動する例示的なコンピューティングシステムを示す。
【
図6】一実施形態による、非対称ジェネレータを使用して識別子、証明書、及びキーを生成する例示的なコンピューティングデバイスを示す。注
【
図7】一実施形態による、復号化操作を使用してコンピューティングデバイスのIDを検証する検証コンポーネントを示す。
【
図8】一実施形態による、証明書を検証するための例示的なプロセスのブロック図を示す。
【
図9】一実施形態による、識別子、証明書、及びキーを使用してコンピューティングデバイスのIDを検証するための方法を示す。
【
図10】一実施形態による、物理複製困難関数(PUF)デバイスからの入力を受信するメッセージ認証コード(MAC)の出力から一意のキーを生成するためのシステムを示す。
【
図11】一実施形態による、セレクタモジュールによって選択された1つまたは複数のPUFデバイスからの入力を受信するMACの出力から一意のキーを生成するためのシステムを示す。
【
図12】一実施形態による、1つまたは複数のPUFデバイスからの入力、及びモノトニックカウンタからの入力(及び/またはNONCE、タイムスタンプなどのような別のフレッシュネスメカニズムからの入力)を受信するMACの出力から一意のキーを生成するためのシステムを示す。
【
図13】一実施形態による、1つまたは複数のPUFから提供される1つまたは複数の入力値を使用するMACからの出力を生成する方法を示す。
【
図14】一実施形態による、1つまたは複数のPUFデバイスからの入力及びモノトニックカウンタからの入力(及び/またはNONCE、タイムスタンプなどのような別のフレッシュネスメカニズムからの入力)を受信し、セッションキーを生成するために付加的なMACを追加する、MACの出力からルートキーを生成するためのシステムを示す。
【
図15】一実施形態による、難読化されたキーを不揮発性メモリに格納するためのコンピューティングデバイスを示す。
【
図16】一実施形態による、難読化プロセス中に生成された中間キーの例を示す。
【
図17】一実施形態による、
図16の難読化プロセス中に生成された別の中間キーの例を示す。
【
図18】一実施形態による、難読化されたキーを生成し、不揮発性メモリに格納するためのコンピューティングデバイスを示す。
【
図19】一実施形態による、キーインジェクションに基づいて初期キーを生成し、初期キーを難読化し、難読化されたキーを不揮発性メモリに格納するためのコンピューティングデバイスを示す。
【
図20】一実施形態による、物理複製困難関数(PUF)を使用してIDを生成するためのコンピューティングデバイスを示す。
【
図21】一実施形態による、システムのモノトニックカウンタが提供する初期値を、システムの改ざんが起こったかどうかの判定に使用するために送信するシステムを示す。
【
図22】一実施形態による、物理複製困難関数(PUF)を使用してコンピューティングデバイス用のIDを生成するための方法を示す。
【
図23】一実施形態による、1つまたは複数の証明書を使用して緊急車両のIDを検証する、近くの車両を示す。
【
図24】一実施形態による、識別子、証明書、及び公開キーを使用して車両のIDを検証するための方法を示す。
【発明を実施するための形態】
【0022】
本明細書の少なくともいくつかの実施形態は、1つまたは複数のコンピューティングデバイスのIDの検証に関する。様々な実施形態において、ホストデバイスは、コンピューティングデバイスにメッセージを送信することによって、コンピューティングデバイスのIDを検証する。コンピューティングデバイスは、メッセージを使用して識別子、証明書、及びキーを生成する。これらはホストデバイスに送信される。ホストデバイスは、生成された識別子、証明書、及びキーを使用して、コンピューティングデバイスのIDを検証する。
【0023】
他の実施形態は、物理複製困難関数(PUF)を使用してコンピューティングデバイスのIDを生成することに関する。以下に説明する様々な実施形態では、ホストデバイスが上記のようにIDを検証する前に、上記のコンピューティングデバイスは、少なくとも1つのPUFを使用してその自己IDを生成することができる。1つまたは複数のPUFを使用してIDを生成することに関する様々な実施形態は、「PUFを使用したコンピューティングデバイスのIDの生成」というタイトルの以下のセクションで説明される。
【0024】
さらに他の実施形態は、第1の車両にIDを割り当てること、及び第2の車両を使用して第1の車両のIDを検証することに関する。一実施形態では、第1の車両は緊急車両である。他の実施形態では、第1の車両は、動作状態及び/または車両のクラスに関連する車両であり得る。車両(例えば、緊急車両)のIDの割り当て及び検証に関する様々な実施形態は、以下の「車両のIDの割り当て及び検証」というタイトルのセクションで説明されている。
【0025】
IDの検証に関連するいくつかの例では、コンピューティングデバイスはフラッシュメモリデバイスであり得る。いくつかの例では、フラッシュメモリを利用して、コンピューティングシステム(自動運転車両のアプリケーション制御装置など)に強力なレベルのセキュリティ機能を追加する。
【0026】
フラッシュメモリは、多くのコンピュータシステムで使用されている。現在、シリアルNOR、パラレルNOR、シリアルNAND、パラレルNAND、e.MMC、UFSなど、様々なタイプのフラッシュメモリが存在する。これらのソケットは、様々な業界や用途に亘り大半の組み込みシステムで使用されている。
【0027】
例えば、シリアルNORは、医療機器、ファクトリーオートメーションボード、自動車用ECU、スマートメーター、インターネットゲートウェイなどの様々な用途で使用されている。チップセットアーキテクチャ(プロセッサ、コントローラ、またはSoC)、オペレーティングシステム、及びこれらの応用全体で使用されるサプライチェーンの多様性を考えると、フラッシュメモリはこれらのシステムの公分母の構成要素である。
【0028】
今日のコンピュータシステムの復元力は、通常、デバイスに統合され、デバイスが提供するセキュリティ機能のソリューションによって活用される信頼の基点(roots of trust)の場所によって特徴付けられる。信頼の基点のさらなる情報については、米国国立標準技術研究所(NIST)が特別刊行物800-164で作成した定義を参照されたい。既存の業界では、ハードウェアとソフトウェアの機能を組み合わせて使用しながら、システムレベルで信頼の基点の様々な実装を使用して、アプローチの断片化とセキュリティのレベルの混乱という技術的な問題が発生している。この厄介な一群の選択には、重要なコードとデータが格納されている不揮発性メモリを防御する方法のキーの制限にも苛まれている。
【0029】
既存のアプローチは、プロセッサと、ハードウェアセキュリティモジュール(HSM)などの他の安全な要素に依存して、システムに重要なセキュリティサービスを提供している。これにより、ディスクリートフラッシュメモリコンポーネントがシステムクリティカルなコードとデータを格納する多くのシステムで、ブートの最低レベルでセキュリティのギャップが生じている。フラッシュは、多くのハッカーが、より高いレベルのコードから身を隠し、削除に抵抗できるAdvanced Persistent Threat(APT)を作成するターゲットになっている。これらの事例の多くで、フラッシュメモリは新しい悪意のあるコードで再イメージ化または書き換えられ、そのデバイスの整合性が損なわれる。
【0030】
IDの検証に関連する本開示の様々な実施形態は、上記の技術的問題に対する技術的解決策を提供する。いくつかの実施形態では、コンピューティングデバイスは、ハードウェアベースの信頼の基点をフラッシュメモリデバイスに統合し、IoTデバイスの強力な暗号化でのID及び正常性管理を可能にする。重要なセキュリティプリミティブをメモリ内に移動することにより、メモリ自体に格納されているコードとデータの整合性を保護することがより簡単になる。このアプローチにより、実装の複雑さとコストを最小限に抑えながら、システム水準でのセキュリティを大幅に強化できる。
【0031】
一実施形態では、新しいIoTデバイス管理機能は、フラッシュメモリ及び関連するソフトウェアを使用してMicrosoft(登録商標)Azure(登録商標)IoTクラウドによるデバイスのオンボーディング及び管理を可能にすることにより、フラッシュメモリを活用する。一例では、解決策は、重要なデバイスプロビジョニングサービス(Azure IoT Hubデバイスプロビジョニングサービス(DPS)など)の基盤となる暗号化IDを提供する。一例では、このDPSと有効なメモリを使用すると、デバイスを適切なIoTハブやその他のサービスにゼロタッチでプロビジョニングできる。
【0032】
いくつかの実施形態では、上記の機能を実装するために、Device Identity Composition Engine(DICE)が使用される(DICEは、Trusted Computing Group(TCG)からの今後の標準である)。一例では、有効なメモリは、信頼できるハードウェアのみがMicrosoft Azure IoTクラウドにアクセスすることを許可する。一例では、IoTデバイスの正常性とIDは、重要なコードが通常格納されているメモリで検証される。各IoTデバイスの一意のIDにより、今やブートプロセスから開始して、新しいレベルでエンドツーエンドのデバイス整合性を提供できるようになった。これにより、ハードウェアベースのデバイスの認証とプロビジョニング、及び必要に応じてデバイスの管理上の修復などの追加機能を有効にできる。
【0033】
一実施形態では、方法は、コンピューティングデバイス(例えば、シリアルNORフラッシュメモリデバイス)によって、ホストデバイス(例えば、CPU、GPU、FPGA、または車両のアプリケーションコントローラ)からのメッセージを受信すること、コンピューティングデバイスによって、識別子(例えば、公開識別子IDL1public)、証明書(例えば、IDL1certificate)、及びキー(例えば、KL1public)を生成することであって、識別子は、コンピューティングデバイスのIDと関連付けられ、証明書はメッセージを使用して生成される、生成すること、及びコンピューティングデバイスによって、識別子、証明書、及びキーをホストデバイスに送信することであって、ホストデバイスは、識別子、証明書、及びキーを使用してコンピューティングデバイスのIDを検証するように構成される、送信することを含む。
【0034】
いくつかの実施形態では、上記のコンピューティングデバイス(例えば、フラッシュメモリデバイス)は、上記の識別子、証明書、及びキーを生成するために使用され、コンピューティングデバイスのIDを検証するためにホストデバイスによって使用されるDICE-RIoT機能を統合する。一例では、コンピューティングデバイスは、DICE-RIoTプロトコルの層間の識別ステップのシーケンスが基づくプリミティブキーとして機能するデバイスシークレットを格納する。一例では、DICE-RIoTの機能の層L0、L1は、ハードウェア及び/またはソフトウェアを使用して、コンピューティングデバイスに実装されている。一例では、層L0は、単にハードウェアに実装されている。
【0035】
図1は、一実施形態による、コンピューティングデバイス141のIDを検証するホストデバイス151を示す。ホストデバイス151は、コンピューティングデバイス141にメッセージを送信する。一実施形態では、ホストデバイス151は、リプレイ攻撃を回避するためにコンピューティングデバイス141にメッセージを送信する際に使用するためのフレッシュネスを生成するフレッシュネスメカニズム(図示せず)を含む。一例では、コンピューティングデバイス141に送信される各メッセージは、モノトニックカウンタによって生成されたフレッシュネスを含む。
【0036】
一例では、メッセージは、空の文字列、従来の既知の文字列(例えば、ホストデバイス151の製造業者またはオペレータに知られている英数字の文字列)であるか、または別の値(例えば、コンピューティングデバイスに割り当てられたIDの値)であり得る。一例では、メッセージはデバイスの一意のID(UID)である。
【0037】
メッセージを受信することに応答して、コンピューティングデバイス141は、識別子、証明書、及びキーを生成する。識別子は、コンピューティングデバイス141のIDに関連付けられている。コンピューティングデバイス141は、IDコンポーネント147の動作及び/またはコンピューティングデバイス141の他の機能を制御する1つまたは複数のプロセッサ143を含む。
【0038】
識別子、証明書、及びキーは、IDコンポーネント147によって生成され、デバイスシークレット149に基づく。一例では、デバイスシークレット149は、コンピューティングデバイス141のメモリに格納された一意のデバイスシークレット(UDS)である。一例では、IDコンポーネント147は、DICE-RIoTプロトコルを実装するためのプリミティブキーとしてUDSを使用する。識別子、証明書、及びキーは、DICE-RIoTプロトコルの層L
1からの出力である(例えば、
図6を参照)。一実施形態では、層L
1のIDは、コンピューティングデバイス141自体のID、コンピューティングデバイス141の製造業者、コンピューティングデバイス141を構成要素として含むものの製造業者、及び/またはコンピューティングデバイス141のメモリに格納されているアプリケーションまたは他のソフトウェアに対応している。一例では、アプリケーションID(例えば、ID番号)は、携帯電話、テレビ、STBなどに対するものであり、それについて、文字と数字の一意の組み合わせが、モノを識別するために使用される。
【0039】
一例では、層L1のIDはASCII文字列である。例えば、IDは、モノの名前と連結された製造業者名にすることができる(例えば、LG|TV_model_123_year_2018など)。一例では、IDは16進形式で表すことができる(例えば、53 61 6D 73 75 6E 67 20 7C 20 54 56 5F 6D 6F 64 65 6C 5F 31 32 33 5F 79 65 61 72 5F 32 30 31 38)。
【0040】
一実施形態では、製造業者は、生産されている物品のクラスまたはセットにUDSを使用することができる。他の実施形態では、各物品は、それ自身の固有のUDSを有することができる。例えば、テレビのUDSはUDS=0x12234…4444であり、ラップトップのUDSはUDS=0xaabb….00322であってよい。
【0041】
一実施形態では、デバイスシークレット149は、コンピューティングデバイス141によってメモリ145に格納されたシークレットキーである。IDコンポーネント147は、シークレットキーをメッセージ認証コード(MAC)への入力として使用して、導出されたシークレットを生成する。一例では、派生シークレットは、DICE-RIoTプロトコルの融合派生シークレット(FDS)である。
【0042】
一例では、メモリ145は、コンピューティングデバイス141を起動するための初期起動コードを格納する読み取り専用メモリ(ROM)を含む。FDSは、起動の操作中にプロセッサ143によって初期起動コードに提供されるキーである。一例では、DICE-RIoTプロトコルの層L0にROMが対応する。
【0043】
ホストデバイス151は、コンピューティングデバイス141のIDを検証する検証コンポーネント153への入力として、識別子、証明書、及びキーを使用する。一実施形態では、検証コンポーネント153は、結果をもたらすために識別子を使用して、少なくとも1つの復号化操作を実行する。結果は、キーと比較されて、コンピュータデバイス141のIDが有効であるかどうかが判定される。そうである場合、ホストデバイス151は、コンピューティングデバイス141から受信したキーを使用して、コンピューティングデバイス141とのさらなる通信を実行する。例えば、ホストデバイス151が「トリプル(triple)」(識別子、証明書、及びキー)を検証すると、キーを使用して、コンピューティングデバイス141とホストデバイス151との間で交換される他のいずれかの情報を証明することができる。
【0044】
一実施形態では、デジタル識別は、多数の「モノ」に割り当てられる(例えば、モノのインターネットによる)。一例では、モノは、車両などの物理的物体または車両の内部に存在する物理的な物品である。一例では、モノは人物または動物である。例えば、各々の人または動物に一意のデジタル識別子を割り当てることができる。
【0045】
場合によっては、製品の製造業者は、各製品が本物であると証明できることを望んでいる。現在、この問題は、信頼できる販売者からのみものを購入するか、購入したものが本物であることを保証する何らかの法的証明書を使用して他者からものを購入することで解決されている。しかし、モノの盗難の場合、モノが電子的なIDを持たない場合、不適切に使用されないようにモノをブロックまたはローカライズすることは困難である。一例では、ローカリゼーションは、モノが公共インフラストラクチャと相互作用しようとするときのIDに基づいている。一例では、ブロッキングは、公共インフラストラクチャを使用したいモノのIDを証明できないことに基づいている。
【0046】
一実施形態では、コンピューティングデバイス141は、コンピューティングデバイス141に対応する信頼のチェーンに一意の署名を関連付けるために、IDコンポーネント147を使用し、DICE-RIoTプロトコルを実装する。コンピューティングデバイス141は、層L0及びL1を確立する。信頼のチェーンは、層L2、…を確立するホストデバイス151によって継続される。一例では、一意の識別子を、任意の定義された環境(例えば、地理的パラメータによって定められた信頼ゾーン)のすべての物体、人間、及び動物に割り当てることができる。
【0047】
一実施形態では、コンピューティングデバイス141は、IDを割り当てられることが望まれるモノの構成要素である。例えば、モノは、コンピューティングデバイス141を含む自動運転車両であり得る。例えば、コンピューティングデバイス141は、車両のアプリケーション制御装置によって使用されるフラッシュメモリであり得る。
【0048】
コンピューティングデバイス141が製造されるとき、製造業者は、UDSをメモリ145にインジェクションすることができる。一例では、UDSは、コンピューティングデバイス141を使用して付加的な製造上の操作を実行することを顧客と合意し、共有することができる。別の例では、UDSは元の製造業者によってランダムに生成され、その後安全なインフラストラクチャを使用して(例えば、インターネットなどのネットワークを介して)顧客に通信される。
【0049】
一例では、顧客は、コンピューティングデバイス141を組み込んだ車両の製造業者であり得る。多くの場合、車両の製造業者は、UDSを変更して、コンピューティングデバイス141の販売者に知られないようにすることを望んでいる。そのような場合、顧客は、ホストデバイス151によってコンピューティングデバイス141に与えられる認証された置換コマンドを使用してUDSを置換することができる。
【0050】
いくつかの実施形態では、顧客は、顧客の不変の情報をコンピューティングデバイス141のメモリ145にインジェクションすることができる。一例では、不変の情報は、一意のFDSを生成するために使用され、識別するものとしてのみ使用されるわけではない。顧客の不変情報は、顧客が製造する様々な物体を区別するために使用される。例えば、顧客の不変情報は、基本情報を定義するための文字や数字の組み合わせ(例えば、以下の、日付、時刻、ロット位置、ウェーハ位置、ウェーハのx、y位置などの情報の一部またはすべての組み合わせ)であり得る。
【0051】
例えば、多くの場合、不変の情報には、ユーザ(例えば、製造元からデバイスを受け取った顧客)によって実行された暗号化関数構成からのデータも含まれる。この構成または設定は、認証されたコマンド(実行するキーの知識が必要なコマンド)を使用することによってのみ実行できる。ユーザはキーについての知識がある(例えば、製造元から安全なインフラストラクチャを介してキーが提供されることに基づいている)。不変の情報は、コンピューティングデバイスの暗号化IDの形式を表し、これは、デバイスの一意のID(UID)とは異なる。一例では、情報の不変のセットに暗号構成を含めることは、不変の情報を自己カスタマイズするのに役立つツールをユーザに与える。
【0052】
一実施形態では、コンピューティングデバイス141は、フレッシュネスを生成するフレッシュネスメカニズムを含む。フレッシュネスは、ホストデバイス151に送信されるときに、識別子、証明書、及びキーと共にもたらされ得る。フレッシュネスは、ホストデバイス151での他の通信で使用することもできる。
【0053】
一実施形態では、コンピューティングデバイス141は、アプリケーションボードのコンポーネントである。アプリケーションボードの別のコンポーネント(図示せず)は、デバイスシークレット149の知識(例えば、インジェクションされたUDSの知識)を使用して、コンピューティングデバイス141のIDを検証することができる。コンポーネントは、UDSの所持を証明するために、コンピューティングデバイス141がメッセージ認証コードを使用して出力を生成することを要求する。例えば、メッセージ認証コードは次のようになる。HMAC(UDS,“application board message|freshness”)である。
【0054】
別の実施形態では、FDSはまた、デバイスの所持を証明するための基準として使用することができる(例えば、シークレットキー(複数可)の知識)。FDSは、次のようにUDSから派生する。FDS=HMAC-SHA256[UDS,SHA256(“Identity of L1”)]
したがって、メッセージ認証コードは次のようになり得る。HMAC(FDS,“application board message|freshness”)である。
【0055】
図2は、一実施形態による、IDコンポーネント107及び検証コンポーネント109を有する例示的なコンピューティングシステムを示す。ホストシステム101は、バス103を介してメモリシステム105と通信する。メモリシステム105の処理デバイス111は、不揮発性メモリ121のメモリ領域111、113、…、119への読み取り/書き込みアクセスを有する。一例では、ホストシステム101はまた、揮発性メモリ123からデータを読み取り、揮発性メモリ123にデータを書き込む。一例では、IDコンポーネント107は、DICE-RIoTプロトコルの層L
0及びL
1をサポートする。一例では、不揮発性メモリ121はブートコードを格納する。
【0056】
検証コンポーネント109は、メモリシステム105のIDを検証するために使用される。検証コンポーネント109は、例えば上記のように、ホストシステム101からのホストメッセージを受信することに応答して、IDコンポーネント107によって生成された識別子、証明書、及びキーを含むトリプルを使用する。
【0057】
IDコンポーネント107は、
図1のIDコンポーネント147の例である。検証コンポーネント109は、
図1の検証コンポーネント153の例である。
【0058】
メモリシステム105は、キーストレージ157及びキージェネレータ159を含む。一例では、キーストレージ157は、ルートキー、セッションキー、UDS(DICE-RIoT)、及び/またはメモリシステム105による暗号化操作に使用される他のキーを格納することができる。
【0059】
一例では、キージェネレータ159は、検証コンポーネント109による検証で使用するためにホストシステム101に送信される公開キーを生成する。公開キーは、上記のように、識別子と証明書も含むトリプルの一部として送信される。
【0060】
メモリシステム105は、フレッシュネスジェネレータ155を含む。一例では、フレッシュネスジェネレータ155は、認証されたコマンドに使用することができる。一例では、複数のフレッシュネスジェネレータ155を使用することができる。一例では、フレッシュネスジェネレータ155は、ホストシステム101によって使用するために利用可能である。
【0061】
一例では、処理デバイス111及びメモリ領域111、113、…、119は、同じチップまたはダイにある。いくつかの実施形態では、メモリ領域は、機械学習処理中にホストシステム101及び/または処理デバイス111によって使用されるデータ、またはホストシステム101または処理デバイス111で実行されるソフトウェアプロセス(複数可)によって生成される他のランタイムデータを格納する。
【0062】
コンピューティングシステムは、ホストシステム101からの新しいデータを記録するためにメモリ領域111(例えば、フラッシュメモリの記録セグメント)を選択する書き込みコンポーネントをメモリシステム105に含むことができる。コンピューティングシステム100は、少なくともメモリ領域111の選択を容易にするために、メモリシステム105の書き込みコンポーネント107と協調する書き込みコンポーネントを、ホストシステム101にさらに含むことができる。
【0063】
一例では、揮発性メモリ123は、ホストシステム101の処理デバイス(図示せず)のためのシステムメモリとして使用される。一実施形態では、ホストシステム101のプロセスは、データを書き込むためのメモリ領域を選択する。一例では、ホストシステム101は、自律車両で実行されるセンサ及び/またはソフトウェアプロセスからのデータに部分的に基づいてメモリ領域を選択することができる。一例では、前述のデータは、ホストシステム101によって、メモリ領域を選択する処理デバイス111に提供される。
【0064】
いくつかの実施形態では、ホストシステム101または処理デバイス111は、IDコンポーネント107及び/または検証コンポーネント109の少なくとも一部を含む。他の実施形態では、または組み合わせて、ホストシステム101内の処理デバイス111及び/または処理デバイスは、IDコンポーネント107及び/または検証コンポーネント109の少なくとも一部を含む。例えば、処理デバイス111及び/またはホストシステム101の処理デバイスは、IDコンポーネント107及び/または検証コンポーネント109を実装する論理回路を含むことができる。例えば、ホストシステム101のコントローラまたは処理デバイス(例えば、CPU、FPGA、またはGPU)は、本明細書で説明されたIDコンポーネント107及び/または検証コンポーネント109の動作を実行するためにメモリに格納された命令を実行するように構成され得る。
【0065】
いくつかの実施形態では、IDコンポーネント107は、メモリシステム105に配置された集積回路チップに実装されている。他の実施形態では、ホストシステム101の検証コンポーネント109は、ホストシステム101のオペレーティングシステム、デバイスドライバ、またはアプリケーションの一部である。
【0066】
メモリシステム105の例は、メモリバスを介して中央処理装置(CPU)に接続されたメモリモジュールである。メモリモジュールの例には、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、不揮発性デュアルインラインメモリモジュール(NVDIMM)などが含まれる。いくつかの実施形態では、メモリシステムは、メモリ機能とストレージ機能の両方を備えるハイブリッドメモリ/ストレージシステムにすることができる。一般に、ホストシステムは、1つまたは複数のメモリ領域を含むメモリシステムを利用することができる。ホストシステムは、メモリシステムに格納されるデータを提供でき、またメモリシステムからデータを取得するように要求できる。一例で、ホストは揮発性メモリと不揮発性メモリを含む様々なタイプのメモリにアクセスできる。
【0067】
ホストシステム101は、車両内のコントローラ、ネットワークサーバ、モバイルデバイス、携帯電話、組み込みシステム(例えば、システムオンチップ(SOC)及び内部をまたは外部メモリを有する組み込みシステム)などのコンピューティングデバイス、またはメモリと処理デバイスを含む任意のコンピューティングデバイスであり得る。ホストシステム101は、メモリシステム105を含むか、またはそれに結合することができ、その結果、ホストシステム101は、メモリシステム105からデータを読み取り、またはそれにデータを書き込むことができる。ホストシステム101は、物理ホストインターフェイスを介してメモリシステム105に結合することができる。本明細書で使用する場合、「結合」とは、概して、コンポーネント間の接続を指し、これは、電気、光、磁気などの接続を含む、有線か無線である、間接通信接続または直接通信接続(例えば、コンポーネントを介在させない)にすることができる。物理ホストインターフェイスの例には、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェイス、周辺コンポーネント相互接続エクスプレス(PCIe)インターフェイス、ユニバーサルシリアルバス(USB)インターフェイス、ファイバーチャネル、シリアル接続SCSI(SAS)、ダブルデータレート(DDR)メモリバスなどが含まれるが、これらに限定されない。物理ホストインターフェイスを使用して、ホストシステム101とメモリシステム105の間でデータを送信できる。物理ホストインターフェイスは、メモリシステム105とホストシステム101との間で制御、アドレス、データ、及び他の信号を渡すためのインターフェイスを設けることができる。
【0068】
図2は、例としてメモリシステム105を示している。一般に、ホストシステム101は、同じ通信接続、複数の別個の通信接続、及び/または通信接続の組み合わせを介して複数のメモリシステムにアクセスすることができる。
【0069】
ホストシステム101は、処理デバイス及びコントローラを含むことができる。ホストシステム101の処理デバイスは、例えば、マイクロプロセッサ、中央処理装置(CPU)、プロセッサの処理コア、実行ユニットなどであり得る。場合によっては、ホストシステムのコントローラは、メモリコントローラ、メモリ管理ユニット、及び/またはイニシエータと呼ばれることがある。一例では、コントローラは、ホストシステム101とメモリシステム105との間のバス103を介して通信を制御する。これらの通信は、上記のような、メモリシステム105のIDを検証するためのホストメッセージの送信を含む。
【0070】
ホストシステム101のコントローラは、メモリシステム105のコントローラと通信して、不揮発性メモリ121のメモリ領域でデータの読み取り、データの書き込み、またはデータの消去などの操作を実行することができる。場合によっては、コントローラは、処理デバイス111の同じパッケージ内に統合されている。他の例では、コントローラは、処理デバイス111のパッケージから分離されている。コントローラ及び/または処理デバイスは、1つまたは複数の集積回路及び/または個別のコンポーネント、バッファメモリ、キャッシュメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラ及び/または処理デバイスは、マイクロコントローラ、特殊目的の論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。
【0071】
一実施形態では、メモリ領域111、113、…、119は、異なるタイプの不揮発性メモリコンポーネントの任意の組み合わせを含むことができる。さらに、メモリ領域のメモリセルは、データを格納するために使用されるユニットを参照できるメモリページまたはデータブロックとしてグループ化できる。いくつかの実施形態では、揮発性メモリ123は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び同期ダイナミックランダムアクセスメモリ(SDRAM)であり得るが、これらに限定されない。
【0072】
一実施形態では、メモリシステム105の1つまたは複数のコントローラは、メモリ領域111、113、…、119と通信して、データの読み取り、データの書き込み、またはデータの消去などの動作を実行することができる。各コントローラは、1つまたは複数の集積回路及び/または個別のコンポーネント、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラは、マイクロコントローラ、特殊用途論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC))、または他の好適なプロセッサとすることができる。コントローラ(複数可)は、ローカルメモリに格納された命令を実行するように構成された処理デバイス(プロセッサ)を含むことができる。一例では、コントローラのローカルメモリは、メモリシステム105とホストシステム101との間の通信の処理を含む、メモリシステム105の動作を制御する様々なプロセス、操作、論理フロー、及びルーチンを実行するための命令を格納するように構成された組み込みメモリを含む。いくつかの実施形態では、ローカルメモリは、メモリポインタ、フェッチされたデータなどを格納するメモリレジスタを含むことができる。ローカルメモリはまた、マイクロコードを格納するための読み取り専用メモリ(ROM)を含むことができる。
【0073】
一般に、メモリシステム105のコントローラ(複数可)は、ホストシステム101及び/または処理デバイス111からコマンドまたは操作を受信することができ、コマンドまたは操作を命令または適切なコマンドに変換して、メモリ領域のデータ書き込みカウンタに基づくメモリ領域の選択を達成することができる。コントローラは、ウェアレベリング、ガベージコレクション操作、エラー検出及びエラー訂正コード(ECC)操作、暗号化操作、キャッシング操作、及びメモリ領域に関連付けられている論理ブロックアドレスと物理ブロックアドレス間のアドレス変換などの他の操作も担い得る。コントローラは、物理ホストインターフェイスを介してホストシステム101と通信するためのホストインターフェイス回路をさらに含むことができる。ホストインターフェイス回路は、ホストシステムから受信したコマンドをコマンド命令に変換して、1つまたは複数のメモリ領域にアクセスし、メモリ領域に関連する応答をホストシステム101の情報に変換することができる。
【0074】
メモリシステム105はまた、図示されていない追加の回路またはコンポーネントを含むことができる。いくつかの実施形態では、メモリシステム105は、1つまたは複数のコントローラからアドレスを受信し、アドレスをメモリ領域にアクセスするようにデコードすることができるキャッシュまたはバッファ(例えば、DRAMまたはSRAM)及びアドレス回路(例えば、行デコーダ及び列デコーダ)を含むことができる。
【0075】
いくつかの実施形態では、ホストシステム101のコントローラ、メモリシステム105、及び/または処理デバイス111は、IDコンポーネント107及び/または検証コンポーネント109の少なくとも一部を含む。例えば、コントローラ及び/または処理デバイス111は、IDコンポーネント107及び/または検証コンポーネント109を実装する論理回路を含むことができる。例えば、処理デバイス(プロセッサ)は、本明細書で説明するように、IDコンポーネント107のメモリ領域への読み取り/書き込みアクセスを提供する操作を実行するためにメモリに格納された命令を実行するように構成することができる。いくつかの実施形態では、検証コンポーネント109は、オペレーティングシステム、デバイスドライバ、またはアプリケーションの一部である。
【0076】
図3は、一実施形態による、車両100の例示的なコンピューティングデバイスを示す。例えば、車両100は、自律型車両、非自律型車両、緊急車両、サービス車両などであり得る。
【0077】
車両100は、車載コンピュータなどの車両コンピューティングデバイス110を含む。車両コンピューティングデバイス110は、
図1のホストデバイス151の例である。別の例では、車両コンピューティングデバイス110は、
図2のホストシステム101の例であり、メモリ160は、メモリシステム105の例である。
【0078】
車両コンピューティングデバイス110は、リーダー、ライター、及び/または、アンテナ140に結合された(またはそれを含む)以下に説明する機能を実行することができる他のコンピューティングデバイスなどの車両通信コンポーネント130に結合されたプロセッサ120を含む。車両通信コンポーネント130は、不揮発性フラッシュメモリなどのメモリ160に結合されたプロセッサ150を含むが、実施形態は、そのような種類のメモリデバイスにそれほど限定されない。
【0079】
一例では、メモリ160は、車両100が以下に説明するように、通信インターフェイス(例えば、いわゆるDICE-RIoTプロトコル)を使用してチェックポイントに接近するときにこの情報を提供できるように、車両に関連するすべての情報(例えば、運転者、乗客、及び運搬物)を格納するように適合される。
【0080】
一例では、車両情報(車両ID/プレートの番号など)は、車両メモリ160にすでに格納されており、車両100は、例えば、通信コンポーネント130を介して、及び既知のDICE-RIoTプロトコルまたは同様のプロトコルを使用することによって、乗客の電子ID及び/または運ばれた荷物、商品などのIDを識別することができ、次にこの情報をメモリ160に格納することができる。一例では、電子ID、輸送される荷物及び商品の容器は、無線トランスポンダ、NFC、ブルートゥース、RFID、タッチレスセンサ、磁気バーなどを備えており、通信コンポーネント130は、リーダー及び/または電磁場を使用して、そのようなリモートソースからの必要な情報を取得できる。
【0081】
一例では、すべての乗客ID及び/または運ばれる荷物、商品などのIDは、通信コンポーネントとデータを交換することができる電子デバイスを備えている。これらの電子デバイスは、電力によって供給されるためにアクティブであり得るか、または電気デバイスが近接しているときに必要な電力を供給する外部電源によって作動及び電力供給され得るという意味で、アクティブまたはパッシブ要素であり得る。
【0082】
レンタルの車両または自律型車両は、リーダー及び/または電磁場を使用して、車両内部または車両の近くで情報を取得でき、あるいは代替として、例えば、事前予約のためレンタル車両の運転者をレンタルシステムがすでに知っている場合は、リモートソースからでも情報を受信できる。運転者が車両を取得するために到着したときに、さらなるチェックをリアルタイムで実行することができる。
【0083】
同様に、車両100によって運ばれる輸送中の荷物及び商品に関する(及び乗客についての)すべての情報は、常に最新であるように維持され得る。そうするために、乗客の電子ID及び/または運ばれた荷物及び商品のIDは、荷物及び商品に関連付けられ、乗客が所有するワイヤレストランスポンダにより、リアルタイムで更新される(図には示さず)。
【0084】
一例では、車両通信コンポーネント130と近接ソース(例えば、商品トランスポンダなど)との間の通信は、DICE-RIoTプロトコルを介して行われる。
【0085】
一例では、車両コンピューティングデバイス110は、ステアリング及び速度などの車両100の動作パラメータを制御することができる。例えば、コントローラ(図示せず)は、ステアリング制御システム170及び速度制御システム180に結合することができる。さらに、車両コンピューティングデバイス110は、情報システム190に結合することができる。情報システム190は、経路情報またはチェックポイントセキュリティメッセージなどのメッセージを表示するように構成することができ、視覚的警告を表示し、及び/または可聴ワ―ミングを出力することができる。通信コンポーネント130は、外部コンピューティングデバイス(図示せず)などからの追加のコンピューティングデバイスから情報を受信することができる。
【0086】
図4は、一実施形態による、車両300の例示的なコンピューティングデバイスと通信する例示的なホストデバイス350を有する例示的なシステム390を示す。コンピューティングデバイスは、短距離通信デバイス(例えば、NFCタグ)などのパッシブ式通信コンポーネント310を含む。通信コンポーネント310は車両300にあることができ、これは
図3に示すように車両100に構成することができ、車両通信コンポーネント130として構成することができる通信コンポーネント310に加えて、車両100のコンポーネントを含む。通信コンポーネント310は、車両300に関する情報(車両ID、運転者/乗客情報、運搬物情報など)を格納する不揮発性格納コンポーネント330を有するチップ320(例えば、車両300のCPUまたはアプリケーションコントローラを実装する)を含む。通信コンポーネント310は、アンテナ340を含むことができる。
【0087】
ホストデバイス350は、例えば、アクティブ式通信デバイス(例えば、電源を含む)であり、通信コンポーネント310から情報を受信し、及び/またはそれに情報を送信することができる。いくつかの例では、ホストデバイス350は、トールリーダーなどのリーダー(例えば、NFCリーダー)、または他のコンポーネントを含むことができる。ホストデバイス350は、チェックポイントの近く(例えば、信頼ゾーンの境界に)に配置された(例えば、埋め込まれた)、または一般に、制限されたアクセスエリアの近くに配置された(例えば、埋め込まれた)外部デバイスであり得る。いくつかの実施形態では、ホストデバイス350はまた、携帯式デバイスとして使用するために警官によって運ばれ得る。
【0088】
ホストデバイス350は、プロセッサ360、不揮発性メモリなどのメモリ370、及びアンテナ380を含むことができる。メモリ370は、ホストデバイス350が通信コンポーネント310と通信することを可能にするNFCプロトコルを含むことができる。例えば、ホストデバイス350及び通信コンポーネント310は、例えば、約13.56メガヘルツで、ISO/IEC 18000-3国際規格に従って、NFCプロトコルを使用して通信することができる。RFIDタグを使用する他のアプローチを使用できる。
【0089】
ホストデバイス350はまた、サーバまたは他のコンピューティングデバイスと通信することができる(例えば、中央オペレーションセンターとの無線ネットワークを介して通信する)。例えば、ホストデバイス350は、サーバまたは通信センターに無線で結合または配線することができる。いくつかの例では、ホストデバイス350は、WIFIまたはインターネットを介してオペレーションセンターと通信することができる。ホストデバイス350は、車両300がアンテナ340をアンテナ380の通信距離内に運ぶと、通信コンポーネント310にエネルギーを与えることができる。いくつかの例では、ホストデバイス350は、オペレーションセンターからリアルタイム情報を受信し、その情報を車両300に送信することができる。いくつかの実施形態では、通信コンポーネント310は、それ自体の電池を有することができる。
【0090】
一実施形態では、ホストデバイス350は、情報交換を可能にするように構成された通信コンポーネント310(例えば、アクティブ式デバイス)を備えた車両300との間で情報を読み取り/送信するように適合されている。
【0091】
再び
図3を参照すると、車両100の車両通信コンポーネント130は、乗客ID、輸送された荷物及び/または商品に関するリアルタイムの関連情報をピックアップするために内部でアクティブになり得る(例えば、上記の
図4に関連して考察した対応する無線通信コンポーネントを備えているとき)。車両のコンピューティングデバイスは、数メートル(例えば、2~3メートル)の空間範囲内の情報を検出することができ、その結果、乗客、荷物、及び商品に対応するすべてのデータを取得することができる。一例では、これは、車両が特定の近接以内で外部通信コンポーネント(例えば、サーバまたはホストデバイスとして機能する他のコンピューティングデバイス)に接近して、通信を開始及び/または強化することができるときに発生する。通信距離は、例えば2~3メートルである。
【0092】
一実施形態では、車両通信コンポーネント130は、外部エンティティ及び/または内部エンティティと通信するときにデータを暗号化することができる。場合によっては、輸送された荷物、商品、さらには乗客に関するデータが機密情報であるか、機密情報(例えば、乗客の健康状態、機密文書、または危険物)が含まれていることがある。このような場合、車両コンピューティングデバイスに関連付けられたメモリ部分に格納された情報及びデータは、暗号化されたデータとして保持されることが望ましい。
【0093】
以下で説明する様々な実施形態では、内部車両コンピューティングデバイスと外部エンティティ(例えば、ホストデバイスとして機能するサーバ)との間の暗号化及び復号化された通信のための方法が説明される。一例では、この方法は、内部車両コンピューティングデバイスと、車両に搭乗する乗客、荷物、及び商品に関連する電子部品との間でさえ適用することができる。
【0094】
一例では、車両通信コンポーネント130は、車両公開キーを外部通信コンポーネント(例えば、ホストデバイス151として機能する)に送信し、外部通信コンポーネントは、外部公開キーを車両通信コンポーネント130に送信する。これらの公開キー(車両及び外部)を使用して、それぞれの通信コンポーネントに送信されるデータを暗号化し、それぞれのIDを検証し、確証やその他の情報を交換することもできる。例として、以下でさらに説明するように、車両通信コンポーネント130は、受信した外部公開キーを使用してデータを暗号化し、暗号化されたデータを外部通信コンポーネントに送信することができる。同様に、外部通信コンポーネントは、受信した車両公開キーを使用してデータを暗号化し、暗号化されたデータを車両通信コンポーネント130に送信することができる。車両100によって送信されるデータは、自動車情報、乗客情報、商品情報などを含むことができる。情報は、任意選択で、車両100のIDを検証するためにデジタル署名と共に送信することができる。さらに、情報は、車両100に提供され、車両100のダッシュボードに表示されるか、または車両100に関連するコンピューティングデバイス(例えば、車両を監視するユーザデバイスまたは中央サーバ)の電子メールに送信され得る。車両は、車両の識別、VINの番号など、及び車両のデジタル署名に基づいて認識できる。
【0095】
一例では、車両と外部エンティティとの間で交換されるデータは、他方によって使用されるフレッシュネスを有することができる。例として、同一の命令を示すために車両によって外部エンティティに送信されるデータは、特定の時間枠のそれぞれで、または送信される特定の量のデータに対して変更することができる。これにより、ハッカーが以前に送信されたデータに含まれる機密情報を傍受し、同じデータを再度送信して同じ結果をもたらすのを防ぐことができる。データがわずかに変更されているが、それでも同じ命令を示している場合、ハッカーは後で同じ情報を送信する可能性があり、受信者は変更されたデータが同じ命令を実行することを期待しているため、同じ命令は実行されない。
【0096】
車両100と外部エンティティ(例えば、コンピューティングシステムまたはデバイス)(図示せず)との間で交換されるデータは、以下に説明するように、いくつかの暗号化及び/または復号化する方法を使用して実行することができる。データの保護は、許可されていない活動が車両100及び外部エンティティの動作を妨害することを確実に防ぐことができる。
【0097】
図5Aは、一実施形態による、ホストデバイスに送信される識別子、証明書、及びキーを含むトリプルを生成するアプリケーションボードを示す。ホストデバイスはトリプルを使用して、アプリケーションボードのIDを検証する。アプリケーションボードは、
図1のコンピューティングデバイス141の例である。ホストデバイスは、
図1のホストデバイス151の例である。
【0098】
一実施形態では、アプリケーションボード及びホストは、デバイス識別構成エンジン(DICE)にロバストなモノのインターネット(RIoT)プロトコルを使用して、通信(例えば、情報及びデータ)の暗号化及び/または復号化操作を実行する通信コンポーネントを含む。一例では、DICE-RIoTプロトコルは、車両通信コンポーネントと外部通信コンポーネントとの間の通信、ならびに車両通信コンポーネントと、乗客のID、荷物、商品などの各々に関連する様々な無線電子デバイスとの間の車両環境に対して内部で実行される通信に適用される。
【0099】
図5Bは、一実施形態による、層を使用して段階的に起動する例示的なコンピューティングシステムを示す。システムは、本開示の実施形態による、外部通信コンポーネント430’及び車両通信コンポーネント430’’を含む。車両が外部エンティティに近づくか、またはその近接に来ると、車両の関連する車両通信コンポーネント430’’は、センサ(例えば、無線周波数識別センサ、つまりRFIDなど)を使用するなどして、上記のように外部エンティティとデータを交換することができる。
【0100】
他の実施形態では、コンポーネント430’は、車両内に配置されたアプリケーションボードであり得、コンポーネント430’’は、DICE-RIoTプロトコルを使用してコンポーネント430’のIDを検証する、車両内に配置されたホストデバイスであり得る(例えば、上記の
図1に関して論じたように)。
【0101】
一実施形態では、DICE-RIoTプロトコルは、層を使用して段階的に起動するためにコンピューティングデバイスによって使用され、各層は、後続の層を認証及びロードし、各層でいっそう洗練されたランタイムサービスを提供する。したがって、層は、前の層によって機能し、次の層に役立ち得て、それによって、より低い層の上に構築され、より高次の層に機能する層の相互接続されたウェブを作成する。または、DICE-RIoTプロトコルの代わりに他のプロトコルを使用することもできる。
【0102】
通信プロトコルの一例示的実施態様では、通信プロトコルのセキュリティは、製造中(またはそれ以降)に設定されるデバイスシークレット(例えば、UDS)であるシークレット値に基づく。デバイスシークレットUDSは、それが与えられたデバイス内に存在する(例えば、
図1のデバイスシークレット149として格納される)。
【0103】
デバイスシークレットUDSは、起動時に第1段階のROMベースのブートローダーにアクセスできる。次に、システムは、次のブートサイクルまでデバイスシークレットにアクセスできないようにするメカニズムを設け、ブートローダー(ブート層など)のみがデバイスシークレットUDSにアクセスできる。したがって、このアプローチでは、ブートはデバイスシークレットUDSで始まる特定のアーキテクチャで階層化される。
【0104】
図5Bに示されているように、層0、L
0、層1、L
1は、外部通信コンポーネント430’の範囲内である。層0L
0は、層1、L
1に対するヒューズ派生のシークレット、FDSキーを設けることができる。FDSキーは、層1、L
1及びその他のセキュリティ関連データのコードのIDに基づくことができる。ロードする層1、L
1のコードを検証するために、特定のプロトコル(ロバストなモノのインターネット(RIoT)コアプロトコルなど)は、FDSを使用することができる。例では、特定のプロトコルは、デバイス識別構成エンジン(DICE)及び/またはRIoTコアプロトコルを含むことができる。例として、FDSには、層1L
1ファームウェアイメージ自体、許可された層1L
1ファームウェアを暗号で識別するマニフェスト、セキュアブート実装のコンテキストで署名されたファームウェアのファームウェアバージョン番号、及び/またはデバイスのセキュリティに重要な構成設定を含めることができる。デバイスシークレットUDSは、FDSの作成に使用でき、外部通信コンポーネントのメモリに格納される。したがって、層0L
0は、実際のデバイスシークレットUDSを曝すことはなく、派生キー(FDSキーなど)をブートチェーンの次の層に提供する。
【0105】
外部通信コンポーネント430’は、矢印410’によって示されるように、車両通信コンポーネント430’’にデータを送信するように適合されている。送信されるデータは、公開されている外部識別、証明書(例えば、外部識別証明書)、及び/または
図6に関連して示されるように、外部公開キーを含むことができる。車両通信コンポーネント430’’の層2L
2は、例えば、第1のアプリケーションApp
1と第2のアプリケーションApp
2において、送信されたデータを受信し、オペレーティングシステムOSの動作中にデータを実行することができる。
【0106】
同様に、車両通信コンポーネント430’’は、矢印410’’によって示されるように、公開されている車両識別、証明書(例えば、車両識別証明書)、及び/または車両公開キーを含むデータを送信することができる。例として、認証後(例えば、証明書を検証した後)、車両通信コンポーネント430’’は、車両のさらなる認証、識別、及び/または検証のために、車両識別番号、VINを送信することができる。
【0107】
図5B及び
図6に示されるように、動作例では、外部通信コンポーネント430’は、デバイスシークレットDSを読み取り、層1L
1のIDをハッシュし、以下の計算を実行することができる。
【0108】
FDS=KDF[UDS,Hash(“immutable information”)]
【0109】
式中、KDFは暗号化された一方向の鍵導出関数である(例えば、HMAC-SHA256)。上記の計算では、HashはSHA256、MD5、SHA3などの任意の暗号プリミティブにすることができる。
【0110】
少なくとも1つの例では、車両は、匿名のログインまたは認証されたログインのいずれかを使用して通信することができる。認証されたログインにより、車両は匿名モードで通信しているときにアクセスできない可能性のある追加情報を取得できる。少なくとも1つの例では、認証は、以下に説明するように、車両識別番号VIN及び/または公開キーの交換などの認証情報を提供することを含むことができる。匿名モードと認証モードのいずれかで、外部エンティティ(例えば、信頼ゾーンの境界にあるチェックポイントポリス)は車両と通信して、外部エンティティに関連付けられた外部公開キーを車両に提供できる。
【0111】
図6は、一実施形態による、非対称ジェネレータを使用して識別子、証明書、及びキーを生成する例示的なコンピューティングデバイスを示す。一実施形態では、コンピューティングデバイスは、(例えば、外部デバイスの層L
1、または代替の実施形態において、内部のコンピューティングデバイスの層L
1内)パラメータを決定するプロセスを実施する。
【0112】
一実施形態では、パラメータは、外部公開識別、外部証明書、及び外部公開キーを含めて決定され、これらは、次に(矢印510’で示されるように)車両通信コンポーネントの層2L
2(例えば、
図5Bの参照430’’)に送信される。
図6の矢印510’及び510’’は、それぞれ、
図5Bの矢印410’及び410’’に対応する。また、
図6の層は、
図5Bの層に対応する。
【0113】
別の実施形態では、ホストデバイスからのメッセージ(「ホストメッセージ(Host Message)」)は、暗号化のためにマージされたデータを提供するために、マージするパターン(データ)によって、外部公開キーとマージされる531。マージされたデータは、暗号化装置530への入力である。一例では、ホストメッセージは外部公開キーと連結される。生成されたパラメータには、ホストデバイスに送信され、コンピューティングデバイスのIDを検証するために使用されるトリプルが含まれる。例えば、外部公開識別、外部証明書、及び外部公開キーは、ホストデバイスの検証コンポーネントがIDを検証するために使用する。一例では、ホストデバイスは、
図1のホストデバイス151である。
【0114】
図6に示すように、層0L
0からのFDSは、層1L
1に送信され、非対称IDジェネレータ520によって使用されて、公開識別、IDlkpublic、及び秘密識別、IDlkprivateを生成する。省略形の「IDlkpublic」では、「lk」は汎用層k(この例では層1L
1)を示し、「public」は識別がオープンに共有されていることを示す。外部通信コンポーネントの層1L
1の右側かつ外部に延びる矢印によって共有されるように、公開識別IDlkpublicが示されている。生成された秘密識別IDlkprivateは、暗号化装置530へのキー入力として使用される。暗号化装置530は、例えば、データを暗号化するために使用される任意のプロセッサ、コンピューティングデバイスなどであり得る。
【0115】
外部通信コンポーネントの層1L
1は、非対称キージェネレータ540を含むことができる。少なくとも1つの例では、乱数ジェネレータRNDは、任意選択で、乱数を非対称キージェネレータ540に入力することができる。非対称キージェネレータ540は、
図5Bの外部通信コンポーネント430’などの外部通信コンポーネントに関連付けられた公開キーKLkpiblic(外部公開キーと呼ばれる)及び秘密キーKLkprivate(外部秘密キーと呼ばれる)を生成することができる。
【0116】
外部公開キーKLkpublicは、暗号化装置530への入力(「データ」として)にすることができる。上記のように、いくつかの実施形態では、ID検証プロセスの一部としてホストデバイスから以前に受信されたホストメッセージは、KLkpublicとマージされて、マージされたデータを暗号化装置530への入力データとして提供する。
【0117】
暗号化装置530は、外部秘密識別IDlkprivate及び外部公開キーKLkpublicの入力を使用して結果K’を生成することができる。外部秘密キーKLkprivateと結果K’を追加の暗号化装置550に入力して、出力K’’を生成することができる。出力K’’は、層2L
2に送信される(またはIDを検証するホストデバイスに送信される)外部証明書IDL1certificateである。外部証明書IDL1certificateは、デバイスから送信されたデータの発信元を検証及び/または認証する機能を設けることができる。例として、外部通信コンポーネントから送信されたデータは、
図7に関連してさらに説明されるように、証明書を検証することによって外部通信コンポーネントのIDに関連付けることができる。さらに、外部の公開キーのKL1publicキーは層2L
2に送信することができる。したがって、公開識別IDl1public、証明書IDL1certificate、及び外部通信コンポーネントの外部公開キーKL1publicキーは、車両通信コンポーネントの層2L
2に送信することができる。
【0118】
図7は、一実施形態による、復号化操作を使用してコンピューティングデバイスのIDを検証する検証コンポーネントを示す。検証コンポーネントには、復号器730、750が含まれる。検証コンポーネントは、本開示の実施形態に従って、証明書を検証するためのプロセスを実装する。
【0119】
図7の示された例では、公開キーKL1public、証明書IDL1certificate、及び公開識別IDL1publicが、外部通信コンポーネントから提供されている(例えば、
図5Bの、外部通信コンポーネント430’の層1L
1から)。
【0120】
証明書IDL1certificate及び外部公開キーKL1publicのデータは、復号器730への入力として使用することができる。復号器730は、データを復号化するために使用される任意のプロセッサ、コンピューティングデバイスなどであり得る。証明書IDL1certificate及び外部公開キーKL1publicの復号化の結果は、公開識別IDL1publicと共に復号器750への入力として使用することができ、結果として出力をもたらす。外部公開キーKL1public及び復号器750からの出力は、ブロック760に示されているように、証明書が検証されているかどうかを示すことができ、その結果、出力として、はいかいいえが得られる。秘密キーは単一の層に関連付けられており、特定の証明書は特定の層によってのみ生成できる。
【0121】
検証されている証明書に応答して(例えば、認証後)、検証されているデバイスから受信したデータは、受け入れ、復号化、及び/または処理することができる。証明書が検証されていないことに応答して、検証されているデバイスから受信したデータを破棄、削除、または無視することができる。このようにして、不正なデータを送信する不正なデバイスを検出して回避することができる。例として、処理対象のデータを送信しているハッカーを特定し、ハッキングデータを処理しないことが可能である。
【0122】
代替の実施形態では、公開キーKL1public、証明書IDL1certificate、及び公開識別IDL1publicが、
図1のコンピューティングデバイス141か、
図2のメモリシステム105から与えられる。このトリプルは、ホストデバイスからのホストメッセージを受信することに応答して、コンピューティングデバイス141によって生成される。復号器730への入力としてIDL1certificateを与える前に、IDL1certificateとホストデバイスからのメッセージ(「ホストメッセージ」)は、マージするパターン(データ)によってマージされる731。一例では、マージはデータの連結である。マージされたデータは、復号器730への入力として提供される。その後、検証プロセスは、別段に上記のように進行する。
【0123】
図8は、一実施形態による、証明書を検証するための例示的なプロセスのブロック図を示す。デバイスが、その後の否認を回避するために検証される可能性のあるデータを送信している場合、署名を生成してデータと共に送信することができる。例として、第1のデバイスは、第2のデバイスの要求を行うことができ、第2のデバイスが要求を実行すると、第1のデバイスは、第1のデバイスがそのような要求を決して行わなかったことを示すことができる。署名の使用などの否認防止アプローチにより、第1のデバイスによる否認を回避し、第2のデバイスがその後の問題なしに要求されたタスクを確実に実行できるようにすることができる。
【0124】
車両コンピューティングデバイス810’’(例えば、
図3の車両コンピューティングデバイス110または
図1のコンピューティングデバイス141)は、データDat’’を外部コンピューティングデバイス810’(または一般に他の任意のコンピューティングデバイス)に送信することができる。車両コンピューティングデバイス810’’は、車両の秘密キーKLkprivateを使用して署名Skを生成することができる。署名Skは、外部コンピューティングデバイス810’に送信することができる。外部コンピューティングデバイス810’は、データDat’及び以前に受信した公開キーKLkpublic(例えば、車両の公開キー)を使用して検証することができる。このように、署名の検証は、秘密キーを使用して署名を暗号化し、公開キーを使用して署名を復号化することによって機能する。このようにして、各デバイスの一意の署名は、署名を送信するデバイスに対して秘密のままにすることができ、一方で受信デバイスは検証のために署名を復号化できる。これは、受信デバイスの公開キーを使用して送信デバイスによって暗号化され、受信者の秘密キーを使用して受信デバイスによって復号化されるデータの暗号化/復号化とは、対照的である。少なくとも1つの例では、車両は、内部暗号化プロセス(例えば、楕円曲線デジタル署名(ECDSA)または同様のプロセス)を使用することによってデジタル署名を検証することができる。
【0125】
証明書と公開キーの交換と検証により、デバイスは相互に安全な方法で通信できる。車両が外部エンティティ(例えば、信頼ゾーン境界、境界セキュリティエンティティ、または一般に電子制御されたホストデバイス)に近づくと、それぞれの通信デバイス(それぞれの証明書を検証する
図7に示される機能を有する)は、証明書を交換し、相互に通信する。認証後(例えば、外部エンティティから証明書と公開キーを受信/検証した後)、車両はそれに関連するすべての必要な情報を通信し、プレート番号/ID、VIN、保険番号、運転者情報(ID、国境移行の最終的な許可など)、乗客情報、輸送された商品情報などをメモリに格納することができる。次に、受信した情報を確認した後、外部エンティティは移行要求の結果を車両に通信する。この情報は、受信者の公開キーを使用して暗号化されている可能性がある。交換されたメッセージ/情報は、上記のDICE-RIoTプロトコルを使用して暗号化/復号化できる。いくつかの実施形態では、いわゆる不変情報(プレート番号/ID、VIN、保険番号など)は暗号化されないが、他の情報は暗号化される。言い換えると、交換されるメッセージには、暗号化されていないデータと暗号化されたデータが存在する可能性がある。したがって、情報は暗号化されているかいないか、または混合されている可能性がある。次に、証明書/公開キーを使用してメッセージの内容が有効であることを有効性確認することにより、メッセージの正確性が保証される。
【0126】
図9は、一実施形態による、識別子、証明書、及びキーを使用してコンピューティングデバイスのIDを検証するための方法を示す。例えば、
図9の方法は、
図1~7のシステムに実装することができる。
【0127】
図9の方法は、ハードウェア(例えば、処理デバイス、回路、専用ロジック、プログラマブルロジック、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)またはそれらの組み合わせを含むことができる処理ロジックによって実行することができる。いくつかの実施形態では、
図9の方法は、
図1のIDコンポーネント147及び検証コンポーネント153によって少なくとも部分的に実行される。
【0128】
特定の順序または順番で示されているが、特に指定がない限り、プロセスの順番は変更できる。したがって、図示された実施形態は、例としてのみ理解されるべきであり、図示されたプロセスは、異なる順序で実行することができ、いくつかのプロセスは、並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略できる。したがって、すべての実施形態においてすべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0129】
ブロック921で、メッセージがホストデバイスから受信される。例えば、コンピューティングデバイス141は、ホストデバイス151からメッセージ(例えば、「ホストメッセージ」または「host message|freshness」)を受信する。
【0130】
ブロック923で、識別子、証明書、及びキー(例えば、公開キーKL1public)が生成される。識別子は、コンピューティングデバイスのIDに関連付けられている。証明書は、ホストデバイスからのメッセージ(「ホストメッセージ」など)を使用して生成される。一実施形態では、メッセージは、暗号化の前に公開キーとマージされる。この暗号化では、秘密識別子IDL1privateをキーとして使用する。秘密識別子IDL1privateは、公開識別子IDL1publicに関連付けられている(例えば、非対称IDジェネレータ520によって生成される関連付けられたペア)。
【0131】
一例では、IDコンポーネント147は、トリプルを提供するための識別子、証明書、及びキーを生成する。一例では、トリプルはDICE-RIoTプロトコルに基づいて生成される。一例では、トリプルは、
図6に示すように生成される。
【0132】
一例では、DICE-RIoTプロトコルを使用して、各層(Lk)は次の層(Lk+1)にキーと証明書のセットを提供し、各証明書は受信層によって検証できる。ヒューズから派生したシークレットFDSは、次のように計算される。
FDS=HMAC-SHA256[UDS,SHA256(“Identity of L1”)]
【0133】
一例では、DICE-RIoTアーキテクチャの層1L1は、ホストデバイスによって送信されたホストメッセージを使用して証明書を生成する。層1は、次のように2つの関連するキーペアを計算する:
(IDlkpublic,IDlkprivate)及び(KLkpublic,KLkprivate)
【0134】
層1はまた、次のように2つの署名を計算する。
K’=encrypt(IDlkprivate,KLkpublic|host message)
K’’=encrypt(KLkprivate,K’)
【0135】
上記の処理から、層1は次のようにトリプルを提供する。
KL1={IDL1public,IDL1certificate,KL1public}
より一般的には、各層は次のようにトリプルを提供する。
KLk={setofkeysandcertificate}、各々に対し、k=1:N
それぞれのトリプルを使用して、各層は次の層にそのIDを証明することができる。
【0136】
一例では、層2はアプリケーションファームウェアに対応し、後続の層はオペレーティングシステム及び/またはホストデバイスのアプリケーションに対応する。
【0137】
ブロック925で、生成された識別子、証明書、及びキーがホストデバイスに送信される。ホストデバイスは、識別子、証明書、及びキーを使用して、コンピューティングデバイスのIDを検証する。一例では、ホストデバイス151は、コンピューティングデバイス141から識別子、証明書、及びキーを受信する。ホストデバイス151は、検証コンポーネント153を使用して、コンピューティングデバイスのIDを検証する。
【0138】
一例では、検証コンポーネント153は、検証プロセスの一部として復号化操作を実行する。復号化は、コンピューティングデバイス141から受信したキーを使用して復号化する前に、ホストからのメッセージを証明書とマージすることを含む。
図7に示すように、1つの例では、コンピューティングデバイスのIDの検証が行われる。
【0139】
一例では、以下のように、復号化操作が実行される:
K’を提供するKL1 publicを使用して復号化(IDL1 certificate)
復号化K’は結果を提供するために、IDL1 publicを使用
結果はKL1 publicと比較される。結果がKL1 publicと等しい場合、IDが検証される。一例では、アプリケーションボードのIDが検証される。
【0140】
一実施形態において、人物または動物のIDが証明される。人のIDの確認は、上記のようにコンピューティングデバイス141のIDを検証する場合と同様に実行される。一例では、コンピューティングデバイス141は、人のパスポートに統合されている。パスポートを発行した国の行政部門は、ドキュメントのクラス(例えば、運転免許証、パスポート、IDカードなど)に固有のUDSを使用できる。例えば、イタリア、シチリア、メッシーナ、パスポートオフィスの場合、UDS=0x12234…4444である。ドイツ、バイエルン、ミュンヘン、パスポートオフィスの場合、UDS=0xaabb….00322である。
【0141】
パスポートに関する1つの例では、L1のIDは次のようなASCII文字列である。
国|ドキュメントのタイプ|など(例:「イタリア、シチリア、メッシーナ、パスポートオフィス」)
割り当ての「粒度」は、各国の行政によって決定される。
【0142】
図9の方法の様々な実施形態には、様々な利点がある。例えば、モノは、第三者のキーインフラストラクチャ(例えば、PKI=公開キーインフラストラクチャ)を使用せずに、特定の工場で製造されたとして識別及び証明できる。リプレイ保護がなされているため、中間者攻撃の悪意のある人やハッカーは防止される。この方法は、モノの大量生産に使用できる。
【0143】
さらに、顧客のUDSはハードウェアレベルで保護されている(例えば、コンポーネントの外部の層0にアクセスできない)。UDSは誰も読み取ることはできないが、置き換えることはできる(例えば、顧客だけが安全なプロトコルを使用してこれを行うことができる)。安全なプロトコルの例には、認証されたリプレイ保護コマンド及び/またはディフィー・ヘルマン(ECDH楕円曲線ディフィー・ヘルマンなど)のような秘密共有アルゴリズムに基づくセキュリティプロトコルが含まれる。一例では、UDSは、安全なインフラストラクチャを使用して(エンドユーザではなく)顧客に伝達される。UDSは顧客がカスタマイズできる。
【0144】
さらに、コンポーネントの認識は、インターネットまたは他のネットワーク接続がない場合でも機能し得る。また、この方法を使用して、信頼ゾーンの境界(国境、内部チェックポイントなど)にあるもの、動物、及び人間のIDを簡単に確認できる。
【0145】
一例では、UDSの知識により、ホストデバイスがUDSを安全に置き換えることができる。例えば、ホストがモノのIDを変更したい場合、またはホストがモノのIDが他の人(元の製造元を含む)に知られていないことを望む場合に、置換を行うことができる。
【0146】
別の例では、置換コマンドがホストデバイスによって使用される。例えば、ホストデバイスは置換UDSコマンドをコンピューティングデバイスに送信できる。置換コマンドには、コンピューティングデバイスに起因する既存のUDSと新しいUDSが含まれる。一例では、置換コマンドには、次のようなハッシュ値を含むフィールドがある。hash(existing UDS|new UDS)。
【0147】
別の例では、認証されたリプレイ保護コマンドは次のようにそのフィールドを持って使用される:Replace_command|freshness|signature
この場合、signature=MAC[secret key,Replace_command|freshness|hash(existing UDS|new UDS)]
シークレットキーは追加のキーであり、デバイスに存在する認証済みコマンドに使用されるキーである。例えば、シークレットキーは、以下に説明するようにセッションキーであり得る(例えば、
図12を参照のこと)。
【0148】
一実施形態では、方法は、コンピューティングデバイス(例えば、コンピューティングデバイス141)によって、ホストデバイス(例えば、ホストデバイス151)からメッセージを受信すること、コンピューティングデバイスによって、識別子、証明書、及びキーを生成することであって、識別子は、コンピューティングデバイスのIDに関連付けられ、証明書は、メッセージを使用して生成される、生成すること、及びコンピューティングデバイスによって、識別子、証明書、及びキーをホストデバイスに送信することであって、ホストデバイスは、識別子、証明書、及びキーを使用してコンピューティングデバイスのIDを検証するように構成される、送信すること、を含む。
【0149】
一実施形態では、コンピューティングデバイスのIDを検証することは、メッセージと証明書を連結して第1のデータを提供することを含む。
【0150】
一実施形態では、コンピューティングデバイスのIDを検証することは、キーを使用して第1のデータを復号化して第2のデータを提供することをさらに含む。
【0151】
一実施形態では、コンピューティングデバイスのIDを検証することは、結果をもたらすために識別子を使用して第2のデータを復号化し、結果をキーと比較することをさらに含む。
【0152】
一実施形態では、識別子は公開識別子であり、コンピューティングデバイスはシークレットキーを格納し、方法は、派生シークレットを生成するメッセージ認証コードへの入力として、シークレットキーを使用することをさらに含み、この場合公開識別子は、派生したシークレットを非対称ジェネレータへの入力として使用して生成される。
【0153】
一実施形態では、識別子は第1の公開識別子であり、コンピューティングデバイスは第1の公開識別子を生成するために使用される第1のデバイスシークレットを格納し、方法は、ホストデバイスからの置換コマンドを受信すること、置換コマンドを受信することに応答して、第1のデバイスシークレットを第2のデバイスシークレットに置換すること、及び第2のデバイスシークレットを使用して生成された第2の公開識別子をホストデバイスに送信することをさらに含む。
【0154】
一実施形態では、キーは公開キーであり、証明書の生成は、メッセージを公開キーと連結して、暗号化のためのデータ入力を提供することを含む。
【0155】
一実施形態では、識別子は公開識別子であり、第1の非対称ジェネレータは、関連付けられたペアとして公開識別子と秘密識別子を生成する。キーは公開キーであり、第2の非対称ジェネレータは公開キーと秘密キーを関連付けられたペアとして生成する。証明書を生成することは、メッセージを公開キーと連結して第1のデータを提供すること、秘密識別子を使用して第1のデータを暗号化し、第2のデータを提供すること、秘密キーを使用して第2のデータを暗号化し、証明書を提供することが含まれる。
【0156】
一実施形態では、キーは公開キーであり、方法は、非対称キージェネレータへの入力として乱数を生成することをさらに含み、公開キー及び関連する秘密キーは、非対称キージェネレータを使用して生成される。
【0157】
一実施形態では、乱数は、物理複製困難関数(PUF)を使用して生成される。
【0158】
一実施形態では、システムは、少なくとも1つのプロセッサ、及び少なくとも1つのプロセッサに、コンピューティングデバイスにメッセージを送信すること、コンピューティングデバイスから、識別子、証明書、及びキーを受信することであって、識別子は、コンピューティングデバイスのIDに関連付けられ、証明書は、メッセージを使用してコンピューティングデバイスによって生成される、受信すること、及び識別子、証明書、及びキーを使用して、コンピューティングデバイスのIDを検証することを命令するように構成された命令を含むメモリ、を含む。
【0159】
一実施形態では、コンピューティングデバイスのIDを検証することは、メッセージと証明書を連結して、第1のデータを提供すること、キーを使用して第1のデータを復号化し、第2のデータを提供すること、結果を提供するために識別子を使用して第2のデータを復号化すること、及び結果をキーと比較することを含む。
【0160】
一実施形態では、識別子は、第1の公開識別子であり、コンピューティングデバイスは、第1の公開識別子を生成するために使用される第1のデバイスシークレットを格納し、命令がさらに、少なくとも1つのプロセッサに、コンピューティングデバイスに置換コマンドを送信することであって、置換コマンドはコンピューティングデバイスに第1のデバイスシークレットを第2のデバイスシークレットに置換えさせる、送信すること、及びコンピューティングデバイスから、第2のデバイスシークレットを使用して生成された第2の公開識別子を受信させることを命令するように構成されている。
【0161】
一実施形態では、コンピューティングデバイスは、派生シークレットを提供するメッセージ認証コードへの入力として第2のデバイスシークレットを使用し、派生シークレットを使用して第2の公開識別子を生成するように構成される。
【0162】
一実施形態では、置換コマンドは、第1のデバイスシークレットに基づく値を有するフィールドを含む。
【0163】
一実施形態では、システムは、フレッシュネスを生成するように構成されたフレッシュネスメカニズムをさらに含み、コンピューティングデバイスに送信されるメッセージはフレッシュネスを含む。
【0164】
一実施形態では、コンピューティングデバイスのIDは、英数字の文字列を含む。
【0165】
一実施形態では、非一時的コンピュータ記憶媒体は、コンピューティングデバイスで実行されるとき、コンピューティングデバイスに少なくとも、ホストデバイスからメッセージを受信すること、識別子、証明書、及びキーを生成することであって、識別子はコンピューティングデバイスのIDに対応し、証明書はメッセージを使用して生成される、生成すること、及び識別子、証明書、及びキーをホストデバイスに送信して、コンピューティングデバイスのIDの検証に使用することを引き起こす命令を格納する。
【0166】
一実施形態では、識別子は、秘密識別子に関連付けられた公開識別子であり、キーは、秘密キーに関連する公開キーであり、証明書を生成することは、メッセージを公開キーと連結して、第1のデータを提供すること、秘密識別子を使用して第1のデータを暗号化し、第2のデータを提供すること、秘密キーを使用して第2のデータを暗号化し、証明書を提供することを含む。
【0167】
一実施形態では、コンピューティングデバイスのIDを検証することは、結果をもたらすために識別子を使用して復号化操作を実行し、結果をキーと比較することを含む。
【0168】
(物理複製困難関数(PUF)を使用した値の生成)
以下に開示される少なくともいくつかの実施形態は、物理複製困難関数(PUF)を使用して値を生成するための改善されたアーキテクチャを提供する。いくつかの実施形態では、PUFの値自体をデバイスシークレットとして使用することも、デバイスシークレットを生成するために使用することもできる。一例では、PUFの値は、上記のようにDICE-RIoTプロトコルで使用するための一意のデバイスシークレット(UDS)として使用される(例えば、
図5A及び
図5Bを参照)。一例では、PUFによって生成された値は、メッセージ認証コード(MAC)への入力として使用される。MACからの出力はUDSとして使用される。
【0169】
いくつかの実施形態では、PUFの値、またはPUFの値から生成された値は、乱数(例えば、デバイス固有の乱数)として使用することができる。一例では、上述の非対称キージェネレータを介して、関連付けられた公開キーと秘密キーを生成する際に、乱数(例えば、RND)が入力として使用される(例えば、
図6参照)。
【0170】
一般に、以下のアーキテクチャは、1つ以上のPUFから提供された入力を、メッセージ認証コード(MAC)に供給することによって、出力を生成する。MACからの出力は、改善されたPUF(例えば、上記のUDS)を提供する。
【0171】
一般に、半導体チップ製造業者は、キーインジェクションの問題に直面している。これは、例えば、半導体ウェーハから提供される各チップまたはダイに、固有のシークレットキーをプログラミングすることである。チップにインジェクションされたシークレットキーが漏洩したり開示されたりしないように、安全な環境でキーインジェクションを実行することが望まれる。また、確実に、チップの製造後にキーがハッキングされる、または読み戻されることができないようにすることも望まれる。例えば、場合によっては、キーインジェクション手順が第三者のインフラストラクチャによって認定または実行される。
【0172】
チップ製造業者は、暗号化関数を含むチップの製造コストを削減することを望んでいる。チップ製造業者はまた、製造されたチップの一貫したレベルのセキュリティ性能を維持しながら、生産フローを簡素化することを望んでいる。ただし、キーのインジェクションは、よりコストの高い製造ステップの1つである。
【0173】
チップ製造業者は、疑似乱数ジェネレータとして使用したときにPUFの均一性を向上させるという問題にも直面している。場合によっては、この問題には、PUFによって提供されるシード値が基づく現象のために、ダイ間の相互相関が含まれ得る。
【0174】
PUFは、例えば、オンチップ寄生効果、オンチップパス遅延など、各ダイに固有の予測不可能な物理現象に基づいている。これらの現象は、例えば、疑似乱数ジェネレータのシード値を提供するために使用される。
【0175】
生産ラインで選択された2つの異なるチップは、異なるPUFの値を有していなければならない。各チップで生成されるPUFの値は、デバイスの寿命のある間変化してはならない。2つのチップのキーが類似している場合(例えば、それらのハミング距離が短い場合)、あるチップのキーを使用して別のチップのキーを推測できる可能性がある(例えば、プリイメージハッカー攻撃)。
【0176】
以下に説明する改良されたPUFアーキテクチャを使用すると、各チップまたはダイでPUFの機能をもたらすのに適した出力値を提供することにより、上記の問題の1つ以上に対する解決策を提供できる。以下の改善されたPUFアーキテクチャは、PUFを使用する。これにより、各チップまたはダイは、チップまたはダイの電源投入ごとに、一意のセキュアキーを自動的に生成できる。セキュアキーは、ハッキングまたはその他の方法で危険に曝される可能性のある不揮発性メモリに格納する必要はない。
【0177】
改良されたPUFアーキテクチャは、さらにMACを使用して、半導体チップに統合された暗号化関数やプロセスなどで使用するための改良されたPUF出力(例えば、一意のキー)を生成する。MACを使用すると、例えば、異なるチップで生成されたキー間のハミング距離を増やすことができる。
【0178】
本明細書に開示される少なくともいくつかの実施形態では、MACからの出力を使用する改良されたPUFアーキテクチャが、シードまたは他の値を生成する方法として提供される。したがって、改善されたPUFアーキテクチャは、例えば、製造コストを削減し、最終的なチップでのPUF動作の信頼性及び/または均一性を改善するキーインジェクションを実行する方法を提供する。
【0179】
一実施形態では、方法は、少なくとも1つのPUFによって、少なくとも1つの値を提供すること、MACに基づいて、第1の出力を生成することを含み、MACは、第1の出力を生成するための入力として、少なくとも1つのPUFによって提供される少なくとも1つの値を使用する。
【0180】
一実施形態では、システムは、少なくとも1つのPUFデバイス、少なくとも1つのPUFデバイスによって提供される少なくとも1つの値に基づいて第1の入力を受信するように構成されたメッセージ認証コードMACモジュール、少なくとも1つのプロセッサ、及び少なくとも1つのプロセッサに、第1の入力に基づいて、MACモジュールからの第1の出力を生成するように命令するように構成された命令を含むメモリを含む。様々な実施形態では、MACモジュールは、ハードウェア及び/またはソフトウェアを使用して実装することができる。
【0181】
一実施形態では、システムは、MACモジュールに値を提供する際に使用するためにPUFデバイスの1つまたは複数を選択するために使用されるセレクタモジュールをさらに含む。例えば、複数のPUFデバイスから提供された値をリンクして、MACモジュールへの入力として提供できる。様々な実施形態では、セレクタモジュールは、ハードウェア及び/またはソフトウェアを使用して実装することができる。
【0182】
図10は、一実施形態による、物理複製困難関数(PUF)デバイス121からの入力を受信するメッセージ認証コード(MAC)123の出力から、一意のキー125を生成するためのシステムを示す。システムは、メッセージ認証コード(MAC)モジュール123の出力から一意のキー125(または他の値)を生成するために使用されるPUFアーキテクチャ111を提供する。MACモジュール123は、物理複製困難関数(PUF)デバイス121から得られた入力値を受信する。
【0183】
図10のPUFデバイス121は、例えば、様々な既知のタイプのPUFのいずれか1つであり得る。MACモジュール123は、例えば、SHA1、SHA2、MD5、CRC、TIGERなどの一方向性の関数を提供する。
【0184】
アーキテクチャ111は、例えば、チップ間で生成されるPUFの値またはコードのハミング距離を改善することができる。MAC関数は予測できない(例えば、MAC関数に提供されるビットの差が1つだけの入力シーケンスは、2つの完全に異なる出力結果をもたらす)。したがって、出力の知識しかないとき、MAC関数への入力を認識または決定することはできない。アーキテクチャ111はまた、例えば、疑似乱数ジェネレータとしてのPUFの均一性を改善することができる。
【0185】
一例では、PUFアーキテクチャ111によって生成される値(例えば、一意のキー125または別の値)は、Nビットを有する数であり得る。この場合、Nは、PUFアーキテクチャ111を含むチップ(例えば、メモリデバイス103または別のデバイス)に実装される暗号化アルゴリズムに依存する。一例では、チップは、HMAC-SHA256を使用する暗号化関数を実装し、その場合、MACモジュール123からの出力は、256ビットのサイズNを有する。MACモジュール123からの出力の使用は、キーとしての使用に適した出力値のメッセージの長さをもたらす(さらなる圧縮またはパディングを必要としない)。
【0186】
PUFアーキテクチャ111は、図示のメモリデバイス103などのデバイスに実装されるか、または、例えば、ウェーハ製造生産ラインによって提供される多数の半導体チップに実装される集積回路などの他のタイプのコンピューティングデバイスに実装することができる。
【0187】
一実施形態では、MACモジュール123は、例えば、メモリデバイス103に暗号化関数を提供することができる暗号化モジュール127と協調し、及び/または暗号化モジュール127に、またはその一部として統合される。例えば、MACモジュール123の出力は、MACが他の暗号化目的のためにメモリデバイス103によって使用されているため、キーとして使用するのに適している場合がある。
【0188】
PUFアーキテクチャ111、暗号化モジュール127、及び/またはメモリデバイス103の他の機能の動作は、コントローラ107によって制御することができる。コントローラ107は、例えば、1つまたは複数のマイクロプロセッサを含むことができる。
【0189】
図10では、ホスト101は、通信チャネルを介してメモリデバイス103と通信することができる。ホスト101は、メモリデバイス103などのコンピュータ周辺機器が、相互接続、例えばコンピュータバス(例えば、周辺コンポーネント相互接続(PCI)、PCI eXtended(PCI-X)、PCI Express(PCIe))、通信部分、及び/またはコンピュータネットワークを介して接続され得る、1つまたは複数の中央処理ユニット(CPU)を有するコンピュータであり得る。
【0190】
一実施形態では、一意のキー125は、メモリデバイス103のIDを提供するためのUDSとして使用される。DICE-RIoTのアーキテクチャでは、コントローラ107は、実装層0L0及び層1L1を実装する。ホストインターフェイス105を介してホスト101からホストメッセージを受信することに応答して、暗号化モジュール127は、上記のように、トリプルを生成するための処理を実行する。ホスト101は、トリプルを使用して、メモリデバイス103のIDを検証する。メモリデバイス103は、コンピューティングデバイス141の例である。
【0191】
例示的な説明のために、通常、2つの技術的問題があることに留意されたい。第1の問題は、基板のIDをホストに証明することである。この問題は、例えばDICE-RIoTについて前述したように、公開トリプルと非対称暗号化を使用することで処理できる。このアプローチは安全で簡潔であるが、場合によっては、回路基板自体で直接使用するにはコストと時間がかかりすぎる可能性がある。第2の問題は、基板のメモリのIDを基板に証明することである(例えば、不正なメモリの置換を回避するため)(これは、例えば各電源投入後に実行される)。第2の問題は、上記の公開トリプルと非対称暗号を使用して解決できる。ただし、第2の問題を処理するには、多くの場合、MAC関数のみに基づくより軽いセキュリティメカニズムで十分である。
【0192】
メモリデバイス103は、例えば、不揮発性記憶媒体109にホスト101のデータを格納するために使用することができる。一般的なメモリデバイスの例には、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、フラッシュメモリ、ダイナミックランダムアクセスメモリ、磁気テープ、ネットワーク接続ストレージデバイスなどが含まれる。メモリデバイス103には、通信チャネルを使用してホスト101との通信を実施するホストインターフェイス105が含まれる。例えば、ホスト101とメモリデバイス103との間の通信チャネルは、一実施形態では、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIエクスプレスまたはPCIE)バスである。ホスト101及びメモリデバイス103は、NVMeプロトコル(不揮発性メモリホストコントローラインターフェイス仕様(NVMHCI)、NVM Exper(NVMe)としても知られている)を使用して互いに通信する。
【0193】
いくつかの実施態様では、ホスト101とメモリデバイス103との間の通信チャネルは、ローカルエリアネットワーク、ワイヤレスローカルエリアネットワーク、ワイヤレスパーソナルエリアネットワーク、セルラー通信ネットワーク、ブロードバンド高速常時接続の無線通信接続(例えば、現在または将来の世代のモバイルネットワークリンク)などのコンピュータネットワークを含む。また、ホスト101及びメモリデバイス103は、NVMeプロトコルのものと同様のデータストレージ管理及び使用コマンドを使用して互いに通信するように構成することができる。
【0194】
コントローラ107は、ファームウェア104を実行して、ホスト101からの通信に応答する操作、及び/または他の操作を実行することができる。ファームウェアは一般に、設計されたコンピューティングデバイスの制御、監視、及びデータ操作をもたらすコンピュータプログラムの一種である。
図10では、ファームウェア104は、以下でさらに説明されるように、PUFアーキテクチャ111の動作など、メモリデバイス103を動作させる際のコントローラ107の動作を制御する。
【0195】
メモリデバイス103は、剛性ディスクにコーティングされた磁性材料などの不揮発性記憶媒体109、及び/または集積回路内のメモリセルを有する。記憶媒体109は、不揮発性記憶媒体109に格納されたデータ/情報を維持するために電力を必要としないという点で不揮発性であり、このデータ/情報は、不揮発性記憶媒体109の電源を切った後に再び電源を入れてから取得することができる。メモリセルは、NANDゲートベースのフラッシュメモリ、位相変化メモリ(PCM)、磁気メモリ(MRAM)、抵抗性ランダムアクセスメモリ、及び3D XPointなどの様々なメモリ/ストレージテクノロジを使用して実装でき、記憶媒体109は非揮発性であり、数日、数か月、及び/または数年間、電力なしでそこに格納されたデータを保持することができる。
【0196】
メモリデバイス103は、実行時のデータと、コントローラ107の計算能力を改善するために、及び/またはホスト101と不揮発性記憶媒体109との間で転送されるデータのためのバッファを提供するために、コントローラ107によって使用される命令とを格納するための揮発性ダイナミックランダムアクセスメモリ(DRAM)106を含む。DRAM106は、そこに格納されたデータ/情報を維持するために電力を必要とするという点で揮発性であり、そのデータ/情報は、電力が遮断されると即座にまたは急速に失われる。
【0197】
揮発性DRAM106は、通常、不揮発性記憶媒体109よりも待ち時間が短いが、電源を切るとデータがすぐに失われる。したがって、揮発性DRAM106を使用することは、現在のコンピューティングタスクにおいてコントローラ107に使用される命令及びデータを一時的に格納して、パフォーマンスを改善することにおいて有利である。場合によっては、揮発性のDRAM106は、いくつかのアプリケーションでは、DRAMよりも少ない電力を使用する揮発性のスタティックランダムアクセスメモリ(SRAM)に置き換えられる。不揮発性記憶媒体109が、揮発性DRAM106に匹敵するデータアクセス性能(例えば、待ち時間、読み取り/書き込み速度)を有するとき、揮発性DRAM106を排除することができる。また、コントローラ107は、揮発性DRAM106上で動作する代わりに、命令及びデータのために不揮発性記憶媒体109上で動作することによってコンピューティングを実行することができる。
【0198】
例えば、クロスポイントストレージ及びメモリデバイス(例えば、3D XPointメモリ)は、揮発性DRAM106に匹敵するデータアクセス性能を備えている。クロスポイントメモリデバイスは、トランジスタのないメモリ要素を使用する。各メモリ要素には、列として一緒にスタックされたメモリセルとセレクタがある。メモリ要素の列は、2つの垂直なワイヤの配置を介して接続され、一方の配置はメモリ要素の列の上にあり、もう一方の配置はメモリ要素の列の下にある。各メモリ要素は、2つの層のそれぞれの1本のワイヤのクロスポイントで個別に選択できる。クロスポイントメモリデバイスは高速で不揮発性であり、処理とストレージの統合メモリプールとして使用できる。
【0199】
場合によっては、コントローラ107は、揮発性DRAM106及び/または不揮発性記憶媒体109よりも優れたデータアクセス性能を備えたプロセッサ内キャッシュメモリを有する。したがって、現在のコンピューティングタスクで使用される命令及びデータの一部は、コントローラ107のコンピューティング動作中に、コントローラ107のプロセッサ内キャッシュメモリにキャッシュされる。場合によっては、コントローラ107は複数のプロセッサを有し、それぞれが独自のプロセッサ内キャッシュメモリを有する。
【0200】
任意選択で、コントローラ107は、メモリデバイス103に編成されたデータ及び/または命令を使用して、データ集約型のメモリ内処理を実行する。例えば、ホスト101からの要求に応答して、コントローラ107は、メモリデバイス103に格納されたデータセットのリアルタイムの分析を実行し、縮小されたデータセットを応答としてホスト101に通信する。例えば、いくつかのアプリケーションでは、メモリデバイス103は、センサ入力を格納するためにリアルタイムセンサに接続され、コントローラ107のプロセッサは、センサ入力に基づいて機械学習及び/またはパターン認識を実行して、メモリデバイス103及び/またはホスト101を介して少なくとも部分的に実装される人工知能(AI)システムをサポートするように構成される。
【0201】
いくつかの実施態様では、コントローラ107のプロセッサは、コンピュータチップの製造においてメモリ(例えば、106または109)と統合されて、メモリでの処理を可能にし、したがって、フォンノイマンアーキテクチャに従って個別に構成されたプロセッサとメモリの間を移動するデータの待ち時間により引き起こされるスループットの制限の結果として、コンピューティングの能力を制限するフォンノイマンボトルネックを克服する。処理とメモリの統合により、処理速度とメモリ転送速度が向上し、待ち時間と電力使用量が減少する。
【0202】
メモリデバイス103は、クラウドコンピューティングシステム、エッジコンピューティングシステム、フォグコンピューティングシステム、及び/またはスタンドアロンコンピュータなどの様々なコンピューティングシステムで使用することができる。クラウドコンピューティングシステムでは、リモートコンピュータサーバがネットワークに接続され、データを格納、管理、及び処理する。エッジコンピューティングシステムは、データソースに近いコンピュータネットワークのエッジでデータ処理を実行することでクラウドコンピューティングを最適化し、そのため集中サーバ及び/またはデータストレージとのデータ通信を削減する。フォグコンピューティングシステムは、1つ以上のエンドユーザデバイスまたはニアユーザエッジデバイスを使用してデータを格納するため、データを一元化されたデータウェアハウスに格納する必要性を低減または排除する。
【0203】
本明細書に開示される少なくともいくつかの実施形態は、ファームウェア104などのコントローラ107によって実行されるコンピュータ命令を使用して実装することができる。場合によっては、ハードウェア回路を使用して、ファームウェア104の関数の少なくともいくつかを実装することができる。ファームウェア104は、最初に不揮発性記憶媒体109または別の不揮発性デバイスに格納され得、コントローラ107による実行のために揮発性DRAM106及び/またはプロセッサ内キャッシュメモリにロードされ得る。
【0204】
例えば、ファームウェア104は、PUFアーキテクチャを動作させる際に以下で説明する技法を使用するように構成することができる。しかし、以下に説明する技術は、
図10のコンピュータシステム及び/または上記の例で使用されることに限定されない。
【0205】
いくつかの実施態様では、MACモジュール123の出力を使用して、例えば、ルートキーまたはシードの値を提供することができる。他の実装では、出力を使用して1つ以上のセッションキーを生成できる。
【0206】
一実施形態では、MACモジュール123からの出力は、別のコンピューティングデバイスに送信することができる。例えば、一意のキー125は、ホストインターフェイス105を介してホスト101に送信することができる。
【0207】
図11は、一実施形態による、セレクタモジュール204によって選択された1つまたは複数のPUFデバイスからの入力を受信する、MAC123の出力から一意のキー125を生成するためのシステムを示す。システムは、一実施形態に従って、
図10のアーキテクチャ111と同様のPUFアーキテクチャを使用してMACモジュール123の出力からの一意のキー125を生成するが、複数のPUFデバイス202とセレクタモジュール204を含む。MACモジュール123は、セレクタモジュール204によって選択された1つまたは複数のPUFデバイス202からの入力を受信する。一例では、PUFデバイス202は、PUFデバイス121を含む。
【0208】
PUFデバイス202は、例えば、同一または異なる(例えば、異なるランダムな物理現象に基づく)ことができる。一実施形態では、セレクタモジュール204は、インテリジェントPUF選択ブロックまたは回路として機能して、1つまたは複数のPUFデバイス202を選択し、そこから、MACモジュール123への入力として提供する値を取得する。
【0209】
一実施形態では、セレクタモジュール204は、少なくとも部分的に、PUFデバイス202をテストした結果に基づいて、PUFデバイス202の選択に基づく。例えば、セレクタモジュール204は、各PUFデバイス202の再現性をテストすることができる。いずれかのPUFデバイス202がテストに失敗した場合、セレクタモジュール204は、失敗したデバイスをMACモジュール123への入力値の提供から除外する。一例では、失敗したデバイスを一時的または無期限に除外することができる。
【0210】
いくつかの実施態様では、セレクタモジュール204は、製造中及び/または現場での使用中に(例えば、各PUFデバイス202によって提供される値の再現性をチェックすることによって)各チップのPUF機能をテストすることを可能にする。所与のPUFデバイスによって提供される2つ以上の値が異なる場合、PUFデバイスは失敗したと判断され、MACモジュール123への入力としての使用から除外される。
【0211】
一実施形態では、セレクタモジュール204は、MACモジュール123からの改善されたPUF出力を計算するためのソースとして、複数のPUFデバイス202を同時に使用するために使用される。例えば、セレクタモジュール204は、第1のPUFデバイスからの値を第2のPUFデバイスからの値とリンクして、MACモジュール123への入力として提供することができる。一部の実施態様は、このアーキテクチャでは、いくつかの異なる物理現象に依存しているため、堅牢なPUF出力を取得できる。
【0212】
図12は、一実施形態による、1つまたは複数のPUFデバイスからの入力、及びモノトニックカウンタ302からの入力(及び/またはNONCE、タイムスタンプなどのような別のフレッシュネスメカニズムからの入力)を受信するMACの出力から一意のキーを生成するためのシステムを示す。一実施形態によれば、システムは、MACモジュール123の出力から一意のキー125を生成する。
図12に示すPUFアーキテクチャは、
図11に示されるPUFアーキテクチャに類似しているが、ただしセレクタモジュール204に値を提供するためにモノトニックカウンタ302が含まれている。様々な実施形態では、モノトニックカウンタ302は、ハードウェア及び/またはソフトウェアを使用して実装することができる。
【0213】
MACモジュール123は、1つまたは複数のPUFデバイス202からの入力及びモノトニックカウンタ302からの入力を受信する。一例では、PUFデバイス202及びモノトニックカウンタ302から得られた値がリンクされ、次に、MACモジュール123への入力として提供される。いくつかの実施態様では、モノトニックカウンタ302は、要求されたときにその値を増分するのみである不揮発性カウンタである。いくつかの実施形態では、モノトニックカウンタ302は、チップの各パワーアップサイクルの後に増分される。
【0214】
いくつかの実施態様では、
図12のPUFアーキテクチャは、例えば公開キーメカニズムなど、アプリケーションの半導体チップと他のコンポーネントとの間でキーを安全に共有する方法を提供するために使用することができる。
【0215】
いくつかの実施態様では、モノトニックカウンタ302は、PUFの各計算の前に増分され、これにより、MACモジュール123の入力が各サイクルで異なることを確実にし、したがって、提供される出力(及び/または出力のパターン)が異なる。いくつかの例では、このアプローチを使用して、各セッションキーが異なるセッションキーを生成できる。
【0216】
いくつかの実施形態では、セレクタモジュール204は、モノトニックカウンタ302(またはNONCE、タイムスタンプなどの他のフレッシュネスメカニズム)を、MACモジュール123への入力としてカウンタ値を提供することから、選択的に包含または除外することができる。
【0217】
いくつかの実施形態では、モノトニックカウンタ302は、暗号化モジュール127によっても使用される。いくつかの実施形態では、モノトニックカウンタを含むPUFアーキテクチャをセッションキージェネレータとして使用して、各サイクルで異なるキーを保証することができる。一部の実施態様では、生成されたセッションキーは次のように保護される。Session key=MAC[one or more PUFs|MTC or other freshness]
【0218】
他の実施形態では、メカニズムは以下のように使用される:
Session key=MACkey_based[Root_Key,MTC or other freshness mechanism]
式中、Root_Key=上記のMACモジュール123から提供された出力値、またはチップに存在する他のいずれかの種類のキー。
上記のMACkey_based関数は、例えば、シークレットキーに基づくMACアルゴリズムである。例えば、暗号化には2種類のMACアルゴリズムがある。
1.例えば、HMACファミリのようなシークレットキーに基づくアルゴリズム(HMAC-SHA256はキーベース)。
2.例えばSHA256のようなシークレットキーに基づかないアルゴリズム(SHAスタンドアロンはキーベースではない)。
キーベースのMACは、キーを既知の値(0x000…0xFFFFなど)に設定することにより、キーベースではないMACに変換できることに留意されたい。
【0219】
図13は、一実施形態による、1つまたは複数のPUFから提供される1つまたは複数の入力値を使用する、MACからの出力を生成する方法を示す。例えば、
図13の方法は、
図10のメモリデバイス103に実装することができる。
【0220】
図13の方法は、ブロック411において、少なくとも1つのPUFによって1つまたは複数の値を提供すること(例えば、PUFデバイス202の1つまたは複数からの値を提供すること)を含む。
【0221】
ブロック413で、例えば上記のように、PUFの1つまたは複数の再現性をテストすることができる。このテストは任意選択である。
【0222】
ブロック415で、テストがブロック413で実行され、PUFデバイスがテストに失敗したと判定された場合、失敗したPUFデバイスは、MACへの入力を提供することから除外される。この除外は、例えば、上で論じたように、セレクタモジュール204によって実行され得る。
【0223】
ブロック417において、値は、モノトニックカウンタ(例えば、モノトニックカウンタ302)から提供される。PUFアーキテクチャでのモノトニックカウンタの使用は任意選択である。
【0224】
ブロック419で、出力は、MACへの入力として、PUFによって提供される1つまたは複数の値(及び任意選択で、モノトニックカウンタからの少なくとも1つの値)を使用するMACから生成される。
【0225】
少なくとも1つの物理複製困難関数(PUF)によって、少なくとも1つの値を提供すること、及びメッセージ認証コード(MAC)に基づいて、第1の出力を生成することを含むコンピューティングデバイスに実装される方法であって、MACは、第1の出力を生成するための入力として、少なくとも1つのPUFによって提供される少なくとも1つの値を使用する、方法について、次に、他の様々な実施形態を以下に説明する。
【0226】
一実施形態では、コンピューティングデバイスは、第1のコンピューティングデバイスであり、方法は、第1の出力を第2のコンピューティングデバイスに送信することをさらに含み、第1の出力は、第1のコンピューティングデバイスの一意の識別子である。
【0227】
一実施形態では、少なくとも1つの値を提供することは、第1のPUFから第1の値を選択することと、第2のPUFから第2の値を選択することとを含む。
【0228】
一実施形態では、方法はモノトニックカウンタから値を提供することをさらに含み、第1の出力を生成することは、第1の出力を生成するためのMACへの追加の入力としてモノトニックカウンタからの値を使用することをさらに含む。
【0229】
一実施形態では、方法は、MACによって提供されるそれぞれの出力に基づいて複数のセッションキーを生成することであって、モノトニックカウンタは、MACへの入力として使用される値を提供する、生成すること、及び各セッションキーを生成した後、モノトニックカウンタを増分することをさらに含む。
【0230】
一実施形態では、方法は、少なくとも1つのPUFの第1のPUFの再現性をテストすること、及び第1のPUFがテストに失敗したとの判定に基づいて、第1の出力を生成するときに第1のPUFがMACにいずれかの入力を提供することを除外すること、をさらに含む。
【0231】
一実施形態では、テストすることは、第1のPUFによって提供される2つ以上の値を比較することを含む。
【0232】
一実施形態では、コンピューティングデバイスはメモリデバイスであり、メモリデバイスは、MACを使用して生成された出力値を格納するように構成された不揮発性記憶媒体を備える。
【0233】
一実施形態では、方法は、少なくとも1つのプロセッサによって、少なくとも1つの暗号化関数を実行することをさらに含み、少なくとも1つの暗号化関数を実行することは、MACを使用して生成された出力値を使用することを含む。
【0234】
一実施形態では、非一時的コンピュータ記憶媒体は、メモリデバイス(例えば、メモリデバイス103)で実行されたとき、メモリデバイスが、少なくとも1つの物理複製困難関数(PUF)によって、少なくとも1つの値を提供すること、及びメッセージ認証コード(MAC)に基づいて、第1の出力を生成することであって、MACは、少なくとも1つのPUFによって提供される少なくとも1つの値を、第1の出力を生成するための入力として使用する、生成すること、を含む方法を実行することを引き起こす命令を格納する。
【0235】
以下に説明する他の様々な実施形態では、
図4の方法は、少なくとも1つの物理複製困難関数(PUF)デバイス、少なくとも1つのPUFデバイスによって提供される少なくとも1つの値に基づいて第1の入力を受信するように構成されたメッセージ認証コードMACモジュール、少なくとも1つのプロセッサ、及び少なくとも1つのプロセッサに、第1の入力に基づいて、MACモジュールからの第1の出力を生成するように命令するように構成された命令を含むメモリを含むシステムで実行され得る。
【0236】
一実施形態では、MACモジュールは回路を含む。一実施形態では、MACモジュールからの第1の出力は、ダイを識別するキーである。一実施形態では、MACモジュールからの第1の出力はルートキーであり、命令はさらに、MACモジュールからの出力を使用してセッションキーを生成するように少なくとも1つのプロセッサに命令するように構成される。
【0237】
一実施形態では、システムは半導体チップ(例えば、半導体ウェーハから得られるいくつかのチップのうちの1つのチップ)の一部であり、MACモジュールからの第1の出力は、チップを識別する一意の値であり、命令はさらに、一意の値をコンピューティングデバイスに送信するように少なくとも1つのプロセッサに命令するように構成される。
【0238】
一実施形態では、少なくとも1つのPUFデバイスは、複数のPUFデバイス(例えば、PUFデバイス202)を含み、システムは、少なくとも1つの値を提供する少なくとも1つのPUFデバイスを選択するように構成されたセレクタモジュールをさらに備える。
【0239】
一実施形態では、セレクタモジュールは、第1のPUFデバイスからの第1の値と、第2のPUFデバイスからの第2の値とをリンクすることによって、MACモジュールの第1の入力を生成するようにさらに構成される。
【0240】
一実施形態では、システムは、カウンタ値を提供するように構成されたモノトニックカウンタをさらに含み、命令は、カウンタ値を、少なくとも1つのPUFデバイスによって提供される少なくとも1つの値とリンクすることによって、第1の入力を生成するように少なくとも1つのプロセッサに命令するようにさらに構成される。
【0241】
一実施形態では、システムは、少なくとも1つの値を提供する少なくとも1つのPUFデバイスを選択するように構成されたセレクタモジュールをさらに含み、カウンタ値を少なくとも1つのPUFデバイスによって提供される少なくとも1つの値とリンクすることは、セレクタモジュールによって実行される。
【0242】
一実施形態では、モノトニックカウンタは、第1の入力を生成した後、カウンタ値を増分して増分値を提供するようにさらに構成され、さらに、命令は、少なくとも1つのPUFデバイスによって提供される増分値及び少なくとも1つの新しい値に基づいて、MACモジュールからの第2の出力を生成するように少なくとも1つのプロセッサに命令するように構成される。
【0243】
図14は、一実施形態による、1つまたは複数のPUFデバイスからの入力及びモノトニックカウンタからの入力(及び/またはNONCE、タイムスタンプなどのような別のフレッシュネスメカニズムからの入力)を受信し、セッションキーを生成するために付加的なMACを追加する、MACの出力からルートキーを生成するためのシステムを示す。
【0244】
一実施形態において、システムは、一実施形態による、1つまたは複数のPUFデバイス202からの入力及びモノトニックカウンタ302からの入力(及び/またはNONCE、タイムスタンプなどのような別のフレッシュネスメカニズムからの入力)を受信し、ルートキー入力を使用してセッションキーを生成するために付加的なMACモジュール504を追加する、MACの出力からのルートキーを生成する。この実施形態では、MACモジュール123は、MACモジュール123からの出力としてルートキー502を提供する。ルートキー502は、MACモジュール504への入力であり、上記のSession key=MACkey_based[Root_Key,MTC or other freshness mechanism]などのMAC関数を使用できる。このキーベースの関数に入力されるルートキーは、示されているように、ルートキー502とすることができる。
【0245】
さらに、一実施形態では、モノトニックカウンタ302は、MACモジュール504への入力を提供することができる。他の実施形態では、チップからの異なるモノトニックカウンタまたは他の値を、モノトニックカウンタ302を使用する代わりに、MACモジュール504への入力として提供することができる。場合によっては、モノトニックカウンタ302は、MACモジュール504にカウンタ値を提供するが、セレクタモジュール204には提供しない。それ以外の場合は、カウンタ値を両方のMACモジュールに提供するか、両方のモジュールから除外することができる。
【0246】
(キーの生成と安全なストレージ)
上記のように、PUFは安全なキーの生成に使用できる。以下で説明する様々な実施形態は、少なくとも1つのPUFを使用して初期キーを生成し、処理を適用して初期キーの難読化を増加させ、最終的に難読化されたキーを不揮発性メモリに格納することに関する。最終的に難読化されたキー及び/または最終的に難読化されたキーを生成するために使用される中間キーは、別のコンピューティングデバイスと共有され、他のコンピューティングデバイスとの安全な通信に使用され得る(例えば、共有キーに基づく対称暗号化を使用するメッセージング)。いくつかの実施形態では、安全なキーの生成は、自動車の用途で使用されるコンピューティングデバイス(例えば、自動運転車両のコントローラ)に対して行われる。
【0247】
代替の実施形態では、初期キーは、上記の少なくとも1つのPUFを使用することを必要としない他の方法で生成される。一実施形態では、初期キーは、インジェクションされたキーを使用することによって生成することができる。例えば、初期キーは、工場またはその他の安全な環境にて挿入されているため、チップに存在する。この場合、初期キーの難読化を高めるための適用処理は、インジェクションされたキーに難読化処理を適用することによって実行される。
【0248】
自動車環境には、キー生成フェーズ中に「ノイズ」が発生するという技術的な問題がある。以下の様々な実施形態は、難読化されたキーを不揮発性メモリ領域内に格納することによって、この誘導ノイズによるキーの変動を低減または回避する方法論を使用することによって、この問題に対する技術的解決策を提供する。
【0249】
自動車環境は、様々な方法でキーの生成に影響を与える可能性がある。例えば、エンジンの電源を入れると、コンピューティングデバイスへのアプリケーションの電力が低下し、キーが誤った方法で生成される可能性がある。極端な温度も、キーを生成する回路に影響を与える可能性がある。電力線からの磁場などの他のソースは、シンボル間干渉またはクロストークを引き起こし、ホストがデバイスを認識しないようにする可能性がある。
【0250】
対照的に、キーが安全な環境で生成され、メモリに格納されている場合、ノイズの影響を受けない。安全な環境は、例えば、コンピューティングデバイス製品のエンドユーザ/顧客間でキーを伝播するために使用される戦略に応じて、車、テスト環境、または工場(例えば、キーを生成するコンピューティングデバイスを製造する)に直接取り付け得ることである。
【0251】
一例では、車両で使用されるADASまたは他のコンピューティングシステムは、電源の変動の影響を受ける。これは、例えば、車両の電源を入れたり、ブレーキをかけたり、エンジンに動力を供給したりするときに発生する可能性がある。
【0252】
以下で説明するようにキーを生成及び格納するための様々な実施形態は、外部要因(例えば、電源の変動、温度及び他の外部ノイズ源)から実質的に独立しているという利点をもたらす。いくつかの実施形態における別の利点は、例えば、すべてのサイクルについて、キーベクトルの生成が同じであることである。
【0253】
キーを格納するとき、いくつかの実施形態で提供される別の利点は、キーがハードウェア攻撃(例えば、ハッカーが配置する可能性がある)に対して実質的に耐性があることである。例えば、1つのそのような攻撃は、デバイスの電源投入電流を監視して、電流の変動をキーに関連付けられたビットに関連付けることである。他の攻撃では、例えば、電圧測定(Vdd供給電圧など)を使用できる。一部の攻撃では、例えば、温度変化を使用してデバイスの動作を妨害する可能性がある。
【0254】
いくつかの実施形態では、初期キーは、
図10~14について上で説明したようなアプローチ及び/またはアーキテクチャを使用して、生成することができる。例えば、PUFは、キーを格納しているコンピューティングデバイスの電源投入サイクルごとにキーを生成するために使用される。代替の実施形態では、他のアプローチを使用して、初期キーを生成することができる。
【0255】
1つの例示的なアプローチでは、前述のように、キーインジェクションは、少なくとも1つのPUF及びMACアルゴリズム(例えば、SHA256)を使用して、他のデバイス(例えば、ウェーハ上に配置された隣接しているダイ)とは著しく異なるデバイスのキーを生成する。MAC暗号化アルゴリズムには、PUFによって生成されるビットのエントロピーを増やすという利点がある。
【0256】
一実施形態では、生成されたキー(例えば、PUF、次いでMACアルゴリズムから提供された初期キー)は、ハッカーの攻撃を減少または回避する、また格納されたキーの信頼性を向上させるために、キーに対して前処理が実行された後、デバイスの不揮発性領域に格納される。一実施形態では、キーが格納された後、キーを生成する回路を無効にすることができる。前処理は、一般に、本明細書では難読化処理と呼ばれる。一例では、回路及び/または他の論理を使用して、デバイスで難読化処理を実装する。一例では、キーが外部のノイズ源から独立しているため、格納されたキーをデバイスで読み取ることができる。内部メカニズムは、デバイスのデータを読み取るために使用される。
【0257】
様々な実施形態において、本明細書に記載されるようにキーを格納することは、ノイズに対するマージンを増加させる。また、これにより、ハッカーは、例えば電力監視やその他のハッキング方法を使用して、格納されているキーを読み取ることが困難になる。
【0258】
本明細書の少なくともいくつかの実施形態は、PUF及び暗号化アルゴリズム(例えば、HMAC-SHA256)を使用して、キーの生成を、別段ではキーを次の電源投入までのデバイスの1回の電源投入とは異なるものにできる温度または電圧などの外部要因から独立させる。これが発生した場合、ホストがデバイスとメッセージを交換できることが問題になる可能性がある。様々な実施形態は、それが外部要因によって影響されないように、格納されたキーをメモリに配置することによって、キーの生成をよりロバストにする。
【0259】
一実施形態では、キーは、デバイスで一度生成され、デバイスの不揮発性メモリに格納される。一例では、リセットがSRAMに適用される前に、SRAMの内容を使用してキーを生成することができる。PUFの機能であるキーは、PUFから出力された疑似ランダム値を使用して生成される。アプライアンスまたは他のデバイスをリセットする前に、SRAMの内容が読み取られる。キーは、必要に応じて、コマンドシーケンスを介して他の時間に再生成することもできる。一例では、生成されたキーは、上記のように、DICE-RIoTプロトコルでUDSとして使用される。一例では、コマンドシーケンスは、前述のように、置換コマンドを使用して、以前に生成されたUDSを新しいUDSに置き換える。
【0260】
一実施形態では、キーの生成は、デバイスによって実装される暗号化とは無関係である。生成されたキーはホストと共有される。この実施形態は、例えば、デバイスがキーの使用中に吸収する電流の形状を分析することなどによって、攻撃者がキーを推測して内部で使用することを回避する方法で、キーを格納し、及び/またはキーをデバイスにおいて読み取る。
【0261】
さらに、例えば、非対称暗号化では、生成されたキーは、システムのシークレットキーである可変パスワードになる。キーは他と共有されない。公開キー暗号化の場合、キーは対応する公開キーを生成するために使用される。
【0262】
様々な実施形態において、初期キーは、インジェクションされたキーを使用して、または1つまたは複数のPUFを使用して(例えば、初期キーPUF0を提供するために)生成される。次に、初期キーは、以下に説明するような中間キー(例えば、PUF1、PUF2、…、PUF5)を提供するために、難読化処理の1つ以上のステップにかけられる。この処理からの出力(PUF5など)は、デバイスの不揮発性メモリに格納されている難読化されたキーである。インジェクションされたキーを使用するとき、PUF0の非限定的な例について以下で説明するのと同様に、インジェクションされたキーに難読化処理が適用される。
【0263】
一実施形態では、上記のように、初期のインジェクションされたキーの場合、以下のようなメカニズムが使用される。
Session key=MACkey_based[Root_Key,MTC or other freshness mechanism]
式中、Root_Key=チップに存在するその他いずれかの種類のキー(例えば、キーは、工場またはその他の安全な環境でチップに挿入された初期キーである可能性がある)
【0264】
一実施形態では、デバイスの最初の電源投入時に、特別なシーケンスが、デバイスの少なくとも1つの回路(例えば、読み取り回路)をウェイクアップし、回路(複数可)が適切に実行されていることを検証する。次に、デバイスは、上記のように初期キーPUF0を生成する。このキーは、以下に説明するように、格納するか、さらに処理して、安全なストレージに対してより堅牢にすることができる。
【0265】
中間キーPUF1は、PUF0を所定のビットシーケンス(例えば、他の人が知っているシーケンス)と連結してPUF1を生成することによって生成される。一実施形態では、PUF1を使用して、キーを正しく読み取るデバイスの能力を検証し、電源の変動などのノイズが、生成されたキーに影響を与えていないことを検証する。
【0266】
次の中間キーPUF2が生成される。PUF1は、反転ビットパターン(例えば、PUF1のビットを反転することによって形成され、本明細書ではPUF1バーと呼ばれることもある)でインターリーブされて、PUF2を生成する。
【0267】
一実施形態では、PUF2は、同じビット数の0及び1を有する。これにより、デバイス電流の形状は、どのキー(例えば、デバイスに格納されているすべてのキー)でも実質的に同じになる。これにより、攻撃者がデバイスによってキーが読み取られているときにデバイスの電流の形状を調べて、キーの値を推測する可能性が低くなる。
【0268】
次の中間キーPUF3が生成される。PUF2のビットは、疑似ランダムビットとインターリーブされてPUF3を形成する。これはさらに、キーを難読化するのに役立つ。一実施形態では、疑似ランダムビットは、ハッシュ関数を使用することによって、PUF1またはPUF2から導出される。例えば、これらの導出されたビットはPUF2に追加されてPUF3を形成する。
【0269】
次の中間キーPUF4が生成される。エラー訂正コード(ECC)は、デバイスの内部回路によって生成される(プログラミング中など)。ECCのビットがPUF3に追加され、PUF4が生成される。一実施形態では、ECCビットは、例えば、デバイスの耐久限界、X線、及び粒子によって引き起こされる可能性がある不揮発性メモリ(例えば、NVRAM)の経年劣化の影響から保護するのに役立つ。不揮発性メモリの経年劣化は、例えば、ビットを反転させる可能性のあるNVセル内の電子数の増加によっても発生する可能性がある。
【0270】
次の中間キーPUF5が生成される。PUF5は、PUF4の複数のコピーを連結したものである。PUF5に複数のPUF4コピーが存在する冗長性があると、後でキーを正しく読み取ることができる可能性が高まることにより、ロバスト性がさらに向上する。一実施形態では、PUF5のいくつかのコピーは、ロバスト性をさらに高めるために、不揮発性メモリストレージの様々な領域に格納される。例えば、領域の1つでPUF5が破損している場合でも、他の領域からPUF5を読み取ることができるため、正しいキーを抽出できる。
【0271】
一実施形態では、PUF1またはPUF3は、対称暗号化のためにホストと共有されるか、または非対称暗号化のための公開キーを生成するために使用されるキーである。一実施形態では、PUF4及びPUF5は、エンドユーザまたはホストと共有されない。
【0272】
上記のアプローチは、難読化されたキーを生成するためにPUF2、PUF3、PUF4、及び/またはPUF5が必要ないという点でモジュール式である。代わりに、様々な実施形態において、前述の難読化ステップのうちの1つまたは複数を初期キーに適用することができ、さらに順序を変えることができる。例えば、Vdd電圧の供給が低下しないことがわかっているシステムでは、難読化のステップ数を減らすことができる。
【0273】
一実施形態では、難読化されたキーを格納するとき、ビットパターンは、不揮発性記憶媒体の周りに物理的に分散される(例えば、異なる行及びワードで)。例えば、デバイスは同時にビットを読み取り、マルチビットエラーから保護することができる。
【0274】
図15は、一実施形態による、不揮発性メモリ(例えば、不揮発性記憶媒体109)に難読化されたキー635を格納するためのコンピューティングデバイス603を示す。コンピューティングデバイス603は、
図1のコンピューティングデバイス141の例である。一例では、難読化されたキーがUDSとして使用される。(注)例えば、難読化はキーのビットにエントロピーを追加して、ハッカーがキーの値を理解しようとする可能な試みを回避する。デバイスは、難読化として使用される追加ビットを削除することにより、常にキーを抽出できる。一例では、一般的なハッカー攻撃は、統計ツールを使用して、特定の時間枠でデバイスによって吸収された現在のプロファイルを処理することによって、デバイス内で生成/作成されたシークレットキーを推測することからなる。難読化は、この問題をかなりの方法で軽減する。
【0275】
初期キー625は、少なくとも1つの物理複製困難関数デバイス121によって提供される値に基づいて生成される。難読化されたキー635は、初期キー625に基づいて生成される。生成された後、難読化されたキー635は、不揮発性記憶媒体109に格納される。
【0276】
一実施形態では、メッセージ認証コード(MAC)123は、PUFデバイス121からの値を入力として使用し、初期キー625を出力として提供する。一実施形態では、難読化処理モジュール630は、例えば上記で論じたように、難読化されたキー635(例えば、PUF5)を提供するために、初期キー625で処理を実行するために使用される。
【0277】
一実施形態では、難読化されたキー635は、Mondelloらによる「SECURE DISTRIBUTION OF SECRET KEY USING A MONOTONIC COUNTER」と題された、2018年4月27日に出願された、関連する米国非仮出願第15/965,731号に記載されるように、別のコンピューティングデバイスに安全に配布される。その出願の全内容は、あたかも本明細書に完全に記載されているかのように、参照により組み込まれる。他の実施形態では、初期キー625及び/または本明細書に記載の難読化処理からの任意の1つまたは複数の中間キーは、同じまたは同様の方法で安全に分配することができる。任意選択で、エンドユーザ/顧客は前述のアプローチを使用して、初期キー(PUF0など)、中間キー、及び/または最終的に難読化されたキー(PUF5など)の値を読み取る。例えば、エンドユーザは、デバイスによるキーの内部生成の適切な実行を検証する、及び/またはキーの生成の統計的な質を監視することができる。
【0278】
図16は、一実施形態による、難読化処理モジュール630によって難読化プロセスの間に生成される中間キー(PUF2)の例を示す。上記のように、PUF1のビットは、反転されたビット702を提供するために反転される。図示のように、ビット702は、PUF1のビットとインターリーブされている。例えば、図示されたキーの2つ毎のビットは、インターリーブされた反転ビット702である。
【0279】
図17は、一実施形態による、
図16の難読化プロセス中に生成された別の中間キー(PUF3)の例を示している(この例では、PUF3はPUF2に基づく)。上記のように、PUF2のビットは、疑似ランダムビット802でさらにインターリーブされる。図示のように、ビット802は、PUF2でインターリーブされる。例えば、図示されたキーの3つ毎のビットは、インターリーブされた疑似ランダムビット802である。
【0280】
図18は、一実施形態による、不揮発性メモリ(例えば、不揮発性記憶媒体109)において難読化されたキー(例えば、難読化されたキー635)を生成及び格納するための方法を示す。一例では、
図2のメモリシステム105は、難読化されたキーを、不揮発性メモリ121に格納する。
【0281】
ブロック911において、初期キーは、少なくとも1つの物理複製困難関数(PUF)によって提供される値に基づいて生成される。
【0282】
他の実施形態では、ブロック911において、初期キーは、キーインジェクションによって生成される。例えば、初期キーは、製造中にチップにインジェクションされた値である可能性がある。
【0283】
ブロック913において、難読化されたキーは、初期キーに基づいて生成される。例えば、生成された難読化されたキーはPUF3またはPUF5である。
【0284】
ブロック915において、難読化されたキーは、コンピューティングデバイスの不揮発性メモリに格納される。例えば、難読化されたキーは、NANDフラッシュメモリまたはEEPROMに格納される。
【0285】
一実施形態では、方法は、キーインジェクションを使用して初期キーを生成すること、初期キーに基づいて難読化されたキーを生成すること、難読化されたキーを不揮発性メモリに格納することを含む。例えば、初期キーは、製造時のキーインジェクションプロセス中にインジェクションされたキーにすることができる。
【0286】
一実施形態では、方法は、キーインジェクションによって提供されるか、または少なくとも1つの物理複製困難関数(PUF)によって提供される値に基づいて、初期キーを生成すること、初期キーに基づいて難読化されたキーを生成すること、及び難読化されたキーをコンピューティングデバイスの不揮発性メモリに格納することを含む。
【0287】
一実施形態では、初期キーを生成することは、初期キーを生成するためのメッセージ認証コード(MAC)への入力として、PUFからの値(または、例えば、チップの別の値)を使用することを含む。
【0288】
一実施形態では、難読化されたキーは、ユーザアドレス可能メモリ空間の外側の不揮発性メモリに格納される。
【0289】
一実施形態では、難読化されたキーを生成することは、初期キーを所定のビットパターンと連結することを含む。
【0290】
一実施形態では、初期キーを所定のビットパターンと連結することにより、第1のキー(例えば、PUF1)が提供される。難読化されたキーを生成することは、第1のキーを反転ビットパターンでインターリーブすることをさらに含み、反転ビットパターンは、第1のキーのビットを反転することによって提供される。
【0291】
一実施形態では、第1のキーを反転ビットパターンとインターリーブすることにより、第2のキー(例えば、PUF2)が提供される。難読化されたキーを生成することは、第2のキーを疑似ランダムビットでインターリーブすることをさらに含む。
【0292】
一実施形態では、方法は、ハッシュ関数を使用して、第1のキーまたは第2のキーから疑似ランダムビットを導出することをさらに含む。
【0293】
一実施形態では、第2のキーを疑似ランダムビットとインターリーブすることにより、第3のキー(例えば、PUF3)が提供される。難読化されたキーを生成することは、さらに、第3のキーをエラー訂正コードビットと連結することを含む。
【0294】
一実施形態では、コンピューティングデバイスは、第1のコンピューティングデバイスであり、方法は、初期キー、第1のキー、または第3のキーの少なくとも1つを第2のコンピューティングデバイスと共有すること、及び初期キー、第1のキー、または第3のキーの共有されている少なくとも1つを使用して暗号化された第2のコンピューティングデバイスからメッセージを受信することをさらに含む。
【0295】
一実施形態では、第3のキーをエラー訂正コードビットと連結することにより、第4のキー(例えば、PUF4)が提供される。難読化されたキーを生成することは、第4のキーを第4のキーの1つまたは複数のコピーと連結することをさらに含む。
【0296】
一実施形態では、第4のキーを第4のキーの1つまたは複数のコピーと連結すると、第5のキー(例えば、PUF5)が提供される。難読化されたキーを格納することは、第5のキーの第2のコピーが格納される行またはブロックとは異なる不揮発性メモリの行またはブロックの少なくとも1つに、第5のキーの第1のコピーを格納することを、含む。
【0297】
一実施形態では、システムは、第1の値を提供するように構成された少なくとも1つの物理複製困難関数(PUF)デバイス(例えば、PUFデバイス121)、難読化されたキー(例えば、キー635)を格納するように構成された不揮発性メモリ(例えば、不揮発性記憶媒体109)、少なくとも1つのプロセッサ、及び少なくとも1つのプロセッサに、少なくとも1つのPUFデバイスによって提供された第1の値に基づいて初期キーを生成し、初期キーに基づいて難読化されたキーを生成し、難読化されたキーを不揮発性メモリに格納することを命令するように構成された命令を含むメモリを備える。
【0298】
一実施形態では、システムは、少なくとも1つのPUFデバイスによって提供される値を受信するように構成されたメッセージ認証コード(MAC)モジュール(例えば、MAC123)をさらに含み、初期キーを生成することは、第1の値をMACモジュールに入力として使用して初期キーを生成することを含む。
【0299】
一実施形態では、難読化されたキーを生成することは、所定のビットパターンを有するキーを連結すること、第1のキーを第1のキーの反転ビットパターンでインターリーブすること、キーを疑似ランダムビットでインターリーブすること、キーをエラー訂正コードビットと連結すること、または、第2のキーを第2のキーの1つ以上のコピーと連結することの少なくとも1つを含む。
【0300】
一実施形態では、格納された難読化されたキーは、同数のゼロビット及び1ビットを有する。
【0301】
一実施形態では、難読化されたキーを生成することは、初期キーを第1のビットパターンと連結することを含む。
【0302】
一実施形態では、初期キーを第1のビットパターンと連結することにより、第1のキーが提供される。難読化されたキーを生成することは、第1のキーを第2のビットパターンでインターリーブすることをさらに含む。
【0303】
一実施形態では、難読化されたキーを生成することは、キーを疑似ランダムビットでインターリーブすることをさらに含む。
【0304】
一実施形態では、難読化されたキーを生成することは、キーをエラー訂正コードビットと連結することをさらに含む。
【0305】
一実施形態では、非一時的コンピュータ記憶媒体が、コンピューティングデバイスで実行されるとき、コンピューティングデバイスに、少なくとも1つの物理複製困難関数(PUF)を使用して初期キーを生成すること、初期キーに基づいて難読化されたキーを生成すること、及び難読化されたキーを不揮発性メモリに格納することを含む方法を実行させる命令を格納する。
【0306】
図19は、一実施形態による、キーのインジェクション1010に基づいて初期キー625を生成し、初期キーを難読化し、難読化されたキーを不揮発性メモリに格納するために使用されるコンピューティングデバイス1003を示す。
【0307】
一実施形態では、初期キー625は、インジェクションされたキー1010を使用することによって生成される。例えば、初期キー625は、製造中、または他の組み立てまたは試験中に、工場または他の安全な環境にインジェクションされることによってチップ内に存在する。一例では、初期キー625は、コンピューティングデバイス1003の初期UDSとして使用される。難読化はUDSにも適用できる。UDSは、DICE-RIoTがキーと証明書の安全な生成を生成するために使用し始める秘密である。初期キーの難読化を増加させるための適用処理は、インジェクションされたキー(例えば、キーインジェクション1010からの値)に難読化処理(モジュール630を介して)を適用することによって実行される。他の実施形態では、難読化処理は、チップまたはダイに格納されるか、さもなければ存在し得る他の任意の値に適用することができる。
【0308】
(キーの生成と安全なストレージのバリエーション)
次に、様々な追加の非限定的な実施形態を以下に説明する。一実施形態では、システムボードの最初の電源投入後(または電源投入中)に、特別なシーケンスが起動されて、暗号化エンジン(例えば、暗号化モジュール127)を含むデバイスをオンにする。シーケンスはさらに内部PUFをウェイクアップし、その機能を検証する。次に、PUFは、例えば上記のように、初期値PUF0を生成する。PUF0の値は、オンチップアルゴリズムによって(例えば、難読化処理モジュール630によって)処理され、不揮発性アレイの特別な領域(ユーザアドレス可能空間外)に書き込まれる。代替の実施形態では、PUF0の値の代わりに、インジェクションされたキーは、以下に説明するのと同様にオンチップアルゴリズムによって処理されて、格納のための難読化されたキーを提供する。
【0309】
一実施形態では、難読化処理は、Vdd(電圧)及び/または温度障害ハッカー攻撃を防ぐために実行される。この処理には、PUF0を周知のパターン(例えば、固定量の0/1ビットを含む)と連結することが含まれる。これらのビットにより、デバイス(チップなど)の寿命がある間にPUFの値が内部で読み取られるときに、読み取り回路が0/1ビットを適切に識別できるかどうかを判断できる。例えば、PUF1=PUF0||010101…01
【0310】
次に、上記の処理の結果(例えば、PUF1)は、ダミービットでさらに具体化される(例えば、Iccハッカー分析を回避するため)。具体的には、例えば、PUF1のビットは、PUF1の反転バージョン(すなわち、PUF1の各ビットを反転することによって形成されるPUF1バー)とインターリーブされる。例えば、PUF2=PUF1バーとインターリーブされたPUF1。
【0311】
一実施形態では、インターリーブの規則は、チップ/デバイス上に存在する列デコーダの種類(例えば、NV不揮発性アレイのもの)に依存する。デバイスは、(不揮発性アレイからの)PUFの値の各読み取りで、読み取り回路がPUF1及びPUF1バーからの同じビット数を(シングルショットで)処理することを保証する。これにより、0と1の値で同じビット数を確実に読み取ることができ、供給電流(Idd)に規則的な形状が提供される。
【0312】
次に、PUF2のビットはさらに疑似ランダムビットでインターリーブされる。一例では、インターリーブは、不揮発性アレイ列デコーダ構造に依存する。一実施形態では、出力は、特定の数の疑似ランダムビットが詰め込まれた同じ数のPUF2ビットを有する(例えば、PUF2のパターンに存在する可能性がある最終的な残余相関を不明瞭にするために)。
【0313】
一実施形態では、疑似ランダムビットは、ハッシュ関数を使用することによって、PUF1またはPUF2から導出され得る。他の代替アプローチも使用できる。
【0314】
一実施形態では、任意選択で、不揮発性経年劣化によるビット損失を低減または防止するために、PUF3のビットは、エラー訂正コード(ECC)ビットと連結される。一実施形態では、PUF4のビットは、任意選択で1回または複数回複製される(これはまた、ECC機能を拡張する)。例えば、前述のものは、NADメモリ上に実装され得る。一例では、PUF5=PUF4||PUF4||…||PUF4
【0315】
一実施形態では、PUF5の値は、不揮発性メモリアレイの異なる行及び/またはブロックに2回以上書き込むことができる。
【0316】
上記の難読化処理の結果、例えば、最終的なPUFの値が不揮発性アレイブロックに書き込まれると、その値は、キーの信頼性の懸念が減少または欠如した状態で(ノイズや電荷損失などによる)、またはIdd分析によってその値を推測しようとする試み、またはVdd障害攻撃によってその値を強制することを伴って、使用することができる。
【0317】
一実施形態では、難読化処理が完了すると、PUF回路を無効にすることができる。一実施形態では、無効化後、PUFデバイスは、他の目的のためにデバイスの内部で使用される値を提供することができる(例えば、不揮発性アレイ内の標準的な読み取り操作を使用する)。
【0318】
一実施形態では、キービットは、PUF3からキーを抽出するときにランダムビットと区別される。例えば、キーを格納するデバイスの内部ロジックは、PUF5から前のPUFまたは元のPUF(PUF3など)に戻るために必要な位置と方法を認識している。
【0319】
一実施形態では、キービットのビット位置は、キーを抽出するデバイスによって知られている。例えば、デバイスの内部ロジックは、設計の選択に応じて、中間PUFまたは最終キーPUF5のいずれかを受け取ることができる。次に、操作を逆の順序で適用すると、元のPUFが取得される。例えば、PUF1からPUF5への処理ステップは、ハッカーが、コンテンツ(例えば、キービット)を読み取ること、また、元のキーに戻って判別するために、適用された操作(複数可)を知っていることの両方をしなければならないように、難読化されたPUFを格納するために実行される。
【0320】
(PUFを使用したコンピューティングデバイスのIDの生成)
次に、物理複製困難関数(PUF)を使用してコンピューティングデバイスのIDを生成することに関する様々な実施形態を以下に説明する。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
【0321】
以前のアプローチでは、コンピューティングデバイスの製造業者は、コンピューティングデバイスのIDを確立するために、コンピューティングデバイスを購入する顧客と1つまたは複数のシークレットキーを共有する必要がある。ただし、シークレットキーを共有すると、キーを共有するために顧客との煩雑で複雑で高価な安全なチャネルとインフラストラクチャが必要になるため、技術的な問題が発生する。さらに、キーの共有を実装するには、人事サービスが必要である。さらに、前述のセキュリティへのニーズは、ハッカーやその他の権限のない人物によってセキュリティ対策が危険に曝されるリスクを高める可能性がある。
【0322】
以下に論じられる本開示の様々な実施形態は、上記の技術的問題に対する技術的解決策を提供する。様々な実施形態では、コンピューティングデバイスは、1つまたは複数のPUFを使用してIDを生成する。一例では、IDはUDSである。
【0323】
一実施形態では、コンピューティングデバイスのIDの生成は、自動的な方法で割り当てられる(例えば、スケジュールされた時間または所定のイベントの発生に基づいて、それに応答して、コンピューティングデバイスは、PUFを使用してUDSを自己生成する)。PUFを使用してIDを割り当てることにより、ID割り当ての複雑さと費用を削減できる。
【0324】
コンピューティングデバイスがIDを生成した後、それを使用して、識別子、証明書、及びキーのトリプルを生成できる。一実施形態では、トリプルは、ホストデバイスからのメッセージを受信することに応答して生成される。ホストデバイスは、生成された識別子、証明書、及びキーを使用して、コンピューティングデバイスのIDを検証する。IDが検証された後、キーを使用して、ホストデバイスとコンピューティングデバイスによるさらに安全な通信を実行できる。
【0325】
いくつかの実施形態では、コンピューティングデバイスは、ホストデバイスからのコマンドを受信することに応答してIDを生成する。例えば、コマンドは、コンピューティングデバイスによって認証される安全な置換コマンドにすることができる。IDを生成した後、コンピューティングデバイスはホストデバイスに確認メッセージを送信して、置換IDが生成されたことを確認する。一例では、置換IDは、不揮発性メモリに格納され、以前に格納されたUDS(例えば、コンピューティングデバイスの元の製造業者によって割り当てられたUDS)を置換する新しいUDSである。
【0326】
一実施形態では、IDは、コンピューティングデバイスのメモリに格納されたデバイスシークレット(例えば、上で説明したような、DICE-RIoTプロトコルで使用されるUDS)である。少なくとも1つの値は、コンピューティングデバイスの1つまたは複数のPUFによって提供される。コンピューティングデバイスは、鍵導出関数(KDF)を使用してデバイスシークレットを生成する。1つ以上のPUFによって提供される値(複数可)は、KDFへの入力(複数可)である。KDFの出力は、デバイスシークレットを提供する。KDFの出力は、デバイスシークレットとしてコンピューティングデバイスのメモリに格納される。
【0327】
一例では、KDFはハッシュである。一例では、KDFはメッセージ認証コードである。
【0328】
一実施形態では、コンピューティングデバイスは、ホストデバイスと通信するために使用されるシークレットキーを格納し、KDFは、メッセージ認証コード(MAC)である。1つまたは複数のPUFによって提供される少なくとも1つの値は、MACへの最初の入力であり、シークレットキーはMACへの第2の入力として使用される。
【0329】
いくつかの例では、コンピューティングデバイスはフラッシュメモリデバイスであり得る。例えば、シリアルNORを使用できる。
【0330】
図20は、一実施形態による、物理複製困難関数(PUF)2005を使用してIDを生成するために使用されるコンピューティングデバイス141(例えば、コンピューティングデバイス141のためのUDS)を示す。より具体的には、値はPUF2005によって提供される。この値は、鍵導出関数(KDF)2007への入力として提供される。KDFからの出力は、デバイスシークレット149として格納される。
【0331】
一実施形態では、デバイスシークレット149は、DICE-RIoTプロトコルで使用されるUDSである。同様に、上記のように、UDSは、ホストデバイス151に送信するためのトリプルを生成するための基礎として使用することができる。このトリプルは、コンピューティングデバイス141との安全な通信のためにホストデバイス151によって使用され得る公開キーを含む。
【0332】
一実施形態では、デバイスシークレットの生成は、ホストインターフェイス2009を介してホストデバイス151からコマンドを受信することに応答して実行される。一例では、コマンドは置換コマンドである。一例では、コマンドは、シークレットキーを使用してホストデバイス151によって署名された署名を伴う。デバイスシークレットを生成した後、確認メッセージがホストインターフェイス2009を介してホストデバイス151に送信される。
【0333】
一実施形態では、コンピューティングデバイス141は、シークレットキー2013を格納する。例えば、シークレットキー2013は、ホストデバイス151と共有することができる。一例では、ホストデバイス151は、シークレットキー2013を使用して、置換コマンドで送信された署名に署名する。
【0334】
一実施形態では、KDF2007はメッセージ認証コードである。シークレットキー2013は、デバイスシークレットを生成するときにKDF2007へのキー入力として使用される。PUF2005から得た値は、KDF2007へのデータの入力として使用される。
【0335】
フレッシュネスメカニズムは、モノトニックカウンタ2003を使用してコンピューティングデバイス141に実装される。モノトニックカウンタ2003は、ホストデバイス151との安全な通信におけるフレッシュネスとして使用するための値を提供することができる。
【0336】
一意の識別子(UID)2001は、コンピューティングデバイス141のメモリに格納される。例えば、UID2001は工場でインジェクションされる。
【0337】
一実施形態では、コンピューティングデバイス141は、周知のUDS(例えば、平凡なUDS=0x00000…000または同様のもの)を有する顧客に配信される。顧客は、その工場でホストデバイス151を使用して、コンピューティングデバイス141が新しいUDS(例えば、UDS_puf)を自己生成することを要求する。このステップは、認証されたコマンドを使用して実行できる。シークレットキー2013を知っている顧客またはホストデバイスのみがこの操作を実行することができる(例えば、シークレットキー2013は、より一般的に、コンピューティングデバイス141によってサポートされる認証されたコマンドセットを管理するために使用され得る)。
【0338】
UDS_pufは、いったん生成されると、元の(平凡な)UDSを置き換えるために使用される。置換は、認証されたコマンドを使用して行われる。外部ホストデバイス(顧客)はUDS_pufを読み取ることができる。
【0339】
生成されたUDS_pufは、DICE-RIoTプロトコルを実装するために使用できる。例えば、FDSは、IDコンポーネント147及びIDコンポーネント107について上で説明したのと同様に、UDS_pufを使用して計算することができる。一例では、FDS=HMAC-SHA256[UDS,SHA256(“Identity of L1”)]。
【0340】
さらに、識別子、証明書、及びキーを含むトリプル(例えば、K
L1)は、
図1について上で説明したのと同様に、UDS_pufを使用して生成することができる。ホストデバイスは、コンピューティングデバイス141との信頼できる通信のためにキー(例えば、K
L1public)を使用する。
【0341】
一実施形態では、上記のID生成メカニズムは、アプリケーションボードの最初の使用時にコンピューティングデバイス(例えば、プロセッサを含むアプリケーションボード)によって、またはスケジュール化されているか所定のイベントが発生すると(例えば、顧客によってスケジュール化/決定され、更新などのコンピューティングデバイスの構成としてメモリ145に格納される)フィールドにおいて、自動的に実行され得る。
【0342】
一実施形態では、自動ID生成は、以下のように実行される:コンフィギュレータホストデバイス(例えば、ソフトウェアを備えたラップトップ)が、自律車両バスに結合されたコンピューティングデバイスに接続される(例えば、安全なOTAインターフェイスなどを使用する)。ホストデバイスは、認証されたコマンドを使用して、コンピューティングデバイスがUDS(例えば、UDSPUF)を自動生成するように要求する。認証はシークレットキー2013に基づいている(例えば、シークレットキーは製造業者によってインジェクションされ、安全なインフラストラクチャを顧客に提供できる)。
【0343】
認証されたコマンドの実行は、認証された応答(例えば、
図20に示されるような「確認」)で確認される。UDS
PUF生成の最後に、ホストデバイスは、安全なプロトコルを使用することによって(例えば、モノトニックカウンタ2003によって提供されるフレッシュネスを使用して、安全な有線及び/または無線ネットワーク(複数可)を介して送信することによって)、生成されたUDS
PUFについて通知される。
【0344】
一実施形態では、ホストインターフェイス2009は、認証されたリプレイ保護コマンドをサポートするコマンドインターフェイスである。一実施形態では、認証は、シークレットキー(例えば、シークレットキー2013)に基づいており、MACアルゴリズム(例えば、HMAC)を使用する。一例では、ID生成コマンドは、コマンドオペコード、コマンドパラメータ、及びフレッシュネスに基づく署名を含むホストデバイス151から受信される。一例では、the signature=MAC(opcode|parameters|freshness,secret key)。
【0345】
一実施形態では、コンピューティングデバイス141は、署名を含むID生成確認を提供する。一例では、the signature=MAC(command result|freshness,secret key)。
【0346】
一実施形態では、シークレットキー2013が工場においてインジェクションされる。一例では、シークレットキーは対称的であり得る(例えば、HMAC-SHA256に基づく)。別の例では、シークレットキーは非対称スキーム(例えば、ECDSA)を使用することができる。
【0347】
デバイスシークレット149(UDSPUFなど)は、様々なオプションを使用して生成できる。例えば、生成フローが起動されると、適切な認証及びリプレイ保護コマンドを使用して、次のように選択されたコマンド任意選択に従ってUDSPUFが生成される。
【0348】
オプション#1:PUFパターン(「PUF RAW」と呼ばれることもある)(UDSRAWと呼ばれることもある)からの少なくとも1つの値が読み取られ、KDF2007(鍵導出関数)(SHA256など)に提供される。そのようなプロセスの結果が最後のキーである。よって、UDSPUF=KDF(UDSRAW)
【0349】
オプション#2:PUF RAWのパターン(UDSRAW)が読み取られ、UDSPUFは次のように計算される。UDSPUF=KDF(UDSRAW|UID)、ここで、UIDはすべてのデバイスに割り当てられる公開の一意のIDである(場合によっては、UIDは、セキュリティで保護されていないデバイスに割り当てることもできる)。一実施形態では、UID2001がKDFへの入力として使用される。
【0350】
オプション#3:PUF RAWパターン(UDSRAW)が読み取られ、UDSPUFは、UDSPUF=KDF(UDSRAW|UID|HASH(user pattern))のように計算され、この場合、ユーザパターンはでホストによって提供される、コマンドペイロードにおいて、自動IDの生成を要求する。
【0351】
オプション#4:PUF RAWパターン(UDSRAW)が読み取られ、UDSPUFは、UDSPUF=KDF(UDSRAW|UID|HASH(user pattern)|freshness)として計算され、この場合、フレッシュネスは、例えばコマンドペイロードで提供される。
【0352】
より一般的には、UDSはUDSPUF=KDF[(info provided by the host device|info present in the device)]として計算される。KDF関数は、単純なHASH関数(SHA256など)、またはシークレットキーを使用するMAC関数(HMAC-SHA256など)として使用できる。
【0353】
一例では、MAC関数がKDFとして使用される場合、使用されるシークレットキーは、認証されたコマンドを提供するために使用されるのと同じキーである。デバイスシークレット(UDSなど)は、次のいずれかのオプションを使用して生成できる。
【0354】
オプション#5:UDSPUF=MAC[Secret_Key,(UDSRAW)]
【0355】
オプション#6:UDSPUF=MAC[Secret_Key,(UDSRAW|UID)]
【0356】
オプション#7:UDSPUF=MAC[Secret_Key,(UDSRAW|UID|HASH(user pattern))]
【0357】
オプション#8:UDSPUF=MAC[Secret_Key,(UDSRAW|UID|HASH(user pattern)|freshness)]
【0358】
より一般的には、UDSPUF=MAC[Secret_Key,(info provided by host|info present in the device)]である。
【0359】
上記のように、UDS
PUFは、生成された後、ホストデバイス151に通信することができる。一実施形態では、ホストデバイス151は、UDS
PUFを直接読み取ることができる。UDS
PUFは、所定の回数だけ読み取ることができる(例えば、1回または数回)。一例では、下の
図21で説明しているようなプロセスが、使用できる。UDS
PUFを所定の回数読み取った後、読み取りメカニズムは永続的に無効になる。例えば、このアプローチは、安全な環境(例えば、コンピューティングデバイス141を使用してコンピューティングシステムまたは他の製品を組み立てるときの顧客の工場)で使用することができる。
【0360】
一例では、UDSPUFは、ホストデバイス151から受信した公開キーを使用してコンピューティングデバイス141によって暗号化され、次いで、UDSPUFがホストデバイス151に送信される。この手順の後、UDSPUF読み取りメカニズムは永続的に無効になる。
【0361】
別の実施形態では、コンピューティングデバイス141は、難読化処理モジュール2011を含む。難読化処理モジュール2011は、
図15の難読化処理モジュール630、または
図19の難読化処理モジュール630の例である。
【0362】
一実施形態では、UDS
PUFは、ホスト公開キーで暗号化され、ホストデバイスに通信される。ホストデバイスは、対応するシークレットキーを使用して復号化する。ホスト公開キーは、特定の通信セットアップフェーズ中にコンピューティングデバイス141に通信される。一実施形態では、UDS
PUFの共有は、認証されたコマンドを使用することによる直接読み取り操作によって行うことができ、所定の数の読み取り(例えば、通常は1つだけ)の後、そのような読み取り操作は永続的に無効になる。コンピューティングデバイス141は、UDSキーを耐改ざんエリアに格納する。内部(コンピューティングデバイス)での使用にもUDSキーを使用するたびに、情報漏えいを回避するために難読化メカニズムが使用される(例えば、ハッカーが格納されているUDSキーを、例えばハッカーが電流または電圧波プロファイルのいずれかを分析することによって推測するいずれの機会をも回避することにより)。例えば、使用される難読化メカニズムは、
図15、
図18、
図19について上で説明したようなものであり得る。
【0363】
一実施形態では、コンピューティングデバイス141は、暗号化されたデバイスシークレットをホストデバイス151に送信する前に、デバイスシークレットを難読化する。
【0364】
図21は、一実施形態による、システムの改ざんが発生したかどうかを判断する際に使用するために、システムのモノトニックカウンタによって提供される初期値を送信するシステムを示す。一例では、システムは、
図20のコンピューティングデバイス141である。
【0365】
いくつかの実施形態では、システムは、他のデバイス(例えば、ホストデバイス151)との安全な通信のためにシークレットキーを使用する。シークレットキーは、生成されて、システムに格納される(例えば、システムボードの初期の組み立て後、工場でのキーインジェクションによって)。システムのモノトニックカウンタは、初期値を提供するために使用される。
【0366】
別の実施形態では、シークレットキーは、DICE-RIoTプロトコルで使用されるUDSである。シークレットキーは、ホストデバイス(例えば、ホストデバイス151)からのコマンドに応答して生成される。
【0367】
一実施形態では、初期値は、電子通信によって、物理システムの意図された受信者に送信される(例えば、受信者は、物理システムが受信者の場所に物理的に輸送された後、物理システムを受信する)。システムを受信した後、受信者はモノトニックカウンタから出力値を読み取る。受信者(例えば、以前に初期値を受信した受信者のコンピューティングデバイスまたはサーバを使用)は、初期値と出力値を比較して、システムで改ざんが発生したかどうかを判定する。一例では、改ざんは、侵入者が物理的な転送中にシステムのシークレットキーにアクセスすることによる不正な試みである。
【0368】
一実施形態では、シークレットキーは、例えば、真のRNG(乱数ジェネレータ)またはPUFを使用して生成することができ、または工場のような安全な環境においてシステム(メモリ)に予めインジェクションすることができる。
【0369】
一実施形態では、生成されたキーは、モノトニックカウンタの初期値に関連付けられている。初期値は、システムの受信者が、格納されているキーへの不正なアクセスがなされたかどうかを判定するために使用される。一実施形態では、キーインジェクションプロセスは、物理複製困難関数(PUF)からの出力を使用して、キーを格納するコンピューティングデバイスのすべての電源投入サイクルについて、キーを生成することができる。
【0370】
より具体的には、
図21は、一実施形態による、システム351の改ざんが発生したかどうかを判定する際に使用するために、モノトニックカウンタ355によって提供される初期値を送信するシステムを示す。例えば、システム351の物理的輸送中に、格納されたキーへの不正アクセスを求めるハッカーによってシステム351が改ざんされたかどうかを判定することができる。一例では、システム351は、不揮発性メモリ306、プロセッサ(複数可)304、モノトニックカウンタ(複数可)355、及び電源318を含むシステムボードである。
【0371】
プロセッサ304の制御下で、1つまたは複数のキー314が生成される。不揮発性メモリ306は、生成されたキーを格納するために使用される。不揮発性メモリ306は、例えば、不揮発性メモリデバイス(例えば、3Dクロスポイントストレージ)である。
【0372】
モノトニックカウンタ355は、初期値を提供するために初期化される。この初期値は、格納されたキー314に関連付けられている。初期値は、プロセッサ304によって、外部インターフェイス312を介して別のコンピューティングデバイスに送信される。例えば、初期値は、製造及びキーインジェクションが完了した後にシステム351が出荷される受信機のサーバに送信することができる。
【0373】
システム351が受信機によって受信されると、受信機のコンピューティングデバイスが初期値を判定する。例えば、コンピューティングデバイスは、上記のように送信されたときに受信した初期値をメモリに格納することができる。コンピューティングデバイスは、モノトニックカウンタ355から出力値を読み取る。この出力値は、システム351に改ざんがあったかどうかを判定するために初期値と比較される。
【0374】
一実施形態では、受信機のコンピューティングデバイスは、モノトニックカウンタ355を増分させる原因となる発生したイベントの数を判定する。例えば、モノトニックカウンタ355からの出力値は、システム351の各電源投入動作で増分するように構成することができる(例えば、電源318を監視することによって検出されるように)。モノトニックカウンタ355からの出力値は、格納されたキー314の読み取りアクセスを実行する各試みで増分するように追加的及び/または代替的に構成され得る。
【0375】
例えば、モノトニックカウンタを増分させる既知のイベントの数を追跡することにより、送信者から受信した初期値を、この既知のイベントの数に基づいて調整できる。次に、調整された初期値は、モノトニックカウンタ355から読み取られた出力値と比較される。値が一致する場合、改ざんは発生していない。値が一致しない場合、コンピューティングデバイスは改ざんが検出されたと判定する。
【0376】
改ざんが検出されたと判定したことに応答して、システム351の1つまたは複数の関数を無効にすることができる。一実施形態では、プロセッサ304は、改ざんが検出されたという表示を含む、受信機のコンピューティングデバイスからの通信を受信する。通信を受信することに応答して、プロセッサ304は、システム351の少なくとも1つの関数を無効にする。一例では、無効にされた関数は、格納されたキー314への読み取りアクセスである。
【0377】
一実施形態では、システム351は、モノトニックカウンタ355から出力されるカウンタ値が所定の最大値を超えないように構成することができる。例えば、各カウンタ値がモノトニックカウンタ355から読み取られるとき、カウンタ値が所定の最大値を超えるかどうかの判定がなされる。カウンタ値が所定の最大値を超える場合、格納されたキー314への読み取りアクセスを永続的に無効にすることができる(例えば、プロセッサ304の制御下で)。
【0378】
一実施形態では、システム351は、半導体ダイにおいて具現化される。別の実施形態では、システム351は、システムボードにおいて形成される。アプリケーションは、システムメモリ353に格納され、プロセッサ304によって実行される。アプリケーションの実行は、システム351の電源投入後に行われる。例えば、システム351の受信機は、システムに改ざんが発生していないと判定した後、アプリケーションを実行することができる。
【0379】
一実施形態では、キー314は、1つまたは複数の物理複製困難関数(PUF)からの出力値を使用して生成される。例えば、キーは、システム351の電源投入サイクルごとに生成される。別の例では、キー314は、外部インターフェイス312を介して受信されたホストデバイスからの置換コマンドに応答して生成されたUDSである。
【0380】
一実施形態では、システム351は、キー314を格納するコントローラである。外部インターフェイス312は、モノトニックカウンタ355からコントローラと同じシステムボード上の外部不揮発性メモリデバイス(図示せず)に初期値を送信するために使用される。外部不揮発性メモリデバイスは、モノトニックカウンタ355から出力値を読み取り、出力値をシステム351から受信した初期値と比較することによって、改ざんが発生したかどうかを判定する。
【0381】
一実施形態では、システムメモリ353は、揮発性メモリ308及び/または不揮発性メモリ306を含む。暗号化モジュール316は、キー314(例えば、対称キー)を使用して、外部インターフェイス312を介した安全な通信のための暗号化操作を実行するために使用される。
【0382】
次に、シークレットキーの共有について、様々なさらなる実施形態で説明する。安全な通信チャネルは、通信に参加するアクター間でのキーの共有によって設定される。信頼性のあるプラットフォームモジュールのボードで使用されるコンポーネントには、公開キーの暗号化などのスキームを実装するための十分な処理機能がないことがよくある。
【0383】
一実施形態では、1つまたは複数のシークレットキーは、デバイス/ボード製造業者とOEM/最終的な顧客との間で共有される。また、必要に応じて、現場の同じボードの異なるデバイス間でキーを共有することができる。上で説明したように、1つ以上のモノトニックカウンタがセキュアデバイス内で使用される。
【0384】
一例では、デバイスが工場または製造業者のテストラインを去る前に、デバイスの機能とユーザのニーズに応じて、1つまたは複数のシークレットキーがデバイス内部にインジェクションされる(例えば、次のように1つまたは複数のシークレットキー:Secret_Keyk、k=1、..、N)。
【0385】
デバイスの機能とユーザのニーズに応じて、1つ以上のモノトニックカウンタが初期化される(N(N≧1)異なるMTC→MTCk=0)。モノトニックカウンタ(MTC)は、システム/デバイスの電源投入が発生したとき、及び格納されたシークレットキーが読み取られた(試行された)ときはいつでも、出力値を増分するように構成されている。
【0386】
各MTCkの値は、公のものであり、(例えば、MTCkとして)顧客と共有することができる。コマンドシーケンス(例えば、システム設計者が任意に決めたもの)を使用してデバイスからキーを読み取り、コマンドシーケンスを公開することができる(例えば、方法の強度は読み取りプロトコルの機密性に基づいていない)。
【0387】
一実施形態では、シークレットキーごとに専用のMTCを使用する必要はない。これは、使用されているセキュリティサービスの種類によって異なっていてもよい。例えば、一部のキーは一緒に読み取ることができ、それらは単一のMTCだけ必要である。
【0388】
一実施形態では、システムが受信機(例えば、顧客/ユーザ)の場所に到着した後、いくつかの操作が実行される。受信機のコンピューティングデバイスは、最初に、モノトニックカウンタ(複数可)355の初期値(複数可)を決定する。例えば、MTCk=(MTC0)kの値が取得される(例えば、デバイスが工場出発時に書き込まれ、送信される初期値)。MTCk値は、MTCまたは関連するキーごとに異なる場合がある。
【0389】
次に、受信機の顧客/ユーザは、システム351の電源を入れる。最初に対処される操作は、MTCK値の読み出しである。各MTCk値が予想(受信)初期値[例えば、MTCK=(MTC0+1)k]と一致している場合、デバイスが物理的配送または他の転送中に電源が投入されなかったと判定され、システム351は、エンドユーザ/顧客によって本物である(また、改ざんされていない)と見なされる。
【0390】
1つ以上の値が一致しない場合は、改ざんが発生している。例えば、認証されていない人がデバイスの電源を入れ、格納されているキーを読み取ろうとした。改ざんが発生した場合、デバイスは破棄され、改ざんの表示が送信者(転送会社など)に通知されて、さらなる技術的なセキュリティの問題が回避される。
【0391】
別の実施形態では、複数の読み取り操作が、システム351の受信機によって実行される。例えば、デバイスは工場を出て、顧客/OEMに到着する。顧客は、1つ以上のキーを読み取り、関連MTCkが1だけ増分される。増分されたMTCjはシリコン工場(送信者)によってプリセットされている値(MTCjMAX)を超えた場合、キー(Secret_Keyj)の読み出しは、永続的に無効になる。
【0392】
この例では、MTCjMAXは、各MTCについて送信者と顧客が合意した所定の最大値である。この方法では、MTC値の読み取りをチェックまたは実行し得る前後に、キーの読み取りを1回以上試行できる。これにより、例えば、いずれかの許可されていないアクセスの発見が可能になると同時に、OEM/顧客が、無効にする前にキーの読み取りを数回実行できるようになる。
【0393】
読み取りプロセス中に、1つ以上のMTCに予期しない値がある場合(例えば、既知の読み取り及び電源投入操作の数を調整した後、初期値と読み取り値が一致しない場合)、デバイスは破棄される。一実施形態では、すべてのキーが読み込まれたら、関連するMTCkは、クリーンアップされ、他の目的(例えば、システム設計者が構成し、所望するような、暗号処理関数)で再度使用することができる。
【0394】
別の例では、デバイス/ボードの使用状況が監視される。この例では、安全なデバイスにすでに存在するモノトニックカウンタを使用する(例えば、暗号化モジュール316で使用するために存在する)。デバイスがシリコン工場を去る前に、テストラインで次のことが実行される:InitializeM(M≧1)differentMTC→MTCk=0。
このようなMTCカウンタは、デバイスの電源を入れるたびに増分される。各カウンタは、ゼロ(または必要に応じて別の初期値)に初期化できる。
【0395】
受信機のエンドユーザは、受信したMTCk値を使用して、例えば、コンポーネント/ボードの不正使用の検出、コンポーネントがはんだ除去され、ボードの外部で使用されてハッキングされたと判定することなどのシステム351に関する様々な情報を取得し、サイクルカウントに電力付与をして顧客のサービス、デバイスボードの保証ポリシー、及び電力損失に基づいた料金メカニズムを実装することができる。
【0396】
一実施形態では、料金メカニズムを実装することは、値を特定の使用に関連付けることを含む。アプリケーションを顧客に提供することができ、顧客は特定の使用のロックを解除するために料金を支払う必要がある。
【0397】
一実施形態では、シークレットキーは、同じシステムボードの異なるデバイス間で共有される(例えば、エンドユーザによって使用されるときに現場で共有される)。キーは、同じボードのコンポーネント間(プロセッサ間など)で交換することで共有される。
【0398】
一実施形態では、1つまたは複数のモノトニックカウンタ(MTCk)のそれぞれは、その初期値をゼロに設定することによって初期化される。一例では、MTCk=0を設定する場合、MTCkは、番号kで示される特定のキーに関連付けられたカウンタである。MTCk=0は、カウンタの初期値がゼロであることを示す。各kは、デバイスに格納されている内部キーの数に対応するカウンタ番号の1つを示す。各カウンタの値は、デバイスの不揮発性メモリ領域に格納される。
【0399】
一実施形態では、デバイスの電源投入(パワーアップとも呼ばれる)が検出される。このデバイスには、電源の値を測定するための内部回路が含まれている。電源が特定の閾値を超えると、回路は内部信号をトリガーして、電源投入イベントの存在(検出)を示す。この信号は、モノトニックカウンタの増分を引き起こせる。
【0400】
一実施形態では、シークレットキーを読み取ろうとする試みが検出される。カウンタ(MTCk)は、電力が検出されるたびに(上記のように)増分され、さらに、キーを読み取るコマンドシーケンスがデバイスのインターフェイスによって認識されるたびに、増分される。デバイスの出荷が完了したときに初期MTCk値を知ることにより、デバイスの最終的な受信者(例えば、エンドユーザ/顧客)は、デバイス(及びカウンタ)のステータスを知ることができる。したがって、転送中にデバイスの電源投入、及び/またはデバイスを読み取ろうとした場合、各MTCkに格納されているカウンタ値に変動が生じる。
【0401】
一実施形態では、コマンドシーケンスを使用して、デバイスからキーを読み取る。例えば、デバイスには、他のコンピューティングコンポーネントまたはデバイスからのコマンドを受け入れる外部インターフェイスがある。キーは、最大カウンタ値に達するまで読み取ることができる。一例では、デバイスのインターフェイスに次のシーケンスがある:Command(例えば、0x9b)+Argument(0x34)+signature。デバイスは、キーが読み取られ、出力で提供されることを理解する。
【0402】
一実施形態では、デバイスのテスト後(例えば、初期工場で)、各キーのMTCkは、初期化由来の初期値を有する。したがって、例えば、k=3の場合、MTC0=20d、MTC1=25d、MTC2=10となる。値MTC0、MTC1、MTC2は、初期値のセットとして顧客に送信される。顧客がデバイスを受信すると、顧客はコマンドシーケンスを使用して値を読み取る。次に、顧客(例えば、コンピューティングデバイスを使用)は、出荷中にデバイスが危険に曝されたかどうかを判定する。一例では、モノトニックカウンタ値は、上で説明したコマンドシーケンスを使用して読み取られる。
【0403】
一実施形態では、所定の最大カウンタ値が事前設定されている。例えば、事前設定された最大値は、顧客の手順に基づいて選択できる。例えば、顧客がキーを10回読み取りたいものとする。また、MTCkは電源がオンになっているときにのみ増分し、MTC0(電源投入に関連付けられている)とMTC1(キー読み取りコマンド手順のみに関連付けられている)の2つのカウンタがあると想定する。工場でのテスト後、MTC0とMTC1の値の監視に基づいて、MTC0=30、MTC1=25であることがわかる。一例では、内部閾値は、MTC0には40に、MTC1には35に設定されている。
【0404】
一実施形態では、キーに関連付けられたMTCは、電源の投入及びキーの読み取りの試みと共に増分する。2つのイベントのいずれかが発生するたびに、MTCは増分する。
【0405】
一実施形態では、モノトニックカウンタは、格納されたキーの最終的な読み取りの後にクリーンアップされる(また、任意選択で、デバイスでの他の処理のために再利用することができる)。システム設計者は、これを必要に応じて構成できる。最終的な読み取りは、例えば、悪意のあるイベントの検出器としてのMTCカウントの目的がもはや不要になった場合に行われる。これにより、カウンタがリソースとして解放され、他の目的に使用する、またはカウンタをカウントしたままにすることができる。
【0406】
一実施形態では、モノトニックカウンタを使用して、はんだ除去、料金メカニズムの実装、保証の実装などがなされるコンポーネントなど、様々なタイプの情報を取得できる。カウンタは、様々なタイプの発生を監視するために使用できる。なぜなら、カウンタ値の増分は外部からトリガーできるからである。
【0407】
一実施形態では、複数のキー読み取り任意選択が提供される。一例では、(キーに関連付けられたMTCkの)MTC値の初期化のために、最大閾値は、コンポーネントの受信側及び/または最終のユーザによる各キーの読み取りを可能にするように設定される。複数の読み取りオプションにより、特定のキーの読み取りの最大試行回数に応じて閾値が変更できる(キーごとに異なり得る)。
【0408】
一実施形態では、様々なタイプのデバイスが上記の方法を使用することができる。例えば、CPUまたはMCUには通常、外部のアクセスではアクセスできない内部ハードウェアセキュリティモジュールがある。一例では、正しく動作するために、同じキーをデバイスまたはコンポーネントに格納する必要がある(例えば、対称キーアプローチが使用される場合)。このような場合、CPU/MCUは、許可されたエンティティ、デバイス、またはコンポーネントへのキーの配布/共有の恩恵を受ける。この共有により、キーの読み取りが可能になる(例えば、この共有はMTCk閾値の値のプログラミングに対応する)。
【0409】
一実施形態では、上記の方法は、顧客のファームウェアインジェクションに使用される。例えば、上記の方法は、重要なコンテンツをデバイス(アプリケーションファームウェアなど)内に格納し、安全ではない環境でデバイスの移動を実施できるようにする(ファームウェア/デバイスの整合性を損なうことなく)。一例では、ファームウェアインジェクションの場合、転送中のMTCkカウンタ値の予期しない変更が、ファームウェアの侵害が発生したことを示すインデックスとして使用される。
【0410】
図22は、一実施形態による、物理複製困難関数(PUF)を使用してコンピューティングデバイス用のIDを生成するための方法を示す。例えば、
図22の方法は、
図20のシステムに実装することができる。
【0411】
図22の方法は、ハードウェア(例えば、処理装置、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、
図22の方法は、少なくとも部分的に、
図20のプロセッサ143によって実行される。
【0412】
特定の順番または順番で示されているが、特に指定がない限り、プロセスの順番は変更できる。したがって、図示された実施形態は、例としてのみ理解されるべきであり、図示されたプロセスは、異なる順番で実行することができ、いくつかのプロセスは、並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略できる。したがって、すべての実施形態においてすべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0413】
ブロック2211で、少なくとも1つの値が、少なくとも1つの物理複製困難関数(PUF)によって提供される。例えば、PUF2005は出力として値を提供する。
【0414】
ブロック2213で、デバイスシークレットは、鍵導出関数(KDF)を使用して生成される。少なくとも1つのPUFによって提供される少なくとも1つの値は、KDFへの入力として使用される。例えば、PUF2005からの出力はKDF2007への入力として使用される。
【0415】
ブロック2215で、生成されたデバイスシークレットが格納される。例えば、KDF2007は、デバイスシークレット149として格納される出力を生成する。
【0416】
一実施形態において、方法は、コンピューティングデバイスにより、デバイスシークレットを生成する(例えば、デバイスシークレット149として格納されるUDS)ことであって、少なくとも1つの物理複製困難関数(PUF)によって、少なくとも1つの値を提供することと、鍵導出関数(例えば、KDF 2007)を使用して、デバイスシークレットを生成することと、を含み、少なくとも1つのPUFによって提供される少なくとも1つの値は、KDFへの入力である、生成すること、及び、コンピューティングデバイスのメモリに、生成されたデバイスシークレットを格納すること、を含む。
【0417】
一実施形態では、生成されたデバイスシークレットを格納することは、メモリに以前に格納されたデバイスシークレットを、生成されたデバイスシークレットで置き換えることを含む。
【0418】
一実施形態では、KDFは、ハッシュまたはメッセージ認証コードである。
【0419】
一実施形態では、方法は、ホストデバイスと通信するために使用されるシークレットキーを格納することをさらに含み、KDFはメッセージ認証コード(MAC)であり、少なくとも1つのPUFによって提供される少なくとも1つの値は、MACへの第1の入力であり、シークレットキーはMACへの第2の入力である。
【0420】
一実施形態では、デバイスシークレットは、イベントに応答して生成され、イベントは、コンピューティングデバイスによって、ホストデバイスからのコマンドを受信することである。
【0421】
一実施形態では、方法は、ホストデバイスからホスト公開キーを受信すること、ホスト公開キーを使用して生成されたデバイスシークレットを暗号化すること、及び暗号化されたデバイスシークレットをホストデバイスに送信することをさらに含む。
【0422】
一実施形態では、方法は、暗号化されたデバイスシークレットをホストデバイスに送信した後、メモリのデバイスシークレットへの読み取りアクセスを永続的に無効にすることをさらに含む。
【0423】
一実施形態では、方法は、暗号化されたデバイスシークレットをホストデバイスに送信する前に、デバイスシークレットを難読化することをさらに含む。
【0424】
一実施形態では、方法は、コンピューティングデバイスによってメモリにシークレットキー(例えば、シークレットキー2013)を格納することをさらに含み、コマンドは、コンピューティングデバイスによって、メッセージ認証コード(MAC)を使用して認証され、シークレットキーはMACへの入力として使用される。
【0425】
一実施形態では、ホストデバイスは、コマンドを認証するための署名を送信し、署名は、MACを使用して生成され、ホストデバイスによって生成されたフレッシュネスは、MACへの入力として使用される。
【0426】
一実施形態では、フレッシュネスは、KDFへの追加の入力である。
【0427】
一実施形態では、ホストデバイスは、コマンドを使用してユーザパターンを提供し、ユーザパターンのハッシュは、KDFへの追加の入力である。
【0428】
一実施形態では、方法は、デバイスシークレットを生成する前に、コンピューティングデバイスによってコマンドを認証することをさらに含む。
【0429】
一実施形態では、方法は、コンピューティングデバイスの一意の識別子を格納することをさらに含み、一意の識別子は、KDFへの追加の入力である。
【0430】
一実施形態では、デバイスシークレットは、イベントに応答して生成され、イベントは、コンピューティングデバイスによる、コンピューティングシステムの使用の検出である。
【0431】
一実施形態では、使用は、コンピューティングシステムによるアプリケーションの実行である。一実施形態では、使用は、ブートローディングプロセスの開始である。
【0432】
一実施形態では、請求項1に記載の方法は、デバイスシークレットが、イベントに応答して生成され、イベントは、時間スケジュールされたイベントである。
【0433】
一実施形態では、システムは、少なくとも1つのプロセッサと、
【0434】
デバイスシークレットを生成することであって、少なくとも1つの物理複製困難関数(PUF)によって、少なくとも1つの値を提供することと、鍵導出関数(KDF)を使用して、デバイスシークレットを生成することとであって、少なくとも1つのPUFによって提供される少なくとも1つの値は、KDFへの入力である、生成すること、及び、コンピューティングデバイスのメモリに、生成されたデバイスシークレットを格納すること、を少なくとも1つのプロセッサに命令するように構成された命令を含むメモリ含む。
【0435】
一実施形態では、命令は、少なくとも1つのプロセッサに、ホストデバイスから置換コマンドを受信すること、及び生成されたデバイスシークレットを使用して生成された公開識別子をホストデバイスに送信することを命令するようにさらに構成され、デバイスシークレットは、置換コマンドを受信することに応答して生成され、生成されたデバイスシークレットを格納することは、以前に格納されたデバイスシークレットを生成されたデバイスシークレットで置き換えることを含む。
【0436】
一実施形態では、非一時的コンピュータ記憶媒体は、コンピューティングデバイスで実行されたとき、コンピューティングデバイスが、少なくとも1つの物理複製困難関数(PUF)によって、少なくとも1つの値を提供すること、鍵導出関数(KDF)を使用して、デバイスシークレットを生成することであって、少なくとも1つのPUFによって提供される少なくとも1つの値は、KDFへの入力である、生成すること、及び、生成されたデバイスシークレットをメモリに格納すること、を少なくとも引き起こす命令を格納する。
【0437】
(車両のIDの割り当てと検証)
次に、車両のIDの割り当て及び検証に関連する様々な実施形態を以下に説明する。様々な実施形態において、IDは、第1の車両(例えば、緊急車両)に割り当てられ、第2の車両は、第1の車両のIDを検証する。例えば、IDは、ホストデバイス(例えば、
図1のホストデバイス151)から第1の車両のコンピューティングデバイス(例えば、
図1のコンピューティングデバイス141)によって受信された置換コマンドに基づいて割り当てることができる。
【0438】
例えば、IDは、第1の車両によって提供されるトリプルに基づく検証方法を使用して、第2の車両によって検証することができる。この検証方法は、コンピューティングデバイス141から受信したトリプルを使用して、ホストデバイス151によって行われるのと同様に実行される。第1の車両は、動作状態及び/または車両のクラスに関連する車両であり得る(例えば、第1の車両は、特定のエンティティによって所有される車両のフリートのメンバーであり得る)。以下の説明の一般性は、上記の様々な実施形態によって制限されない。
【0439】
以前のアプローチでは、緊急車両、警察車両、または特別なステータスを持つ別の車両であるという車両のIDは、手動のアプローチ、及び/またはIDが車外で電子的に伝達されないという点で緊急車両とは分離されたアプローチによって示されてきた。例えば、赤色のライトの点滅またはその他の緊急インジケータが起動し、車両が緊急動作の状態にある緊急車両であることを示す。ただし、この緊急状態は車外には一切伝達されない。
【0440】
前述のことは、車両及び/または車両の状態を識別する際に技術的な問題を引き起こしている。例えば、他の車両は、緊急車両の緊急IDまたは状態を容易に判定することができない。例えば、他の車両は、緊急車両のIDや状態を判定するために目視での観察に頼らねばならない。これにより、緊急車両に対する適切な反応または対応を行う他の車両の遅延が発生する可能性がある。例えば、他の車両は、緊急車両をより速く通過させるために脇に移動する際の応答が遅い。
【0441】
さらに、自動運転される車両の場合、安全な交通管理のために、自動運転車両が特定のクラスの車両を認識する能力を有することが望まれる。これは、部分的には、特定のクラスの車両が存在する場合に自動運転車両が適切な応答アクションを実行できるようにするためである。車両のクラスには、警察や、消防士、救急車などの緊急車両を含めることができる。他のクラスの車両には、タクシーやバスなどの公共サービス車両が含まれ得る。さらに他のクラスの車両には、民間または会社のフリートの車両が含まれる場合がある。自動運転車両が他の車両の適切なクラスを認識できないと、不適切な交通ナビゲーション応答が発生し、事故やその他の危害を引き起こす可能性がある。
【0442】
さらに、安全なIDメカニズムがないため、車両の複製や、中間者攻撃、リプレイ攻撃などのハッカー攻撃が可能になる可能性がある。これらは、自動運転車の安全な操作を損なうことにつながる可能性がある。
【0443】
以下で論じられる本開示の様々な実施形態は、緊急車両のIDの割り当て及び検証に関する上記の技術的問題に対する技術的解決策を提供する。様々な実施形態では、コンピューティングデバイス(例えば、コンピューティングデバイス141)は、車両のIDを生成し、車両が他の車両によって検証されることを可能にする。IDは車両のクラスに対応する。一例では、IDは、上記のように、DICE-RIoTプロトコルに使用される一意のデバイスシークレット(UDS)である。
【0444】
一実施形態では、公的または私的組織またはエンティティは、車両のフリートのIDをカスタマイズする(例えば、IDは、車両のクラスに対応する)。これは、認証されたコマンド(例えば、上記の置換コマンド)を各車両に送信することによって行われる。このコマンドにより、車両は、ホストデバイスによって提供されるUDSを割り当てるか、更新されたUDSを生成する(例えば、上記のように、車両のコンピューティングデバイスでPUFを使用する)。次に、UDSは、他の近くの車両によって使用され、操作中にIDがカスタマイズされた車両のIDを検証する。
【0445】
一実施形態では、近くの各車両は、「緊急」車両から1つまたは複数の証明書及びキーを受信する。例示的な論述という目的のために、緊急車両が以下に説明及び図示される。しかし、以下の実施形態は、緊急車両のみでの使用に限定されない。代わりに、これらの実施形態は、他のタイプの車両で使用することができる。さらに、車両は、陸上、空中、及び/または水ベースの車両(例えば、ドローン、ボート、飛行機など)であり得る。
【0446】
一実施形態では、近くの車両は、緊急車両のIDを検証するために使用される検証コンポーネントを含むコンピューティングデバイスを有する。一例では、検証コンポーネントは、
図1の検証コンポーネント153である。一例では、近くの車両は、上記のようなDICE-RIoTプロトコルを使用して生成されたトリプルの一部として証明書と公開キーを受信する。近くの車両は、緊急車両/警察車両/その他の車両の存在を確認し、それにより、緊急車両との通信の安全な交換が可能になる(例えば、保険の連携、ナンバープレートのデータなど)。この安全な無線通信により、緊急車両のプレートなどを見ることなく、近くの車両が緊急車両を認識できるという利点がある。非自動運転車両の場合、緊急車両との通信は、他の方法(例えば、ディスプレイにアラートを表示する、及び/または車載エンターテインメントシステム、クラスターなどを使用する)を使用して、運転者に通信することができる。
【0447】
一実施形態では、緊急車両及びすべての近くの車両は、DICE-RIoTプロトコルを使用するIDの割り当て及び検証をサポートするコンピューティングデバイスを有する。このようなID機器を備えた各車両は、公的機関または民間企業がフリート(例えば、緊急車両、タクシーなどのフリート)の一部になるようにカスタマイズできる。
【0448】
各車両のコンピューティングデバイスは、元々、例えば上記のように、UDSgenericを備えるように製造することができる。車両の所有者は、認証されたリプレイ保護コマンド(例えば、様々な実施形態における上記の置換コマンド)を使用してUDSを置き換えることにより、そのコンピューティングデバイスを使用して車両をカスタマイズすることができる。1つの利点は、コンポーネントがそのIDを証明する機能を備えているため、コンポーネントを置換するリスクがないことである。
【0449】
一実施形態では、UDS
genericの置換で、公共機関がその秘密UDS(例えば、UDS
police department、UDS
fire fighter)をインジェクションすることができる。このUDSは、一般の人々(他の車両を含む)が認識できる1つ以上の公開証明書を生成するために使用される。これにより、公的機関及び/または他の車両は、安全な方法で車両と通信することにより、セキュリティサービスを実装できる。一例では、生成された証明書は、上で
図1について説明したように、UDSとIDコンポーネント147を使用して生成されたトリプルの一部である。
【0450】
一例では、民間企業は、自社のフリートの車両を認識し、車両との安全な無線通信を実装するために、秘密UDSをインジェクションすることができる。車両には、例えば、タクシー、バス、船、ドローンなどが含まれ得る。
【0451】
公的機関または民間機関の中央サーバによる車両との通信は、有線または無線(Wi-Fi、3G-5Gセルラー、Bluetoothなど)、光無線通信(OWC)などの、いずれかの種類の通信システムによって実行され得る。
【0452】
図23は、一実施形態による、1つまたは複数の証明書2321を使用して緊急車両2303のIDを検証する、近くの車両2311を示す。緊急車両2303のIDは、以前は権限コンピューティングデバイス2305によって割り当てられていた。一例では、権限コンピューティングデバイス2305は、ホストインターフェイス2009を介してコンピューティングデバイス2301に置換コマンドを送信する。
【0453】
置換コマンドを受信することに応答して、コンピューティングデバイス2301は、コンピューティングデバイス2301及び/または緊急車両2303のメモリに新規デバイスシークレットを格納する。IDコンポーネント147は、新規デバイスシークレットを使用して証明書を生成し、これは証明書2321の一部として格納される。一例では、IDコンポーネント147は、証明書を含むトリプルを生成する。生成されたトリプルには、キーストレージ157に格納されている公開キーも含まれる。
【0454】
一実施形態では、近くの車両2311は、近い近傍(例えば、500メートル以下、または50メートル以下、または5メートル以下の距離以内)に緊急車両2303の存在を検出する自動運転車両である。緊急車両2303の存在を検出することに応答して、近くの車両2311は、IDを要求するための通信を送信する。この要求に応答して、1つまたは複数の証明書2321が、近くの車両2311の検証コンポーネント153に通信される。一例では、検証コンポーネント153は、DICE-RIoTプロトコルについて上で論じたように、トリプルを受信する。
【0455】
検証相手153は、緊急車両2303のIDを検証する。一例では、IDが割り当てられ、次に、上の
図5~7及び9で説明したアプローチを使用して検証される。
【0456】
一実施形態では、緊急車両2303のIDを検証した後、近くの車両2311は、IDに関連付けられた車両のクラスを判定することができる。例えば、近くの車両2311は、クラスが緊急車両に対応すると判定することができる。一実施形態では、近くの車両2311は、公開識別子及び対応するクラスの公開データベースを維持する公開サーバ2307と通信することができる。一実施形態では、権限コンピューティングデバイス2305は、緊急車両2303がホストインターフェイス2009を介して新しいIDを割り当てられるたびに、更新した通信を公開サーバ2307に送信する。
【0457】
他の実施形態では、緊急車両2303はまた、交通管制インフラストラクチャと通信する。例えば、交通管制システム2309は、緊急車両2303が近傍に存在していることを検出し(例えば、近くの車両2311について上記したのと同様に)、近くの車両2311について上記したのと同様にIDを要求することができる。緊急車両2303のIDを検証することに応答して、交通管制システム2309は、緊急車両2303の自由な通過を可能にするために状態を変更することができる。例えば、交通管制システム2309は、交通管制灯を赤から緑に変更して、緊急車両の通過を可能にすることができる。
【0458】
近くの車両2311が緊急車両2303のIDを検証した後、近くの車両2311は、通信インターフェイス2313及び2315を使用して後続の安全な通信を実行するために、緊急車両2303から受信した公開キーを、トリプルの一部として使用することができる。
【0459】
一実施形態では、近くの車両2311のコントローラ2319は、検証コンポーネント153を実装するためのソフトウェアを実行する。IDが緊急車両のIDであることを検証することに応答して、コントローラ2319は、近くの車両2311の様々なシステムの構成及び/または動作を変更することができる。例えば、アラートは、ディスプレイ2317で運転者及び/または乗客に提示することができる。さらに、例えば、車両のナビゲーション経路及び/または速度を変更することができる。さらに、車両を減速させるブレーキシステムなど、車両のシステムを起動することができる。
【0460】
図24は、一実施形態による、識別子、証明書、及び公開キーを使用して車両のIDを検証するための方法を示す。例えば、
図24の方法は、
図1、2、及び20のシステムに実装することができる。
【0461】
図24の方法は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、
図24の方法は、少なくとも部分的に、
図20のプロセッサ143によって実行される。
【0462】
特定の順序または順番で示されているが、特に指定がない限り、プロセスの順番は変更できる。したがって、図示された実施形態は、例としてのみ理解されるべきであり、図示されたプロセスは、異なる順番で実行することができ、いくつかのプロセスは、並行して実行することができる。さらに、様々な実施形態では、1つまたは複数のプロセスを省略できる。したがって、すべての実施形態においてすべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0463】
ブロック2401で、コマンドは、ホストデバイスから第1の車両によって受信される。例えば、認証されたコマンドは、緊急車両2303のコンピューティングデバイス2301によって、権限コンピューティングデバイス2305から受信される。
【0464】
ブロック2403において、コマンドを受信することに応答して、新規デバイスシークレットがメモリに格納される。例えば、コマンドは置換コマンドであり、コンピューティングデバイス2301は、新規デバイスシークレット(例えば、UDS)をメモリに格納する。新規デバイスシークレットは、以前に格納されたデバイスシークレットを置き換える。新規デバイスシークレットは、権限コンピューティングデバイス2305からのコマンドと共に受信することができる。あるいは、新規デバイスシークレットは、例えばPUFを使用して、コンピューティングデバイス2301によって生成することができる。
【0465】
一例では、権限コンピューティングデバイス2305は警察車両である。緊急事態の存在に応じて、警察車両は、緊急車両2303の状態を通常の乗用車の状態から緊急状態にある車両の状態に昇格させることができる。これは、所定の時間、距離、または昇格された車両が指定された目的地に到達するまでのみ存在する割り当てであってもよい。
【0466】
ブロック2405で、新規デバイスシークレットを使用して、トリプルが生成される。トリプルは、識別子、証明書、及び公開キーで構成される。一例では、コンピューティングデバイス2301は、上記の様々な実施形態について説明したのと同様に、IDコンポーネント147を使用してトリプルを生成する。
【0467】
ブロック2407で、トリプルは第2の車両に送られる。第2の車両は、トリプルを使用して第1の車両のIDを検証するように構成される。例えば、トリプルは、証明書2321と、キーストレージ157からの1つまたは複数の対応するキー(例えば、公開キー及び公開識別子)を含む。近くの車両2311の検証コンポーネント153は、トリプルを使用して緊急車両2303のIDを検証する。一実施形態では、近くの車両2311は、例えば、緊急状態にある車両のIDを検証することに応答してアクションを実行するように構成される。
【0468】
一実施形態では、方法は、第1の車両(例えば、緊急車両2303)のコンピューティングデバイスによって、ホストデバイス(例えば、権限コンピューティングデバイス2305)からのコマンドを受信すること、コマンドを受信することに応答して、新規デバイスシークレットをコンピューティングデバイスのメモリに格納すること、新規デバイスシークレットを使用するコンピューティングデバイスによって、識別子、証明書(例えば、証明書2321)、及び公開キーを含むトリプルを生成すること、及びコンピューティングデバイスによって、トリプルを第2の車両(例えば、近くの車両2311)に送信することを含み、第2の車両は、トリプルを使用して第1の車両のIDを検証するように構成される。
【0469】
一実施形態では、新規デバイスシークレットは、ホストデバイスから受信される、または、ホストデバイスからコマンドを受信した後にコンピューティングデバイスによって生成される。
【0470】
一実施形態では、新規デバイスシークレットは、第1の車両の所定のステータスまたはクラスに関連付けられている。例えば、ステータスは緊急状態である。
【0471】
一実施形態では、第2の車両は、第1の車両のIDを検証することに応答してアクションを実行するように構成される。
【0472】
一実施形態では、アクションは、第2の車両のユーザディスプレイにアラートを提示すること、第2の車両のナビゲーションの経路または速度を変更すること、または第2の車両のブレーキシステムを作動させることの少なくとも1つである。
【0473】
一実施形態では、コンピューティングデバイスによって、交通管制システム(例えば、交通管制システム2309)にトリプルを送信することをさらに含み、交通管制システムが、トリプルを使用して第1の車両のIDを検証し、また、第1の車両のIDを検証することに応答して、交通管制システムの状態を変更して、第1の車両の通過を許可するように構成される。
【0474】
一実施形態では、新規デバイスシークレットは、コンピューティングデバイスのメモリ内で、以前に格納されたデバイスシークレットを置き換える。
【0475】
一実施形態では、方法は、ホストデバイスと通信するために使用されるシークレットキーを格納することをさらに含み、シークレットキーは、新規デバイスシークレットを生成するためのメッセージ認証コードへの入力として使用される。
【0476】
一実施形態では、コマンドはシークレットキーを使用して認証され、方法は、コンピューティングデバイスによってホストデバイスに、新規デバイスシークレットが格納されたことの確認を送信することをさらに含む。
【0477】
一実施形態では、方法は、第2の車両が第1の車両のIDを検証した後、秘密キーを使用するコンピューティングデバイスによるメッセージを暗号化することであって、秘密キーと公開キーは、新規デバイスシークレットを使用して生成される関連付けられたペアである、暗号化すること、及びコンピューティングデバイスによって、暗号化されたメッセージを第2の車両に送信することであって、暗号化されたメッセージは、フレッシュネスを含む、送信すること、をさらに含む。
【0478】
一実施形態では、メッセージは構成データを含み、第2の車両は、メッセージを受信することに応答してアクションを実行するように構成され、アクションは、構成データに従って第2の車両によって実行される。
【0479】
一実施形態では、第1の車両で使用するためのシステムは、少なくとも1つのプロセッサ、及び少なくとも1つのプロセッサに、ホストデバイスからコマンドを受信すること、コマンドを受信することに応答して、新規デバイスシークレットを格納すること、新規デバイスシークレットを使用して、証明書を生成すること、及び証明書を第2の車両に送信することを命令するように構成された命令を含むメモリを含み、第2の車両は、証明書を使用して第1の車両のIDを検証するように構成される。
【0480】
一実施形態では、新規デバイスシークレットは、ホストデバイスから受信される、または、ホストデバイスからコマンドを受信した後にシステムによって生成される。
【0481】
一実施形態では、システムは、ホストデバイスと通信するためのシークレットキーを格納するメモリをさらに含み、命令は、メッセージ認証コードへの入力としてシークレットキーを使用して新規デバイスシークレットを生成するように少なくとも1つのプロセッサに命令するようにさらに構成される。
【0482】
一実施形態では、第2の車両は、第1の車両のIDを検証することに応答してアクションを実行するように構成され、アクションは、第2の車両のユーザディスプレイにアラートを提示すること、第2の車両のナビゲーションの経路または速度を変更すること、または第2の車両のブレーキシステムを作動させることの少なくとも1つである。
【0483】
一実施形態では、新規デバイスシークレットは、第1の車両の所定のステータスまたはクラスに関連付けられている。
【0484】
一実施形態では、非一時的コンピュータ記憶媒体は、第1の車両のコンピューティングデバイスで実行されるとき、コンピューティングデバイスに、少なくとも、ホストデバイスからのコマンドを受信すること、コマンドを受信することに応答して、新規デバイスシークレットをメモリに格納すること、新規デバイスシークレットを使用して、識別子、証明書、及び公開キーを含むトリプルを生成すること、及びトリプルを第2の車両に送信することを引き起こす命令を格納し、第2の車両は、トリプルを使用して第1の車両のIDを検証するように構成される。
【0485】
一実施形態では、新規デバイスシークレットをメモリに格納することは、以前に格納されたデバイスシークレットを新規デバイスシークレットで置き換えることを含み、命令はさらに、コンピューティングデバイスに識別子をホストデバイスに送信させる。
【0486】
一実施形態では、識別子は公開識別子であり、第1の非対称ジェネレータは、公開識別子と秘密識別子を関連付けられたペアとして生成し、第2の非対称ジェネレータは、公開キーと秘密キーを関連付けられたペアとして生成する。
【0487】
一実施形態では、トリプルは、ホストデバイスからメッセージを受信すること、メッセージを公開キーと連結して、第1のデータを提供すること、秘密識別子を使用して第1のデータを暗号化し、第2のデータを提供すること、秘密キーを使用して第2のデータを暗号化し、証明書を提供することを含む。
【0488】
一実施形態では、UDSは、公的機関または私的機関によって(例えば、権限コンピューティングデバイス2305を使用して)、1つまたは複数の車両に割り当てられる。各機関は、特定のUDSauthority(またはUDScustomer)を割り当てることができる。
【0489】
例えば、当局は、コンフィギュレータ(例えば、ソフトウェアを備えたラップトップ)を車両のバスに接続することができる(例えば、SOTA、OTAなどを使用する)。認証されたコマンドロードを使用することにより、新規デバイスシークレット(UDS)は、UDSauthorityとしてコンピューティングデバイス(例えば、コンピューティングデバイス2301)のレジスタに格納される。認証は、製造業者によってインジェクションされ、例えば上記のように安全なインフラストラクチャを顧客に提供するシークレットキーに基づいている。フレッシュネスメカニズムは、上記のようにモノトニックカウンタで実装される。
【0490】
一例では、認証された置換コマンドを使用することにより、UDSauthorityが現在のUDSを置換する。ただし、UDSを置換する必要があるわけではない。UDS割り当てプロセスは、コンピューティングデバイスに格納されている初期のUDSにすることができる。
【0491】
認証された各コマンドの実行は、コンピューティングデバイスからの認証された応答で確認される。UDSauthorityを使用して、コンピューティングデバイスは、公開識別子、公開証明書、及び公開キーで構成されるトリプルを生成する。コンピューティングデバイスはまた、上記のように、秘密キー及び秘密識別子を生成する。
【0492】
一実施形態では、受信側の車両(例えば、近くの車両2311)は、上記のようにIDが割り当てられている車両のIDを検証する。一例では、車両は緊急車両であり、検証を実行するためにインターネットまたはワイヤレス接続にすることは必要ない。緊急車両は、周知の公開トリプル{IDL1 public、IDL1certificate、KL1public}を生成し、KL1private keyを使用して、すべてのメッセージに署名する。受信側の車両は、送信側の車両のKL1publicで署名を検証する。これは、その車両だけがKL1publicのコンパニオンであるKL1private keyを知っているため、メッセージが許可された適切な送信側の車両から送信されたという証拠を提供する。インターネットやその他の通信接続が失われた場合に緊急車両の認識を確実に実行できるように、緊急車両の証明書をそのようなすべての車両に事前にインストールすることができる。
【0493】
一例では、車両は公益事業サービスによって制御されている。車両との通信には、インターネットまたはその他の通信接続が使用される。必要に応じて、受信側の車両は、安全な公開カタログ(例えば、公開サーバ2307に格納されている)のトリプル{IDL1 public、IDL1 certificate、KL1 public}を検証できる。すべてのメッセージはKL1private keyで署名され、受信側の車両は送信側の車両のKL1publicで署名を検証する。
【0494】
一例では、車両は、民間企業によって管理されているフリートの民間車両である。各車両は、フリートのすべての車両に知られているトリプル{IDL1 public、IDL1 certificate、KL1 public}を生成する。車両はすべてのメッセージにKL1 private keyで署名し、受信側の車両は送信側の車両のKL1publicで署名を検証する。
【0495】
一実施形態では、車両間の通信は、パケットを交換することによって実行される。各パケットには、リプレイ攻撃を回避するためのフレッシュネスフィールドがある。車両間の通信の例としては、停止、送信側の車両を追跡していること、どこかに存在している事故、事故の場所に関するデータ、助けが必要な要求、道路状況情報の要求などの情報が含まれる。
【0496】
(結び)
非一時的コンピュータ記憶媒体を使用して、ファームウェア104の命令を格納するか、またはプロセッサ143または処理デバイス111の命令を格納することができる。命令が、例えば、メモリデバイス103のコントローラ107またはコンピューティングデバイス603によって実行されるとき、命令は、コントローラ107に、上記の方法のいずれかを実行させる。
【0497】
この説明では、説明を簡略化するために、コンピュータ命令によって実行される、またはコンピュータ命令によって引き起こされるものとして、様々な機能及び操作を記載することができる。しかし、当業者は、そのような表現が意味することは、機能が、1つまたは複数のコントローラまたはプロセッサ、例えばマイクロプロセッサなどによるコンピュータ命令の実行から生じることであることを認識する。あるいは、または組み合わせて、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)を使用するなど、ソフトウェア命令の有無にかかわらず、特別な目的の回路を使用して、機能と操作を実装できる。実施形態は、ソフトウェア命令なしで、またはソフトウェア命令と組み合わせて、ハードワイヤード回路を使用して実装することができる。したがって、技術は、ハードウェア回路及びソフトウェアのいずれかの特定の組み合わせにも、データ処理システムによって実行される命令についてのいずれの特定のソースにも限定されない。
【0498】
いくつかの実施形態は、完全に機能するコンピュータ及びコンピュータシステムに実装することができるが、様々な実施形態は、様々な形態のコンピューティング製品として配布することができ、実際に配布に影響を与えるように使用される特定のタイプの機械またはコンピュータ可読媒体に関係なく、適用することができる。
【0499】
開示された少なくともいくつかの態様は、少なくとも部分的に、ソフトウェアで具体化することができる。すなわち、技術は、マイクロプロセッサまたはマイクロプロセッサなどの該当のプロセッサに応答して、コンピュータシステムまたは他のデータ処理システムで実行され、ROM、揮発性RAM、不揮発性メモリ、キャッシュ、またはリモートストレージデバイスなどのメモリに含まれる命令のシーケンスを実行することができる。
【0500】
実施形態を実施するために実行されるルーチンは、オペレーティングシステムの一部として、または「コンピュータプログラム」と呼ばれる特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、または一連の命令として、実施することができる。コンピュータプログラムは、通常、コンピュータ内の様々なメモリ及びストレージデバイスに、様々な時間に設定された1つまたは複数の命令を含み、コンピュータの1つまたは複数のプロセッサによって読み取られて実行されると、コンピュータに、様々な態様を含む要素を実行するために必要な操作を実行させる。
【0501】
有形の非一時的コンピュータ記憶媒体を使用して、ソフトウェア及びデータを格納することができ、データ処理システムによって実行されるとき、システムは様々な方法を実行する。実行可能なソフトウェア及びデータは、例えば、ROM、揮発性RAM、不揮発性メモリ及び/またはキャッシュを含む様々な場所に格納され得る。このソフトウェア及び/またはデータの一部は、これらのストレージデバイスのいずれかに格納できる。さらに、データと命令は、集中型サーバまたはピアツーピアネットワークから取得できる。データ及び命令の異なる部分は、異なる集中サーバ及び/またはピアツーピアネットワークから、異なる時間に、異なる通信セッションで、または同じ通信セッションで取得することができる。データと命令は、アプリケーションの実行前に完全に取得できる。あるいは、データと命令の一部を、実行に必要なときに、ちょうどいいタイミングで動的に取得することもできる。したがって、データと命令は、特定の時点で完全に機械可読媒体にある必要はない。
【0502】
コンピュータ可読記憶媒体の例には、とりわけ、揮発性及び不揮発性メモリデバイス、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリデバイス、フロッピー及びその他のリムーバブルディスク、磁気ディスク記憶媒体、及び光記憶媒体(例えば、コンパクトディスク読み取り専用メモリ(CDROM)、デジタル多用途ディスク(DVD)など)などの記録可能及び記録不可能なタイプの媒体が含まれるが、これらに限定されない。命令は、電気、光、音響、または他の形式の伝搬信号、例えば搬送波、赤外線信号、デジタル信号などの一時的な媒体で具体化することができる。一時的な媒体は、通常、命令を送信するために使用されるが、命令を格納できるとは見なされない。
【0503】
様々な実施形態で、ハードワイヤード回路をソフトウェア命令と組み合わせて使用して、技術を実装することができる。したがって、技術は、ハードウェア回路及びソフトウェアのいずれかの特定の組み合わせにも、データ処理システムによって実行される命令についてのいずれの特定のソースにも、限定されない。
【0504】
図面の一部は特定の順序でいくつかの操作を示しているが、順序に依存しない操作は、並べ替えることができ、他の操作を組み合わせる、または分割することができる。いくつかの並べ替えまたは他のグループ化が具体的に言及されているが、他のものは当業者には明らかであり、したがって、代替案の網羅的な列挙は提示しない。さらに、ステージは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実装できることを認識しておくべきである。
【0505】
上記の説明及び図面は例示的なものであり、限定的なものとして解釈されるべきではない。完全な理解を実現するように、多数の具体的な詳細が説明されている。ただし、特定の例では、説明が不明瞭になるのを避けるために、周知である、または通例の細部が説明されていない。本開示における1つまたはある実施形態への言及は、必ずしも同じ実施形態への言及ではない。また、そのような言及は少なくとも1つであることを意味している。
【0506】
前述の明細書では、本開示は、その特定の例示的な実施形態を参照して説明されてきた。以下の請求項に述べるより広い趣旨及び範囲から逸脱することなく、種々の変更を施せることが明らかである。したがって、明細書及び図面は限定的な意味ではなく例示的な意味で考えるべきである。
【国際調査報告】