JP6949843B2 - ハードウェアインテグリティチェック - Google Patents

ハードウェアインテグリティチェック Download PDF

Info

Publication number
JP6949843B2
JP6949843B2 JP2018531586A JP2018531586A JP6949843B2 JP 6949843 B2 JP6949843 B2 JP 6949843B2 JP 2018531586 A JP2018531586 A JP 2018531586A JP 2018531586 A JP2018531586 A JP 2018531586A JP 6949843 B2 JP6949843 B2 JP 6949843B2
Authority
JP
Japan
Prior art keywords
circuit
response
challenge
hardware component
shift register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018531586A
Other languages
English (en)
Other versions
JP2018537793A (ja
Inventor
エドゥアール、フォルラー
ジョナタン、ボルゴー
ステバン、セルツァー
Original Assignee
ナグラビジョン エス アー
ナグラビジョン エス アー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ナグラビジョン エス アー, ナグラビジョン エス アー filed Critical ナグラビジョン エス アー
Publication of JP2018537793A publication Critical patent/JP2018537793A/ja
Application granted granted Critical
Publication of JP6949843B2 publication Critical patent/JP6949843B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/86Secure or tamper-resistant housings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response

Description

本発明は、ハードウェアの改ざんの検出及びデータ処理デバイスの物理的インテグリティの検証に関し、特に、ハードウェアの変更に対する保護を容易にし、デバイス内のハードウェアコンポーネントの変更を検出することに関する。
現在、デジタルデバイスのハイジャックを目的とする攻撃の多くは、ソフトウェアを焦点とするものであるが、セキュアなソフトウェアのロバスト性が高まるにつれ、攻撃は、よりハードウェアに焦点とするものになるであろう。1又は複数の集積回路又は他のハードウェアコンポーネントをデバイス内で除去、追加又は交換すること、又は、そのようなハードウェアコンポーネントを外部のデバイスでエミュレートすることによるハードウェアの改ざんに基づく攻撃が知られている。したがって、ハードウェアレベルでデバイスのインテグリティを検証することがますます重要になってくるであろう。これは特に、例えば、テレビのセットトップボックス、又は、デジタル著作権管理のような条件付のアクセスシステムといった収益ストリームを保護するためにデバイスのインテグリティが重要である場合、また、電子バンキング又はeヘルスといったプライバシー及びセキュリティの問題を含む機密なアプリケーションにますます使用されているパーソナルコンピュータのような全ての汎用演算プラットフォーム、及び、ラップトップ、携帯電話、スマートフォン、タブレットその他のような携帯デバイスにおいても言える。ほぼ全ての日常的なデバイス(IoT:Internet of Things)の接続性が高まるにつれて、ハードウェアインテグリティチェックは、必要となってくる。
データ処理システムにおけるソフトウェアのインテグリティを保証するいくつかの解決策は知られており、例えば、各ソフトウェアのハッシュを記憶し、システムの起動時に各ソフトウェアコンポーネントから生成されたハッシュを比較することにより、ソフトウェアコンポーネントの署名を生成するといった様々な手法が含まれる。このような解決策は、トラステッドコンピューティンググループ(TCG:Trusted Computing Group)により開発されたトラステッドプラットフォームモジュール(TPM:Trusted Platform Module)と言った専用のセキュリティハードウェアによって容易になることがある。TCGのトラステッドネットワークコネクト(TNC:Trusted Network Connect)アーキテクチャにおいては、TPMはインテグリティ測定と、リモート認証とに使用される。起動プロセス中には、TPMは、ロードされる前に、BIOS、ブートローダ、オペレーティングシステムカーネルを含む、PCの重要なソフトウェア及びファームウェアのコンポーネントの全てを測定(ハッシュ)する。ソフトウェアが起動する前に、TPMにおいて、これらの測定を行って記憶することにより測定値は、その後の変更の攻撃から分離され、安全である。PCがネットワークに接続すると、保存された測定値は、TNCサーバに送信され、サーバの許容設定リストと照合され、不一致が発生すると感染したエンドポイントとして隔離される。
開示された実施形態は、独立請求項に記載される。開示された実施形態のいくつかの追加的な特徴は、従属請求項に記載される。
いくつかの開示された実施形態によれば、マイクロプロセッサ、中央処理装置、システムオンチップデバイス、条件付きアクセスデバイス、デスクランブラデバイス、グラフィックデバイス、ビデオデバイス、チップ、RFID又はキーリーダー、トラステッドプラットフォームモジュール(Trusted Platform Module)及びフィールドプログラマブルゲートアレーデバイスの1又は複数のような、複数のハードウェアコンポーネントを備える。前記複数のハードウェアコンポーネントの第1ハードウェアコンポーネントは、複数のハードウェアコンポーネントの残りのハードウェアコンポーネントのうち少なくとも1つにチャレンジを送信する。各残りのハードウェアコンポーネントは、それぞれのチャレンジを、例えば、前記第1ハードウェアコンポーネント又は他の残りのハードウェアコンポーネントから受信し、前記チャレンジを処理して応答を生成するように構成される。デバイスは、少なくとも1つの前記残りのハードウェアコンポーネントは、応答に基づいて、例えば、応答又はチェーンの最後の応答が期待通りであるかをチェックして、デバイスインテグリティを検証するように構成される。
いくつかの実施形態において、デバイスは、残りのハードウェアコンポーネントの少なくとも1つにより生成された応答に基づいてデバイス検証キーを生成するように構成され、デバイス検証キーは、インテグリティの検証に利用可能である。例えば、最初のハードウェアコンポーネントは、1又は複数の応答を受信し、デバイス検証キーを生成し、検証若しくはそれを使用してもよく、又は、これらのタスクは、デバイス内の異なるハードウェアコンポーネントにより実行されてもよい。例えば、第1ハードウェアコンポーネントは、1又は複数の応答を第2ハードウェアコンポーネントに送信してもよく、この第2ハードウェアコンポーネントは、受信した情報を用いてデバイス検証キーを生成してミッションクリティカルな情報を復号し、又は、ミッションクリティカルな情報を復号する第3ハードウェアコンポーネントにデバイス検証キーを送信する。1又は複数のデバイス検証キーは、ハードウェアコンポーネントの収集した応答に基づいて生成されてもよく、デバイス検証キーは、単純にハードウェアコンポーネントの応答であってもよい。
いくつかの実施形態において、前記デバイスは、ミッションクリティカルな情報を暗号化された形式で格納するメモリを備える。ミッションクリティカルな情報は、デバイス又はデバイスの1態様により、復号された形式で機能するように要求される。デバイスは、残りのハードウェアコンポーネントに生成された応答に基づいた1又は複数のデバイス検証キーを、暗号化されたミッションクリティカルな情報を復号してもよい(あるハードウェアコンポーネントが1又は複数のデバイス検証キーを生成してもよいし、他のハードウェアコンポーネントが、そのハードウェアコンポーネントから1又は複数のデバイス検証キーを受信しても、いずれでもよい)。したがって、デバイスの明確化は、ミッションクリティカルな情報の復号が成功(又は失敗)することにより暗黙的であっってもよい。1又は複数のデバイス検証キーは、応答に基づいて生成されてもよいし、単純に応答であってもよい。1以上の残りのハードウェアコンポーネントの場合、例えば、1又は複数の応答は、デバイス検証キーとして使用されてもよく、例えば、応答は、独立して生成されても、チェーン内で各応答が事前の応答に依存していてもよい。一般的に、このように、残りのハードウェアコンポーネントの収集された応答、例えば、個々の応答又は残りの個々の応答に依存する1又は複数の応答は、ミッションクリティカルな情報を復号することに使用される。有利には、残りのハードウェアコンポーネントの応答が、デバイス(又はその1態様)を機能させるのに必要なミッションクリティカルな情報を復号するのに使用されることにより、単にデバイスの検証を介しようとするデバイスに対する攻撃は、失敗する。応答は、1又は複数の期待値に対するチェックだけではなく、ミッションクリティカルな情報を復号することに使用されるので、検証ステップを回避すると、ミッションクリティカルな情報が無いことにより、デバイスが機能しなくなる。
ミッションクリティカルな情報の一例は、デバイス又はデバイスの1態様を機能させるために必要なファームウェア(又は、他のソフトウェア)である。例えば、ミッションクリティカルな情報は、バイオス、オペレーティングシステムカーネル、ハードウェアコンポーネントドライバ、ブートローダ、コンテンツ復号キーの1又は複数を備えていてもよい。1つの特定の例において、データ処理デバイスは、条件付きアクセスデバイスを備え、ミッションクリティカルな情報は、条件付きアクセスデバイスによりデータ処理デバイスを使用してコンテンツ消費物へのアクセスを制御するための復号キーを備える。他の特定の例において、データ処理デバイスは、ビデオデスクランブラを備え、ミッションクリティカルな情報は、ビデオデスクランブラがビデオシグナルをデスクランブルするために使用されるデスクランブルキーを備える。
いくつかの実施形態において、最初の残りのハードウェアコンポーネントは、第1ハードウェアコンポーネントからそのチャレンジを受信するように構成され、各後続の残りのハードウェアコンポーネントに受信されたチャレンジは、それぞれの先行する残りのハードウェアコンポーネントにより生成された応答である。例えば、各後続の残りのハードウェアコンポーネントは、先行するハードウェアコンポーネントから直接その先行するハードウェアコンポーネントにより生成された応答を受信してもよく、又は、先行するハードウェアコンポーネントは、その応答を、第1又はその他のハードウェアコンポーネントに送信し、その後、後続のハードウェアコンポーネントに送信してもよい。残りのハードウェアコンポーネントの最後の1つは、第1ハードウェアコンポーネントに直接又は中間のハードウェアコンポーネントを介して、その応答を送信するように構成される。デバイスは、上述したように、残りのハードウェアコンポーネントのうち最後のものから受信した応答を使用して、第1ハードウェアコンポーネント又は他のハードウェアコンポーネントにおいてデバイス検証キーを生成するように構成してもよい。受信された応答は、デバイス検証キーとして直接使用してもよい。
各後続の残りのハードウェアコンポーネントが先行するハードウェアコンポーネントからの応答を、そのチャレンジとして、直接先行するハードウェアコンポーネントから受信する実施形態では、通信は、応答/チャレンジが、第1ハードウェアコンポーネント又は他の通信ハブに関与されて、前後にルーティングされる必要は無く、問題のハードウェアコンポーネント間でルーティングされるという点において単純化される
各残りのハードウェアコンポーネントは、非推移的な関数をチャレンジに適用し、その応答を生成するように構成されてもよい。有利には、後続のハードウェアコンポーネントに対するチャレンジが先行するハードウェアコンポーネントからの応答である実施形態では、非推移的な応答関数を使用することは、チャレンジがハードウェアコンポーネントからハードウェアコンポーネントに渡される順序に全体的な応答が敏感になるので、正しい最後の応答又は生成されたデバイス検証キーは、個々のハードウェアだけではなく、検証チェーンにおけるそれらの配置の順序をも検証する。
ハードウェアコンポーネントは、様々な手段を用いて様々な構成で接続されてもよい。いくつかの実施形態において、ハードウェアコンポーネントは、バス、例えば、I2Cバスを用いて相互接続する。いくつかの実施形態において、ハードウェアコンポーネントは、専用物理接続を使用して接続されてもよく、例えば、各残りのハードウェアコンポーネントが、第1ハードウェアコンポーネントが残りのハードウェアコンポーネントに対して書き込み及び読み出しを行うことができる専用の物理ラインにより、第1ハードウェアコンポーネントに接続されてもよい。
いくつかの実施形態において、残りのハードウェアコンポーネントは、チェーン内で、第1ハードウェアコンポーネントの出力に接続されるチェーン内の最初の残りのハードウェアコンポーネントの入力に接続される。チェーン内の各後続の残りのハードウェアコンポーネントの入力は、チェーン内のそれぞれの先行する残りのハードウェアコンポーネントの出力に接続され、第1ハードウェアコンポーネントの入力は、チェーン内の残りのハードウェアコンポーネントの最後の1つの出力と接続される。第1ハードウェアコンポーネントは、チェーン内の最初の残りのハードウェアコンポーネントの入力にチャレンジを送信するように構成され、さらに、第1ハードウェアコンポーネントの入力において、残りのハードウェアコンポーネントにより生成された1又は複数の応答を受信するように構成される。これらの実施形態は、デイジーチェーンの物理接続モデルを使用するが、
「アクティブ」な残りのハードウェアコンポーネントを除いた全てに、単にチャレンジ(「アクティブ」ハードウェアコンポーネントの上流)及び応答(「アクティブ」ハードウェアコンポーネントの下流)を通過させるためだけに、チャレンジを受信させ、応答を供給することにより、個々のチャレンジを各残りのハードウェアコンポーネントに送信し、第1ハードウェアコンポーネントにおける個々の応答を受信するサポートをすることができる。
ここで説明する物理接続方式のいずれかと同様に、個々のチャレンジは、各残りのハードウェアコンポーネントと同じ又は異なっていてもよく、残りの各ハードウェアコンポーネントに固有であってもよく、又は、第1ハードウェアコンポーネントによって以前に受信された(又は、それにより決定される)応答であってもよい。チャレンジは、固定されていても、時間とともに変化してもよい。もちろん、物理接続チェーンはまた、いくつかの実施形態において、各応答が後続のハードウェアコンポーネントのチャレンジとして先行するハードウェアコンポーネントから後続のハードウェアコンポーネントに直接渡される論理チェーンを容易にする。第1ハードウェアコンポーネントにより受信された1又は複数の応答は、上述したように、デバイスによりデバイスのインテグリティ検証に用いられ、例えば、第1ハードウェアコンポーネント、又は、デバイスの1又は複数の異なるハードウェアコンポーネントによって1又は複数の応答に関する情報が、第1ハードウェアコンポーネントにより受信されたものとして受信される。
チェーン内の各残りのハードウェアコンポーネントは、IEEE標準1149.1(JTAG)仕様と同様のインフラストラクチャを実装してもよい。IEEE標準1149.1−2013又は以前に公開されたいずれかのバージョンは、ここに参照することにより援用される。特に、各残りのハードウェアコンポーネントは、命令セットの命令を受信するための命令シフトレジスタを有していてもよい。命令セットは、チャレンジを処理し、応答を生成する、少なくとも1つのプロセスチャレンジ命令を含んでいてもよい。各残りのハードウェアコンポーネントはさらに、プロセスチャレンジ命令に対応し、チャレンジを受信するためのデータシフトレジスタを有していてもよい。各残りのハードウェアコンポーネントは、いくつかのモードを実装するように構成されていてもよい。例えば、これらのモードのそれぞれは、JTAGライクのステートマシンの状態を使用して実装されていてもよい。
用語「シフトレジスタ」は、本明細書において、データレジスタのいかなる実装をカバーし、ファーストインファーストアウト方式によりレジスタの一方(例えば、最下位ビット)からシフトインするビット及び他方(例えば、最上位ビット)からシフトアウトするビットを格納する、フリップフロップのようなデジタル電子回路の物理レジスタとして、一般的な目的のデジタルロジック、又は、その他により実装されてもよいことに理解されたい。同様に、本明細書で理解される「シフトレジスタ」は、読み出し、書き出し、又は、双方のためのレジスタへのパラレルインターフェースを有していてもよい。例えば、JTAGテストアクセスポイント(TAP:Test Access Point)の実装、又は、同様の実装において使用されるシフトレジスタとの関連において、ビットは、例えば、TAPステートマシンの選択IR、選択DR、更新IR及び/又は更新DRの状態において、ハードウェアコンポーネント(例えば、集積回路)内にパラレルに書き込み/読み出ししてもよい。
具体的には、第1モードにおいて、各残りのハードウェアコンポーネントは、その入力から命令シフトレジスタへ、及び、命令シフトレジスタからその出力へ、1度に1ビットシフトするように構成されてもよい。第2モードでは、各残りのハードウェアコンポーネントは、その入力からデータシフトレジスタへ、及び、データシフトレジスタからその出力へ、1度に1ビットシフトされるように構成されてもよい。第3モードにおいて、各残りのハードウェアコンポーネントは、プロセスチャレンジ命令が命令シフトレジスタにある場合、データシフトレジスタ内のチャレンジを読み出し、チャレンジを処理して応答を生成し、応答をデータシフトレジスタに書き込むように構成されていてもよい。第1ハードウェアコンポーネントは、全ての残りのハードウェアコンポーネントのモードを一斉に、全ての残りのハードウェアコンポーネント共通の制御ラインを介して制御してもよい。すなわち、全ての残りのハードウェアコンポーネントは、いつでも同じモードになるように制御されてもよい。
第1ハードウェアコンポーネントは、残りのハードウェアコンポーネントのモードを制御し、それぞれの命令を命令シフトレジスタへシフトし、チャレンジをデータシフトレジスタへシフトし、残りのハードウェアコンポーネントにチャレンジを処理させて応答を生成させ、応答をデータシフトレジスタへシフトさせ、それにより、残りのハードウェアコンポーネントから1又は複数の応答を受信させるように構成されてもよい。チャレンジが供給され、応答が個々に受信される実施形態において、応答は、各残りのハードウェアコンポーネントから第1ハードウェアコンポーネントにおいて受信される。応答が1つの残りのハードウェアコンポーネントからチャレンジとして次ぎへと渡される実施形態において、第1ハードウェアコンポーネントは、チェーン内の最後のハードウェアコンポーネントから単一の応答のみを受信する。
いくつかの実施形態では、1つの残りのハードウェアコンポーネントからチャレンジとして次へ応答が渡される論理チェーン、及び、1つのハードウェアコンポーネントの応答をチャレンジとして直接次のものへと2つの残りのハードウェアコンポーネントを接続する物理通信ラインを介して渡される物理チェーンの双方を実装する。有利には、JTAGライクのアーキテクチャにおける残りのハードウェアコンポーネントの物理チェーン及び論理デイジーチェーンの実装することにより、比較的少ない命令を使用して、テスト目的でほとんどのハードウェアコンポーネントに提供されている既存のインフラストラクチャを利用できる、デバイス検証のための効率的な実装が提供される。
いくつかのそのような実施形態において、第1ハードウェアコンポーネントは、チャレンジをビットごとに最初の残りのハードウェアコンポーネントのデータシフトレジスタにシフトさせ、最初の残りのハードウェアコンポーネントにチャレンジを処理させてその応答をデータシフトレジスタに書き込ませ、チェーン内のそれぞれの先行するハードウェアコンポーネントのデータシフトレジスタからの応答をチェーン内の各後続の残りのハードウェアコンポーネントのデータシフトレジスタにビットごとにシフトさせ、各後続のハードウェアコンポーネントにそのデータシフトレジスタ内のそれぞれの先行するハードウェアコンポーネントからの前記応答をチャレンジとして処理させてその応答をデータシフトレジスタに書き込ませ、チェーンの最後の残りのハードウェアコンポーネントのそれぞれのデータシフトレジスタに書き込まれた応答を第1ハードウェアコンポーネントの入力にビットごとにシフトさせる、ように構成される。
第1ハードウェアコンポーネントは、チェーン内のそれぞれの先行するハードウェアコンポーネントがその応答をそのデータレジスタに書き込まれる前ではないときに、プロセスチャレンジ命令をチェーン内の各後続の残りのハードウェアコンポーネントによって実行されるように構成されてもよい。これは、いくつかの実施形態において、プロセスチャレンジ命令とバイパス命令(残りのハードウェアコンポーネントにその入力から出力へ信号を通過させる)の組み合わせを用いることにより実装されてもよい。他の実施形態において、より簡単な命令セットを使用してもよい。特に、いくつかの実施形態において、プロセスチャレンジ命令は、全ての命令シフトレジスタにロードされ、チャレンジ及び応答は、その後、データシフトレジスタのデータシフトレジスタ幅だけ、単純に1つのハードウェアコンポーネントから次へとシフトされ、中間の無効又は不適切なデータに対する不要な応答は、単純に破棄される。しかしながら、先行するハードウェアコンポーネントからの応答が、関連するデータシフトレジスタへロードされる場合にのみプロセスチャレンジ命令が実行される実施形態において、残りのハードウェアコンポーネントは、有利には、チャレンジがチェーンを通過した場合に、一度だけ、応答を生成するように内部状態を維持することができる。これにより、デバイス起動後にチャレンジ/応答チェーンが1回だけ実行されることが望ましい実装が可能となる。
いくつかの実施形態において、第1ハードウェアコンポーネントは、チェーン内の各残りのハードウェアコンポーネントに、チャレンジをチェーン内の最初の残りのハードウェアコンポーネントのデータシフトレジスタにシフトすることと、チェーン内の最後の残りのハードウェアコンポーネントのデータシフトレジスタに書き込まれた応答を第1ハードウェアコンポーネントにシフトすることとの間に、プロセスチャレンジ命令をただ1度実行させるように構成される。各チャレンジ/応答チェーンに対してチャレンジ応答命令を1回だけ実行することにより、残りのハードウェアコンポーネントは、チャレンジを処理する関数、例えば、各チャレンジ/応答チェーン実行に対して異なる応答、以前のチャレンジ/応答チェーン実行からの現在のチャレンジと応答関数といった応答を返すことができる。有利には、これは、全ての以前のチャレンジ、例えば、チェーンデバイスの検証に依存した各応答を生成することを可能とする。
いくつかの実施形態において、第1及び残りのハードウェアコンポーネント間、並びに、残りのハードウェアコンポーネント間の通信の実装に用いられる物理層は、IEEE標準1149.1(JTAG)仕様に準拠しており、各残りのハードウェアコンポーネントは、TMS、TCK、TDI及びTDIピン、並びに、仕様に準拠したステートマシンを備え、少なくとも、仕様に要求される最小限の命令セットを実装する。第1ハードウェアコンポーネントは、最後の残りのハードウェアコンポーネントのTDOピンをモニターしてもよく、例えば、第1ハードウェアコンポーネントは、最後の残りのハードウェアコンポーネントのTDOピンと接続する入力ピンを有していてもよい。
典型的には、チャレンジの関数として応答は生成される。全ての態様及び実施形態において、応答を生成することは、チャレンジを、応答を生成する残りのハードウェアコンポーネントに関連するハードウェアコンポーネントキーと組み合わせ、例えば、その組み合わせに一方向の関数を適用することを備えていてもよい。一方向の関数は、暗号ハッシュ関数であってもよい。応答を生成するチャレンジを処理することは、チャレンジを、ハードウェアコンポーネントキーとともにハッシュ化することを備えていてもよい。ハッシュ化は、例えば、MD5、SHA−0、SHA−1、SHA−2又はSHA−3のようなハッシュ関数を使用することにより行われる。一般に、ハードウェアコンポーネントは、ハードウェアコンポーネントの特定の製造元、バージョンに固有、又は、個々のハードウェアコンポーネントに特定かつ固有の応答を生成してもよい。典型的には、応答は、チャレンジにも固有であり、すなわち、2つの異なるチャレンジがハードウェアコンポーネントからの付随する異なる応答を引き出すであろう。さらに、応答は、ハードウェアコンポーネントの内部状態に依存していてもよく、これは、事前のチャレンジに依存するものであってもよい。
特定の実施形態を添付の図面を参照して以下に説明する。
様々は接続方式を使用するデバイス検証のための相互接続された複数のデータ処理ハードウェアコンポーネントを有するデータ処理デバイスを示す。 デバイス検証方法を示す。 暗号化されたミッションクリティカル情報の復号を含むデバイス検証方法を示す。 図3の方法の例を示す。 個々のチャレンジ応答ペアの基づく方法を示す。 デバイス検証のためのチェーンで接続されたデータ処理ハードウェアコンポーネントを用いた図5a、図5bの方法の実装を示す。 IEEE−1149.1に準拠したチェーン接続方式の詳細を示す。 データ処理ハードウェアコンポーネントからのチャレンジ応答ペアの収集中のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。 第1及び残りのそれぞれのハードウェアコンポーネントにおける、後続のチャレンジとして作用する先行応答を有するチャレンジ応答ペアのチェーンに基づく方法を示す。 デバイス検証のためにチェーン接続されたデータ処理ハードウェアコンポーネントを有する図9a、図9bの方法の実装を示す。 単一の命令を使用してチャレンジ応答ペアのチェーンの実行中のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。 データ処理ハードウェアコンポーネントを1つのチャレンジ応答ペアを生成することに制限できるように2つの命令を使用してチャレンジ応答ペアのチェーンを実行している間のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。 各チャレンジ応答ペアに関連する内部状態を維持しながらデータ処理ハードウェアコンポーネントを複数のチャレンジ応答ペアを生成することに制限するように、3つの命令を使用してチャレンジ応答ペアのチェーンを実行している間のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。
図1a、図1b及び図1cを参照すると、データ処理デバイス100は、複数のデータ処理ハードウェアコンポーネント102、104、106、108を備える。デバイス100は、例えば、サーバ、パーソナルコンピュータ、スマートフォン又はタブレットのような形態コンピューティングデバイス、セットトップボックス、スマートTV、デジタルビデオレコーダ、カメラ、ビデオカメラ、ビデオレコーダ、メディア消費・アクセス又は記憶デバイス、門又は扉を制御するためのアクセスコントロールデバイス、料金所、スキーリフトのゲート、制御デバイス、産業的プロセス制御装置、電気フィットネス又はヘルスデバイス、接続された家庭用機器、その他である。典型的には、デバイス100は、キーボード、カードリーダ、RFIDリーダ、カメラ、マイクロホン、1又は複数のコネクタ、有線及び/又は無線ネットワーク接続、その他といった1又は複数の入力インタフェースを有し、ディスプレイ、スピーカ、プリンタ、1又は複数のコネクタ、有線及び/又は無線ネットワーク接続、その他といった1又は複数の出力インタフェースを有する。
ハードウェアコンポーネント102、104、106、108は、共通のデバイスエンクロージャ又はハウジング内に配置されてもよい。
ハードウェアコンポーネントは、典型的には、集積回路、又は、チップ、例えば、マイクロプロセッサ、中央処理装置(CPU:Central 処理 Unit)、システムオンチップ(SoC:System on Chip)であるか、又は、それらに含まれる。ハードウェアコンポーネントは、典型低的には、入力を受信し、出力を送信するピンを有し、かつ、典型的には、導体、例えば、回路基板上の導電トレース、導線等によって相互接続される。ハードウェアコンポーネントの1つは、デバイス検証の目的のため、残りのハードウェアコンポーネントと通信を行うために、マスタハードウェアコンポーネント102のように動作し、残りのハードウェアコンポーネントは、ハードウェアコンポーネント102からの信号を受信し、返信する、スレーブハードウェアコンポーネント104、106、108のように動作する。ハードウェアコンポーネント102、104、106、108は、いくつかの実施形態において、以下でより詳細に説明されるように、チェーン内に配置され、1つのハードウェアコンポーネントから次に実行されるチャレンジ及び/又はレスポンスを有する(図1Aを参照されたい)。図1Bを参照すると、他の実施形態において、ハードウェアコンポーネント104、106、108は、ハードウェアコンポーネント102と、ハードウェアコンポーネント104、106、108のそれぞれとの間の専用の双方向接続を介してハードウェアコンポーネント102と通信する。いくつかの実施形態において、ハードウェアコンポーネント102、104、106、108は、バス110(図1Cを参照されたい)を介して通信する。いくつかの実施形態では、バス110は、I2Cバスであり、ハードウェアコンポーネント102は、I2cバス上のマスタとして動作し、ハードウェアコンポーネント104、106、108への読み取り及び書き込みを実行し、デバイス検証のための応答を引き出して収集する。
いくつかの実施形態において、ハードウェアコンポーネント102は、データ処理デバイス100、例えば、CPU又はSoC用のブートローダを実行するハードウェアコンポーネントである。しかしながら、 他の実施形態において、ハードウェアコンポーネント102は、応答を引き出して収集するように構成されたデバイス100内の任意のハードウェアコンポーネントであってもよい。セットトップボックスを実装する処理デバイス100の例において、残りのハードウェアコンポーネント104、106、108は、例えば、条件付の受信モジュール、ビデオデスクランブラ、通信インタフェースであってもよい。もちろん、実施形態は、4つのハードウェアコンポーネント(チャレンジで起動する1ハードウェアコンポーネントと応答する3ハードウェアコンポーネント)に限定されず、例えば、2ハードウェアコンポーネント(1起動ハードウェアコンポーネントと1応答ハードウェアコンポーネント)、3ハードウェアコンポーネント(1起動ハードウェアコンポーネントと、2応答ハードウェアコンポーネント)、又は、4よりも大きいあらゆる数のハードウェアコンポーネント等の任意の数のハードウェアコンポーネントを含んでいてもよい。
図2を参照すると、データ処理デバイス100は、ステップ202でデバイス100のハードウェアコンポーネントにチャレンジを送信し、ステップ204でハードウェアコンポーネントから応答を受信し、ステップ206で応答を使用してデバイスのインテグリティを検証するように構成される。デバイスのインテグリティの検証は、例えば、応答と期待する応答とを比較することによる等、いくつかの手法で行われてもよい。ハードウェアコンポーネントの応答は、応答チェーン内の最後のハードウェアコンポーネントからの応答、1つ前の応答に依存する各応答(下記に詳細に記載される)、及び/又は、1又は複数の応答から導出された1又は複数のデバイス検証キー等の各ハードウェアコンポーネントからの応答のセットであってもよい。
図3を参照すると、いくつかの実施形態において、デバイス100は、ステップ302においてデバイス100内のハードウェアコンポーネントにチャレンジを送信し、ステップ304においてハードウェアコンポーネントからの応答を受信し、ステップ306においてミッションクリティカルな情報を復号する応答を使用するように構成される。ミッションクリティカルな情報は、暗号化された形式でデバイス100に格納されるが、デバイス100又はデバイス100の1態様が機能するために復号された形式で必要とされる情報である。ステップ308においてデバイスは、ミッションクリティカルな情報を、デバイスの初期化、デバイスの動作又はデバイスの初期化若しくは動作の1態様のために使用する。ハードウェアコンポーネントからの正しく無い応答である、例えば、1又は複数のハードウェアコンポーネントが改ざんされた場合、ミッションクリティカルな情報は、ステップ306において正しく復号されず、結果としてステップ308が失敗する。したがってステップ308は、ハードウェアコンポーネントが正しい応答を提供した場合にのみ実行されることが可能である。
この記載を通して、チャレンジは、例えば、数字、英数字ストリング、ビットシーケンス等の任意の適切なフォーマット又はベースである任意のデータ項目を意味し、典型的には、チャレンジの関数として、他のハードウェアコンポーネントによる応答を引き出すためのあるハードウェアコンポーネントから他のハードウェアコンポーネントへと送信されるデータとして理解される。応答は、例えば、チャレンジをハードウェアコンポーネントに特有のハードウェアコンポーネントキーと組み合わせ、例えば、連結することにより生成されてもよく、ハッシュ関数、例えば、MD5、SHA−1、SHA−2又はSHA−3を介して結果を渡してもよい。
応答がどのように有効かつ改ざんされていないハードウェアコンポーネントによって生成されているかについての知識に基づいて、応答が期待されるものであるか否かの検証することは、ハードウェアコンポーネントのインテグリティの検証を可能とする。
有効なハードウェアコンポーネントについての期待される応答は、各ハードウェアコンポーネントの応答挙動の事前の知識に基づいて決定されてもよく、又は、製造プロセスの一部としてセットアップフェーズ中に確立してもよく、1又は複数のチャレンジがハードウェアコンポーネントに送信され、取得される応答及び期待される応答(又はハッシュのようにその検証を許可する情報)は、典型的には、例えばハードウェアコンポーネント102内のデバイス100のワンタイムの書き込みの物理メモリ内に記憶されてもよい。
上述したように、いくつかの実施形態において、実際の応答は、システム検証のための期待される応答と比較されるが、いくつかの実施形態においては、期待される応答は、ミッションクリティカルな情報を暗号化することに使用される。前者の場合、応答は、それぞれのハッシュを使用して比較されることが可能であり、応答のハッシュをデバイス内に格納することによってのみ、期待される応答の発見のリスクを低減する。具体的には、期待される応答のハッシュは、格納され、実際の応答のハッシュと比較されることが可能であり、期待される応答を格納しないようにすることができる。後者の場合、ミッションクリティカルな情報は、デバイスの製造又はセットアップ中に、期待される応答を使用して、一度暗号化されることができ、暗号化された形式で格納される。その結果、期待される応答はデバイス100に格納される必要は無く、攻撃の可能性が排除される。あるいは、期待される応答は、ミッションクリティカルな情報を時々更新する必要がある場合には、格納されてもよい。したがって、デバイス内の複数のハードウェアコンポーネントからの(集合的な)応答又は個々の応答は、様々な方法で、複数のハードウェアコンポーネント/デバイスのインテグリティを検証するのに使用され得る。
データ処理デバイス100のブートシーケンスがファームウェアをロードするいくつかの実施形態が図4Aを参照して説明される。これらの実施形態のいくつかにおいて、ハードウェアコンポーネント102は、ステップ402においてブートシーケンスを開始し、実行する。ブートシーケンスの一部として、ハードウェアコンポーネント102は、ステップ404において、ハードウェアコンポーネント104、106、108にチャレンジを送信し、ステップ406において、応答を受信する。例えば、ハードウェアコンポーネント102は、ハードウェアコンポーネント104にチャレンジを送信し、ハードウェアコンポーネント104は、ハードウェアコンポーネント102に応答を返信する。その後、これは、ハードウェアコンポーネント106、108に対して繰り返される。ハードウェアコンポーネント106、108に対するチャレンジは、既に受信している応答(すなわち、それぞれハードウェアコンポーネント104、106からの応答)であってもよく、又は、各ハードウェアコンポーネントに対するチャレンジは、同一若しくは異なる独立したチャレンジであってもよい。あるいは、ハードウェアコンポーネント104は、その応答をハードウェアコンポーネント106にチャレンジとして送信してもよく、ハードウェアコンポーネント106がその応答をハードウェアコンポーネント108にチャレンジとして送信し、ハードウェアコンポーネント108がその応答をハードウェアコンポーネント102に返信してもよい。これについては、以下でさらに詳細に説明する。
ステップ408において、ハードウェアコンポーネント102は、応答を使用して暗号化されたファームウェアを復号し、続いて、ステップ410において、復号されたファームウェアを用いてブートシーケンスを続ける。もちろん、デバイス検証のチャレンジ応答部分を管理するハードウェアコンポーネントは、応答を利用し(ファームウェアを復号するこれらの実施形態において)、続いて、ミッションクリティカルな情報を使用する(復号されたファームウェアを用いてブートシーケンスを続ける実施形態においてハードウェアコンポーネントと同じハードウェアコンポーネントである必要がないことが理解される)。特定の実施形態及び要求に応じて、応答を使用し、及び、ミッションクリティカルな情報を復号することを使用するチャレンジ応答部分を管理することは、同一の、単一のハードウェアコンポーネントにおいて各タスクに対するそれぞれのハードウェアコンポーネントによって実行されてもよいし、又は、任意の数のハードウェアコンポーネント間で任意の適切な方法により配分されてもよい。
データ処理デバイス100の条件付きのアクセスモジュールがコンテンツをユーザに提示させるためにコンテンツを復号するコンテンツキーを要求するいくつかの実施形態が、図4Bを参照して記載される。ステップ402からステップ406は、図4を参照した上述と同様のものである。ハードウェアコンポーネント102(又は、より一般的にはデバイス100)は、ステップ412において、コンテンツキーを復号するために応答を使用し、ステップ414において、復号されたコンテンツキーを暗号化されたコンテンツを表示するために使用する。
ハードウェアコンポーネント102がチャレンジを送信し、ハードウェアコンポーネント104、106、108のそれぞれから応答を受信するいくつかの実施形態が、図5A及び図5Bを参照して記載される。ハードウェアコンポーネント102は、ステップ502において、他のハードウェアコンポーネント104、106、108の1つにチャレンジを送信する。ステップ504においてチャレンジは、当該他のハードウェアコンポーネントに受信され、ステップ506において応答を生成する。
当該他のハードウェアコンポーネントは、ステップ508において、ハードウェアコンポーネント102に応答を返信し、ステップ510においてそれが受信される。ステップ502から510は、全ての応答がハードウェアコンポーネント102により受信されるまで繰り返される。上述したように、チャレンジは相互に独立しているので、応答は相互に独立しており、デバイスのインテグリティを検証するために共有して使用される(チャレンジが送信され、応答がインターリーブ又はパラレルに受信される場合)か、又は、最初のチャレンジを除く全てのチャレンジが、以前のハードウェアコンポーネント(又はその応答から導出された)から受信した応答であってもよく、チャレンジされる最後のハードウェアコンポーネントからの応答からの応答をデバイスの検証に用いられてもよい。
ハードウェアコンポーネント102は、ステップ512において、例えば、1又は複数の応答からデバイス検証キーを生成することにより、1又は複数の応答をミッションクリティカルな情報を復号するために使用し、ステップ514において、上述したように、ミッションクリティカルな情報を使用する。ステップ512及び514は、デバイスのインテグリティを検証する1又は複数の応答を使用する任意のステップで置き換えてもよいことに理解されたい。
図5A、5Bを参照して上述した処理は、図1A、1B、1Cを参照して上述したアーキテクチャのいずれかで実装され得る。図1Aを参照して上述したチェーン接続の構成でこの処理を実装した特定の実施形態について、図6を参照して記載する。ハードウェアコンポーネント102は、マスタとして動作し、ハードウェアコンポーネント104、106、108のそれぞれは、ハードウェアコンポーネント102で開始し、ハードウェアコンポーネント102で終了するチェーンを形成するように接続され、それぞれ応答関数A、B、Cを実装する(I)。
ハードウェアコンポーネント102は、ハードウェアコンポーネント104にチャレンジを送信し、ハードウェアコンポーネント104は、当該チャレンジに応答関数Aを適用する。次に、応答は、単に応答を通過させるハードウェアコンポーネント104、106を介してハードウェアコンポーネント102へと返送される(II)。次に、ハードウェアコンポーネント102は、チャレンジを、チャレンジを通過させるハードウェアコンポーネント104を介してハードウェアコンポーネント106に送信する。ハードウェアコンポーネント106は、当該チャレンジに応答関数Bを適用し、応答は、応答を通過させるハードウェアコンポーネント108を介してハードウェアコンポーネント102へと返送される(III)。同様にして、ハードウェアコンポーネント108は、ハードウェアコンポーネント104、106を通過するチャレンジを受信し、ハードウェアコンポーネント108によって応答関数Cを適用されることにより生成される応答をハードウェアコンポーネント102へと返送する(IV)。次に、ハードウェアコンポーネント102は、当該応答(又は、場合によっては、最後の応答)を使用して、上述したようにデバイスのインテグリティを検証する(V)。いくつかの実施形態において、応答関数は、入力(チャレンジ)をハードウェアコンポーネントに特有のキーと組み合わせ、組み合わせのハッシュを生成するか、そうで無ければ、応答を上述したように生成する。
様々な物理層及びプロトコルは、上記したようなチェーン構成を実施することが可能であり、一例として、IEEE標準1149.1に規定されている。IEEE標準1149.1の仕様を使用して実装されうる特定の実施形態について、図7を参照して記載する。
図7を参照すると、ハードウェアコンポーネント104、106、108のそれぞれは、入力ピン702、出力ピン704、及び、入力ピン702と出力ピン704との間を接続することが可能な複数のシフトレジスタ706を有する。各後続ハードウェアコンポーネント、例えば、ハードウェアコンポーネント106の入力ピン702は、チェーン内の各先行ハードウェアコンポーネント、例えば、ハードウェアコンポーネント104の出力ピンと、データ線(導体)708により接続される。チェーン内の最後のハードウェアコンポーネント108の出力ピンは、データ線710によりハードウェアコンポーネント102のデータ入力Iに接続される。最初のハードウェアコンポーネントである、ハードウェアコンポーネント104の入力は、データ線712を介してハードウェアコンポーネント102のデータ出力Oに接続される。
各ハードウェアコンポーネント104、106、108は、ハードウェアコンポーネント102が各ハードウェアコンポーネントの命令シフトレジスタ(図示しない)に命令をロードすることが可能な第1モードを含む、いくつかのモードを有する。ハードウェアコンポーネント102は、ハードウェアコンポーネント104、106、108のピン702、704及びそれぞれの命令シフトレジスタを介して、その出力Oからその入力Iへとビットをシフトすることにより、そのように行うように構成される。第2モードにおいて、ハードウェアコンポーネント102は、データ、特にチャレンジを、各ハードウェアコンポーネント104、106,108内に現在ロードされている命令に関連するデータシフトレジスタにロードすることができる。ハードウェアコンポーネント102は、ハードウェアコンポーネント104、106、108のピン702、704及びそれぞれのデータシフトレジスタを介して、その出力Oをその入力Iへとビットをシフトすることにより、そのように行うように構成される。したがって、第1モードにおいて命令シフトレジスタにロードされた命令は、第2モードにおいてどのデータシフトレジスタのデータがシフトスルーされるかを決定するスイッチのように動作する。
ハードウェアコンポーネント104のデータシフトレジスタにデータがシフトされると、ハードウェアコンポーネント104のデータシフトレジスタ内の以前のデータは、ハードウェアコンポーネント106データシフトレジスタに漸進的にシフトされ、その他同様にシフトし、それに伴い、ハードウェアコンポーネント108のデータシフトレジスタ内のデータは、ハードウェアコンポーネント108のデータシフトレジスタからシフトアウトされ、ハードウェアコンポーネント102の入力Iへと戻ってくることに、理解されたい。第3モードにおいて、各ハードウェアコンポーネント104、106、108は、それぞれのデータシフトレジスタ内のデータを処理して応答を生成し、データシフトレジスタ内に当該応答を書き戻すようにされる。
各ハードウェアコンポーネント104、106、108におけるビットのシフト及びモードの変更は、ハードウェアコンポーネント102によって、モード選択線712によってハードウェアコンポーネント104、106、108のモード選択ピン714のそれぞれと接続されるハードウェアコンポーネント102のモード選択ピンMSにおける信号により、制御される。ハードウェアコンポーネント104、106、108のモードは、ステートマシンにより制御され、状態遷移は、ハードウェアコンポーネント104、106、108のクロックピン718にそれぞれにクロック線716により接続されるクロックピンCKにおけるクロック信号(先行及び/又は下降エッジにおいて)によってクロックされたモード選択ピンMSの値により、決定される。
いくつかの実施形態において、ハードウェアコンポーネント104、106、108は、IEEE標準1149.1仕様を実装し、マスタとして動作するハードウェアコンポーネント102は、そのMS及びCKピンにおいてIEEE標準1149.1により特定されるTMS及びTCK信号をハードウェアコンポーネント104、106、108に供給し、ハードウェアコンポーネント104、106、108のピン714、718は、それぞれIEEE1149.1にしたがったTMS及びTCKピンである。さらに、これらの実施形態において、ハードウェアコンポーネント102は、ハードウェアコンポーネント104(チェーン内の最初のハードウェアコンポーネント)のIEEE標準1149.1に規定されるTDIピン702と、そのOピンが接続され、ハードウェアコンポーネント108(チェーン内の最後のハードウェアコンポーネント)のIEEE標準1149.1に規定されるTDOピン704と、そのIピンが接続され、チェーンからのデータを戻すように受信する。これらの実装において、各ハードウェアコンポーネントは、IEEE標準1149.1に要求される最小の命令セットを実装する。いくつかの実施形態において、ハードウェアコンポーネント104、106、108は、部分的にIEEE標準1149.1準拠しており、最小の命令セットの一部のみが実装されているか、又は、実装されていない。ハードウェアコンポーネント102は、IEEE標準1149.1自体にしたがってTAPを実装する必要は無いが、IEEE標準1149.1を使用してTAPとして動作するハードウェアコンポーネント104、106、108との通信を駆動するマスタとしてのみ動作してもよい。もちろん、ハードウェアコンポーネント102は、
例えば、外部テストハードウェアコンポーネントのような追加的なハードウェアコンポーネントによるテスト目的で駆動される別個のTCK、TMS、TDI及びTDOピンを備えるTAPそれ自体もまた実装してもよい。このようないくつかの実施形態において、TCK、TMS、TDO及びTDIピンの1又は複数(又は全て)は、ハードウェアコンポーネント102のCK、MS、O及びIピンのうち関連する1つと同じであってもよく、コンポーネント102は、コンポーネント104、106、108からの応答を引き出す第1モードと、TAPのチェーン内のTAPとして動作し、これらのコンポーネントのTMS及びTCKピンを駆動しない第2モードを有していてもよい。例えば、コンポーネント102は、第2モードにおいてTCK、TMS及びTDOピンとしてCK、MS及びOピンを使用してもよく、チェーン内の先行するTAPに接続された別個のTDIピンを有し、第2モードにおいて、Iピン上の応答のリスンを停止してもよい。
IEEE標準1149.1の命令セットに準拠しているかどうかに拘わらず、いくつかの実施形態において、ハードウェアコンポーネント104、106、108は、命令(該当する場合)に対応するデータシフトレジスタ706内におけるチャレンジを処理するカスタム命令(「プロセスチャレンジ」)を実装し、チャレンジに対する応答を生成し、チャレンジの代わりにデータシフトレジスタへ当該応答を書き込む。いくつかの実施形態において、以下にさらに詳しく記載されるように、さらに、カスタム命令は、処理されているデータシフトレジスタ内のデータを引き起こすことなく、プロセスチャレンジ命令としてデータシフトレジスタを選択する、応答(「プロセスチャレンジホールド」)を保持する。いくつかの実施形態において、IEEE標準1149.1のBYPASS命令及び対応するシングルビットシフトレジスタが実装され、使用される。
図6及び図7を参照して説明した構成を使用し、図5A及び図5Bを参照して上述したプロセス(ハードウェアコンポーネント104、106、108からの応答を収集するハードウェアコンポーネント102)を実装するいくつかの実施形態のデバイスの状態について、図8を参照して記載する。これらの実施形態において、上述したように、チャレンジは、先行するハードウェアコンポーネントから受信した応答である後続のハードウェアコンポーネントに送信されるが、これらの実施形態は、先行するハードウェアコンポーネントからの応答を独立したチャレンジに置き換えることにより、各ハードウェアコンポーネントに独立したチャレンジを送信することに等しく適用可能であることを理解されたい。
第1状態において、ハードウェアコンポーネント102は、プロセスチャレンジ命令をハードウェアコンポーネント104の命令レジスタにシフトし、バイパス命令をハードウェアコンポーネント106、108の命令レジスタにシフトする。次に、ハードウェアコンポーネント102は、チャレンジをハードウェアコンポーネント104内のプロセスチャレンジ命令に関連するデータレジスタにシフトし、ハードウェアコンポーネント104からシフトされたビットは、ハードウェアコンポーネント106、108のバイパスデータレジスタを介してシフトされ、チェーンの出力は、ハードウェアコンポーネント102により破棄される。次に、プロセスチャレンジ命令は、ハードウェアコンポーネント104に関数Aの出力として応答を生成させ、第2状態への繊維中にシフトデータレジスタ(「a応答」)を書き込む。
第2デバイス状態において、ハードウェアコンポーネント102は、ヌル又はダミーデータを、ハードウェアコンポーネント104によって生成された応答をハードウェアコンポーネント102によりIにおいてキャプチャされたチェーンの出力にシフトするために、ハードウェアコンポーネントのいずれの命令を変更することなく、ハードウェアコンポーネント104のシフトデータレジスタにシフトする。次に、プロセスチャレンジ命令をハードウェアコンポーネント104からハードウェアコンポーネント106にシフトし、かつ、バイパス命令をハードウェアコンポーネント106からハードウェアコンポーネント108にシフトするプロセスにおいて、ハードウェアコンポーネント102は、バイパス命令をハードウェアコンポーネント104の命令レジスタにシフトする。ハードウェアコンポーネント102はさらに、第2状態においてハードウェアコンポーネント104から受信した応答をハードウェアコンポーネント104のバイパスデータシフトレジスタを介してハードウェアコンポーネント106にシフトし、デバイスの第3状態をもたらす。第3状態から第4状態への遷移において、次に、ハードウェアコンポーネント106は、応答を生成し、それをプロセスチャレンジ命令(「b応答」)に関連するデータシフトレジスタに書き込む。第2状態と同様に、第4状態において、次に、ハードウェアコンポーネント102は、ハードウェアコンポーネント106からの応答をシフトして入力Iへと戻し、図8に示す第5及び第6状態のハードウェアコンポーネント108と同様に処理を進める。
命令レジスタを通る命令をシフトするシーケンスは、上述したようないくつかの実施形態、すなわち、プロセスチャレンジ命令が1ハードウェアコンポーネントから次へとシフトさせるものであり、全てのハードウェアコンポーネントが同じプロセスチャレンジ命令を受信するものであるが、他の実施形態においては、ハードウェアコンポーネントのいくつか又は全てが互いに異なるプロセスチャレンジ命令を有し、命令レジスタのサイズがハードウェアコンポーネント間において異なるものである。それらの実施形態において、1ハードウェアコンポーネントから次へとプロセスチャレンジ命令をシフトすることよりも、各ハードウェアコンポーネントは、ハードウェアコンポーネントのチェーンを通して、ハードウェアコンポーネント102からの命令ビットをシフトすることによって、それ自体の特定のプロセスチャレンジ命令を受信することを可能とする。
第2、第4、第6状態において、ハードウェアコンポーネント104、106、108はそれぞれ、プロセスチャレンジ命令がロードされている間にデータレジスタにプッシュされたヌル又はダミーデータを使用した未使用の応答を生成することに注意されたい。これを防止するために、例えば、ハードウェアコンポーネントによって正確な応答状態を維持することを可能とするために、上述の第2、第4、第6状態において、上述したようなプロセスチャレンジホールド命令がプロセスチャレンジ命令の代わりに使用される。
プロセスチャレンジホールド命令を使用する代わりに、いくつかの実施形態においては、プロセスチャレンジに関連するデータシフトレジスタは、チャレンジ/応答のためのビットに加えて、データシフトレジスタの内容がデータシフトレジスタの更新時において処理されるか否かを示す追加ビットを有する。具体的には、追加ビットを含むチャレンジが最初にデータシフトレジスタにプッシュされると、追加ビットは、チャレンジが処理されることを示す値、例えば、1、にセットされる。データシフトレジスタを更新すると、ハードウェアコンポーネントは、追加ビットを読み取り、チャレンジが処理される値から決定し、チャレンジを処理してデータシフトレジスタに応答を書き戻し、追加ビットの値をフリップする。次の更新時には、新しいチャレンジがデータシフトレジスタにプッシュされていなければ、追加ビットはフリップされた値のままであり、ハードウェアコンポーネントが次の更新中(命令レジスタ内にまだプロセスチャレンジ命令がある)にデータシフトレジスタ内のデータを読み取ると、追加ビットの負リップされた値が検出されたことに応答して、ハードウェアコンポーネントによって応答のチャレンジ及び書き込みの処理が抑制される。もちろん、内部プロセスを追跡する他の方法/状態を処理しない方法も同様に可能となることは理解されたい。
図9を参照し、各応答が全ての以前の応答及びチャレンジに依存するように、チャレンジ応答のチェーンが引き出される実施形態を記載する。これらの実施形態は、図1A、図1B、及び、図1Cを参照して上述されたアーキテクチャのいずれかを用いて実装され得る。例えば、応答は、ハードウェアコンポーネント104からハードウェアコンポーネント106へとバス110を介して(図1Cを参照)、又は、ハードウェアコンポーネント104からハードウェアコンポーネント106へと直接的に(図1Aを参照)経路を取ることができる。後者は、以下でより詳細に説明する。
ステップ902において、マスタ、例えば、ハードウェアコンポーネント102は、チェーン内の最初のハードウェアコンポーネント、例えば、ハードウェアコンポーネント104にチャレンジを送信する。ステップ904において、ハードウェアコンポーネント104は、ハードウェアコンポーネント102からチャレンジを受信し、応答を生成し、当該応答は、チェーン内の次のハードウェアコンポーネント、この例においては、ハードウェアコンポーネント106に送信される。ステップ906において、チェーン内の次のハードウェアコンポーネントは、チェーン内の前のハードウェアコンポーネントからの応答を受信し(例えば、ハードウェアコンポーネント106がハードウェアコンポーネント104から応答を受信する)、その応答を生成し、次のハードウェアコンポーネントに送信する。これは、チェーン内の最後のハードウェアコンポーネントが前のハードウェアコンポーネントから受信し、その応答を生成するまで繰り返され、その応答がマスタまで返送される(この例ではハードウェアコンポーネント108がその応答を生成し、ハードウェアコンポーネント102に送信する)。
マスタは、ステップ910において、チェーン内の最後のハードウェアコンポーネントから応答を受信し、ステップ912において当該応答を使用してミッションクリティカルな情報を復号し、そして、ステップ914においてミッションクリティカルな情報が使用される。上記のように、ステップ912、914は、データ処理デバイス100内のマスタハードウェアコンポーネント及び/又は異なるハードウェアコンポーネントのいずれかにおいて、デバイスのインテグリティを検証するために、当該応答が使用される任意のステップで置き換えることが可能であることについて理解されたい。同様に応答は、上記の方法のいずれかで生成することが可能である。
図10を参照すると、図1Aを参照して上述したアーキテクチャにおいて図9を参照して上述したプロセスを実装するいくつかの実施形態において、ハードウェアコンポーネント102は、マスタとして動作し、ハードウェアコンポーネント104、106、108は、それぞれチャレンジ応答関数A、B、Cを実装する(I)。ハードウェアコンポーネント102は、ハードウェアコンポーネント104にチャレンジを送信し、ハードウェアコンポーネントに関数Aを適用して応答を生成する(II)。次に、応答は、ハードウェアコンポーネント104からハードウェアコンポーネント106に送信され、その応答関数Bがハードウェアコンポーネント104から受信した応答に適用される(III)。ハードウェアコンポーネント106において応答関数Bにより生成された応答は、次に、ハードウェアコンポーネント108に送信され、応答関数Cが受信した応答に適用される(IV)。ハードウェアコンポーネント108により生成され、チャレンジ及びハードウェアコンポーネント104、106からの応答に依存する応答は、次にハードウェアコンポーネント102に送信され、使用される(V)。
いくつかの実施形態において、図10を参照して上記した実施形態は、ハードウェアコンポーネント104、106、108を介したシフト命令及びチャレンジ/応答に基づいて、図7を参照した上述のチェーン状のハードウェアコンポーネントの構成を使用して実装される。このような実施形態の動作を、図11を参照して記載する。具体的には、デバイスの第1状態において、プロセスチャレンジ命令は、各ハードウェアコンポーネント104、106、108の命令レジスタにシフトされ、チャレンジは、ハードウェアコンポーネント104のデータシフトレジスタにシフトされ、ダミー又はヌルデータは、ハードウェアコンポーネント106、108のデータシフトレジスタに、チェーンを介してシフトされる。第1デバイス状態から第2デバイス状態への遷移において、ハードウェアコンポーネント104は、その応答を生成し、それをそのデータシフトレジスタに書き込む。ハードウェアコンポーネント106、108もまた、ロードされたプロセスチャレンジ命令を有しているので、データシフトレジスタ内のデータに対する応答を生成するが、これは、未使用の応答であり、ビットがチェーンを介してシフトされると破棄される。
第2デバイス状態において、十分な数のビットがハードウェアコンポーネント104のデータレジスタにシフトされ、ハードウェアコンポーネント104によって生成された応答がハードウェアコンポーネント106のデータシフトレジスタにシフトする。ハードウェアコンポーネント104と同様に、第2デバイス状態から第3デバイス状態への遷移において、ハードウェアコンポーネント106は、そのデータレジスタの内容(ハードウェアコンポーネント104により生成された応答)に応答を生成し、それをそのデータレジスタに書き込む。第3デバイス状態において、いくつかのビットは、いくつかのビットが再度プッシュされ、ハードウェアコンポーネント106の応答をハードウェアコンポーネント108のデータレジスタに移動させ、次に、更新してその応答をそのデータレジスタに書き込み、続いて、第4デバイス状態において、さらなる数のビットがチェーンにプッシュされ、ハードウェアコンポーネント108により生成された応答をハードウェアコンポーネント108の出力にプッシュし、ハードウェアコンポーネントのチェーンの応答としてハードウェアコンポーネント102のIピンにおいてキャプチャされるようにする。
図11を参照して上述されたアプローチは、チェーンがプロセスチャレンジ命令で一度にロードされ、チャレンジ/応答が1ハードウェアコンポーネントから次へと移動するたびに全て実行されるという単純さの利点を有する。しかしながら、これは、排気されるプロセスチャレンジ命令の実行の複数の反復があることを意味する。これは、チェーン内のハードウェアコンポーネントにおける処理負荷が懸念され、又は、ハードウェアコンポーネントが内部状態を維持する必要がある、例えば、ブートサイクルにおいてのみプロセスチャレンジハードウェアコンポーネントの実行を1回だけ強いられ、若しくは、所与のハードウェアコンポーネントのそれぞれの後続の応答をそのハードウェアコンポーネントの1又は複数の前の応答に依存させる必要がある場合には、望ましくない。
1つのアプローチにおいて、図12を参照して記載すると、命令のシーケンスは、対応するデータレジスタに前のハードウェアコンポーネントからの応答がロードされる前に、各ハードウェアコンポーネントがプロセスチャレンジ命令を実行しないように修正される。この目的のために、図11を参照して上述された第1デバイス状態は、ハードウェアコンポーネント104(すなわち、チェーン内の最初のハードウェアコンポーネント)のみにプロセスチャレンジ命令をロードし、ハードウェアコンポーネント106、108にIEEE標準1149.1を参照して上述したバイパス命令をロードすることによって修正される。
第2デバイス状態において、さらなるプロセスチャレンジ命令がハードウェアコンポーネント104の命令レジスタにシフトされ、それにより、プロセスチャレンジ命令がハードウェアコンポーネント104からハードウェアコンポーネント106の命令レジスタにシフトする。ハードウェアコンポーネント104からの応答は、以前のように、ハードウェアコンポーネント106のデータシフトレジスタにシフトされる。同様に、第3デバイス状態において、さらなるプロセスチャレンジ命令が命令レジスタのチェーンにシフトされ、プロセスチャレンジ命令がハードウェアコンポーネント106からハードウェアコンポーネント108の命令シフトレジスタにシフトされる。ハードウェアコンポーネント106のデータシフトレジスタからの応答は、再度、ハードウェアコンポーネント108のデータシフトレジスタにシフトされる。結果として、ハードウェアコンポーネント104は、状態1から状態2への遷移におけるその使用された(最初の)応答を生成し、ハードウェアコンポーネント106は、状態2から状態3への遷移におけるその使用された(最初の)応答を生成し、第3から第4デバイス状態への遷移において、ハードウェアコンポーネント108は、その使用された(最初の)応答を生成してそれをそのデータレジスタに書き込み、その後、ハードウェアコンポーネントの出力を通じてプッシュアウトされ、ハードウェアコンポーネント102のIピンにおいて、第4デバイス状態におけるチェーンの応答としてキャプチャされる。
図13を参照して記載されるさらなるアプローチにおいて、命令のシーケンスは、チェーンを介する応答の横断中に各ハードウェアコンポーネントがプロセスチャレンジ命令を1回だけ実行するように修正される。具体的には、第1デバイス状態は、図12を参照した上述と同じであるが、第2デバイス状態において、プロセスチャレンジホールド命令がプロセスチャレンジ命令の代わりにハードウェアコンポーネント104の命令シフトレジスタにシフトされる。プロセスチャレンジホールド命令は、プロセスチャレンジ命令と同じデータレジスタを選択するが、それ以上の効果は生じさせない。プロセスチャレンジホールド命令をハードウェアコンポーネント104の命令シフトレジスタにシフトすることは、ハードウェアコンポーネント104からハードウェアコンポーネント106にプロセスチャレンジ命令をシフトする。第3、第4デバイス状態において、バイパス命令は、ハードウェアコンポーネント104の命令シフトレジスタにシフトされ、隣接したプロセスチャレンジホールド及びプロセスチャレンジ命令がシフトする度に、チェーンを下ってさらにシフトすることが、図13の検査から理解されるであろう。
第1デバイス状態後の各デバイス状態において、いくつかのヌル又はダミービットは、最初のハードウェアコンポーネント104のデータシフトレジスタにシフトされ、1状態から次への遷移において、それぞれのハードウェアコンポーネントにより生成されたチャレンジを次のハードウェアコンポーネントにシフトさせ、すなわち、第2デバイス状態において応答をハードウェアコンポーネント104からハードウェアコンポーネント106へと、第3デバイス状態においてハードウェアコンポーネント106からハードウェアコンポーネント108へと、第4デバイス状態においてハードウェアコンポーネント108からハードウェアコンポーネント102のIピンにおいてキャプチャされるように、シフトする。このようにして、プロセスチャレンジ命令は、1つのデバイス状態から次ぎのデバイス状態への遷移中において、あるハードウェアコンポーネントにのみ存在するので、チェーン内のハードウェアコンポーネントは、プロセスチャレンジ命令を、チャレンジ/応答がチェーンを経て遷移する時にただ1度実行する。
上述した実施形態の場合と同様に、プロセスチャレンジホールド命令の使用は、図8を参照して記載した実施形態について詳細に上述したように、データシフトレジスタの内容に対する応答を生成してデータシフトレジスタに書き込むべきか否かを示す追加ビットをデータシフトレジスタへ追加することで置き換えることができることに理解されたい。データシフトレジスタ内の追加ビットを使用する実施形態においては、応答は、ハードウェアコンポーネント102が適切に設定された追加ビットを含む新たなチャレンジを1又は複数のデータシフトレジスタにプッシュすることにより追加ビットがリセットされる(応答が生成され書き込まれるべきことを示すその値になる)まで、命令に関係なく1度だけ生成される。
以下の実施形態もまた、含まれる。
1 複数のデータ処理ハードウェアコンポーネントを備え、データ処理ハードウェアコンポーネントは、第1ハードウェアコンポーネント及び1又は複数の残りのハードウェアコンポーネントを備え、
第1ハードウェアコンポーネントは、チャレンジを1又は複数の残りのハードウェアコンポーネントに送信するように構成され、
それぞれの残りのハードウェアコンポーネントは、それぞれのチャレンジを受信して、チャレンジを処理して応答を生成するように構成され、
デバイスは、1又は複数の残りのハードウェアコンポーネントにより生成された1又は複数の応答に基づいて、デバイスのインテグリティを検証するように構成される、
データ処理デバイス。
2 暗号化された形式のミッションクリティカルな情報を格納するメモリを備え、
デバイス又はデバイスの1態様は、復号した形式のミッションクリティカルな情報を、機能するように要求し、デバイスは、1又は複数の残りのハードウェアコンポーネントにより生成された1又は複数の応答に基づいた1又は複数の検証キーを用いて、暗号化されたミッションクリティカルな情報を復号するように構成される、
項目1に記載のデータ処理デバイス。
3 ミッションクリティカルな情報は、デバイス又はデバイスの1態様が機能するために要求されるファームウェアを備える、項目2に記載のデータ処理デバイス。
4 ミッションクリティカルな情報は、ソフトウェア、BIOS、オペレーティングシステムカーネル、ハードウェアコンポーネントドライバ、ブートローダ及びコンテンツ復号キーを1又は複数備える、項目2又は項目3に記載のデータ処理デバイス。
5 条件付きアクセスデバイスを備え、ミッションクリティカルな情報は、条件付きアクセスデバイスが、データ処理装置を使用してコンテンツ消耗品へのアクセスを制御するための復号キーを備える、項目2、3又は4に記載のデータ処理装置。
6 ビデオデスクランブラを備え、ミッションクリティカルな情報は、ビデオデスクランブラがビデオ信号をデスクランブルするためのデスクランブルキーを備える、項目2から5のいずれかに記載のデータ処理デバイス。
7 最初の残りのハードウェアコンポーネントは、そのチャレンジを第1ハードウェアコンポーネントから受信するように構成され、
各後続の残りのハードウェアコンポーネントによって受信されるチャレンジは、それぞれの先行する残りのハードウェアコンポーネントによって生成される応答であり、
最後の残りのハードウェアコンポーネントは、その応答を第1ハードウェアコンポーネントに送信するように構成され、
デバイスは、残りのハードウェアコンポーネントのうち最後のものから受信した応答を使用してデバイスのインテグリティを検証するように構成される、
項目1から項目6のいずれかに記載のデータ処理装置。
8 各後続の残りのハードウェアコンポーネントは、それぞれの先行する残りのハードウェアコンポーネントによって生成された応答を、それぞれの先行する残りのハードウェアコンポーネントから受信するように構成されている、項目7に記載のデータ処理装置。
9 各残りのハードウェアコンポーネントは、その応答を生成するためにそのチャレンジに非推移的な関数を適用するように構成されている、項目7又は項目8に記載のデータ処理装置。
10 残りのハードウェアコンポーネントは、
第1ハードウェアコンポーネントの出力に接続された、チェーン内の最初の残りのハードウェアコンポーネントの入力と、
チェーン内のそれぞれの先行する残りのハードウェアコンポーネントの出力に接続された、チェーン内の各後続の残りのハードウェアコンポーネントの入力と、
チェーン内の残りのハードウェアコンポーネントの最後のものの出力に接続された第1ハードウェアコンポーネントの入力と、
に、チェーン内において接続され、
第1ハードウェアコンポーネントは、
チェーン内の最初の残りのハードウェアコンポーネントの入力にチャレンジを送信し、
第1ハードウェアコンポーネントの入力において、残りのハードウェアコンポーネントによって生成された1又は複数の応答を受信するように構成される、
項目1から項目9のいずれかに記載のデータ処理デバイス。
11 各残りのハードウェアコンポーネントは、
命令セットの命令を受信するための命令シフトレジスタであって、チャレンジを処理し、応答を生成するための少なくとも1つのプロセスチャレンジ命令を含む命令セットと、
プロセスチャレンジ命令に対応してチャレンジを受信するためのデータシフトレジスタと、
を備え、
残りの各ハードウェアコンポーネントは、
第1モードでは、その入力から命令シフトレジスタに一度に1ビットシフトし、命令シフトレジスタからその出力に一度に1ビットシフトし、
第2モードでは、その入力からデータシフトレジスタに一度に1ビットシフトし、データシフトレジスタからその出力に一度に1ビットシフトし、
第3モードでは、プロセスチャレンジ命令が、命令シフトレジスタ内にあるときに、データシフトレジスタ内のチャレンジを読み出し、チャレンジを処理して応答を生成し、その応答をデータシフトレジスタに書き込む、
ように構成され、
第1ハードウェアコンポーネントは、残りのハードウェアコンポーネントのモードを、
それぞれの命令を命令シフトレジスタにシフトし、
チャレンジをデータシフトレジスタにシフトし、
残りのハードウェアコンポーネントに、応答を生成するためにチャレンジを処理させ、
データシフトレジスタからの応答をシフトし、それにより、1又は複数の応答を残りのハードウェアコンポーネントから受信する、
制御をするように構成され、
第1ハードウェアコンポーネントは、全ての残りのハードウェアコンポーネントのモードを全ての残りのハードウェアコンポーネントに共通のモード制御線を介して一緒に制御するように構成される、
項目10に記載のデータ処理デバイス。
12 第1ハードウェアコンポーネントは、
チャレンジを、最初の残りのハードウェアコンポーネントのデータシフトレジスタにビット単位でシフトさせ、
最初の残りのハードウェアコンポーネントに、チャレンジを処理させ、そのデータシフトレジスタにその応答を書き込ませ、
チェーン内のそれぞれの先行するハードウェアコンポーネントのデータシフトレジスタからの応答を、チェーン内のそれぞれの後続のデータシフトレジスタにビット単位でシフトさせ、
各後続のハードウェアコンポーネントに、そのデータシフトレジスタへの応答を書き込むチャレンジとして、データシフトレジスタ内のそれぞれの先行するハードウェアコンポーネントからの応答を処理させ、
チェーン内の最後の残りのハードウェアコンポーネントのそれぞれのデータシフトレジスタに書き込まれた応答を、最初のハードウェアコンポーネントの入力にビット単位でシフトさせる、
項目11に記載のデータ処理デバイス。
13 最初のハードウェアコンポーネントは、チェーン内のそれぞれの先行するハードウェアコンポーネントがその応答をそのデータレジスタに書き込まれる前ではないときに、プロセスチャレンジ命令をチェーン内の後続の残りのハードウェアコンポーネントによって実行させるように構成される、項目12に記載のデータ処理デバイス。
14 第1ハードウェアコンポーネントは、チェーン内の各残りのハードウェアコンポーネントに、チャレンジをチェーン内の最初の残りのハードウェアコンポーネントのデータシフトレジスタにシフトすることと、チェーン内の最後の残りのハードウェアコンポーネントのデータシフトレジスタに書き込まれた応答を第1ハードウェアコンポーネントにシフトすることとの間に、プロセスチャレンジ命令をただ1度実行させるように構成される、項目12に記載のデータ処理デバイス。
15 複数のハードウェアコンポーネントは、集積回路、マイクロプロセッサ、中央処理装置、システムオンチップ、条件付きアクセスコンポーネント、デスクランブラコンポーネント、グラフィックコンポーネント、ビデオコンポーネント及びフィールドプログラマブルゲートアレーコンポーネントの1又は複数を備える、項目1から項目14のいずれかに記載のデータ処理デバイス。
16 残りのハードウェアコンポーネントは、チャレンジを処理して、チャレンジと残りのハードウェアコンポーネントに関連するハードウェアコンポーネントキーとを併せたハッシュ、望ましくは、暗号化ハッシュ関数、例えば、MD5、SHA−0、SHA−1、SHA−2又はSHA−3を使用したハッシュを備える応答を生成する、項目1から項目15のいずれかに記載のデータ処理デバイス。
17 物理層内に最初の及び残りのハードウェアコンポーネント間、並びに、残りのハードウェアコンポーネント間の通信が実装され、IEEE1149.1(JTAG)仕様書に準拠し、各残りのハードウェアコンポーネントは、TMS、TCK、TDI及びTDOピン、並びに、仕様書に準拠したステートマシンを備える、項目1から項目16のいずれかに記載のデータ処理デバイス。
18 1又は複数のチャレンジを、複数のハードウェアコンポーネントに送信するステップと、
複数のハードウェアコンポーネントから応答を受信するステップと、
データ処理装置のインテグリティを検証するために、応答を使用するステップと、
を備える、複数のハードウェアコンポーネントを有するデータ処理デバイスのインテグリティを検証する方法。
19 複数のハードウェアコンポーネントからの応答は、それぞれの各複数のハードウェアコンポーネントからの応答を組み合わせる、項目18に記載の方法。
20 応答を受信するステップは、複数のハードウェアコンポーネントの1つから応答を受信するステップを備え、複数のハードウェアコンポーネントの1つからの応答は、他の複数のハードウェアコンポーネントからの応答のそれぞれに依存する、項目18又は項目19に記載の方法。
21 複数のハードウェアコンポーネントは、シーケンス内の応答を提供し、シーケンスの後続のハードウェアコンポーネントは、チャレンジとして一連の事前のハードウェアコンポーネントの応答を受信し、受信したチャレンジに反応する応答を生成する、項目20に記載の方法。
22 受信したチャレンジに反応する応答は、受信したチャレンジの非推移的な関数として生成される、項目21に記載の方法。
23 複数のハードウェアコンポーネントの応答を使用して、デバイス又はデバイスの1態様の操作のための復号された形式で要求される情報を復号するステップを備える、項目18から項目22のいずれかに記載の方法。
24 複数のハードウェアコンポーネントは、集積回路、マイクロプロセッサ、中央処理装置、システムオンチップ、条件付きアクセスコンポーネント、デスクランブラコンポーネント、グラフィックコンポーネント、ビデオコンポーネント及びフィールドプログラマブルゲートアレーコンポーネントの1又は複数を備える、項目18から項目23のいずれかに記載の方法。
25 チャレンジから応答を生成する、応答を生成するステップは、チャレンジをハードウェアコンポーネントキーと合わせてハッシュ化するステップを備え、望ましくは、暗号化ハッシュ機能、例えば、MD5、SHA−0、SHA−1、SHA−2又はSHA−3を使用するステップである、項目18から項目24に記載の方法。
いくつかの実施形態の上記に特定した記載を読むことにより、上記の実施形態及び特徴の多くの変形、修正及び並置が可能であり、添付の特許請求の範囲内であることが当業者には明らかであろう。特に、開示された物理的実装及びプロトコルのいずれかを使用して、複数のハードウェアコンポーネントからの応答(個々の応答又は残りの応答に応じた応答)を収集するための多くのアプローチが説明されていることは明らかであろう。この応答は、応答がどのように収集されるか、又は、応答を収集するための使用されるインフラストラクチャに拘わらず、上記に開示された様々な方法のいずれかにおいて使用することが可能である。

Claims (15)

  1. ャレンジを1又は複数の他回路に送信するように構成され第1回路と、
    それぞれの前記他の回路は、それぞれのチャレンジを受信し、当該チャレンジを処理して応答を生成するように構成され、
    前記第1回路は、1又は複数の前記他の回路により生成された1又は複数の応答に基づいてデータの前記処理のインテグリティの検証をするように構成されており
    それぞれの1又は複数の他の回路は、
    チャレンジを処理し、応答を生成するプロセスチャレンジ命令を少なくとも1つ含む命令セットの命令を受信する、命令シフトレジスタと、
    前記プロセスチャレンジ命令に関連し、チャレンジを受信する、データシフトレジスタと、
    を備え、
    それぞれの前記他の回路は、第1モードにおいて、前記他の回路の入力から前記命令シフトレジスタに1度に1ビットシフトし、前記命令シフトレジスタから前記他の回路の出力に1度に1ビットシフトする、
    データ処理デバイス。
  2. ミッションクリティカルな情報を暗号化された形式で格納するメモリを備え、
    前記第1回路又は前記第1回路の1態様は、前記ミッションクリティカルな情報を復号された形式で機能するように要求し、
    前記第1回路は、暗号化された前記ミッションクリティカルな情報を、1又は複数の前記他の回路によって生成された1又は複数の前記応答に基づいた1又は複数のデバイス検証キーを用いて復号する、
    請求項1に記載のデータ処理デバイス。
  3. 前記ミッションクリティカルな情報は、ソフトウェア、前記第1回路又は前記第1回路の1態様に要求される機能するファームウェア、バイオス、オペレーティングシステムカーネル、デバイスドライバ、ブートローダ及びコンテンツ復号キーの1又は複数備える、請求項2に記載のデータ処理デバイス。
  4. 条件付きアクセス回路を備え、
    記ミッションクリティカルな情報は、前記データ処理デバイスを使用して消費することができるコンテンツへのアクセスを前記条件付きアクセス回路が制御するための復号キーを備える、請求項2又は請求項3のいずれかに記載のデータ処理デバイス。
  5. 最初の他の回路は、前記第1回路から前記チャレンジを受信するように構成され、
    それぞれの後続の他の回路により受信されたチャレンジは、先行する他の回路にそれぞれ生成される前記応答であり、
    最後の他の回路は、前記応答を前記第1回路へ送信するように構成され、
    前記第1回路は、前記第1回路の前記インテグリティを、前記最後の他の回路から受信した前記応答を用いて検証する、ように構成される、
    請求項1乃至請求項4のいずれかに記載のデータ処理デバイス。
  6. 各前記他の回路は、非遷移関数前記チャレンジに適用し、前記応答を生成するように構成される、請求項5に記載のデータ処理デバイス。
  7. 前記他の回路は、チェーン内において、
    前記第1回路の出力に接続される前記チェーンの最初の他の回路の入力と、
    前記チェーン内のそれぞれ先行する他の回路の出力に接続される前記チェーンの各後続の回路の入力と、
    前記チェーン内の前記他の回路の最後の1つの出力に接続される前記第1回路の入力と、
    に接続され、
    前記第1回路は、
    チャレンジを前記チェーン内の前記最初の他の回路の前記入力に送信し、
    前記第1回路の前記入力において、前記他の回路により生成される前記応答の1又は複数を受信する、
    ように構成されている、
    請求項1乃至請求項6のいずれかに記載のデータ処理デバイス
  8. それぞれの前記他の回路は、
    第2モードにおいて、前記他の回路の入力から前記データシフトレジスタに1度に1ビットシフトし、前記データシフトレジスタから前記他の回路の出力に1度に1ビットシフトし、
    第3モードにおいて、プロセスチャレンジ命令が前記命令シフトレジスタにある場合に、前記データシフトレジスタ内の前記チャレンジを読み出し、前記チャレンジを処理して応答を生成し、前記応答を前記データシフトレジスタに書き込みする、
    ように構成され
    前記第1回路は、
    前記他の回路モードを前記第1モードから前記第3モードのいずれかに制御し、
    それぞれの命令を前記命令シフトレジスタにシフトし、
    チャレンジを前記データシフトレジスタにシフトし、
    前記他の回路に、前記チャレンジを処理させて応答を生成させ、
    応答を前記データシフトレジスタにシフトして、前記他の回路から1又は複数の応答を受信する、
    ように構成され、
    前記第1回路は、
    全ての前記他の回路のモードを、全ての他の回路に共通するモード制御ラインを介して一緒に制御するように構成される、
    請求項7に記載のデータ処理デバイス。
  9. 前記第1回路は、
    チャレンジを前記最初の他の回路の前記データシフトレジスタにビット単位でシフトさせ、
    前記最初の他の回路に、前記チャレンジを処理させて前記最初の他の回路の応答を前記最初の他の回路のデータシフトレジスタに書き込ませ、
    前記チェーン内のそれぞれの前記先行する回路の前記データシフトレジスタからの前記応答を、前記チェーン内の各後続の他の回路の前記データシフトレジスタにビット単位でシフトさせ、
    各後続の回路に、前記データシフトレジスタへの前記応答を書き込むチャレンジとして、それぞれの前記先行する回路からの前記応答を処理させ、
    前記チェーン内の前記最後の他の回路のそれぞれの前記データシフトレジスタに書き込まれた前記応答を、前記第1回路にビット単位でシフトさせる、
    ように構成される、請求項8に記載のデータ処理デバイス。
  10. 前記第1回路は、前記チェーン内のそれぞれの前記先行する回路前記応答を前記データレジスタに書き込まれる前ではないときに、プロセスチャレンジ命令を、前記チェーン内の各後続の他の回路に実行させるように構成される、請求項9に記載のデータ処理デバイス。
  11. 前記第1回路は、前記チェーン内の各他の回路に、前記チャレンジを前記チェーン内の前記最初の他の回路の前記データシフトレジスタにシフトすることと、前記チェーン内の前記最後の他の回路の前記データシフトレジスタに書き込まれた前記応答を前記第1回路にシフトすることの間に、プロセスチャレンジ命令を1度だけ実行させるように構成される、請求項9に記載のデータ処理デバイス。
  12. 物理層内に前記最初の及び他の回路との間、並びに、他の回路間における通信が実装され、IEEE1149.1(JTAG)仕様書に準拠し、各他の回路は、TMS、TCK、TDI及びTDOピン、並びに、仕様書に準拠したステートマシンを備える、請求項乃至請求項11のいずれかに記載のデータ処理デバイス。
  13. 第1回路が、チャレンジを1又は複数の他回路に送信し、
    それぞれの前記他の回路が、それぞれのチャレンジを受信し、当該チャレンジを処理して応答を生成し、
    前記第1回路が、1又は複数の前記他の回路により生成された1又は複数の応答に基づいてデータの前記処理のインテグリティの検証する、
    方法であって、
    それぞれの1又は複数の他の回路は、
    チャレンジを処理し、応答を生成するプロセスチャレンジ命令を少なくとも1つ含む命令セットの命令を受信する、命令シフトレジスタと、
    前記プロセスチャレンジ命令に関連し、チャレンジを受信する、データシフトレジスタと、
    を備え、
    それぞれの前記他の回路は、第1モードにおいて、前記他の回路の入力から前記命令シフトレジスタに1度に1ビットシフトし、前記命令シフトレジスタから前記他の回路の出力に1度に1ビットシフトする、
    方法。
  14. 前記応答を受信するステップは、前記第1回路が、前記複数の回路の1つから応答を受信するステップを備え、前記複数の回路の1つからの前記応答は、他の前記複数の回路からの応答のそれぞれに依存し、前記複数の回路は、シーケンス内の応答をそれぞれ提供し、前記シーケンス内の後続の回路は、チャレンジとして、前記シーケンス内の直前の回路の前記応答を受信し、前記受信されたチャレンジに応答する前記応答は、前記受信したチャレンジの非遷移関数として生成される、請求項13に記載の方法。
  15. 前記第1回路が、前記複数の回路の前記応答を用いて、いずれかの回路における操作をするための復号された形式である情報復号するステップを備える、請求項13又は請求項14に記載の方法。
JP2018531586A 2015-12-16 2016-12-13 ハードウェアインテグリティチェック Active JP6949843B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1522244.1 2015-12-16
GBGB1522244.1A GB201522244D0 (en) 2015-12-16 2015-12-16 Hardware integrity check
PCT/EP2016/080859 WO2017102766A1 (en) 2015-12-16 2016-12-13 Hardware integrity check

Publications (2)

Publication Number Publication Date
JP2018537793A JP2018537793A (ja) 2018-12-20
JP6949843B2 true JP6949843B2 (ja) 2021-10-13

Family

ID=55274883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018531586A Active JP6949843B2 (ja) 2015-12-16 2016-12-13 ハードウェアインテグリティチェック

Country Status (11)

Country Link
US (1) US20180367317A1 (ja)
EP (1) EP3391276B1 (ja)
JP (1) JP6949843B2 (ja)
CN (2) CN108701191B (ja)
BR (1) BR112018012130A2 (ja)
CA (1) CA3007579A1 (ja)
ES (1) ES2938771T3 (ja)
GB (1) GB201522244D0 (ja)
MX (2) MX2018007302A (ja)
SG (1) SG11201804841VA (ja)
WO (1) WO2017102766A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10897459B2 (en) * 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using encryption key
US10897360B2 (en) 2017-01-26 2021-01-19 Microsoft Technology Licensing, Llc Addressing a trusted execution environment using clean room provisioning
US10972265B2 (en) 2017-01-26 2021-04-06 Microsoft Technology Licensing, Llc Addressing a trusted execution environment
JP6972721B2 (ja) * 2017-07-18 2021-11-24 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
US10826690B2 (en) * 2017-12-28 2020-11-03 Intel Corporation Technologies for establishing device locality
CN110677250B (zh) 2018-07-02 2022-09-02 阿里巴巴集团控股有限公司 密钥和证书分发方法、身份信息处理方法、设备、介质
CN110795742B (zh) 2018-08-02 2023-05-02 阿里巴巴集团控股有限公司 高速密码运算的度量处理方法、装置、存储介质及处理器
CN110795774B (zh) 2018-08-02 2023-04-11 阿里巴巴集团控股有限公司 基于可信高速加密卡的度量方法、设备和系统
CN108985044A (zh) * 2018-08-07 2018-12-11 长沙龙生光启新材料科技有限公司 一种数据处理设备及验证其完整性的方法
CN110874478B (zh) 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 密钥处理方法及装置、存储介质和处理器
US11269522B2 (en) * 2019-07-16 2022-03-08 Microsoft Technology Licensing, Llc Private data analytics
CN112311718B (zh) * 2019-07-24 2023-08-22 华为技术有限公司 检测硬件的方法、装置、设备及存储介质
WO2023113825A1 (en) * 2021-12-17 2023-06-22 Hewlett-Packard Development Company, L.P. Backlight controls

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5859657A (en) * 1995-12-28 1999-01-12 Eastman Kodak Company Led printhead and driver chip for use therewith having boundary scan test architecture
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot
US7751312B2 (en) * 2003-06-13 2010-07-06 International Business Machines Corporation System and method for packet switch cards re-synchronization
US20050289343A1 (en) * 2004-06-23 2005-12-29 Sun Microsystems, Inc. Systems and methods for binding a hardware component and a platform
ATE424566T1 (de) * 2004-11-22 2009-03-15 Freescale Semiconductor Inc Integrierte schaltung und verfahren zur gesicherten prüfung
DE602006005958D1 (de) * 2005-11-29 2009-05-07 Koninkl Philips Electronics Nv Beweise der physischen nähe unter verwendung von cpufs
US20090204964A1 (en) * 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
GB2464966B (en) * 2008-10-31 2012-08-29 Hewlett Packard Development Co Policy enforcement in trusted platforms
US8544092B2 (en) * 2009-03-12 2013-09-24 International Business Machines Corporation Integrity verification using a peripheral device
JP5423088B2 (ja) * 2009-03-25 2014-02-19 ソニー株式会社 集積回路、暗号通信装置、暗号通信システム、情報処理方法、及び暗号通信方法
WO2012122994A1 (en) * 2011-03-11 2012-09-20 Kreft Heinz Off-line transfer of electronic tokens between peer-devices
US8612766B2 (en) * 2011-07-05 2013-12-17 Microsoft Corporation Secure credential unlock using trusted execution environments
KR102013841B1 (ko) * 2012-08-06 2019-08-23 삼성전자주식회사 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US9940486B2 (en) * 2015-02-23 2018-04-10 Cisco Technology, Inc. Detection of hardware tampering

Also Published As

Publication number Publication date
MX2022004044A (es) 2022-05-06
ES2938771T3 (es) 2023-04-14
US20180367317A1 (en) 2018-12-20
GB201522244D0 (en) 2016-01-27
SG11201804841VA (en) 2018-07-30
CA3007579A1 (en) 2017-06-22
JP2018537793A (ja) 2018-12-20
BR112018012130A2 (pt) 2018-11-27
CN108701191B (zh) 2022-04-05
EP3391276A1 (en) 2018-10-24
CN108701191A (zh) 2018-10-23
CN114756869A (zh) 2022-07-15
MX2018007302A (es) 2018-09-28
WO2017102766A1 (en) 2017-06-22
EP3391276B1 (en) 2023-02-01

Similar Documents

Publication Publication Date Title
JP6949843B2 (ja) ハードウェアインテグリティチェック
US9740866B2 (en) Automatic measuring boot process using an automatic measuring processor coupled to a memory
US10311236B2 (en) Secure system memory training
EP1944711A1 (en) Methods and apparatus for authenticating components of processing systems
EP1944712A2 (en) Methods and apparatus for protecting data
JP5752767B2 (ja) 複数の認証済みコードモジュールを利用するプロセッサ、方法、及びシステム
Kursawe et al. Analyzing trusted platform communication
US9202060B2 (en) Method for secure self-booting of an electronic device
EP2923214B1 (en) Unique and unclonable platform identifiers using data-dependent circuit path responses
Athalye et al. Notary: A device for secure transaction approval
US20210303691A1 (en) Ip independent secure firmware load
WO2017112115A1 (en) SECURE REMOTE DEBUGGING OF SoCs
US20220327214A1 (en) Firmware verification mechanism
US20140283032A1 (en) Inter-processor attestation hardware
Van Aubel et al. Investigating SRAM pufs in large cpus and gpus
TWI821971B (zh) 安全加密協同處理器
US20230177154A1 (en) Sparse Encodings for Control Signals
US20220391540A1 (en) Register File Protection
TW202240406A (zh) 唯讀記憶體(rom)安全性
TW202240591A (zh) 唯讀記憶體(rom)安全性
TW202407562A (zh) 安全加密協同處理器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210824

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210922

R150 Certificate of patent or registration of utility model

Ref document number: 6949843

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150