JP6026666B2 - 方法、装置、プログラム、及びコンピュータ可読記憶媒体 - Google Patents

方法、装置、プログラム、及びコンピュータ可読記憶媒体 Download PDF

Info

Publication number
JP6026666B2
JP6026666B2 JP2015531897A JP2015531897A JP6026666B2 JP 6026666 B2 JP6026666 B2 JP 6026666B2 JP 2015531897 A JP2015531897 A JP 2015531897A JP 2015531897 A JP2015531897 A JP 2015531897A JP 6026666 B2 JP6026666 B2 JP 6026666B2
Authority
JP
Japan
Prior art keywords
memory
signature
data structure
processor
processor system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015531897A
Other languages
English (en)
Other versions
JP2015537274A (ja
Inventor
アール. ピアソン、エイドリアン
アール. ピアソン、エイドリアン
アンドリュー ソーンバーグ、クリストファー
アンドリュー ソーンバーグ、クリストファー
ジェイ. ブラウン、スティーブン
ジェイ. ブラウン、スティーブン
アール. ムングイア、ピーター
アール. ムングイア、ピーター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2015537274A publication Critical patent/JP2015537274A/ja
Application granted granted Critical
Publication of JP6026666B2 publication Critical patent/JP6026666B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本開示は、概して、複数のプロセッサシステムに関し、より具体的には、複数の低電力状態の間にプロセッサシステムの複数のメモリ領域を保護する複数の方法及び装置に関する。
複数のエネルギースター規格は、複数の電子デバイスの許容低電力消費評価の複数の電力レベルを規定する。そのようなエネルギースター規格に準拠するために、複数の電子デバイスはしばしば、1又は複数の低電力モードを実装する。そのような複数の低電力モードは、完全にオフの電力状態、RAM(ランダムアクセスメモリ)へのサスペンド電力状態、ディスク(ハイバーネイト)へのサスペンド状態、及び/又は1又は複数のタイプのスタンバイ電力状態を含む。完全にオフの電力状態は一般的に、いずれかのプラットフォーム電力状態の電力の最小量を消費する。しかし、完全にオフの電力状態は、パワーオンオペレーションが再度適用された後、プラットフォームがプラットフォームソフトウェアの完全なブートを完了させることを必要とする。そのような完全なブートは、複数の望ましくないブートレイテンシを招く。
RAMへのサスペンド(suspend−to−RAM)の電力状態が完全なオフ状態への代替である。RAMへのサスペンドの電力状態は、RAMへのサスペンドの電力状態に入る直前にあるように、プラットフォームソフトウェアの動作状態を維持する。プラットフォームソフトウェア動作状態が、RAMへのサスペンドの電力状態の間にRAMに保持されるため、プラットフォームソフトウェアは、RAMへのサスペンドの状態へ入る前にオフのままであることを継続すべく、ブート処理の一部を実行することだけが必要である。
アクティブ電力状態とRAM(ランダムアクセスメモリ)へのサスペンドの電力状態との間で移行する一例のプロセッサシステムを示す。
プロセッサシステムの複数の低電力状態の間に複数のメモリ領域を保護するために用いられうる図1の一例のプロセッサシステムの複数の例のコンポーネントを示す。
低電力状態の間にシステムメモリに格納されるプラットフォームソフトウェアの複数の保護される領域のための複数のシグネチャ及び複数の位置情報を格納する一例のデータ構造フォーマットを示す。
本開示の複数の教示による、低電力モード電力状態とアクティブ電力状態との間で図1のプロセッサシステムを移行させるために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
低電力状態からのコールドブート又はレジュームの間にプロセッサシステムをブートするホストブートシーケンスを実現するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
低電力状態へプロセッサシステムを移行させるために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
ソフトウェアプラットフォーム動作状態のためのデータを格納するシステムメモリの複数の保護される領域を検証するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。 ソフトウェアプラットフォーム動作状態のためのデータを格納するシステムメモリの複数の保護される領域を検証するために実行されうるコンピュータ可読命令を表す一例のフロー図を示す。
低電力状態からレジュームするコールドブート処理又はレジューム処理においてプロセッサシステムをブートするために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
RAMへのサスペンドのデータ構造を認証するために利用可能な複数のシグネチャを生成するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
RAMへのサスペンドのデータ構造の有効性を検証するために実行されうる複数のコンピュータ可読命令を表す一例のフロー図を示す。
本開示の複数の例の方法、装置、システム、及び製造物品は、複数のプロセッサシステムの低電力状態の間にメモリの複数の領域を保護することを可能にする。開示された複数の例は、本開示において、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に記載の装置。

Claims (29)

  1. プロセッサシステムにおいて複数の電力状態を管理する方法であって、
    プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第1のシグネチャを生成する段階と、
    前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第2のシグネチャを生成する段階と、
    前記第1のシグネチャが前記第2のシグネチャに一致する場合は、前記低電力モードから前記プロセッサシステムをレジュームする段階と、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合は、エラーを生成する段階とを備え
    前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
    方法。
  2. プロセッサシステムにおいて複数の電力状態を管理する方法であって、
    セキュアプロセッサを有するプロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、前記セキュアプロセッサにより少なくとも第1のシグネチャを生成する段階と、
    前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、前記セキュアプロセッサにより少なくとも第2のシグネチャを生成する段階と、
    前記第1のシグネチャが前記第2のシグネチャに一致する場合は、前記低電力モードから前記プロセッサシステムをレジュームする段階と、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合は、前記セキュアプロセッサによりエラーを生成する段階とを備え、
    前記プロセッサシステムはさらに、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
    前記セキュアプロセッサは、前記ホストプロセッサへ前記エラーを送信し、
    前記ホストプロセッサは、前記エラーに基づいてハードウェアリセットを実行する
    方法。
  3. 前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
    前記ランダムアクセスメモリへのサスペンドの電力状態において、プラットフォームソフトウェアの複数の動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
    請求項1または2に記載の方法。
  4. 少なくとも1つのキーと乱数又は擬似乱数とを生成する段階と、
    前記第1のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも1つのキーと前記乱数又は擬似乱数とを用いる段階とをさらに備える
    請求項1から3のいずれか1項に記載の方法。
  5. 前記データ構造内の前記情報は、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレスと複数のデータサイズの少なくとも1つを含む
    請求項に記載の方法。
  6. 前記少なくとも1つのキーを再生成する段階と、
    前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得する段階と、
    前記第2のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる段階とをさらに備える
    請求項又はに記載の方法。
  7. 製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域の少なくともいくつかを決定する段階をさらに備え、
    前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域の前記少なくともいくつかを特定する
    請求項1からのいずれか1項に記載の方法。
  8. サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの他のメモリ領域を決定する段階をさらに備え、
    前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域の前記他のメモリ領域を特定する
    請求項に記載の方法。
  9. 前記低電力モードの間に、持続的に電力供給されるメモリに前記データ構造へのポインタを格納する段階をさらに備える
    請求項1からのいずれか1項に記載の方法。
  10. 前記レジュームプロセスの間に前記持続的に電力供給されるメモリから前記ポインタを取得する段階と、
    前記ポインタに基づいて前記レジュームプロセスの間に前記データ構造を検索する段階とをさらに備える
    請求項に記載の方法。
  11. プロセッサシステムをサスペンドする装置であって、
    プロセッサシステムが低電力モードであるときに、電力供給され続ける第1のメモリと、前記第1のメモリと通信するプロセッサとを備え、
    前記第1のメモリは、
    乱数又は擬似乱数と、
    データ構造へのポインタであって、前記データ構造は、前記低電力モードの間に前記プロセッサシステムの動作状態を格納する複数のメモリ領域を特定する前記データ構造に格納された情報を認証するための少なくとも第1のシグネチャを格納する、前記ポインタとを格納し、
    前記プロセッサは、
    前記プロセッサシステムが前記低電力モードへ移行しているとき、前記データ構造と前記乱数又は擬似乱数とに基づいて前記第1のシグネチャを生成し、
    前記プロセッサシステムが前記低電力モードからレジュームするレジュームプロセス中であるとき、前記データ構造と前記乱数又は擬似乱数とに基づいて少なくとも第2のシグネチャを生成し、
    少なくとも前記第1のシグネチャと前記第2のシグネチャとの比較に基づいて前記データ構造が有効であるかを決定し、
    前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
    装置。
  12. プロセッサシステムをサスペンドする装置であって、
    プロセッサシステムが低電力モードであるときに、電力供給され続ける第1のメモリと、前記第1のメモリと通信するプロセッサとを備え、
    前記第1のメモリは、
    乱数又は擬似乱数と、
    データ構造へのポインタであって、前記データ構造は、前記低電力モードの間に前記プロセッサシステムの動作状態を格納する複数のメモリ領域を特定する前記データ構造に格納された情報を認証するための少なくとも第1のシグネチャを格納する、前記ポインタとを格納し、
    前記プロセッサは、
    前記プロセッサシステムが前記低電力モードへ移行しているとき、前記データ構造と前記乱数又は擬似乱数とに基づいて前記第1のシグネチャを生成し、
    前記プロセッサシステムが前記低電力モードからレジュームするレジュームプロセス中であるとき、前記データ構造と前記乱数又は擬似乱数とに基づいて少なくとも第2のシグネチャを生成し、
    少なくとも前記第1のシグネチャと前記第2のシグネチャとの比較に基づいて前記データ構造が有効であるかを決定し、
    前記プロセッサは、セキュアプロセッサであり、
    前記装置はさらに、
    少なくとも前記第1のシグネチャと前記第2のシグネチャとの前記比較に基づいて前記データ構造が有効ではない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
    前記セキュアプロセッサは、前記ホストプロセッサへエラーステータスを送信し、
    前記ホストプロセッサは、前記エラーステータスに基づいてハードウェアリセットを実行する
    装置。
  13. 前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
    前記ランダムアクセスメモリへのサスペンドの電力状態において、前記動作状態は、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
    請求項11または12に記載の装置。
  14. 前記プロセッサはさらに、製造業者要求領域テーブルに基づいて前記複数のメモリ領域の少なくともいくつかを決定し、
    前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、前記複数のメモリ領域の前記少なくともいくつかを特定する
    請求項11から13のいずれか1項に記載の装置。
  15. 前記プロセッサはさらに、サードパーティ要求領域テーブルに基づいて前記複数のメモリ領域のうちの第2のメモリ領域を決定し、
    前記サードパーティ要求領域テーブルにおいて、サードパーティが前記複数のメモリ領域のうちの前記第2のメモリ領域を特定する
    請求項14に記載の装置。
  16. 前記プロセッサは、データ構造ヘッダ又は保護される前記複数のメモリ領域の複数のメモリアドレス及び複数のデータサイズの少なくとも1つに基づいて前記第1及び第2のシグネチャを生成する
    請求項11から15のいずれか1項に記載の装置。
  17. 前記第1のメモリは、組み込みスタティックランダムアクセスメモリであり、
    前記装置はさらに、前記データ構造を格納するダイナミックランダムアクセスメモリを備える
    請求項11から16のいずれか1項に記載の装置。
  18. 複数の命令を含むプログラムであって、
    前記複数の命令は、実行されたときに機械に、少なくとも、
    低電力モードへプロセッサシステムを移行させているとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて少なくとも第1のシグネチャを生成させ、
    前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて少なくとも第2のシグネチャを生成させ、
    前記第1のシグネチャが前記第2のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームさせ、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、エラーを生成させ
    前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
    プログラム。
  19. 複数の命令を含むプログラムであって、
    前記複数の命令は、実行されたときに機械に、少なくとも、
    セキュアプロセッサを有するプロセッサシステムを低電力モードへ移行させているとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて前記セキュアプロセッサにより少なくとも第1のシグネチャを生成させ、
    前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて前記セキュアプロセッサにより少なくとも第2のシグネチャを生成させ、
    前記第1のシグネチャが前記第2のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームさせ、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、前記セキュアプロセッサによりエラーを生成させ
    前記プロセッサシステムは、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
    前記セキュアプロセッサは、前記ホストプロセッサへ前記エラーを送信し、
    前記ホストプロセッサは、前記エラーに基づいてハードウェアリセットを実行する
    プログラム。
  20. 前記複数の命令はさらに、前記機械に、
    製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも1つを決定させ、
    前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも1つを特定する
    請求項18または19に記載のプログラム。
  21. 前記複数の命令はさらに、前記機械に、
    サードパーティ要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの第2のメモリ領域を決定させ、
    前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第2のメモリ領域を特定する
    請求項20に記載のプログラム。
  22. 前記複数の命令はさらに、前記機械に、
    少なくとも1つのキーと乱数又は擬似乱数とを生成させ、前記第1のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて前記少なくとも1つのキーと前記乱数又は擬似乱数とを使用させ、
    前記少なくとも1つのキーを再生成させ、前記レジュームプロセスの間に、持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得させ、前記第2のシグネチャを生成すべく、再生成した前記キーと取得した前記乱数又は擬似乱数とを使用させる
    請求項18から21のいずれか1項に記載のプログラム。
  23. プロセッサシステムをサスペンドする装置であって、
    プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第1のシグネチャを生成する手段と、
    前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第2のシグネチャを生成する手段と、
    前記第1のシグネチャが前記第2のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームする手段と、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、エラーを生成する手段とを備え
    前記プロセッサシステムはシステムメモリを含み、前記システムメモリは、保護される前記複数のメモリ領域と前記データ構造とを有する
    装置。
  24. プロセッサシステムをサスペンドする装置であって、
    プロセッサシステムを低電力モードへ移行させるとき、前記低電力モードの間に保護される複数のメモリ領域の複数のメモリアドレスを格納するデータ構造に基づいて、少なくとも第1のシグネチャを生成する手段と、
    前記低電力モードからの前記プロセッサシステムのレジュームプロセスの間に、前記低電力モードの間に保護される前記複数のメモリ領域の前記複数のメモリアドレスを格納する前記データ構造に基づいて、少なくとも第2のシグネチャを生成する手段と、
    前記第1のシグネチャが前記第2のシグネチャに一致する場合、前記低電力モードから前記プロセッサシステムをレジュームする手段と、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、エラーを生成する手段とを備え
    前記第1のシグネチャを生成する手段と、前記第2のシグネチャを生成する手段と、前記エラーを生成する手段とは、前記プロセッサシステムのセキュアプロセッサに含まれ、
    前記プロセッサシステムは、
    前記第1のシグネチャが前記第2のシグネチャに一致しない場合、前記セキュアプロセッサと通信するホストプロセッサをさらに備え、
    前記セキュアプロセッサは、前記ホストプロセッサへ前記エラーを送信し、
    前記ホストプロセッサは、前記エラーに基づいてハードウェアリセットを実行する
    装置。
  25. 製造業者要求領域テーブルに基づいて保護される前記複数のメモリ領域のうちの少なくとも1つを決定する手段をさらに備え、
    前記製造業者要求領域テーブルにおいて、前記プロセッサシステム又は前記プロセッサシステムのコンポーネントのハードウェア製造業者が、保護される前記複数のメモリ領域のうちの前記少なくとも1つを特定する
    請求項23または24に記載の装置。
  26. サードパーティ要求領域テーブルに基づいて、保護される前記複数のメモリ領域のうちの第2のメモリ領域を決定する手段をさらに備え、
    前記サードパーティ要求領域テーブルにおいて、サードパーティが、保護される前記複数のメモリ領域のうちの前記第2のメモリ領域を特定する
    請求項25に記載の装置。
  27. 前記低電力モードは、ランダムアクセスメモリへのサスペンドの電力状態であり、
    前記ランダムアクセスメモリへのサスペンドの電力状態において、前記プロセッサシステムの動作状態が、前記ランダムアクセスメモリへのサスペンドの電力状態の間に電力供給され続けるランダムアクセスメモリに格納される
    請求項23から26のいずれか1項に記載の装置。
  28. 少なくとも1つのキーと乱数又は擬似乱数とを生成し、前記第1のシグネチャを生成すべく、前記データ構造内の情報と組み合わせて、前記少なくとも1つのキーと前記乱数又は擬似乱数とを用いる手段と、
    前記少なくとも1つのキーを再生成し、前記レジュームプロセスの間に持続的に電力供給されるメモリから前記乱数又は擬似乱数を取得し、前記第2のシグネチャを生成すべく、再生成された前記キー及び取得された前記乱数又は擬似乱数を用いる手段とをさらに備える
    請求項23または24に記載の装置。
  29. 請求項18から22のいずれか1項に記載のプログラムを格納するコンピュータ可読記憶媒体。
JP2015531897A 2012-09-14 2012-09-14 方法、装置、プログラム、及びコンピュータ可読記憶媒体 Active JP6026666B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/055580 WO2014042650A1 (en) 2012-09-14 2012-09-14 Methods and apparatus to protect memory regions during low-power states

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016201359A Division JP6316370B2 (ja) 2016-10-12 2016-10-12 装置、方法、集積回路、プログラム、及び有形のコンピュータ可読記憶媒体

Publications (2)

Publication Number Publication Date
JP2015537274A JP2015537274A (ja) 2015-12-24
JP6026666B2 true JP6026666B2 (ja) 2016-11-16

Family

ID=50275922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015531897A Active JP6026666B2 (ja) 2012-09-14 2012-09-14 方法、装置、プログラム、及びコンピュータ可読記憶媒体

Country Status (6)

Country Link
US (3) US8978135B2 (ja)
EP (1) EP2895935A4 (ja)
JP (1) JP6026666B2 (ja)
KR (1) KR101662616B1 (ja)
CN (1) CN104520872B (ja)
WO (1) WO2014042650A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014042650A1 (en) 2012-09-14 2014-03-20 Intel Corporation Methods and apparatus to protect memory regions during low-power states
JP5796725B2 (ja) 2013-03-22 2015-10-21 カシオ計算機株式会社 認証処理装置、認証処理方法及びプログラム
US9407636B2 (en) 2014-05-19 2016-08-02 Intel Corporation Method and apparatus for securely saving and restoring the state of a computing platform
US10055370B2 (en) * 2014-07-09 2018-08-21 Advanced Micro Devices, Inc. Method and apparatis for processor standby
US10032029B2 (en) 2014-07-14 2018-07-24 Lenovo (Singapore) Pte. Ltd. Verifying integrity of backup file in a multiple operating system environment
EP3474148B1 (en) 2014-07-23 2019-12-04 GrammaTech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
US9621549B2 (en) * 2014-07-25 2017-04-11 Qualcomm Incorporated Integrated circuit for determining whether data stored in external nonvolative memory is valid
US9959124B1 (en) 2014-09-26 2018-05-01 Apple Inc. Secure bypass of low-level configuration in reconfiguration of a computing system
US9639425B1 (en) * 2015-01-13 2017-05-02 Marvell International Ltd. Signature-based sleep recovery operation flow
DE102015202049B3 (de) * 2015-02-05 2016-08-18 Infineon Technologies Ag System und Verfahren zur Fehlerdetektion von ausgeführtem Programmcode unter Verwendung komprimierter Anweisungssignaturen
JP2016206951A (ja) * 2015-04-22 2016-12-08 富士通株式会社 電子装置及び電子装置の制御方法
US9672238B2 (en) 2015-05-14 2017-06-06 Walleye Software, LLC Dynamic filter processing
US10297003B2 (en) 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
US10185633B2 (en) * 2015-12-15 2019-01-22 Intel Corporation Processor state integrity protection using hash verification
US10152599B2 (en) * 2015-12-18 2018-12-11 Intel IP Corporation Security mechanisms for extreme deep sleep state
CN105611409B (zh) * 2016-01-04 2019-12-27 京东方科技集团股份有限公司 一种广告机控制系统及其控制方法和广告机
DE102016109892B4 (de) * 2016-05-30 2018-03-01 Infineon Technologies Ag Datenverarbeitungsvorrichtung und Verfahren zum Einsparen von Leistung in einer Datenverarbeitungsvorrichtung
KR102717098B1 (ko) * 2016-11-01 2024-10-15 삼성전자주식회사 단계별 저전력 상태들을 갖는 메모리 장치
EP3373178B1 (en) * 2017-03-08 2024-09-18 Secure-IC SAS Comparison of execution context data signatures with references
JP6918576B2 (ja) * 2017-05-24 2021-08-11 キヤノン株式会社 システム、情報処理装置、方法及びプログラム
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
EP3514686B1 (en) * 2017-12-20 2023-11-08 Samsung Electronics Co., Ltd. Display apparatus and method of operating the same
US11354415B2 (en) * 2019-06-29 2022-06-07 Intel Corporation Warm boot attack mitigations for non-volatile memory modules
US11340796B2 (en) * 2019-08-30 2022-05-24 Dell Products L.P. Method for managing sleep mode at a data storage device and system therefor
US11068035B2 (en) * 2019-09-12 2021-07-20 Dell Products L.P. Dynamic secure ACPI power resource enumeration objects for embedded devices
US20210097184A1 (en) * 2019-09-27 2021-04-01 Advanced Micro Devices, Inc. Secure buffer for bootloader
US11573815B2 (en) * 2020-04-29 2023-02-07 Red Hat, Inc. Dynamic power management states for virtual machine migration
US11250891B1 (en) 2020-08-12 2022-02-15 Micron Technology, Inc. Validation of DRAM content using internal data signature
US11544412B2 (en) * 2020-08-12 2023-01-03 Micron Technology, Inc. Protection against unintended content change in DRAM during standby mode
US11843939B2 (en) * 2020-12-16 2023-12-12 Itron, Inc. Secure messaging for outage events
US20230205430A1 (en) * 2021-12-28 2023-06-29 Micron Technology, Inc. Verification of a volatile memory using a unique identifier
WO2023216077A1 (zh) * 2022-05-09 2023-11-16 华为技术有限公司 一种验证方法、装置和系统

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0584257B1 (en) * 1991-05-17 2004-08-04 Packard Bell NEC, Inc. Power management capability for a microprocessor having backward compatibility
JP3024308B2 (ja) * 1991-09-30 2000-03-21 カシオ計算機株式会社 データ処理装置
US5539879A (en) 1995-05-24 1996-07-23 Dell U.S.A., L.P. Checksum technique for verifying integrity of disk space reserved for suspend-to-disk operations
US6081752A (en) 1995-06-07 2000-06-27 International Business Machines Corporation Computer system having power supply primary sense to facilitate performance of tasks at power off
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US6708274B2 (en) 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6247151B1 (en) 1998-06-30 2001-06-12 Intel Corporation Method and apparatus for verifying that data stored in a memory has not been corrupted
US6449683B1 (en) * 1999-12-14 2002-09-10 Intel Corporation Using non-volatile memory for power management in a computer
US7155590B2 (en) * 2000-04-11 2006-12-26 Mathis Richard M Method and apparatus for computer memory protection and verification
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6694451B2 (en) * 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US7010710B2 (en) * 2002-03-12 2006-03-07 International Business Machines Corporation Proximity sensor enhanced power management
US7107487B2 (en) 2002-04-12 2006-09-12 Lenovo (Singapore) Pte Ltd. Fault tolerant sleep mode of operation
US7392415B2 (en) * 2002-06-26 2008-06-24 Intel Corporation Sleep protection
US6930949B2 (en) * 2002-08-26 2005-08-16 Micron Technology, Inc. Power savings in active standby mode
US7284136B2 (en) 2003-01-23 2007-10-16 Intel Corporation Methods and apparatus for implementing a secure resume
US8199686B1 (en) * 2004-03-04 2012-06-12 Marvell International Ltd. Wireless local area network infrastructure mode for reducing power consumption
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
MXPA06015236A (es) * 2004-06-29 2007-08-21 Sk Telecom Co Ltd Metodo de apagado disfrazado para una terminal de comunicacion movil.
US7373530B2 (en) * 2005-03-16 2008-05-13 Microsoft Corporation Systems and methods for providing power-loss protection to sleeping computers systems
JP2007121374A (ja) * 2005-10-25 2007-05-17 Seiko Epson Corp 情報表示装置
US7793127B2 (en) * 2005-12-30 2010-09-07 Intel Corporation Processor state restoration and method for resume
JP4835206B2 (ja) * 2006-03-06 2011-12-14 富士ゼロックス株式会社 情報処理装置
US8248629B2 (en) * 2007-06-21 2012-08-21 Kyocera Mita Corporation Image forming apparatus with a power mode control section for allocating a printout for a reserved low-key print setting job
JP4867892B2 (ja) * 2007-11-01 2012-02-01 日本電気株式会社 メモリ制御装置、システム、プログラム、および、方法
CN102272734B (zh) * 2009-01-05 2014-09-10 马维尔国际贸易有限公司 使用非易失性存储器设备用于休眠或挂起的方法和系统
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
JP2012173919A (ja) * 2011-02-21 2012-09-10 Toyota Motor Corp 情報処理装置、車両用電子制御ユニット、データ記憶方法
US8874926B1 (en) * 2012-03-08 2014-10-28 Sandia Corporation Increasing security in inter-chip communication
WO2014042650A1 (en) 2012-09-14 2014-03-20 Intel Corporation Methods and apparatus to protect memory regions during low-power states

Also Published As

Publication number Publication date
KR101662616B1 (ko) 2016-10-05
EP2895935A4 (en) 2016-05-11
WO2014042650A1 (en) 2014-03-20
CN104520872B (zh) 2018-02-23
US20160299721A1 (en) 2016-10-13
EP2895935A1 (en) 2015-07-22
US20150178500A1 (en) 2015-06-25
KR20150036614A (ko) 2015-04-07
US9372993B2 (en) 2016-06-21
US8978135B2 (en) 2015-03-10
CN104520872A (zh) 2015-04-15
US20140082724A1 (en) 2014-03-20
JP2015537274A (ja) 2015-12-24
US9542114B2 (en) 2017-01-10

Similar Documents

Publication Publication Date Title
JP6026666B2 (ja) 方法、装置、プログラム、及びコンピュータ可読記憶媒体
KR101371784B1 (ko) 숨겨진 실행 환경에서 무결성 검증 및 인증 제공
CN109669734B (zh) 用于启动设备的方法和装置
JP6053786B2 (ja) Arm(登録商標)トラストゾーン実施のためのファームウェア基盤トラステッドプラットフォームモジュール(tpm)
KR100823374B1 (ko) 휴면 보호
US8776245B2 (en) Executing trusted applications with reduced trusted computing base
US20130212406A1 (en) Technique for providing secure firmware
US20080163212A1 (en) Paralleled management mode integrity checks
US7822960B2 (en) Platform management processor assisted resume
US20160188874A1 (en) System and method for secure code entry point control
US11347858B2 (en) System and method to inhibit firmware downgrade
US11775649B2 (en) Perform verification check in response to change in page table base register
US20190005245A1 (en) Executing protected code
KR102579861B1 (ko) 차량용 소프트웨어 업데이트 장치 및 그 제어 방법
EP1465038A1 (en) Memory security device for flexible software environment
JP6494143B2 (ja) 装置、方法、集積回路、プログラム、及び有形のコンピュータ可読記憶媒体
JP6316370B2 (ja) 装置、方法、集積回路、プログラム、及び有形のコンピュータ可読記憶媒体
WO2022155973A1 (zh) 一种终端芯片及其度量方法
Cheruvu et al. Base Platform Security Hardware Building Blocks

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160704

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160913

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161012

R150 Certificate of patent or registration of utility model

Ref document number: 6026666

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250