(57)【特許請求の範囲】
【請求項１】
コンピューターシステムのデバイスにおいて、前記デバイスの外部の監視エンティティから整合性要求を受信することと、
前記デバイスの整合性測定手段を用いて前記デバイスのファームウェアの測定を行うとともに、測定結果を前記デバイスの記憶装置に記憶することと、
前記デバイスの複数のポインター構造体を解析して、潜在的なセキュリティ違反が存在するか否かを判断することと、
前記測定結果及び前記解析に関するステータス報告を前記監視エンティティに送信することと、
を含む、方法。
【請求項２】
前記解析することは、前記複数のポインター構造体のうちのいずれかが前記測定されたファームウェアの外部のロケーションを指し示しているか否かを判断することを含む、請求項１に記載の方法。
【請求項３】
前記複数のポインター構造体のうちの第１のものが、前記測定されたファームウェアの外部のロケーションを指し示している場合、前記デバイスのステータス記憶装置の第１のフィールドにおいて違反を特定することを更に含む、請求項２に記載の方法。
【請求項４】
前記デバイスの前記記憶装置から前記監視エンティティに前記測定結果を送信して、前記監視エンティティが、前記測定結果が前記デバイスのホワイトリスト内のエントリーに一致するか否かを判断することを可能にし、前記ホワイトリストは、対応するデバイスのファームウェアの測定結果をそれぞれ記憶する複数のエントリーを含むこと、を更に含む、請求項１から３の何れか１項に記載の方法。
【請求項５】
前記測定結果が、前記ホワイトリスト内のエントリーに一致しない場合、前記監視エンティティは、整合性違反を報告する、請求項４に記載の方法。
【請求項６】
前記測定結果が、前記ホワイトリスト内のエントリーに一致する場合、前記監視エンティティは、前記デバイスの動作を可能にする、請求項４に記載の方法。
【請求項７】
前記測定を行うことは、整合性コードブロックを実行する前記整合性測定手段を用いて、前記デバイスのファームウェア記憶装置に記憶された前記ファームウェアの暗号測定を行うことを含む、請求項１から６の何れか１項に記載の方法。
【請求項８】
前記デバイスから前記監視エンティティに前記ステータス報告を送信して、前記監視エンティティが、潜在的なポインター違反が示されているか否かを、前記複数のポインター構造体のポインターが前記測定されたファームウェアの領域を越えて展開されていることに基づいて判断することを可能にすること、を更に含む、請求項１から７の何れか１項に記載の方法。
【請求項９】
前記潜在的なポインター違反が示された場合、前記監視エンティティは、整合性違反を報告する、請求項８に記載の方法。
【請求項１０】
前記コンピューターシステムの外部の前記監視エンティティから前記整合性要求を受信することを更に含む、請求項１から９の何れか１項に記載の方法。
【請求項１１】
デバイスであって、
デバイスファームウェアを実行するマイクロコントローラーと、
前記デバイスファームウェアを記憶する不揮発性記憶装置と、
少なくとも１つの命令ポインターを記憶する第１のポインター構造体と、少なくとも１つの割り込みハンドラーポインターを記憶する第２のポインター構造体と、少なくとも１つの例外ハンドラーポインターを記憶する第３のポインター構造体とを含む複数のポインター構造体と、
外部のセキュリティ監視エージェントから整合性有効検証要求を受信し、前記デバイスファームウェアを測定するとともに前記デバイスファームウェアの暗号測定を前記デバイスの第２の記憶装置に記憶し、前記複数のポインター構造体のうちのいずれかが前記測定されたデバイスファームウェアの外部のロケーションを指し示すか否かを判断するとともに、指し示す場合には、ステータスメッセージの対応するインジケータを設定し、前記暗号測定及び前記ステータスメッセージを前記外部のセキュリティ監視エージェントに報告する整合性手段と、
を備える、デバイス。
【請求項１２】
デバイスであって、
デバイスファームウェアを実行するマイクロコントローラーと、
前記デバイスファームウェアを記憶する不揮発性記憶装置と、
外部のセキュリティ監視エージェントから整合性有効検証要求を受信し、前記デバイスファームウェアを測定するとともに前記デバイスファームウェアの暗号測定を前記デバイスの第２の記憶装置に記憶し、前記デバイスの複数のポインター構造体を解析して、潜在的なセキュリティ違反が存在するか否かを判断するとともに、存在する場合には、ステータスメッセージの対応するインジケータを設定し、前記暗号測定及び前記ステータスメッセージを前記外部のセキュリティ監視エージェントに報告する整合性手段と、
を備える、デバイス。
【請求項１３】
前記デバイスは、コンピューターシステムの周辺コントローラーハブ（ＰＣＨ）に結合された周辺デバイスを備え、前記ＰＣＨは、前記コンピューターシステムのプロセッサに結合され、前記外部のセキュリティ監視エージェントは、前記プロセッサ上で実行されるアンチウイルスソフトウェアである、請求項１１または１２に記載のデバイス。
【請求項１４】
前記デバイスは、第１のコンピューターシステムの周辺デバイスを備え、前記外部のセキュリティ監視エージェントは、前記第１のコンピューターシステムにリモート結合された第２のコンピューターシステムのプロセッサ上で実行されるソフトウェアを含む、請求項１１または１２に記載のデバイス。
【請求項１５】
前記整合性手段は、前記外部のセキュリティ監視エージェントからの前記整合性有効検証要求の受信にのみ応答して動作する固定機能ユニットを備える、請求項１４に記載のデバイス。
【請求項１６】
前記マイクロコントローラーは、前記整合性手段を備え、前記マイクロコントローラーは、前記デバイスファームウェアとは別個の整合性コードブロックの実行前において、前記整合性有効検証要求に応答してトラステッド状態になり、前記デバイスファームウェアの測定及び前記複数のポインター構造体の判断の後に前記トラステッド状態を終了する、請求項１１から１５の何れか１項に記載のデバイス。
【請求項１７】
セキュリティソフトウェアを実行するプロセッサと、
前記プロセッサに結合された周辺デバイスであって、ファームウェアイメージを実行するコントローラーと、前記ファームウェアイメージを記憶する不揮発性記憶装置と、前記セキュリティソフトウェアから整合性有効検証要求を受信し、前記ファームウェアイメージを測定して前記ファームウェアイメージの暗号測定を生成し、前記暗号測定を前記セキュリティソフトウェアに報告する整合性手段とを含む、周辺デバイスと、
を備え、
前記周辺デバイスは、前記整合性有効検証要求に応答して前記周辺デバイスの複数のポインター構造体にアクセスし、潜在的なセキュリティ違反が存在するか否かを判断し、存在する場合には、前記潜在的なセキュリティ違反を前記セキュリティソフトウェアに報告する、システム。
【請求項１８】
前記複数のポインター構造体は、
少なくとも１つの命令ポインターを記憶する第１のポインター構造体と、
少なくとも１つの割り込みハンドラーポインターを記憶する第２のポインター構造体と、
少なくとも１つの例外ハンドラーポインターを記憶する第３のポインター構造体と、
を含む、請求項１７に記載のシステム。
【請求項１９】
前記潜在的なセキュリティ違反が報告された場合に、前記セキュリティソフトウェアは、整合性違反を報告し、前記潜在的なセキュリティ違反は、前記複数のポインター構造体のうちの少なくとも１つが前記ファームウェアイメージの外部のロケーションを指し示していることを示す、請求項１８に記載のシステム。
【請求項２０】
前記セキュリティソフトウェアは、前記暗号測定がホワイトリスト内のエントリーに一致していない場合には、整合性違反を報告し、前記暗号測定が前記ホワイトリスト内のエントリーに一致している場合には、前記周辺デバイスの動作を可能にする、請求項１７から１９の何れか１項に記載のシステム。
【請求項２１】
前記周辺デバイスは、前記システムの周辺コントローラーハブ（ＰＣＨ）に結合されている、請求項１７から２０の何れか１項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
現代のコンピューターシステムは、パーソナルコンピューター（ＰＣ）ベースのフォームファクターと、タブレットコンピューター、ネットブック、モバイルインターネットデバイス等のそれよりも新しいフォームファクターとの双方において、通常は、様々なタイプの処理回路部、メモリ、グラフィックス処理等を含む複数の半導体構成要素を備える。加えて、時間とともに、プロセッサ及び或る特定の構成要素等の多くの半導体構成要素が、ディスクリートデバイスによってハンドリングされるのに用いられる多くの機能を組み込んできた。例えば、割り込み制御機能、ネットワークインターフェーシング機能、チップセット等のインターフェース回路部の機能、メモリコントローラー機能等の様々な周辺機器機能は、現在、多くの場合に、単一の半導体構成要素、例えばマルチコアプロセッサ内に実装することができる。
【０００２】
加えて、所与のコンピューターシステムは、アドバンストグラフィックス処理カード、ネットワーキングカード、及び他の周辺デバイス等のアドインカードを介してシステム内に存在する他の半導体構成要素等の様々なハードウェアデバイスを有することができる。その結果、半導体デバイスの外部及び内部の双方におけるこれらの様々な構成要素は、ファームウェア又は他の監視ソフトウェアに従って目的とする動作を実行するマイクロコントローラー等のそれら自身の処理回路部を備えることができる。このファームウェアは、一般に、アンチウイルスソフトウェア等のセキュリティ監視ソフトウェアにアクセス可能ではない。その結果、悪意のあるソフトウェアが、そのようなハードウェアデバイス内において、セキュリティ監視ソフトウェアの見えない所でファームウェアとして存続する可能性がある。したがって、或る特定の脅威がそのようなファームウェアを介してコンピューターシステムを危険にさらす可能性がある。
【０００３】
通常は、実行中のファームウェアは、危険にさらされていないか、又は他の状況ではマイクロコントローラー内に最初にロード／ブートストラップされたものから変更されていないものと単純に仮定される。これまでにファームウェアが変更された可能性があるという何らかの懸念がランタイム時にある場合、通常行われることは、デバイスリセットを行って、マイクロコントローラーに現在の実行ファームウェアをフラッシュさせ、ブートストラップイメージをリロードさせることである。
【図面の簡単な説明】
【０００４】
【図１】本発明の一実施形態による整合性評価を行う方法の流れ図である。
【図２】本発明の一実施形態によるシステムのブロック図である。
【図３】本発明の１つの実施形態による代表的なデバイスのブロック図である。
【図４】本発明の１つの実施形態による整合性解析の更に詳細な内容を示す流れ図である。
【図５】本発明の一実施形態によるシステムのブロック図である。
【発明を実施するための形態】
【０００５】
様々な実施形態では、ハードウェアデバイスは、外部の監視エージェント、例えば、外部のソフトウェア（デバイスの外部にある）に、当該監視エージェントがそのハードウェアデバイス内で実行されているファームウェアの整合性に関して確実に調査することを可能にするメカニズムを暴露することができる。このように、アンチウイルスソフトウェア等の外部のセキュリティ監視ソフトウェアを用いて、コンピューティングエコシステムにおけるハードウェアデバイスの整合性違反又はセキュリティ破壊の招来（compromises）を検出することができる。多種多様のハードウェアデバイスを、本明細書で説明する実施形態を用いて整合性検証することができることに留意されたい。限定ではなく例示のための例として、ハードウェアデバイスは、ＰＣ、又はプログラマブルコントローラーを備える他のコンピューターエコシステム内に存在する任意の形式のハードウェアとすることができる。そのようなデバイスは、アドインカード、システムのチップセットに結合された周辺デバイス、チップセット構成要素、中央処理ユニット（ＣＰＵ）、若しくは他のそのようなデバイス、又はそれらの一部分によるものとすることができる。
【０００６】
次に図１を参照すると、本発明の一実施形態による整合性評価を行う方法の流れ図が示されている。図１に示すように、方法１００は、整合性チェックが行われるファームウェア又は他のソフトウェアを有するデバイスのハードウェア内で実施することができる。ファームウェアは、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ等の揮発性メモリ構造体又は不揮発性メモリ構造体に記憶されるとともにプロセッサ又はマイクロコントローラー等のプログラマブルロジックの監視制御を提供するルーチンを含む。「ファームウェア」という用語は、本明細書において用いられるとき、オペレーティングソフトウェア及び／又は監視ソフトウェア、又はデバイスの外部のエンティティが可視性を有しないデバイスコントローラー内で実行される他のソフトウェアを含むように意図されている。加えて、方法１００は、コンピューターシステムに存在するか又はネットワークを介してコンピューターシステムにリモートアクセス可能な整合性ソフトウェア、例えばアンチウイルスソフトウェア等の外部のエンティティを介して部分的に更に実行することができる。他の実施形態では、整合性チェックを行うためのハードウェアサポートに加えて、例えば、ファームウェア自体の分離されたコードセクションを用いて、整合性解析の少なくとも一部分を行えることが可能である。すなわち、専用の整合性ロジックを有しない実施形態では、デバイスのマイクロコントローラーは、ＲＯＭに記憶された整合性ソフトウェアを実行する部分的にトラステッドな状態に一時的になれ得る。この整合性ソフトウェア又は測定コードは分割されていることに留意されたい。測定コードの実行後、測定情報が記録され、マイクロコントローラーは、非トラステッド状態に戻る。
【０００７】
図１に見られるように、方法１００は、外部のエンティティからの整合性要求をデバイスにおいて受信することによって開始することができる（ブロック１１０）。本明細書における議論では、この外部のエンティティは、デバイスのファームウェアの整合性をテストしようとするシステムのプロセッサ上で実行されるアンチウイルスソフトウェアであるものと仮定する。上記デバイスは、本明細書における議論では、マイクロコントローラーを有するアドインカードであると仮定することができる。したがって、この要求は、マイクロコントローラーが受信することができる。
【０００８】
この要求に応答して、デバイスの専用の整合性検証ロジックは、ファームウェアの測定を行うことができる（ブロック１２０）。様々な実施形態では、この測定は、デバイスの１つ又は複数のプログラマブルコントローラーによって実行される１つ又は複数のイメージ（例えば、デバイスファームウェア及び／又は他のコントローラーコード）のハッシュ等の暗号測定とすることができる。異なる実施態様では、イメージの実際のハッシュを含むマニフェストをハッシュすることもできるし、イメージ自体を直接ハッシュすることもできる。そのようなハッシュは、整合性検証ロジックの組み込みハッシュ関数（セキュアハッシュアルゴリズム１（Ｓｈａ１）、Ｓｈａ２、又は次世代暗号化標準ハッシュベースのメッセージ認証コード（ＨＭＡＣ）、暗号メッセージ認証コード（ＣＭＡＣ）等）を用いて計算することができる。次に、測定結果は、デバイス記憶装置に記憶することができる（ブロック１２５）。幾つかの実施形態では、このデバイス記憶装置は、整合性検証ロジック内のレジスタ又は整合性検証ロジックにのみアクセス可能なレジスタ等のセキュアな記憶装置とすることができる。しかしながら、他の実施形態では、この測定は、デバイスのスタティックランダムアクセスメモリ（ＳＲＡＭ）等の別のロケーションに記憶することができる。
【０００９】
このファームウェア測定に加えて、整合性検証ロジックは、コントローラーポインター構造体の解析を更に行うことができる（ブロック１３０）。以下で更に説明するように、様々な実施形態では、これらのポインター構造体は、命令ポインター、割り込みポインター、及び例外ハンドリングポインターを含むことができる。これらの構造体のそれぞれは、当該構造体が、ファームウェア又はブロック１２０において上記測定を受けた他のコード内の対応するロケーションを指し示しているか否かを判断するために検査することができる。ポインターが、測定されたコードの外部のロケーションを指し示している場合、これは、攻撃者が、コードを変更することによってではなく、測定されたコードブロックの外部の新たなコードを追加するとともに、そのような潜在的に悪意のあるコードに制御をリダイレクトするようにポインターを変更することによって、改ざんを行うためのパスである場合がある。この非ファームウェアポインティング参照は、実際の違反でない場合があるが、潜在的なセキュリティ違反が存在することを示すものであり、システムを危険にさらすのに用いることができることに留意されたい。したがって、この解析に応答して、菱形ブロック１４０において、いずれかのポインターが、測定されたデバイスファームウェアの外部のロケーションを参照しているか否かを判断することができる。参照している場合には、制御はブロック１５０に移動し、このブロックにおいて、例えば、ステータスメッセージの対応するフィールドにおいて違反を識別することによって違反を示すことができる。菱形ブロック１４０及びブロック１５０の双方から、制御は、ブロック１６０に移動し、このブロックにおいて、測定結果及びステータスメッセージを外部のエンティティに送信することができる。外部のエンティティへのこの情報の報告は、デバイス上で実際に実行されているものに関する秘密も機密情報も暴露するものではないことに留意されたい。すなわち、提供される情報は、ファームウェアコードの実際の識別情報ではなく、コードの同一性情報（又はコード自体のいずれも）を含まないようにコードの測定とすることができる。
【００１０】
方法１００のプロセスにおいてこの時点から後は、外部のエンティティによって又は外部のエンティティの制御下で動作を行うことができる。最初に菱形ブロック１６５において、測定がデバイスファームウェアのホワイトリスト内のエントリーと一致するか否かを判断することができる。すなわち、外部のエンティティは、各エントリーが、コンピューターシステムに存在する様々なデバイス用のファームウェア等の認可されたコード片の測定された値に対応する様々なエントリーを有するデータ構造体を含むことができるか、又はそのようなデータ構造体にアクセスすることができる。又は、このホワイトリストは、コンピューターシステムから外部に配置することができ、外部のエンティティにアクセス可能とすることができる。ホワイトリストは、ベンダーが供給することもできるし、所与のデバイスが初めて実行される際、ランタイム中に動的に生成することもできる。測定結果が一致しないと判断された場合、制御は、ブロック１９０に直接移動し、このブロックにおいて、整合性欠如報告を、例えばシステムのユーザーに提供することができ、及び／又は改善策を取ることができる。本発明の範囲は、この点に限定されるものではなく、様々な実施態様では、そのような改善策は、システムのシャットダウン、問題になっているファームウェアのリロード、又はシステムが非トラステッド状態にあることの他のハードウェアエンティティ若しくはソフトウェアエンティティへのシグナリング等の別の動作を含むことができる。これは、他のエンティティがそれに応じて反応する（例えば、セキュリティに配慮する必要がある動作を実行することを拒否する）ことを可能にすることができる。他の実施形態では、報告を送信する代わりに、所定のロケーションに送信することができるログエントリーを生成することができることに留意されたい。
【００１１】
反対に、菱形ブロック１６５において測定結果が一致する場合、制御は、菱形ブロック１７０に移動し、このブロックにおいて、ステータスメッセージが違反を示すか否かを判断することができる。示さない場合、制御は、ブロック１８０に移動し、このブロックにおいて、例えば、ユーザー若しくは別のロケーションへの報告を介して、若しくはデバイスの更なる実行を可能にすることによって、又は別の方法で、整合性を検証することができる。そうではなく、ステータスメッセージが違反を示す場合、制御は、上記で議論したブロック１９０に移動する。図１の実施形態におけるこの特定の実施態様を用いて示しているが、本発明の範囲は、この点に限定されるものではないことを理解されたい。
【００１２】
上述したように、本発明の一実施形態による整合性検証は、多くの異なるタイプのコンピューティングシステムに適用可能とすることができる。次に図２を参照すると、本発明の一実施形態によるシステムのブロック図が示されている。システム２００は、サーバーコンピューター、デスクトップコンピューター、ラップトップコンピューター、タブレット、ネットブックコンピューター、モバイルインターネットデバイス、スマートフォン等の任意のタイプのコンピューターシステムとすることができることに留意されたい。例示のため、図２において、システム２００は、様々な構成要素が様々な相互接続を介して結合される周辺機器相互接続エクスプレス（ＰＣＩ  Ｅｘｐｒｅｓｓ（商標）（ＰＣＩｅ（商標）））ベースのシステムとすることができる。そのようなシステムは、ＰＣＩｅ（商標）基本仕様バージョン２．０（２００７年１月１７日に公開）に従うことができる。具体的には、図２の実施形態では、プロセッサ２２０は、バス２３０を介して入力／出力ハブ（ＩＯＨ）２４０に結合され、さらに、この入力／出力ハブは、バス２５０を介して周辺コントローラーハブ（ＰＣＨ）２６０に結合している。さらに、ＰＣＨ２６０は、トラステッドプラットフォームモジュール（ＴＰＭ）２９０及び他のデバイスに結合することができる。図に見られるように、これらの構成要素のそれぞれは、様々な内部デバイスを備えることができ、１つ又は複数の他のデバイスに更に結合することができる。そのような各デバイスは、ＰＣＩ構成空間を含むこともできるし、ＰＣＩ構成空間に関連付けることもできる。このＰＣＩ構成空間は、構成情報を含むことができるローカルメモリの一部分とすることができる。様々な実施形態では、そのような構成空間は、本発明の一実施形態による整合性報告構成体（integrity reporting construct）を更に含むことができる。
【００１３】
図２に見られるように、プロセッサ２２０は、１つ又は複数のスレッドの命令を実行する複数のコア２２２０〜２２２ｎを備えることができる。加えて、プロセッサ２２０は、プロセッサコアの外部で実行されるプロセッサの様々なシステムエージェントロジックを備えることができるアンコア２２５を更に備えることができる。加えて、プロセッサ２２０は、システムメモリ２３５に結合することができる統合メモリコントローラー（ＩＭＣ）２２８を更に備えることができる。このシステムメモリは、図２に示す実施形態では、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）とすることができる。図２の実施形態に更に見られるように、ＩＯＨ２４０は、ダイレクトメディアインターフェース（ＤＭＩ）プロトコルに従うことができるブリッジ２４５も備えることができる。
【００１４】
図２に更に示すように、ＰＣＨ２６０は、ブリッジ及びコントローラーを含む様々な構成要素を備えることができる。加えて、様々な周辺デバイスの制御機能を提供する仮想化エンジン（ＶＥ）２６２及び管理エンジン（ＭＥ）２６４が存在し得る。図に見られるように、ＰＣＨ２６０は、様々な機能を提供するとともにＰＣＨに結合された様々なデバイスとインターフェースするコントローラー及びブリッジ２６８、２７０、２７２、２７４、及び２７６を更に備えることができる。具体的には、ＰＣＩｅ（商標）ブリッジ２６８が、特に、シリアルアドバンストテクノロジーアタッチ（ＳＡＴＡ）コントローラー２７０、拡張ホストコントローラーインターフェース（ＸＨＣＩ）コントローラー２７２、ローピンカウント（ＬＰＣ）コントローラー２７６、及びシリアル周辺インターフェース（ＳＰＩ）コントローラー２７４を含むコントローラーとともに存在し得る。幾つかの実施形態では、ＰＣＨを有する追加の構成要素は、センサー及び専用デバイスを備えることができる。例示のために、図２は、これらの異なるコントローラー及びブリッジに結合することができる様々なデバイスを更に示している。具体的には、ディスクドライブ又は他のマスストレージ等のＳＡＴＡ記憶装置２８０をＳＡＴＡコントローラー２７０に結合することができ、ＸＨＣＩデバイス２８２をＸＣＨＣＩコントローラー２７２に結合することができ、ＳＰＩデバイス２８４をＳＰＩコントローラー２７４に結合することができる。
【００１５】
様々なデバイスをＰＣＩｅ（商標）コントローラー２９２に結合することができ、さらに、このＰＣＩｅ（商標）コントローラーは、ＰＣＩｅ（商標）ブリッジ２６８に結合している。図２に示す例では、そのようなデバイスは、システム２００とネットワークの他のエージェントとの間の通信を可能にするネットワークインターフェースコントローラー（ＮＩＣ）２９６を含むことができる。上記ネットワークは、有線ネットワーク、例えばローカルエリアネットワーク（ＬＡＮ）、無線ＬＡＮ（ＷＬＡＮ）等の無線ネットワーク、又はセルラーネットワーク等の広範囲無線ネットワーク等である。加えて、ＰＣＩｅ（商標）デバイス２９４は、ＰＣＩｅ（商標）コントローラーにも結合することができる。他の実施形態では、ＩＯＨは存在しなくてもよく、その代わりに、プロセッサ２２０は、ＤＭＩ又は他のそのような相互接続を介してＰＣＨ２５０に直接結合することができる。
【００１６】
上記ブリッジ、コントローラー、及びデバイスは、ロード可能なファームウェア、サポートパッチ、及び更新を有することができ、他のバス又はネットワークに接続することができる。そのため、デバイスに対する悪性（rogue）ソフトウェアによる悪用又は他の攻撃のリスクが存在する。したがって、実施形態は、外部のエンティティを介して構成要素上で実行される少なくとも或る特定のコードの整合性を検証する能力を提供することができる。
【００１７】
次に図３を参照すると、図２に関して上記で説明したデバイスのうちの任意のものに概ね対応することができる代表的なデバイス２１０のブロック図が示されている。デバイス２１０のそれぞれは、ファームウェア記憶装置に記憶された対応するファームウェアイメージと、構成空間２１３とを備えることができる。このファームウェア記憶装置は、このデバイスの不揮発性メモリとすることができる。実行中に、ファームウェアイメージは、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のより高速なメモリ、すなわちデバイスメモリ２１６に記憶することができる。加えて、これらのデバイスのうちの少なくとも幾つかは、本発明の一実施形態による整合性解析を行うことを援助するＴＰＭプラットフォーム構成レジスタ（ＰＣＲ）２１１を備えることができる。図２にも見られるように、整合性測定ロジック２１４が存在する。この整合性測定ロジックは、外部のエンティティから受信されたトリガーに応答して、デバイスのファームウェア及び／又は他のコードに対して整合性チェックを行うハードウェアを備えることができる。一般に、整合性測定ロジックは、本発明の一実施形態による整合性解析を行うように構成された組み込み固定機能ハードウェアユニットとすることができる。そのような実施形態では、この固定機能ユニットは、外部のセキュリティ監視エージェント、例えばアンチウイルスソフトウェアからの要求の受信にのみ応答して動作することができる。加えて、デバイス２１０は、整合性測定ロジックによって行われた測定を記憶する１つ又は複数の整合性レジスタ２１５を備えることができる。幾つかの実施形態では、これらのレジスタは、ＴＰＭ  ＰＣＲに対応することができる一方、他の実施形態では、これらのレジスタは、異なる一組の構造体とすることができる。さらに、これらのレジスタのうちの少なくとも１つは、デバイスの他の様々な構造体のステータスを示すために整合性測定ロジックが記述することができる複数のフィールドを含むステータスメッセージを記憶するように構成することができる。具体的には、図３に更に見られるように、デバイス２１０は、複数のポインター構造体２１９ａ〜２１９ｃを備えることができる。そのようなポインター構造体は、命令ポインター、割り込みポインター、及び例外ハンドリングポインターを含むことができる。これらの様々なポインターは、そのようなポインターを記憶するハードウェア構造体として説明されているが、他の実施形態では、例えば、そのような構造体に存在する様々なポインターが、測定されたコードの外部のロケーションを指し示していないことを確認する整合性解析動作中にアクセスされるローカルメモリに記憶することができることを理解されたい。
【００１８】
更に図に見られるように、デバイス２１０は、デバイスファームウェアが動作することができる１つ又は複数のコントローラー２１８（例えば、マイクロコントローラー）を備えることができる。コントローラー２１８は、幾つかの実施形態では、縮小命令セットコンピューティング（ＲＩＳＣ）モデル又は複合命令セットコンピューティング（ＣＩＳＣ）モデルによるマイクロコードを含むことができるファームウェア制御下で動作することができる。コントローラー２１８は、様々なアプリケーション及び他のユーザーレベルのコード、又はホストプロセッサ若しくは他のロジックによってデバイスに提供される少なくともそのようなコードからの命令を更に実行することができる。ただし、一般に、コントローラー２１８上で実行されるとともに動作中にデバイスメモリ２１６に記憶された実行中のファームウェアの整合性を判断する実施形態に焦点を当てることができる。図３の実施形態では、これらの特定の構成要素を用いて示されているが、本発明の範囲は、この点に限定されるものではないことを理解されたい。
【００１９】
図４は、本発明の１つの実施形態による整合性解析の更に詳細な内容を示すフロー図である。図４に示すように、方法３００は、解析されるデバイスにトリガーを送信する外部のエンティティ、例えばソフトウェアによって開始することができる（ブロック３０５）。しかし、本発明の範囲は、この点に限定されるものではなく、１つの実施形態では、ハードウェアデバイスは、（例えば、ＰＣＩｅ（商標）メモリ管理入力／出力（ＭＭＩＯ）レジスタ（複数の場合もある）を通じて）トリガーを外部のソフトウェアに暴露することができる。これらのレジスタは、システム初期化中にホストシステムが構成することができることに留意されたい。したがって、ハードウェアデバイスは、このトリガーイベントを受信して、ハードウェアデバイス上で実行されるソフトウェア／ファームウェアの信頼性を判断する様々な動作を開始することができる（ブロック３１０）。１つの動作として、デバイスの整合性ロジックは、ハードウェアデバイスの内部のマイクロコントローラー（複数の場合もある）によって用いられる現在実行中の／アクティブなファームウェアプログラムコード（内部のデバイスＳＲＡＭに記憶することができる）の暗号測定（cryptographic measure）（例えば、ハッシュ又はＨＭＡＣ）を行うことができる（ブロック３２０）。この暗号測定は、その後、例えば、整合性ロジックのレジスタ等の記憶装置に記憶することができる（ブロック３２５）。
【００２０】
この測定に加えて、ハードウェアデバイスは、報告（例えば、ビットフラグ等の１つ又は複数のステータス指示子を含む）、すなわち、（主体のマイクロコントローラーの必要に応じて）マイクロコントローラーの現在実行中の命令ポインター（複数の場合もある）、割り込みテーブルポインター（複数の場合もある）、及び例外ハンドラーポインター（複数の場合もある）が、それぞれ、暗号測定を受けたファームウェアプログラムコードのアドレス範囲（複数の場合もある）内に含まれるロケーションを参照しているか否かを示す追加の実行ステータスメッセージを評価及び作成することができる（ブロック３３０）。図に見られるように、これらのポインター評価は、菱形ブロック３３５及び３４０並びにブロック３４５を通ってループすることができる。
【００２１】
ポインター解析が完了すると、制御はブロック３５０に移動し、このブロックにおいて、初期トリガーに対する応答として、暗号測定値及び実行ステータスメッセージを（例えば、外部のソフトウェアによるその後のＰＣＩ／ＰＣＩエクスプレスＭＭＩＯレジスタ（複数の場合もある）の読み出しを通じて）外部のエンティティソフトウェアに報告することができる。もちろん、異なる実施形態では、外部のソフトウェア要求に応答して、追加の又は異なる動作をハードウェアデバイスにおいて実行することができる。さらに、整合性解析は、デバイス初期化の際、及び／又はアンチウイルスソフトウェアスキャンが実行されるごと等、システム動作中に他の時点において行うことができることに留意されたい。
【００２２】
次に、制御はブロック３６０に移動し、このブロックにおいて、外部のソフトウェアは、この情報に基づいてデバイス整合性を判断することができる。一例示の使用シナリオとして、外部のソフトウェアの担当は、測定情報が受信されると、受信された測定情報を解析することである。一例として、ソフトウェアは、結果の暗号測定ハッシュ値を既知の／トラステッドなファームウェアハッシュ値のリストと比較して、このハッシュがこれらの値のうちの１つに一致するか否かを判断することができる。さらに、このソフトウェアは、実行ステータスフラグのいずれも、ハードウェアデバイスの内部のマイクロコントローラーが暗号測定を受けていないプログラムコードを参照／使用していることを示していないことを保証することができる。実行ステータスフラグの数及び性質は、マイクロコントローラーごとに変化する場合があることに留意されたい。例として、一実施形態は、単一の実行ステータスフラグを用いて、１つ又は複数のポインターによって全体で違反を表すことを選択することもできるし、１つの実行ステータスフラグを各ポインターに専用化してより粗い実行ステータス報告を行うことを選択することもできる。
【００２３】
外部のソフトウェアが、測定されたハッシュが一致すると判断し、実行ステータスフラグが適切であると判断した場合、外部のソフトウェアは、ハードウェアデバイス上で実行されるファームウェアの整合性を受け入れることができる。したがって、外部のソフトウェアは、ハードウェアデバイス内の実行ファームウェアが危険にさらされたことがないか又はそれ以外でその整合性が悪影響を受けたことがないことを少なくとも合理的な確信をもって示すことができる。したがって、ハードウェア又はソフトウェアは、システムがセキュアな状態にある（例えば、整合性が検証されている）ことを保証した後に、セキュリティに配慮する必要がある動作を実行することに進むことができる。実行ステータスフラグは、いずれかのマイクロコントローラー実行ポインター（例えば、割り込みテーブルポインター、例外ポインター、実行命令ポインター）が、測定を受けていないコードを参照しているか否かを示すことができる。このように、悪意のあるプログラムコードが、オリジナルのファームウェアプログラムコードを変更せず、その代わりに、ＳＲＡＭの未測定のプログラムデータエリアに存在する代わりの悪意のあるコードを用いることを防止することができる。
【００２４】
様々な実施形態では、ハードウェアデバイスにおいて行われる暗号測定は、ハードウェアデバイスのマイクロコントローラー（複数の場合もある）ＳＲＡＭに存在する静的なファームウェアプログラムコードのみを測定することができる。しかしながら、この測定は、ＳＲＡＭに同様に存在するファームウェアプログラムデータを含まない場合がある。なぜならば、ランタイムプログラムデータを測定することは、無相関／非決定的な測定値をもたらす可能性があるからである。
【００２５】
様々な実施形態では、外部のソフトウェア要求に応答して行われる整合性チェックは、ハードウェアが全体的に実施しサービス提供することができ、ハードウェアデバイスのマイクロコントローラーにおいて実行されるファームウェアによって動作に影響を受ける可能性もなければ、直接影響を受けた結果を有する可能性もない。このように、悪意のあるファームウェアが、報告されたそれ自体の測定に影響を与えることを防止することができる。しかしながら、他の実施形態では、マイクロコントローラー自体が、それ自体のＳＲＡＭコンテンツを測定するコードを実行することができる。しかしながら、この体制について、様々な前もって必要なものが存在する場合がある。例えば、測定プログラムコードは、非トラステッド状態中にマイクロコントローラーが変更することができない読み出し専用メモリ（ＲＯＭ）領域又は別の領域に存在することができる。加えて、マイクロコントローラーは、現在の（非トラステッド）状態にかかわらず、マイクロコントローラーのタイプに応じて変化する可能性があるＲＯＭ内の測定プログラムコードの正しくかつ正確な実行を保証するトラステッド状態になることができる。例えば、幾つかの実施形態では、このトラステッド状態は、システム管理モード（ＳＭＭ）、認証済みコードモジュール（ＡＣＭ）等とすることができる。さらに、測定値は、測定プログラムコードを用いてトラステッド状態にあるマイクロコントローラーによって報告された後、マイクロコントローラーが前の非トラステッド状態を再開し／前の非トラステッド状態に戻ると、マイクロコントローラーが変更も上書きもすることができない。全体的に、「トラステッド」状態は、マイクロコントローラーに現在のファームウェア実行を停止させ、異なるファームウェアセットの実行に切り替えさせる、マイクロコントローラーの動作プロセスとして一般に定義することができる。ここで、第２のファームウェアセットは、第１のファームウェアの影響から完全に独立して動作する。第１のファームウェアセットは、「非トラステッド」と認識され、第２のファームウェアセットは、「トラステッド」と認識される。１つの実施形態では、「非トラステッド」ファームウェア（すなわち、測定される物）の実行を中止し、非トラステッドファームウェアの実行に関係した全てのマイクロコントローラー状態を保存し、全てのマイクロコントローラー状態を新規な（トラステッド）値にリセット／再初期化することによって、トラステッド状態に入ることができる。
【００２６】
様々な実施形態では、ハードウェアデバイスのマイクロコントローラーの詳細な動作状態の意図されていないあらゆるサイドチャネル情報開示シナリオ（side-channel disclosure scenarios）を削減するために、プログラムコードＳＲＡＭコンテンツの暗号ハッシュ及び実行ステータスフラグのみをハードウェアデバイスと外部のソフトウェアとの間で通信することができる。
【００２７】
したがって、様々な実施形態によれば、不要なデバイスリセットを回避することができ、ハードウェアデバイス内で実行されるファームウェアプログラムコードが変更されていないというより高レベルの可視性及び確信を達成することができ、よりトラステッドなコンピューティングエコシステムがもたらされる。
【００２８】
実施形態は、多くの異なるシステムタイプで実施することができる。次に図５を参照すると、本発明の一実施形態によるシステムのブロック図が示されている。図５に示すように、マルチプロセッサシステム５００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続５５０を介して結合された第１のプロセッサ５７０及び第２のプロセッサ５８０を備える。図５に示すように、プロセッサ５７０及び５８０のそれぞれは、第１のプロセッサコア及び第２のプロセッサコア（すなわち、プロセッサコア５７４ａ及び５７４ｂ並びにプロセッサコア５８４ａ及び５８４ｂ）を備えるマルチコアプロセッサとすることができるが、潜在的には、より多くのコアがこれらのプロセッサに存在することができる。そのようなプロセッサは、システム５００の追加の構成要素のうちの１つ又は複数に存在する専用の整合性ハードウェアと通信することができるアンチウイルスソフトウェアを実行することができる。
【００２９】
図５を更に参照すると、第１のプロセッサ５７０は、メモリコントローラーハブ（ＭＣＨ）５７２と、ポイントツーポイント（Ｐ−Ｐ）インターフェース５７６及び５７８とを更に備える。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２と、Ｐ−Ｐインターフェース５８６及び５８８とを備える。図５に示すように、ＭＣＨ５７２及び５８２は、プロセッサをそれぞれのメモリ、すなわちメモリ５３２及びメモリ５３４に結合する。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ））の一部分とすることができる。第１のプロセッサ５７０及び第２のプロセッサ５８０は、それぞれＰ−Ｐ相互接続５５２及び５５４を介してチップセット５９０に結合することができる。図５に示すように、チップセット５９０は、Ｐ−Ｐインターフェース５９４及び５９８を備える。一例として、チップセット５９０は、ファームウェア記憶装置５９８に記憶されたファームウェアの整合性を測定する整合性ロジック５９５を備えることができる。
【００３０】
さらに、チップセット５９０は、Ｐ−Ｐ相互接続５３９によってチップセット５９０を高性能グラフィックスエンジン５３８と結合するインターフェース５９２を備える。さらに、チップセット５９０は、インターフェース５９６を介して第１のバス５１６に結合することができる。図５に示すように、様々な入力／出力（Ｉ／Ｏ）デバイス５１４を、バスブリッジ５１８とともに第１のバス５１６に結合することができる。このバスブリッジは、第１のバス５１６を第２のバス５２０に結合する。例えば、キーボード／マウス５２２、通信デバイス５２６、及びデータ記憶ユニット５２８を含む様々なデバイスを第２のバス５２０に結合することができる。このデータ記憶ユニットは、例えば、本発明の一実施形態によるデバイスファームウェアセキュリティ動作を行うコード５３０を含むことができるディスクドライブ又は他のマスストレージデバイス等である。さらに、オーディオＩ／Ｏ５２４を第２のバス５２０に結合することができる。
【００３１】
実施形態は、コードで実施することができ、命令を実行するようにシステムをプログラムするのに用いることができる当該命令が記憶された非一時的な記憶媒体上に記憶することができる。この記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ソリッドステートドライブ（ＳＳＤ）、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、再書込み可能コンパクトディスク（ＣＤ−ＲＷ）、及び光磁気ディスク、読み出し専用メモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）等の半導体デバイス、磁気カード若しくは光カード、又は電子命令を記憶するのに適した他の任意のタイプの媒体を含む任意のタイプのディスクを含むことができるが、これらに限定されるものではない。
【００３２】
限られた数の実施形態に関して本発明を説明してきたが、当業者であれば、これらの実施形態から多数の変更及び変形を認識するであろう。添付の特許請求の範囲は、本発明の真の趣旨及び範囲に含まれる全ての変更及び変形をカバーすることを意図している。
【図１】
0005816373.tif 000002
【図２】
0005816373.tif 000003
【図３】
0005816373.tif 000004
【図４】
0005816373.tif 000005
【図５】
0005816373.tif 000006