(57)【要約】  マイクロプロセッサ、中央処理装置、システムオンチップハードウェアコンポーネント、条件付きアクセスハードウェアコンポーネント、デスクランブラハードウェアコンポーネント、グラフィックハードウェアコンポーネント、ビデオハードウェアコンポーネントの１又は複数のような複数のデータ処理ハードウェアコンポーネント及びフィールドプログラマブルゲートアレーハードウェアコンポーネントを備えるデータ処理デバイスが、開示される。第１ハードウェアコンポーネント又は前記複数のデータ処理ハードウェアコンポーネントは、チャレンジを複数のデータ処理ハードウェアコンポーネントの残りのハードウェアコンポーネントの少なくとも１つに送信する。各残りのハードウェアコンポーネントは、それぞれのチャレンジを受信し、チャレンジを処理してそれぞれの１又は複数の応答を生成する。前記デバイスは、デバイスインテグリティを検証するために１又は複数の応答を使用する。
2018537793.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ処理ハードウェアコンポーネントを備え、前記データ処理ハードウェアコンポーネントは、第１ハードウェアコンポーネント及び１又は複数の残りのハードウェアコンポーネントを備えるデータ処理デバイスであって、
前記第１ハードウェアコンポーネントは、チャレンジを１又は複数の前記残りのハードウェアコンポーネントに送信するように構成され、
各残りのハードウェアコンポーネントは、それぞれのチャレンジを受信し、当該チャレンジを処理して応答を生成するように構成され、
前記デバイスは、１又は複数の前記残りのハードウェアコンポーネントにより生成された１又は複数の応答に基づいて前記デバイスの前記インテグリティの検証をするように構成されている、
データ処理デバイス。
【請求項２】
ミッションクリティカルな情報を暗号化された形式で格納するメモリを備え、
前記デバイス又は前記デバイスの１態様は、前記ミッションクリティカルな情報を復号された形式で機能するように要求し、
前記デバイスは、暗号化された前記ミッションクリティカルな情報を、１又は複数の前記残りのハードウェアコンポーネントによって生成された１又は複数の前記応答に基づいた１又は複数のデバイス検証キーを用いて復号する、
請求項１に記載のデータ処理デバイス。
【請求項３】
前記ミッションクリティカルな情報は、ソフトウェア、前記デバイス又は前記デバイスの１態様に要求される機能するファームウェア、バイオス、オペレーティングシステムカーネル、ハードウェアコンポーネントドライバ、ブートローダ及びコンテンツ復号キーの１又は複数備える、請求項２に記載のデータ処理デバイス。
【請求項４】
前記データ処理デバイスは、条件付きアクセスデバイスを備え、前記ミッションクリティカルな情報は、前記データ処理デバイスを使用してコンテンツ消耗品へのアクセスを制御するための復号キーを備える、請求項２又は請求項３のいずれかに記載のデータ処理デバイス。
【請求項５】
最初の残りのハードウェアコンポーネントは、前記第１ハードウェアコンポーネントからそのチャレンジを受信するように構成され、
各後続の残りのハードウェアコンポーネントにより受信されたチャレンジは、先行する残りのハードウェアコンポーネントにそれぞれ生成される前記応答であり、
最後の残りのハードウェアコンポーネントは、その応答を前記第１ハードウェアコンポーネントへ送信するように構成され、
前記デバイスは、前記デバイスの前記インテグリティを、前記最後の残りのハードウェアコンポーネントから受信した前記応答を用いて検証する、ように構成される、
請求項１乃至請求項４のいずれかに記載のデータ処理デバイス。
【請求項６】
各前記残りの ハードウェアコンポーネントは、非推移的な関数をそのチャレンジに適用し、その応答を生成するように構成される、請求項５に記載のデータ処理デバイス。
【請求項７】
前記残りのハードウェアコンポーネントは、チェーン内において、
前記第１ハードウェアコンポーネントの出力に接続される前記チェーンの最初の残りのハードウェアコンポーネントの入力と、
前記チェーン内のそれぞれ先行する残りのハードウェアコンポーネントの出力に接続される前記チェーンの各後続のハードウェアコンポーネントの入力と、
前記チェーン内の前記残りのハードウェアコンポーネントの最後の１つの出力に接続される前記第１ハードウェアコンポーネントの入力と、
に接続され、
前記第１ハードウェアコンポーネントは、
チャレンジを前記チェーン内の前記最初の残りのハードウェアコンポーネントの前記入力に送信し、
前記第１ハードウェアコンポーネントの前記入力において、前記残りのハードウェアコンポーネントにより生成される前記応答の１又は複数を受信する、
ように構成されている、
請求項１乃至請求項６のいずれかに記載のデータ処理装置。
【請求項８】
各残りのハードウェアコンポーネントは、
チャレンジを処理し、応答を生成するプロセスチャレンジ命令を少なくとも１つ含む命令セットの命令を受信する、命令シフトレジスタと、
前記プロセスチャレンジ命令に関連し、チャレンジを受信する、データシフトレジスタと、 
を備え、
各残りのハードウェアコンポーネントは、
第１モードにおいて、その入力から前記命令シフトレジスタに１度に１ビットシフトし、前記命令シフトレジスタからその出力に１度に１ビットシフトし、
第２モードにおいて、その入力から前記データシフトレジスタに１度に１ビットシフトし、前記データシフトレジスタからその出力に１度に１ビットシフトし、
第３モードにおいて、プロセスチャレンジ命令が前記命令シフトレジスタにある場合に、前記データシフトレジスタ内の前記チャレンジを読み出し、前記チャレンジを処理して応答を生成し、前記応答を前記データシフトレジスタに書き込みする、
ように構成され
前記第１ハードウェアコンポーネントは、
前記残りのハードウェアコンポーネントの前記モードを制御し、
それぞれの命令を前記シフトレジスタにシフトし、
チャレンジを前記データシフトレジスタにシフトし、
前記残りのハードウェアコンポーネントに、前記チャレンジを処理させて応答を生成させ、
応答を前記データシフトレジスタにシフトして、前記残りのハードウェアコンポーネントから１又は複数の応答を受信する、
ように構成され、
前記第１ハードウェアコンポーネントは、
全ての前記残りのハードウェアコンポーネントのモードを、全ての残りのハードウェアコンポーネントに共通するモード制御ラインを介して一緒に制御するように構成される、
請求項７に記載のデータ処理デバイス。
【請求項９】
前記第１ハードウェアコンポーネントは、
チャレンジを前記最初の残りのハードウェアコンポーネントの前記データシフトレジスタにビット単位でシフトさせ、
前記最初の残りのハードウェアコンポーネントに、前記チャレンジを処理させてその応答をそのデータシフトレジスタに書き込ませ、
前記チェーン内のそれぞれの前記先行するハードウェアコンポーネントの前記データシフトレジスタからの前記応答を、前記チェーン内の各後続の残りのハードウェアコンポーネントの前記データシフトレジスタにビット単位でシフトさせ、
各後続のハードウェアコンポーネントに、そのデータシフトレジスタへのその応答を書き込むそのチャレンジとして、それぞれの前記先行するハードウェアコンポーネントからの前記応答を処理させ、
前記チェーン内の前記最後の残りのハードウェアコンポーネントのそれぞれの前記データシフトレジスタに書き込まれた前記応答を、前記第１ハードウェアコンポーネントにビット単位でシフトさせる、
ように構成される、請求項８に記載のデータ処理デバイス。
【請求項１０】
前記第１ハードウェアコンポーネントは、前記チェーン内のそれぞれの前記先行するハードウェアコンポーネントがその応答をそのデータレジスタに書き込まれる前ではないときに、プロセスチャレンジ命令を、前記チェーン内の各後続の残りのハードウェアコンポーネントに実行させるように構成される、請求項９に記載のデータ処理デバイス。
【請求項１１】
前記第１ハードウェアコンポーネントは、前記チェーン内の各残りのハードウェアコンポーネントに、前記チャレンジを前記チェーン内の前記最初の残りのハードウェアコンポーネントの前記データシフトレジスタにシフトすることと、前記チェーン内の前記最後の残りのハードウェアコンポーネントの前記データシフトレジスタに書き込まれた前記応答を前記第１ハードウェアコンポーネントにシフトすることの間に、プロセスチャレンジ命令を１度だけ実行させるように構成される、請求項９に記載のデータ処理デバイス。
【請求項１２】
物理層内に前記最初の及び残りのハードウェアコンポーネントとの間、並びに、残りのハードウェアコンポーネント間における通信が実装され、ＩＥＥＥ１１４９．１（ＪＴＡＧ）仕様書に準拠し、各残りのハードウェアコンポーネントは、ＴＭＳ、ＴＣＫ、ＴＤＩ及びＴＤＯピン、並びに、仕様書に準拠したステートマシンを備える、請求項１乃至請求項１１のいずれかに記載のデータ処理デバイス。
【請求項１３】
複数のハードウェアコンポーネントを有するデータ処理デバイスのインテグリティを検証する方法であって、
前記複数のハードウェアコンポーネントに１又は複数のチャレンジを送信するステップと、
前記複数のハードウェアコンポーネントから応答を受信するステップと、
前記応答を用いて、前記データ処理デバイスの前記インテグリティを検証するステップと、
を備える、方法。
【請求項１４】
前記応答を受信するステップは、前記複数のハードウェアコンポーネントの１つから応答を受信するステップを備え、前記複数のハードウェアコンポーネントの前記１つからの前記応答は、他の前記複数のハードウェアコンポーネントからの応答のそれぞれに依存し、前記複数のハードウェアコンポーネントは、シーケンス内の応答をそれぞれ提供し、前記シーケンス内の後続のハードウェアコンポーネントは、チャレンジとして、前記シーケンス内の直前のハードウェアコンポーネントの前記応答を受信し、前記受信されたチャレンジに応答する前記応答は、前記受信したチャレンジの非推移的な関数として生成される、請求項１３に記載の方法。
【請求項１５】
前記前記複数のハードウェアコンポーネントの前記応答を用いて、前記デバイス又は前記デバイスの１態様の前記操作のための復号された形式である情報を復号するステップを備える、請求項１３又は請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアの改ざんの検出及びデータ処理デバイスの物理的インテグリティの検証に関し、特に、ハードウェアの変更に対する保護を容易にし、デバイス内のハードウェアコンポーネントの変更を検出することに関する。
【背景技術】
【０００２】
現在、デジタルデバイスのハイジャックを目的とする攻撃の多くは、ソフトウェアを焦点とするものであるが、セキュアなソフトウェアのロバスト性が高まるにつれ、攻撃は、よりハードウェアに焦点とするものになるであろう。１又は複数の集積回路又は他のハードウェアコンポーネントをデバイス内で除去、追加又は交換すること、又は、そのようなハードウェアコンポーネントを外部のデバイスでエミュレートすることによるハードウェアの改ざんに基づく攻撃が知られている。したがって、ハードウェアレベルでデバイスのインテグリティを検証することがますます重要になってくるであろう。これは特に、例えば、テレビのセットトップボックス、又は、デジタル著作権管理のような条件付のアクセスシステムといった収益ストリームを保護するためにデバイスのインテグリティが重要である場合、また、電子バンキング又はｅヘルスといったプライバシー及びセキュリティの問題を含む機密なアプリケーションにますます使用されているパーソナルコンピュータのような全ての汎用演算プラットフォーム、及び、ラップトップ、携帯電話、スマートフォン、タブレットその他のような携帯デバイスにおいても言える。ほぼ全ての日常的なデバイス（ＩｏＴ：Internet of Things）の接続性が高まるにつれて、ハードウェアインテグリティチェックは、必要となってくる。
【０００３】
データ処理システムにおけるソフトウェアのインテグリティを保証するいくつかの解決策は知られており、例えば、各ソフトウェアのハッシュを記憶し、システムの起動時に各ソフトウェアコンポーネントから生成されたハッシュを比較することにより、ソフトウェアコンポーネントの署名を生成するといった様々な手法が含まれる。このような解決策は、トラステッドコンピューティンググループ（ＴＣＧ：Trusted Computing Group）により開発されたトラステッドプラットフォームモジュール（ＴＰＭ：Trusted Platform Module）と言った専用のセキュリティハードウェアによって容易になることがある。ＴＣＧのトラステッドネットワークコネクト（ＴＮＣ：Trusted Network Connect）アーキテクチャにおいては、ＴＰＭはインテグリティ測定と、リモート認証とに使用される。起動プロセス中には、ＴＰＭは、ロードされる前に、ＢＩＯＳ、ブートローダ、オペレーティングシステムカーネルを含む、ＰＣの重要なソフトウェア及びファームウェアのコンポーネントの全てを測定（ハッシュ）する。ソフトウェアが起動する前に、ＴＰＭにおいて、これらの測定を行って記憶することにより測定値は、その後の変更の攻撃から分離され、安全である。ＰＣがネットワークに接続すると、保存された測定値は、ＴＮＣサーバに送信され、サーバの許容設定リストと照合され、不一致が発生すると感染したエンドポイントとして隔離される。
【発明の概要】
【課題を解決するための手段】
【０００４】
開示された実施形態は、独立請求項に記載される。開示された実施形態のいくつかの追加的な特徴は、従属請求項に記載される。
【０００５】
いくつかの開示された実施形態によれば、マイクロプロセッサ、中央処理装置、システムオンチップデバイス、条件付きアクセスデバイス、デスクランブラデバイス、グラフィックデバイス、ビデオデバイス、チップ、ＲＦＩＤ又はキーリーダー、トラステッドプラットフォームモジュール（Trusted Platform Module）及びフィールドプログラマブルゲートアレーデバイスの１又は複数のような、複数のハードウェアコンポーネントを備える。前記複数のハードウェアコンポーネントの第１ハードウェアコンポーネントは、複数のハードウェアコンポーネントの残りのハードウェアコンポーネントのうち少なくとも１つにチャレンジを送信する。各残りのハードウェアコンポーネントは、それぞれのチャレンジを、例えば、前記第１ハードウェアコンポーネント又は他の残りのハードウェアコンポーネントから受信し、前記チャレンジを処理して応答を生成するように構成される。デバイスは、少なくとも１つの前記残りのハードウェアコンポーネントは、応答に基づいて、例えば、応答又はチェーンの最後の応答が期待通りであるかをチェックして、デバイスインテグリティを検証するように構成される。
【０００６】
いくつかの実施形態において、デバイスは、残りのハードウェアコンポーネントの少なくとも１つにより生成された応答に基づいてデバイス検証キーを生成するように構成され、デバイス検証キーは、インテグリティの検証に利用可能である。例えば、最初のハードウェアコンポーネントは、１又は複数の応答を受信し、デバイス検証キーを生成し、検証若しくはそれを使用してもよく、又は、これらのタスクは、デバイス内の異なるハードウェアコンポーネントにより実行されてもよい。例えば、第１ハードウェアコンポーネントは、１又は複数の応答を第２ハードウェアコンポーネントに送信してもよく、この第２ハードウェアコンポーネントは、受信した情報を用いてデバイス検証キーを生成してミッションクリティカルな情報を復号し、又は、ミッションクリティカルな情報を復号する第３ハードウェアコンポーネントにデバイス検証キーを送信する。１又は複数のデバイス検証キーは、ハードウェアコンポーネントの収集した応答に基づいて生成されてもよく、デバイス検証キーは、単純にハードウェアコンポーネントの応答であってもよい。
【０００７】
いくつかの実施形態において、前記デバイスは、ミッションクリティカルな情報を暗号化された形式で格納するメモリを備える。ミッションクリティカルな情報は、デバイス又はデバイスの１態様により、復号された形式で機能するように要求される。デバイスは、残りのハードウェアコンポーネントに生成された応答に基づいた１又は複数のデバイス検証キーを、暗号化されたミッションクリティカルな情報を復号してもよい（あるハードウェアコンポーネントが１又は複数のデバイス検証キーを生成してもよいし、他のハードウェアコンポーネントが、そのハードウェアコンポーネントから１又は複数のデバイス検証キーを受信しても、いずれでもよい）。したがって、デバイスの明確化は、ミッションクリティカルな情報の復号が成功（又は失敗）することにより暗黙的であっってもよい。１又は複数のデバイス検証キーは、応答に基づいて生成されてもよいし、単純に応答であってもよい。１以上の残りのハードウェアコンポーネントの場合、例えば、１又は複数の応答は、デバイス検証キーとして使用されてもよく、例えば、応答は、独立して生成されても、チェーン内で各応答が事前の応答に依存していてもよい。一般的に、このように、残りのハードウェアコンポーネントの収集された応答、例えば、個々の応答又は残りの個々の応答に依存する１又は複数の応答は、ミッションクリティカルな情報を復号することに使用される。有利には、残りのハードウェアコンポーネントの応答が、デバイス（又はその１態様）を機能させるのに必要なミッションクリティカルな情報を復号するのに使用されることにより、単にデバイスの検証を介しようとするデバイスに対する攻撃は、失敗する。応答は、１又は複数の期待値に対するチェックだけではなく、ミッションクリティカルな情報を復号することに使用されるので、検証ステップを回避すると、ミッションクリティカルな情報が無いことにより、デバイスが機能しなくなる。
【０００８】
ミッションクリティカルな情報の一例は、デバイス又はデバイスの１態様を機能させるために必要なファームウェア（又は、他のソフトウェア）である。例えば、ミッションクリティカルな情報は、バイオス、オペレーティングシステムカーネル、ハードウェアコンポーネントドライバ、ブートローダ、コンテンツ復号キーの１又は複数を備えていてもよい。１つの特定の例において、データ処理デバイスは、条件付きアクセスデバイスを備え、ミッションクリティカルな情報は、条件付きアクセスデバイスによりデータ処理デバイスを使用してコンテンツ消費物へのアクセスを制御するための復号キーを備える。他の特定の例において、データ処理デバイスは、ビデオデスクランブラを備え、ミッションクリティカルな情報は、ビデオデスクランブラがビデオシグナルをデスクランブルするために使用されるデスクランブルキーを備える。
【０００９】
いくつかの実施形態において、最初の残りのハードウェアコンポーネントは、第１ハードウェアコンポーネントからそのチャレンジを受信するように構成され、各後続の残りのハードウェアコンポーネントに受信されたチャレンジは、それぞれの先行する残りのハードウェアコンポーネントにより生成された応答である。例えば、各後続の残りのハードウェアコンポーネントは、先行するハードウェアコンポーネントから直接その先行するハードウェアコンポーネントにより生成された応答を受信してもよく、又は、先行するハードウェアコンポーネントは、その応答を、第１又はその他のハードウェアコンポーネントに送信し、その後、後続のハードウェアコンポーネントに送信してもよい。残りのハードウェアコンポーネントの最後の１つは、第１ハードウェアコンポーネントに直接又は中間のハードウェアコンポーネントを介して、その応答を送信するように構成される。デバイスは、上述したように、残りのハードウェアコンポーネントのうち最後のものから受信した応答を使用して、第１ハードウェアコンポーネント又は他のハードウェアコンポーネントにおいてデバイス検証キーを生成するように構成してもよい。受信された応答は、デバイス検証キーとして直接使用してもよい。
【００１０】
各後続の残りのハードウェアコンポーネントが先行するハードウェアコンポーネントからの応答を、そのチャレンジとして、直接先行するハードウェアコンポーネントから受信する実施形態では、通信は、応答／チャレンジが、第１ハードウェアコンポーネント又は他の通信ハブに関与されて、前後にルーティングされる必要は無く、問題のハードウェアコンポーネント間でルーティングされるという点において単純化される
【００１１】
各残りのハードウェアコンポーネントは、非推移的な関数をチャレンジに適用し、その応答を生成するように構成されてもよい。有利には、後続のハードウェアコンポーネントに対するチャレンジが先行するハードウェアコンポーネントからの応答である実施形態では、非推移的な応答関数を使用することは、チャレンジがハードウェアコンポーネントからハードウェアコンポーネントに渡される順序に全体的な応答が敏感になるので、正しい最後の応答又は生成されたデバイス検証キーは、個々のハードウェアだけではなく、検証チェーンにおけるそれらの配置の順序をも検証する。
【００１２】
ハードウェアコンポーネントは、様々な手段を用いて様々な構成で接続されてもよい。いくつかの実施形態において、ハードウェアコンポーネントは、バス、例えば、Ｉ２Ｃバスを用いて相互接続する。いくつかの実施形態において、ハードウェアコンポーネントは、専用物理接続を使用して接続されてもよく、例えば、各残りのハードウェアコンポーネントが、第１ハードウェアコンポーネントが残りのハードウェアコンポーネントに対して書き込み及び読み出しを行うことができる専用の物理ラインにより、第１ハードウェアコンポーネントに接続されてもよい。
【００１３】
いくつかの実施形態において、残りのハードウェアコンポーネントは、チェーン内で、第１ハードウェアコンポーネントの出力に接続されるチェーン内の最初の残りのハードウェアコンポーネントの入力に接続される。チェーン内の各後続の残りのハードウェアコンポーネントの入力は、チェーン内のそれぞれの先行する残りのハードウェアコンポーネントの出力に接続され、第１ハードウェアコンポーネントの入力は、チェーン内の残りのハードウェアコンポーネントの最後の１つの出力と接続される。第１ハードウェアコンポーネントは、チェーン内の最初の残りのハードウェアコンポーネントの入力にチャレンジを送信するように構成され、さらに、第１ハードウェアコンポーネントの入力において、残りのハードウェアコンポーネントにより生成された１又は複数の応答を受信するように構成される。これらの実施形態は、デイジーチェーンの物理接続モデルを使用するが、
「アクティブ」な残りのハードウェアコンポーネントを除いた全てに、単にチャレンジ（「アクティブ」ハードウェアコンポーネントの上流）及び応答（「アクティブ」ハードウェアコンポーネントの下流）を通過させるためだけに、チャレンジを受信させ、応答を供給することにより、個々のチャレンジを各残りのハードウェアコンポーネントに送信し、第１ハードウェアコンポーネントにおける個々の応答を受信するサポートをすることができる。
【００１４】
ここで説明する物理接続方式のいずれかと同様に、個々のチャレンジは、各残りのハードウェアコンポーネントと同じ又は異なっていてもよく、残りの各ハードウェアコンポーネントに固有であってもよく、又は、第１ハードウェアコンポーネントによって以前に受信された（又は、それにより決定される）応答であってもよい。チャレンジは、固定されていても、時間とともに変化してもよい。もちろん、物理接続チェーンはまた、いくつかの実施形態において、各応答が後続のハードウェアコンポーネントのチャレンジとして先行するハードウェアコンポーネントから後続のハードウェアコンポーネントに直接渡される論理チェーンを容易にする。第１ハードウェアコンポーネントにより受信された１又は複数の応答は、上述したように、デバイスによりデバイスのインテグリティ検証に用いられ、例えば、第１ハードウェアコンポーネント、又は、デバイスの１又は複数の異なるハードウェアコンポーネントによって１又は複数の応答に関する情報が、第１ハードウェアコンポーネントにより受信されたものとして受信される。
【００１５】
チェーン内の各残りのハードウェアコンポーネントは、ＩＥＥＥ標準１１４９．１（ＪＴＡＧ）仕様と同様のインフラストラクチャを実装してもよい。ＩＥＥＥ標準１１４９．１−２０１３又は以前に公開されたいずれかのバージョンは、ここに参照することにより援用される。特に、各残りのハードウェアコンポーネントは、命令セットの命令を受信するための命令シフトレジスタを有していてもよい。命令セットは、チャレンジを処理し、応答を生成する、少なくとも１つのプロセスチャレンジ命令を含んでいてもよい。各残りのハードウェアコンポーネントはさらに、プロセスチャレンジ命令に対応し、チャレンジを受信するためのデータシフトレジスタを有していてもよい。各残りのハードウェアコンポーネントは、いくつかのモードを実装するように構成されていてもよい。例えば、これらのモードのそれぞれは、ＪＴＡＧライクのステートマシンの状態を使用して実装されていてもよい。
【００１６】
用語「シフトレジスタ」は、本明細書において、データレジスタのいかなる実装をカバーし、ファーストインファーストアウト方式によりレジスタの一方（例えば、最下位ビット）からシフトインするビット及び他方（例えば、最上位ビット）からシフトアウトするビットを格納する、フリップフロップのようなデジタル電子回路の物理レジスタとして、一般的な目的のデジタルロジック、又は、その他により実装されてもよいことに理解されたい。同様に、本明細書で理解される「シフトレジスタ」は、読み出し、書き出し、又は、双方のためのレジスタへのパラレルインターフェースを有していてもよい。例えば、ＪＴＡＧテストアクセスポイント（ＴＡＰ：Test Access Point）の実装、又は、同様の実装において使用されるシフトレジスタとの関連において、ビットは、例えば、ＴＡＰステートマシンの選択ＩＲ、選択ＤＲ、更新ＩＲ及び／又は更新ＤＲの状態において、ハードウェアコンポーネント（例えば、集積回路）内にパラレルに書き込み／読み出ししてもよい。
【００１７】
具体的には、第１モードにおいて、各残りのハードウェアコンポーネントは、その入力から命令シフトレジスタへ、及び、命令シフトレジスタからその出力へ、１度に１ビットシフトするように構成されてもよい。第２モードでは、各残りのハードウェアコンポーネントは、その入力からデータシフトレジスタへ、及び、データシフトレジスタからその出力へ、１度に１ビットシフトされるように構成されてもよい。第３モードにおいて、各残りのハードウェアコンポーネントは、プロセスチャレンジ命令が命令シフトレジスタにある場合、データシフトレジスタ内のチャレンジを読み出し、チャレンジを処理して応答を生成し、応答をデータシフトレジスタに書き込むように構成されていてもよい。第１ハードウェアコンポーネントは、全ての残りのハードウェアコンポーネントのモードを一斉に、全ての残りのハードウェアコンポーネント共通の制御ラインを介して制御してもよい。すなわち、全ての残りのハードウェアコンポーネントは、いつでも同じモードになるように制御されてもよい。
【００１８】
第１ハードウェアコンポーネントは、残りのハードウェアコンポーネントのモードを制御し、それぞれの命令を命令シフトレジスタへシフトし、チャレンジをデータシフトレジスタへシフトし、残りのハードウェアコンポーネントにチャレンジを処理させて応答を生成させ、応答をデータシフトレジスタへシフトさせ、それにより、残りのハードウェアコンポーネントから１又は複数の応答を受信させるように構成されてもよい。チャレンジが供給され、応答が個々に受信される実施形態において、応答は、各残りのハードウェアコンポーネントから第１ハードウェアコンポーネントにおいて受信される。応答が１つの残りのハードウェアコンポーネントからチャレンジとして次ぎへと渡される実施形態において、第１ハードウェアコンポーネントは、チェーン内の最後のハードウェアコンポーネントから単一の応答のみを受信する。
【００１９】
いくつかの実施形態では、１つの残りのハードウェアコンポーネントからチャレンジとして次へ応答が渡される論理チェーン、及び、１つのハードウェアコンポーネントの応答をチャレンジとして直接次のものへと２つの残りのハードウェアコンポーネントを接続する物理通信ラインを介して渡される物理チェーンの双方を実装する。有利には、ＪＴＡＧライクのアーキテクチャにおける残りのハードウェアコンポーネントの物理チェーン及び論理デイジーチェーンの実装することにより、比較的少ない命令を使用して、テスト目的でほとんどのハードウェアコンポーネントに提供されている既存のインフラストラクチャを利用できる、デバイス検証のための効率的な実装が提供される。
【００２０】
いくつかのそのような実施形態において、第１ハードウェアコンポーネントは、チャレンジをビットごとに最初の残りのハードウェアコンポーネントのデータシフトレジスタにシフトさせ、最初の残りのハードウェアコンポーネントにチャレンジを処理させてその応答をデータシフトレジスタに書き込ませ、チェーン内のそれぞれの先行するハードウェアコンポーネントのデータシフトレジスタからの応答をチェーン内の各後続の残りのハードウェアコンポーネントのデータシフトレジスタにビットごとにシフトさせ、各後続のハードウェアコンポーネントにそのデータシフトレジスタ内のそれぞれの先行するハードウェアコンポーネントからの前記応答をチャレンジとして処理させてその応答をデータシフトレジスタに書き込ませ、チェーンの最後の残りのハードウェアコンポーネントのそれぞれのデータシフトレジスタに書き込まれた応答を第１ハードウェアコンポーネントの入力にビットごとにシフトさせる、ように構成される。
【００２１】
第１ハードウェアコンポーネントは、チェーン内のそれぞれの先行するハードウェアコンポーネントがその応答をそのデータレジスタに書き込まれる前ではないときに、プロセスチャレンジ命令をチェーン内の各後続の残りのハードウェアコンポーネントによって実行されるように構成されてもよい。これは、いくつかの実施形態において、プロセスチャレンジ命令とバイパス命令（残りのハードウェアコンポーネントにその入力から出力へ信号を通過させる）の組み合わせを用いることにより実装されてもよい。他の実施形態において、より簡単な命令セットを使用してもよい。特に、いくつかの実施形態において、プロセスチャレンジ命令は、全ての命令シフトレジスタにロードされ、チャレンジ及び応答は、その後、データシフトレジスタのデータシフトレジスタ幅だけ、単純に１つのハードウェアコンポーネントから次へとシフトされ、中間の無効又は不適切なデータに対する不要な応答は、単純に破棄される。しかしながら、先行するハードウェアコンポーネントからの応答が、関連するデータシフトレジスタへロードされる場合にのみプロセスチャレンジ命令が実行される実施形態において、残りのハードウェアコンポーネントは、有利には、チャレンジがチェーンを通過した場合に、一度だけ、応答を生成するように内部状態を維持することができる。これにより、デバイス起動後にチャレンジ／応答チェーンが１回だけ実行されることが望ましい実装が可能となる。
【００２２】
いくつかの実施形態において、第１ハードウェアコンポーネントは、チェーン内の各残りのハードウェアコンポーネントに、チャレンジをチェーン内の最初の残りのハードウェアコンポーネントのデータシフトレジスタにシフトすることと、チェーン内の最後の残りのハードウェアコンポーネントのデータシフトレジスタに書き込まれた応答を第１ハードウェアコンポーネントにシフトすることとの間に、プロセスチャレンジ命令をただ１度実行させるように構成される。各チャレンジ／応答チェーンに対してチャレンジ応答命令を１回だけ実行することにより、残りのハードウェアコンポーネントは、チャレンジを処理する関数、例えば、各チャレンジ／応答チェーン実行に対して異なる応答、以前のチャレンジ／応答チェーン実行からの現在のチャレンジと応答関数といった応答を返すことができる。有利には、これは、全ての以前のチャレンジ、例えば、チェーンデバイスの検証に依存した各応答を生成することを可能とする。
【００２３】
いくつかの実施形態において、第１及び残りのハードウェアコンポーネント間、並びに、残りのハードウェアコンポーネント間の通信の実装に用いられる物理層は、ＩＥＥＥ標準１１４９．１（ＪＴＡＧ）仕様に準拠しており、各残りのハードウェアコンポーネントは、ＴＭＳ、ＴＣＫ、ＴＤＩ及びＴＤＩピン、並びに、仕様に準拠したステートマシンを備え、少なくとも、仕様に要求される最小限の命令セットを実装する。第１ハードウェアコンポーネントは、最後の残りのハードウェアコンポーネントのＴＤＯピンをモニターしてもよく、例えば、第１ハードウェアコンポーネントは、最後の残りのハードウェアコンポーネントのＴＤＯピンと接続する入力ピンを有していてもよい。
【００２４】
典型的には、チャレンジの関数として応答は生成される。全ての態様及び実施形態において、応答を生成することは、チャレンジを、応答を生成する残りのハードウェアコンポーネントに関連するハードウェアコンポーネントキーと組み合わせ、例えば、その組み合わせに一方向の関数を適用することを備えていてもよい。一方向の関数は、暗号ハッシュ関数であってもよい。応答を生成するチャレンジを処理することは、チャレンジを、ハードウェアコンポーネントキーとともにハッシュ化することを備えていてもよい。ハッシュ化は、例えば、ＭＤ５、ＳＨＡ−０、ＳＨＡ−１、ＳＨＡ−２又はＳＨＡ−３のようなハッシュ関数を使用することにより行われる。一般に、ハードウェアコンポーネントは、ハードウェアコンポーネントの特定の製造元、バージョンに固有、又は、個々のハードウェアコンポーネントに特定かつ固有の応答を生成してもよい。典型的には、応答は、チャレンジにも固有であり、すなわち、２つの異なるチャレンジがハードウェアコンポーネントからの付随する異なる応答を引き出すであろう。さらに、応答は、ハードウェアコンポーネントの内部状態に依存していてもよく、これは、事前のチャレンジに依存するものであってもよい。
【図面の簡単な説明】
【００２５】
特定の実施形態を添付の図面を参照して以下に説明する。
【図１】様々は接続方式を使用するデバイス検証のための相互接続された複数のデータ処理ハードウェアコンポーネントを有するデータ処理デバイスを示す。
【図２】デバイス検証方法を示す。
【図３】暗号化されたミッションクリティカル情報の復号を含むデバイス検証方法を示す。
【図４】図３の方法の例を示す。
【図５】個々のチャレンジ応答ペアの基づく方法を示す。
【図６】デバイス検証のためのチェーンで接続されたデータ処理ハードウェアコンポーネントを用いた図５ａ、図５ｂの方法の実装を示す。
【図７】ＩＥＥＥ−１１４９．１に準拠したチェーン接続方式の詳細を示す。
【図８】データ処理ハードウェアコンポーネントからのチャレンジ応答ペアの収集中のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。
【図９】第１及び残りのそれぞれのハードウェアコンポーネントにおける、後続のチャレンジとして作用する先行応答を有するチャレンジ応答ペアのチェーンに基づく方法を示す。
【図１０】デバイス検証のためにチェーン接続されたデータ処理ハードウェアコンポーネントを有する図９ａ、図９ｂの方法の実装を示す。
【図１１】単一の命令を使用してチャレンジ応答ペアのチェーンの実行中のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。
【図１２】データ処理ハードウェアコンポーネントを１つのチャレンジ応答ペアを生成することに制限できるように２つの命令を使用してチャレンジ応答ペアのチェーンを実行している間のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。
【図１３】各チャレンジ応答ペアに関連する内部状態を維持しながらデータ処理ハードウェアコンポーネントを複数のチャレンジ応答ペアを生成することに制限するように、３つの命令を使用してチャレンジ応答ペアのチェーンを実行している間のチェーン内のデータ処理ハードウェアコンポーネントの状態を示す。
【発明を実施するための形態】
【００２６】
図１ａ、図１ｂ及び図１ｃを参照すると、データ処理デバイス１００は、複数のデータ処理ハードウェアコンポーネント１０２、１０４、１０６、１０８を備える。デバイス１００は、例えば、サーバ、パーソナルコンピュータ、スマートフォン又はタブレットのような形態コンピューティングデバイス、セットトップボックス、スマートＴＶ、デジタルビデオレコーダ、カメラ、ビデオカメラ、ビデオレコーダ、メディア消費・アクセス又は記憶デバイス、門又は扉を制御するためのアクセスコントロールデバイス、料金所、スキーリフトのゲート、制御デバイス、産業的プロセス制御装置、電気フィットネス又はヘルスデバイス、接続された家庭用機器、その他である。典型的には、デバイス１００は、キーボード、カードリーダ、ＲＦＩＤリーダ、カメラ、マイクロホン、１又は複数のコネクタ、有線及び／又は無線ネットワーク接続、その他といった１又は複数の入力インタフェースを有し、ディスプレイ、スピーカ、プリンタ、１又は複数のコネクタ、有線及び／又は無線ネットワーク接続、その他といった１又は複数の出力インタフェースを有する。
【００２７】
ハードウェアコンポーネント１０２、１０４、１０６、１０８は、共通のデバイスエンクロージャ又はハウジング内に配置されてもよい。
【００２８】
ハードウェアコンポーネントは、典型的には、集積回路、又は、チップ、例えば、マイクロプロセッサ、中央処理装置（ＣＰＵ：Central 処理 Unit）、システムオンチップ（ＳｏＣ：System on Chip）であるか、又は、それらに含まれる。ハードウェアコンポーネントは、典型低的には、入力を受信し、出力を送信するピンを有し、かつ、典型的には、導体、例えば、回路基板上の導電トレース、導線等によって相互接続される。ハードウェアコンポーネントの１つは、デバイス検証の目的のため、残りのハードウェアコンポーネントと通信を行うために、マスタハードウェアコンポーネント１０２のように動作し、残りのハードウェアコンポーネントは、ハードウェアコンポーネント１０２からの信号を受信し、返信する、スレーブハードウェアコンポーネント１０４、１０６、１０８のように動作する。ハードウェアコンポーネント１０２、１０４、１０６、１０８は、いくつかの実施形態において、以下でより詳細に説明されるように、チェーン内に配置され、１つのハードウェアコンポーネントから次に実行されるチャレンジ及び／又はレスポンスを有する（図１Ａを参照されたい）。図１Ｂを参照すると、他の実施形態において、ハードウェアコンポーネント１０４、１０６、１０８は、ハードウェアコンポーネント１０２と、ハードウェアコンポーネント１０４、１０６、１０８のそれぞれとの間の専用の双方向接続を介してハードウェアコンポーネント１０２と通信する。いくつかの実施形態において、ハードウェアコンポーネント１０２、１０４、１０６、１０８は、バス１１０（図１Ｃを参照されたい）を介して通信する。いくつかの実施形態では、バス１１０は、Ｉ２Ｃバスであり、ハードウェアコンポーネント１０２は、Ｉ２ｃバス上のマスタとして動作し、ハードウェアコンポーネント１０４、１０６、１０８への読み取り及び書き込みを実行し、デバイス検証のための応答を引き出して収集する。
【００２９】
いくつかの実施形態において、ハードウェアコンポーネント１０２は、データ処理デバイス１００、例えば、ＣＰＵ又はＳｏＣ用のブートローダを実行するハードウェアコンポーネントである。しかしながら、 他の実施形態において、ハードウェアコンポーネント１０２は、応答を引き出して収集するように構成されたデバイス１００内の任意のハードウェアコンポーネントであってもよい。セットトップボックスを実装する処理デバイス１００の例において、残りのハードウェアコンポーネント１０４、１０６、１０８は、例えば、条件付の受信モジュール、ビデオデスクランブラ、通信インタフェースであってもよい。もちろん、実施形態は、４つのハードウェアコンポーネント（チャレンジで起動する１ハードウェアコンポーネントと応答する３ハードウェアコンポーネント）に限定されず、例えば、２ハードウェアコンポーネント（１起動ハードウェアコンポーネントと１応答ハードウェアコンポーネント）、３ハードウェアコンポーネント（１起動ハードウェアコンポーネントと、２応答ハードウェアコンポーネント）、又は、４よりも大きいあらゆる数のハードウェアコンポーネント等の任意の数のハードウェアコンポーネントを含んでいてもよい。
【００３０】
図２を参照すると、データ処理デバイス１００は、ステップ２０２でデバイス１００のハードウェアコンポーネントにチャレンジを送信し、ステップ２０４でハードウェアコンポーネントから応答を受信し、ステップ２０６で応答を使用してデバイスのインテグリティを検証するように構成される。デバイスのインテグリティの検証は、例えば、応答と期待する応答とを比較することによる等、いくつかの手法で行われてもよい。ハードウェアコンポーネントの応答は、応答チェーン内の最後のハードウェアコンポーネントからの応答、１つ前の応答に依存する各応答（下記に詳細に記載される）、及び／又は、１又は複数の応答から導出された１又は複数のデバイス検証キー等の各ハードウェアコンポーネントからの応答のセットであってもよい。
【００３１】
図３を参照すると、いくつかの実施形態において、デバイス１００は、ステップ３０２においてデバイス１００内のハードウェアコンポーネントにチャレンジを送信し、ステップ３０４においてハードウェアコンポーネントからの応答を受信し、ステップ３０６においてミッションクリティカルな情報を復号する応答を使用するように構成される。ミッションクリティカルな情報は、暗号化された形式でデバイス１００に格納されるが、デバイス１００又はデバイス１００の１態様が機能するために復号された形式で必要とされる情報である。ステップ３０８においてデバイスは、ミッションクリティカルな情報を、デバイスの初期化、デバイスの動作又はデバイスの初期化若しくは動作の１態様のために使用する。ハードウェアコンポーネントからの正しく無い応答である、例えば、１又は複数のハードウェアコンポーネントが改ざんされた場合、ミッションクリティカルな情報は、ステップ３０６において正しく復号されず、結果としてステップ３０８が失敗する。したがってステップ３０８は、ハードウェアコンポーネントが正しい応答を提供した場合にのみ実行されることが可能である。
【００３２】
この記載を通して、チャレンジは、例えば、数字、英数字ストリング、ビットシーケンス等の任意の適切なフォーマット又はベースである任意のデータ項目を意味し、典型的には、チャレンジの関数として、他のハードウェアコンポーネントによる応答を引き出すためのあるハードウェアコンポーネントから他のハードウェアコンポーネントへと送信されるデータとして理解される。応答は、例えば、チャレンジをハードウェアコンポーネントに特有のハードウェアコンポーネントキーと組み合わせ、例えば、連結することにより生成されてもよく、ハッシュ関数、例えば、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２又はＳＨＡ−３を介して結果を渡してもよい。
【００３３】
応答がどのように有効かつ改ざんされていないハードウェアコンポーネントによって生成されているかについての知識に基づいて、応答が期待されるものであるか否かの検証することは、ハードウェアコンポーネントのインテグリティの検証を可能とする。
有効なハードウェアコンポーネントについての期待される応答は、各ハードウェアコンポーネントの応答挙動の事前の知識に基づいて決定されてもよく、又は、製造プロセスの一部としてセットアップフェーズ中に確立してもよく、１又は複数のチャレンジがハードウェアコンポーネントに送信され、取得される応答及び期待される応答（又はハッシュのようにその検証を許可する情報）は、典型的には、例えばハードウェアコンポーネント１０２内のデバイス１００のワンタイムの書き込みの物理メモリ内に記憶されてもよい。
【００３４】
上述したように、いくつかの実施形態において、実際の応答は、システム検証のための期待される応答と比較されるが、いくつかの実施形態においては、期待される応答は、ミッションクリティカルな情報を暗号化することに使用される。前者の場合、応答は、それぞれのハッシュを使用して比較されることが可能であり、応答のハッシュをデバイス内に格納することによってのみ、期待される応答の発見のリスクを低減する。具体的には、期待される応答のハッシュは、格納され、実際の応答のハッシュと比較されることが可能であり、期待される応答を格納しないようにすることができる。後者の場合、ミッションクリティカルな情報は、デバイスの製造又はセットアップ中に、期待される応答を使用して、一度暗号化されることができ、暗号化された形式で格納される。その結果、期待される応答はデバイス１００に格納される必要は無く、攻撃の可能性が排除される。あるいは、期待される応答は、ミッションクリティカルな情報を時々更新する必要がある場合には、格納されてもよい。したがって、デバイス内の複数のハードウェアコンポーネントからの（集合的な）応答又は個々の応答は、様々な方法で、複数のハードウェアコンポーネント／デバイスのインテグリティを検証するのに使用され得る。
【００３５】
データ処理デバイス１００のブートシーケンスがファームウェアをロードするいくつかの実施形態が図４Ａを参照して説明される。これらの実施形態のいくつかにおいて、ハードウェアコンポーネント１０２は、ステップ４０２においてブートシーケンスを開始し、実行する。ブートシーケンスの一部として、ハードウェアコンポーネント１０２は、ステップ４０４において、ハードウェアコンポーネント１０４、１０６、１０８にチャレンジを送信し、ステップ４０６において、応答を受信する。例えば、ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０４にチャレンジを送信し、ハードウェアコンポーネント１０４は、ハードウェアコンポーネント１０２に応答を返信する。その後、これは、ハードウェアコンポーネント１０６、１０８に対して繰り返される。ハードウェアコンポーネント１０６、１０８に対するチャレンジは、既に受信している応答（すなわち、それぞれハードウェアコンポーネント１０４、１０６からの応答）であってもよく、又は、各ハードウェアコンポーネントに対するチャレンジは、同一若しくは異なる独立したチャレンジであってもよい。あるいは、ハードウェアコンポーネント１０４は、その応答をハードウェアコンポーネント１０６にチャレンジとして送信してもよく、ハードウェアコンポーネント１０６がその応答をハードウェアコンポーネント１０８にチャレンジとして送信し、ハードウェアコンポーネント１０８がその応答をハードウェアコンポーネント１０２に返信してもよい。これについては、以下でさらに詳細に説明する。
【００３６】
ステップ４０８において、ハードウェアコンポーネント１０２は、応答を使用して暗号化されたファームウェアを復号し、続いて、ステップ４１０において、復号されたファームウェアを用いてブートシーケンスを続ける。もちろん、デバイス検証のチャレンジ応答部分を管理するハードウェアコンポーネントは、応答を利用し（ファームウェアを復号するこれらの実施形態において）、続いて、ミッションクリティカルな情報を使用する（復号されたファームウェアを用いてブートシーケンスを続ける実施形態においてハードウェアコンポーネントと同じハードウェアコンポーネントである必要がないことが理解される）。特定の実施形態及び要求に応じて、応答を使用し、及び、ミッションクリティカルな情報を復号することを使用するチャレンジ応答部分を管理することは、同一の、単一のハードウェアコンポーネントにおいて各タスクに対するそれぞれのハードウェアコンポーネントによって実行されてもよいし、又は、任意の数のハードウェアコンポーネント間で任意の適切な方法により配分されてもよい。
【００３７】
データ処理デバイス１００の条件付きのアクセスモジュールがコンテンツをユーザに提示させるためにコンテンツを復号するコンテンツキーを要求するいくつかの実施形態が、図４Ｂを参照して記載される。ステップ４０２からステップ４０６は、図４を参照した上述と同様のものである。ハードウェアコンポーネント１０２（又は、より一般的にはデバイス１００）は、ステップ４１２において、コンテンツキーを復号するために応答を使用し、ステップ４１４において、復号されたコンテンツキーを暗号化されたコンテンツを表示するために使用する。
【００３８】
ハードウェアコンポーネント１０２がチャレンジを送信し、ハードウェアコンポーネント１０４、１０６、１０８のそれぞれから応答を受信するいくつかの実施形態が、図５Ａ及び図５Ｂを参照して記載される。ハードウェアコンポーネント１０２は、ステップ５０２において、他のハードウェアコンポーネント１０４、１０６、１０８の１つにチャレンジを送信する。ステップ５０４においてチャレンジは、当該他のハードウェアコンポーネントに受信され、ステップ５０６において応答を生成する。
【００３９】
当該他のハードウェアコンポーネントは、ステップ５０８において、ハードウェアコンポーネント１０２に応答を返信し、ステップ５１０においてそれが受信される。ステップ５０２から５１０は、全ての応答がハードウェアコンポーネント１０２により受信されるまで繰り返される。上述したように、チャレンジは相互に独立しているので、応答は相互に独立しており、デバイスのインテグリティを検証するために共有して使用される（チャレンジが送信され、応答がインターリーブ又はパラレルに受信される場合）か、又は、最初のチャレンジを除く全てのチャレンジが、以前のハードウェアコンポーネント（又はその応答から導出された）から受信した応答であってもよく、チャレンジされる最後のハードウェアコンポーネントからの応答からの応答をデバイスの検証に用いられてもよい。
【００４０】
ハードウェアコンポーネント１０２は、ステップ５１２において、例えば、１又は複数の応答からデバイス検証キーを生成することにより、１又は複数の応答をミッションクリティカルな情報を復号するために使用し、ステップ５１４において、上述したように、ミッションクリティカルな情報を使用する。ステップ５１２及び５１４は、デバイスのインテグリティを検証する１又は複数の応答を使用する任意のステップで置き換えてもよいことに理解されたい。
【００４１】
図５Ａ、５Ｂを参照して上述した処理は、図１Ａ、１Ｂ、１Ｃを参照して上述したアーキテクチャのいずれかで実装され得る。図１Ａを参照して上述したチェーン接続の構成でこの処理を実装した特定の実施形態について、図６を参照して記載する。ハードウェアコンポーネント１０２は、マスタとして動作し、ハードウェアコンポーネント１０４、１０６、１０８のそれぞれは、ハードウェアコンポーネント１０２で開始し、ハードウェアコンポーネント１０２で終了するチェーンを形成するように接続され、それぞれ応答関数Ａ、Ｂ、Ｃを実装する（Ｉ）。
【００４２】
ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０４にチャレンジを送信し、ハードウェアコンポーネント１０４は、当該チャレンジに応答関数Ａを適用する。次に、応答は、単に応答を通過させるハードウェアコンポーネント１０４、１０６を介してハードウェアコンポーネント１０２へと返送される（ＩＩ）。次に、ハードウェアコンポーネント１０２は、チャレンジを、チャレンジを通過させるハードウェアコンポーネント１０４を介してハードウェアコンポーネント１０６に送信する。ハードウェアコンポーネント１０６は、当該チャレンジに応答関数Ｂを適用し、応答は、応答を通過させるハードウェアコンポーネント１０８を介してハードウェアコンポーネント１０２へと返送される（ＩＩＩ）。同様にして、ハードウェアコンポーネント１０８は、ハードウェアコンポーネント１０４、１０６を通過するチャレンジを受信し、ハードウェアコンポーネント１０８によって応答関数Ｃを適用されることにより生成される応答をハードウェアコンポーネント１０２へと返送する（ＩＶ）。次に、ハードウェアコンポーネント１０２は、当該応答（又は、場合によっては、最後の応答）を使用して、上述したようにデバイスのインテグリティを検証する（Ｖ）。いくつかの実施形態において、応答関数は、入力（チャレンジ）をハードウェアコンポーネントに特有のキーと組み合わせ、組み合わせのハッシュを生成するか、そうで無ければ、応答を上述したように生成する。
【００４３】
様々な物理層及びプロトコルは、上記したようなチェーン構成を実施することが可能であり、一例として、ＩＥＥＥ標準１１４９．１に規定されている。ＩＥＥＥ標準１１４９．１の仕様を使用して実装されうる特定の実施形態について、図７を参照して記載する。
【００４４】
図７を参照すると、ハードウェアコンポーネント１０４、１０６、１０８のそれぞれは、入力ピン７０２、出力ピン７０４、及び、入力ピン７０２と出力ピン７０４との間を接続することが可能な複数のシフトレジスタ７０６を有する。各後続ハードウェアコンポーネント、例えば、ハードウェアコンポーネント１０６の入力ピン７０２は、チェーン内の各先行ハードウェアコンポーネント、例えば、ハードウェアコンポーネント１０４の出力ピンと、データ線（導体）７０８により接続される。チェーン内の最後のハードウェアコンポーネント１０８の出力ピンは、データ線７１０によりハードウェアコンポーネント１０２のデータ入力Ｉに接続される。最初のハードウェアコンポーネントである、ハードウェアコンポーネント１０４の入力は、データ線７１２を介してハードウェアコンポーネント１０２のデータ出力Ｏに接続される。
【００４５】
各ハードウェアコンポーネント１０４、１０６、１０８は、ハードウェアコンポーネント１０２が各ハードウェアコンポーネントの命令シフトレジスタ（図示しない）に命令をロードすることが可能な第１モードを含む、いくつかのモードを有する。ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０４、１０６、１０８のピン７０２、７０４及びそれぞれの命令シフトレジスタを介して、その出力Ｏからその入力Ｉへとビットをシフトすることにより、そのように行うように構成される。第２モードにおいて、ハードウェアコンポーネント１０２は、データ、特にチャレンジを、各ハードウェアコンポーネント１０４、１０６，１０８内に現在ロードされている命令に関連するデータシフトレジスタにロードすることができる。ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０４、１０６、１０８のピン７０２、７０４及びそれぞれのデータシフトレジスタを介して、その出力Ｏをその入力Ｉへとビットをシフトすることにより、そのように行うように構成される。したがって、第１モードにおいて命令シフトレジスタにロードされた命令は、第２モードにおいてどのデータシフトレジスタのデータがシフトスルーされるかを決定するスイッチのように動作する。
ハードウェアコンポーネント１０４のデータシフトレジスタにデータがシフトされると、ハードウェアコンポーネント１０４のデータシフトレジスタ内の以前のデータは、ハードウェアコンポーネント１０６データシフトレジスタに漸進的にシフトされ、その他同様にシフトし、それに伴い、ハードウェアコンポーネント１０８のデータシフトレジスタ内のデータは、ハードウェアコンポーネント１０８のデータシフトレジスタからシフトアウトされ、ハードウェアコンポーネント１０２の入力Ｉへと戻ってくることに、理解されたい。第３モードにおいて、各ハードウェアコンポーネント１０４、１０６、１０８は、それぞれのデータシフトレジスタ内のデータを処理して応答を生成し、データシフトレジスタ内に当該応答を書き戻すようにされる。
【００４６】
各ハードウェアコンポーネント１０４、１０６、１０８におけるビットのシフト及びモードの変更は、ハードウェアコンポーネント１０２によって、モード選択線７１２によってハードウェアコンポーネント１０４、１０６、１０８のモード選択ピン７１４のそれぞれと接続されるハードウェアコンポーネント１０２のモード選択ピンＭＳにおける信号により、制御される。ハードウェアコンポーネント１０４、１０６、１０８のモードは、ステートマシンにより制御され、状態遷移は、ハードウェアコンポーネント１０４、１０６、１０８のクロックピン７１８にそれぞれにクロック線７１６により接続されるクロックピンＣＫにおけるクロック信号（先行及び／又は下降エッジにおいて）によってクロックされたモード選択ピンＭＳの値により、決定される。
【００４７】
いくつかの実施形態において、ハードウェアコンポーネント１０４、１０６、１０８は、ＩＥＥＥ標準１１４９．１仕様を実装し、マスタとして動作するハードウェアコンポーネント１０２は、そのＭＳ及びＣＫピンにおいてＩＥＥＥ標準１１４９．１により特定されるＴＭＳ及びＴＣＫ信号をハードウェアコンポーネント１０４、１０６、１０８に供給し、ハードウェアコンポーネント１０４、１０６、１０８のピン７１４、７１８は、それぞれＩＥＥＥ１１４９．１にしたがったＴＭＳ及びＴＣＫピンである。さらに、これらの実施形態において、ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０４（チェーン内の最初のハードウェアコンポーネント）のＩＥＥＥ標準１１４９．１に規定されるＴＤＩピン７０２と、そのＯピンが接続され、ハードウェアコンポーネント１０８（チェーン内の最後のハードウェアコンポーネント）のＩＥＥＥ標準１１４９．１に規定されるＴＤＯピン７０４と、そのＩピンが接続され、チェーンからのデータを戻すように受信する。これらの実装において、各ハードウェアコンポーネントは、ＩＥＥＥ標準１１４９．１に要求される最小の命令セットを実装する。いくつかの実施形態において、ハードウェアコンポーネント１０４、１０６、１０８は、部分的にＩＥＥＥ標準１１４９．１準拠しており、最小の命令セットの一部のみが実装されているか、又は、実装されていない。ハードウェアコンポーネント１０２は、ＩＥＥＥ標準１１４９．１自体にしたがってＴＡＰを実装する必要は無いが、ＩＥＥＥ標準１１４９．１を使用してＴＡＰとして動作するハードウェアコンポーネント１０４、１０６、１０８との通信を駆動するマスタとしてのみ動作してもよい。もちろん、ハードウェアコンポーネント１０２は、
例えば、外部テストハードウェアコンポーネントのような追加的なハードウェアコンポーネントによるテスト目的で駆動される別個のＴＣＫ、ＴＭＳ、ＴＤＩ及びＴＤＯピンを備えるＴＡＰそれ自体もまた実装してもよい。このようないくつかの実施形態において、ＴＣＫ、ＴＭＳ、ＴＤＯ及びＴＤＩピンの１又は複数（又は全て）は、ハードウェアコンポーネント１０２のＣＫ、ＭＳ、Ｏ及びＩピンのうち関連する１つと同じであってもよく、コンポーネント１０２は、コンポーネント１０４、１０６、１０８からの応答を引き出す第１モードと、ＴＡＰのチェーン内のＴＡＰとして動作し、これらのコンポーネントのＴＭＳ及びＴＣＫピンを駆動しない第２モードを有していてもよい。例えば、コンポーネント１０２は、第２モードにおいてＴＣＫ、ＴＭＳ及びＴＤＯピンとしてＣＫ、ＭＳ及びＯピンを使用してもよく、チェーン内の先行するＴＡＰに接続された別個のＴＤＩピンを有し、第２モードにおいて、Ｉピン上の応答のリスンを停止してもよい。
【００４８】
ＩＥＥＥ標準１１４９．１の命令セットに準拠しているかどうかに拘わらず、いくつかの実施形態において、ハードウェアコンポーネント１０４、１０６、１０８は、命令（該当する場合）に対応するデータシフトレジスタ７０６内におけるチャレンジを処理するカスタム命令（「プロセスチャレンジ」）を実装し、チャレンジに対する応答を生成し、チャレンジの代わりにデータシフトレジスタへ当該応答を書き込む。いくつかの実施形態において、以下にさらに詳しく記載されるように、さらに、カスタム命令は、処理されているデータシフトレジスタ内のデータを引き起こすことなく、プロセスチャレンジ命令としてデータシフトレジスタを選択する、応答（「プロセスチャレンジホールド」）を保持する。いくつかの実施形態において、ＩＥＥＥ標準１１４９．１のＢＹＰＡＳＳ命令及び対応するシングルビットシフトレジスタが実装され、使用される。
【００４９】
図６及び図７を参照して説明した構成を使用し、図５Ａ及び図５Ｂを参照して上述したプロセス（ハードウェアコンポーネント１０４、１０６、１０８からの応答を収集するハードウェアコンポーネント１０２）を実装するいくつかの実施形態のデバイスの状態について、図８を参照して記載する。これらの実施形態において、上述したように、チャレンジは、先行するハードウェアコンポーネントから受信した応答である後続のハードウェアコンポーネントに送信されるが、これらの実施形態は、先行するハードウェアコンポーネントからの応答を独立したチャレンジに置き換えることにより、各ハードウェアコンポーネントに独立したチャレンジを送信することに等しく適用可能であることを理解されたい。
【００５０】
第１状態において、ハードウェアコンポーネント１０２は、プロセスチャレンジ命令をハードウェアコンポーネント１０４の命令レジスタにシフトし、バイパス命令をハードウェアコンポーネント１０６、１０８の命令レジスタにシフトする。次に、ハードウェアコンポーネント１０２は、チャレンジをハードウェアコンポーネント１０４内のプロセスチャレンジ命令に関連するデータレジスタにシフトし、ハードウェアコンポーネント１０４からシフトされたビットは、ハードウェアコンポーネント１０６、１０８のバイパスデータレジスタを介してシフトされ、チェーンの出力は、ハードウェアコンポーネント１０２により破棄される。次に、プロセスチャレンジ命令は、ハードウェアコンポーネント１０４に関数Ａの出力として応答を生成させ、第２状態への繊維中にシフトデータレジスタ（「ａ応答」）を書き込む。
【００５１】
第２デバイス状態において、ハードウェアコンポーネント１０２は、ヌル又はダミーデータを、ハードウェアコンポーネント１０４によって生成された応答をハードウェアコンポーネント１０２によりＩにおいてキャプチャされたチェーンの出力にシフトするために、ハードウェアコンポーネントのいずれの命令を変更することなく、ハードウェアコンポーネント１０４のシフトデータレジスタにシフトする。次に、プロセスチャレンジ命令をハードウェアコンポーネント１０４からハードウェアコンポーネント１０６にシフトし、かつ、バイパス命令をハードウェアコンポーネント１０６からハードウェアコンポーネント１０８にシフトするプロセスにおいて、ハードウェアコンポーネント１０２は、バイパス命令をハードウェアコンポーネント１０４の命令レジスタにシフトする。ハードウェアコンポーネント１０２はさらに、第２状態においてハードウェアコンポーネント１０４から受信した応答をハードウェアコンポーネント１０４のバイパスデータシフトレジスタを介してハードウェアコンポーネント１０６にシフトし、デバイスの第３状態をもたらす。第３状態から第４状態への遷移において、次に、ハードウェアコンポーネント１０６は、応答を生成し、それをプロセスチャレンジ命令（「ｂ応答」）に関連するデータシフトレジスタに書き込む。第２状態と同様に、第４状態において、次に、ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０６からの応答をシフトして入力Ｉへと戻し、図８に示す第５及び第６状態のハードウェアコンポーネント１０８と同様に処理を進める。
【００５２】
命令レジスタを通る命令をシフトするシーケンスは、上述したようないくつかの実施形態、すなわち、プロセスチャレンジ命令が１ハードウェアコンポーネントから次へとシフトさせるものであり、全てのハードウェアコンポーネントが同じプロセスチャレンジ命令を受信するものであるが、他の実施形態においては、ハードウェアコンポーネントのいくつか又は全てが互いに異なるプロセスチャレンジ命令を有し、命令レジスタのサイズがハードウェアコンポーネント間において異なるものである。それらの実施形態において、１ハードウェアコンポーネントから次へとプロセスチャレンジ命令をシフトすることよりも、各ハードウェアコンポーネントは、ハードウェアコンポーネントのチェーンを通して、ハードウェアコンポーネント１０２からの命令ビットをシフトすることによって、それ自体の特定のプロセスチャレンジ命令を受信することを可能とする。
【００５３】
第２、第４、第６状態において、ハードウェアコンポーネント１０４、１０６、１０８はそれぞれ、プロセスチャレンジ命令がロードされている間にデータレジスタにプッシュされたヌル又はダミーデータを使用した未使用の応答を生成することに注意されたい。これを防止するために、例えば、ハードウェアコンポーネントによって正確な応答状態を維持することを可能とするために、上述の第２、第４、第６状態において、上述したようなプロセスチャレンジホールド命令がプロセスチャレンジ命令の代わりに使用される。
【００５４】
プロセスチャレンジホールド命令を使用する代わりに、いくつかの実施形態においては、プロセスチャレンジに関連するデータシフトレジスタは、チャレンジ／応答のためのビットに加えて、データシフトレジスタの内容がデータシフトレジスタの更新時において処理されるか否かを示す追加ビットを有する。具体的には、追加ビットを含むチャレンジが最初にデータシフトレジスタにプッシュされると、追加ビットは、チャレンジが処理されることを示す値、例えば、１、にセットされる。データシフトレジスタを更新すると、ハードウェアコンポーネントは、追加ビットを読み取り、チャレンジが処理される値から決定し、チャレンジを処理してデータシフトレジスタに応答を書き戻し、追加ビットの値をフリップする。次の更新時には、新しいチャレンジがデータシフトレジスタにプッシュされていなければ、追加ビットはフリップされた値のままであり、ハードウェアコンポーネントが次の更新中（命令レジスタ内にまだプロセスチャレンジ命令がある）にデータシフトレジスタ内のデータを読み取ると、追加ビットの負リップされた値が検出されたことに応答して、ハードウェアコンポーネントによって応答のチャレンジ及び書き込みの処理が抑制される。もちろん、内部プロセスを追跡する他の方法／状態を処理しない方法も同様に可能となることは理解されたい。
【００５５】
図９を参照し、各応答が全ての以前の応答及びチャレンジに依存するように、チャレンジ応答のチェーンが引き出される実施形態を記載する。これらの実施形態は、図１Ａ、図１Ｂ、及び、図１Ｃを参照して上述されたアーキテクチャのいずれかを用いて実装され得る。例えば、応答は、ハードウェアコンポーネント１０４からハードウェアコンポーネント１０６へとバス１１０を介して（図１Ｃを参照）、又は、ハードウェアコンポーネント１０４からハードウェアコンポーネント１０６へと直接的に（図１Ａを参照）経路を取ることができる。後者は、以下でより詳細に説明する。
【００５６】
ステップ９０２において、マスタ、例えば、ハードウェアコンポーネント１０２は、チェーン内の最初のハードウェアコンポーネント、例えば、ハードウェアコンポーネント１０４にチャレンジを送信する。ステップ９０４において、ハードウェアコンポーネント１０４は、ハードウェアコンポーネント１０２からチャレンジを受信し、応答を生成し、当該応答は、チェーン内の次のハードウェアコンポーネント、この例においては、ハードウェアコンポーネント１０６に送信される。ステップ９０６において、チェーン内の次のハードウェアコンポーネントは、チェーン内の前のハードウェアコンポーネントからの応答を受信し（例えば、ハードウェアコンポーネント１０６がハードウェアコンポーネント１０４から応答を受信する）、その応答を生成し、次のハードウェアコンポーネントに送信する。これは、チェーン内の最後のハードウェアコンポーネントが前のハードウェアコンポーネントから受信し、その応答を生成するまで繰り返され、その応答がマスタまで返送される（この例ではハードウェアコンポーネント１０８がその応答を生成し、ハードウェアコンポーネント１０２に送信する）。
【００５７】
マスタは、ステップ９１０において、チェーン内の最後のハードウェアコンポーネントから応答を受信し、ステップ９１２において当該応答を使用してミッションクリティカルな情報を復号し、そして、ステップ９１４においてミッションクリティカルな情報が使用される。上記のように、ステップ９１２、９１４は、データ処理デバイス１００内のマスタハードウェアコンポーネント及び／又は異なるハードウェアコンポーネントのいずれかにおいて、デバイスのインテグリティを検証するために、当該応答が使用される任意のステップで置き換えることが可能であることについて理解されたい。同様に応答は、上記の方法のいずれかで生成することが可能である。
【００５８】
図１０を参照すると、図１Ａを参照して上述したアーキテクチャにおいて図９を参照して上述したプロセスを実装するいくつかの実施形態において、ハードウェアコンポーネント１０２は、マスタとして動作し、ハードウェアコンポーネント１０４、１０６、１０８は、それぞれチャレンジ応答関数Ａ、Ｂ、Ｃを実装する（Ｉ）。ハードウェアコンポーネント１０２は、ハードウェアコンポーネント１０４にチャレンジを送信し、ハードウェアコンポーネントに関数Ａを適用して応答を生成する（ＩＩ）。次に、応答は、ハードウェアコンポーネント１０４からハードウェアコンポーネント１０６に送信され、その応答関数Ｂがハードウェアコンポーネント１０４から受信した応答に適用される（ＩＩＩ）。ハードウェアコンポーネント１０６において応答関数Ｂにより生成された応答は、次に、ハードウェアコンポーネント１０８に送信され、応答関数Ｃが受信した応答に適用される（ＩＶ）。ハードウェアコンポーネント１０８により生成され、チャレンジ及びハードウェアコンポーネント１０４、１０６からの応答に依存する応答は、次にハードウェアコンポーネント１０２に送信され、使用される（Ｖ）。
【００５９】
いくつかの実施形態において、図１０を参照して上記した実施形態は、ハードウェアコンポーネント１０４、１０６、１０８を介したシフト命令及びチャレンジ／応答に基づいて、図７を参照した上述のチェーン状のハードウェアコンポーネントの構成を使用して実装される。このような実施形態の動作を、図１１を参照して記載する。具体的には、デバイスの第１状態において、プロセスチャレンジ命令は、各ハードウェアコンポーネント１０４、１０６、１０８の命令レジスタにシフトされ、チャレンジは、ハードウェアコンポーネント１０４のデータシフトレジスタにシフトされ、ダミー又はヌルデータは、ハードウェアコンポーネント１０６、１０８のデータシフトレジスタに、チェーンを介してシフトされる。第１デバイス状態から第２デバイス状態への遷移において、ハードウェアコンポーネント１０４は、その応答を生成し、それをそのデータシフトレジスタに書き込む。ハードウェアコンポーネント１０６、１０８もまた、ロードされたプロセスチャレンジ命令を有しているので、データシフトレジスタ内のデータに対する応答を生成するが、これは、未使用の応答であり、ビットがチェーンを介してシフトされると破棄される。
【００６０】
第２デバイス状態において、十分な数のビットがハードウェアコンポーネント１０４のデータレジスタにシフトされ、ハードウェアコンポーネント１０４によって生成された応答がハードウェアコンポーネント１０６のデータシフトレジスタにシフトする。ハードウェアコンポーネント１０４と同様に、第２デバイス状態から第３デバイス状態への遷移において、ハードウェアコンポーネント１０６は、そのデータレジスタの内容（ハードウェアコンポーネント１０４により生成された応答）に応答を生成し、それをそのデータレジスタに書き込む。第３デバイス状態において、いくつかのビットは、いくつかのビットが再度プッシュされ、ハードウェアコンポーネント１０６の応答をハードウェアコンポーネント１０８のデータレジスタに移動させ、次に、更新してその応答をそのデータレジスタに書き込み、続いて、第４デバイス状態において、さらなる数のビットがチェーンにプッシュされ、ハードウェアコンポーネント１０８により生成された応答をハードウェアコンポーネント１０８の出力にプッシュし、ハードウェアコンポーネントのチェーンの応答としてハードウェアコンポーネント１０２のＩピンにおいてキャプチャされるようにする。
【００６１】
図１１を参照して上述されたアプローチは、チェーンがプロセスチャレンジ命令で一度にロードされ、チャレンジ／応答が１ハードウェアコンポーネントから次へと移動するたびに全て実行されるという単純さの利点を有する。しかしながら、これは、排気されるプロセスチャレンジ命令の実行の複数の反復があることを意味する。これは、チェーン内のハードウェアコンポーネントにおける処理負荷が懸念され、又は、ハードウェアコンポーネントが内部状態を維持する必要がある、例えば、ブートサイクルにおいてのみプロセスチャレンジハードウェアコンポーネントの実行を１回だけ強いられ、若しくは、所与のハードウェアコンポーネントのそれぞれの後続の応答をそのハードウェアコンポーネントの１又は複数の前の応答に依存させる必要がある場合には、望ましくない。
【００６２】
１つのアプローチにおいて、図１２を参照して記載すると、命令のシーケンスは、対応するデータレジスタに前のハードウェアコンポーネントからの応答がロードされる前に、各ハードウェアコンポーネントがプロセスチャレンジ命令を実行しないように修正される。この目的のために、図１１を参照して上述された第１デバイス状態は、ハードウェアコンポーネント１０４（すなわち、チェーン内の最初のハードウェアコンポーネント）のみにプロセスチャレンジ命令をロードし、ハードウェアコンポーネント１０６、１０８にＩＥＥＥ標準１１４９．１を参照して上述したバイパス命令をロードすることによって修正される。
【００６３】
第２デバイス状態において、さらなるプロセスチャレンジ命令がハードウェアコンポーネント１０４の命令レジスタにシフトされ、それにより、プロセスチャレンジ命令がハードウェアコンポーネント１０４からハードウェアコンポーネント１０６の命令レジスタにシフトする。ハードウェアコンポーネント１０４からの応答は、以前のように、ハードウェアコンポーネント１０６のデータシフトレジスタにシフトされる。同様に、第３デバイス状態において、さらなるプロセスチャレンジ命令が命令レジスタのチェーンにシフトされ、プロセスチャレンジ命令がハードウェアコンポーネント１０６からハードウェアコンポーネント１０８の命令シフトレジスタにシフトされる。ハードウェアコンポーネント１０６のデータシフトレジスタからの応答は、再度、ハードウェアコンポーネント１０８のデータシフトレジスタにシフトされる。結果として、ハードウェアコンポーネント１０４は、状態１から状態２への遷移におけるその使用された（最初の）応答を生成し、ハードウェアコンポーネント１０６は、状態２から状態３への遷移におけるその使用された（最初の）応答を生成し、第３から第４デバイス状態への遷移において、ハードウェアコンポーネント１０８は、その使用された（最初の）応答を生成してそれをそのデータレジスタに書き込み、その後、ハードウェアコンポーネントの出力を通じてプッシュアウトされ、ハードウェアコンポーネント１０２のＩピンにおいて、第４デバイス状態におけるチェーンの応答としてキャプチャされる。
【００６４】
図１３を参照して記載されるさらなるアプローチにおいて、命令のシーケンスは、チェーンを介する応答の横断中に各ハードウェアコンポーネントがプロセスチャレンジ命令を１回だけ実行するように修正される。具体的には、第１デバイス状態は、図１２を参照した上述と同じであるが、第２デバイス状態において、プロセスチャレンジホールド命令がプロセスチャレンジ命令の代わりにハードウェアコンポーネント１０４の命令シフトレジスタにシフトされる。プロセスチャレンジホールド命令は、プロセスチャレンジ命令と同じデータレジスタを選択するが、それ以上の効果は生じさせない。プロセスチャレンジホールド命令をハードウェアコンポーネント１０４の命令シフトレジスタにシフトすることは、ハードウェアコンポーネント１０４からハードウェアコンポーネント１０６にプロセスチャレンジ命令をシフトする。第３、第４デバイス状態において、バイパス命令は、ハードウェアコンポーネント１０４の命令シフトレジスタにシフトされ、隣接したプロセスチャレンジホールド及びプロセスチャレンジ命令がシフトする度に、チェーンを下ってさらにシフトすることが、図１３の検査から理解されるであろう。
【００６５】
第１デバイス状態後の各デバイス状態において、いくつかのヌル又はダミービットは、最初のハードウェアコンポーネント１０４のデータシフトレジスタにシフトされ、１状態から次への遷移において、それぞれのハードウェアコンポーネントにより生成されたチャレンジを次のハードウェアコンポーネントにシフトさせ、すなわち、第２デバイス状態において応答をハードウェアコンポーネント１０４からハードウェアコンポーネント１０６へと、第３デバイス状態においてハードウェアコンポーネント１０６からハードウェアコンポーネント１０８へと、第４デバイス状態においてハードウェアコンポーネント１０８からハードウェアコンポーネント１０２のＩピンにおいてキャプチャされるように、シフトする。このようにして、プロセスチャレンジ命令は、１つのデバイス状態から次ぎのデバイス状態への遷移中において、あるハードウェアコンポーネントにのみ存在するので、チェーン内のハードウェアコンポーネントは、プロセスチャレンジ命令を、チャレンジ／応答がチェーンを経て遷移する時にただ１度実行する。
【００６６】
上述した実施形態の場合と同様に、プロセスチャレンジホールド命令の使用は、図８を参照して記載した実施形態について詳細に上述したように、データシフトレジスタの内容に対する応答を生成してデータシフトレジスタに書き込むべきか否かを示す追加ビットをデータシフトレジスタへ追加することで置き換えることができることに理解されたい。データシフトレジスタ内の追加ビットを使用する実施形態においては、応答は、ハードウェアコンポーネント１０２が適切に設定された追加ビットを含む新たなチャレンジを１又は複数のデータシフトレジスタにプッシュすることにより追加ビットがリセットされる（応答が生成され書き込まれるべきことを示すその値になる）まで、命令に関係なく１度だけ生成される。
【００６７】
以下の実施形態もまた、含まれる。
【００６８】
１  複数のデータ処理ハードウェアコンポーネントを備え、データ処理ハードウェアコンポーネントは、第１ハードウェアコンポーネント及び１又は複数の残りのハードウェアコンポーネントを備え、
第１ハードウェアコンポーネントは、チャレンジを１又は複数の残りのハードウェアコンポーネントに送信するように構成され、
それぞれの残りのハードウェアコンポーネントは、それぞれのチャレンジを受信して、チャレンジを処理して応答を生成するように構成され、
デバイスは、１又は複数の残りのハードウェアコンポーネントにより生成された１又は複数の応答に基づいて、デバイスのインテグリティを検証するように構成される、
データ処理デバイス。
【００６９】
２  暗号化された形式のミッションクリティカルな情報を格納するメモリを備え、
デバイス又はデバイスの１態様は、復号した形式のミッションクリティカルな情報を、機能するように要求し、デバイスは、１又は複数の残りのハードウェアコンポーネントにより生成された１又は複数の応答に基づいた１又は複数の検証キーを用いて、暗号化されたミッションクリティカルな情報を復号するように構成される、
項目１に記載のデータ処理デバイス。
【００７０】
３  ミッションクリティカルな情報は、デバイス又はデバイスの１態様が機能するために要求されるファームウェアを備える、項目２に記載のデータ処理デバイス。
【００７１】
４  ミッションクリティカルな情報は、ソフトウェア、ＢＩＯＳ、オペレーティングシステムカーネル、ハードウェアコンポーネントドライバ、ブートローダ及びコンテンツ復号キーを１又は複数備える、項目２又は項目３に記載のデータ処理デバイス。
【００７２】
５  条件付きアクセスデバイスを備え、ミッションクリティカルな情報は、条件付きアクセスデバイスが、データ処理装置を使用してコンテンツ消耗品へのアクセスを制御するための復号キーを備える、項目２、３又は４に記載のデータ処理装置。
【００７３】
６  ビデオデスクランブラを備え、ミッションクリティカルな情報は、ビデオデスクランブラがビデオ信号をデスクランブルするためのデスクランブルキーを備える、項目２から５のいずれかに記載のデータ処理デバイス。
【００７４】
７  最初の残りのハードウェアコンポーネントは、そのチャレンジを第１ハードウェアコンポーネントから受信するように構成され、
各後続の残りのハードウェアコンポーネントによって受信されるチャレンジは、それぞれの先行する残りのハードウェアコンポーネントによって生成される応答であり、
最後の残りのハードウェアコンポーネントは、その応答を第１ハードウェアコンポーネントに送信するように構成され、
デバイスは、残りのハードウェアコンポーネントのうち最後のものから受信した応答を使用してデバイスのインテグリティを検証するように構成される、
項目１から項目６のいずれかに記載のデータ処理装置。
【００７５】
８  各後続の残りのハードウェアコンポーネントは、それぞれの先行する残りのハードウェアコンポーネントによって生成された応答を、それぞれの先行する残りのハードウェアコンポーネントから受信するように構成されている、項目７に記載のデータ処理装置。
【００７６】
９  各残りのハードウェアコンポーネントは、その応答を生成するためにそのチャレンジに非推移的な関数を適用するように構成されている、項目７又は項目８に記載のデータ処理装置。
【００７７】
１０  残りのハードウェアコンポーネントは、
第１ハードウェアコンポーネントの出力に接続された、チェーン内の最初の残りのハードウェアコンポーネントの入力と、
チェーン内のそれぞれの先行する残りのハードウェアコンポーネントの出力に接続された、チェーン内の各後続の残りのハードウェアコンポーネントの入力と、
チェーン内の残りのハードウェアコンポーネントの最後のものの出力に接続された第１ハードウェアコンポーネントの入力と、
に、チェーン内において接続され、
第１ハードウェアコンポーネントは、
チェーン内の最初の残りのハードウェアコンポーネントの入力にチャレンジを送信し、
第１ハードウェアコンポーネントの入力において、残りのハードウェアコンポーネントによって生成された１又は複数の応答を受信するように構成される、
項目１から項目９のいずれかに記載のデータ処理デバイス。
【００７８】
１１  各残りのハードウェアコンポーネントは、
命令セットの命令を受信するための命令シフトレジスタであって、チャレンジを処理し、応答を生成するための少なくとも１つのプロセスチャレンジ命令を含む命令セットと、
プロセスチャレンジ命令に対応してチャレンジを受信するためのデータシフトレジスタと、
を備え、
残りの各ハードウェアコンポーネントは、
第１モードでは、その入力から命令シフトレジスタに一度に１ビットシフトし、命令シフトレジスタからその出力に一度に１ビットシフトし、
第２モードでは、その入力からデータシフトレジスタに一度に１ビットシフトし、データシフトレジスタからその出力に一度に１ビットシフトし、
第３モードでは、プロセスチャレンジ命令が、命令シフトレジスタ内にあるときに、データシフトレジスタ内のチャレンジを読み出し、チャレンジを処理して応答を生成し、その応答をデータシフトレジスタに書き込む、
ように構成され、
第１ハードウェアコンポーネントは、残りのハードウェアコンポーネントのモードを、
それぞれの命令を命令シフトレジスタにシフトし、
チャレンジをデータシフトレジスタにシフトし、
残りのハードウェアコンポーネントに、応答を生成するためにチャレンジを処理させ、
データシフトレジスタからの応答をシフトし、それにより、１又は複数の応答を残りのハードウェアコンポーネントから受信する、
制御をするように構成され、
第１ハードウェアコンポーネントは、全ての残りのハードウェアコンポーネントのモードを全ての残りのハードウェアコンポーネントに共通のモード制御線を介して一緒に制御するように構成される、
項目１０に記載のデータ処理デバイス。
【００７９】
１２  第１ハードウェアコンポーネントは、
チャレンジを、最初の残りのハードウェアコンポーネントのデータシフトレジスタにビット単位でシフトさせ、
最初の残りのハードウェアコンポーネントに、チャレンジを処理させ、そのデータシフトレジスタにその応答を書き込ませ、
チェーン内のそれぞれの先行するハードウェアコンポーネントのデータシフトレジスタからの応答を、チェーン内のそれぞれの後続のデータシフトレジスタにビット単位でシフトさせ、
各後続のハードウェアコンポーネントに、そのデータシフトレジスタへの応答を書き込むチャレンジとして、データシフトレジスタ内のそれぞれの先行するハードウェアコンポーネントからの応答を処理させ、
チェーン内の最後の残りのハードウェアコンポーネントのそれぞれのデータシフトレジスタに書き込まれた応答を、最初のハードウェアコンポーネントの入力にビット単位でシフトさせる、
項目１１に記載のデータ処理デバイス。
【００８０】
１３  最初のハードウェアコンポーネントは、チェーン内のそれぞれの先行するハードウェアコンポーネントがその応答をそのデータレジスタに書き込まれる前ではないときに、プロセスチャレンジ命令をチェーン内の後続の残りのハードウェアコンポーネントによって実行させるように構成される、項目１２に記載のデータ処理デバイス。
【００８１】
１４  第１ハードウェアコンポーネントは、チェーン内の各残りのハードウェアコンポーネントに、チャレンジをチェーン内の最初の残りのハードウェアコンポーネントのデータシフトレジスタにシフトすることと、チェーン内の最後の残りのハードウェアコンポーネントのデータシフトレジスタに書き込まれた応答を第１ハードウェアコンポーネントにシフトすることとの間に、プロセスチャレンジ命令をただ１度実行させるように構成される、項目１２に記載のデータ処理デバイス。
【００８２】
１５  複数のハードウェアコンポーネントは、集積回路、マイクロプロセッサ、中央処理装置、システムオンチップ、条件付きアクセスコンポーネント、デスクランブラコンポーネント、グラフィックコンポーネント、ビデオコンポーネント及びフィールドプログラマブルゲートアレーコンポーネントの１又は複数を備える、項目１から項目１４のいずれかに記載のデータ処理デバイス。
【００８３】
１６  残りのハードウェアコンポーネントは、チャレンジを処理して、チャレンジと残りのハードウェアコンポーネントに関連するハードウェアコンポーネントキーとを併せたハッシュ、望ましくは、暗号化ハッシュ関数、例えば、ＭＤ５、ＳＨＡ−０、ＳＨＡ−１、ＳＨＡ−２又はＳＨＡ−３を使用したハッシュを備える応答を生成する、項目１から項目１５のいずれかに記載のデータ処理デバイス。
【００８４】
１７  物理層内に最初の及び残りのハードウェアコンポーネント間、並びに、残りのハードウェアコンポーネント間の通信が実装され、ＩＥＥＥ１１４９．１（ＪＴＡＧ）仕様書に準拠し、各残りのハードウェアコンポーネントは、ＴＭＳ、ＴＣＫ、ＴＤＩ及びＴＤＯピン、並びに、仕様書に準拠したステートマシンを備える、項目１から項目１６のいずれかに記載のデータ処理デバイス。
【００８５】
１８  １又は複数のチャレンジを、複数のハードウェアコンポーネントに送信するステップと、
複数のハードウェアコンポーネントから応答を受信するステップと、
データ処理装置のインテグリティを検証するために、応答を使用するステップと、
を備える、複数のハードウェアコンポーネントを有するデータ処理デバイスのインテグリティを検証する方法。
【００８６】
１９  複数のハードウェアコンポーネントからの応答は、それぞれの各複数のハードウェアコンポーネントからの応答を組み合わせる、項目１８に記載の方法。
【００８７】
２０  応答を受信するステップは、複数のハードウェアコンポーネントの１つから応答を受信するステップを備え、複数のハードウェアコンポーネントの１つからの応答は、他の複数のハードウェアコンポーネントからの応答のそれぞれに依存する、項目１８又は項目１９に記載の方法。
【００８８】
２１  複数のハードウェアコンポーネントは、シーケンス内の応答を提供し、シーケンスの後続のハードウェアコンポーネントは、チャレンジとして一連の事前のハードウェアコンポーネントの応答を受信し、受信したチャレンジに反応する応答を生成する、項目２０に記載の方法。
【００８９】
２２  受信したチャレンジに反応する応答は、受信したチャレンジの非推移的な関数として生成される、項目２１に記載の方法。
【００９０】
２３  複数のハードウェアコンポーネントの応答を使用して、デバイス又はデバイスの１態様の操作のための復号された形式で要求される情報を復号するステップを備える、項目１８から項目２２のいずれかに記載の方法。
【００９１】
２４  複数のハードウェアコンポーネントは、集積回路、マイクロプロセッサ、中央処理装置、システムオンチップ、条件付きアクセスコンポーネント、デスクランブラコンポーネント、グラフィックコンポーネント、ビデオコンポーネント及びフィールドプログラマブルゲートアレーコンポーネントの１又は複数を備える、項目１８から項目２３のいずれかに記載の方法。
【００９２】
２５  チャレンジから応答を生成する、応答を生成するステップは、チャレンジをハードウェアコンポーネントキーと合わせてハッシュ化するステップを備え、望ましくは、暗号化ハッシュ機能、例えば、ＭＤ５、ＳＨＡ−０、ＳＨＡ−１、ＳＨＡ−２又はＳＨＡ−３を使用するステップである、項目１８から項目２４に記載の方法。
【００９３】
いくつかの実施形態の上記に特定した記載を読むことにより、上記の実施形態及び特徴の多くの変形、修正及び並置が可能であり、添付の特許請求の範囲内であることが当業者には明らかであろう。特に、開示された物理的実装及びプロトコルのいずれかを使用して、複数のハードウェアコンポーネントからの応答（個々の応答又は残りの応答に応じた応答）を収集するための多くのアプローチが説明されていることは明らかであろう。この応答は、応答がどのように収集されるか、又は、応答を収集するための使用されるインフラストラクチャに拘わらず、上記に開示された様々な方法のいずれかにおいて使用することが可能である。
【図１ａ】
2018537793.tif 000003
【図１ｂ】
2018537793.tif 000004
【図１ｃ】
2018537793.tif 000005
【図２】
2018537793.tif 000006
【図３】
2018537793.tif 000007
【図４ａ】
2018537793.tif 000008
【図４ｂ】
2018537793.tif 000009
【図５ａ】
2018537793.tif 000010
【図５ｂ】
2018537793.tif 000011
【図６】
2018537793.tif 000012
【図７】
2018537793.tif 000013
【図８】
2018537793.tif 000014
【図９】
2018537793.tif 000015
【図１０】
2018537793.tif 000016
【図１１】
2018537793.tif 000017
【図１２】
2018537793.tif 000018
【図１３】
2018537793.tif 000019
【国際調査報告】
2018537793.tif 000020
2018537793.tif 000021