コンピューターシステムのデバイスにおいて、前記デバイスの外部の監視エンティティから整合性要求を受信することと、前記デバイスの整合性測定手段を用いて前記デバイスのファームウェアの測定を行うとともに、測定結果を前記デバイスの記憶装置に記憶することと、前記デバイスの複数のポインター構造体を解析して、潜在的なセキュリティ違反が存在するか否かを判断することと、前記測定結果及び前記解析に関するステータス報告を前記監視エンティティに送信することと、を含む、方法。前記解析することは、前記複数のポインター構造体のうちのいずれかが前記測定されたファームウェアの外部のロケーションを指し示しているか否かを判断することを含む、請求項1に記載の方法。前記複数のポインター構造体のうちの第1のものが、前記測定されたファームウェアの外部のロケーションを指し示している場合、前記デバイスのステータス記憶装置の第1のフィールドにおいて違反を特定することを更に含む、請求項2に記載の方法。前記デバイスの前記記憶装置から前記監視エンティティに前記測定結果を送信して、前記監視エンティティが、前記測定結果が前記デバイスのホワイトリスト内のエントリーに一致するか否かを判断することを可能にし、前記ホワイトリストは、対応するデバイスのファームウェアの測定結果をそれぞれ記憶する複数のエントリーを含むこと、を更に含む、請求項1から3の何れか1項に記載の方法。前記測定結果が、前記ホワイトリスト内のエントリーに一致しない場合、前記監視エンティティは、整合性違反を報告する、請求項4に記載の方法。前記測定結果が、前記ホワイトリスト内のエントリーに一致する場合、前記監視エンティティは、前記デバイスの動作を可能にする、請求項4に記載の方法。前記測定を行うことは、整合性コードブロックを実行する前記整合性測定手段を用いて、前記デバイスのファームウェア記憶装置に記憶された前記ファームウェアの暗号測定を行うことを含む、請求項1から6の何れか1項に記載の方法。前記デバイスから前記監視エンティティに前記ステータス報告を送信して、前記監視エンティティが、潜在的なポインター違反が示されているか否かを、前記複数のポインター構造体のポインターが前記測定されたファームウェアの領域を越えて展開されていることに基づいて判断することを可能にすること、を更に含む、請求項1から7の何れか1項に記載の方法。前記潜在的なポインター違反が示された場合、前記監視エンティティは、整合性違反を報告する、請求項8に記載の方法。前記コンピューターシステムの外部の前記監視エンティティから前記整合性要求を受信することを更に含む、請求項1から9の何れか1項に記載の方法。デバイスファームウェアを実行するマイクロコントローラーと、前記デバイスファームウェアを記憶する不揮発性記憶装置と、少なくとも1つの命令ポインターを記憶する第1のポインター構造体と、少なくとも1つの割り込みハンドラーポインターを記憶する第2のポインター構造体と、少なくとも1つの例外ハンドラーポインターを記憶する第3のポインター構造体とを含む複数のポインター構造体と、外部のセキュリティ監視エージェントから整合性有効検証要求を受信し、前記デバイスファームウェアを測定するとともに前記デバイスファームウェアの暗号測定を前記デバイスの第2の記憶装置に記憶し、前記複数のポインター構造体のうちのいずれかが前記測定されたデバイスファームウェアの外部のロケーションを指し示すか否かを判断するとともに、指し示す場合には、ステータスメッセージの対応するインジケータを設定し、前記暗号測定及び前記ステータスメッセージを前記外部のセキュリティ監視エージェントに報告する整合性手段と、を備える、デバイス。前記デバイスは、コンピューターシステムの周辺コントローラーハブPCHに結合された周辺デバイスを備え、前記PCHは、前記コンピューターシステムのプロセッサに結合され、前記外部のセキュリティ監視エージェントは、前記プロセッサ上で実行されるアンチウイルスソフトウェアである、請求項11に記載のデバイス。前記デバイスは、第1のコンピューターシステムの周辺デバイスを備え、前記外部のセキュリティ監視エージェントは、前記第1のコンピューターシステムにリモート結合された第2のコンピューターシステムのプロセッサ上で実行されるソフトウェアを含む、請求項11または12に記載のデバイス。前記整合性手段は、前記外部のセキュリティ監視エージェントからの前記整合性有効検証要求の受信にのみ応答して動作する固定機能ユニットを備える、請求項13に記載のデバイス。前記マイクロコントローラーは、前記整合性手段を備え、前記マイクロコントローラーは、前記デバイスファームウェアとは別個の整合性コードブロックの実行前において、前記整合性有効検証要求に応答してトラステッド状態になり、前記デバイスファームウェアの測定及び前記複数のポインター構造体の判断の後に前記トラステッド状態を終了する、請求項11から14の何れか1項に記載のデバイス。セキュリティソフトウェアを実行するプロセッサと、前記プロセッサに結合された周辺デバイスであって、ファームウェアイメージを実行するコントローラーと、前記ファームウェアイメージを記憶する不揮発性記憶装置と、前記セキュリティソフトウェアから整合性有効検証要求を受信し、前記ファームウェアイメージを測定して前記ファームウェアイメージの暗号測定を生成し、前記暗号測定を前記セキュリティソフトウェアに報告する整合性手段とを含む、周辺デバイスと、を備える、システム。前記周辺デバイスは、少なくとも1つの命令ポインターを記憶する第1のポインター構造体と、少なくとも1つの割り込みハンドラーポインターを記憶する第2のポインター構造体と、少なくとも1つの例外ハンドラーポインターを記憶する第3のポインター構造体と、を含む複数のポインター構造体を更に備え、前記周辺デバイスは、前記整合性有効検証要求に応答して前記複数のポインター構造体にアクセスし、潜在的なセキュリティ違反が存在するか否かを判断し、存在する場合には、前記潜在的なセキュリティ違反を前記セキュリティソフトウェアに報告する、請求項16に記載のシステム。前記潜在的なセキュリティ違反が報告された場合に、前記セキュリティソフトウェアは、整合性違反を報告し、前記潜在的なセキュリティ違反は、前記複数のポインター構造体のうちの少なくとも1つが前記ファームウェアイメージの外部のロケーションを指し示していることを示す、請求項17に記載のシステム。前記セキュリティソフトウェアは、前記暗号測定がホワイトリスト内のエントリーに一致していない場合には、整合性違反を報告し、前記暗号測定が前記ホワイトリスト内のエントリーに一致している場合には、前記周辺デバイスの動作を可能にする、請求項16から18の何れか1項に記載のシステム。前記周辺デバイスは、前記システムの周辺コントローラーハブPCHに結合されている、請求項16から19の何れか1項に記載のシステム。様々な実施形態では、ハードウェアデバイスは、外部の監視エージェント、例えば、外部のソフトウェアデバイスの外部にあるに、当該監視エージェントがそのハードウェアデバイス内で実行されているファームウェアの整合性に関して確実に調査することを可能にするメカニズムを暴露することができる。このように、アンチウイルスソフトウェア等の外部のセキュリティ監視ソフトウェアを用いて、コンピューティングエコシステムにおけるハードウェアデバイスの整合性違反又はセキュリティ破壊の招来compromisesを検出することができる。多種多様のハードウェアデバイスを、本明細書で説明する実施形態を用いて整合性検証することができることに留意されたい。限定ではなく例示のための例として、ハードウェアデバイスは、PC、又はプログラマブルコントローラーを備える他のコンピューターエコシステム内に存在する任意の形式のハードウェアとすることができる。そのようなデバイスは、アドインカード、システムのチップセットに結合された周辺デバイス、チップセット構成要素、中央処理ユニットCPU、若しくは他のそのようなデバイス、又はそれらの一部分によるものとすることができる。次に図1を参照すると、本発明の一実施形態による整合性評価を行う方法の流れ図が示されている。図1に示すように、方法100は、整合性チェックが行われるファームウェア又は他のソフトウェアを有するデバイスのハードウェア内で実施することができる。ファームウェアは、ランダムアクセスメモリRAM、読み出し専用メモリROM、フラッシュメモリ等の揮発性メモリ構造体又は不揮発性メモリ構造体に記憶されるとともにプロセッサ又はマイクロコントローラー等のプログラマブルロジックの監視制御を提供するルーチンを含む。ファームウェアという用語は、本明細書において用いられるとき、オペレーティングソフトウェア及び/又は監視ソフトウェア、又はデバイスの外部のエンティティが可視性を有しないデバイスコントローラー内で実行される他のソフトウェアを含むように意図されている。加えて、方法100は、コンピューターシステムに存在するか又はネットワークを介してコンピューターシステムにリモートアクセス可能な整合性ソフトウェア、例えばアンチウイルスソフトウェア等の外部のエンティティを介して部分的に更に実行することができる。他の実施形態では、整合性チェックを行うためのハードウェアサポートに加えて、例えば、ファームウェア自体の分離されたコードセクションを用いて、整合性解析の少なくとも一部分を行えることが可能である。すなわち、専用の整合性ロジックを有しない実施形態では、デバイスのマイクロコントローラーは、ROMに記憶された整合性ソフトウェアを実行する部分的にトラステッドな状態に一時的になれ得る。この整合性ソフトウェア又は測定コードは分割されていることに留意されたい。測定コードの実行後、測定情報が記録され、マイクロコントローラーは、非トラステッド状態に戻る。図1に見られるように、方法100は、外部のエンティティからの整合性要求をデバイスにおいて受信することによって開始することができるブロック110。本明細書における議論では、この外部のエンティティは、デバイスのファームウェアの整合性をテストしようとするシステムのプロセッサ上で実行されるアンチウイルスソフトウェアであるものと仮定する。上記デバイスは、本明細書における議論では、マイクロコントローラーを有するアドインカードであると仮定することができる。したがって、この要求は、マイクロコントローラーが受信することができる。この要求に応答して、デバイスの専用の整合性検証ロジックは、ファームウェアの測定を行うことができるブロック120。様々な実施形態では、この測定は、デバイスの1つ又は複数のプログラマブルコントローラーによって実行される1つ又は複数のイメージ例えば、デバイスファームウェア及び/又は他のコントローラーコードのハッシュ等の暗号測定とすることができる。異なる実施態様では、イメージの実際のハッシュを含むマニフェストをハッシュすることもできるし、イメージ自体を直接ハッシュすることもできる。そのようなハッシュは、整合性検証ロジックの組み込みハッシュ関数セキュアハッシュアルゴリズム1Sha1、Sha2、又は次世代暗号化標準ハッシュベースのメッセージ認証コードHMAC、暗号メッセージ認証コードCMAC等を用いて計算することができる。次に、測定結果は、デバイス記憶装置に記憶することができるブロック125。幾つかの実施形態では、このデバイス記憶装置は、整合性検証ロジック内のレジスタ又は整合性検証ロジックにのみアクセス可能なレジスタ等のセキュアな記憶装置とすることができる。しかしながら、他の実施形態では、この測定は、デバイスのスタティックランダムアクセスメモリSRAM等の別のロケーションに記憶することができる。このファームウェア測定に加えて、整合性検証ロジックは、コントローラーポインター構造体の解析を更に行うことができるブロック130。以下で更に説明するように、様々な実施形態では、これらのポインター構造体は、命令ポインター、割り込みポインター、及び例外ハンドリングポインターを含むことができる。これらの構造体のそれぞれは、当該構造体が、ファームウェア又はブロック120において上記測定を受けた他のコード内の対応するロケーションを指し示しているか否かを判断するために検査することができる。ポインターが、測定されたコードの外部のロケーションを指し示している場合、これは、攻撃者が、コードを変更することによってではなく、測定されたコードブロックの外部の新たなコードを追加するとともに、そのような潜在的に悪意のあるコードに制御をリダイレクトするようにポインターを変更することによって、改ざんを行うためのパスである場合がある。この非ファームウェアポインティング参照は、実際の違反でない場合があるが、潜在的なセキュリティ違反が存在することを示すものであり、システムを危険にさらすのに用いることができることに留意されたい。したがって、この解析に応答して、菱形ブロック140において、いずれかのポインターが、測定されたデバイスファームウェアの外部のロケーションを参照しているか否かを判断することができる。参照している場合には、制御はブロック150に移動し、このブロックにおいて、例えば、ステータスメッセージの対応するフィールドにおいて違反を識別することによって違反を示すことができる。菱形ブロック140及びブロック150の双方から、制御は、ブロック160に移動し、このブロックにおいて、測定結果及びステータスメッセージを外部のエンティティに送信することができる。外部のエンティティへのこの情報の報告は、デバイス上で実際に実行されているものに関する秘密も機密情報も暴露するものではないことに留意されたい。すなわち、提供される情報は、ファームウェアコードの実際の識別情報ではなく、コードの同一性情報又はコード自体のいずれもを含まないようにコードの測定とすることができる。方法100のプロセスにおいてこの時点から後は、外部のエンティティによって又は外部のエンティティの制御下で動作を行うことができる。最初に菱形ブロック165において、測定がデバイスファームウェアのホワイトリスト内のエントリーと一致するか否かを判断することができる。すなわち、外部のエンティティは、各エントリーが、コンピューターシステムに存在する様々なデバイス用のファームウェア等の認可されたコード片の測定された値に対応する様々なエントリーを有するデータ構造体を含むことができるか、又はそのようなデータ構造体にアクセスすることができる。又は、このホワイトリストは、コンピューターシステムから外部に配置することができ、外部のエンティティにアクセス可能とすることができる。ホワイトリストは、ベンダーが供給することもできるし、所与のデバイスが初めて実行される際、ランタイム中に動的に生成することもできる。測定結果が一致しないと判断された場合、制御は、ブロック190に直接移動し、このブロックにおいて、整合性欠如報告を、例えばシステムのユーザーに提供することができ、及び/又は改善策を取ることができる。本発明の範囲は、この点に限定されるものではなく、様々な実施態様では、そのような改善策は、システムのシャットダウン、問題になっているファームウェアのリロード、又はシステムが非トラステッド状態にあることの他のハードウェアエンティティ若しくはソフトウェアエンティティへのシグナリング等の別の動作を含むことができる。これは、他のエンティティがそれに応じて反応する例えば、セキュリティに配慮する必要がある動作を実行することを拒否することを可能にすることができる。他の実施形態では、報告を送信する代わりに、所定のロケーションに送信することができるログエントリーを生成することができることに留意されたい。反対に、菱形ブロック165において測定結果が一致する場合、制御は、菱形ブロック170に移動し、このブロックにおいて、ステータスメッセージが違反を示すか否かを判断することができる。示さない場合、制御は、ブロック180に移動し、このブロックにおいて、例えば、ユーザー若しくは別のロケーションへの報告を介して、若しくはデバイスの更なる実行を可能にすることによって、又は別の方法で、整合性を検証することができる。そうではなく、ステータスメッセージが違反を示す場合、制御は、上記で議論したブロック190に移動する。図1の実施形態におけるこの特定の実施態様を用いて示しているが、本発明の範囲は、この点に限定されるものではないことを理解されたい。上述したように、本発明の一実施形態による整合性検証は、多くの異なるタイプのコンピューティングシステムに適用可能とすることができる。次に図2を参照すると、本発明の一実施形態によるシステムのブロック図が示されている。システム200は、サーバーコンピューター、デスクトップコンピューター、ラップトップコンピューター、タブレット、ネットブックコンピューター、モバイルインターネットデバイス、スマートフォン等の任意のタイプのコンピューターシステムとすることができることに留意されたい。例示のため、図2において、システム200は、様々な構成要素が様々な相互接続を介して結合される周辺機器相互接続エクスプレスPCIExpress商標PCIe商標ベースのシステムとすることができる。そのようなシステムは、PCIe商標基本仕様バージョン2.02007年1月17日に公開に従うことができる。具体的には、図2の実施形態では、プロセッサ220は、バス230を介して入力/出力ハブIOH240に結合され、さらに、この入力/出力ハブは、バス250を介して周辺コントローラーハブPCH260に結合している。さらに、PCH260は、トラステッドプラットフォームモジュールTPM290及び他のデバイスに結合することができる。図に見られるように、これらの構成要素のそれぞれは、様々な内部デバイスを備えることができ、1つ又は複数の他のデバイスに更に結合することができる。そのような各デバイスは、PCI構成空間を含むこともできるし、PCI構成空間に関連付けることもできる。このPCI構成空間は、構成情報を含むことができるローカルメモリの一部分とすることができる。様々な実施形態では、そのような構成空間は、本発明の一実施形態による整合性報告構成体integrityreportingconstructを更に含むことができる。図2に見られるように、プロセッサ220は、1つ又は複数のスレッドの命令を実行する複数のコア2220~222nを備えることができる。加えて、プロセッサ220は、プロセッサコアの外部で実行されるプロセッサの様々なシステムエージェントロジックを備えることができるアンコア225を更に備えることができる。加えて、プロセッサ220は、システムメモリ235に結合することができる統合メモリコントローラーIMC228を更に備えることができる。このシステムメモリは、図2に示す実施形態では、ダイナミックランダムアクセスメモリDRAMとすることができる。図2の実施形態に更に見られるように、IOH240は、ダイレクトメディアインターフェースDMIプロトコルに従うことができるブリッジ245も備えることができる。図2に更に示すように、PCH260は、ブリッジ及びコントローラーを含む様々な構成要素を備えることができる。加えて、様々な周辺デバイスの制御機能を提供する仮想化エンジンVE262及び管理エンジンME264が存在し得る。図に見られるように、PCH260は、様々な機能を提供するとともにPCHに結合された様々なデバイスとインターフェースするコントローラー及びブリッジ268、270、272、274、及び276を更に備えることができる。具体的には、PCIe商標ブリッジ268が、特に、シリアルアドバンストテクノロジーアタッチSATAコントローラー270、拡張ホストコントローラーインターフェースXHCIコントローラー272、ローピンカウントLPCコントローラー276、及びシリアル周辺インターフェースSPIコントローラー274を含むコントローラーとともに存在し得る。幾つかの実施形態では、PCHを有する追加の構成要素は、センサー及び専用デバイスを備えることができる。例示のために、図2は、これらの異なるコントローラー及びブリッジに結合することができる様々なデバイスを更に示している。具体的には、ディスクドライブ又は他のマスストレージ等のSATA記憶装置280をSATAコントローラー270に結合することができ、XHCIデバイス282をXCHCIコントローラー272に結合することができ、SPIデバイス284をSPIコントローラー274に結合することができる。様々なデバイスをPCIe商標コントローラー292に結合することができ、さらに、このPCIe商標コントローラーは、PCIe商標ブリッジ268に結合している。図2に示す例では、そのようなデバイスは、システム200とネットワークの他のエージェントとの間の通信を可能にするネットワークインターフェースコントローラーNIC296を含むことができる。上記ネットワークは、有線ネットワーク、例えばローカルエリアネットワークLAN、無線LANWLAN等の無線ネットワーク、又はセルラーネットワーク等の広範囲無線ネットワーク等である。加えて、PCIe商標デバイス294は、PCIe商標コントローラーにも結合することができる。他の実施形態では、IOHは存在しなくてもよく、その代わりに、プロセッサ220は、DMI又は他のそのような相互接続を介してPCH250に直接結合することができる。上記ブリッジ、コントローラー、及びデバイスは、ロード可能なファームウェア、サポートパッチ、及び更新を有することができ、他のバス又はネットワークに接続することができる。そのため、デバイスに対する悪性rogueソフトウェアによる悪用又は他の攻撃のリスクが存在する。したがって、実施形態は、外部のエンティティを介して構成要素上で実行される少なくとも或る特定のコードの整合性を検証する能力を提供することができる。次に図3を参照すると、図2に関して上記で説明したデバイスのうちの任意のものに概ね対応することができる代表的なデバイス210のブロック図が示されている。デバイス210のそれぞれは、ファームウェア記憶装置に記憶された対応するファームウェアイメージと、構成空間213とを備えることができる。このファームウェア記憶装置は、このデバイスの不揮発性メモリとすることができる。実行中に、ファームウェアイメージは、スタティックランダムアクセスメモリSRAM等のより高速なメモリ、すなわちデバイスメモリ216に記憶することができる。加えて、これらのデバイスのうちの少なくとも幾つかは、本発明の一実施形態による整合性解析を行うことを援助するTPMプラットフォーム構成レジスタPCR211を備えることができる。図2にも見られるように、整合性測定ロジック214が存在する。この整合性測定ロジックは、外部のエンティティから受信されたトリガーに応答して、デバイスのファームウェア及び/又は他のコードに対して整合性チェックを行うハードウェアを備えることができる。一般に、整合性測定ロジックは、本発明の一実施形態による整合性解析を行うように構成された組み込み固定機能ハードウェアユニットとすることができる。そのような実施形態では、この固定機能ユニットは、外部のセキュリティ監視エージェント、例えばアンチウイルスソフトウェアからの要求の受信にのみ応答して動作することができる。加えて、デバイス210は、整合性測定ロジックによって行われた測定を記憶する1つ又は複数の整合性レジスタ215を備えることができる。幾つかの実施形態では、これらのレジスタは、TPMPCRに対応することができる一方、他の実施形態では、これらのレジスタは、異なる一組の構造体とすることができる。さらに、これらのレジスタのうちの少なくとも1つは、デバイスの他の様々な構造体のステータスを示すために整合性測定ロジックが記述することができる複数のフィールドを含むステータスメッセージを記憶するように構成することができる。具体的には、図3に更に見られるように、デバイス210は、複数のポインター構造体219a~219cを備えることができる。そのようなポインター構造体は、命令ポインター、割り込みポインター、及び例外ハンドリングポインターを含むことができる。これらの様々なポインターは、そのようなポインターを記憶するハードウェア構造体として説明されているが、他の実施形態では、例えば、そのような構造体に存在する様々なポインターが、測定されたコードの外部のロケーションを指し示していないことを確認する整合性解析動作中にアクセスされるローカルメモリに記憶することができることを理解されたい。更に図に見られるように、デバイス210は、デバイスファームウェアが動作することができる1つ又は複数のコントローラー218例えば、マイクロコントローラーを備えることができる。コントローラー218は、幾つかの実施形態では、縮小命令セットコンピューティングRISCモデル又は複合命令セットコンピューティングCISCモデルによるマイクロコードを含むことができるファームウェア制御下で動作することができる。コントローラー218は、様々なアプリケーション及び他のユーザーレベルのコード、又はホストプロセッサ若しくは他のロジックによってデバイスに提供される少なくともそのようなコードからの命令を更に実行することができる。ただし、一般に、コントローラー218上で実行されるとともに動作中にデバイスメモリ216に記憶された実行中のファームウェアの整合性を判断する実施形態に焦点を当てることができる。図3の実施形態では、これらの特定の構成要素を用いて示されているが、本発明の範囲は、この点に限定されるものではないことを理解されたい。図4は、本発明の1つの実施形態による整合性解析の更に詳細な内容を示すフロー図である。図4に示すように、方法300は、解析されるデバイスにトリガーを送信する外部のエンティティ、例えばソフトウェアによって開始することができるブロック305。しかし、本発明の範囲は、この点に限定されるものではなく、1つの実施形態では、ハードウェアデバイスは、例えば、PCIe商標メモリ管理入力/出力MMIOレジスタ複数の場合もあるを通じてトリガーを外部のソフトウェアに暴露することができる。これらのレジスタは、システム初期化中にホストシステムが構成することができることに留意されたい。したがって、ハードウェアデバイスは、このトリガーイベントを受信して、ハードウェアデバイス上で実行されるソフトウェア/ファームウェアの信頼性を判断する様々な動作を開始することができるブロック310。1つの動作として、デバイスの整合性ロジックは、ハードウェアデバイスの内部のマイクロコントローラー複数の場合もあるによって用いられる現在実行中の/アクティブなファームウェアプログラムコード内部のデバイスSRAMに記憶することができるの暗号測定cryptographicmeasure例えば、ハッシュ又はHMACを行うことができるブロック320。この暗号測定は、その後、例えば、整合性ロジックのレジスタ等の記憶装置に記憶することができるブロック325。この測定に加えて、ハードウェアデバイスは、報告例えば、ビットフラグ等の1つ又は複数のステータス指示子を含む、すなわち、主体のマイクロコントローラーの必要に応じてマイクロコントローラーの現在実行中の命令ポインター複数の場合もある、割り込みテーブルポインター複数の場合もある、及び例外ハンドラーポインター複数の場合もあるが、それぞれ、暗号測定を受けたファームウェアプログラムコードのアドレス範囲複数の場合もある内に含まれるロケーションを参照しているか否かを示す追加の実行ステータスメッセージを評価及び作成することができるブロック330。図に見られるように、これらのポインター評価は、菱形ブロック335及び340並びにブロック345を通ってループすることができる。ポインター解析が完了すると、制御はブロック350に移動し、このブロックにおいて、初期トリガーに対する応答として、暗号測定値及び実行ステータスメッセージを例えば、外部のソフトウェアによるその後のPCI/PCIエクスプレスMMIOレジスタ複数の場合もあるの読み出しを通じて外部のエンティティソフトウェアに報告することができる。もちろん、異なる実施形態では、外部のソフトウェア要求に応答して、追加の又は異なる動作をハードウェアデバイスにおいて実行することができる。さらに、整合性解析は、デバイス初期化の際、及び/又はアンチウイルスソフトウェアスキャンが実行されるごと等、システム動作中に他の時点において行うことができることに留意されたい。次に、制御はブロック360に移動し、このブロックにおいて、外部のソフトウェアは、この情報に基づいてデバイス整合性を判断することができる。一例示の使用シナリオとして、外部のソフトウェアの担当は、測定情報が受信されると、受信された測定情報を解析することである。一例として、ソフトウェアは、結果の暗号測定ハッシュ値を既知の/トラステッドなファームウェアハッシュ値のリストと比較して、このハッシュがこれらの値のうちの1つに一致するか否かを判断することができる。さらに、このソフトウェアは、実行ステータスフラグのいずれも、ハードウェアデバイスの内部のマイクロコントローラーが暗号測定を受けていないプログラムコードを参照/使用していることを示していないことを保証することができる。実行ステータスフラグの数及び性質は、マイクロコントローラーごとに変化する場合があることに留意されたい。例として、一実施形態は、単一の実行ステータスフラグを用いて、1つ又は複数のポインターによって全体で違反を表すことを選択することもできるし、1つの実行ステータスフラグを各ポインターに専用化してより粗い実行ステータス報告を行うことを選択することもできる。外部のソフトウェアが、測定されたハッシュが一致すると判断し、実行ステータスフラグが適切であると判断した場合、外部のソフトウェアは、ハードウェアデバイス上で実行されるファームウェアの整合性を受け入れることができる。したがって、外部のソフトウェアは、ハードウェアデバイス内の実行ファームウェアが危険にさらされたことがないか又はそれ以外でその整合性が悪影響を受けたことがないことを少なくとも合理的な確信をもって示すことができる。したがって、ハードウェア又はソフトウェアは、システムがセキュアな状態にある例えば、整合性が検証されていることを保証した後に、セキュリティに配慮する必要がある動作を実行することに進むことができる。実行ステータスフラグは、いずれかのマイクロコントローラー実行ポインター例えば、割り込みテーブルポインター、例外ポインター、実行命令ポインターが、測定を受けていないコードを参照しているか否かを示すことができる。このように、悪意のあるプログラムコードが、オリジナルのファームウェアプログラムコードを変更せず、その代わりに、SRAMの未測定のプログラムデータエリアに存在する代わりの悪意のあるコードを用いることを防止することができる。様々な実施形態では、ハードウェアデバイスにおいて行われる暗号測定は、ハードウェアデバイスのマイクロコントローラー複数の場合もあるSRAMに存在する静的なファームウェアプログラムコードのみを測定することができる。しかしながら、この測定は、SRAMに同様に存在するファームウェアプログラムデータを含まない場合がある。なぜならば、ランタイムプログラムデータを測定することは、無相関/非決定的な測定値をもたらす可能性があるからである。様々な実施形態では、外部のソフトウェア要求に応答して行われる整合性チェックは、ハードウェアが全体的に実施しサービス提供することができ、ハードウェアデバイスのマイクロコントローラーにおいて実行されるファームウェアによって動作に影響を受ける可能性もなければ、直接影響を受けた結果を有する可能性もない。このように、悪意のあるファームウェアが、報告されたそれ自体の測定に影響を与えることを防止することができる。しかしながら、他の実施形態では、マイクロコントローラー自体が、それ自体のSRAMコンテンツを測定するコードを実行することができる。しかしながら、この体制について、様々な前もって必要なものが存在する場合がある。例えば、測定プログラムコードは、非トラステッド状態中にマイクロコントローラーが変更することができない読み出し専用メモリROM領域又は別の領域に存在することができる。加えて、マイクロコントローラーは、現在の非トラステッド状態にかかわらず、マイクロコントローラーのタイプに応じて変化する可能性があるROM内の測定プログラムコードの正しくかつ正確な実行を保証するトラステッド状態になることができる。例えば、幾つかの実施形態では、このトラステッド状態は、システム管理モードSMM、認証済みコードモジュールACM等とすることができる。さらに、測定値は、測定プログラムコードを用いてトラステッド状態にあるマイクロコントローラーによって報告された後、マイクロコントローラーが前の非トラステッド状態を再開し/前の非トラステッド状態に戻ると、マイクロコントローラーが変更も上書きもすることができない。全体的に、トラステッド状態は、マイクロコントローラーに現在のファームウェア実行を停止させ、異なるファームウェアセットの実行に切り替えさせる、マイクロコントローラーの動作プロセスとして一般に定義することができる。ここで、第2のファームウェアセットは、第1のファームウェアの影響から完全に独立して動作する。第1のファームウェアセットは、非トラステッドと認識され、第2のファームウェアセットは、トラステッドと認識される。1つの実施形態では、非トラステッドファームウェアすなわち、測定される物の実行を中止し、非トラステッドファームウェアの実行に関係した全てのマイクロコントローラー状態を保存し、全てのマイクロコントローラー状態を新規なトラステッド値にリセット/再初期化することによって、トラステッド状態に入ることができる。様々な実施形態では、ハードウェアデバイスのマイクロコントローラーの詳細な動作状態の意図されていないあらゆるサイドチャネル情報開示シナリオsidechanneldisclosurescenariosを削減するために、プログラムコードSRAMコンテンツの暗号ハッシュ及び実行ステータスフラグのみをハードウェアデバイスと外部のソフトウェアとの間で通信することができる。したがって、様々な実施形態によれば、不要なデバイスリセットを回避することができ、ハードウェアデバイス内で実行されるファームウェアプログラムコードが変更されていないというより高レベルの可視性及び確信を達成することができ、よりトラステッドなコンピューティングエコシステムがもたらされる。実施形態は、多くの異なるシステムタイプで実施することができる。次に図5を参照すると、本発明の一実施形態によるシステムのブロック図が示されている。図5に示すように、マルチプロセッサシステム500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続550を介して結合された第1のプロセッサ570及び第2のプロセッサ580を備える。図5に示すように、プロセッサ570及び580のそれぞれは、第1のプロセッサコア及び第2のプロセッサコアすなわち、プロセッサコア574a及び574b並びにプロセッサコア584a及び584bを備えるマルチコアプロセッサとすることができるが、潜在的には、より多くのコアがこれらのプロセッサに存在することができる。そのようなプロセッサは、システム500の追加の構成要素のうちの1つ又は複数に存在する専用の整合性ハードウェアと通信することができるアンチウイルスソフトウェアを実行することができる。図5を更に参照すると、第1のプロセッサ570は、メモリコントローラーハブMCH572と、ポイントツーポイントP-Pインターフェース576及び578とを更に備える。同様に、第2のプロセッサ580は、MCH582と、P-Pインターフェース586及び588とを備える。図5に示すように、MCH572及び582は、プロセッサをそれぞれのメモリ、すなわちメモリ532及びメモリ534に結合する。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリ例えば、ダイナミックランダムアクセスメモリDRAMの一部分とすることができる。第1のプロセッサ570及び第2のプロセッサ580は、それぞれP-P相互接続552及び554を介してチップセット590に結合することができる。図5に示すように、チップセット590は、P-Pインターフェース594及び598を備える。一例として、チップセット590は、ファームウェア記憶装置598に記憶されたファームウェアの整合性を測定する整合性ロジック595を備えることができる。さらに、チップセット590は、P-P相互接続539によってチップセット590を高性能グラフィックスエンジン538と結合するインターフェース592を備える。さらに、チップセット590は、インターフェース596を介して第1のバス516に結合することができる。図5に示すように、様々な入力/出力I/Oデバイス514を、バスブリッジ518とともに第1のバス516に結合することができる。このバスブリッジは、第1のバス516を第2のバス520に結合する。例えば、キーボード/マウス522、通信デバイス526、及びデータ記憶ユニット528を含む様々なデバイスを第2のバス520に結合することができる。このデータ記憶ユニットは、例えば、本発明の一実施形態によるデバイスファームウェアセキュリティ動作を行うコード530を含むことができるディスクドライブ又は他のマスストレージデバイス等である。さらに、オーディオI/O524を第2のバス520に結合することができる。実施形態は、コードで実施することができ、命令を実行するようにシステムをプログラムするのに用いることができる当該命令が記憶された非一時的な記憶媒体上に記憶することができる。この記憶媒体は、フロッピー登録商標ディスク、光ディスク、ソリッドステートドライブSSD、コンパクトディスク読み出し専用メモリCD-ROM、再書込み可能コンパクトディスクCD-RW、及び光磁気ディスク、読み出し専用メモリROM、ダイナミックランダムアクセスメモリDRAM、スタティックランダムアクセスメモリSRAM等のランダムアクセスメモリRAM、消去可能プログラマブル読み出し専用メモリEPROM、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリEEPROM等の半導体デバイス、磁気カード若しくは光カード、又は電子命令を記憶するのに適した他の任意のタイプの媒体を含む任意のタイプのディスクを含むことができるが、これらに限定されるものではない。限られた数の実施形態に関して本発明を説明してきたが、当業者であれば、これらの実施形態から多数の変更及び変形を認識するであろう。添付の特許請求の範囲は、本発明の真の趣旨及び範囲に含まれる全ての変更及び変形をカバーすることを意図している。