(57)【要約】システムクロックにより提供されるシステムタイムに対する信頼を高める、方法、装置、コンピュータ読み取り可能媒体が開示されている。一部の実施形態において、ディテクターがシステムクロックに対する攻撃と関連するアクティビティを検出する。システムクロックに対する攻撃をディテクターが検出するかどうかに基づき、コンピューティングデバイスはシステムクロックにより提供されるシステムタイムを信頼するかどうかを決定する。
2006512677.tif 000002
【特許請求の範囲】
【請求項１】
システムタイムを計時するシステムクロックで使用する方法であって、
前記システムクロックに対する攻撃を検出するステップと、
前記システムクロックに対する攻撃を示すステータス記憶部を更新するステップとを有することを特徴とする方法。
【請求項２】
請求項１に記載の方法であって、
前記システムクロックが不適当なレートで更新されたとの決定に応じて、前記システムクロックに対する攻撃を検出するステップをさらに有することを特徴とする方法。
【請求項３】
請求項１に記載の方法であって、
システムタイマー割り込みに応じて前記システムタイムを更新するステップと、
前記システムタイマー割り込みがされるレートを変化させようとする試みの検出に応じて、前記システムクロックに対する攻撃を検出するステップをさらに有することを特徴とする方法。
【請求項４】
請求項１に記載の方法であって、
システムタイマー割り込みに応じて前記システムタイムを更新するステップと、
前記システムタイマーが前記システムタイマー割り込みをかけるレートを変化させる、前記システムタイマーのインターフェイスへの１以上のアクセスの検出に応じて、前記システムクロックに対する攻撃を検出するステップとをさらに有することを特徴とする方法。
【請求項５】
請求項１に記載の方法であって、
システムタイマーによりかけられたシステムタイマー割り込みに応じて前記システムタイムを更新するステップと、
前記システムタイマーに関連するオシレータの周波数が所定の範囲と所定の関係を有することの検出に応じて、前記リアルタイムクロックに対する攻撃を検出するステップとをさらに有することを特徴とする方法。
【請求項６】
請求項１に記載の方法であって、
前記システムクロックに対する攻撃の検出に応じて前記ステータス記憶部のビットをアクティベートするステップと、
アントラステッドソフトウェアが前記ステータス記憶部の前記ビットをデアクティベートすることを防止するステップとを有することを特徴とする方法。
【請求項７】
請求項１に記載の方法であって、
前記システムクロックに対する攻撃の検出に応じて、前記ステータス記憶部のカウンターのカウントを更新するステップと、
アントラステッドソフトウェアが前記カウンターの前記カウントを改変することを防止するステップとを有することを特徴とする方法。
【請求項８】
請求項１に記載の方法であって、
システムタイマーによりかけられたシステムタイマー割り込みに応じて前記システムタイムを更新するステップと、
前記システムタイマーが前記システムタイマー割り込みをかけるレートに対する調整が所定の範囲と所定の関係を有するとの決定に応じて、攻撃はなかったと決定するステップとを有することを特徴とする方法。
【請求項９】
請求項１に記載の方法であって、
システムタイマーによりかけられたシステムタイマー割り込みに応じて、前記システムタイムを更新するステップと、
前記システムタイマーが前記システムタイマー割り込みをかけるレートが所定回数以上調整されたとの決定に応じて、攻撃があったと決定するステップをさらに有することを特徴とする方法。
【請求項１０】
チップセットであって、
システムクロックに対する攻撃が検出されたかどうかを示すステータス記憶部と、
前記システムクロックに対する攻撃を検出し、システムクロックに対する攻撃が検出されたかどうかに基づき前記ステータス記憶部を更新するディテクターとを有することを特徴とするチップセット。
【請求項１１】
請求項１０に記載のチップセットであって、
割り込みをかけるシステムタイマーをさらに有し、
前記システムクロックが不適当なレートで更新されているとの決定に応じて、前記システムクロックに対する攻撃を前記ディテクターが検出することを特徴とするチップセット。
【請求項１２】
請求項１０に記載のチップセットであって、
前記システムクロックが更新中であるかどうかを示す更新記憶部を有し、
前記ディテクターは、前記更新記憶部に基づき前記システムクロックに対する攻撃を検出することを特徴とするチップセット。
【請求項１３】
請求項１２に記載のチップセットであって、
前記更新記憶部は、アントラステッドコードが前記更新記憶部を更新できないセキュリティエンハンスト空間にあることを特徴とするチップセット。
【請求項１４】
請求項１０に記載のチップセットであって、
前記ステータス記憶部は、アントラステッドコードがデアクティベートできず、セキュリティエンハンスト環境のトラステッドコードはデアクティベートすることを許されているビットを有し、
前記ディテクターは、前記システムクロックに対する攻撃の検出に応じて、前記ステータス記憶部の前記ビットをアクティベートすることを特徴とするチップセット。
【請求項１５】
請求項１０に記載のチップセットであって、
前記ステータス記憶部は、アントラステッドコードは更新できず、セキュリティエンハンスト環境のトラステッドコードはデアクティベートすることを許されているカウンターを有し、
前記ディテクターは、前記システムクロックに対する攻撃の検出に応じて前記カウンターのカウントを更新することを特徴とするチップセット。
【請求項１６】
請求項１０に記載のチップセットであって、
アクティベートされるのに応じて、前記システムタイマーが前記システムタイマーイベントを生成するレートが改変されないように防止するシステムタイマーロックをさらに有することを特徴とするチップセット。
【請求項１７】
請求項１６に記載のチップセットであって、前記システムタイマーロックは、アントラステッドコードが前記システムタイマーロックの状態を改変できないセキュリティエンハンスト空間にあることを特徴とするチップセット。
【請求項１８】
コンピューティングデバイスであって、
システムタイマー割り込みの割り込みサービスルーチンを格納メモリと、
前記割り込みサービスルーチンの実行をするシステムタイマー割り込みをかけるシステムタイマーと、
前記割り込みサービスルーチンの実行に応じてシステムクロックのシステムタイムを更新するプロセッサと、
前記システムクロックに対する攻撃を検出するディテクターとを有することを特徴とするコンピューティングデバイス。
【請求項１９】
請求項１８に記載のコンピューティングデバイスであって、
前記システムクロックに対する攻撃を検出したかどうかを示すステータス記憶部をさらに有し、
前記ディテクターは前記システムクロックに対する攻撃を示す前記ステータス記憶部を更新することを特徴とするコンピューティングデバイス。
【請求項２０】
請求項１８に記載のコンピューティングデバイスであって、
前記システムクロックに対する攻撃が検出されたかどうかを示すビットをさらに有し、
前記ディテクターは前記システムクロックへの攻撃を示すために前記ビットをアクティベートすることを特徴とするコンピューティングデバイス。
【請求項２１】
請求項２０に記載のコンピューティングデバイスであって、
前記ビットはアントラステッドコードが前記ビットの内容を改変できないセキュリティエンハンスト空間にあることを特徴とするコンピューティングデバイス。
【請求項２２】
請求項１８に記載のコンピューティングデバイスであって、
前記システムタイマーにオシレーション信号を供給する外部オシレータをさらに有し、
前記システムタイマーは、前記オシレーション信号の周波数に基づく第１のレートで前記システムタイマーイベントを生成し、
前記オシレーション信号の前記周波数が所定の範囲に対して所定の関係を有しているとの決定に応じて、前記ディテクターは前記システムクロックに対する攻撃を検出することを特徴とするコンピューティングデバイス。
【請求項２３】
請求項１８に記載のコンピューティングデバイスであって、
アクティベートに応じて、前記システムタイマーが前記システムタイマーイベントを生成するレートの改変を防止する、システムタイマーロックをさらに有することを特徴とするコンピューティングデバイス。
【請求項２４】
請求項２３に記載のコンピューティングデバイスであって、前記システムタイマーロックは、アントラステッドコードが前記システムタイマーロックの状態を改変できないセキュリティエンハンスト空間にあることを特徴とするコンピューティングデバイス。
【請求項２５】
請求項１８に記載のコンピューティングデバイスであって、
前記割り込みサービスルーチンは、１以上のシステムタイムクロックを更新するシステムタイムナブを有することを特徴とするコンピューティングデバイス。
【請求項２６】
複数の命令を有する機械読み取り可能な媒体であって、
前記複数の命令は実行されると、コンピューティングデバイスに
前記コンピューティングデバイスのシステムクロックに対する攻撃を検出するステップと、
前記システムクロックに対する前記攻撃に対応するステップとを実行させることを特徴とする機械読み取り可能な媒体。
【請求項２７】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は前記コンピューティングデバイスに
前記システムクロックのシステムタイムが正しいことを関係者に確認するよう要求することにより、前記攻撃に対応するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項２８】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は、前記コンピューティングデバイスに
時間依存データへのアクセスを防止することにより前記攻撃に対応するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項２９】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は前記コンピューティングデバイスに
時間依存動作を防止することによって前記攻撃に対応するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項３０】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は前記コンピューティングデバイスに
ステータス記憶部のビットがアクティベートされたかどうかに基づき攻撃が検出されたと決定するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項３１】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は前記コンピューティングデバイスに
ステータス記憶部のカウンターが期待されたカウント値を有するかどうかに基づき攻撃が検出されたと決定するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項３２】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は前記コンピューティングデバイスに
ステータス記憶部とトラストポリシーに基づき攻撃が検出されたと決定するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項３３】
請求項２６に記載の機械読み取り可能な媒体であって、
前記複数の命令は前記コンピューティングデバイスに
前記システムクロックを駆動するために使用するシステムタイマーのレートに所定回数以上の調整がなされたことの検出に応じて、攻撃が検出されたと決定するステップを実行させることを特徴とする機械読み取り可能な媒体。
【請求項３４】
装置であって、
システムクロックが更新中かどうかを示す更新記憶部と、
前記更新記憶部と、前記システムクロックの更新をするために使用される１以上のシステムタイマー割り込みとに基づいて、前記システムクロックに対する攻撃を検出する検出ロジックとを有することを特徴とする装置。
【請求項３５】
請求項３４に記載の装置であって、
前記システムクロックが更新中であると示している間に、更新記憶部がシステムタイマー割り込みを受信すると、前記検出ロジックは前記システムクロックに対する攻撃があったと決定することを特徴とする装置。
【請求項３６】
請求項３４に記載の装置であって、
前記更新記憶部は、更新中であることを示すためにアクティベートされ、更新中でないことを示すためにデアクティベートされるビットを有し、
前記検出ロジックは、前記更新記憶部の前記ビットがアクティブである時、システムタイマー割り込みがかかると、前記システムクロックに対する攻撃があったと決定することを特徴とする装置。
【請求項３７】
請求項３６に記載の装置であって、
前記更新記憶部は、アントラステッドコードが前記更新記憶部の内容を改変することを防止し、トラステッドコードは前記更新記憶部の内容を改変することを許されるセキュリティエンハンスト空間にあることを特徴とする装置。
【請求項３８】
請求項３４に記載の装置であって、
前記更新記憶部は進行中の更新の数を示すカウント値を有し、
前記カウント値が所定値と所定の関係を有するとき、前記システムクロックに対する攻撃があったと決定することを特徴とする装置。
【請求項３９】
請求項３８に記載の装置であって、
前記更新記憶部は、アントラステッドコードが前記更新記憶部の内容を改変することを防止し、トラステッドコードは前記更新記憶部の内容を改変することを許されるセキュリティエンハンスト空間にあることを特徴とする装置。
【発明の詳細な説明】
【背景技術】
【０００１】
オペレーティングシステムは、時間の小さな進行（例えば、１ミリ秒）を計時するためのシステムタイムを提供するシステムクロックを含む。システムクロックは、インテル８２５４イベントタイマー、インテル高性能イベントタイマー（HPET）、リアルタイムクロックイベントタイマー等のシステムタイマーにより生成される定期的な割り込みに応じてシステムタイムを更新する。オペレーティングシステムは、ファイルにタイムスタンプを押したり、定期的な割り込みをかけたり、タイムベースのワンショット割り込みをかけたり、プロセスをスケジュールしたりするためにシステムタイムを使用する。一般に、システムクロックは、コンピューティングデバイスが動作している間システムタイムを計時するが、一旦コンピューティングデバイスのパワーがオフされたりスリープ状態に置かれたりすると、システムタイムを計時することはできない。それゆえ、オペレーティングシステムはリファレンスクロックを用いて、システムのスタートアップ時やウェークアップ時にシステムクロックのシステムタイムを初期化する。さらに、システムクロックは正しい時間からずれることがある。従って、オペレーティングシステムはリファレンスクロックを用いてシステムクロックのシステムタイムを定期的に更新する。
【０００２】
そのようなリファレンスクロックとしてはハードウェアリアルタイムクロック（RTC）がある。コンピューティングデバイスは一般に、RTCと、コンピューティングデバイスのパワーが落ちているときにそのRTCにパワーを供給するバッテリーとを含む。バッテリーパワーのため、RTCはコンピューティングデバイスのパワーがオフであったりスリープ状態に置かれていたりしても、リアルタイムまたはウォールタイム（wall  time）を維持することができ、一般に、システムクロックよりも正確な時間を計時することができる。RTCは、ウォールタイムを取得するためのインターフェイスを提供する他に、RTCの時間を設定または変更するために使用する、例えば、１以上のレジスタ等のインターフェイスをさらに提供する。当業者には知られているように、ウォールタイムは現実の時間（例えば、2002年12月4日、金曜日、午後12時01分）であり、例えば、現在の秒、分、時、曜日、日付、月、年を有する。ウォールタイムの名称は、壁に掛かっている従来の時計により提供される時間から付けられたものであり、プロセッサがプロセスを実行した秒数を表すCPUタイムと区別するために使用される。マルチタスクとマルチプロセッサシステムにより、プロセスを実行するCPUタイムはそのプロセスを実行するウォールタイムと大きく異なるであろう。
【０００３】
コンピューティングデバイスは、時間依存データのポリシーを強制するためにシステムクロックおよび／またはRTCクロックを用いる。特に、コンピューティングデバイスはデータへのアクセスをタイムベースで制限してもよい。例えば、コンピューティングデバイスは、電子メールメッセージがその送信から一定タイム（例えば、一ヶ月）経過したら読むことができないようにしてもよい。コンピューティングデバイスは、特定の日が来るまで、エスクロー（escrow）にあるソースコードを読めないようにしてもよい。さらに別の例として、コンピューティングデバイスは、現在の日付および／または時刻より前の日付および／または時刻を財務的取引に付与することを防止してもよい。しかし、これらのタイムベースのアクセス制限を効果的であらしめるには、コンピューティングデバイスはシステムクロックが、攻撃者の利益のためにシステムタイムを改変する攻撃に耐えられるということを信頼しなければならない。
【詳細な説明】
【０００４】
時間依存データへの不正アクセスや不正な時間依存動作の実行をするためにシステムクロックのシステムタイムが変更されることを防止する方法を、以下に説明する。本発明をより完全に理解してもらうため、ロジック実装、オペコード、オペランド指定手段、リソースパーティション／シェア／コピー実装、システムコンポーネントのタイプと相互関係、ロジックパーティション／統合選択等の具体的な詳細を以下に説明する。当業者には当然のことながら、本発明はこのような具体的な詳細がなくても実施することができる。他の例では、本発明を分かりにくくしないため、制御構造、ゲートレベル回路、完全な命令シーケンスは詳細には示さなかった。当業者は、本願の説明を参照して、不必要な実験を適当な機能を実施することができるであろう。
【０００５】
本明細書中で「一実施形態」という場合、説明されている実施形態が特定の機能、構造、特徴を含むが、すべての実施形態がその特定の機能、構造、特徴を含むとは限らないことを意味している。さらに、上記フレーズが複数あるとき、必ずしも同じ実施形態を示す訳ではない。さらに、一実施形態に関して具体的な機能（feature）、構造、特徴（characteristic）が記載されているとき、明示的に記載されていてもいなくても、他の実施形態に関してそのような機能（feature）、構造、特徴（characteristic）を作用させることは、当業者の知識の範囲内であることをいっている。
【０００６】
図１は、コンピューティングデバイス１００の実施形態を示す図である。コンピューティングデバイス１００は、１以上のプロセッサ１０２と、プロセッサ１０２がプロセッサバス１０６を介して結合されたチップセット１０４とを有する。チップセット１０４は１以上の集積回路パッケージまたはチップであり、プロセッサ１０２をコンピューティングデバイス１００（例えば、マウス、キーボード、ディスクドライブ、ビデオコントローラ等）のシステムメモリ１０８、トークン１１０、ファームウェア１１２、および／またはその他のI/Oデバイス１１４に結合している。
【０００７】
プロセッサ１０２は、セキュリティエンハンスト（SE）環境（例えば、図３のSE環境等）を作るセキュアエンター（SENTER）命令の実行をサポートする。プロセッサ１０２は、SE環境を解除するセキュアエグジット（SEXIT）命令をサポートしていてもよい。一実施形態において、プロセッサ１０２は、SENTER、SEXIT、その他の命令の実行に関連してプロセッサバス１０６にバスメッセージを発行する。他の実施形態において、プロセッサ１０２は、システムメモリ１０８にアクセスするメモリコントローラ（図示せず）を有してもよい。
【０００８】
プロセッサ１０２は、１以上の動作モードをさらにサポートする。例えば、リアルモード、プロテクテッドモード、バーチャルリアルモード、バーチャルマシンエクステンションモード（VMXモード）である。さらに、プロセッサ１０２は、サポートされた動作モードの各々において、１以上の特権レベルまたはリングをサポートしてもよい。一般に、プロセッサ１０２の動作モードと特権レベルは、実行できる命令とその命令を実行したときの効果を規定する。より具体的に、プロセッサ１０２は、しかるべきモードおよび／または特権レベルにあるときにのみ、一定の特権を与えられた命令を実行することを許される。
【０００９】
ファームウェア１１２は基本入出力システムルーチン（BIOS）を有する。BIOSは低レベルのルーチンであり、プロセッサ１０２はシステムスタートアップ時にBIOSを実行し、コンピューティングデバイスのコンポーネントを初期化したり、オペレーティングシステムの実行を初期化したりする。トークン１１０は、１以上の暗号化鍵と、測定基準を記録・レポートするための１以上のプラットフォームコンフィギュレーションレジスタ（PCR）とを有する。トークン１１０は、特定されたPCRレジスタのクォート（quote）または内容を返すPCRクォート動作をサポートする。トークン１１０は、特定されたPCRレジスタ中の受信された測定基準を記録するPCRエクステンド動作もサポートする。一実施形態において、トークン１１０は、トラステッドコンピューティングプラットフォームアライアンス（TCPA）の主要仕様書第1.1a版（2001年12月1日）またはその改訂版に詳細に説明されているトラステッドプラットフォームモジュール（TPM）を有する。
【００１０】
チップセット１０４は、１以上のチップまたは集積回路パッケージを有し、プロセッサ１０２をコンピューティングデバイス１００のコンポーネントにインターフェイスしている。コンピューティングデバイス１００のコンポーネントとは、例えば、システムメモリ１０８、トークン１１０、その他のI/Oデバイス１１４等である。一実施形態において、チップセット１０４はメモリコントローラ１１６を有する。しかし、他の実施形態において、プロセッサ１０２はメモリコントローラ１１６の全部または一部を有していてもよい。メモリコントローラ１１６は、システムメモリ１０８にアクセスするために、コンピューティングデバイス１００の他のコンポーネントとのインターフェイスを提供する。さらに、チップセット１０４および／またはプロセッサ１０２のメモリコントローラ１１６は、メモリ１０８の一部領域をセキュリティエンハンスト（SE）メモリ１１８としてもよい。
【００１１】
一実施形態において、プロセッサ１０２は、適当な動作モード（例えば、プロテクテッドモード）や特権レベル（例えば、OP）にあるとき、SEメモリ１１８のみにアクセスする。さらにまた、SEメモリ１１８は、システムタイムを維持するためのトラステッドシステムクロック１２０を有する。トラステッドシステムクロック１２０は、システムタイマー割り込みに応じてプロセッサ１０２により実行される、割り込みサービスルーチンを有する。割り込みサービスルーチンは、システムタイマー割り込みがかけられるレートに基づいて、トラステッドシステムクロック１２０のシステムタイムを増加（increment）させる。例えば、システムタイマー割り込みが１ミリ秒につき１システムタイマー割り込みのレートでかけられるとき、割り込みサービスルーチンは、システムタイマー割り込みごとに１ミリ秒だけトラステッドシステムクロック１２０のシステムタイムを増加（increment）させる。コンピューティングデバイス１００は、トラステッドシステムクロック１２０のシステムタイムを用いて、ファイルにタイムスタンプし、周期的割り込みをかけ、時間ベースのワンショット割り込みをかけ、プロセスをスケジュールすることができる。さらに、コンピューティングデバイスはトラステッドシステムクロックを用いて、時間依存データのポリシーを実施（enforce）することができる。特に、コンピューティングデバイスはデータへのアクセスを時間ベースで制限してもよい。例えば、送信から一定時間（例えば、１ヶ月）が経過した後は電子メールメッセージを読めなくしてもよい。コンピューティングデバイスは、特定日が到来するまでエスクローのソースコードを読めないようにしてもよい。さらに他の実施例として、コンピューティングデバイスは、現在の日時より前の日時を財務的取引に割り当てることを防止してもよい。しかし、これらの時間ベースのアクセス制限を有効なものとするため、コンピューティングデバイスは、トラステッドシステムクロックが、そのシステムタイムを攻撃者に有利なように改変する攻撃に耐えるものであるということを信頼（trust）しなければならない。
【００１２】
チップセット１０４は、ペリフェラルコンポーネントインターコネクト（PCI）、アクセラレイテッドグラフィックポート（AGP）、ユニバーサルシリアルバス（USB）、ローピンカウント（LPC）、その他のI/Oバス（図示せず）等の標準I/O動作もサポートしていなければならない。トークンインターフェイス１２２は、チップセット１０４を１以上のプラットフォームコンフィギュレーションレジスタ（PCR）を有するトークン１１０と結びつける。一実施形態において、トークンインターフェイス１２２はLPCバス（ローピンカウント（LPC）インターフェイス仕様書、インテルコーポレーション、第1.0版、1997年12月29日）。
【００１３】
チップセット１０４は、例えば、秒、分、時、曜日、日付、月、年を含むウォールタイムを計時するリアルタイムクロック（RTC）１２４をさらに有する。RTC１２４は、コンピューティングデバイス１００がパワーダウン状態（例えば、パワーオフ、スリープ状態等）にある時であってもRTC１２４がウォールタイムを計時できるように、さらにバッテリー１２６からパワーを受け取る。RTC１２４は、外部オシレータ１２８により提供されたオシレーション信号に基づき、毎秒１回ウォールタイムを更新してもよい。例えば、オシレータ１２８は周波数が32.768キロヘルツのオシレーション信号を提供し、RTC１２４がこのオシレーション信号を分割し周波数が１ヘルツの更新信号を取得する。この更新信号はRTC１２４のウォールタイムを更新するために使用される。
【００１４】
チップセット１０４は、システムタイマー割り込みをかけるシステムタイマー１３０をさらに有する。このシステムタイマー割り込みはプログラマブルなレートでトラステッドシステムクロック１２０を駆動するために使用される。このために、システムタイマー１３０は、インテル８２５４イベントタイマー、インテルハイパフォーマンスイベントタイマー（HPET）、リアルタイムクロックイベントタイマーを有する。これらのタイマーは特定レートでシステムタイマー割り込みをかけるようにプログラムされる。一実施形態において、システムタイマー１３０は、カウント値でプログラムされたカウンターを有し、オシレータ１３２により提供されたオシレーション信号の各サイクルのカウント値を更新する（例えば、２だけ減らす）。さらに、システムタイマー１３０は、カウント値が所定値（例えば、０）と所定の関係（例えば、等しい）を有するごとに、システムタイマー割り込み（例えば、IRQ０）をアクティベートされた状態とデアクティベートされた状態の間でトグルする。システムタイマー１３０は、システムタイマー割り込みをトグルした後、カウント値をリロードする。従って、システムタイマー１３０は、カウント値とオシレータ１３２の周波数で決まるレートまたは周波数を有する周期的システムタイマー割り込みをかける。システムタイマー１３０は、システムタイマー割り込みのレートをプログラムしたり取得したりするためのインターフェイス１３４を有している。一実施形態において、インターフェイス１３４は１以上のレジスタを有する。プロセッサ１０２は、カウント値とそれに基づくシステムタイマー割り込みのレートを取得するために、このレジスタを読み出し、システムタイマー割り込みのレートを設定するために、このレジスタに書き込む。一実施形態において、プロセッサ１０２は、プロセッサバス１０６を介してインターフェイス１３４にコマンドやメッセージを提供し、システムタイマー割り込みのレートを取得したり、そのレートをプログラムしたりすることができる。
【００１５】
チップセット１０４は、システムタイマーロック１３６を有する。システムタイマーロック１３６がアクティベートされた場合、システムタイマー１３０のレートは改変することができなくなる。例えば、システムタイマーロック１３６は、レートを変更する書き込み、コマンド、および／またはメッセージがインターフェイス１３４に到達することを防止するか、またはインターフェイス１３４がそのような書き込み、コマンド、および／またはメッセージを無視するようにする。ロック１３６は、チップセット１０４のセキュリティエンハンスト（SE）空間（図示せず）にある。一実施形態において、プロセッサ１０２は、１以上の特権命令（privileged  instructions）を実行することにより、SE空間の内容を改変する。それゆえ、SE環境は、アントラステッドコードの実行をプロセッサリングに割り当てることにより（プロセッサリングはこのような特権命令を実行することができない）、プロセッサ１０２がアントラステッドコードを介してロック１３６の内容を改変することを防止する。
【００１６】
ステータス記憶部１３８は１以上のビットを有し、システムクロック攻撃が検出されたかどうかを示す。例えば、ステータス記憶部１３８は単一のビットを有し、そのビットはシステムクロック攻撃が検出されたことを示すためにアクティベートされ、システムクロック攻撃が検出されなかったことを示すためにデアクティベートされる。他の実施形態において、ステータス記憶部１３８は、カウントを格納する複数のビット（例えば、３２ビット）を有するカウンターを有する。カウンター値の変化によりシステムクロック攻撃の存否を示す。さらに別の実施形態において、ステータス記憶部１３８は複数のビットまたはカウンターを有し、システムクロック攻撃があったことを示すだけではなく、検出されたシステムクロック攻撃のタイプを示すこともできる。ステータス記憶部１３８は、アントラステッドコードがステータス記憶部１３８の内容を改変することを防止するために、チップセット１０４のSE空間にあってもよい。
【００１７】
チップセット１０４のディテクター１４０は、攻撃者がトラステッドシステムクロック１２０に対する攻撃を仕掛ける方法を検出し、システムクロック攻撃があったかどうかをレポートしてもよい。攻撃者がトラステッドシステムクロック１２０を攻撃する方法の１つは、システムタイマー１３０がシステムタイマー割り込みをかけるレートを、インターフェイス１３４を介して改変することである。アントラステッドコードがシステムタイマー１３０のレートを変更することを防止するロック１３６が設けられていても、インターフェイス１３４を介してレートを改変しようとする試みをディテクター１４０が検出してもよい。例えば、システムタイマー１３０のレートをプログラムするために使用されるシステムタイマーインターフェイス１３４のレジスタにデータが書き込まれたことを検出すると、ディテクター１４０はシステムクロック攻撃があったことを示すステータス記憶部１３８を更新する。同様に、システムタイマー１３０にシステムタイマー割り込みをかけるレートを改変させる１以上のコマンドまたはメッセージをインターフェイス１３４が受け取ったことを検出すると、ディテクター１４０がシステムクロック攻撃を示すステータス記憶部１３８を更新してもよい。さらに別の実施携帯において、検出器１４０は、ロック１３６がデアクティベートされているとき、インターフェイス１３４への上記アクセスはシステムクロック攻撃ではないと決定し、インターフェイス１３４をロックされていない状態にしてもよい。
【００１８】
攻撃者がトラステッドシステムクロック１２０を攻撃する他の方法は、オシレータ１３２のオシレーション信号の周波数を上下したり、システムタイマー１３０からオシレーション信号を無くしたりすることである。攻撃者はオシレーション信号の周波数を高くして、トラステッドシステムクロック１２０を速くし、正しいウォールタイムよりシステムタイムを進める。同様に、攻撃者はオシレーション信号の周波数を低くして、システムクロック１２０がゆっくり進むようにし、正しいウォールタイムより遅らせることもできる。さらに、攻撃者は、オシレーション信号を消したり、その周波数をゼロヘルツに下げたりして、システムクロック１２０にシステムタイムを更新できないようにするかも知れない。一実施形態において、ディテクター１４０は、オシレータ１３２からオシレーション信号が来ていないことを検出した場合、それに応じてステータス記憶部１３８を更新して、システムクロック攻撃があったことを表示してもよい。他の実施形態において、ディテクター１４０は、オシレーション信号の周波数が所定の範囲と所定の関係を有する（例えば、ある値より小さい、ある値より大きい、および／またはある２つの値の間にない）ことを検出した場合、それに応じてステータス記憶部１３８を更新して、システムクロック攻撃があったことを表示してもよい。このために、ディテクター１４０は、基準オシレーション信号を供給する自励オシレータを有し、そのオシレータ１３２により供給されたオシレーション信号の周波数が所定範囲と所定の関係を有するかどうかをその基準オシレーション信号により決定する。
【００１９】
トラステッドシステムクロック１２０を攻撃する他の方法は、各システムタイマー割り込みに応じてトラステッドシステムクロック１２０のシステムタイムをプロセッサ１０２が更新できないようにして、トラステッドシステムクロック１２０が遅れるかもしくは停止するようにすることである。このために、ディテクター１４０は、各システムタイマー割り込みに応じて、トラステッドシステムクロック１２０が更新されたかどうかを検出するロジックを有する。このようなロジックの一実施形態を図２に示した。図示したように、ディテクター１４０は、トラステッドシステムクロック１２０が更新中であるかどうかを示す更新記憶部２００を有する。さらにまた、更新記憶部２００は、チップセット１０４のSE空間にあり、トラステッドコードは更新記憶部２００の状態を変化させることを許され、アントラステッドコードは更新記憶部２００の状態を変化させることは禁止される。ディテクター１４０は、さらに検出ロジック２０２を有し、更新記憶部２００とシステムタイマー割り込みに基づきシステムクロック攻撃を検出する。
【００２０】
一実施形態において、更新記憶部２００は単一のビットを有し、そのビットは更新中であることを示すためにアクティベートされ、更新中でないことを示すためにデアクティベートされる。ディテクター１４０は、トラステッドシステムクロック１２０が更新中であることを示すために、各システムタイマー割り込みに応じて、更新記憶部２００をアクティベートする。さらに、トラステッドシステムクロック１２０の割り込みサービスルーチンは、更新が完了したことを示すためにトラステッドシステムクロック１２０のシステムタイムを更新した後に、更新記憶部２００をデアクティベートする。検出ロジック２０２は、更新記憶部２００が更新中であることを示している間に、システムタイマー割り込みがかかると、それに応じてシステムクロック攻撃があったと決定する。
【００２１】
他の実施形態において、更新記憶部２００はカウンターを有し、そのカウント値は、システムクロック１２０が最後に更新されてからかけられたシステムタイマー割り込みの数を示す。ディテクター１４０は、システムタイマー割り込みがかけられるたびに、更新記憶部２００のカウンター値を増加させ、ペンディングとなっているシステムクロック更新の数を表示する。さらに、トラステッドシステムクロック１２０の割り込みサービスルーチンは、システムタイマー割り込みに応じて、更新記憶部２００からカウント値を取得し、取得したカウント値に基づいてトラステッドシステムクロック１２０のシステムタイムを更新してもよい。トラステッドシステムクロック１２０を更新した後、割り込みサービスルーチンはカウント値を更新する。例えば、割り込みサービスルーチンは、トラステッドシステムクロック１２０の更新が行われたシステムタイマー割り込みの数だけ、カウンター値を減少させる。検出ロジック２０２は、更新記憶部２００のカウント値が所定数（例えば、５つ）のペンディングのシステムクロック更新と所定の関係（例えば、より多い）を有している間に、システムタイマー割り込みがかけられた場合、それに応じてシステムクロック攻撃があったと決定する。
【００２２】
SE環境３００の一実施形態が図３に示されている。SE環境３００は、例えば、システムスタートアップ、アプリケーション要求、オペレーティングシステム要求等の様々なイベントに応じて始まる。図示したように、SE環境３００は、トラステッドバーチャルマシンカーネルまたはモニター３０２、１以上の標準バーチャルマシン（標準VM）３０４、１以上のトラステッドバーチャルマシン（トラステッドVM）３０６を有する。一実施形態において、動作環境３００のモニター３０２は、セキュリティを管理しバーチャルマシン３０４、３０６間にバリアを設けるため、最も高い特権を持つプロセッサリング（例えば、０P）のプロテクテッドモードで実行される。
【００２３】
標準VM３０４は、VMXモード（例えば、０D）の最も高い特権を有するプロセッサリングで実行されるオペレーティングシステム３０８と、VMXモードの低い特権を持つプロセッサリング（例えば、３D）で実行される１以上のアプリケーション３１０とを有する。モニター３０２が実行されるプロセッサリングは、オペレーティングシステム３０８が実行されるプロセッサリングよりも権限が高いので、オペレーティングシステム３０８はコンピューティングデバイス１００の自由な制御をすることができないが、モニター３０２の制御と制約下にある。具体的に、モニター３０２は、オペレーティングシステム３０８やアプリケーション３１０等のアントラステッドコードにSEメモリ１１８とトークン１１０に直接アクセスさせない。さらに、モニター３０２はアントラステッドコードにシステムタイマー１３０のレートを直接改変させなく、アントラステッドコードにステータス記憶部１３８と更新記憶部２００を改変させない。
【００２４】
モニター３０２は、１以上の測定基準を取得するために、カーネルコードの暗号ハッシュ（例えば、メッセージダイジェスト５（MD5）、セキュアハッシュアルゴリズム１（SHA-1）等）であるトラステッドカーネル３１２の１以上の測定を実行する。そして、カーネル３１２の測定基準を用いてトークン１１０にPCRレジスタを延長させる。そして、SEメモリ１１８に格納された関連するPCRログにその測定基準を記録する。さらに、モニター３０２は、SEメモリ１１８にトラステッドVM３０６を確立し、確立されたトラステッドVM３０６の中にトラステッドカーネル３１２を立ち上げる。
【００２５】
同様に、トラステッドカーネル３１２は、１以上の測定基準を取得するために、アプレットコードの暗号ハッシュ等であるアプリケーション３１４のアプレットの１以上の測定をする。モニター３０２を介したトラステッドカーネル３１２はトークン１１０にアプレット３１４の測定基準を用いてPCRレジスタを延長させる。トラステッドカーネル３１２は、SEメモリ１１８に格納された関連したPCRログに測定基準を記録する。さらに、トラステッドカーネル３１２は、SEメモリ１１８の確立されたトラステッドVM３０６にトラステッドアプレット３１４を立ち上げる。
【００２６】
トラステッドカーネル３１２は、トラステッドシステムクロック１２０をさらに有する。上で説明したように、トラステッドシステムクロック１２０は、システムタイマー割り込みに応じてプロセッサ１０２により実行された割り込みサービスルーチンを有する。トラステッドシステムクロック１２０は、システムタイマー１３０がシステムタイマー割り込みを周期的にかけるレートに基づく値だけ、システムタイムを増加させる。当然のことながら、トラステッドシステムクロック１２０はSE環境３００の他のトラステッドモジュールにあってもよい。例えば、モニター３０２はトラステッドシステムクロック１２０を含んでもよい。他の実施形態において、トラステッドシステムクロック１２０はモニター３０２にあるシステムクロックナブ（system  clock  nub）を有してもよい。プロセッサ１０２は、システムタイマー割り込みに応じて、そのシステムクロックナブ３１６を実行する。さらに、システムクロックナブ３１６は、プロセッサ１０２にトラステッドシステムクロック１２０のシステムタイムを更新するトラステッドカーネル３１２のコードを実行させる、１以上の割り込み、信号、および／またはメッセージを生成する。システムクロックナブ３１６の１以上の割り込み、信号、および／またはメッセージは、プロセッサ１０２に、アントラステッドオペレーティングシステム３０８のアントラステッドシステムクロック３１８を更新するオペレーティングシステム３０８のコードを実行させてもよい。
【００２７】
図３のSE環境３００を開始するのに応じて、コンピューティングデバイス１００は、トークン１１０のPCRレジスタにある、コンピューティングデバイス１００のモニター３０２とハードウェアコンポーネントの測定基準を記録する。例えば、プロセッサ１０２はハードウェア識別子を取得する。このハードウェア識別子は、例えば、プロセッサ１０２、チップセット１０４、トークン１１０のプロセッサファミリ、プロセッサバージョン、プロセッサマイクロコードバージョン、チップセットバージョン、トークンバージョン等である。プロセッサ１０２は、１以上のPCRレジスタ中の取得されたハードウェア識別子を記録してもよい。
【００２８】
トラステッドシステムクロック１２０に対する攻撃に対応する方法を図４に示した。ブロック４００において、ディテクター１４０は、システムクロック攻撃があったと検出する。例えば、ディテクター１４０は、オシレータ１３２の周波数が所定の範囲と所定の関係を有し、システムタイマー１３０がシステムタイマー割り込みをかけるレートを変更するようにシステムタイマーインターフェイス１３４がアクセスされ、および／またはトラステッドシステムクロック１２０のペンディング中の更新の数が、所定数ペンディング中の更新と所定の関係を有すると決定した場合、それに応じてシステムクロック攻撃があったと決定する。ブロック４０２において、ディテクター１４０は、システムクロック攻撃を示すステータス記憶部１３８を更新する。一実施形態において、ディテクター１４０は、ステータス記憶部１３８のビットをアクティベートすることにより、システムクロック攻撃があったことを示す。他の実施形態において、ディテクター１４０は、ステータス記憶部１３８のカウント値を更新（例えば、増加、減少、設定、リセット）することにより、システムクロック攻撃を示す。
【００２９】
モニター３０２は、ブロック４０４において、ステータス記憶部１３８に基づき、システムクロック攻撃があったかどうかを決定する。一実施形態において、モニター３０２は、ステータス記憶部１３８がアクティブになった場合、それに応じてシステムクロック攻撃があったと決定する。他の実施形態において、モニター３０２は、ステータス記憶部１３８のカウント値が、期待カウント値と所定の関係（例えば、等しくない）を有する場合、それに応じてシステムクロック攻撃があったと決定する。例えば、モニター３０２は期待カウント値を維持し、この値はシステムリセット、システムパワーダウン、SE環境ティアダウンがあっても保持される。モニター３０２は、モニター３０２はステータス記憶部１３８のカウント値を期待カウント値と比較して、ディテクター１４０はモニター３０２がその期待カウント値を最後に更新してから１以上のシステムクロック攻撃を検出したかどうかを決定する。
【００３０】
ステータス記憶部１３８に加え、モニター３０２はトラストポリシーに基づき、システムクロック攻撃があったかどうかを決定してもよい。トラストポリシーは、これがなければディテクター１４０によりシステムクロック攻撃であるとされるトラステッドシステムクロック１２０のシステム時間の一定タイプの調整または変更を許可する。例えば、ステータス記憶部１３８はシステムタイマー１３０のレートがインターフェイス１３４を介して変更されたことを示す。しかし、トラストポリシーにより、プロセッサ１０２はシステムタイマー１３０のレートを所定量までは上下でき、トラストポリシーがなければこの変化はシステムクロック攻撃と見なされる。トラストポリシーにより、システムタイマー１３０のレートは調整できるが、所定期間（例えば、１日、１週間、システムリセット、パワーダウンあたり）内にインターフェイス１３４を介して所定回数（例えば、１，２）より多くの調整がなされると、トラストポリシーはその調整をシステムクロック攻撃とする。
【００３１】
ブロック４０６において、モニター３０２は検出されたシステムクロック攻撃に対応する。一実施形態において、モニター３０２はトラストポリシーに基づき対応する。一実施形態において、トラストポリシーは、SE環境３００が時間依存データを含まず、および／または時間依存動作を実行しないことを示している。従って、モニター３０２は、システムクロック攻撃を単に無視する。他の実施形態において、ポリシーは、モニター３０２は、一定種類のシステムクロック攻撃を検出すると、コンピューティングデバイス１００をリセットするか、またはSE環境３００をティアダウンする。一定種類のシステムクロック攻撃の検出とは、例えば、オシレーション信号の周波数が所定範囲と所定の関係を有することや、システムタイマー１３０のレートが所定範囲と所定の関係を有することの検出である。他の実施形態において、モニター３０２は、トラステッドシステムクロック１２０のシステムタイムを検証および／または変更する機会を利害関係のあるものに提供する。例えば、モニター３０２は、コンピュータデバイス１００のユーザおよび／または時間依存データの所有者に、トラステッドシステムクロック１２０のシステムタイムを提供し、そのユーザおよび／または所有者にシステムタイムが正しいことを検証させ、および／またはシステムタイムを正しいウォールタイムに更新する。
【００３２】
モニター３０２は、ブロック４０８において、ステータス記憶部１３８を更新して、システムステータス攻撃の表示を削除する。一実施形態において、モニター３０２は、RTC攻撃の表示をクリアするために、ステータス記憶部１３８のビットをデアクティベートしてもよい。他の実施形態において、モニター３０２は、期待カウント値および／またはステータス記憶部１３８のカウント値を更新し、その期待カウント値とステータス記憶部１３８のカウント値が、システムクロック攻撃が検出されなかったことを示す関係を有するようにする。
【００３３】
コンピューティングデバイス１００は、機械読み取り可能媒体に格納された命令を実行した場合、それに応じて図４の方法の全部または一部を実行する。ここで、機械読み取り可能媒体は、例えば、リードオンリーメモリ（ROM）、ランダムアクセスメモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および／または電気的、光学的、音響的その他の形の伝搬信号である、例えばキャリア波、赤外信号、デジタル信号、アナログ信号である。さらにまた、図４に例示した方法は、一連の動作として示したが、コンピューティングデバイス１００は、本方法の様々な動作を並行して、または異なる順序で実行することもできる。
【００３４】
本発明の特徴を、実施形態を参照しながら説明したが、この説明は本発明の範囲を限定するためのものではない。本発明の他の実施形態のみならず、上記の実施形態の様々な変形も、本発明の技術分野における当業者に明らかなものは本発明の精神と範囲の中に入る。
【図面の簡単な説明】
【００３５】
ここで説明した発明は、限定としてではなく一例として添付した図面に示されている。図示を簡単で分かりやすいものにするために、図に示したエレメントは必ずしも実際の大きさでは描かれていない。例えば、一部のエレメントの大きさは、分かりやすくするため、他のエレメントよりも拡大されている。さらに、適当と思われる場合には、対応する、または類似するエレメントを示すために参照数字を繰り返し使用した。
【図１】コンピューティングデバイスの一実施形態を示すブロック図である。
【図２】システムクロックに対する攻撃を検出する、図１のコンピューティングデバイスのディテクターの一実施形態を示すブロック図である。
【図３】図１のコンピューティングデバイスにより設立されたセキュリティエンハンスト（SE）環境の一実施形態を示す概略図である。
【図４】システムクロックの攻撃に対応する方法の一実施例を示すフローチャートである。
【図１】
2006512677.tif 000003
【図２】
2006512677.tif 000004
【図３】
2006512677.tif 000005
【図４】
2006512677.tif 000006
【国際調査報告】
2006512677.tif 000007
2006512677.tif 000008
2006512677.tif 000009