JP5349498B2 - ハードウェアリセット保護のための方法および装置 - Google Patents

ハードウェアリセット保護のための方法および装置 Download PDF

Info

Publication number
JP5349498B2
JP5349498B2 JP2010545882A JP2010545882A JP5349498B2 JP 5349498 B2 JP5349498 B2 JP 5349498B2 JP 2010545882 A JP2010545882 A JP 2010545882A JP 2010545882 A JP2010545882 A JP 2010545882A JP 5349498 B2 JP5349498 B2 JP 5349498B2
Authority
JP
Japan
Prior art keywords
reset
microprocessor
memory
module
secured 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.)
Expired - Fee Related
Application number
JP2010545882A
Other languages
English (en)
Other versions
JP2011512581A (ja
JP2011512581A5 (ja
Inventor
ジョルダノ,フィリップ,ピー.
ビーダーウォルフ,スコット,ディー.
Original Assignee
アナログ・デバイシズ・インコーポレーテッド
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 アナログ・デバイシズ・インコーポレーテッド filed Critical アナログ・デバイシズ・インコーポレーテッド
Publication of JP2011512581A publication Critical patent/JP2011512581A/ja
Publication of JP2011512581A5 publication Critical patent/JP2011512581A5/ja
Application granted granted Critical
Publication of JP5349498B2 publication Critical patent/JP5349498B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Description

背景
1.発明の分野
本発明は、一般的にコンピュータセキュリティーの分野に関する。
2.関連技術の説明
リセットは、コンピュータデバイスを統制の下で初期ステートまたは標準状態にするために、コンピュータで利用される機構である。これは、いくつかの理由で望まれる。例えば、コンピュータデバイスのステート(state)が不明になる時、コンピュータデバイスが無反応になる時、またはプロセッサを事前設定されたステートに戻す好都合な手段である。
リセットの結果、システムレジスタは、事前設定(例えば、デフォルト)された状態にリストアされるであろう。システムクロック(例えば、局部発振器)もまた再初期化されてもよい。
リセットは、例えば、ユーザー入力によりまたは付属されたデバイスを介して、外部からアクティブにされてもよい。コンピュータデバイスは、例えば、それにより外部リセットがアクティブにされる、リセットピンまたはリセットボタンを備えてもよい。
リセットはまた、内部機構により開始されてもよい。コンピュータデバイスは、ソフトウェアを介したリセット命令をサポートしてもよい。システムクラッシュまたはハングした時に、ウォッチドッグタイマーが終了し、リセットをトリガする。
概要
外部リセット命令を受信するリセットポートを備えるマイクロプロセッサは、選択的に有効にされ得るリセットダイバージョン回路(reset diversion circuit)を備えてもよい。マイクロプロセッサは、オープンモード(例えば、デフォルトステート)またはセキュアモードにおいて動作してもよい。セキュアモードにおいて、秘密情報は無防備なストレージ領域に記録されてもよい。マイクロプロセッサがオープンモードで動作する場合、、外部リセット要求がハードウェアリセットを直ちに引き起こすように、リセットダイバージョン回路は無効にされる。マイクロプロセッサがセキュアモードで動作する場合、外部リセット要求をソフトウェアコードの実行をトリガし得る割り込み要求に転換するために、リセットダイバージョン回路は有効にされる。そのソフトウェアコードは、例えば、リセットの前に無防備なストレージ領域を消去するためのセキュアードシステムクリーンアップルーチン(secured system clean-up routine)を実行してもよい。
いくつかの態様では、本発明は、リセットポート、ステートマシン、メモリ、およびリセットダイバージョン回路を含む装置に関する。リセットポートは、リセット信号を受信するように構成される。ステートマシンは、複数のモードのどれかにおいて動作可能であり、複数のモードはセキュアモードを含む。メモリは、セキュアードシステムクリーンアップルーチンを保存するように構成される。リセットダイバージョン回路は、ステートマシンがセキュアモードで動作する場合に有効にされる。リセットダイバージョン回路は、リセット信号がリセットポートで受信される場合に、セキュアードシステムクリーンアップルーチンの実行を初期化するように構成される。
別の態様では、本発明は、マイクロプロセッサの動作方法に関する。方法は、外部リセット命令を受信すること、およびセキュアードシステムクリーンアップルーチンの実行をトリガするために、外部リセット命令をハードウェアリセットのトリガから選択的に転換することを含む。マイクロプロセッサのリソースへのセキュアアクセス(secured access)を要求するセキュアモードにおいてマイクロプロセッサが動作する場合に、転換を有効にすることが選択され、また、オープンモードにおいてマイクロプロセッサが動作する場合に、転換は無効にされることが選択される。
別の態様では、本発明は、リセットポート、メモリ領域、セキュアードシステムクリーンアップモジュール(secured system clean-up module)およびリセットダイバージョン回路を含むマイクロプロセッサに関する。リセットポートはリセット信号を受信するように構成される。メモリ領域は秘密情報を保存するように構成される。セキュアードシステムクリーンアップモジュールは、メモリ領域から秘密情報を消去するように構成される。リセットダイバージョンモジュール(reset diversion module)は、マイクロプロセッサが、マイクロプロセッサのリソースへのアクセスを安全にするセキュアモードである間は、イネーブルステート(enabled state)で動作するように構成される。リセットダイバージョンモジュールは、イネーブルステートにおいて、リセット信号がリセットポートによって受信された時に、セキュアードシステムクリーンアップモジュールの実行をトリガするように構成される。
さらに別の態様では、本発明は、プロセッサ内の情報を保護する方法に関する。方法は、(a)ハードウェアリセットトリガを受信する動作;(b)動作(a)の後に、ソフトウェア割り込みをアクティブにする動作;(c)動作(b)の後に、プロセッサのストレージ領域から情報を消去する動作;および(d)動作(c)の後に、プロセッサのリセットを実行することにより、ハードウェアリセットトリガを行う動作を含む。
本発明およびその態様は、添付の図と併せて以下の詳細な説明を読むことでよりよく理解される。図において、要素は必ずしも縮尺通りに描かれているとは限らない。一般的には、複数の図に現れる同様の要素は、同様な参照記号により示される。図において:
図1は、いくつかの態様に従ったマイクロプロセッサのブロック図である。 図2は、いくつかの態様に従ったマイクロプロセッサのブロック図である。 図3は、セキュアステートマシンの図である。 図4は、いくつかの態様に従ったマイクロプロセッサの機能ブロック図である。 図5Aは、いくつかの態様に従った方法のためのブロック図である。 図5Bは、いくつかの態様に従った方法のためのブロック図である。 図6Aは、いくつかの態様に従ったリセットダイバージョン回路の論理図である。 図6Bは、いくつかの態様に従ったリセットダイバージョン回路の論理図である。 図7Aは、いくつかの態様に従った埋め込みシステムのブロック図である。 図7Bは、いくつかの態様に従ったマイクロプロセッサに接続されるホストのブロック図である。 図7Cは、いくつかの態様に従った埋め込みシステムに接続されるホストのブロック図である。
詳細な説明
マイクロプロセッサの外部リセットは、動作中にいつでも起こり得る、潜在的にコントロール不能なイベントである。リセットは一般的に、マイクロプロセッサを、例えば最小のセキュリティー対策またはセキュリティー対策無しでのオープン動作モードのような、デフォルトステートに戻す。これは、顧客またはユーザーの取扱注意、秘密、および/または財産的情報が、オープンモードにおいて公的にアクセス可能なマイクロプロセッサの領域に保存され得る場合に、セキュリティーリスクを引き起こす。例えば、セキュアモードにおいて動作しているマイクロプロセッサは、外部読み込み要求を拒否することで、レジスタ内のメモリに保存された情報を保護してもよい。しかしながら、リセットを行うことで、マイクロプロセッサは、そのような保護がないかもしれないオープンモードに戻される。悪意のある団体が、例えば、エミュレーションポート(例えば、IEEE1149.1標準“JTAG”ポート)を介して、メモリおよびレジスタへのアクセスを得るかもしれない。そのような状況では、保護されることを目的とする資産が改ざんされるかもしれない。本方法および本装置は、そのような“リセットアタック”を防止するために提供される。
外部リセット命令を受信するリセットポートを備えるマイクロプロセッサは、選択的に有効にされ得るリセットダイバージョン回路を備えてもよい。オープンモードにおいて、リセットダイバージョン回路は、外部リセットがハードウェアリセットのトリガを直ちに要求するように無効にされてもよい。しかしながらセキュアモードにおいては、無防備なストレージ領域に取扱注意情報が記録されているかもしれない場合であっても、リセットダイバージョン回路は、任意の外部リセット要求を、ソフトウェアコードの実行をトリガする割り込みに転換するために有効にされてもよい。ソフトウェアコードは、例えば、リセットの前に無防備なストレージ領域を消去するためのセキュアードシステムクリーンアップルーチンを実行してもよい。
マイクロプロセッサ
図1は、マイクロプロセッサ100の態様を示す。マイクロプロセッサ100は、論理ユニット110、レジスタ120、メモリ130、ハードウェアリセット論理ユニット170、リセットダイバージョン回路180、および入力/出力(I/O)ポート190を備えてもよい。
論理ユニット110(例えば、中央演算処理装置)は、マイクロプロセッサ100内の命令を実行する。論理ユニットにより実行可能な命令は、一連の実行可能な命令を含み得るソフトウェアから生じてもよい。
メモリ130は、実行可能なコードおよび/または任意の種類のデジタルデータを保存するために利用されてもよい。各メモリの場所は、メモリアドレスと関連してもよい。メモリ130は、ワンタイムプログラマブル(OTP)メモリ、スタティックランダムアクセスメモリ(SRAM)、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、または他のメモリ技術またはメモリ技術の組合せを備えてもよい。いくつかの態様では、“リードオンリー”メモリが書き込み可能であってもよく、しかし、書き込み前の部分的または完全な消去を要求してもよい。マイクロプロセッサ100は、メモリ130の一部が再び書き込まれることを防止してもよい。
メモリ130は、プライベートメモリ140領域およびパブリックメモリ150領域を含んでもよい。プライベートメモリ140は、特定の動作状態の下でのみアクセス可能であってもよい。いくつかの態様では、プライベートメモリ140は、OTPメモリの一部である。
メモリ130は、それぞれが情報と関連する値を保存するように適応された、多数のメモリセルを備えてもよい。それぞれ保存される値は、例えば、“0”および“1”として象徴的に表される、二進法の1つを持ち得るビットである。ビットは、アドレッシング、読み込み、および書き込みのために、グループ(例えばバイト)に配置されてもよい。メモリ130は、データを保存するために適切な如何なるやり方で構成配列されたものでもよい。
メモリ130は、実行されるとオープンモードにおいてアクセス可能なマイクロプロセッサ100の領域から秘密情報を削除する、セキュアードシステムクリーンアップルーチン160を保存してもよい。いくつかの態様では、セキュアードシステムクリーンアップルーチン160は、図1に示されるように、パブリックメモリ150に保存されてもよく、しかしながら、セキュアードシステムクリーンアップルーチン160は、任意の適切なメモリ領域(例えば、プライベートメモリ140領域)に保存されてもよい。セキュアードシステムクリーンアップルーチン160は、論理ユニット110により実行可能なソフトウェア命令を含んでもよい。これらの命令は、実行されると、メモリ130の一部を消去する;レジスタ120の一部をクリアする;特定のバッファをクリアし、メモリを抹消し、メモリへポインタする;および他のタスクを実行してもよい。メモリ130の一部を消去することで、秘密または財産的情報を除去してもよい。消去は、例えば、消去される各メモリセルに、同じ値(例えば、“0”)、ランダムな値、事前設定された値、秘密または財産的の特性がないデータを書き込むことにより、パージング(purging)、または任意の他の適切な消去方法、または任意の組合せ、または消去方法の繰り返すことにより達成されてもよい。
いくつかの態様では、セキュアードシステムクリーンアップルーチン160は、レジスタまたはメモリの場所を参照してもよく、前記メモリの場所は、どの部分が、またはメモリ130のどの部分が、またはマイクロプロセッサ100の他の領域が、消去されるかを決定する。
いくつかの態様では、セキュアードシステムクリーンアップルーチン160は、ソフトウェア命令の変更を防止するためにROMに保存される。
セキュアードシステムクリーンアップルーチン160は、プライベートメモリ140の読み込みアクセスからのデータを保持するために利用されるレジスタ(例えば、レジスタ120の間で)のワイプ(wipe)を実行してもよい(これらのレジスタは、シークレットキーまたはユーザーコード実行でできた他の取扱注意データを含むことができる)。
セキュアードシステムクリーンアップルーチンは、セキュアードシステムクリーンアップルーチンの完了時に、プロセッサをリセットするためのウォッチドッグリセットを実行してもよい。
レジスタ120は、ビット情報を保存してもよい。ビットは、例えば、キャッシュの役目を果たすか、またはマイクロプロセッサ100の動作ステートを示してもよい。レジスタ120は、それぞれが1つ以上のビットを含む、任意の数の個別レジスタに分けられていてもよい。いくつかの態様では、レジスタ120は、論理ユニット110により実行される命令のメモリアドレスを含む、プログラムカウンター(PC)122レジスタを含む。いくつかの態様では、プログラムカウンター122は、論理ユニット110により実行される現在の命令のアドレスを保存する。幾つかの態様においては、プログラムカウンタ122は次の命令のアドレスを論理ユニット110による実行のために保存する。
マイクロプロセッサのI/Oポート190は、情報の転送のための入力および出力の機能性を提供する。各ポートは、例えば、ピン、ジャック、ボタン、スイッチ、ダイヤル、レバー、有線または無線レシーバー、または任意の他のインターフェース技術として実現されてもよい。I/Oポート190は、リセットポート191、ノンマスカブル割り込み(NMI)ポート193、およびデバッグポート195(例えば、インサーキットエミュレータ(ICE)ポート)を含んでもよい。リセットポート191は、マイクロプロセッサ100をリセットするための外部トリガを受信するために利用されてもよい。
いくつかの態様では、NMIポート193は、外部的に有効化させるノンマスカブル割り込みのために、マイクロプロセッサ100に提供される。割り込みは、プロセッサ100による注目(処理)の必要性を示すハードウェア(例えばリセットポート191)を介して受信される非同期の信号であってもよい。割り込みはまた、マイクロプロセッサ100による実行における変更の必要性を示すソフトウェアイベントから生じてもよい。
割り込みは、例えば、割り込みに関連する割り込みマスクレジスタ(IMR)内のビットがセットされる場合に、無視(マスク)されてもよい。いくつかの割り込みは、本質的にノンマスカブルであってよい。NMIポート193は、1つ以上の割り込みのためのマスキングを有効および/または無効にするための外部手段を提供してもよい。ノンマスカブル割り込みは、論理ユニット110による即時の実行のために優先されてもよい。
リセットポート191は、マイクロプロセッサ100をリセットするための外部トリガを提供するために利用されてもよい。リセット信号は、非同期的にリセットポート191で受信されてもよい。
リセットポート191は、ハードウェアリセット170に動作可能に接続されてもよい。リセットポート191のリセット信号は、ハードウェアリセット170により受信されてもよい。ハードウェアリセット170は、マイクロプロセッサ170のためのリセット機能性を提供する。いくつかの態様では、ハードウェアリセット170は、マイクロプロセッサ100を統制の下で初期ステートまたは標準状態に戻すためのリセット信号によりアクティブにされ得るマイクロプロセッサ100内に電気回路として実現されてもよい。
いくつかの態様では、リセットポート191のリセット信号は、リセットダイバージョン回路180により遮断され、転換されてもよい。リセットダイバージョン回路180は、リセット信号が、ハードウェアリセット170をトリガすることを防止してもよい。リセットダイバージョン回路180は、リセット信号をノンマスカブル割り込み(NMI)に転換してもよい。プロセッサがセキュアモードで動作する間にハードウェアリセットをNMIに転換することで、セキュアードシステムクリーンアップルーチン160を最初に実施するために、ハードウェアリセットの実行が制御され遅延されてもよい。ノンマスカブル割り込みは、論理ユニット110により、セキュアードシステムクリーンアップルーチン160の実行をトリガしてもよい。リセットダイバージョン回路180は、選択的に有効および/または無効にされてもよい。いくつかの態様では、リセットダイバージョン180モジュールは、レジスタ120の1つ以上のビットに基づいて有効/無効にされる。
いくつかの態様では、デバッグポート195は、マイクロプロセッサ100への“JTAG”接続をサポートする。“JTAG”は、標準を定義した委員会であるJoint Test Action Groupの頭文字であり、正式には、IEEE 1149.1が与えられた、Standard Test Access Port and Boundary-Scan Architectureとして知られている。“パブリック”JTAG命令(例えば、バウンダリスキャンおよびバイパスモード)のサポートに加えて、または、マイクロプロセッサは、“プライベート”JTAG命令をサポートしてもよい。プライベート命令は、例えば、特定のマイクロプロセッサの製造業者により定義されてもよい。デバッグポート195を通して、利用者はマイクロプロセッサ100にパブリックおよび/またはプライベートのJTAG命令を送信してもよい。いくつかの態様では、JTAGエミュレーションがサポートされてもよい。エミュレーション機能は、プロセッサの制御、RUN、STOP、シングル−ステップ、および内部レジスタの検査/変更、およびリアルタイムブレークポイントの実行を含む。
図2は、マイクロプロセッサ200のブロック図を示す。マイクロプロセッサ200はまた、上記マイクロプロセッサ100に関連して示されるように、論理ユニット110、レジスタ120、プライベートメモリ140領域およびパブリックメモリ150領域を備えるメモリ130、ハードウェアリセット170、リセットダイバージョン回路180、およびI/Oポート190を含む。
マイクロプロセッサ200は、パブリックメモリ150がROM領域250を備える態様を明確に示す。“デフォルト”のセキュアードシステムクリーンアップルーチン160は、ROM250に保存される。いくつかの態様では、カスタムセキュアードシステムクリーンアップルーチン210はパブリックメモリ150に保存されてもよいが、いくつかの態様では、カスタムセキュアードシステムクリーンアップルーチン210はプライベートメモリ140または任意の他の適切なメモリの場所に保存されてもよい。
リセットダイバージョン回路180は、ディスエーブルステート230またはイネーブルステート240で動作可能である。ディスエーブルステート230において、リセットポート190で受信されたリセット信号は、ハードウェアリセット170に渡されてもよい。また一方で、イネーブルステート240においては、リセット信号がハードウェアリセット170からノンマスカブル割り込み(NMI)に転換されてもよい。NMI220は、マイクロプロセッサ200による適切なセキュアードシステムクリーンアップルーチンの実行をトリガしてもよい。
NMI220は、イベントベクターテーブル260に保存されるイベントアドレス270の検索を最初にトリガしてもよい。イベントベクターテーブル260は、任意の適切な場所(例えば、レジスタ120、メモリ130、プライベートメモリ140、図示のようなパブリックメモリ150)に保存されてもよい。イベントアドレス270は、セキュアードシステムクリーンアップルーチン160、またはカスタムセキュアードシステムクリーンアップルーチン210の場所のメモリアドレスを備えてもよい。プログラムカウンター122は、その時イベントアドレス270と共に更新されてもよい。論理ユニット110は、対応するセキュアードシステムクリーンアップルーチンを実行してもよい。いくつかの態様では、ハードウェアリセット170は、実行されたセキュアードシステムクリーンアップルーチンの最後にトリガされる。いくつかの態様では、トリガは、ウォッチドッグタイマーの終了に起因する。
セキュアステートマシン300
マイクロプロセッサは、セキュリティーおよび順応性を提供するために、いくつかの異なる動作モードにおいて動作可能であってよい。マイクロプロセッサは、セキュリティー機能が不必要で、秘密情報へのアクセスが不必要である場合に、例えばオープンモード動作で動作してもよい。個人秘密情報は、オープンモードにおいてアクセス不可能であり得るプライベートメモリ140に保存されてもよい。
秘密情報が、処理される、またはアクセスされる場合に、マイクロプロセッサは、セキュアモード動作に入ってもよい。セキュアモードにおいて、プライベートメモリ140は、アクセス可能であってもよく、そして、個人情報はレジスタ120および/またはメモリ130に書き込まれてもよい。
セキュアモードへのアクセスは認証されたユーザーに限定されてもよい。セキュアモードで実行されるコードは、ユーザーが要求された動作の実行を認証されていることを保証するために、実行の前に認証されてもよい。認証は、セキュアエントリーモードにおいて実行されてもよい。例えば、ユーザーは、セキュアモードにおける実行のためにデジタル的に署名されたコードを提供してもよい。コードを実行するための要求は、デジタル的に署名されたコードの認証のために、マイクロプロセッサをトリガしてセキュアモードにスイッチさせてもよい。認証を実行するために、マイクロプロセッサは、ROMに保存された、認証されたユーザーの1つ以上のパブリックキーを備えてもよい。パブリックキーは、デジタル的に署名されたコードを認証するために利用されてもよい。デジタル的に署名されたコードが、パブリックキーの1つによって認証される場合、マイクロプロセッサはセキュアモードに入り、認証されたコードを実行してもよい。認証が失敗した場合、プロセッサはオープンモード動作に戻ってもよい。
いくつかの態様では、マイクロプロセッサは、オープンモード動作とセキュアモード動作の間を遷移するために、セキュアステートマシン300を実装してもよい。いくつかの態様に従ったセキュアステートマシン300のステート図が、図3に示される。セキュアステートマシン300は、いくつかの動作モード、および動作モード間の遷移経路を含んでもよい。各動作モードは、異なるアクセス特権およびセキュリティー機能に関連付けられてもよく、一方で、各遷移は異なるモード間の関係を定義してもよい。
セキュアステートマシン300は、レジスタ120、メモリ130、または任意の他の適切な方法を介して、マイクロプロセッサ内に実装されてもよい。図3に示される態様例では、セキュアステートマシン300は、オープンモード310、セキュアエントリーモード320、およびセキュアモード330で動作してもよい。
オープンモード310は、プライベートメモリ140への制限されたアクセスを除いては制限が掛けられない、プロセッサのデフォルト動作状態である。いくつかの態様では、読み込みおよび/または書き込みアクセスもまた、レジスタ120内の特定のレジスタビットに対して防止されてもよい。オープンモード310は、マイクロプロセッサの起動時およびリセット後(経路301)のデフォルトステートである。いくつかの態様では、デバッグ機能(例えば、JTAGエミュレーション)がオープンモード310において有効にされる。
オープンモード310で動作するセキュアステートマシン300は、セキュアエントリーモード320に遷移(遷移302を介して)してもよい。
オープンモード310からセキュアエントリーモード320への遷移は、例えば、実行されたコード、ユーザー入力、または任意の他の適切な手段によりトリガされてもよい。いくつかの態様では、遷移は、マイクロプロセッサの実行がパブリックメモリ150内の認証ソフトウェアへ向けられる場合にトリガされてもよい。いくつかの態様では、マイクロプロセッサの実行は、プログラムカウンター122を認証ソフトウェアの最初のアドレスに誘導することにより、認証ソフトウェアへ向けられてもよい。いくつかの態様では、ノンマスカブル割り込みがアクティブであることが要求される。セキュアエントリーモード320において、認証ソフトウェアは論理ユニット110により実行されてもよい。認証ソフトウェアは、セキュアステートマシンが、セキュアモード320への遷移304に従うか、またはオープンモード310へ戻る遷移303に従うかを決定してもよい。いくつかの態様では、認証ソフトウェアは、この決定を行うセキュアエントリーサービスルーチン(SESR)を含んでもよい。
SESRは、ユーザーの認証(例えば、ユーザーがセキュアモードへのアクセスを許可されていることを確認する)、ユーザーコードの認証(例えば、セキュアモードへのアクセスが許可されたユーザーにより提供される、セキュアモードで実行されるコードを確認する)、および/または、他の任意のセキュリティー工程または組合せまたは複数のセキュリティー工程であってもよい。いくつかの態様では、公開鍵暗号技術(asymmetric cryptography)の工程が実行される。例えば、メモリ130に保存されたデジタル署名およびメッセージに対して、デジタル署名認証が実行されてもよい。パブリックキーもまた、この工程を実行するためにメモリ130に保存されてもよい。
セキュアエントリーモード320において、プライベートメモリ140は、アクセス不可能であってもよい。いくつかの態様では、プログラムカウンター122は、それが認証ソフトウェアへ割り当てられたアドレス領域の範囲内にとどまっていることを保証するためにモニターされてもよい。いくつかの態様では、DMAアクセスはメモリ130の特定の領域に対して許可され、JTAGエミュレーションは無効にされる。
認証が失敗した場合、セキュアエントリーモード320からオープンモード310への遷移303が起こってもよい。認証は、例えば、ユーザー認証ができない、ユーザーコード認証ができない、メッセージおよびデジタル署名の組がローカルパブリックキーと合わない、エラーが観測された、または、割り込み処理がされなければならない場合に、失敗するようにしてもよい。
セキュアステートマシン300は、認証が成功する時にだけ、セキュアエントリーモード320からセキュアモード330へ遷移してもよい。認証が成功した場合、セキュアモード330に入る前に、遷移304を介して追加のステップを行ってもよい。いくつかの態様では、リセットダイバージョン回路180が有効にされる(図2)。イベントベクターテーブル260内のイベントアドレス270は更新されてもよい。いくつかの態様では、イベントアドレス270は、セキュアードシステムクリーンアップルーチン160のデフォルトのアドレスに更新されてもよい。
セキュアモード330は、マイクロプロセッサのセキュアな動作ステートである。JTAGエミュレーションは、セキュアモードに入った時のデフォルト設定により無効にされてもよい。いくつかの態様では、認証コードは、プライベートメモリ140、パブリックメモリ150、およびレジスタ120を含む、プロセッサのリソースへの無制限アクセスが許可される。いくつかの態様では、セキュアモード330では、シークレットキーのようなセキュアデータが保存されるプライベートメモリ140へのアクセス(読み込みおよび書き込み)を許可する。プライベートメモリ140は、秘密、許可された秘密情報、許可されたユーザー、および/またはアクセスしてもよいコードを保存するために利用されてもよい。
セキュアステートマシン300は、セキュアモード330からオープンモード310へ復帰するように遷移305してもよい。いくつかの態様では、セキュアモード330からセキュアエントリーモード320への直接経路が存在しないようにしてもよい。いくつかの態様では、セキュアモードからオープンモードへの遷移305に先立って、セキュアードシステムクリーンアップルーチンの実行がおこなわれる。セキュアードシステムクリーンアップルーチンは、認証コードにより呼び出されてもよい。セキュアモードから抜ける前に、セキュアードシステムクリーンアップルーチンを実行することは、メモリおよびレジスタ内の取扱注意のコード/データが、オープンモード310において可視可能およびアクセス可能になることを防止するであろう。
認証コードは、カスタムセキュアードシステムクリーンアップルーチンを含んでもよい。いくつかの態様では、認証コードは、カスタムセキュアードシステムクリーンアップルーチン210(図2)の場所を指定するために、イベントベクターテーブル260内のイベントレジスタ270を更新してもよい。ユーザーは、例えば、デフォルトのセキュアードシステムクリーンアップルーチン160の代わりに、カスタムルーチンに頼ってもよい。
マイクロプロセッサ400
図4は、いくつかの態様に従ったマイクロプロセッサ400の機能ブロック図を提供する。機能モジュールは、ハードウェア、ソフトウェア、または任意の適切な組み合わせで実現されてもよい。マイクロプロセッサ400は、論理モジュール401、ハードウェアリセットモジュール402、リセットダイバージョンモジュール403、イベントベクターテーブルモジュール404、ステートモジュール410、実行モジュール420、セキュアードシステムクリーンアップモジュール430、メモリストレージモジュール440、セキュアアクセスモジュール460およびI/Oポート190を備える。
論理モジュール401は、実行モジュール420により指定された命令を実行するために提供される。論理モジュールおよび実行モジュール420は、それぞれ論理ユニット110およびプログラムカウンター122として具現化されてもよい(例えば、図1のマイクロプロセッサ100として)。
ステートモジュール410は、動作モードを決定し、モードに関連するルールを行使してもよい。例えば、リセットダイバージョンモジュール403は、特定のモードで有効にされ、他では無効にされる。いくつかの態様では、ステートモジュール410は、オープンモード310、セキュアエントリーモード320、またはセキュアモード330で動作してもよい。いくつかの態様では、ステートモジュール410は、セキュアステートマシン300の動作に従った、動作状態の間を遷移してもよい。
セキュアアクセスモジュール460は、ユーザーまたはコードの認証のような、セキュリティールーチンを実行してもよい。いくつかの態様では、セキュアアクセスモジュール460は、セキュアモジュール410がセキュアモード330に遷移する前のセキュアエントリーモード320において、認証を提供してもよい。
リセットダイバージョンモジュール403が無効にされる場合、リセットポート191により受信されるリセット信号は、ハードウェアリセットモジュール402のマイクロプロセッサ400のリセットの実行をトリガしてもよい。リセットダイバージョンモジュール403が有効にされる場合、リセットポート191により受信されるリセット信号は、イベントアドレスのイベントベクターモジュール404から実行モジュール420へのロードをトリガしてもよい。リセットダイバージョンモジュール403は、例えば、それがセキュアエントリーモード320からセキュアモード330へ遷移するように決定される場合に有効にされてもよい。セキュアクセスモジュール460は、認証が成功した時にリセットダイバージョンモジュール403を有効にしてもよい。
イベントアドレスが、実行モジュール420からイベントベクターテーブルモジュール404(例えば、リセットダイバージョンの結果として)にロードされた場合、論理モジュール401はイベントアドレスにより指定されたモジュールを実行してもよい。いくつかの態様では、イベントアドレスは、セキュアードシステムクリーンアップモジュール430を参照する。セキュアードシステムクリーンアップモジュール430は、秘密情報を含み得るメモリストレージモジュール440の部分、およびマイクロプロセッサ400の任意の他の部分を消去してもよい。いくつかの態様では、ハードウェアリセットモジュール402は、セキュアードシステムクリーンアップモジュール430によるルーチンの完了後にトリガされてもよい。
リセット保護方法500および550
マイクロプロセッサは、任意の動作ステート(例えば、セキュアモード330)の間に、ハードウェアリセットプロテクションを実行してもよい。リセットプロテクション機能は、リセットポート191の悪意のあるアサーションが、メモリ140および/またはレジスタ120内の取扱注意コードまたはデータを暴露することを防ぐ。
図5Aに示される方法500は、外部リセット命令を処理するための方法を提供する。方法500は、例えば、マイクロプロセッサにより実行されてもよい。
ステップ501の最初には、外部リセット命令が受信される。例えば、リセット命令は、リセットポート191(図1、2および4)により受信されてもよい。
ステップ502では、リセットダイバージョンが有効または無効にされているかどうかを決定する。リセットダイバージョンが無効にされている場合、プロセスフローは、ステップ503でのハードウェアリセットの実行を継続する。ハードウェアリセットが一度実行されると、マイクロプロセッサをデフォルトのステートに戻す(ステップ504)。例えば、セキュアステートマシン300が実装されているマイクロプロセッサの態様では、リセット後にオープンモード310に入る。
ステップ502において、リセットダイバージョンを有効にするとと決定された場合、プロセスフローはステップ505に続く。ステップ505では、イベントアドレス270は、イベントベクターテーブル260からプログラムカウンター122(図2)にロードされるであろう。イベントアドレスは、セキュアードシステムクリーンアップルーチン(例えば、デフォルトセキュアードシステムクリーンアップルーチン160またはカスタムセキュアードシステムクリーンアップルーチン210)を参照してもよい。
ステップ506では、セキュアードシステムクリーンアップルーチンが実行される。セキュアードシステムクリーンアップルーチンは、マイクロプロセッサから秘密情報を消去するであろう。セキュアードシステムクリーンアップルーチンは任意の望ましい機能を提供してもよい。
いくつかの態様では、セキュアードシステムクリーンアップルーチンの後に、ハードウェアリセット(ステップ503)が実行される。ハードウェアリセットは、マイクロプロセッサをデフォルトステート(ステップ504)に戻してもよい。いくつかの態様では、セキュアードシステムクリーンアップルーチン内の明示的な命令が、ハードウェアリセットの実行をトリガするために要求されてもよい(例えば、セキュアードシステムクリーンアップルーチン内の最後の命令)。いくつかの他の態様では、ステップ503は、ルーチン内の明示的な命令の要求なしに、セキュアードシステムクリーンアップルーチンの完了後に実行される。例えば、ウォッチドッグタイムが終了することを単に許可し、ハードウェアリセットの実行を自動的にトリガしてもよい。
図5Bに示される方法550は、マイクロプロセッサの動作方法を提供する。
ステップ551の最初には、セキュアモード動作に入るための決定が行われる。決定は、ユーザーまたはセキュアモードで実行されるコードの認証の後に行われてもよい。いくつかの態様では、認証はSESRにより実行されてもよい。いくつかの態様では、セキュアモード330へ入るための決定は、セキュアステートマシン300に従ったセキュアエントリーモード320において行われてもよい。
ステップ552では、イベントアドレスはイベントベクターテーブルにおいて更新される。いくつかの態様では、SESRは、認証の成功後にイベントアドレスと共にイベントベクターテーブルを更新するための命令を提供してもよい。イベントアドレスは、セキュアードシステムクリーンアップルーチンを参照してもよい。いくつかの態様では、セキュアードシステムクリーンアップルーチンはROMに保存されてもよい。
ステップ553では、リセットダイバージョンが有効にされる。リセットダイバージョンは、リセット信号を、ハードウェアリセットのトリガからノンマスカブル割り込みへ転換する。リセットダイバージョンは、入力信号をリセットダイバージョン回路に適応させることにより有効にされてもよい。
ステップ554では、セキュアモードに入る。セキュアモードでは、メモリまたはレジスタに保存された個人情報はアクセス可能であり得る。例えば、プライベートメモリ140は、読み込み、書き込み、および論理ユニット(図1)による実行のためにアクセス可能であろう。セキュアモードは、セキュアステートマシン300(図3)のセキュアモード330であってもよい。いくつかの態様では、認証コードは、セキュア動作モードにおいて実行されてもよい。いくつかの態様では、認証コードは、イベントベクターテーブルのイベントアドレスを更新するための命令を備えていてもよい(ステップ552)。いくつかの態様では、イベントアドレスは、カスタムセキュアードシステムクリーンアップルーチンを参照してもよい。カスタムセキュアードシステムクリーンアップルーチンは、認証コードの一部であってもよい。
ステップ555では、外部リセット命令は、セキュアモードの間に受信される。いくつかの態様では、外部リセット命令は、リセットポート191で受信されてもよい。外部リセット命令は、非同期的に受信されてもよい。
ステップ556では、イベントアドレスは、イベントベクターテーブルからプログラムカウンターレジスタにロードされる。いくつかの態様では、イベントアドレスのロードは、有効にされたリセットダイバージョン回路による、外部リセット命令の遮断によりトリガされてもよい。
ステップ557では、セキュアードシステムクリーンアップルーチンが実行される。いくつかの態様では、セキュアードシステムクリーンアップルーチンは、イベントアドレスに対応するメモリの場所に保存される。
ステップ558では、ハードウェアリセットが実行される。いくつかの態様では、これはセキュアードシステムクリーンアップルーチン内のソフトウェア命令の実行に応じる。
ステップ559では、プロセッサはオープンモードに入る。これは、ハードウェアリセットによりトリガされるブートルーチンの一部である。いくつかの態様では、オープンモードは、セキュアステートマシン300(図3)のオープンモード310であってもよい。
リセットダイバージョン回路180
リセットダイバージョン回路180(例えば、図1)は、適切な方法で実現されてもよい。いくつかの態様では、リセットダイバージョン回路は、論理回路を利用して実現される。図6Aおよび6Bは、論理回路が利用されたリセットダイバージョン回路180の態様例を提供する。
具体的には、図6Aは、入力信号“RESET”および“DIV_RESET”を受信し、“HW_RS_TRIG”および“SW_RS_TRIG”を出力する、リセットダイバージョン回路180Aの態様を示す。
RESETは、入力ピン601で受信されるリセット要求信号である。入力ピン601は、例えば、リセットポート191(図1)に動作可能に接続されてもよい。リセット要求信号をアサートすることで、入力ピン602のDIV_RESETのステートに基づいてハードウェアリセットまたはソフトウェアリセットをトリガしてもよい。
リセット要求信号がソフトウェアに転換される場合、DIV_RESETがアサートされる。DIV_RESETがアサートされる場合、リセットダイバージョン回路180Aが有効にされたと称される。RESETおよびDIV_RESETの両方がアサートされる場合、SW_RS_TRIGが出力ピン604にアサートされ、ソフトウェアリセットがトリガされるであろう。例えば、アサートされたSW_RS_TRIGは、ノンマスカブル割り込みを生じるであろう。ノンマスカブル割り込みは、セキュアードシステムクリーンアップルーチンのためのイベントアドレスのプログラムカウンターレジスタへのロードをトリガしてもよい。
DIV_RESETがアサートされない場合、リセット信号は、ハードウェアリセットにパスされ、リセットダイバージョン回路180Aは無効にされると考えられる。DIV_RESETがアサートされない間にRESETがアサートされる場合、HW_RS_TRIGが出力ピン603にアサートされ、ハードウェアリセットがトリガされてもよい。
この望まれている動作は、例えば、論理“AND”ゲート605および606、およびインバーター607を備える、図6Aに示される論理図を実装することにより達成できるであろう。論理図は、すべての入力および出力がアクティブハイであると仮定する。リセットダイバージョン回路180Aは、任意の信号伝達状態に対応するために簡単に変更されてもよい。
表1は、リセットダイバージョン回路180Aの動作を要約する論理テーブルである。符号“0”は、アサートなしまたは論理ローステートを示し、一方で、符号“1”は、アサートありまたは論理ハイステートを示す。
図6Bは、リセットダイバージョン回路180Bの態様を示し、それは入力信号“RESETB”(ピン611)、“RST_DBL”(ピン612)、および“NMIB”(ピン613)を受信し、“PA_RSET”(ピン614)、および“PA_NMI”(ピン615)を出力する。表2は、リセットダイバージョン回路180Bの動作を要約する論理テーブルである。
RESETB信号は、ピン611で受信されるアクティブロー(“0”)リセット信号である。ピン611は、リセットポート191(例えば、図1)に動作可能に接続されてもよい。RST_DBL信号は、リセットダイバージョン回路が無効(“0”)にされるか、有効(“1”)にされるかを示す、アクティブロー信号である。NMIB信号は、ノンマスカブル割り込みが有効であることを示す、ピン613のアクティブロー信号である。PA_RESETは、ハードウェアリセットをトリガするアクティブハイの信号である。PA_NMIは、アクティブハイで、ノンマスカブル割り込みが有効である場合を示す。RST_DBLが、アクティブではない(例えば、表2の“0”)場合、リセットおよびNMI機能を通常持つ。RST_DBLがアクティブの場合、PA_RESETは転換されない。
さらなる態様
発明の少なくとも1つの実施態様が示されたが、様々な修正、変更、および改良が、当業者により容易に行われてもよい。
マイクロプロセッサは、システムオンチップ、コンピュータオンチップ、マイクロコントローラ、または任意の適切なIC技術またはそれらの組合せとして具現化されてもよい。いくつかの態様では、マイクロプロセッサは、アナログデバイセズのBlackfin processor(登録商標)である。
マイクロプロセッサは、任意のハードウェアおよび/またはソフトウェアデバッグツールと互換性があってもよい。デバッグおよび/またはエミュレーション命令は、例えば、デバッグポート195を介して受信してもよい。マイクロプロセッサは、IEEE 1149.1 J-TAG 標準と互換性があってもよい。いくつかの態様では、JTAG命令は、デバッグポート195を介して受信される。
いくつかの態様では、プライベートメモリ領域のサイズ(例えば、バイト数)および/または場所は、選択可能である。
いくつかの態様では、マイクロプロセッサは、論理ユニット110を介してメモリを呼び出す必要性をなくすためのダイレクトメモリアクセス(DMA)をサポートしてもよい。いくつかの態様では、DMAは、メモリ130の一部のために選択的に無効にされてもよい。メモリ130のどの部分がDMA有効/無効にされるかは、例えば、レジスタ120の1つにより制御されてもよい。
マイクロプロセッサは、図7Aに示される組み込みシステム700の一部であってよい。組み込みシステムは、マクロプロセッサの出力を受信するためおよび/またはマイクロプロセッサに入力を提供するための、マイクロプロセッサ710に動作可能に接続される追加のハードウェアを含んでもよい。組み込みシステム700は、デバッグ接続721、フラッシュメモリ722、電源制御装置723、および局部発振器724のような、典型的な要素と共にブロック図として示される。これらの要素は純粋に典型的であり、態様には示されたり、示されなかったりし得る。マイクロプロセッサ710は、組み込みシステム700を形成するための任意の適切な要素と組み合わせて利用されてもよい。
接続731は、図7Bに示されるように、1つ以上のI/Oポート190(例えば、リセットポート191、デバッグポート195)を介して、マイクロプロセッサ710が、ホスト750と通信するために設けられてもよい。任意の適切なデバイスが、ホスト700として実行してもよい。例えば、ホスト700は、パーソナルコンピュータ、ラップトップコンピュータ、PDA、またはフラッシュメモリデバイスであってよい。
接続732は、図7Cに示されるように、任意の適切なインターフェース740を介して、マイクロプロセッサ710を含む組み込みシステムと、ホスト750の間に設けられてもよい。
接続731および732は、適切な有線および無線技術を含む、任意の適切な技術を利用して実現されてもよい。
いくつかの態様では、レジスタ120は、SECURE_SYSSWTレジスタを含む。SECURE_SYSSWTレジスタは、マップアドレス0xFFC04320を備える32ビットレジスタであってもよい。表3は、いくつかの態様に従ったレジスタ内の各ビットの機能の要約を提供する。
いくつかの態様では、レジスタ120は、SECURE_CONTROLレジスタを含む。SECURE_CONTROLレジスタは、マップアドレス0xFFC04324のメモリを備える16ビットレジスタであってよい。テーブル4は、いくつかの態様に従ったレジスタ内の各ビットの機能の要約を提供する。
いくつかの態様では、レジスタ120は、SECURE_STATUSレジスタを含む。SECURE_STATUSレジスタは、アドレスマップ0xFFC04328のメモリを備える16ビットレジスタであってよい。テーブル5は、いくつかの態様にしたがって、レジスタ内の各ビットの機能の要約を提供する
当業者により容易に行われる、変更、修正、および改良は、本発明の範囲内で行われる。したがって、先述の詳細は例に過ぎず、制限するものではない。本発明は、以下のクレームおよびそれと同等のものに定義されているものにのみ限定される。

Claims (23)

  1. 装置であって:
    リセット信号を受信するリセットポート;
    セキュアモードを含む複数のモードのいずれにおいても動作可能なステートマシン;
    セキュアードシステムクリーンアップルーチンを保存するメモリ;および
    ステートマシンがセキュアモードで動作しようとする場合に有効になるリセットダイバージョン回路を含み、リセットダイバージョン回路が、リセットポートでリセット信号が受信された場合にセキュアードシステムクリーンアップルーチンの実行を初期化するように構成される、前記装置
  2. セキュアードシステムクリーンアップルーチンが実行されると、メモリの、秘密情報を保存している部分を消去する、請求項1に記載の装置。
  3. セキュアードシステムクリーンアップルーチンが実行されると、秘密情報を保存するレジスタをクリアする、請求項1に記載の装置。
  4. セキュアードシステムクリーンアップルーチンが実行されると、秘密情報に関連するいずれのバッファ、スクラッチメモリ、またはメモリを示すポインタークリアする、請求項1に記載の装置。
  5. ステートマシンがセキュアモードに入る時に、リセットダイバージョン回路を有効にするセキュアアクセスモジュールをさらに含む、請求項1に記載の装置。
  6. 装置をリセットするハードウェアリセットをさらに含み、ハードウェアリセットは、リセットポートでリセット信号が受信され、リセットダイバージョン回路が無効になる時にトリガされる、請求項5に記載の装置。
  7. 複数のモードがさらにオープンモードを含み、
    オープンモードにおいて装置リセット時にステートマシンが初期化され、
    セキュアードシステムクリーンアップルーチンが完了する時にハードウェアリセットがトリガされる、請求項6に記載の装置。
  8. セキュアアクセスモジュールが、メモリの読み込み専用部分に保存され、セキュアエントリーサービスルーチンを含む、請求項5に記載の装置。
  9. リセットダイバージョン回路によるセキュアードシステムクリーンアップルーチンの実行の初期化が、有効にされた場合は、ノンマスカブルである、請求項1に記載の装置。
  10. 装置がさらに:
    メモリアドレスを保存するためのプログラムカウンターレジスタ;
    少なくとも一部がメモリアドレスで示される位置にあるメモリに保存されるルーチンを実行する論理ユニット;および
    イベントアドレスを保存するイベントベクターテーブルを含み、イベントアドレスは、セキュアードシステムクリーンアップルーチンのメモリ内の位置を示し、
    リセットダイバージョン回路は、プログラムカウンターレジスタに保存されたメモリアドレスを、イベントベクターテーブルに保存されたイベントアドレスで更新することにより、セキュアードシステムクリーンアップルーチンの実行を初期化する、請求項1に記載の装置。
  11. マイクロプロセッサの動作方法であって、
    外部リセット命令を受信すること、および
    外部リセット命令を、ハードウェアリセットのトリガから、セキュアードシステムクリーンアップルーチンの実行をトリガすることへと、選択的に転換することを含み、
    転換は、マイクロプロセッサのリソースへのセキュアアクセスを要求するセキュアモードにおいてマイクロプロセッサが動作する場合に有効となることが選択され、また、転換は、オープンモードにおいてマイクロプロセッサが動作する場合に無効となることが選択されるものである、前記動作方法。
  12. 転換が有効となることが選択された場合に、転換がノンマスカブルである、請求項11に記載の方法。
  13. セキュアードシステムクリーンアップルーチンのメモリ位置を参照するアドレスを保存することをさらに含む、請求項11に記載の方法。
  14. セキュアードシステムクリーンアップルーチンの実行をトリガすることが、転換が有効となることが選択された場合に、セキュアードシステムクリーンアップルーチンのアドレスをプログラムカウンターレジスタにロードすることを含む、、請求項13に記載の方法。
  15. マイクロプロセッサであって:
    リセット信号を受信するリセットポート;
    秘密情報を保存するメモリ領域;
    メモリ領域から秘密情報を消去するセキュアードシステムクリーンアップモジュール;および
    リセットダイバージョンモジュールを含み、前記リセットダイバージョンモジュールは、マイクロプロセッサが、マイクロプロセッサのリソースへのアクセスを保証するセキュアモードである間に、イネーブルステートで動作するように構成され、リセットダイバージョンモジュールは、イネーブルステートにおいて、リセット信号がリセットポートによって受信される場合に、セキュアードシステムクリーンアップモジュールの実行をトリガするように構成される、前記マイクロプロセッサ。
  16. マイクロプロセッサをリセットするハードウェアリセットモジュールをさらに含み、
    リセットダイバージョンモジュールがさらに、マイクロプロセッサがオープンモードの間にディスエーブルステートで動作するように構成され、ディスエーブルステートに構成されたリセットダイバージョンモジュールが、リセット信号を、リセットポートにより受信される場合に許可し、ハードウェアリセットモジュールがマイクロプロセッサのリセットをトリガするように構成される、請求項15に記載のマイクロプロセッサ。
  17. ハードウェアリセットモジュールがハードウェアリセット回路であり、リセットダイバージョンモジュールがリセットダイバージョン回路である、請求項15に記載のマイクロプロセッサ。
  18. リセットダイバージョンモジュールが、セキュアードシステムクリーンアップモジュールの実行をトリガするノンマスカブル割り込みを出力する、請求項15に記載のマイクロプロセッサ。
  19. メモリ領域が第1メモリ領域であり、マイクロプロセッサがさらに
    論理ユニット;および
    ROM領域を含み、
    セキュアードシステムクリーンアップモジュールが、論理ユニットにより実行可能なコードを含み、実行可能なコードがROM領域に保存される、請求項15に記載のマイクロプロセッサ。
  20. マイクロプロセッサがさらに、
    論理ユニットによる実行のためのアドレスを保存するプログラムカウンターレジスタ;および
    セキュアードシステムクリーンアップモジュールのメモリアドレスを保存するイベントアドレスストアを含み、
    リセット信号がリセットポートにより受信され、リセットダイバージョンモジュールがイネーブルステートで動作する場合に、メモリアドレスがイベントアドレスストアからプログラムカウンターレジスタにロードされる、請求項19に記載のマイクロプロセッサ。
  21. メモリ領域が、レジスタ、またはマイクロプロセッサのキャッシュである、請求項15に記載のマイクロプロセッサ。
  22. リセットダイバージョンモジュールが、ノンマスカブル割り込みが有効である場合のみ、イネーブルステートに構成される、請求項15に記載のマイクロプロセッサ。
  23. プロセッサ内の情報を保護する方法であって、
    (a)ハードウェアリセットトリガを受信する動作、
    (b)動作(a)の後に、ソフトウェア割り込みをアクティブにする動作、
    (c)動作(b)の後に、プロセッサのストレージ領域から情報を消去する動作、および
    (d)動作(c)の後に、プロセッサのリセットを実行することにより、ハードウェアリセットトリガを行う動作
    を含む、前記方法。
JP2010545882A 2008-02-07 2009-02-06 ハードウェアリセット保護のための方法および装置 Expired - Fee Related JP5349498B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US6392408P 2008-02-07 2008-02-07
US61/063,924 2008-02-07
PCT/US2009/000769 WO2009099648A2 (en) 2008-02-07 2009-02-06 Method and apparatus for hardware reset protection

Publications (3)

Publication Number Publication Date
JP2011512581A JP2011512581A (ja) 2011-04-21
JP2011512581A5 JP2011512581A5 (ja) 2012-03-22
JP5349498B2 true JP5349498B2 (ja) 2013-11-20

Family

ID=40732206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010545882A Expired - Fee Related JP5349498B2 (ja) 2008-02-07 2009-02-06 ハードウェアリセット保護のための方法および装置

Country Status (5)

Country Link
US (1) US9274573B2 (ja)
EP (1) EP2257860B1 (ja)
JP (1) JP5349498B2 (ja)
CN (1) CN101978339B (ja)
WO (1) WO2009099648A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055936B2 (en) * 2008-12-31 2011-11-08 Pitney Bowes Inc. System and method for data recovery in a disabled integrated circuit
US7840900B1 (en) * 2009-04-30 2010-11-23 Spansion Llc Replacing reset pin in buses while guaranteeing system recovery
US9262340B1 (en) * 2011-12-29 2016-02-16 Cypress Semiconductor Corporation Privileged mode methods and circuits for processor systems
US9003546B2 (en) * 2012-10-18 2015-04-07 Ca, Inc. Secured deletion of information
CN104732153B (zh) * 2013-12-18 2018-01-12 群联电子股份有限公司 数据抹除方法、存储器控制电路单元及存储器存储装置
CN104932981B (zh) * 2014-03-20 2018-05-25 宏达国际电子股份有限公司 移动电子装置与清理存储区块的方法
US10922402B2 (en) * 2014-09-29 2021-02-16 Vmware, Inc. Securing secret data embedded in code against compromised interrupt and exception handlers
CN108073818B (zh) * 2016-11-14 2021-07-09 华为技术有限公司 芯片的数据保护电路、芯片和电子设备
CN107169376B (zh) * 2017-04-10 2020-01-14 深圳怡化电脑股份有限公司 一种硬件指令调用的控制方法及系统
US11144631B2 (en) 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes
US11507702B2 (en) * 2019-11-05 2022-11-22 Apple Inc. Secure mode switching in neural processor circuit
US20220179929A1 (en) * 2020-12-09 2022-06-09 Synopsys, Inc. Obfuscating encrypted register transfer logic model of a circuit

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05341970A (ja) * 1992-06-10 1993-12-24 Hitachi Ltd 制御装置
JP3461234B2 (ja) * 1996-01-22 2003-10-27 株式会社東芝 データ保護回路
US5761492A (en) 1996-05-07 1998-06-02 Lucent Technologies Inc. Method and apparatus for uniform and efficient handling of multiple precise events in a processor by including event commands in the instruction set
EP1085396A1 (en) * 1999-09-17 2001-03-21 Hewlett-Packard Company Operation of trusted state in computing platform
US6754815B1 (en) 2000-03-31 2004-06-22 Intel Corporation Method and system for scrubbing an isolated area of memory after reset of a processor operating in isolated execution mode if a cleanup flag is set
US7134123B1 (en) 2000-05-31 2006-11-07 International Business Machines Corporation Virtual machine with reset operation
US7191464B2 (en) * 2001-10-16 2007-03-13 Lenovo Pte. Ltd. Method and system for tracking a secure boot in a trusted computing environment
US7313705B2 (en) * 2002-01-22 2007-12-25 Texas Instrument Incorporated Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory
US20030196100A1 (en) 2002-04-15 2003-10-16 Grawrock David W. Protection against memory attacks following reset
US7205883B2 (en) * 2002-10-07 2007-04-17 Safenet, Inc. Tamper detection and secure power failure recovery circuit
US7210009B2 (en) 2003-09-04 2007-04-24 Advanced Micro Devices, Inc. Computer system employing a trusted execution environment including a memory controller configured to clear memory
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US7434039B2 (en) 2005-09-13 2008-10-07 Freescale Semiconductor, Inc. Computer processor capable of responding with comparable efficiency to both software-state-independent and state-dependent events
GB2432928B (en) 2005-11-16 2010-10-27 John Richardson Tindall Brazier Restricting access by an unauthorised user to confidential information stored on a computer
US20090260088A1 (en) * 2006-01-24 2009-10-15 Robert Chi-Thanh Quach System and Method for Data Destruction
JP2007249507A (ja) * 2006-03-15 2007-09-27 Hitachi Software Eng Co Ltd 情報漏洩防止方法、情報漏洩防止システム及び情報端末
US7895426B2 (en) * 2007-08-24 2011-02-22 International Business Machines Corporation Secure power-on reset engine
US7979658B2 (en) * 2008-03-25 2011-07-12 Spansion Llc Secure management of memory regions in a memory
US8051467B2 (en) * 2008-08-26 2011-11-01 Atmel Corporation Secure information processing

Also Published As

Publication number Publication date
JP2011512581A (ja) 2011-04-21
EP2257860A2 (en) 2010-12-08
CN101978339A (zh) 2011-02-16
US20090205050A1 (en) 2009-08-13
EP2257860B1 (en) 2013-11-27
US9274573B2 (en) 2016-03-01
WO2009099648A3 (en) 2009-09-24
WO2009099648A2 (en) 2009-08-13
CN101978339B (zh) 2013-10-30

Similar Documents

Publication Publication Date Title
JP5349498B2 (ja) ハードウェアリセット保護のための方法および装置
US7237081B2 (en) Secure mode for processors supporting interrupts
US20080034350A1 (en) System and Method for Checking the Integrity of Computer Program Code
Blass et al. TRESOR-HUNT: attacking CPU-bound encryption
US7631196B2 (en) Method and apparatus for loading a trustable operating system
US10095862B2 (en) System for executing code with blind hypervision mechanism
US7117352B1 (en) Debug port disable mechanism
US9740887B2 (en) Methods and systems to restrict usage of a DMA channel
US8132254B2 (en) Protecting system control registers in a data processing apparatus
US6968420B1 (en) Use of EEPROM for storage of security objects in secure systems
US20070016832A1 (en) System, device and method of verifying that a code is executed by a processor
US9058163B2 (en) Known good code for on-chip device management
TW200949681A (en) Apparatus and method for managing a microprocessor providing for a secure execution mode
US7523279B2 (en) Information processing apparatus for accessing memory spaces including a user memory space and a secure memory space
US20060075312A1 (en) System and method for limiting exposure of hardware failure information for a secured execution environment
US7809934B2 (en) Security measures for preventing attacks that use test mechanisms
KR100928757B1 (ko) 사설 운용들을 통해 액세스되는 제어 레지스터들을 위한시스템 및 방법
Ziad et al. ZeRØ: Zero-overhead resilient operation under pointer integrity attacks
EP1843250B1 (en) System and method for checking the integrity of computer program code
US11675587B2 (en) Enhanced protection of processors from a buffer overflow attack
US7254720B1 (en) Precise exit logic for removal of security overlay of instruction space
EP1862908A1 (en) Integrated circuit arrangement, a method for monitoring access requests to an integrated circuit arrangement component of an integrated circuit arrangement and a computer program product
Bellom et al. mrossibellom@ quarkslab. com dmelotti@ quarkslab. com pteuwen@ quarkslab. com

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130710

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: 20130806

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130820

R150 Certificate of patent or registration of utility model

Ref document number: 5349498

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees