(57)【特許請求の範囲】
【請求項１】
プロセッサシステムにおいて複数の電力状態を管理する方法であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第１のシグネチャを生成する段階と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第２のシグネチャを生成する段階と、
前記第１のシグネチャが前記第２のシグネチャに一致する場合は、前記低電力モードから前記プロセッサシステムをレジュームする段階と、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合は、エラーを生成する段階とを備え、
前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
方法。
【請求項２】
プロセッサシステムにおいて複数の電力状態を管理する方法であって、
セキュアプロセッサを有するプロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、前記セキュアプロセッサにより少なくとも第１のシグネチャを生成する段階と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、前記セキュアプロセッサにより少なくとも第２のシグネチャを生成する段階と、
前記第１のシグネチャが前記第２のシグネチャに一致する場合は、前記低電力モードから前記プロセッサシステムをレジュームする段階と、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合は、前記セキュアプロセッサによりエラーを生成する段階とを備え、
前記プロセッサシステムはさらに、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
前記セキュアプロセッサは、前記ホストプロセッサへ前記エラーを送信し、
前記ホストプロセッサは、前記エラーに基づいてハードウェアリセットを実行する
方法。
【請求項３】
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、プラットフォームソフトウェアの複数の動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
請求項１または２に記載の方法。
【請求項４】
少なくとも１つのキーと乱数又は擬似乱数とを生成する段階と、
前記第１のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも１つのキーと前記乱数又は擬似乱数とを用いる段階とをさらに備える
請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記データ構造内の前記情報は、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレスと複数のデータサイズの少なくとも１つを含む
請求項４に記載の方法。
【請求項６】
前記少なくとも１つのキーを再生成する段階と、
前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得する段階と、
前記第２のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる段階とをさらに備える
請求項４又は５に記載の方法。
【請求項７】
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域の少なくともいくつかを決定する段階をさらに備え、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域の前記少なくともいくつかを特定する
請求項１から６のいずれか１項に記載の方法。
【請求項８】
サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの他のメモリ領域を決定する段階をさらに備え、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域の前記他のメモリ領域を特定する
請求項７に記載の方法。
【請求項９】
前記低電力モードの間に、持続的に電力供給されるメモリに前記データ構造へのポインタを格納する段階をさらに備える
請求項１から８のいずれか１項に記載の方法。
【請求項１０】
前記レジュームプロセスの間に前記持続的に電力供給されるメモリから前記ポインタを取得する段階と、
前記ポインタに基づいて前記レジュームプロセスの間に前記データ構造を検索する段階とをさらに備える
請求項９に記載の方法。
【請求項１１】
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムが低電力モードであるときに、電力供給され続ける第１のメモリと、前記第１のメモリと通信するプロセッサとを備え、
前記第１のメモリは、
乱数又は擬似乱数と、
データ構造へのポインタであって、前記データ構造は、前記低電力モードの間に前記プロセッサシステムの動作状態を格納する複数のメモリ領域を特定する前記データ構造に格納された情報を認証するための少なくとも第１のシグネチャを格納する、前記ポインタとを格納し、
前記プロセッサは、
前記プロセッサシステムが前記低電力モードへ移行しているとき、前記データ構造と前記乱数又は擬似乱数とに基づいて前記第１のシグネチャを生成し、
前記プロセッサシステムが前記低電力モードからレジュームするレジュームプロセス中であるとき、前記データ構造と前記乱数又は擬似乱数とに基づいて少なくとも第２のシグネチャを生成し、
少なくとも前記第１のシグネチャと前記第２のシグネチャとの比較に基づいて前記データ構造が有効であるかを決定し、
前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
装置。
【請求項１２】
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムが低電力モードであるときに、電力供給され続ける第１のメモリと、前記第１のメモリと通信するプロセッサとを備え、
前記第１のメモリは、
乱数又は擬似乱数と、
データ構造へのポインタであって、前記データ構造は、前記低電力モードの間に前記プロセッサシステムの動作状態を格納する複数のメモリ領域を特定する前記データ構造に格納された情報を認証するための少なくとも第１のシグネチャを格納する、前記ポインタとを格納し、
前記プロセッサは、
前記プロセッサシステムが前記低電力モードへ移行しているとき、前記データ構造と前記乱数又は擬似乱数とに基づいて前記第１のシグネチャを生成し、
前記プロセッサシステムが前記低電力モードからレジュームするレジュームプロセス中であるとき、前記データ構造と前記乱数又は擬似乱数とに基づいて少なくとも第２のシグネチャを生成し、
少なくとも前記第１のシグネチャと前記第２のシグネチャとの比較に基づいて前記データ構造が有効であるかを決定し、
前記プロセッサは、セキュアプロセッサであり、
前記装置はさらに、
少なくとも前記第１のシグネチャと前記第２のシグネチャとの前記比較に基づいて前記データ構造が有効ではない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
前記セキュアプロセッサは、前記ホストプロセッサへエラーステータスを送信し、
前記ホストプロセッサは、前記エラーステータスに基づいてハードウェアリセットを実行する
装置。
【請求項１３】
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、前記動作状態は、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
請求項１１または１２に記載の装置。
【請求項１４】
前記プロセッサはさらに、製造業者要求領域テーブルに基づいて前記複数のメモリ領域の少なくともいくつかを決定し、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、前記複数のメモリ領域の前記少なくともいくつかを特定する
請求項１１から１３のいずれか１項に記載の装置。
【請求項１５】
前記プロセッサはさらに、サードパーティ要求領域テーブルに基づいて前記複数のメモリ領域のうちの第２のメモリ領域を決定し、
前記サードパーティ要求領域テーブルにおいて、サードパーティが前記複数のメモリ領域のうちの前記第２のメモリ領域を特定する
請求項１４に記載の装置。
【請求項１６】
前記プロセッサは、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレス及び複数のデータサイズの少なくとも１つに基づいて前記第１及び第２のシグネチャを生成する
請求項１１から１５のいずれか１項に記載の装置。
【請求項１７】
前記第１のメモリは、組み込みスタティックランダムアクセスメモリであり、
前記装置はさらに、前記データ構造を格納するダイナミックランダムアクセスメモリを備える
請求項１１から１６のいずれか１項に記載の装置。
【請求項１８】
複数の命令を含むプログラムであって、
前記複数の命令は、実行されたときに機械に、少なくとも、
低電力モードへプロセッサシステムを移行させているとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて少なくとも第１のシグネチャを生成させ、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて少なくとも第２のシグネチャを生成させ、
前記第１のシグネチャが前記第２のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームさせ、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、エラーを生成させ、
前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
プログラム。
【請求項１９】
複数の命令を含むプログラムであって、
前記複数の命令は、実行されたときに機械に、少なくとも、
セキュアプロセッサを有するプロセッサシステムを低電力モードへ移行させているとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて前記セキュアプロセッサにより少なくとも第１のシグネチャを生成させ、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて前記セキュアプロセッサにより少なくとも第２のシグネチャを生成させ、
前記第１のシグネチャが前記第２のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームさせ、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、前記セキュアプロセッサによりエラーを生成させ、
前記プロセッサシステムは、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
前記セキュアプロセッサは、前記ホストプロセッサへ前記エラーを送信し、
前記ホストプロセッサは、前記エラーに基づいてハードウェアリセットを実行する
プログラム。
【請求項２０】
前記複数の命令はさらに、前記機械に、
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも１つを決定させ、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも１つを特定する
請求項１８または１９に記載のプログラム。
【請求項２１】
前記複数の命令はさらに、前記機械に、
サードパーティ要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの第２のメモリ領域を決定させ、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第２のメモリ領域を特定する
請求項２０に記載のプログラム。
【請求項２２】
前記複数の命令はさらに、前記機械に、
少なくとも１つのキーと乱数又は擬似乱数とを生成させ、前記第１のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて前記少なくとも１つのキーと前記乱数又は擬似乱数とを使用させ、
前記少なくとも１つのキーを再生成させ、前記レジュームプロセスの間に、持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得させ、前記第２のシグネチャを生成すべく、再生成した前記キーと取得した前記乱数又は擬似乱数とを使用させる
請求項１８から２１のいずれか１項に記載のプログラム。
【請求項２３】
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第１のシグネチャを生成する手段と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第２のシグネチャを生成する手段と、
前記第１のシグネチャが前記第２のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームする手段と、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、エラーを生成する手段とを備え、
前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
装置。
【請求項２４】
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第１のシグネチャを生成する手段と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第２のシグネチャを生成する手段と、
前記第１のシグネチャが前記第２のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームする手段と、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、エラーを生成する手段とを備え、
前記第１のシグネチャを生成する手段と、前記第２のシグネチャを生成する手段と、前記エラーを生成する手段とは、前記プロセッサシステムのセキュアプロセッサに含まれ、
前記プロセッサシステムは、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
前記セキュアプロセッサは、前記ホストプロセッサへ前記エラーを送信し、
前記ホストプロセッサは、前記エラーに基づいてハードウェアリセットを実行する
装置。
【請求項２５】
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも１つを決定する手段をさらに備え、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも１つを特定する
請求項２３または２４に記載の装置。
【請求項２６】
サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの第２のメモリ領域を決定する手段をさらに備え、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第２のメモリ領域を特定する
請求項２５に記載の装置。
【請求項２７】
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、前記プロセッサシステムの動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
請求項２３から２６のいずれか１項に記載の装置。
【請求項２８】
少なくとも１つのキーと乱数又は擬似乱数とを生成し、前記第１のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも１つのキーと前記乱数又は擬似乱数とを用いる手段と、
前記少なくとも１つのキーを再生成し、前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得し、前記第２のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる手段とをさらに備える
請求項２３または２４に記載の装置。
【請求項２９】
請求項１８から２２のいずれか１項に記載のプログラムを格納するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、複数のプロセッサシステムに関し、より具体的には、複数の低電力状態の間にプロセッサシステムの複数のメモリ領域を保護する複数の方法及び装置に関する。
【背景技術】
【０００２】
複数のエネルギースター規格は、複数の電子デバイスの許容低電力消費評価の複数の電力レベルを規定する。そのようなエネルギースター規格に準拠するために、複数の電子デバイスはしばしば、１又は複数の低電力モードを実装する。そのような複数の低電力モードは、完全にオフの電力状態、ＲＡＭ（ランダムアクセスメモリ）へのサスペンド電力状態、ディスク（ハイバーネイト）へのサスペンド状態、及び／又は１又は複数のタイプのスタンバイ電力状態を含む。完全にオフの電力状態は一般的に、いずれかのプラットフォーム電力状態の電力の最小量を消費する。しかし、完全にオフの電力状態は、パワーオンオペレーションが再度適用された後、プラットフォームがプラットフォームソフトウェアの完全なブートを完了させることを必要とする。そのような完全なブートは、複数の望ましくないブートレイテンシを招く。
【０００３】
ＲＡＭへのサスペンド（ｓｕｓｐｅｎｄ−ｔｏ−ＲＡＭ）の電力状態が完全なオフ状態への代替である。ＲＡＭへのサスペンドの電力状態は、ＲＡＭへのサスペンドの電力状態に入る直前にあるように、プラットフォームソフトウェアの動作状態を維持する。プラットフォームソフトウェア動作状態が、ＲＡＭへのサスペンドの電力状態の間にＲＡＭに保持されるため、プラットフォームソフトウェアは、ＲＡＭへのサスペンドの状態へ入る前にオフのままであることを継続すべく、ブート処理の一部を実行することだけが必要である。
【図面の簡単な説明】
【０００４】
【図１】アクティブ電力状態とＲＡＭ（ランダムアクセスメモリ）へのサスペンドの電力状態との間で移行する一例のプロセッサシステムを示す。
【０００５】
【図２】プロセッサシステムの複数の低電力状態の間に複数のメモリ領域を保護するために用いられうる図１の一例のプロセッサシステムの複数の例のコンポーネントを示す。
【０００６】
【図３】低電力状態の間にシステムメモリに格納されるプラットフォームソフトウェアの複数の保護される領域のための複数のシグネチャ及び複数の位置情報を格納する一例のデータ構造フォーマットを示す。
【０００７】
【図４】本開示の複数の教示による、低電力モード電力状態とアクティブ電力状態との間で図１のプロセッサシステムを移行させるために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【０００８】
【図５】低電力状態からのコールドブート又はレジュームの間にプロセッサシステムをブートするホストブートシーケンスを実現するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【０００９】
【図６】低電力状態へプロセッサシステムを移行させるために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【００１０】
【図７Ａ】ソフトウェアプラットフォーム動作状態のためのデータを格納するシステムメモリの複数の保護される領域を検証するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【図７Ｂ】ソフトウェアプラットフォーム動作状態のためのデータを格納するシステムメモリの複数の保護される領域を検証するために実行されうるコンピュータ可読命令を表す一例のフロー図を示す。
【００１１】
【図８】低電力状態からレジュームするコールドブート処理又はレジューム処理においてプロセッサシステムをブートするために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【００１２】
【図９】ＲＡＭへのサスペンドのデータ構造を認証するために利用可能な複数のシグネチャを生成するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【００１３】
【図１０】ＲＡＭへのサスペンドのデータ構造の有効性を検証するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
【発明を実施するための形態】
【００１４】
本開示の複数の例の方法、装置、システム、及び製造物品は、複数のプロセッサシステムの低電力状態の間にメモリの複数の領域を保護することを可能にする。開示された複数の例は、本開示において、ＲＡＭ（ランダムアクセスメモリ）へのサスペンド（ｓｕｓｐｅｎｄ−ｔｏ−ＲＡＭ）電力状態に関連して説明される。しかし、本開示の複数の例は、さらに又はもしくは、複数のプロセッサシステムの複数の他の電力状態の間にメモリの複数の領域を保護するために用いられうる。
【００１５】
複数のプロセッサシステムは、完全な電力オンから完全なオフ状態までの範囲で、複数の異なる電力状態の間で移行するように構成されうる。これらの異なる電力状態は、電力を節約するように提供される。ＲＡＭへのサスペンドの電力状態のような中間電力状態は、より低電力の消費と、完全なオフ状態又はディスク（例えばハイバーネイト）へのサスペンド電力状態からのコールドブートを実行するときに可能な他の方法よりも比較的早い、オペレーションをレジュームする（例えばＲＡＭへのサスペンドの電力状態を完全なオン状態に抜け出させる）能力を有することとの間のバランスをとるように、場合によっては利用される。ＲＡＭへのサスペンドの電力状態は、プロセッサシステムがＲＡＭへのサスペンドの状態へのその移行を開始するときに実行しているプラットフォームソフトウェア（例えばオペレーティングシステム（ＯＳ）及び／又は複数のアプリケーション）のランダムアクセスメモリに状態又は複数の状態を、プロセッサシステムが保持する低電力状態である。プロセッサシステムがＲＡＭへのサスペンドの状態を完全なオン電力状態へレジューム又は抜け出させるとき、プロセッサシステムは、完全なオフ状態又はハイバーネイト状態からのコールドブートを実行するときに要求されるような全体のプラットフォームブートソフトウェアを実行する必要がない。複数の先行技術のシステムにおいて、レジュームのときに全体のプラットフォームブートソフトウェアを実行しないことにより、潜在的なセキュリティリスクを導入する。これは、プラットフォームシステムメモリが、ＲＡＭへのサスペンドの電力状態にある間に危険にさらされうるためである。例えば、悪性コードは、プラットフォームソフトウェアの動作状態を格納する複数のメモリ領域に書き込まれることが可能である。そのような先行技術の複数のシステムのＲＡＭへのサスペンドの状態からのレジュームの際、危険にさらされるプラットフォームソフトウェアは、実行され、攻撃者がシステムを制御するさもなければシステムを危険にさらすことを可能にする。
【００１６】
ＲＡＭへのサスペンドの電力状態のときにセキュリティ脆弱性を有する複数の先行技術のシステムとは異なり、本開示の複数の例は、複数のプロセッサシステムがサスペンド電力状態又は低電力状態（例えばＲＡＭへのサスペンドの電力状態）にある間、プラットフォームソフトウェアを保護する複数の機能をプラットフォームソフトウェア及び複数のシステムインテグレータに提供するトラステッドレジュームを実装するために用いられうる。
【００１７】
図１は、プロセッサシステム１００の複数の低電力状態の間に複数のメモリ領域を保護する本開示の複数の例を実装するために用いられうる一例のプロセッサシステム１００を示す。示される例において、プロセッサシステム１００は、アクティブ電力状態１０２とＲＡＭへのサスペンド（ＳＴＲ）電力状態１０４との間で移行するように示される。示される例のアクティブ電力状態１０２において、マイクロプロセッサ（ｕＰ）サブシステム１０６、通信サブシステム１０８、メモリサブシステム１１０、及びユーザインタフェース（Ｉ／Ｆ）サブシステム１１２が、完全に電力供給されるように示される。示される例のＲＡＭへのサスペンドの電力状態１０４において、マイクロプロセッササブシステム１０６、通信サブシステム１０８、メモリサブシステム１１０、及び表示サブシステム１１２が、電力がそれらの一部から除かれる低電力状態であるように示される。
【００１８】
示される例において、マイクロプロセッササブシステム１０６、通信サブシステム１０８、メモリサブシステム１１０、及び表示サブシステム１１２は、電力が一部１１４、１１６、１１８および１２０に適用されるように維持するように、部分的にのみ電力供給される。このように、電力供給される一部１１４、１１６、１１８および１２０は、ＲＡＭへのサスペンドの電力状態１０４からプロセッサシステム１００のアクティブ電力状態１０２をレジュームするのに有用である。示される例において、電力供給されるマイクロプロセッサの一部１１２は、持続的に電力供給されるメモリ（例えば図２の持続的に電力供給されるメモリ２１２）を含み、ＲＡＭへのサスペンドの電力状態１０４の間に、ＲＡＭ（例えば図２のシステムメモリ２１０）に格納されたプラットフォームソフトウェアの複数のセキュリティパラメータ（例えば複数のシグネチャ）及び複数のメモリアドレス位置を格納する認証テーブルへのアドレス又はポインタ（例えば図２のＲＡＭへのサスペンドのデータ構造２１６へのポインタ）を格納する。示される例において、電力供給される通信サブシステムの一部１１４は、ネットワーク通信を用いてプロセッサシステム１００をレジュームするべく、ウェイクオンＬＡＮ（ローカルエリアネットワーク）回路又は他のウェイクオンネットワーク回路への電力を含みうる。示される例において、電力供給されるメモリサブシステムの一部１１６は、プロセッサシステム１００がＲＡＭへのサスペンドの電力状態１０４のときにプラットフォームソフトウェアの状態又は複数の状態を格納するために用いられるシステムメモリ（例えば図２のシステムメモリ２１０）を含む。示される例の電力供給されるユーザインタフェースの一部１１８は、電力／ウェイクボタンの押し下げ又はキーボードキーの押し下げ又はいずれか他のタイプのビューマンインターフェースデバイス（ＨＩＤ）の他のユーザ入力を検出するべく、電力を含みうる。
【００１９】
本開示の複数の例は、様々な例の保護機能又はトラスト機能を提供することによって、プロセッサシステム１００をＲＡＭへのサスペンドの電力状態１０４からアクティブ状態１０２へ移行させるトラステッドレジュームを用いることを可能にする。示される複数の例において、トラステッドレジュームは、（ａ）低電力モード（例えば、ＲＡＭへのサスペンドの電力状態１０４）のときにプラットフォームソフトウェアの状態を格納するシステムメモリ（図２のシステムメモリ２１０）のコンテンツを変更する複数の悪意のある攻撃の能力を実質的に減らす、（ｂ）複数のシステムメモリリプレイ攻撃及び／又はロールバックアタックを実行する能力を実質的に減らす、（ｃ）システムメモリ（例えば、図２のシステムメモリ２１０）の複数の認証／非認証領域を指定することを可能にする、（ｄ）ホストプロセッサ（例えば図２のホストプロセッサ２０２）が、署名キーを知らずに、選択された複数の保護される領域（例えば図２の複数の保護される領域２１８）のためのシグネチャを生成／認証することを可能にする、及び（ｅ）（例えばホストプロセッサ（例えば図２のホストプロセッサ２０２）の、複数のセキュアプロセッサ（例えば図２のセキュアプロセッサ２０４）の、及び／又は複数のプロセッサシステムの）複数のハードウェア製造業者及びサードパーティベンダーが、本開示の複数のトラステッドレジューム技術において認証及び検証処理を用いることによって保護されるべき、複数の保護される領域（例えば図２の複数の保護される領域２１８）の量（例えば少なくとも必要最低限量）を特定することを可能にする。以下詳述するように、本開示の複数の例は、ＲＡＭへのサスペンドの電力状態１０４への移行の間にシステムメモリ（例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ））の重要な一部を認証／署名し、ＲＡＭへのサスペンドの状態１０４からアクティブ電力状態１０２へのレジュームのときにシステムメモリのそれらの認証／署名された重要な一部を検証することによって、これらの保護を提供する。開示の複数の例において、ブートシーケンスの重要な一部は、ブートシーケンスのステージＮがステージＮ＋１に関する複数の保護される領域（例えば図２の複数の保護される領域２１８）を追加するように、ブートシーケンスの間に集約される。複数のロールバックアタックに対してガードするために、乱数又は擬似乱数（例えばノンス値）は、認証／署名処理に組み込まれ、ＲＡＭへのサスペンドの電力状態１０４の間に持続的に電力供給されるメモリ（例えば、図２の持続的に電力供給されるメモリ２１２）に格納される。
【００２０】
図２は、プロセッサシステム１００の複数の電力状態移行を管理するために用いられうる図１の例のプロセッサシステム１００の例の複数のコンポーネントを示す。示される例において、プロセッサシステム１００は、ホストプロセッサ（ＣＰＵ）２０２、セキュアプロセッサ（ＣＰＵ）２０４、フラッシュメモリ２０６、ホストブートＲＡＭ２０８、システムメモリ２１０及び持続的に電力供給されるメモリ２１２を含む。示された例のプロセッサシステム１００は、例えば、サーバ、パーソナルコンピュータ、モバイルフォン（例えば携帯電話）、携帯情報端末（ＰＤＡ）、インターネット装置、ＤＶＤプレーヤ、ＣＤプレーヤ、デジタルビデオレコーダ、Ｂｌｕ−ｒａｙプレーヤ、ゲーム機、パーソナルビデオレコーダ、セットトップボックス、又はいずれか他のタイプのコンピューティングデバイスでありうる。
【００２１】
示される例において、ホストＣＰＵ２０２、セキュアＣＰＵ２０４、及びホストブートＲＡＭ２０８は、プロセッサ２０２および２０４の間のプロセッサ間通信及びホストブートＲＡＭ２０８との通信がシリコンダイの外部にさらされないように、同一のシリコンダイ上に配置される。これは、セキュリティ通信及びホストＣＰＵ２０２、セキュアＣＰＵ２０４、及び／又はホストブートＲＡＭ２０８の間で交換されるセキュリティデータへの外部アクセス性を実質的に低減することにより、本開示の複数の例にさらにセキュリティを提供する。また、示される例において、フラッシュメモリ２０６及びシステムメモリ２１０は、ホストＣＰＵ２０２、セキュアＣＰＵ２０４、及びホストブートＲＡＭ２０８を含むシリコンダイと同一の回路ボード上に配置される別個の集積回路上に配置される。
【００２２】
プロセッサ２０２および２０４は、いずれかの所望のファミリー又は製造業者からの複数のプロセッサ又は複数のコントローラを用いることによって実装できる。示される例において、プロセッサ間通信（ＩＰＣ）経路２１４は、プロセッサ２０２および２０４の間に提供され、それらの間でのプロセッサ間通信を可能にする。示される例において、ホストプロセッサ２０２は、組み込みスタティックランダムアクセスメモリ（ＳＲＡＭ）を用いて実装されうる持続的に電力供給されるメモリ２１２を含む。ＳＲＡＭが揮発性メモリであるため、図１のＲＡＭへのサスペンドの電力状態１０４のような低電力モードの間、示される例において、それは電力供給され続け（又はそれの一部が電力供給され続け）、このため、それに記憶されたデータは持続する。
【００２３】
プロセッサ２０２および２０４は、フラッシュメモリ２０６、ホストブートＲＡＭ２０８、及びシステムメモリ２１０と通信する。不図示だが、プロセッサ２０２および２０４は、また、オペレーティングシステム及び／又は複数のアプリケーションを格納するマスメモリ（例えばハードドライブ）と通信しうる。示される例において、フラッシュメモリ２０６は、プロセッサシステム１００をブートするために複数のパラメータ（例えば、複数のセキュリティパラメータ及び／又は電力が完全に除去されるときに複数の揮発性メモリ内に持続されない他の複数のパラメータ）を格納するために用いられる不揮発性メモリである。示された複数の例のホストブートＲＡＭ２０８は、プロセッサシステム１００をブートしオペレーティングシステムをロードするためのブートコードを格納する。示された例のホストブートＲＡＭ２０８は、また、システムメモリ２１０に格納されたプラットフォームソフトウェアの複数の保護される領域（例えば、図２の複数の保護される領域２１８）を示すべく、製造業者要求領域テーブル２２４を格納する。示される例において、ホストＣＰＵ２０２、セキュアＣＰＵ２０４、プロセッサシステム１００及び／又はプロセッサシステム１００の１又は複数のハードウェアコンポーネントのハードウェア製造業者は、製造業者要求領域テーブル２２４に示された複数の領域（例えば複数の保護される領域２１８）を特定し、このため、これらの特定された複数の領域は、トラステッドレジュームを実装すべく、ＲＡＭへのサスペンドの電力状態１０４（図１）の間に本開示の複数の例を用いて保護される。
【００２４】
示される例において、ホストブートＲＡＭ２０８はまた、システムメモリ２１０に格納されたプラットフォームソフトウェアのサードパーティに特定された複数の保護される領域（例えば、図２の複数の保護される領域２１８）を示すべく、コンディショナルアクセス（ＣＡ）要求領域テーブル２２６（例えば、サードパーティ要求領域テーブル）を格納する。示される複数の例において、ＣＡ要求領域テーブル２２６は、複数のアフターマーケットプロダクト又は開発（例えばプロセッサシステム１００へのアフターマーケットソフトウェア及び／又はハードウェアのインストール）のためのサードパーティによってアクセス可能で変更可能である。例えば、１又は複数のサードパーティは、ＣＡ要求領域テーブル２２６に示された複数の領域（例えば、複数の保護される領域２１８）を特定し、このため、これらの特定された領域は、トラステッドレジュームを実装すべく、ＲＡＭへのサスペンドの電力状態１０４（図１）の間に、本開示の複数の例を用いて保護される。示される複数の例において、ＣＡ要求領域テーブル２２６は、ホストＣＰＵ２０２が複数の命令を実行開始する前に、セキュアＣＰＵ２０４によってホストブートＲＡＭ２０８へコピーされ、ホストブートＲＡＭ２０８から認証される。示される複数の例において、これは、ホストＣＰＵ２０２がそのリセットベクトルからブートする電力状態移行の間（例えば、ＲＡＭへのサスペンドの電力状態１０４からのレジュームのとき及び／又はコールドブートの間）に起きる。いくつかの実施例において、ＣＡ要求領域テーブル２２６は、ステージ１ブートローダ（例えば図５に示されたステージ１ブート処理）の間に認証されるホストブートＲＡＭ２０８の認証された領域に格納されうる。もしくは、ＣＡ要求領域テーブル２２６は、複数のステージ１ブートローダパラメータブロックの部分として実装されうる。
【００２５】
製造業者要求領域テーブル２２４及びＣＡ要求領域テーブル２２６を用いることによって、ハードウェア製造業者及び複数のサードパーティが、本開示の複数の例を用いて保護するのに有用であると考える複数の保護される領域（例えば保護される領域２１８）を特定することができる。もしくは、いくつかの実施例において、製造業者要求領域テーブル２２４及びＣＡ要求領域テーブル２２６は、ホストブートＲＡＭ２０８に格納される単一のテーブルとして実装されうる。
【００２６】
示された例のシステムメモリ２１０は、プロセッサシステム１００がアクティブ電力状態１０２から図１のＲＡＭへのサスペンドの電力状態１０４へ移行するときに実行しているプラットフォームソフトウェア（例えばオペレーティングシステム及び／又は複数のアプリケーション）の動作状態を格納する。このように、プロセッサシステム１０２は、ＲＡＭへのサスペンドの電力状態１０４に入る前の同一の動作状態をレジュームすべく、システムメモリ２１０に格納されたプラットフォームソフトウェア状態に基づいて、ＲＡＭへのサスペンドの電力状態１０４からアクティブ電力状態１０２へ移行できる。例えば、オペレーティングシステムは、その同一の前の動作状態にレジュームでき、前にロードされ実行していた複数のアプリケーションは、それらの同一の複数の前の動作状態にレジュームできる。
【００２７】
示した例のシステムメモリ２１０は、揮発性ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を用いて実装される。いくつかの実施例において、そのような揮発性ＤＲＡＭがＲＡＭへのサスペンドの電力状態１０４の間にそのデータを持続可能であるようにするために、少なくとも電力の必要最低限量が、揮発性ＤＲＡＭに供給され、揮発性ＤＲＡＭが、それらに記憶されたデータが持続する低電力セルフリフレッシュモードで動作するようにセットされる。他の複数の例において、システムメモリ２１０は、キャッシュメモリ、揮発性ＳＲＡＭ、及び／又はいずれかの他のタイプの揮発性又は不揮発性メモリを用いて実装されうる。
【００２８】
示される例において、システムメモリ２１０は、ＲＡＭへのサスペンド（ＳＴＲ）データ構造２１６及びプラットフォームソフトウェアの複数の保護される領域２１８を格納する。示される例において、複数の保護される領域２１８は、ＲＡＭへのサスペンドの電力状態１０４の間に、システムメモリ２１０内に格納されたプラットフォームソフトウェアの複数の選択された一部を格納し、複数のセキュリティパラメータ（例えば複数のシグネチャ）を用いて複数の保護される領域２１８を署名又は認証することによって複数の攻撃から保護される。ＳＴＲデータ構造２１６は、ＲＡＭへのサスペンドの電力状態１０４の間に本開示の複数の例を用いて保護されるシステムメモリ２１０内にプラットフォームソフトウェアの複数の保護される領域２１８への複数のアドレス又は複数のポインタを格納する。示された例のＳＴＲデータ構造２１６はまた、そのデータを認証し、ＲＡＭへのサスペンドの電力状態１０４からのレジュームのときにそのデータの有効性を決定するために複数のセキュリティパラメータ（例えば、複数のシグネチャ）を格納する。示される例において、ＳＴＲデータ構造２１６を実装するために用いられる一例のフォーマットは、図３に関連して後述される。
【００２９】
プロセッサシステム１００が完全にアクティブな電力状態１０２にレジュームするときにホストＣＰＵ２０２にそのような悪性コードを実行させようと、悪性ソフトウェアを格納するシステムメモリ２１０の複数の異なる領域を指し示すようにＳＴＲデータ構造２１６内の情報を変更する複数の攻撃者によって、プロセッサシステム１００に複数の攻撃が試みられる。そのような複数の変更がＳＴＲデータ構造２１６内に存在するかを検出するために、本開示の検証処理は、プロセッサシステム１００のトラステッドレジュームの間に実行され、検証処理は、ＳＴＲデータ構造２１６がＲＡＭへのサスペンドの電力状態１０４の間に変更されたと検出するとエラーを生成する。このように、ホストＣＰＵ２０２及び／又はセキュアＣＰＵ２０４は、プロセッサシステム１００が悪性ソフトウェアによって危険にさらされ得ないように、プロセッサシステム１００が、レジュームプロセスを進行することを回避する。
【００３０】
示される例において、ホストＣＰＵ２０２の持続的に電力供給されるメモリ２１２は、システムメモリ２１０内にＳＴＲデータ構造２１６のストレージ位置（例えばメモリアドレス）を指し示す一例のＳＴＲデータ構造ポインタ２２０を格納する。プロセッサシステム１００をＲＡＭへのサスペンドの電力状態１０４から移行させるトラステッドレジューム処理の間に、ホストＣＰＵ２０２は、プラットフォームソフトウェアの複数の保護される領域２１８の整合性を検証可能にするためにＳＴＲデータ構造２１６を検索すべく、ＳＴＲデータ構造ポインタ２２０を取得できる。
【００３１】
示される例において、ホストＣＰＵ２０２の持続的に電力供給されるメモリ２１２はまた、一例の乱数／擬似乱数２２２を格納する。示された例の乱数／擬似乱数２２２は、ＲＡＭへのサスペンドの電力状態１０４の間にシステムメモリ２１０内に格納されたプラットフォームソフトウェアの複数の保護される領域２０８の整合性を確認するために複数の検証シグネチャを生成すべく、ノンス値として用いられる。示される例において、乱数／擬似乱数２２２は、プロセッサシステム１００がＲＡＭへのサスペンドの電力状態１０４へ移行しているときに複数の検証シグネチャを生成するために用いられる。複数の検証シグネチャを生成した後、乱数／擬似乱数２２２は、持続的に電力供給されるメモリ２１２において所望でないアクセスからセキュアに格納される。このように、ＲＡＭへのサスペンドの電力状態１０４からのレジュームのとき、乱数／擬似乱数２２２は、持続的に電力供給されるメモリ２１２から取得され、プラットフォームソフトウェアの複数の保護される領域２１８の整合性を検証するために用いられることができる。示される例において、乱数／擬似乱数２２２は、ホストＣＰＵ２０２の持続的に電力供給されるメモリ２１２に格納されるため、いずれの潜在的な攻撃者もアクセス又は変更が非常に困難であるユニークシークレット値として機能することによって、リプレイ／ロールバックアタックに対してガードするために用いられる。加えて、乱数／擬似乱数２２２は、十分にランダムであるため、攻撃者によって容易に予測可能ではない。いくつかの実施例において、乱数／擬似乱数２２２について比較的多数のビット（例えば６４又はそれより多いビット）を選択することで、また、衝突攻撃を起動する攻撃者の視点での時間及びストレージから非常にコストのかかるものとすることによって、リプレイ／ロールバックアタックに対してガードする。例えば、比較的多数のビットを有する乱数／擬似乱数２２２を用いることで、攻撃者は、衝突攻撃を起動するために、多くのＤＲＡＭ／ＳＴＲデータ構造置換を格納することを要求されうる。
【００３２】
図３は、図１のＲＡＭへのサスペンドの電力状態１０４の間に図２のシステムメモリ２１０に残存されたプラットフォームソフトウェアの複数の保護される領域２１８を認証すべく、複数のシグネチャ及び位置情報を格納するように、図２のＳＴＲデータ構造２１６を実装するために用いられうる一例のＲＡＭへのサスペンド（ＳＴＲ）データ構造フォーマット３００を示す。示される例において、ＳＴＲデータ構造フォーマット３００は、ゼロ（０）のバイトオフセットにＳＴＲシグネチャを格納し、ＳＴＲデータ構造２１６内に１６バイトのデータサイズを占有するためのＳＴＲヘッダシグネチャフィールド３０２を含む。示された例のＳＴＲヘッダシグネチャは、有効である（例えば、ＲＡＭへのサスペンドの電力状態１０４の間に変更されなかった又は危険にさらされなかった）ことを確認すべく、ＳＴＲデータ構造２１６の（例えば複数のＳＴＲヘッダフィールド３０８に格納された）ＳＴＲヘッダを認証するために用いられる。
【００３３】
示された例のＳＴＲデータ構造フォーマット３００は、１６のバイトオフセットにＳＴＲ分散／集合（ｓｃａｔｔｅｒ／ｇａｔｈｅｒ）テーブルシグネチャを格納し、ＳＴＲデータ構造２１６内に１６バイトのデータサイズを占有するためのＳＴＲ分散／集合テーブルシグネチャフィールド３０４を含む。示される例において、ＳＴＲ分散／集合テーブルシグネチャは、有効である（例えば、ＲＡＭへのサスペンドの電力状態１０４の間に変更されなかった又は危険にさらされなかった）ことを確認すべく、ＳＴＲデータ構造２１６に格納されているＮ×８バイトの分散／集合テーブル３１０を認証するために用いられる。示される例において、分散／集合テーブル３１０は、プラットフォームソフトウェアの複数の保護される領域２１８を格納するシステムメモリ２１０内の複数の位置への複数のポインタを格納する。
【００３４】
示された例のＳＴＲデータ構造フォーマット３００はまた、３２のバイトオフセットにＳＴＲ  ＤＲＡＭシグネチャを格納し、ＳＴＲデータ構造２１６に１６バイトのデータサイズを占有するためのＳＴＲ  ＤＲＡＭシグネチャフィールド３０６を含む。示される複数の例において、ＳＴＲ  ＤＲＡＭシグネチャは、有効である（例えば、ＲＡＭへのサスペンドの電力状態１０４の間に、変更されなかった又は危険にさらされなかった）ことを確認すべく、ＳＴＲデータ構造２１６に格納された分散／集合テーブル３１０に規定されたＤＲＡＭ領域を認証するために用いられる。示される例において、分散／集合テーブル３１０によって規定されたＤＲＡＭ領域は、ポインタ０フィールド３１２に格納されたポインタによって指し示され、それは、複数の保護される領域２１８（図２）の第１の１６バイト単位で揃えたバッファ（１６−ｂｙｔｅ  ａｌｉｇｎｅｄ  ｂｕｆｆｅｒ）である。
【００３５】
示される例において、ＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６に格納された複数のシグネチャは、プロセッサシステム１００がＲＡＭへのサスペンドの電力状態１０４へ移行するときＳＴＲデータ構造２１６に署名するために用いられる。このように、格納された複数のシグネチャは、ＳＴＲデータ構造２１６が有効であるか（ＲＡＭへのサスペンドの電力状態１０４の間に変更されたか又は危険にさらされたか）を決定するために、ＲＡＭへのサスペンドの電力状態１０４からプロセッサシステム１００をレジュームするときに用いられることができる。例えば、プロセッサシステム１００が完全にアクティブな電力状態１０２へレジュームするときにホストＣＰＵ２０２にそのような悪性コードを実行させようと、複数の潜在的な攻撃者は、悪性ソフトウェアを格納するシステムメモリ２１０の複数の異なる領域を指し示すべく、ＳＴＲデータ構造２１６内の情報を変更しうる。そのような複数の変更がＳＴＲデータ構造２１６に存在する場合、プロセッサシステム１００のトラステッドレジュームの間に実行される検証処理は、ＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及び／又はＳＴＲ  ＤＲＡＭシグネチャフィールド３０６のうちの１又は複数のシグネチャに基づいてエラーを生成する。
【００３６】
３つのシグネチャフィールド３０２、３０４および３０６が図３に示されるが、より少ないシグネチャ（例えば、１つのシグネチャ又は２つのシグネチャ）又はより多いシグネチャ（例えば、３つより多いシグネチャ）が、ＳＴＲデータ構造２１６を認証／署名して複数のレジュームオペレーションの間にその有効性を確認すべく、本開示の複数の例で利用されうる。加えて、特定のタイプの複数のシグネチャがここで開示されるが（例えばヘッダシグネチャ、分散／集合テーブルシグネチャ、及びＤＲＡＭシグネチャ）、複数の他のタイプのシグネチャ、及び／又は複数のシグネチャの生成の他のやり方が、ＳＴＲデータ構造２１６を認証／署名して複数のレジュームオペレーションの間にその有効性を確認すべく、本開示の複数の例で利用されうる。例えば、１又は複数のシグネチャは、低電力モードに入るときにＳＴＲデータ構造２１６を認証／署名し、レジュームプロセスの間に検証するために、シグネチャが用いられることができる限りは、ＳＴＲデータ構造２１６内の異なる情報（例えばより多くの情報、より少ない情報又は異なるようにセグメント化された情報）に基づいて生成されうる。
【００３７】
示された例のＳＴＲヘッダ３０８は、ＳＴＲデータ構造フォーマット３００のリビジョンを示すＳＴＲデータ構造バージョンフィールド３１６と、分散／集合テーブル３１０に格納された分散／集合エントリの数を示す分散／集合アレーエントリ数フィールド３１８とを含む。
【００３８】
示される例において、分散／集合テーブル３１０の分散／集合エントリは、それぞれ、複数の保護される領域２１８（図２）の対応するメモリ領域のメモリアドレス位置及びデータサイズを含む。分散／集合テーブル３１０は、ＳＴＲ  ＤＲＡＭシグネチャフィールド３０６に格納されるＳＴＲ  ＤＲＡＭシグネチャによって保護される第１の１６バイト単位に揃えたバッファのシステムメモリ２１０のメモリアドレス位置を指し示すポインタを格納するポインタ０フィールド３１２を含む。分散／集合テーブル３１０のサイズ０フィールド３２０は、第１の１６バイト単位に揃えたバッファの複数のバイトのデータサイズを格納する。示された例の分散／集合テーブル３１０は、システムメモリ２１０の複数のメモリアドレス位置と、ポインタＮフィールド３２４及びサイズＮフィールド３２６に対応する第Ｎの１６バイト単位に揃えたバッファまでの複数の他の１６バイト単位に揃えたバッファの複数の対応するデータサイズとを示す複数の他のポインタ／サイズフィールドペア３２２を含む。示される例において、ポインタ及びサイズフィールド３１２、３２０、３２２、３２４および３２６は、複数の保護される領域２１８を格納するシステムメモリ２１０の複数の１６バイト単位に揃えたバッファを参照する。ＳＴＲデータ構造２１６内にこのように複数の保護される領域２１８の複数のアドレス及びサイズを格納することにより、本開示の複数の例は、ＳＴＲデータ構造２１６の認証／署名に依拠することによって、ＲＡＭへのサスペンドの電力状態１０４からレジュームするとき複数の保護される領域２１８にアクセスすることが安全かを決定できる。
【００３９】
示される例において、分散／集合テーブル３１０は、１６バイトの倍数であるサイズにまで拡張可能である。この拡張性のため、分散／集合テーブル３１０は、複数のパディングバイト３２８が提供される。
【００４０】
例のＳＴＲデータ構造フォーマット３００は、複数の特定のデータサイズ（例えば、４バイト、８バイト、１６バイト、３２バイト等）及び複数のバイトオフセットに関連して図３に示されるが、他のデータサイズ及び／又はバイトオフセットが、ＳＴＲデータ構造フォーマット３００の複数のパラメータ（例えば、複数のシグネチャのデータサイズ及び／又はバイトオフセット及び／又は複数の他のパラメータ）のために用いられうる。分散／集合テーブル３１０は、複数の１６バイト単位に揃えたバッファを参照するが、分散／集合テーブル３１０は、複数の他のバッファサイズでの利用に適合されうる。加えて、分散／集合テーブル３１０内の複数のポインタ及びサイズ値は、示される例において、複数の保護される領域２１８（図２）の複数の位置及びサイズを特定するために用いられるが、複数の保護される領域２１８の複数の位置及び／又はサイズを特定する他の適したやり方がさらに又は代替で利用されうる。
【００４１】
図４、５，６，７Ａ，７Ｂ，及び８−１０は、本開示のように低電力状態の間にメモリの複数の領域を保護するべく、プロセッサシステム１００（図１及び２）によって実行されうる複数の機械可読命令を表す。これらの例において、複数の機械可読命令は、図２のホストＣＰＵ２０２及びセキュアＣＰＵ２０４のような１又は複数のプロセッサによる実行のための複数のプログラムを備える。複数のプログラムは、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、ハードドライブ、デジタル多用途ディスク（ＤＶＤ）、Ｂｌｕ−ｌａｙディスク、又はプロセッサ２０２および２０４に関連するメモリのような有形のコンピュータ可読媒体に格納されるソフトウェアに実装され、しかし、全体のプログラム及び／又はその複数の部分は、もしくは、プロセッサ２０２および２０４以外のデバイスによって実行され、及び／又はファームウェア又は専用ハードウェアに実装されうる。さらに、例の複数のプログラムは、図４，５，６，７Ａ，７Ｂ，及び８−１０に示されたフローチャートに関連して説明して説明されるが、例のプロセッサシステム１００を実装する多くの他の方法が代替で用いられうる。例えば、複数のブロックの実行の順序は、変更され、及び／又は、説明したブロックのいくつかは変更、削除、又は組み合わされうる。
【００４２】
上述したように、図４、５，６，７Ａ，７Ｂ及び８−１０の例の複数の処理は、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ（ＲＯＭ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、及び／又は任意の期間に（例えば、延長期間、永久的、短時間の場合に、一時的にバッファリングするため、及び／又は、情報のキャッシュのため）情報を格納するいずれか他の記憶媒体のような、有形のコンピュータ可読媒体に格納される複数の符号化された命令（複数のコンピュータ可読命令）を用いて実装されうる。本明細書中で用いるように、有形のコンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読ストレージを含み、複数の伝搬信号を除外するように明確に定義される。さらに又は代替で、図４、５，６，７Ａ，７Ｂ、及び８−１０の例の複数の処理は、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び／又は任意の期間に（例えば、延長期間、永久的、短時間の場合、一時的にバッファリングするため、及び／又は情報のキャッシュのために）情報を格納するいずれか他の記憶媒体のような非一時的なコンピュータ可読媒体に格納される複数の符号化された命令（例えば、複数のコンピュータ可読命令）を用いて実装されうる。本明細書中で用いるように、非一時的なコンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読記憶デバイス又はストレージディスクを含み、複数の伝搬信号を除外するように明確に定義される。本明細書中で用いるように、「少なくとも」という用語は、クレームのプリアンブルにおける移行用語として用いられるとき、それは、「備える」という用語が制限のないものであるのであるのと同一の方法で制限がない。したがって、そのプリアンブルで「少なくとも」を移行用語として用いるクレームは、クレームに明確に挙げられたものに加えて複数の要素を含みうる。
【００４３】
図４は、本開示の複数の教示による、アクティブ電力状態１０２（図１）とＲＡＭへのサスペンドの電力状態１０４（図１）との間で図１のプロセッサシステム１００を移行させる複数のコンピュータ可読命令を表す一例のフロー図である。より詳細な説明のために、後述される図５，６，７Ａ，７Ｂ及び８−１０は、本開示のようなアクティブ電力状態１０２とＲＡＭへのサスペンドの電力状態１０４との間でプロセッサシステム１００を移行させるように実行されうる追加の例の複数のオペレーションを示す。
【００４４】
次に図４を詳細にみて、最初に、ホストＣＰＵ２０２（図２）は、低電力モード命令（ブロック４０２）を受信する。示された例の低電力モード命令は、プロセッサシステム１００（図１及び２）をＲＡＭへのサスペンドの電力状態１０４（図１）へ移行させる命令である。セキュアＣＰＵ２０４（図２）は、図２のＳＴＲデータ構造２１６の複数の保護される領域２１８を特定すべく、複数のエントリを追加する（ブロック４０４）。例えば、セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６（図２）の分散／集合アレーエントリ数フィールド３１８（図３）において複数の保護される領域２１８の量を示す情報を格納し、複数の保護される領域２１８の複数の位置及びサイズを記述するＳＴＲデータ構造２１６の分散／集合テーブル３１０（図３）に複数のエントリを格納する。示される例において、セキュアＣＰＵ２０４は、図２の製造業者要求領域テーブル２２４においてハードウェア製造業者により特定される複数のメモリ領域、及び／又は、図２のコンディショナルアクセス要求領域テーブル２２６において１又は複数のサードパーティにより特定される複数のメモリ領域に基づいて、複数のメモリ領域が、複数の保護される領域２１８となるべきかを決定する。
【００４５】
セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６を認証するために複数のシグネチャ（ブロック４０６）を生成する。例えば、セキュアＣＰＵ２０４は、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャ３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６に格納するための複数のシグネチャを生成する。セキュアＣＰＵ２０４は、例えば、サイファーベースメッセージ認証コード（ＣＭＡＣ）機能、ハッシュベースのメッセージ認証コード（ＨＭＡＣ）又は複数のシグネチャを生成するいずれか他の適した機能を含む、複数のシグネチャを生成するためのいずれか適切な機能を用いうる。示される例において、セキュアＣＰＵ２０４は、シグネチャ生成機能を、ＳＴＲデータ構造２１６のＳＴＲヘッダフィールド３０８（図３）に格納されたＳＴＲヘッダに適用することによってＳＴＲヘッダシグネチャを生成する。示される例において、セキュアＣＰＵ２０４は、シグネチャ生成機能を、ＳＴＲデータ構造２１６のＳＴＲ分散／集合テーブル３１０（図３）に格納されたＳＴＲ分散／集合テーブルに適用することによって、ＳＴＲ分散／集合テーブルシグネチャを生成する。示される例において、セキュアＣＰＵ２０４は、分散／集合テーブル３１０のポインタ０フィールド３１２によって指し示されるＤＲＡＭ領域に、シグネチャ生成機能を適用し、複数の保護される領域２１８（図２）の第１の１６バイト単位に揃えたバッファを占有することによって、ＳＴＲ  ＤＲＡＭシグネチャを生成する。いくつかの実施例においてシグネチャ生成機能は、複数のシグネチャを生成して追加の認証強度を追加するとき、他のデータ（例えば、乱数／擬似乱数）と組み合わせて用いられうる。
【００４６】
セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６に複数のシグネチャを格納する（ブロック４０８）。例えば、セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６（図２）のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャ３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６（図３）に複数のシグネチャを格納する。プロセッサシステム１００は、低電力モードに入る（ブロック４１０）。示される例において、低電力モードは、図１のＲＡＭへのサスペンドの電力状態１０４である。
【００４７】
いくらか後の時点で、プロセッサシステム１００は、レジューム命令を受信する（ブロック４１２）。例えば、プロセッサシステム１００は、ウェイクオンＬＡＮ命令を図１の通信サブシステム１０８を介して受信して、又はユーザ入力を図１のユーザインタフェース１１２を介して受信して、又はいずれか他の適した入力（例えば、ウェイクアップタイマー入力、サービス割り込み等）を受信して、ＲＡＭへのサスペンドの状態１０４からアクティブ状態１０２へプロセッサシステム１００を移行させる。
【００４８】
セキュアＣＰＵ２０４は、システムメモリ２１０からＳＴＲデータ構造２１６を読み込む（ブロック４１４）。セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６が有効であるかを決定する（ブロック４１６）。例えば、セキュアＣＰＵ２０４は、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６に格納された複数のシグネチャと比較してブロック４０６に関連して上述したものと同じ方法で複数のシグネチャを再生成する。このように、セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６の異なる複数の部分を検証してＳＴＲデータ構造２１６が有効であるかを確認すべく、ブロック４１６で生成された各シグネチャを、ブロック４０６で生成されたその対応するシグネチャ（例えば、ＳＴＲヘッダシグネチャ、ＳＴＲ分散／集合テーブルシグネチャ、及びＳＴＲ  ＤＲＡＭシグネチャ）と比較できる。いずれかの再生成されたシグネチャが、ブロック４０６からのその対応するシグネチャに一致しない場合、そのときにはセキュアＣＰＵ２０４は、プロセッサシステム１００への潜在的な攻撃が試みられていると決定できる。
【００４９】
セキュアＣＰＵ２０４が、ＳＴＲデータ構造２１６が有効であると決定する場合（ブロック４１８）、ホストＣＰＵ２０２は、プラットフォームソフトウェアの状態を復元する（ブロック４２０）。ホストＣＰＵ２０２は、プロセッサシステム１００のアクティブ電力状態１０２を有効にする（ブロック４２２）。しかし、ブロック４１８で、セキュアＣＰＵ２０４が、ＳＴＲデータ構造２１６が有効ではない（例えば、複数の再生成されたシグネチャのうちの一つが、ブロック４０６で生成され、ＳＴＲデータ構造２１６に格納されたその対応するシグネチャと一致しない）と決定する場合、セキュアＣＰＵ２０４は、ホストＣＰＵ２０４へエラーをリターンする（ブロック４２４）。このように、ホストＣＰＵ２０４は、プロセッサシステム１００がアクティブ状態１００をレジュームすることを回避し、プロセッサシステム１００への攻撃を防ぐべく、既定義オペレーション又は処理を実行できる。いくつかの実施例において、そのような既定義オペレーション又は処理は、プロセッサシステム１００のハードリセットを開始することを含む。ブロック４２２でアクティブ電力状態１０２を有効にした後、又はブロック４２４でエラーをリターンした後、図４の例の処理は終了する。
【００５０】
図５は、ＲＡＭへのサスペンドの電力状態１０４（図１）からのコールドブート又はレジュームの間に、プロセッサシステム１００（図１及び２）をブートするべく、ホストブートシーケンスを実行するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。示される例において、ブロック５１８までの及びこれを含む複数のオペレーションは、ステージ１（Ｓ１）ブート処理の一部として実行され、ブロック５２０、５２２および５２４のオペレーションはステージ２（Ｓ２）ブート処理の間に実行される。
【００５１】
最初に、ホストＣＰＵ２０２は、ホストブートＲＡＭ２０８に格納された複数のホストブートＲＡＭ命令（ブロック５０２）を実行する。ホストＣＰＵ２０２は、キャッシュとフラッシュメモリ２０６を初期化する（ブロック５０４）。ホストＣＰＵ２０２は、外部ＤＲＡＭを初期化する（ブロック５０６）。示される例において、外部ＤＲＡＭは、システムメモリ２１０である。いくつかの実施例において、ホストＣＰＵ２０２は、ホストブートＲＡＭ２０８に格納された複数のＳ１パラメータ（複数のステージ１ブートローダパラメータ）を用いて外部ＤＲＡＭを初期化する。
【００５２】
ホストＣＰＵ２０２は、図２のプロセッサ間通信経路２１４を介してセキュアＣＰＵ２０４にＡＤＤ領域ＩＰＣ命令を送信する（ブロック５０８）。示される例において、ホストＣＰＵ２０２は、ＡＤＤ領域ＩＰＣ命令を発行し、これにより、ステージ２ブート処理の間に格納／作成されるプラットフォームソフトウェアの複数の領域は、複数の保護される領域２１８（図２）として指定され、これにより、それらは、本開示の複数の署名／認証技術を用いて保護されることができる。
【００５３】
ホストＣＰＵ２０２は、完全な電力オフ状態からコールドブート（ブロック５１０）を実行しているか決定する。コールドブートを実行している場合、ホストＣＰＵ２０２は、コールドブートのログをとり（ブロック５１２）、ステージ２認証シーケンスを呼び出す（ブロック５１４）。さもなければ、ホストＣＰＵ２０２がコールドブートを実行していないと決定する場合（ブロック５１０）、ＲＡＭへのサスペンドの電力状態１０４（図１）からレジュームし、ホストＣＰＵ２０２は、検証ＤＲＡＭプロセスを呼び出す（ブロック５１６）。ブロック５１６で呼び出されうる、ＤＲＡＭを検証する一例のプロセスは、図７Ａ及び７Ｂに関連して後述される。
【００５４】
ブロック５１４でステージ２認証シーケンスを呼び出した後、又はブロック５１６で検証ＤＲＡＭプロセスを呼び出した後、ホストＣＰＵ２０２は、ステージ２共通エントリポイントへジャンプする（ブロック５１８）。示される例において、ステージ２共通エントリポイントは、ホストＣＰＵ２０２がステージ２ブート処理を実行することを可能にする。
【００５５】
ステージ２ブート処理の間に、ホストＣＰＵ２０２は、複数の他の初期化処理を実行する（ブロック５２０）。そのような複数の他の初期化処理は、マイクロプロセッササブシステム１０６及び／又はメモリサブシステム１１０の複数の他の一部を他の初期化をすること、通信サブシステム１０８の複数の一部を初期化すること、図１のユーザインタフェースサブシステム１１２の複数の他の一部を初期化すること、及び／又は、ステージ２ブート処理の間に起こす必要があるような、複数のシステムデザイナーにより構成されるいずれか他の初期化を実行することを含みうる。
【００５６】
ホストＣＰＵ２０２は、レジュームスイッチプロセスを呼び出す（ブロック５２２）。ブロック５２２で呼び出されうる一例のレジュームスイッチプロセスは、図８に関連して後述される。示される複数の例において、レジュームスイッチプロセスは、保護される領域２１８としてＡＣＰＩテーブルを追加することを可能にする。ホストＣＰＵ２０２は、その後、複数のブートオペレーションの残りを終了する（ブロック５２４）。示される例において、実行される残りの複数のブートオペレーションは、ホストＣＰＵ２０２がコールドブート又はレジュームを実行しているかに基づく。図５の例の処理は、その後終了する。
【００５７】
図６は、アクティブ電力状態１０２（図１）からＲＡＭへのサスペンドの電力状態１０４（図１）へプロセッサシステム１００（図１及び２）を移行させるように実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。示される例において、図６の例の処理は、ユーザ入力（例えばユーザがスリープボタンを押す／選択する）、タイムアウト割り込み、又はいずれか他の適したユーザ及び／又は機械入力によって呼び出され、プロセッサシステム１００を低電力モードへ移行させうる。
【００５８】
最初に、プロセッサシステム１００がレジュームしてアクティブ電力状態１０２に戻るまで、ホストＣＰＵ２０２は、例えば、いずれかさらなる実行から、複数のアプリケーション及びミドルウェア（ブロック６０２）をフリーズする。ホストＣＰＵ２０２は複数のドライバをサスペンドする（ブロック６０４）。ホストＣＰＵ２０２は、ＳＴＲデータ構造２１６へ複数の保護される領域２１８を追加する（ブロック６０６）。示される例において、ホストＣＰＵ２０２は、図３の分散／集合テーブル３１０のフォーマットに従ってＳＴＲデータ構造２１６の分散／集合テーブルに位置及びサイズ情報を追加することによって、ＳＴＲデータ構造２１６へプラットフォームソフトウェアの複数の保護される領域２１８を追加する。このように、ＳＴＲデータ構造２１６は、システムメモリ２１０において複数の保護される領域２１８を検索するために用いられることができる。ホストＣＰＵ２０２は、ＤＲＡＭを署名／認証すべく、セキュアＣＰＵ２０４にＩＰＣ命令を送信する（ブロック６０８）。示された例の署名ＤＲＡＭ  ＩＰＣ命令は、セキュアＣＰＵ２０４に、システムメモリ２１０に格納されたＳＴＲデータ構造２１６に署名させる。
【００５９】
セキュアＣＰＵ２０４はその後、ＳＴＲデータ構造２１６に署名すべく、複数のオペレーションを実行する。最初に、セキュアＣＰＵ２０４は、ノンス値を生成する（ブロック６１０）。示される例において、生成されたノンス値は、図２の乱数又は擬似乱数２２２であり、ＳＴＲデータ構造２１６の署名／認証のための複数のシグネチャを生成するために用いられる。示された例の複数のシグネチャは、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６に格納される複数のシグネチャを含む。示される例において、乱数／擬似乱数２２２は、いずれかの潜在的な攻撃者がＤＲＡＭのコンテンツをリプレイするのを困難にするノンス値のために用いられる。
【００６０】
セキュアＣＰＵ２０４は、持続的に電力供給されるメモリ２１２に、ノンス値（例えば乱数／擬似乱数２２２）及びＳＴＲデータ構造ポインタ２２０（図２）を格納する（ブロック６１２）。  このように、ノンス値（例えば乱数／擬似乱数２２２）及びＳＴＲデータ構造ポインタ２２０は、ＲＡＭへのサスペンドの電力状態１０４の間持続され、アクティブ電力状態１０２へレジュームすべくアクセス可能である。これは、持続的に電力供給されるメモリ２１２が、ＲＡＭへのサスペンドの電力状態１０４の間に電力供給され続けられるためである。
【００６１】
セキュアＣＰＵ２０４は、図２のＳＴＲデータ構造２１６に署名する（ブロック６１４）。示される例において、セキュアＣＰＵは、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６に対応する複数のシグネチャを生成することによって、ＳＴＲデータ構造２１６に署名する。ブロック６１４を実装するために用いられうる一例のシグネチャ処理は、図９に関連して後述される。
【００６２】
セキュアＣＰＵ２０４は、システムメモリ２１０内にＳＴＲデータ構造２１６及び複数のシグネチャ（例えば、ＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６内の複数のシグネチャ）を格納する（ブロック６１６）。ホストＣＰＵ２０２は、プロセッサシステム１００をＲＡＭへのサスペンドの電力状態１０４へ移行させる（ブロック６１８）。図６の例の処理はその後終了する。
【００６３】
図７Ａ及び７Ｂは、ソフトウェアプラットフォーム動作状態についてのデータを格納するシステムメモリ２１０（図２）の複数の保護される領域２１８（図２）の有効性を検証すべく実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図７Ａ及び７Ｂの例の処理は、図５のブロック５１６からインスタンス化されうる。図７Ａに示されるように、最初に、ホストＣＰＵ２０２は、セキュアＣＰＵ２０４へ検証ＩＰＣコマンドを送信する（ブロック２０４）。検証ＩＰＣコマンドは、セキュアＣＰＵ２０４に、複数の保護される領域２１８の有効性を検証すべく、検証処理を実行させる。セキュアＣＰＵ２０４は、持続的に電力供給されるメモリ２１２からノンス値（例えば乱数／擬似乱数２２２）を読み込む（ブロック７０４）。示される例において、ノンス値は、プロセッサシステム１００をＲＡＭへのサスペンドの電力状態１０４へ移行させるときに図６のブロック６１０で生成された乱数／擬似乱数２２２（図２）である。
【００６４】
セキュアＣＰＵ２０４は、持続的に電力供給されるメモリ２１２（ブロック７０６）のノンス値（例えば乱数／擬似乱数２２２）を、例えばいずれかの乱数データで上書きする。示される例において、このようにノンス値を上書きすることで、ノンス値を複数の潜在的な攻撃者による再利用のためにさらされたままにしないことによって複数のリプレイ攻撃に対するガードをする。セキュアＣＰＵ２０４は、持続的に電力供給されるメモリ２１２からＳＴＲデータ構造ポインタ２２０を読み込む（ブロック７０８）。セキュアＣＰＵ２０４は、システムメモリ２１０からＳＴＲデータ構造２１６（図２）を検索して読み込むべく、ＳＴＲデータ構造ポインタ２２０を用いる（ブロック７１０）。セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６の有効性を検証する（ブロック７１２）。ブロック７１２でＳＴＲデータ構造２１６の有効性を検証するために用いられうる一例の処理は、図１０に関連して後述される。
【００６５】
セキュアＣＰＵ２０４は、複数のシグネチャが検証されたかを決定する（ブロック７１４）（図７Ｂ）。示される例において、有効性についてチェックされる複数のシグネチャは、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６内の複数のシグネチャのうちの複数のシグネチャである。セキュアＣＰＵ２０４がブロック７１４で、複数のシグネチャの１又は複数が、有効であるとして検証されなかったと決定した場合、セキュアＣＰＵ２０４は、エラーを生成する（ブロック７１６）。ブロック７１６でエラーを生成した後、又は、ブロック７１６でセキュアＣＰＵ２０４が複数のシグネチャの全てが有効であるとして検証されたと決定した場合に、セキュアＣＰＵ２０４は、図２のＣＡ要求領域テーブル２２６を読み込む（ブロック７１８）。セキュアＣＰＵ２０４はまた、図２の製造業者要求領域テーブル２２４を読み込む（ブロック７２０）。示される例において、セキュアＣＰＵ２０４は、ホストＣＰＵ２０２によって提供された複数のアドレスにおいて、ＣＡ要求領域テーブル２２６及び製造業者要求領域テーブル２２４を、ホストブートＲＡＭ２０８から取得しうる。例えば、ＣＡ要求領域テーブル２２６及び製造業者要求領域テーブル２２４が検索された複数のアドレスは、複数のＳ１パラメータに複数のポインタとして格納され、複数のＳ１パラメータからホストＣＰＵ２０２によって取得されうる。
【００６６】
セキュアＣＰＵ２０４は、ＣＡ要求領域テーブル２２６によって特定された複数の領域がＳＴＲデータ構造２１６によってカバーされるかを決定する（ブロック７２２）。例えば、セキュアＣＰＵ２０４は、ＣＡ要求領域テーブル２２６において特定された複数の領域を、ＳＴＲデータ構造２１６の分散／集合テーブル３１０（図３）において特定された複数の保護される領域２１８と比較する。ＣＡ要求領域テーブル２２６において特定された複数の領域がＳＴＲデータ構造２１６によってカバーされない場合（ブロック７２２）、セキュアＣＰＵ２０４は、エラーを生成する（ブロック７２４）。ブロック７２４でエラーを生成した後、又はセキュアＣＰＵ２０４が、ＣＡ要求領域テーブル２２６において特定された複数の領域がＳＴＲデータ構造２１６によってカバーされるとブロック７２２で決定する場合、セキュアＣＰＵ２０４は、製造業者要求領域テーブル２２４において特定された複数の領域がＳＴＲデータ構造２１６によってカバーされるか（ブロック７２６）を決定する。例えば、セキュアＣＰＵ２０４は、製造業者要求領域テーブル２２４において特定された複数の領域を、ＳＴＲデータ構造２１６の分散／集合テーブル３１０（図３）において特定された複数の保護される領域２１８と比較する。製造業者要求領域テーブル２２４において特定された複数の領域がＳＴＲデータ構造２１６によってカバーされない場合（ブロック７２６）、セキュアＣＰＵ２０４はエラーを生成する（ブロック７２８）。ブロック７２８でエラーを生成した後、又はセキュアＣＰＵ２０４が製造業者要求領域テーブル２２４において特定された複数の領域がＳＴＲデータ構造２１６によってカバーされるとブロック７２６で決定する場合、セキュアＣＰＵ２０４は、ホストＣＰＵ２０２へ状態をリターンし（ブロック７３０）、例えば、いずれの検証エラーが生成されたか、ブロック７１４で複数のシグネチャが成功裏に有効であるとして検証されたか、及び／又はＣＡ要求領域テーブル２２６及び製造業者要求領域テーブル２２４において特定された複数の領域がＳＴＲデータ構造２１６によってカバーされるかを示す。
【００６７】
ホストＣＰＵ２０２は、例えば、セキュアＣＰＵ２０４から受信した状態（例えばエラーステータス又は検証成功ステータス）に基づいて、ＤＲＡＭ（例えばシステムメモリ２１０）が有効であるとして検証されたか（ブロック７３２）を決定する。ＤＲＡＭが検証されない場合、ホストＣＰＵ２０２は、ハードウェアリセットを実行する（ブロック７３４）。示される例において、ＤＲＡＭが検証されないとき、攻撃がプロセッサシステム１００に行われた可能性がある。このように、ハードウェアリセットは、コールドブート状態から新たにブートするようにプロセッサシステム１００を再初期化するべく、ブロック７３４で用いられ、これにより、システムメモリ２１０のコンテンツは破棄され、再ロード及び／又は再初期化される。ハードウェアリセット７３４を実行した後、又はＤＲＡＭがブロック７３２で有効であるとして検証された場合、図７Ａ及び７Ｂの例の処理は終了する及び／又は図５の例の処理のような呼び出し機能又は処理へリターンする。
【００６８】
図８は、コールドブート処理又はＲＡＭへのサスペンドのレジュームプロセスにおいて、プロセッサシステム１００（図１及び２）をブートするために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図８の例の処理は、図５のブロック５２２の呼び出しレジュームスイッチオペレーションによってインスタンス化されうる。最初に、ホストＣＰＵ２０２は、オンチップレジスタからコールドブートレジュームフラグを読み込む（ブロック８０２）。例えば、コールドブートレジュームフラグは、ブート処理が、コールドブート処理であるか、又はＲＡＭへのサスペンドの電力状態１０４のような低電力モードから図１のアクティブ電力状態１０２へプロセッサシステム１００を移行させるためのレジュームプロセスであるかを示すべく、ホストＣＰＵ２０２のオンチップレジスタにセットされうる。
【００６９】
ホストＣＰＵ２０２は、ブロック８０２で読み込まれたコールドブートレジュームフラグに基づいて、ブート処理がコールドブート又はレジュームであるかを（ブロック８０４）決定する。ブート処理がコールドブートである場合（ブロック８０４）、ホストＣＰＵ２０２は、ＡＣＰＩテーブルを生成し（ブロック８０６）、ＡＣＰＩテーブルを複数の保護される領域２１８へ、ＣＥＦＤＫ（コンシューマエレクトロニクスファームウェアデベロップメントキット）ステージ２処理の一部として追加する（ブロック８０８）。示される例において、ＡＣＰＩテーブルは、ＡＣＰＩテーブルがＳＴＲデータ構造２１６の署名／認証によって保護されるように、複数の保護される領域２１８に追加される。ホストＣＰＵ２０２は、ＡＣＰＩテーブル内のウェイクベクトルをオペレーティングシステム処理の一部としてセットする（ブロック８１０）。制御はその後、（例えば図５における）コールドブート経路にリターンし、図８の例の処理が終了する。
【００７０】
ホストＣＰＵ２０２がブロック８０４で、ブート処理がレジュームであると決定する場合、ホストＣＰＵ２０２は、前に生成され格納されたＡＣＰＩテーブルを読み込み（ブロック８１２）、オペレーティングシステム（ブロック８１４）のエントリポイントのようなＡＣＰＩテーブル内のウェイクベクトルを、ＣＥＦＤＫステージ２処理の一部として用い、レジュームプロセスを進める。示される例において、ブロック８１２および８１４でアクセスされるＡＣＰＩテーブルは、コールドブート処理の間に（例えばブロック８０６および８０８で）複数の保護される領域２１８において生成され格納されるＡＣＰＩテーブルであり、ブロック８１４で用いられるウェイクベクトルは、コールドブート処理の間に（例えばブロック８１０で）セットされるウェイクベクトルでありうる。制御はその後、レジュームエントリポイントへジャンプし、図８の例の処理は終了する。
【００７１】
図９は、図２のＳＴＲデータ構造２１６を認証／署名するのに使用できる複数のシグネチャを生成すべく実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図９の例の処理は、図６のブロック６１４のオペレーションを実装するために用いられうる。図９の例の処理は、図２のＳＴＲデータ構造２１６に署名するために、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６の複数のシグネチャを生成するために用いられる複数のキーを生成する。図９の処理において生成された複数のキーは、ホストソフトウェアによってアクセス可能ではないようにセキュアに処理される複数のオンダイシークレットキーである。示される例において、複数のキーのセキュリティを保証するために、セキュアＣＰＵ２０４は複数のキーを生成することができる。加えて、示された例のセキュアＣＰＵ２０４は、例えば、キーが再作成される必要があるときに同一の値をオンダイキー生成器に送信（ｓｅｅｄｉｎｇ）することによって、後の時点で複数のキーをセキュアＣＰＵ２０４に完全に同じように再作成又は再生成させるための処理を用いて、複数のキーを生成するように構成される。示された例の複数のキーは、同じように再作成可能であり、これにより、セキュアＣＰＵ２０４は、ＲＡＭへのサスペンドの電力状態１０４への移行の間に生成された複数のキーに基づいてＳＴＲデータ構造２１６に署名でき、ＲＡＭへのサスペンドの電力状態１０４からレジュームする際、セキュアＣＰＵ２０４は、ＲＡＭへのサスペンドの電力状態１０４へ入るときに生じるＳＴＲデータ構造２１６の認証／署名の確認で用いるための複数の同一のキーを生成できる。
【００７２】
図９に示されるように、最初に、セキュアＣＰＵ２０４は、ＳＴＲルート生成キーを生成する（ブロック９０２）。示される例において、セキュアＣＰＵ２０４は、図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６の複数のシグネチャを生成するための複数の次のキーを生成するべく、ＳＴＲルート生成キーを用いる。セキュアＣＰＵ２０４は、ＳＴＲルート生成キーを用いてＳＴＲヘッダキー（ブロック９０４）を生成する。セキュアＣＰＵ２０４は、例えばＳＴＲヘッダシグネチャフィールド３０２に対応するＳＴＲヘッダシグネチャを生成する（ブロック９０６）。示される例において、セキュアＣＰＵ２０４は、シグネチャ機能（例えばＣＭＡＣ機能、ＨＭＡＣ機能等）を、ブロック９０４で生成されたＳＴＲヘッダキーと、（例えば図３のＳＴＲヘッダ３０８に格納された）ＳＴＲヘッダ及びノンス値（例えば図２の乱数／擬似乱数２２２）の連結とへ適用することによって、ＳＴＲヘッダシグネチャを生成する。例えば、ブロック９０６で用いられるシグネチャ生成機能は、シグネチャ（ＳＴＲヘッダキー、連結（ＳＴＲヘッダ、ノンス））（ＳＩＧＮＡＴＵＲＥ（ＳＴＲ  ＨＥＡＤＥＲ  ＫＥＹ，  ＣＯＮＣＡＴＥＮＡＴＥ（ＳＴＲ  ＨＥＡＤＥＲ，  ＮＯＮＣＥ）））でありうる。
【００７３】
セキュアＣＰＵ２０４は、ＳＴＲ分散／集合テーブルキー（ブロック９０８）を、ＳＴＲルート生成キーを用いて生成する。セキュアＣＰＵ２０４は、例えば図３のＳＴＲ分散／集合テーブル３１０に対応するＳＴＲ分散／集合テーブルシグネチャ（ブロック９１０）を生成する。示される例において、セキュアＣＰＵ２０４は、シグネチャ機能（例えばＣＭＡＣ機能、ＨＭＡＣ機能等）を、ブロック９０８で生成されるＳＴＲ分散／集合テーブルキーと、ＳＴＲ分散／集合テーブル３１０に格納される情報（例えば、図３のＳＴＲ分散／集合テーブル３１０のフィールド３１２、３２０、３２２、３２４、３２６および３２８に格納されるポインタ及びサイズ情報）及びノンス値（例えば、図２の乱数／擬似乱数２２２）の連結とに適用することによって、ＳＴＲ分散／集合テーブルシグネチャを生成する。例えば、ブロック９０６で用いられるシグネチャ生成機能は、シグネチャ（ＳＴＲ分散／集合テーブルキー、連結（分散／集合テーブル、ノンス））（ＳＩＧＮＡＴＵＲＥ（ＳＴＲ  ＳＣＡＴＴＥＲ／ＧＡＴＨＥＲ  ＴＡＢＬＥ  ＫＥＹ，  ＣＯＮＣＡＴＥＮＡＴＥ（ＳＣＡＴＴＥＲ／ＧＡＴＨＥＲ  ＴＡＢＬＥ，  ＮＯＮＣＥ）））でありうる。
【００７４】
セキュアＣＰＵ２０４は、ＳＴＲルート生成キーを用いてＳＴＲ  ＤＲＡＭキー（ブロック９１２）を生成する。セキュアＣＰＵ２０４は、例えば、分散／集合テーブル３１０のポインタ０フィールド３１２に格納されるポインタによって指し示される複数の保護される領域２１８の第１の１６バイト単位に揃えたバッファに対応するＳＴＲ  ＤＲＡＭシグネチャ（ブロック９１４）を生成する。示される例において、セキュアＣＰＵ２０４は、シグネチャ機能（例えばＣＭＡＣ機能、ＨＭＡＣ機能等）を、ブロック９１２で生成されたＳＴＲ  ＤＲＡＭキーと、ポインタ０フィールド３１２のポインタにより指し示される複数の保護される領域２１８の１６バイト単位に揃えたバッファ及びノンス値（例えば、図２の乱数／擬似乱数２２２）の連結とに適用することによって、ＳＴＲ  ＤＲＡＭシグネチャを生成する。例えば、ブロック９１４で用いられるシグネチャ生成機能は、シグネチャ（ＳＴＲ  ＤＲＡＭキー、連結（ＳＴＲ  ＤＲＡＭ領域、ノンス））でありうる（ＳＩＧＮＡＴＵＲＥ（ＳＴＲ  ＤＲＡＭ  ＫＥＹ，ＣＯＮＣＡＴＥＮＡＴＥ（ＳＴＲ  ＤＲＡＭ  ＡＲＥＡ，ＮＯＮＣＥ）））。
【００７５】
セキュアＣＰＵ２０４は、ブロック９０２、９０４、９０８および９１２で生成された複数のキーを破壊する（ブロック９１６）。複数のキーを破壊することで、複数のキーが望ましくない方法でアクセスされることに対するさらなる保護を提供する。図９の例の処理は、ＳＴＲヘッダシグネチャ、ＳＴＲ  ＳＧテーブルシグネチャ、及びＳＴＲ  ＤＲＡＭキー（ブロック９１８）を、図６の例の処理のような呼び出し機能又は処理へリターンする。図９の例の処理はその後終了する。
【００７６】
図９の例の処理は、３つのシグネチャ（例えばブロック９０６、９１０および９１４で生成される複数のシグネチャ）を生成するものとして説明されるが、複数の他の実施例において、より少ないシグネチャ（例えば１つのシグネチャ又は２つのシグネチャ）又はより多いシグネチャ（３つより多いシグネチャ）が、ＳＴＲデータ構造２１６の認証／署名で用いるために生成されうる。
【００７７】
図１０は、ＳＴＲデータ構造２１６（図２）の有効性を検証するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図１０の例の処理は、図１のＲＡＭへのサスペンドの電力状態１０４からのレジュームプロセスの間にＤＲＡＭを検証するときに図７Ａの７１２のオペレーションを実装するために用いられうる。ＳＴＲデータ構造２１８の有効性を確認するために、例の処理は、図９に関連して上述したのと同じ方法で、複数のキー及び複数のシグネチャを生成するために用いられる。上述のように、複数のシグネチャを生成するために用いられる複数のキーは、例えば、キー生成器に図９の処理で用いたのと同一のシード値を提供することによって、後の時点でセキュアＣＰＵ２０４によって同じように再作成可能である。複数のキーは、その後、ＳＴＲデータ構造２１６（例えば図３のＳＴＲヘッダシグネチャフィールド３０２、ＳＴＲ分散／集合テーブルシグネチャフィールド３０４、及びＳＴＲ  ＤＲＡＭシグネチャフィールド３０６）に格納された複数のシグネチャに対して比較するべく、ＳＴＲデータ構造２１６に基づいて複数のシグネチャを生成するために用いられる。図１０の例の処理において生成された複数のキーが図９の例の処理で生成された複数のキーと同一であるため、ＳＴＲデータ構造２１６のコンテンツが変更されていなかった（例えば、潜在的な攻撃者によって危険にさらされていなかった）場合、ＲＡＭへのサスペンドの電力状態１０４からのレジュームのときに図１０の検証処理において生成された複数のシグネチャは、ＲＡＭへのサスペンドの電力状態１０４に入るときに図９の認証処理において生成された複数のシグネチャと一致すべきである。
【００７８】
図１０に示されるように、最初に、セキュアＣＰＵ２０４は、ＳＴＲルート生成キー（ブロック１００２）を生成する。例えば、セキュアＣＰＵ２０４は、図９のブロック９０２でＳＴＲルート生成キーを生成したのと同一の方法でＳＴＲルート生成キーを生成できる。セキュアＣＰＵ２０４は、例えば図９のブロック９０４でＳＴＲヘッダキーを生成したのと同一の方法で、ＳＴＲヘッダキー（ブロック１００４）を生成する。セキュアＣＰＵ２０４は、例えば、図９のブロック９０６で（例えばＳＴＲヘッダシグネチャフィールド３０２の）ＳＴＲヘッダシグネチャを生成したのと同一の方法で、ＳＴＲヘッダシグネチャ（ブロック１００６）を生成する。
【００７９】
セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６のＳＴＲヘッダを検証する（ブロック１００８）。例えば、セキュアＣＰＵ２０４は、ブロック１００６で生成されたＳＴＲヘッダシグネチャを、ＳＴＲデータ構造２１６に（例えば図３のＳＴＲヘッダシグネチャフィールド３０２に）格納されたＳＴＲヘッダシグネチャと比較して、ＳＴＲデータ構造２１６のＳＴＲヘッダ（例えば図３のＳＴＲヘッダフィールド３０８のＳＴＲヘッダ）が有効であるかを決定する。プロセッサシステム１００がＲＡＭへのサスペンドの電力状態１０４に入ったためにＳＴＲヘッダが変更されていなかった場合、複数のシグネチャは、ＳＴＲヘッダが有効であることを確認するように一致するであろう。
【００８０】
セキュアＣＰＵ２０４は、例えば、図９のブロック９０８でＳＴＲ分散／集合テーブルキーを生成したのと同一の方法で、ＳＴＲ分散／集合テーブルキー（ブロック１０１０）を生成する。セキュアＣＰＵ２０４は、例えば、図９のブロック９１０でＳＴＲ分散／集合テーブルシグネチャを生成したのと同一の方法で、ＳＴＲ分散／集合テーブルシグネチャ（ブロック１０１２）を生成する。セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６のＳＴＲ分散／集合テーブルを検証する（ブロック１０１４）。例えば、セキュアＣＰＵ２０４は、ブロック１００６で生成されるＳＴＲ分散／集合シグネチャをＳＴＲデータ構造２１６（例えば図３のＳＴＲ分散／集合シグネチャフィールド３０４）に格納されたＳＴＲ分散／集合シグネチャと比較して、ＳＴＲデータ構造２１６のＳＴＲ分散／集合テーブル（例えば図３のＳＴＲ分散／集合テーブル３１０内のＳＴＲ分散／集合テーブルの位置及びサイズ情報）が有効であるかを決定する。ＳＴＲ分散／集合テーブル情報が、プロセッサシステム１００がＲＡＭへのサスペンドの電力状態１０４に入ったため変更されていなかった場合、複数のシグネチャは、ＳＴＲ分散／集合テーブル情報が有効であることを確認するように一致するであろう。
【００８１】
セキュアＣＰＵ２０４は、例えば図９のブロック９１２でＳＴＲ  ＤＲＡＭキーを生成したのと同一の方法で、ＳＴＲ  ＤＲＡＭキー（ブロック１０１６）を生成する。セキュアＣＰＵ２０４は、例えば図９のブロック９１４でＳＴＲ  ＤＲＡＭシグネチャを生成するのと同一の方法で、ＳＴＲ  ＤＲＡＭシグネチャ（ブロック１０１８）を生成する。セキュアＣＰＵ２０４は、ＳＴＲデータ構造２１６によって指し示されるＳＴＲ  ＤＲＡＭ領域を検証する（ブロック１０２０）。例えば、セキュアＣＰＵ２０４は、ブロック１０１８で生成されたＳＴＲ  ＤＲＡＭシグネチャを、ＳＴＲデータ構造２１６（例えば図３のＳＴＲ  ＤＲＡＭシグネチャフィールド３０６）に格納されたＳＴＲ  ＤＲＡＭシグネチャと比較して、図３のポインタ０フィールド３１２によって指し示された複数の保護される領域２１８の１６バイト単位で揃えたバッファが有効であるかを決定する。１６バイト単位で揃えたバッファの情報が、プロセッサシステム１００がＲＡＭへのサスペンドの電力状態１０４に入ったために変更されなかった場合、複数のシグネチャは、ポインタ０フィールド３１２のポインタによって指し示された複数の保護される領域２１８の１６バイト単位で揃えたバッファが有効であることを確認するように一致するであろう。
【００８２】
セキュアＣＰＵ２０４は、ブロック１００２、１００４、１０１０および１０１６で生成される複数のキーを破壊する（ブロック１０２２）。複数のキーを破壊することで、複数のキーが望ましくない方法でアクセスされることに対するさらなる保護を提供する。図１０の例の処理は、検証状態を、図７Ａ及び７Ｂの例の処理のような呼び出し機能又は処理へリターンし、図１０の例の処理が終了する。
【００８３】
図１０の例の処理は、３つのシグネチャ（すなわち、ブロック１００６、１０１２および１０１８で生成される複数のシグネチャ）を生成するものとして説明されたが、他の例において、より少ないシグネチャ（例えば１つのシグネチャ又は２つのシグネチャ）又はより多いシグネチャ（３つより多いシグネチャ）が、ＳＴＲデータ構造２１６の有効性の検証で用いるために生成されうる。いずれの場合であっても、同じ数のシグネチャが、図９の例の処理で生成されたように、図１０の例の処理において生成されるべきである。
【００８４】
開示された例の複数の方法は、プロセッサシステムにおける複数の電力状態を管理する。いくつつかの開示された例の方法は、低電力モードへプロセッサシステムを移行させるときに、低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第１のシグネチャを生成することを含む。いくつかの開示された例の方法はまた、低電力モードからのプロセッサシステムのレジュームプロセスの間に、低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第２のシグネチャを生成することを含む。いくつかの開示された例の方法はまた、第１のシグネチャが第２のシグネチャと一致するときに、低電力モードからプロセッサシステムをレジュームすること、及び／又は第１のシグネチャが第２のシグネチャと一致しないときに、エラーを生成することを含む。いくつかの例において、低電力モードは、プラットフォームソフトウェアの複数の動作状態が、ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される、ランダムアクセスメモリへのサスペンドの電力状態である。
【００８５】
いくつかの開示された例の方法はまた、少なくとも１つのキー及び乱数又は擬似乱数を生成すること、及び、少なくとも１つのキー又は乱数又は擬似乱数を、データ構造の情報と組み合わせて用いて、第１のシグネチャを生成することを含む。いくつかの複数の例において、データ構造内の情報は、データ構造ヘッダ又は複数の保護されるメモリ領域の複数のメモリアドレス及びデータサイズのうちの少なくとも１つを含む。いくつかの開示された例はまた、少なくとも１つのキーを再生成すること、レジュームプロセスの間に持続的に電力供給されるメモリから乱数又は擬似乱数を取得すること、及び再生成されたキー及び取得される乱数又は擬似乱数を用いて第２のシグネチャを生成することを含む。
【００８６】
いくつかの開示された例はまた、プロセッサシステムの又はプロセッサシステムのコンポーネントのハードウェア製造業者が保護される複数のメモリ領域の少なくともいくつかを特定する製造業者要求領域テーブルに基づいて、保護される複数のメモリ領域の少なくとも１つ又はいくつかを決定することを含む。  いくつかの開示された例はまた、サードパーティが複数の保護されるメモリ領域のうちの他のものを特定するサードパーティ要求領域テーブルに基づいて、保護される複数のメモリ領域のうちの他のものを決定することを含む。
【００８７】
いくつかの開示された例はまた、低電力モードの間に持続的に電力供給されるメモリにデータ構造へのポインタを格納することを含む。  いくつかの開示された例はまた、レジュームプロセスの間に持続的に電力供給されるメモリからポインタを取得すること、及びポインタに基づいてレジュームプロセスの間にデータ構造を検索することを含む。
【００８８】
また、実行されたときに、機械に本開示の少なくともいくつかの例の方法を実行させる例の開示された複数の命令を備える例の有形のコンピュータ可読記憶媒体を開示する。
【００８９】
開示された例の装置はプロセッサシステムをサスペンドする。いくつかの開示された例の装置は、第１のメモリ及び第１のメモリと通信するプロセッサを含む。いくつかの例において、第１のメモリは、プロセッサシステムが低電力モードであるときに電力供給され続け、第１のメモリは、乱数又は擬似乱数、及びデータ構造へのポインタを格納する。いくつかの例において、データ構造は、少なくとも第１のシグネチャを格納し、低電力モードの間にプロセッサシステムの動作状態を格納する複数のメモリ領域を特定するデータ構造に格納された情報を認証する。いくつかの例において、プロセッサは、プロセッサシステムが低電力モードへ移行するときに、データ構造と乱数又は擬似乱数とに基づいて第１のシグネチャを生成する。いくつかの例において、プロセッサシステムが低電力モードからレジュームするレジュームプロセスにあるとき、プロセッサは、データ構造と乱数又は擬似乱数とに基づいて少なくとも第２のシグネチャを生成し、少なくとも第１のシグネチャと第２のシグネチャとの比較に基づいてデータ構造が有効であるかを決定する。いくつかの例において、低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、この場合、動作状態が、ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される。いくつかの例において、第１のメモリは、組み込みスタティックランダムアクセスメモリであり、例の装置はさらに、データ構造を格納するダイナミックランダムアクセスメモリを備える。
【００９０】
いくつかの例において、プロセッサはさらに、製造業者要求領域テーブルに基づいて複数のメモリ領域の少なくともいくつかを決定し、製造業者要求領域テーブルにおいて、プロセッサシステムの又はプロセッサシステムのコンポーネントのハードウェア製造業者は、複数のメモリ領域の少なくともいくつかを特定する。いくつかの例において、プロセッサはさらに、サードパーティが複数のメモリ領域のうちの第２のメモリ領域を特定するサードパーティ要求領域テーブルに基づいて、複数のメモリ領域のうちの第２のメモリ領域を決定する。いくつかの例において、プロセッサは、データ構造ヘッダ又は複数の保護されるメモリ領域の複数のメモリアドレス及びデータサイズのうちの少なくとも１つに基づいて、第１及び第２のシグネチャを生成する。
【００９１】
いくつかの例において、プロセッサは、ホストプロセッサと通信するセキュアプロセッサである。そのようないくつかの例において、データ構造が少なくとも第１のシグネチャと第２のシグネチャとの比較に基づいて有効ではないとき、セキュアプロセッサは、エラーステータスをホストプロセッサへ通信し、ホストプロセッサは、エラーステータスに基づいてハードウェアリセットを実行する。
【００９２】
特定の例の複数の方法、装置及び製造物品が本開示で説明されたが、本特許のカバーの範囲はこれに限られたものではない。反対に、本特許は、本特許の複数のクレームの範囲内に適正に入る全ての方法、装置、及び製造物品をカバーする。
本実施形態の例を下記の各項目として示す。
［項目１］
プロセッサシステムにおいて複数の電力状態を管理する方法であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第１のシグネチャを生成する段階と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第２のシグネチャを生成する段階と、
前記第１のシグネチャが前記第２のシグネチャに一致する場合は、前記低電力モードから前記プロセッサシステムをレジュームする段階と、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合は、エラーを生成する段階とを備える
方法。
［項目２］
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、プラットフォームソフトウェアの複数の動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
項目１に記載の方法。
［項目３］
少なくとも１つのキーと乱数又は擬似乱数とを生成する段階と、
前記第１のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも１つのキーと前記乱数又は擬似乱数とを用いる段階とをさらに備える
項目１又は２に記載の方法。
［項目４］
前記データ構造内の前記情報は、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレスと複数のデータサイズの少なくとも１つを含む
項目３に記載の方法。
［項目５］
前記少なくとも１つのキーを再生成する段階と、
前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得する段階と、
前記第２のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる段階とをさらに備える
項目３又は４に記載の方法。
［項目６］
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域の少なくともいくつかを決定する段階をさらに備え、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域の前記少なくともいくつかを特定する
項目１から５のいずれか１項に記載の方法。
［項目７］
サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの他のメモリ領域を決定する段階をさらに備え、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域の前記他のメモリ領域を特定する
項目６に記載の方法。
［項目８］
前記低電力モードの間に、持続的に電力供給されるメモリに前記データ構造へのポインタを格納する段階をさらに備える
項目１から７のいずれか１項に記載の方法。
［項目９］
前記レジュームプロセスの間に前記持続的に電力供給されるメモリから前記ポインタを取得する段階と、
前記ポインタに基づいて前記レジュームプロセスの間に前記データ構造を検索する段階とをさらに備える
項目８に記載の方法。
［項目１０］
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムが低電力モードであるときに、電力供給され続ける第１のメモリと、前記第１のメモリと通信するプロセッサとを備え、
前記第１のメモリは、
乱数又は擬似乱数と、
データ構造へのポインタであって、前記データ構造は、前記低電力モードの間に前記プロセッサシステムの動作状態を格納する複数のメモリ領域を特定する前記データ構造に格納された情報を認証するための少なくとも第１のシグネチャを格納する、前記ポインタとを格納し、
前記プロセッサは、
前記プロセッサシステムが前記低電力モードへ移行しているとき、前記データ構造と前記乱数又は擬似乱数とに基づいて前記第１のシグネチャを生成し、
前記プロセッサシステムが前記低電力モードからレジュームするレジュームプロセス中であるとき、前記データ構造と前記乱数又は擬似乱数とに基づいて少なくとも第２のシグネチャを生成し、
少なくとも前記第１のシグネチャと前記第２のシグネチャとの比較に基づいて前記データ構造が有効であるかを決定する
装置。
［項目１１］
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、前記動作状態は、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
項目１０に記載の装置。
［項目１２］
前記プロセッサはさらに、製造業者要求領域テーブルに基づいて前記複数のメモリ領域の少なくともいくつかを決定し、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、前記複数のメモリ領域の前記少なくともいくつかを特定する
項目１０又は１１に記載の装置。
［項目１３］
前記プロセッサはさらに、サードパーティ要求領域テーブルに基づいて前記複数のメモリ領域のうちの第２のメモリ領域を決定し、
前記サードパーティ要求領域テーブルにおいて、サードパーティが前記複数のメモリ領域のうちの前記第２のメモリ領域を特定する
項目１２に記載の装置。
［項目１４］
前記プロセッサは、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレス及び複数のデータサイズの少なくとも１つに基づいて前記第１及び第２のシグネチャを生成する
項目１０から１３のいずれか１項に記載の装置。
［項目１５］
前記プロセッサは、セキュアプロセッサであり、
前記装置はさらに、
少なくとも前記第１のシグネチャと前記第２のシグネチャとの前記比較に基づいて前記データ構造が有効ではない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
前記セキュアプロセッサは、前記ホストプロセッサへエラーステータスを送信し、
前記ホストプロセッサは、前記エラーステータスに基づいてハードウェアリセットを実行する
項目１０から１４のいずれか１項に記載の装置。
［項目１６］
前記第１のメモリは、組み込みスタティックランダムアクセスメモリであり、
前記装置はさらに、前記データ構造を格納するダイナミックランダムアクセスメモリを備える
項目１０から１５のいずれか１項に記載の装置。
［項目１７］
複数の命令を含むプログラムであって、
前記複数の命令は、実行されたときに機械に、少なくとも、
低電力モードへプロセッサシステムを移行させているとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて少なくとも第１のシグネチャを生成させ、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて少なくとも第２のシグネチャを生成させ、
前記第１のシグネチャが前記第２のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームさせ、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、エラーを生成させる
プログラム。
［項目１８］
前記複数の命令はさらに、前記機械に、
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも１つを決定させ、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも１つを特定する
項目１７に記載のプログラム。
［項目１９］
前記複数の命令はさらに、前記機械に、
サードパーティ要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの第２のメモリ領域を決定させ、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第２のメモリ領域を特定する
項目１８に記載のプログラム。
［項目２０］
前記複数の命令はさらに、前記機械に、
少なくとも１つのキーと乱数又は擬似乱数とを生成させ、前記第１のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて前記少なくとも１つのキーと前記乱数又は擬似乱数とを使用させ、
前記少なくとも１つのキーを再生成させ、前記レジュームプロセスの間に、持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得させ、前記第２のシグネチャを生成すべく、再生成した前記キーと取得した前記乱数又は擬似乱数とを使用させる
項目１７から１９のいずれか１項に記載のプログラム。
［項目２１］
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第１のシグネチャを生成する手段と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第２のシグネチャを生成する手段と、
前記第１のシグネチャが前記第２のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームする手段と、
前記第１のシグネチャが前記第２のシグネチャに一致しない場合、エラーを生成する手段とを備える
装置。
［項目２２］
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも１つを決定する手段をさらに備え、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも１つを特定する
項目２１に記載の装置。
［項目２３］
サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの第２のメモリ領域を決定する手段をさらに備え、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第２のメモリ領域を特定する
項目２２に記載の装置。
［項目２４］
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、前記プロセッサシステムの動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
項目２１から２３のいずれか１項に記載の装置。
［項目２５］
少なくとも１つのキーと乱数又は擬似乱数とを生成し、前記第１のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも１つのキーと前記乱数又は擬似乱数とを用いる手段と、
前記少なくとも１つのキーを再生成し、前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得し、前記第２のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる手段とをさらに備える
項目２１に記載の装置。
【図１】
0006026666.tif 000002
【図２】
0006026666.tif 000003
【図３】
0006026666.tif 000004
【図４】
0006026666.tif 000005
【図５】
0006026666.tif 000006
【図６】
0006026666.tif 000007
【図７Ａ】
0006026666.tif 000008
【図７Ｂ】
0006026666.tif 000009
【図８】
0006026666.tif 000010
【図９】
0006026666.tif 000011
【図１０】
0006026666.tif 000012