本開示の複数の例の方法、装置、システム、及び製造物品は、複数のプロセッサシステムの低電力状態の間にメモリの複数の領域を保護することを可能にする。開示された複数の例は、本開示において、RAM(ランダムアクセスメモリ)へのサスペンド(suspend−to−RAM)電力状態に関連して説明される。しかし、本開示の複数の例は、さらに又はもしくは、複数のプロセッサシステムの複数の他の電力状態の間にメモリの複数の領域を保護するために用いられうる。
複数のプロセッサシステムは、完全な電力オンから完全なオフ状態までの範囲で、複数の異なる電力状態の間で移行するように構成されうる。これらの異なる電力状態は、電力を節約するように提供される。RAMへのサスペンドの電力状態のような中間電力状態は、より低電力の消費と、完全なオフ状態又はディスク(例えばハイバーネイト)へのサスペンド電力状態からのコールドブートを実行するときに可能な他の方法よりも比較的早い、オペレーションをレジュームする(例えばRAMへのサスペンドの電力状態を完全なオン状態に抜け出させる)能力を有することとの間のバランスをとるように、場合によっては利用される。RAMへのサスペンドの電力状態は、プロセッサシステムがRAMへのサスペンドの状態へのその移行を開始するときに実行しているプラットフォームソフトウェア(例えばオペレーティングシステム(OS)及び/又は複数のアプリケーション)のランダムアクセスメモリに状態又は複数の状態を、プロセッサシステムが保持する低電力状態である。プロセッサシステムがRAMへのサスペンドの状態を完全なオン電力状態へレジューム又は抜け出させるとき、プロセッサシステムは、完全なオフ状態又はハイバーネイト状態からのコールドブートを実行するときに要求されるような全体のプラットフォームブートソフトウェアを実行する必要がない。複数の先行技術のシステムにおいて、レジュームのときに全体のプラットフォームブートソフトウェアを実行しないことにより、潜在的なセキュリティリスクを導入する。これは、プラットフォームシステムメモリが、RAMへのサスペンドの電力状態にある間に危険にさらされうるためである。例えば、悪性コードは、プラットフォームソフトウェアの動作状態を格納する複数のメモリ領域に書き込まれることが可能である。そのような先行技術の複数のシステムのRAMへのサスペンドの状態からのレジュームの際、危険にさらされるプラットフォームソフトウェアは、実行され、攻撃者がシステムを制御するさもなければシステムを危険にさらすことを可能にする。
RAMへのサスペンドの電力状態のときにセキュリティ脆弱性を有する複数の先行技術のシステムとは異なり、本開示の複数の例は、複数のプロセッサシステムがサスペンド電力状態又は低電力状態(例えばRAMへのサスペンドの電力状態)にある間、プラットフォームソフトウェアを保護する複数の機能をプラットフォームソフトウェア及び複数のシステムインテグレータに提供するトラステッドレジュームを実装するために用いられうる。
図1は、プロセッサシステム100の複数の低電力状態の間に複数のメモリ領域を保護する本開示の複数の例を実装するために用いられうる一例のプロセッサシステム100を示す。示される例において、プロセッサシステム100は、アクティブ電力状態102とRAMへのサスペンド(STR)電力状態104との間で移行するように示される。示される例のアクティブ電力状態102において、マイクロプロセッサ(uP)サブシステム106、通信サブシステム108、メモリサブシステム110、及びユーザインタフェース(I/F)サブシステム112が、完全に電力供給されるように示される。示される例のRAMへのサスペンドの電力状態104において、マイクロプロセッササブシステム106、通信サブシステム108、メモリサブシステム110、及び表示サブシステム112が、電力がそれらの一部から除かれる低電力状態であるように示される。
示される例において、マイクロプロセッササブシステム106、通信サブシステム108、メモリサブシステム110、及び表示サブシステム112は、電力が一部114、116、118および120に適用されるように維持するように、部分的にのみ電力供給される。このように、電力供給される一部114、116、118および120は、RAMへのサスペンドの電力状態104からプロセッサシステム100のアクティブ電力状態102をレジュームするのに有用である。示される例において、電力供給されるマイクロプロセッサの一部112は、持続的に電力供給されるメモリ(例えば図2の持続的に電力供給されるメモリ212)を含み、RAMへのサスペンドの電力状態104の間に、RAM(例えば図2のシステムメモリ210)に格納されたプラットフォームソフトウェアの複数のセキュリティパラメータ(例えば複数のシグネチャ)及び複数のメモリアドレス位置を格納する認証テーブルへのアドレス又はポインタ(例えば図2のRAMへのサスペンドのデータ構造216へのポインタ)を格納する。示される例において、電力供給される通信サブシステムの一部114は、ネットワーク通信を用いてプロセッサシステム100をレジュームするべく、ウェイクオンLAN(ローカルエリアネットワーク)回路又は他のウェイクオンネットワーク回路への電力を含みうる。示される例において、電力供給されるメモリサブシステムの一部116は、プロセッサシステム100がRAMへのサスペンドの電力状態104のときにプラットフォームソフトウェアの状態又は複数の状態を格納するために用いられるシステムメモリ(例えば図2のシステムメモリ210)を含む。示される例の電力供給されるユーザインタフェースの一部118は、電力/ウェイクボタンの押し下げ又はキーボードキーの押し下げ又はいずれか他のタイプのビューマンインターフェースデバイス(HID)の他のユーザ入力を検出するべく、電力を含みうる。
本開示の複数の例は、様々な例の保護機能又はトラスト機能を提供することによって、プロセッサシステム100をRAMへのサスペンドの電力状態104からアクティブ状態102へ移行させるトラステッドレジュームを用いることを可能にする。示される複数の例において、トラステッドレジュームは、(a)低電力モード(例えば、RAMへのサスペンドの電力状態104)のときにプラットフォームソフトウェアの状態を格納するシステムメモリ(図2のシステムメモリ210)のコンテンツを変更する複数の悪意のある攻撃の能力を実質的に減らす、(b)複数のシステムメモリリプレイ攻撃及び/又はロールバックアタックを実行する能力を実質的に減らす、(c)システムメモリ(例えば、図2のシステムメモリ210)の複数の認証/非認証領域を指定することを可能にする、(d)ホストプロセッサ(例えば図2のホストプロセッサ202)が、署名キーを知らずに、選択された複数の保護される領域(例えば図2の複数の保護される領域218)のためのシグネチャを生成/認証することを可能にする、及び(e)(例えばホストプロセッサ(例えば図2のホストプロセッサ202)の、複数のセキュアプロセッサ(例えば図2のセキュアプロセッサ204)の、及び/又は複数のプロセッサシステムの)複数のハードウェア製造業者及びサードパーティベンダーが、本開示の複数のトラステッドレジューム技術において認証及び検証処理を用いることによって保護されるべき、複数の保護される領域(例えば図2の複数の保護される領域218)の量(例えば少なくとも必要最低限量)を特定することを可能にする。以下詳述するように、本開示の複数の例は、RAMへのサスペンドの電力状態104への移行の間にシステムメモリ(例えばダイナミックランダムアクセスメモリ(DRAM))の重要な一部を認証/署名し、RAMへのサスペンドの状態104からアクティブ電力状態102へのレジュームのときにシステムメモリのそれらの認証/署名された重要な一部を検証することによって、これらの保護を提供する。開示の複数の例において、ブートシーケンスの重要な一部は、ブートシーケンスのステージNがステージN+1に関する複数の保護される領域(例えば図2の複数の保護される領域218)を追加するように、ブートシーケンスの間に集約される。複数のロールバックアタックに対してガードするために、乱数又は擬似乱数(例えばノンス値)は、認証/署名処理に組み込まれ、RAMへのサスペンドの電力状態104の間に持続的に電力供給されるメモリ(例えば、図2の持続的に電力供給されるメモリ212)に格納される。
図2は、プロセッサシステム100の複数の電力状態移行を管理するために用いられうる図1の例のプロセッサシステム100の例の複数のコンポーネントを示す。示される例において、プロセッサシステム100は、ホストプロセッサ(CPU)202、セキュアプロセッサ(CPU)204、フラッシュメモリ206、ホストブートRAM208、システムメモリ210及び持続的に電力供給されるメモリ212を含む。示された例のプロセッサシステム100は、例えば、サーバ、パーソナルコンピュータ、モバイルフォン(例えば携帯電話)、携帯情報端末(PDA)、インターネット装置、DVDプレーヤ、CDプレーヤ、デジタルビデオレコーダ、Blu−rayプレーヤ、ゲーム機、パーソナルビデオレコーダ、セットトップボックス、又はいずれか他のタイプのコンピューティングデバイスでありうる。
示される例において、ホストCPU202、セキュアCPU204、及びホストブートRAM208は、プロセッサ202および204の間のプロセッサ間通信及びホストブートRAM208との通信がシリコンダイの外部にさらされないように、同一のシリコンダイ上に配置される。これは、セキュリティ通信及びホストCPU202、セキュアCPU204、及び/又はホストブートRAM208の間で交換されるセキュリティデータへの外部アクセス性を実質的に低減することにより、本開示の複数の例にさらにセキュリティを提供する。また、示される例において、フラッシュメモリ206及びシステムメモリ210は、ホストCPU202、セキュアCPU204、及びホストブートRAM208を含むシリコンダイと同一の回路ボード上に配置される別個の集積回路上に配置される。
プロセッサ202および204は、いずれかの所望のファミリー又は製造業者からの複数のプロセッサ又は複数のコントローラを用いることによって実装できる。示される例において、プロセッサ間通信(IPC)経路214は、プロセッサ202および204の間に提供され、それらの間でのプロセッサ間通信を可能にする。示される例において、ホストプロセッサ202は、組み込みスタティックランダムアクセスメモリ(SRAM)を用いて実装されうる持続的に電力供給されるメモリ212を含む。SRAMが揮発性メモリであるため、図1のRAMへのサスペンドの電力状態104のような低電力モードの間、示される例において、それは電力供給され続け(又はそれの一部が電力供給され続け)、このため、それに記憶されたデータは持続する。
プロセッサ202および204は、フラッシュメモリ206、ホストブートRAM208、及びシステムメモリ210と通信する。不図示だが、プロセッサ202および204は、また、オペレーティングシステム及び/又は複数のアプリケーションを格納するマスメモリ(例えばハードドライブ)と通信しうる。示される例において、フラッシュメモリ206は、プロセッサシステム100をブートするために複数のパラメータ(例えば、複数のセキュリティパラメータ及び/又は電力が完全に除去されるときに複数の揮発性メモリ内に持続されない他の複数のパラメータ)を格納するために用いられる不揮発性メモリである。示された複数の例のホストブートRAM208は、プロセッサシステム100をブートしオペレーティングシステムをロードするためのブートコードを格納する。示された例のホストブートRAM208は、また、システムメモリ210に格納されたプラットフォームソフトウェアの複数の保護される領域(例えば、図2の複数の保護される領域218)を示すべく、製造業者要求領域テーブル224を格納する。示される例において、ホストCPU202、セキュアCPU204、プロセッサシステム100及び/又はプロセッサシステム100の1又は複数のハードウェアコンポーネントのハードウェア製造業者は、製造業者要求領域テーブル224に示された複数の領域(例えば複数の保護される領域218)を特定し、このため、これらの特定された複数の領域は、トラステッドレジュームを実装すべく、RAMへのサスペンドの電力状態104(図1)の間に本開示の複数の例を用いて保護される。
示される例において、ホストブートRAM208はまた、システムメモリ210に格納されたプラットフォームソフトウェアのサードパーティに特定された複数の保護される領域(例えば、図2の複数の保護される領域218)を示すべく、コンディショナルアクセス(CA)要求領域テーブル226(例えば、サードパーティ要求領域テーブル)を格納する。示される複数の例において、CA要求領域テーブル226は、複数のアフターマーケットプロダクト又は開発(例えばプロセッサシステム100へのアフターマーケットソフトウェア及び/又はハードウェアのインストール)のためのサードパーティによってアクセス可能で変更可能である。例えば、1又は複数のサードパーティは、CA要求領域テーブル226に示された複数の領域(例えば、複数の保護される領域218)を特定し、このため、これらの特定された領域は、トラステッドレジュームを実装すべく、RAMへのサスペンドの電力状態104(図1)の間に、本開示の複数の例を用いて保護される。示される複数の例において、CA要求領域テーブル226は、ホストCPU202が複数の命令を実行開始する前に、セキュアCPU204によってホストブートRAM208へコピーされ、ホストブートRAM208から認証される。示される複数の例において、これは、ホストCPU202がそのリセットベクトルからブートする電力状態移行の間(例えば、RAMへのサスペンドの電力状態104からのレジュームのとき及び/又はコールドブートの間)に起きる。いくつかの実施例において、CA要求領域テーブル226は、ステージ1ブートローダ(例えば図5に示されたステージ1ブート処理)の間に認証されるホストブートRAM208の認証された領域に格納されうる。もしくは、CA要求領域テーブル226は、複数のステージ1ブートローダパラメータブロックの部分として実装されうる。
製造業者要求領域テーブル224及びCA要求領域テーブル226を用いることによって、ハードウェア製造業者及び複数のサードパーティが、本開示の複数の例を用いて保護するのに有用であると考える複数の保護される領域(例えば保護される領域218)を特定することができる。もしくは、いくつかの実施例において、製造業者要求領域テーブル224及びCA要求領域テーブル226は、ホストブートRAM208に格納される単一のテーブルとして実装されうる。
示された例のシステムメモリ210は、プロセッサシステム100がアクティブ電力状態102から図1のRAMへのサスペンドの電力状態104へ移行するときに実行しているプラットフォームソフトウェア(例えばオペレーティングシステム及び/又は複数のアプリケーション)の動作状態を格納する。このように、プロセッサシステム102は、RAMへのサスペンドの電力状態104に入る前の同一の動作状態をレジュームすべく、システムメモリ210に格納されたプラットフォームソフトウェア状態に基づいて、RAMへのサスペンドの電力状態104からアクティブ電力状態102へ移行できる。例えば、オペレーティングシステムは、その同一の前の動作状態にレジュームでき、前にロードされ実行していた複数のアプリケーションは、それらの同一の複数の前の動作状態にレジュームできる。
示した例のシステムメモリ210は、揮発性ダイナミックランダムアクセスメモリ(DRAM)を用いて実装される。いくつかの実施例において、そのような揮発性DRAMがRAMへのサスペンドの電力状態104の間にそのデータを持続可能であるようにするために、少なくとも電力の必要最低限量が、揮発性DRAMに供給され、揮発性DRAMが、それらに記憶されたデータが持続する低電力セルフリフレッシュモードで動作するようにセットされる。他の複数の例において、システムメモリ210は、キャッシュメモリ、揮発性SRAM、及び/又はいずれかの他のタイプの揮発性又は不揮発性メモリを用いて実装されうる。
示される例において、システムメモリ210は、RAMへのサスペンド(STR)データ構造216及びプラットフォームソフトウェアの複数の保護される領域218を格納する。示される例において、複数の保護される領域218は、RAMへのサスペンドの電力状態104の間に、システムメモリ210内に格納されたプラットフォームソフトウェアの複数の選択された一部を格納し、複数のセキュリティパラメータ(例えば複数のシグネチャ)を用いて複数の保護される領域218を署名又は認証することによって複数の攻撃から保護される。STRデータ構造216は、RAMへのサスペンドの電力状態104の間に本開示の複数の例を用いて保護されるシステムメモリ210内にプラットフォームソフトウェアの複数の保護される領域218への複数のアドレス又は複数のポインタを格納する。示された例のSTRデータ構造216はまた、そのデータを認証し、RAMへのサスペンドの電力状態104からのレジュームのときにそのデータの有効性を決定するために複数のセキュリティパラメータ(例えば、複数のシグネチャ)を格納する。示される例において、STRデータ構造216を実装するために用いられる一例のフォーマットは、図3に関連して後述される。
プロセッサシステム100が完全にアクティブな電力状態102にレジュームするときにホストCPU202にそのような悪性コードを実行させようと、悪性ソフトウェアを格納するシステムメモリ210の複数の異なる領域を指し示すようにSTRデータ構造216内の情報を変更する複数の攻撃者によって、プロセッサシステム100に複数の攻撃が試みられる。そのような複数の変更がSTRデータ構造216内に存在するかを検出するために、本開示の検証処理は、プロセッサシステム100のトラステッドレジュームの間に実行され、検証処理は、STRデータ構造216がRAMへのサスペンドの電力状態104の間に変更されたと検出するとエラーを生成する。このように、ホストCPU202及び/又はセキュアCPU204は、プロセッサシステム100が悪性ソフトウェアによって危険にさらされ得ないように、プロセッサシステム100が、レジュームプロセスを進行することを回避する。
示される例において、ホストCPU202の持続的に電力供給されるメモリ212は、システムメモリ210内にSTRデータ構造216のストレージ位置(例えばメモリアドレス)を指し示す一例のSTRデータ構造ポインタ220を格納する。プロセッサシステム100をRAMへのサスペンドの電力状態104から移行させるトラステッドレジューム処理の間に、ホストCPU202は、プラットフォームソフトウェアの複数の保護される領域218の整合性を検証可能にするためにSTRデータ構造216を検索すべく、STRデータ構造ポインタ220を取得できる。
示される例において、ホストCPU202の持続的に電力供給されるメモリ212はまた、一例の乱数/擬似乱数222を格納する。示された例の乱数/擬似乱数222は、RAMへのサスペンドの電力状態104の間にシステムメモリ210内に格納されたプラットフォームソフトウェアの複数の保護される領域208の整合性を確認するために複数の検証シグネチャを生成すべく、ノンス値として用いられる。示される例において、乱数/擬似乱数222は、プロセッサシステム100がRAMへのサスペンドの電力状態104へ移行しているときに複数の検証シグネチャを生成するために用いられる。複数の検証シグネチャを生成した後、乱数/擬似乱数222は、持続的に電力供給されるメモリ212において所望でないアクセスからセキュアに格納される。このように、RAMへのサスペンドの電力状態104からのレジュームのとき、乱数/擬似乱数222は、持続的に電力供給されるメモリ212から取得され、プラットフォームソフトウェアの複数の保護される領域218の整合性を検証するために用いられることができる。示される例において、乱数/擬似乱数222は、ホストCPU202の持続的に電力供給されるメモリ212に格納されるため、いずれの潜在的な攻撃者もアクセス又は変更が非常に困難であるユニークシークレット値として機能することによって、リプレイ/ロールバックアタックに対してガードするために用いられる。加えて、乱数/擬似乱数222は、十分にランダムであるため、攻撃者によって容易に予測可能ではない。いくつかの実施例において、乱数/擬似乱数222について比較的多数のビット(例えば64又はそれより多いビット)を選択することで、また、衝突攻撃を起動する攻撃者の視点での時間及びストレージから非常にコストのかかるものとすることによって、リプレイ/ロールバックアタックに対してガードする。例えば、比較的多数のビットを有する乱数/擬似乱数222を用いることで、攻撃者は、衝突攻撃を起動するために、多くのDRAM/STRデータ構造置換を格納することを要求されうる。
図3は、図1のRAMへのサスペンドの電力状態104の間に図2のシステムメモリ210に残存されたプラットフォームソフトウェアの複数の保護される領域218を認証すべく、複数のシグネチャ及び位置情報を格納するように、図2のSTRデータ構造216を実装するために用いられうる一例のRAMへのサスペンド(STR)データ構造フォーマット300を示す。示される例において、STRデータ構造フォーマット300は、ゼロ(0)のバイトオフセットにSTRシグネチャを格納し、STRデータ構造216内に16バイトのデータサイズを占有するためのSTRヘッダシグネチャフィールド302を含む。示された例のSTRヘッダシグネチャは、有効である(例えば、RAMへのサスペンドの電力状態104の間に変更されなかった又は危険にさらされなかった)ことを確認すべく、STRデータ構造216の(例えば複数のSTRヘッダフィールド308に格納された)STRヘッダを認証するために用いられる。
示された例のSTRデータ構造フォーマット300は、16のバイトオフセットにSTR分散/集合(scatter/gather)テーブルシグネチャを格納し、STRデータ構造216内に16バイトのデータサイズを占有するためのSTR分散/集合テーブルシグネチャフィールド304を含む。示される例において、STR分散/集合テーブルシグネチャは、有効である(例えば、RAMへのサスペンドの電力状態104の間に変更されなかった又は危険にさらされなかった)ことを確認すべく、STRデータ構造216に格納されているN×8バイトの分散/集合テーブル310を認証するために用いられる。示される例において、分散/集合テーブル310は、プラットフォームソフトウェアの複数の保護される領域218を格納するシステムメモリ210内の複数の位置への複数のポインタを格納する。
示された例のSTRデータ構造フォーマット300はまた、32のバイトオフセットにSTR DRAMシグネチャを格納し、STRデータ構造216に16バイトのデータサイズを占有するためのSTR DRAMシグネチャフィールド306を含む。示される複数の例において、STR DRAMシグネチャは、有効である(例えば、RAMへのサスペンドの電力状態104の間に、変更されなかった又は危険にさらされなかった)ことを確認すべく、STRデータ構造216に格納された分散/集合テーブル310に規定されたDRAM領域を認証するために用いられる。示される例において、分散/集合テーブル310によって規定されたDRAM領域は、ポインタ0フィールド312に格納されたポインタによって指し示され、それは、複数の保護される領域218(図2)の第1の16バイト単位で揃えたバッファ(16−byte aligned buffer)である。
示される例において、STRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306に格納された複数のシグネチャは、プロセッサシステム100がRAMへのサスペンドの電力状態104へ移行するときSTRデータ構造216に署名するために用いられる。このように、格納された複数のシグネチャは、STRデータ構造216が有効であるか(RAMへのサスペンドの電力状態104の間に変更されたか又は危険にさらされたか)を決定するために、RAMへのサスペンドの電力状態104からプロセッサシステム100をレジュームするときに用いられることができる。例えば、プロセッサシステム100が完全にアクティブな電力状態102へレジュームするときにホストCPU202にそのような悪性コードを実行させようと、複数の潜在的な攻撃者は、悪性ソフトウェアを格納するシステムメモリ210の複数の異なる領域を指し示すべく、STRデータ構造216内の情報を変更しうる。そのような複数の変更がSTRデータ構造216に存在する場合、プロセッサシステム100のトラステッドレジュームの間に実行される検証処理は、STRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及び/又はSTR DRAMシグネチャフィールド306のうちの1又は複数のシグネチャに基づいてエラーを生成する。
3つのシグネチャフィールド302、304および306が図3に示されるが、より少ないシグネチャ(例えば、1つのシグネチャ又は2つのシグネチャ)又はより多いシグネチャ(例えば、3つより多いシグネチャ)が、STRデータ構造216を認証/署名して複数のレジュームオペレーションの間にその有効性を確認すべく、本開示の複数の例で利用されうる。加えて、特定のタイプの複数のシグネチャがここで開示されるが(例えばヘッダシグネチャ、分散/集合テーブルシグネチャ、及びDRAMシグネチャ)、複数の他のタイプのシグネチャ、及び/又は複数のシグネチャの生成の他のやり方が、STRデータ構造216を認証/署名して複数のレジュームオペレーションの間にその有効性を確認すべく、本開示の複数の例で利用されうる。例えば、1又は複数のシグネチャは、低電力モードに入るときにSTRデータ構造216を認証/署名し、レジュームプロセスの間に検証するために、シグネチャが用いられることができる限りは、STRデータ構造216内の異なる情報(例えばより多くの情報、より少ない情報又は異なるようにセグメント化された情報)に基づいて生成されうる。
示された例のSTRヘッダ308は、STRデータ構造フォーマット300のリビジョンを示すSTRデータ構造バージョンフィールド316と、分散/集合テーブル310に格納された分散/集合エントリの数を示す分散/集合アレーエントリ数フィールド318とを含む。
示される例において、分散/集合テーブル310の分散/集合エントリは、それぞれ、複数の保護される領域218(図2)の対応するメモリ領域のメモリアドレス位置及びデータサイズを含む。分散/集合テーブル310は、STR DRAMシグネチャフィールド306に格納されるSTR DRAMシグネチャによって保護される第1の16バイト単位に揃えたバッファのシステムメモリ210のメモリアドレス位置を指し示すポインタを格納するポインタ0フィールド312を含む。分散/集合テーブル310のサイズ0フィールド320は、第1の16バイト単位に揃えたバッファの複数のバイトのデータサイズを格納する。示された例の分散/集合テーブル310は、システムメモリ210の複数のメモリアドレス位置と、ポインタNフィールド324及びサイズNフィールド326に対応する第Nの16バイト単位に揃えたバッファまでの複数の他の16バイト単位に揃えたバッファの複数の対応するデータサイズとを示す複数の他のポインタ/サイズフィールドペア322を含む。示される例において、ポインタ及びサイズフィールド312、320、322、324および326は、複数の保護される領域218を格納するシステムメモリ210の複数の16バイト単位に揃えたバッファを参照する。STRデータ構造216内にこのように複数の保護される領域218の複数のアドレス及びサイズを格納することにより、本開示の複数の例は、STRデータ構造216の認証/署名に依拠することによって、RAMへのサスペンドの電力状態104からレジュームするとき複数の保護される領域218にアクセスすることが安全かを決定できる。
示される例において、分散/集合テーブル310は、16バイトの倍数であるサイズにまで拡張可能である。この拡張性のため、分散/集合テーブル310は、複数のパディングバイト328が提供される。
例のSTRデータ構造フォーマット300は、複数の特定のデータサイズ(例えば、4バイト、8バイト、16バイト、32バイト等)及び複数のバイトオフセットに関連して図3に示されるが、他のデータサイズ及び/又はバイトオフセットが、STRデータ構造フォーマット300の複数のパラメータ(例えば、複数のシグネチャのデータサイズ及び/又はバイトオフセット及び/又は複数の他のパラメータ)のために用いられうる。分散/集合テーブル310は、複数の16バイト単位に揃えたバッファを参照するが、分散/集合テーブル310は、複数の他のバッファサイズでの利用に適合されうる。加えて、分散/集合テーブル310内の複数のポインタ及びサイズ値は、示される例において、複数の保護される領域218(図2)の複数の位置及びサイズを特定するために用いられるが、複数の保護される領域218の複数の位置及び/又はサイズを特定する他の適したやり方がさらに又は代替で利用されうる。
図4、5,6,7A,7B,及び8−10は、本開示のように低電力状態の間にメモリの複数の領域を保護するべく、プロセッサシステム100(図1及び2)によって実行されうる複数の機械可読命令を表す。これらの例において、複数の機械可読命令は、図2のホストCPU202及びセキュアCPU204のような1又は複数のプロセッサによる実行のための複数のプログラムを備える。複数のプログラムは、CD−ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタル多用途ディスク(DVD)、Blu−layディスク、又はプロセッサ202および204に関連するメモリのような有形のコンピュータ可読媒体に格納されるソフトウェアに実装され、しかし、全体のプログラム及び/又はその複数の部分は、もしくは、プロセッサ202および204以外のデバイスによって実行され、及び/又はファームウェア又は専用ハードウェアに実装されうる。さらに、例の複数のプログラムは、図4,5,6,7A,7B,及び8−10に示されたフローチャートに関連して説明して説明されるが、例のプロセッサシステム100を実装する多くの他の方法が代替で用いられうる。例えば、複数のブロックの実行の順序は、変更され、及び/又は、説明したブロックのいくつかは変更、削除、又は組み合わされうる。
上述したように、図4、5,6,7A,7B及び8−10の例の複数の処理は、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ(ROM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、キャッシュ、ランダムアクセスメモリ(RAM)、及び/又は任意の期間に(例えば、延長期間、永久的、短時間の場合に、一時的にバッファリングするため、及び/又は、情報のキャッシュのため)情報を格納するいずれか他の記憶媒体のような、有形のコンピュータ可読媒体に格納される複数の符号化された命令(複数のコンピュータ可読命令)を用いて実装されうる。本明細書中で用いるように、有形のコンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読ストレージを含み、複数の伝搬信号を除外するように明確に定義される。さらに又は代替で、図4、5,6,7A,7B、及び8−10の例の複数の処理は、ハードディスクドライブ、フラッシュメモリ、読取専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び/又は任意の期間に(例えば、延長期間、永久的、短時間の場合、一時的にバッファリングするため、及び/又は情報のキャッシュのために)情報を格納するいずれか他の記憶媒体のような非一時的なコンピュータ可読媒体に格納される複数の符号化された命令(例えば、複数のコンピュータ可読命令)を用いて実装されうる。本明細書中で用いるように、非一時的なコンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読記憶デバイス又はストレージディスクを含み、複数の伝搬信号を除外するように明確に定義される。本明細書中で用いるように、「少なくとも」という用語は、クレームのプリアンブルにおける移行用語として用いられるとき、それは、「備える」という用語が制限のないものであるのであるのと同一の方法で制限がない。したがって、そのプリアンブルで「少なくとも」を移行用語として用いるクレームは、クレームに明確に挙げられたものに加えて複数の要素を含みうる。
図4は、本開示の複数の教示による、アクティブ電力状態102(図1)とRAMへのサスペンドの電力状態104(図1)との間で図1のプロセッサシステム100を移行させる複数のコンピュータ可読命令を表す一例のフロー図である。より詳細な説明のために、後述される図5,6,7A,7B及び8−10は、本開示のようなアクティブ電力状態102とRAMへのサスペンドの電力状態104との間でプロセッサシステム100を移行させるように実行されうる追加の例の複数のオペレーションを示す。
次に図4を詳細にみて、最初に、ホストCPU202(図2)は、低電力モード命令(ブロック402)を受信する。示された例の低電力モード命令は、プロセッサシステム100(図1及び2)をRAMへのサスペンドの電力状態104(図1)へ移行させる命令である。セキュアCPU204(図2)は、図2のSTRデータ構造216の複数の保護される領域218を特定すべく、複数のエントリを追加する(ブロック404)。例えば、セキュアCPU204は、STRデータ構造216(図2)の分散/集合アレーエントリ数フィールド318(図3)において複数の保護される領域218の量を示す情報を格納し、複数の保護される領域218の複数の位置及びサイズを記述するSTRデータ構造216の分散/集合テーブル310(図3)に複数のエントリを格納する。示される例において、セキュアCPU204は、図2の製造業者要求領域テーブル224においてハードウェア製造業者により特定される複数のメモリ領域、及び/又は、図2のコンディショナルアクセス要求領域テーブル226において1又は複数のサードパーティにより特定される複数のメモリ領域に基づいて、複数のメモリ領域が、複数の保護される領域218となるべきかを決定する。
セキュアCPU204は、STRデータ構造216を認証するために複数のシグネチャ(ブロック406)を生成する。例えば、セキュアCPU204は、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャ304、及びSTR DRAMシグネチャフィールド306に格納するための複数のシグネチャを生成する。セキュアCPU204は、例えば、サイファーベースメッセージ認証コード(CMAC)機能、ハッシュベースのメッセージ認証コード(HMAC)又は複数のシグネチャを生成するいずれか他の適した機能を含む、複数のシグネチャを生成するためのいずれか適切な機能を用いうる。示される例において、セキュアCPU204は、シグネチャ生成機能を、STRデータ構造216のSTRヘッダフィールド308(図3)に格納されたSTRヘッダに適用することによってSTRヘッダシグネチャを生成する。示される例において、セキュアCPU204は、シグネチャ生成機能を、STRデータ構造216のSTR分散/集合テーブル310(図3)に格納されたSTR分散/集合テーブルに適用することによって、STR分散/集合テーブルシグネチャを生成する。示される例において、セキュアCPU204は、分散/集合テーブル310のポインタ0フィールド312によって指し示されるDRAM領域に、シグネチャ生成機能を適用し、複数の保護される領域218(図2)の第1の16バイト単位に揃えたバッファを占有することによって、STR DRAMシグネチャを生成する。いくつかの実施例においてシグネチャ生成機能は、複数のシグネチャを生成して追加の認証強度を追加するとき、他のデータ(例えば、乱数/擬似乱数)と組み合わせて用いられうる。
セキュアCPU204は、STRデータ構造216に複数のシグネチャを格納する(ブロック408)。例えば、セキュアCPU204は、STRデータ構造216(図2)のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャ304、及びSTR DRAMシグネチャフィールド306(図3)に複数のシグネチャを格納する。プロセッサシステム100は、低電力モードに入る(ブロック410)。示される例において、低電力モードは、図1のRAMへのサスペンドの電力状態104である。
いくらか後の時点で、プロセッサシステム100は、レジューム命令を受信する(ブロック412)。例えば、プロセッサシステム100は、ウェイクオンLAN命令を図1の通信サブシステム108を介して受信して、又はユーザ入力を図1のユーザインタフェース112を介して受信して、又はいずれか他の適した入力(例えば、ウェイクアップタイマー入力、サービス割り込み等)を受信して、RAMへのサスペンドの状態104からアクティブ状態102へプロセッサシステム100を移行させる。
セキュアCPU204は、システムメモリ210からSTRデータ構造216を読み込む(ブロック414)。セキュアCPU204は、STRデータ構造216が有効であるかを決定する(ブロック416)。例えば、セキュアCPU204は、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306に格納された複数のシグネチャと比較してブロック406に関連して上述したものと同じ方法で複数のシグネチャを再生成する。このように、セキュアCPU204は、STRデータ構造216の異なる複数の部分を検証してSTRデータ構造216が有効であるかを確認すべく、ブロック416で生成された各シグネチャを、ブロック406で生成されたその対応するシグネチャ(例えば、STRヘッダシグネチャ、STR分散/集合テーブルシグネチャ、及びSTR DRAMシグネチャ)と比較できる。いずれかの再生成されたシグネチャが、ブロック406からのその対応するシグネチャに一致しない場合、そのときにはセキュアCPU204は、プロセッサシステム100への潜在的な攻撃が試みられていると決定できる。
セキュアCPU204が、STRデータ構造216が有効であると決定する場合(ブロック418)、ホストCPU202は、プラットフォームソフトウェアの状態を復元する(ブロック420)。ホストCPU202は、プロセッサシステム100のアクティブ電力状態102を有効にする(ブロック422)。しかし、ブロック418で、セキュアCPU204が、STRデータ構造216が有効ではない(例えば、複数の再生成されたシグネチャのうちの一つが、ブロック406で生成され、STRデータ構造216に格納されたその対応するシグネチャと一致しない)と決定する場合、セキュアCPU204は、ホストCPU204へエラーをリターンする(ブロック424)。このように、ホストCPU204は、プロセッサシステム100がアクティブ状態100をレジュームすることを回避し、プロセッサシステム100への攻撃を防ぐべく、既定義オペレーション又は処理を実行できる。いくつかの実施例において、そのような既定義オペレーション又は処理は、プロセッサシステム100のハードリセットを開始することを含む。ブロック422でアクティブ電力状態102を有効にした後、又はブロック424でエラーをリターンした後、図4の例の処理は終了する。
図5は、RAMへのサスペンドの電力状態104(図1)からのコールドブート又はレジュームの間に、プロセッサシステム100(図1及び2)をブートするべく、ホストブートシーケンスを実行するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。示される例において、ブロック518までの及びこれを含む複数のオペレーションは、ステージ1(S1)ブート処理の一部として実行され、ブロック520、522および524のオペレーションはステージ2(S2)ブート処理の間に実行される。
最初に、ホストCPU202は、ホストブートRAM208に格納された複数のホストブートRAM命令(ブロック502)を実行する。ホストCPU202は、キャッシュとフラッシュメモリ206を初期化する(ブロック504)。ホストCPU202は、外部DRAMを初期化する(ブロック506)。示される例において、外部DRAMは、システムメモリ210である。いくつかの実施例において、ホストCPU202は、ホストブートRAM208に格納された複数のS1パラメータ(複数のステージ1ブートローダパラメータ)を用いて外部DRAMを初期化する。
ホストCPU202は、図2のプロセッサ間通信経路214を介してセキュアCPU204にADD領域IPC命令を送信する(ブロック508)。示される例において、ホストCPU202は、ADD領域IPC命令を発行し、これにより、ステージ2ブート処理の間に格納/作成されるプラットフォームソフトウェアの複数の領域は、複数の保護される領域218(図2)として指定され、これにより、それらは、本開示の複数の署名/認証技術を用いて保護されることができる。
ホストCPU202は、完全な電力オフ状態からコールドブート(ブロック510)を実行しているか決定する。コールドブートを実行している場合、ホストCPU202は、コールドブートのログをとり(ブロック512)、ステージ2認証シーケンスを呼び出す(ブロック514)。さもなければ、ホストCPU202がコールドブートを実行していないと決定する場合(ブロック510)、RAMへのサスペンドの電力状態104(図1)からレジュームし、ホストCPU202は、検証DRAMプロセスを呼び出す(ブロック516)。ブロック516で呼び出されうる、DRAMを検証する一例のプロセスは、図7A及び7Bに関連して後述される。
ブロック514でステージ2認証シーケンスを呼び出した後、又はブロック516で検証DRAMプロセスを呼び出した後、ホストCPU202は、ステージ2共通エントリポイントへジャンプする(ブロック518)。示される例において、ステージ2共通エントリポイントは、ホストCPU202がステージ2ブート処理を実行することを可能にする。
ステージ2ブート処理の間に、ホストCPU202は、複数の他の初期化処理を実行する(ブロック520)。そのような複数の他の初期化処理は、マイクロプロセッササブシステム106及び/又はメモリサブシステム110の複数の他の一部を他の初期化をすること、通信サブシステム108の複数の一部を初期化すること、図1のユーザインタフェースサブシステム112の複数の他の一部を初期化すること、及び/又は、ステージ2ブート処理の間に起こす必要があるような、複数のシステムデザイナーにより構成されるいずれか他の初期化を実行することを含みうる。
ホストCPU202は、レジュームスイッチプロセスを呼び出す(ブロック522)。ブロック522で呼び出されうる一例のレジュームスイッチプロセスは、図8に関連して後述される。示される複数の例において、レジュームスイッチプロセスは、保護される領域218としてACPIテーブルを追加することを可能にする。ホストCPU202は、その後、複数のブートオペレーションの残りを終了する(ブロック524)。示される例において、実行される残りの複数のブートオペレーションは、ホストCPU202がコールドブート又はレジュームを実行しているかに基づく。図5の例の処理は、その後終了する。
図6は、アクティブ電力状態102(図1)からRAMへのサスペンドの電力状態104(図1)へプロセッサシステム100(図1及び2)を移行させるように実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。示される例において、図6の例の処理は、ユーザ入力(例えばユーザがスリープボタンを押す/選択する)、タイムアウト割り込み、又はいずれか他の適したユーザ及び/又は機械入力によって呼び出され、プロセッサシステム100を低電力モードへ移行させうる。
最初に、プロセッサシステム100がレジュームしてアクティブ電力状態102に戻るまで、ホストCPU202は、例えば、いずれかさらなる実行から、複数のアプリケーション及びミドルウェア(ブロック602)をフリーズする。ホストCPU202は複数のドライバをサスペンドする(ブロック604)。ホストCPU202は、STRデータ構造216へ複数の保護される領域218を追加する(ブロック606)。示される例において、ホストCPU202は、図3の分散/集合テーブル310のフォーマットに従ってSTRデータ構造216の分散/集合テーブルに位置及びサイズ情報を追加することによって、STRデータ構造216へプラットフォームソフトウェアの複数の保護される領域218を追加する。このように、STRデータ構造216は、システムメモリ210において複数の保護される領域218を検索するために用いられることができる。ホストCPU202は、DRAMを署名/認証すべく、セキュアCPU204にIPC命令を送信する(ブロック608)。示された例の署名DRAM IPC命令は、セキュアCPU204に、システムメモリ210に格納されたSTRデータ構造216に署名させる。
セキュアCPU204はその後、STRデータ構造216に署名すべく、複数のオペレーションを実行する。最初に、セキュアCPU204は、ノンス値を生成する(ブロック610)。示される例において、生成されたノンス値は、図2の乱数又は擬似乱数222であり、STRデータ構造216の署名/認証のための複数のシグネチャを生成するために用いられる。示された例の複数のシグネチャは、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306に格納される複数のシグネチャを含む。示される例において、乱数/擬似乱数222は、いずれかの潜在的な攻撃者がDRAMのコンテンツをリプレイするのを困難にするノンス値のために用いられる。
セキュアCPU204は、持続的に電力供給されるメモリ212に、ノンス値(例えば乱数/擬似乱数222)及びSTRデータ構造ポインタ220(図2)を格納する(ブロック612)。 このように、ノンス値(例えば乱数/擬似乱数222)及びSTRデータ構造ポインタ220は、RAMへのサスペンドの電力状態104の間持続され、アクティブ電力状態102へレジュームすべくアクセス可能である。これは、持続的に電力供給されるメモリ212が、RAMへのサスペンドの電力状態104の間に電力供給され続けられるためである。
セキュアCPU204は、図2のSTRデータ構造216に署名する(ブロック614)。示される例において、セキュアCPUは、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306に対応する複数のシグネチャを生成することによって、STRデータ構造216に署名する。ブロック614を実装するために用いられうる一例のシグネチャ処理は、図9に関連して後述される。
セキュアCPU204は、システムメモリ210内にSTRデータ構造216及び複数のシグネチャ(例えば、STRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306内の複数のシグネチャ)を格納する(ブロック616)。ホストCPU202は、プロセッサシステム100をRAMへのサスペンドの電力状態104へ移行させる(ブロック618)。図6の例の処理はその後終了する。
図7A及び7Bは、ソフトウェアプラットフォーム動作状態についてのデータを格納するシステムメモリ210(図2)の複数の保護される領域218(図2)の有効性を検証すべく実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図7A及び7Bの例の処理は、図5のブロック516からインスタンス化されうる。図7Aに示されるように、最初に、ホストCPU202は、セキュアCPU204へ検証IPCコマンドを送信する(ブロック204)。検証IPCコマンドは、セキュアCPU204に、複数の保護される領域218の有効性を検証すべく、検証処理を実行させる。セキュアCPU204は、持続的に電力供給されるメモリ212からノンス値(例えば乱数/擬似乱数222)を読み込む(ブロック704)。示される例において、ノンス値は、プロセッサシステム100をRAMへのサスペンドの電力状態104へ移行させるときに図6のブロック610で生成された乱数/擬似乱数222(図2)である。
セキュアCPU204は、持続的に電力供給されるメモリ212(ブロック706)のノンス値(例えば乱数/擬似乱数222)を、例えばいずれかの乱数データで上書きする。示される例において、このようにノンス値を上書きすることで、ノンス値を複数の潜在的な攻撃者による再利用のためにさらされたままにしないことによって複数のリプレイ攻撃に対するガードをする。セキュアCPU204は、持続的に電力供給されるメモリ212からSTRデータ構造ポインタ220を読み込む(ブロック708)。セキュアCPU204は、システムメモリ210からSTRデータ構造216(図2)を検索して読み込むべく、STRデータ構造ポインタ220を用いる(ブロック710)。セキュアCPU204は、STRデータ構造216の有効性を検証する(ブロック712)。ブロック712でSTRデータ構造216の有効性を検証するために用いられうる一例の処理は、図10に関連して後述される。
セキュアCPU204は、複数のシグネチャが検証されたかを決定する(ブロック714)(図7B)。示される例において、有効性についてチェックされる複数のシグネチャは、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306内の複数のシグネチャのうちの複数のシグネチャである。セキュアCPU204がブロック714で、複数のシグネチャの1又は複数が、有効であるとして検証されなかったと決定した場合、セキュアCPU204は、エラーを生成する(ブロック716)。ブロック716でエラーを生成した後、又は、ブロック716でセキュアCPU204が複数のシグネチャの全てが有効であるとして検証されたと決定した場合に、セキュアCPU204は、図2のCA要求領域テーブル226を読み込む(ブロック718)。セキュアCPU204はまた、図2の製造業者要求領域テーブル224を読み込む(ブロック720)。示される例において、セキュアCPU204は、ホストCPU202によって提供された複数のアドレスにおいて、CA要求領域テーブル226及び製造業者要求領域テーブル224を、ホストブートRAM208から取得しうる。例えば、CA要求領域テーブル226及び製造業者要求領域テーブル224が検索された複数のアドレスは、複数のS1パラメータに複数のポインタとして格納され、複数のS1パラメータからホストCPU202によって取得されうる。
セキュアCPU204は、CA要求領域テーブル226によって特定された複数の領域がSTRデータ構造216によってカバーされるかを決定する(ブロック722)。例えば、セキュアCPU204は、CA要求領域テーブル226において特定された複数の領域を、STRデータ構造216の分散/集合テーブル310(図3)において特定された複数の保護される領域218と比較する。CA要求領域テーブル226において特定された複数の領域がSTRデータ構造216によってカバーされない場合(ブロック722)、セキュアCPU204は、エラーを生成する(ブロック724)。ブロック724でエラーを生成した後、又はセキュアCPU204が、CA要求領域テーブル226において特定された複数の領域がSTRデータ構造216によってカバーされるとブロック722で決定する場合、セキュアCPU204は、製造業者要求領域テーブル224において特定された複数の領域がSTRデータ構造216によってカバーされるか(ブロック726)を決定する。例えば、セキュアCPU204は、製造業者要求領域テーブル224において特定された複数の領域を、STRデータ構造216の分散/集合テーブル310(図3)において特定された複数の保護される領域218と比較する。製造業者要求領域テーブル224において特定された複数の領域がSTRデータ構造216によってカバーされない場合(ブロック726)、セキュアCPU204はエラーを生成する(ブロック728)。ブロック728でエラーを生成した後、又はセキュアCPU204が製造業者要求領域テーブル224において特定された複数の領域がSTRデータ構造216によってカバーされるとブロック726で決定する場合、セキュアCPU204は、ホストCPU202へ状態をリターンし(ブロック730)、例えば、いずれの検証エラーが生成されたか、ブロック714で複数のシグネチャが成功裏に有効であるとして検証されたか、及び/又はCA要求領域テーブル226及び製造業者要求領域テーブル224において特定された複数の領域がSTRデータ構造216によってカバーされるかを示す。
ホストCPU202は、例えば、セキュアCPU204から受信した状態(例えばエラーステータス又は検証成功ステータス)に基づいて、DRAM(例えばシステムメモリ210)が有効であるとして検証されたか(ブロック732)を決定する。DRAMが検証されない場合、ホストCPU202は、ハードウェアリセットを実行する(ブロック734)。示される例において、DRAMが検証されないとき、攻撃がプロセッサシステム100に行われた可能性がある。このように、ハードウェアリセットは、コールドブート状態から新たにブートするようにプロセッサシステム100を再初期化するべく、ブロック734で用いられ、これにより、システムメモリ210のコンテンツは破棄され、再ロード及び/又は再初期化される。ハードウェアリセット734を実行した後、又はDRAMがブロック732で有効であるとして検証された場合、図7A及び7Bの例の処理は終了する及び/又は図5の例の処理のような呼び出し機能又は処理へリターンする。
図8は、コールドブート処理又はRAMへのサスペンドのレジュームプロセスにおいて、プロセッサシステム100(図1及び2)をブートするために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図8の例の処理は、図5のブロック522の呼び出しレジュームスイッチオペレーションによってインスタンス化されうる。最初に、ホストCPU202は、オンチップレジスタからコールドブートレジュームフラグを読み込む(ブロック802)。例えば、コールドブートレジュームフラグは、ブート処理が、コールドブート処理であるか、又はRAMへのサスペンドの電力状態104のような低電力モードから図1のアクティブ電力状態102へプロセッサシステム100を移行させるためのレジュームプロセスであるかを示すべく、ホストCPU202のオンチップレジスタにセットされうる。
ホストCPU202は、ブロック802で読み込まれたコールドブートレジュームフラグに基づいて、ブート処理がコールドブート又はレジュームであるかを(ブロック804)決定する。ブート処理がコールドブートである場合(ブロック804)、ホストCPU202は、ACPIテーブルを生成し(ブロック806)、ACPIテーブルを複数の保護される領域218へ、CEFDK(コンシューマエレクトロニクスファームウェアデベロップメントキット)ステージ2処理の一部として追加する(ブロック808)。示される例において、ACPIテーブルは、ACPIテーブルがSTRデータ構造216の署名/認証によって保護されるように、複数の保護される領域218に追加される。ホストCPU202は、ACPIテーブル内のウェイクベクトルをオペレーティングシステム処理の一部としてセットする(ブロック810)。制御はその後、(例えば図5における)コールドブート経路にリターンし、図8の例の処理が終了する。
ホストCPU202がブロック804で、ブート処理がレジュームであると決定する場合、ホストCPU202は、前に生成され格納されたACPIテーブルを読み込み(ブロック812)、オペレーティングシステム(ブロック814)のエントリポイントのようなACPIテーブル内のウェイクベクトルを、CEFDKステージ2処理の一部として用い、レジュームプロセスを進める。示される例において、ブロック812および814でアクセスされるACPIテーブルは、コールドブート処理の間に(例えばブロック806および808で)複数の保護される領域218において生成され格納されるACPIテーブルであり、ブロック814で用いられるウェイクベクトルは、コールドブート処理の間に(例えばブロック810で)セットされるウェイクベクトルでありうる。制御はその後、レジュームエントリポイントへジャンプし、図8の例の処理は終了する。
図9は、図2のSTRデータ構造216を認証/署名するのに使用できる複数のシグネチャを生成すべく実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図9の例の処理は、図6のブロック614のオペレーションを実装するために用いられうる。図9の例の処理は、図2のSTRデータ構造216に署名するために、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306の複数のシグネチャを生成するために用いられる複数のキーを生成する。図9の処理において生成された複数のキーは、ホストソフトウェアによってアクセス可能ではないようにセキュアに処理される複数のオンダイシークレットキーである。示される例において、複数のキーのセキュリティを保証するために、セキュアCPU204は複数のキーを生成することができる。加えて、示された例のセキュアCPU204は、例えば、キーが再作成される必要があるときに同一の値をオンダイキー生成器に送信(seeding)することによって、後の時点で複数のキーをセキュアCPU204に完全に同じように再作成又は再生成させるための処理を用いて、複数のキーを生成するように構成される。示された例の複数のキーは、同じように再作成可能であり、これにより、セキュアCPU204は、RAMへのサスペンドの電力状態104への移行の間に生成された複数のキーに基づいてSTRデータ構造216に署名でき、RAMへのサスペンドの電力状態104からレジュームする際、セキュアCPU204は、RAMへのサスペンドの電力状態104へ入るときに生じるSTRデータ構造216の認証/署名の確認で用いるための複数の同一のキーを生成できる。
図9に示されるように、最初に、セキュアCPU204は、STRルート生成キーを生成する(ブロック902)。示される例において、セキュアCPU204は、図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306の複数のシグネチャを生成するための複数の次のキーを生成するべく、STRルート生成キーを用いる。セキュアCPU204は、STRルート生成キーを用いてSTRヘッダキー(ブロック904)を生成する。セキュアCPU204は、例えばSTRヘッダシグネチャフィールド302に対応するSTRヘッダシグネチャを生成する(ブロック906)。示される例において、セキュアCPU204は、シグネチャ機能(例えばCMAC機能、HMAC機能等)を、ブロック904で生成されたSTRヘッダキーと、(例えば図3のSTRヘッダ308に格納された)STRヘッダ及びノンス値(例えば図2の乱数/擬似乱数222)の連結とへ適用することによって、STRヘッダシグネチャを生成する。例えば、ブロック906で用いられるシグネチャ生成機能は、シグネチャ(STRヘッダキー、連結(STRヘッダ、ノンス))(SIGNATURE(STR HEADER KEY, CONCATENATE(STR HEADER, NONCE)))でありうる。
セキュアCPU204は、STR分散/集合テーブルキー(ブロック908)を、STRルート生成キーを用いて生成する。セキュアCPU204は、例えば図3のSTR分散/集合テーブル310に対応するSTR分散/集合テーブルシグネチャ(ブロック910)を生成する。示される例において、セキュアCPU204は、シグネチャ機能(例えばCMAC機能、HMAC機能等)を、ブロック908で生成されるSTR分散/集合テーブルキーと、STR分散/集合テーブル310に格納される情報(例えば、図3のSTR分散/集合テーブル310のフィールド312、320、322、324、326および328に格納されるポインタ及びサイズ情報)及びノンス値(例えば、図2の乱数/擬似乱数222)の連結とに適用することによって、STR分散/集合テーブルシグネチャを生成する。例えば、ブロック906で用いられるシグネチャ生成機能は、シグネチャ(STR分散/集合テーブルキー、連結(分散/集合テーブル、ノンス))(SIGNATURE(STR SCATTER/GATHER TABLE KEY, CONCATENATE(SCATTER/GATHER TABLE, NONCE)))でありうる。
セキュアCPU204は、STRルート生成キーを用いてSTR DRAMキー(ブロック912)を生成する。セキュアCPU204は、例えば、分散/集合テーブル310のポインタ0フィールド312に格納されるポインタによって指し示される複数の保護される領域218の第1の16バイト単位に揃えたバッファに対応するSTR DRAMシグネチャ(ブロック914)を生成する。示される例において、セキュアCPU204は、シグネチャ機能(例えばCMAC機能、HMAC機能等)を、ブロック912で生成されたSTR DRAMキーと、ポインタ0フィールド312のポインタにより指し示される複数の保護される領域218の16バイト単位に揃えたバッファ及びノンス値(例えば、図2の乱数/擬似乱数222)の連結とに適用することによって、STR DRAMシグネチャを生成する。例えば、ブロック914で用いられるシグネチャ生成機能は、シグネチャ(STR DRAMキー、連結(STR DRAM領域、ノンス))でありうる(SIGNATURE(STR DRAM KEY,CONCATENATE(STR DRAM AREA,NONCE)))。
セキュアCPU204は、ブロック902、904、908および912で生成された複数のキーを破壊する(ブロック916)。複数のキーを破壊することで、複数のキーが望ましくない方法でアクセスされることに対するさらなる保護を提供する。図9の例の処理は、STRヘッダシグネチャ、STR SGテーブルシグネチャ、及びSTR DRAMキー(ブロック918)を、図6の例の処理のような呼び出し機能又は処理へリターンする。図9の例の処理はその後終了する。
図9の例の処理は、3つのシグネチャ(例えばブロック906、910および914で生成される複数のシグネチャ)を生成するものとして説明されるが、複数の他の実施例において、より少ないシグネチャ(例えば1つのシグネチャ又は2つのシグネチャ)又はより多いシグネチャ(3つより多いシグネチャ)が、STRデータ構造216の認証/署名で用いるために生成されうる。
図10は、STRデータ構造216(図2)の有効性を検証するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。図10の例の処理は、図1のRAMへのサスペンドの電力状態104からのレジュームプロセスの間にDRAMを検証するときに図7Aの712のオペレーションを実装するために用いられうる。STRデータ構造218の有効性を確認するために、例の処理は、図9に関連して上述したのと同じ方法で、複数のキー及び複数のシグネチャを生成するために用いられる。上述のように、複数のシグネチャを生成するために用いられる複数のキーは、例えば、キー生成器に図9の処理で用いたのと同一のシード値を提供することによって、後の時点でセキュアCPU204によって同じように再作成可能である。複数のキーは、その後、STRデータ構造216(例えば図3のSTRヘッダシグネチャフィールド302、STR分散/集合テーブルシグネチャフィールド304、及びSTR DRAMシグネチャフィールド306)に格納された複数のシグネチャに対して比較するべく、STRデータ構造216に基づいて複数のシグネチャを生成するために用いられる。図10の例の処理において生成された複数のキーが図9の例の処理で生成された複数のキーと同一であるため、STRデータ構造216のコンテンツが変更されていなかった(例えば、潜在的な攻撃者によって危険にさらされていなかった)場合、RAMへのサスペンドの電力状態104からのレジュームのときに図10の検証処理において生成された複数のシグネチャは、RAMへのサスペンドの電力状態104に入るときに図9の認証処理において生成された複数のシグネチャと一致すべきである。
図10に示されるように、最初に、セキュアCPU204は、STRルート生成キー(ブロック1002)を生成する。例えば、セキュアCPU204は、図9のブロック902でSTRルート生成キーを生成したのと同一の方法でSTRルート生成キーを生成できる。セキュアCPU204は、例えば図9のブロック904でSTRヘッダキーを生成したのと同一の方法で、STRヘッダキー(ブロック1004)を生成する。セキュアCPU204は、例えば、図9のブロック906で(例えばSTRヘッダシグネチャフィールド302の)STRヘッダシグネチャを生成したのと同一の方法で、STRヘッダシグネチャ(ブロック1006)を生成する。
セキュアCPU204は、STRデータ構造216のSTRヘッダを検証する(ブロック1008)。例えば、セキュアCPU204は、ブロック1006で生成されたSTRヘッダシグネチャを、STRデータ構造216に(例えば図3のSTRヘッダシグネチャフィールド302に)格納されたSTRヘッダシグネチャと比較して、STRデータ構造216のSTRヘッダ(例えば図3のSTRヘッダフィールド308のSTRヘッダ)が有効であるかを決定する。プロセッサシステム100がRAMへのサスペンドの電力状態104に入ったためにSTRヘッダが変更されていなかった場合、複数のシグネチャは、STRヘッダが有効であることを確認するように一致するであろう。
セキュアCPU204は、例えば、図9のブロック908でSTR分散/集合テーブルキーを生成したのと同一の方法で、STR分散/集合テーブルキー(ブロック1010)を生成する。セキュアCPU204は、例えば、図9のブロック910でSTR分散/集合テーブルシグネチャを生成したのと同一の方法で、STR分散/集合テーブルシグネチャ(ブロック1012)を生成する。セキュアCPU204は、STRデータ構造216のSTR分散/集合テーブルを検証する(ブロック1014)。例えば、セキュアCPU204は、ブロック1006で生成されるSTR分散/集合シグネチャをSTRデータ構造216(例えば図3のSTR分散/集合シグネチャフィールド304)に格納されたSTR分散/集合シグネチャと比較して、STRデータ構造216のSTR分散/集合テーブル(例えば図3のSTR分散/集合テーブル310内のSTR分散/集合テーブルの位置及びサイズ情報)が有効であるかを決定する。STR分散/集合テーブル情報が、プロセッサシステム100がRAMへのサスペンドの電力状態104に入ったため変更されていなかった場合、複数のシグネチャは、STR分散/集合テーブル情報が有効であることを確認するように一致するであろう。
セキュアCPU204は、例えば図9のブロック912でSTR DRAMキーを生成したのと同一の方法で、STR DRAMキー(ブロック1016)を生成する。セキュアCPU204は、例えば図9のブロック914でSTR DRAMシグネチャを生成するのと同一の方法で、STR DRAMシグネチャ(ブロック1018)を生成する。セキュアCPU204は、STRデータ構造216によって指し示されるSTR DRAM領域を検証する(ブロック1020)。例えば、セキュアCPU204は、ブロック1018で生成されたSTR DRAMシグネチャを、STRデータ構造216(例えば図3のSTR DRAMシグネチャフィールド306)に格納されたSTR DRAMシグネチャと比較して、図3のポインタ0フィールド312によって指し示された複数の保護される領域218の16バイト単位で揃えたバッファが有効であるかを決定する。16バイト単位で揃えたバッファの情報が、プロセッサシステム100がRAMへのサスペンドの電力状態104に入ったために変更されなかった場合、複数のシグネチャは、ポインタ0フィールド312のポインタによって指し示された複数の保護される領域218の16バイト単位で揃えたバッファが有効であることを確認するように一致するであろう。
セキュアCPU204は、ブロック1002、1004、1010および1016で生成される複数のキーを破壊する(ブロック1022)。複数のキーを破壊することで、複数のキーが望ましくない方法でアクセスされることに対するさらなる保護を提供する。図10の例の処理は、検証状態を、図7A及び7Bの例の処理のような呼び出し機能又は処理へリターンし、図10の例の処理が終了する。
図10の例の処理は、3つのシグネチャ(すなわち、ブロック1006、1012および1018で生成される複数のシグネチャ)を生成するものとして説明されたが、他の例において、より少ないシグネチャ(例えば1つのシグネチャ又は2つのシグネチャ)又はより多いシグネチャ(3つより多いシグネチャ)が、STRデータ構造216の有効性の検証で用いるために生成されうる。いずれの場合であっても、同じ数のシグネチャが、図9の例の処理で生成されたように、図10の例の処理において生成されるべきである。
開示された例の複数の方法は、プロセッサシステムにおける複数の電力状態を管理する。いくつつかの開示された例の方法は、低電力モードへプロセッサシステムを移行させるときに、低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第1のシグネチャを生成することを含む。いくつかの開示された例の方法はまた、低電力モードからのプロセッサシステムのレジュームプロセスの間に、低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第2のシグネチャを生成することを含む。いくつかの開示された例の方法はまた、第1のシグネチャが第2のシグネチャと一致するときに、低電力モードからプロセッサシステムをレジュームすること、及び/又は第1のシグネチャが第2のシグネチャと一致しないときに、エラーを生成することを含む。いくつかの例において、低電力モードは、プラットフォームソフトウェアの複数の動作状態が、ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される、ランダムアクセスメモリへのサスペンドの電力状態である。
いくつかの開示された例の方法はまた、少なくとも1つのキー及び乱数又は擬似乱数を生成すること、及び、少なくとも1つのキー又は乱数又は擬似乱数を、データ構造の情報と組み合わせて用いて、第1のシグネチャを生成することを含む。いくつかの複数の例において、データ構造内の情報は、データ構造ヘッダ又は複数の保護されるメモリ領域の複数のメモリアドレス及びデータサイズのうちの少なくとも1つを含む。いくつかの開示された例はまた、少なくとも1つのキーを再生成すること、レジュームプロセスの間に持続的に電力供給されるメモリから乱数又は擬似乱数を取得すること、及び再生成されたキー及び取得される乱数又は擬似乱数を用いて第2のシグネチャを生成することを含む。
いくつかの開示された例はまた、プロセッサシステムの又はプロセッサシステムのコンポーネントのハードウェア製造業者が保護される複数のメモリ領域の少なくともいくつかを特定する製造業者要求領域テーブルに基づいて、保護される複数のメモリ領域の少なくとも1つ又はいくつかを決定することを含む。 いくつかの開示された例はまた、サードパーティが複数の保護されるメモリ領域のうちの他のものを特定するサードパーティ要求領域テーブルに基づいて、保護される複数のメモリ領域のうちの他のものを決定することを含む。
いくつかの開示された例はまた、低電力モードの間に持続的に電力供給されるメモリにデータ構造へのポインタを格納することを含む。 いくつかの開示された例はまた、レジュームプロセスの間に持続的に電力供給されるメモリからポインタを取得すること、及びポインタに基づいてレジュームプロセスの間にデータ構造を検索することを含む。
また、実行されたときに、機械に本開示の少なくともいくつかの例の方法を実行させる例の開示された複数の命令を備える例の有形のコンピュータ可読記憶媒体を開示する。
開示された例の装置はプロセッサシステムをサスペンドする。いくつかの開示された例の装置は、第1のメモリ及び第1のメモリと通信するプロセッサを含む。いくつかの例において、第1のメモリは、プロセッサシステムが低電力モードであるときに電力供給され続け、第1のメモリは、乱数又は擬似乱数、及びデータ構造へのポインタを格納する。いくつかの例において、データ構造は、少なくとも第1のシグネチャを格納し、低電力モードの間にプロセッサシステムの動作状態を格納する複数のメモリ領域を特定するデータ構造に格納された情報を認証する。いくつかの例において、プロセッサは、プロセッサシステムが低電力モードへ移行するときに、データ構造と乱数又は擬似乱数とに基づいて第1のシグネチャを生成する。いくつかの例において、プロセッサシステムが低電力モードからレジュームするレジュームプロセスにあるとき、プロセッサは、データ構造と乱数又は擬似乱数とに基づいて少なくとも第2のシグネチャを生成し、少なくとも第1のシグネチャと第2のシグネチャとの比較に基づいてデータ構造が有効であるかを決定する。いくつかの例において、低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、この場合、動作状態が、ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される。いくつかの例において、第1のメモリは、組み込みスタティックランダムアクセスメモリであり、例の装置はさらに、データ構造を格納するダイナミックランダムアクセスメモリを備える。
いくつかの例において、プロセッサはさらに、製造業者要求領域テーブルに基づいて複数のメモリ領域の少なくともいくつかを決定し、製造業者要求領域テーブルにおいて、プロセッサシステムの又はプロセッサシステムのコンポーネントのハードウェア製造業者は、複数のメモリ領域の少なくともいくつかを特定する。いくつかの例において、プロセッサはさらに、サードパーティが複数のメモリ領域のうちの第2のメモリ領域を特定するサードパーティ要求領域テーブルに基づいて、複数のメモリ領域のうちの第2のメモリ領域を決定する。いくつかの例において、プロセッサは、データ構造ヘッダ又は複数の保護されるメモリ領域の複数のメモリアドレス及びデータサイズのうちの少なくとも1つに基づいて、第1及び第2のシグネチャを生成する。
いくつかの例において、プロセッサは、ホストプロセッサと通信するセキュアプロセッサである。そのようないくつかの例において、データ構造が少なくとも第1のシグネチャと第2のシグネチャとの比較に基づいて有効ではないとき、セキュアプロセッサは、エラーステータスをホストプロセッサへ通信し、ホストプロセッサは、エラーステータスに基づいてハードウェアリセットを実行する。
特定の例の複数の方法、装置及び製造物品が本開示で説明されたが、本特許のカバーの範囲はこれに限られたものではない。反対に、本特許は、本特許の複数のクレームの範囲内に適正に入る全ての方法、装置、及び製造物品をカバーする。
本実施形態の例を下記の各項目として示す。
[項目1]
プロセッサシステムにおいて複数の電力状態を管理する方法であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第1のシグネチャを生成する段階と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第2のシグネチャを生成する段階と、
前記第1のシグネチャが前記第2のシグネチャに一致する場合は、前記低電力モードから前記プロセッサシステムをレジュームする段階と、
前記第1のシグネチャが前記第2のシグネチャに一致しない場合は、エラーを生成する段階とを備える
方法。
[項目2]
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、プラットフォームソフトウェアの複数の動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
項目1に記載の方法。
[項目3]
少なくとも1つのキーと乱数又は擬似乱数とを生成する段階と、
前記第1のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも1つのキーと前記乱数又は擬似乱数とを用いる段階とをさらに備える
項目1又は2に記載の方法。
[項目4]
前記データ構造内の前記情報は、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレスと複数のデータサイズの少なくとも1つを含む
項目3に記載の方法。
[項目5]
前記少なくとも1つのキーを再生成する段階と、
前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得する段階と、
前記第2のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる段階とをさらに備える
項目3又は4に記載の方法。
[項目6]
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域の少なくともいくつかを決定する段階をさらに備え、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域の前記少なくともいくつかを特定する
項目1から5のいずれか1項に記載の方法。
[項目7]
サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの他のメモリ領域を決定する段階をさらに備え、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域の前記他のメモリ領域を特定する
項目6に記載の方法。
[項目8]
前記低電力モードの間に、持続的に電力供給されるメモリに前記データ構造へのポインタを格納する段階をさらに備える
項目1から7のいずれか1項に記載の方法。
[項目9]
前記レジュームプロセスの間に前記持続的に電力供給されるメモリから前記ポインタを取得する段階と、
前記ポインタに基づいて前記レジュームプロセスの間に前記データ構造を検索する段階とをさらに備える
項目8に記載の方法。
[項目10]
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムが低電力モードであるときに、電力供給され続ける第1のメモリと、前記第1のメモリと通信するプロセッサとを備え、
前記第1のメモリは、
乱数又は擬似乱数と、
データ構造へのポインタであって、前記データ構造は、前記低電力モードの間に前記プロセッサシステムの動作状態を格納する複数のメモリ領域を特定する前記データ構造に格納された情報を認証するための少なくとも第1のシグネチャを格納する、前記ポインタとを格納し、
前記プロセッサは、
前記プロセッサシステムが前記低電力モードへ移行しているとき、前記データ構造と前記乱数又は擬似乱数とに基づいて前記第1のシグネチャを生成し、
前記プロセッサシステムが前記低電力モードからレジュームするレジュームプロセス中であるとき、前記データ構造と前記乱数又は擬似乱数とに基づいて少なくとも第2のシグネチャを生成し、
少なくとも前記第1のシグネチャと前記第2のシグネチャとの比較に基づいて前記データ構造が有効であるかを決定する
装置。
[項目11]
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、前記動作状態は、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
項目10に記載の装置。
[項目12]
前記プロセッサはさらに、製造業者要求領域テーブルに基づいて前記複数のメモリ領域の少なくともいくつかを決定し、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、前記複数のメモリ領域の前記少なくともいくつかを特定する
項目10又は11に記載の装置。
[項目13]
前記プロセッサはさらに、サードパーティ要求領域テーブルに基づいて前記複数のメモリ領域のうちの第2のメモリ領域を決定し、
前記サードパーティ要求領域テーブルにおいて、サードパーティが前記複数のメモリ領域のうちの前記第2のメモリ領域を特定する
項目12に記載の装置。
[項目14]
前記プロセッサは、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレス及び複数のデータサイズの少なくとも1つに基づいて前記第1及び第2のシグネチャを生成する
項目10から13のいずれか1項に記載の装置。
[項目15]
前記プロセッサは、セキュアプロセッサであり、
前記装置はさらに、
少なくとも前記第1のシグネチャと前記第2のシグネチャとの前記比較に基づいて前記データ構造が有効ではない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
前記セキュアプロセッサは、前記ホストプロセッサへエラーステータスを送信し、
前記ホストプロセッサは、前記エラーステータスに基づいてハードウェアリセットを実行する
項目10から14のいずれか1項に記載の装置。
[項目16]
前記第1のメモリは、組み込みスタティックランダムアクセスメモリであり、
前記装置はさらに、前記データ構造を格納するダイナミックランダムアクセスメモリを備える
項目10から15のいずれか1項に記載の装置。
[項目17]
複数の命令を含むプログラムであって、
前記複数の命令は、実行されたときに機械に、少なくとも、
低電力モードへプロセッサシステムを移行させているとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて少なくとも第1のシグネチャを生成させ、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて少なくとも第2のシグネチャを生成させ、
前記第1のシグネチャが前記第2のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームさせ、
前記第1のシグネチャが前記第2のシグネチャに一致しない場合、エラーを生成させる
プログラム。
[項目18]
前記複数の命令はさらに、前記機械に、
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも1つを決定させ、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも1つを特定する
項目17に記載のプログラム。
[項目19]
前記複数の命令はさらに、前記機械に、
サードパーティ要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの第2のメモリ領域を決定させ、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第2のメモリ領域を特定する
項目18に記載のプログラム。
[項目20]
前記複数の命令はさらに、前記機械に、
少なくとも1つのキーと乱数又は擬似乱数とを生成させ、前記第1のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて前記少なくとも1つのキーと前記乱数又は擬似乱数とを使用させ、
前記少なくとも1つのキーを再生成させ、前記レジュームプロセスの間に、持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得させ、前記第2のシグネチャを生成すべく、再生成した前記キーと取得した前記乱数又は擬似乱数とを使用させる
項目17から19のいずれか1項に記載のプログラム。
[項目21]
プロセッサシステムをサスペンドする装置であって、
プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第1のシグネチャを生成する手段と、
前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第2のシグネチャを生成する手段と、
前記第1のシグネチャが前記第2のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームする手段と、
前記第1のシグネチャが前記第2のシグネチャに一致しない場合、エラーを生成する手段とを備える
装置。
[項目22]
製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも1つを決定する手段をさらに備え、
前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも1つを特定する
項目21に記載の装置。
[項目23]
サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの第2のメモリ領域を決定する手段をさらに備え、
前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第2のメモリ領域を特定する
項目22に記載の装置。
[項目24]
前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
前記ランダムアクセスメモリへのサスペンドの電力状態において、前記プロセッサシステムの動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
項目21から23のいずれか1項に記載の装置。
[項目25]
少なくとも1つのキーと乱数又は擬似乱数とを生成し、前記第1のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも1つのキーと前記乱数又は擬似乱数とを用いる手段と、
前記少なくとも1つのキーを再生成し、前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得し、前記第2のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる手段とをさらに備える
項目21に記載の装置。