JP5349498B2 - ハードウェアリセット保護のための方法および装置 - Google Patents
ハードウェアリセット保護のための方法および装置 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2143—Clearing memory, e.g. to prevent the data from being stolen
Description
1.発明の分野
本発明は、一般的にコンピュータセキュリティーの分野に関する。
2.関連技術の説明
リセットは、コンピュータデバイスを統制の下で初期ステートまたは標準状態にするために、コンピュータで利用される機構である。これは、いくつかの理由で望まれる。例えば、コンピュータデバイスのステート(state)が不明になる時、コンピュータデバイスが無反応になる時、またはプロセッサを事前設定されたステートに戻す好都合な手段である。
リセットの結果、システムレジスタは、事前設定(例えば、デフォルト)された状態にリストアされるであろう。システムクロック(例えば、局部発振器)もまた再初期化されてもよい。
リセットは、例えば、ユーザー入力によりまたは付属されたデバイスを介して、外部からアクティブにされてもよい。コンピュータデバイスは、例えば、それにより外部リセットがアクティブにされる、リセットピンまたはリセットボタンを備えてもよい。
リセットはまた、内部機構により開始されてもよい。コンピュータデバイスは、ソフトウェアを介したリセット命令をサポートしてもよい。システムクラッシュまたはハングした時に、ウォッチドッグタイマーが終了し、リセットをトリガする。
外部リセット命令を受信するリセットポートを備えるマイクロプロセッサは、選択的に有効にされ得るリセットダイバージョン回路(reset diversion circuit)を備えてもよい。マイクロプロセッサは、オープンモード(例えば、デフォルトステート)またはセキュアモードにおいて動作してもよい。セキュアモードにおいて、秘密情報は無防備なストレージ領域に記録されてもよい。マイクロプロセッサがオープンモードで動作する場合、、外部リセット要求がハードウェアリセットを直ちに引き起こすように、リセットダイバージョン回路は無効にされる。マイクロプロセッサがセキュアモードで動作する場合、外部リセット要求をソフトウェアコードの実行をトリガし得る割り込み要求に転換するために、リセットダイバージョン回路は有効にされる。そのソフトウェアコードは、例えば、リセットの前に無防備なストレージ領域を消去するためのセキュアードシステムクリーンアップルーチン(secured system clean-up routine)を実行してもよい。
別の態様では、本発明は、マイクロプロセッサの動作方法に関する。方法は、外部リセット命令を受信すること、およびセキュアードシステムクリーンアップルーチンの実行をトリガするために、外部リセット命令をハードウェアリセットのトリガから選択的に転換することを含む。マイクロプロセッサのリソースへのセキュアアクセス(secured access)を要求するセキュアモードにおいてマイクロプロセッサが動作する場合に、転換を有効にすることが選択され、また、オープンモードにおいてマイクロプロセッサが動作する場合に、転換は無効にされることが選択される。
さらに別の態様では、本発明は、プロセッサ内の情報を保護する方法に関する。方法は、(a)ハードウェアリセットトリガを受信する動作;(b)動作(a)の後に、ソフトウェア割り込みをアクティブにする動作;(c)動作(b)の後に、プロセッサのストレージ領域から情報を消去する動作;および(d)動作(c)の後に、プロセッサのリセットを実行することにより、ハードウェアリセットトリガを行う動作を含む。
マイクロプロセッサの外部リセットは、動作中にいつでも起こり得る、潜在的にコントロール不能なイベントである。リセットは一般的に、マイクロプロセッサを、例えば最小のセキュリティー対策またはセキュリティー対策無しでのオープン動作モードのような、デフォルトステートに戻す。これは、顧客またはユーザーの取扱注意、秘密、および/または財産的情報が、オープンモードにおいて公的にアクセス可能なマイクロプロセッサの領域に保存され得る場合に、セキュリティーリスクを引き起こす。例えば、セキュアモードにおいて動作しているマイクロプロセッサは、外部読み込み要求を拒否することで、レジスタ内のメモリに保存された情報を保護してもよい。しかしながら、リセットを行うことで、マイクロプロセッサは、そのような保護がないかもしれないオープンモードに戻される。悪意のある団体が、例えば、エミュレーションポート(例えば、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は、それぞれが情報と関連する値を保存するように適応された、多数のメモリセルを備えてもよい。それぞれ保存される値は、例えば、“0”および“1”として象徴的に表される、二進法の1つを持ち得るビットである。ビットは、アドレッシング、読み込み、および書き込みのために、グループ(例えばバイト)に配置されてもよい。メモリ130は、データを保存するために適切な如何なるやり方で構成配列されたものでもよい。
いくつかの態様では、セキュアードシステムクリーンアップルーチン160は、ソフトウェア命令の変更を防止するためにROMに保存される。
セキュアードシステムクリーンアップルーチン160は、プライベートメモリ140の読み込みアクセスからのデータを保持するために利用されるレジスタ(例えば、レジスタ120の間で)のワイプ(wipe)を実行してもよい(これらのレジスタは、シークレットキーまたはユーザーコード実行でできた他の取扱注意データを含むことができる)。
セキュアードシステムクリーンアップルーチンは、セキュアードシステムクリーンアップルーチンの完了時に、プロセッサをリセットするためのウォッチドッグリセットを実行してもよい。
マイクロプロセッサのI/Oポート190は、情報の転送のための入力および出力の機能性を提供する。各ポートは、例えば、ピン、ジャック、ボタン、スイッチ、ダイヤル、レバー、有線または無線レシーバー、または任意の他のインターフェース技術として実現されてもよい。I/Oポート190は、リセットポート191、ノンマスカブル割り込み(NMI)ポート193、およびデバッグポート195(例えば、インサーキットエミュレータ(ICE)ポート)を含んでもよい。リセットポート191は、マイクロプロセッサ100をリセットするための外部トリガを受信するために利用されてもよい。
割り込みは、例えば、割り込みに関連する割り込みマスクレジスタ(IMR)内のビットがセットされる場合に、無視(マスク)されてもよい。いくつかの割り込みは、本質的にノンマスカブルであってよい。NMIポート193は、1つ以上の割り込みのためのマスキングを有効および/または無効にするための外部手段を提供してもよい。ノンマスカブル割り込みは、論理ユニット110による即時の実行のために優先されてもよい。
リセットポート191は、マイクロプロセッサ100をリセットするための外部トリガを提供するために利用されてもよい。リセット信号は、非同期的にリセットポート191で受信されてもよい。
リセットポート191は、ハードウェアリセット170に動作可能に接続されてもよい。リセットポート191のリセット信号は、ハードウェアリセット170により受信されてもよい。ハードウェアリセット170は、マイクロプロセッサ170のためのリセット機能性を提供する。いくつかの態様では、ハードウェアリセット170は、マイクロプロセッサ100を統制の下で初期ステートまたは標準状態に戻すためのリセット信号によりアクティブにされ得るマイクロプロセッサ100内に電気回路として実現されてもよい。
マイクロプロセッサ200は、パブリックメモリ150がROM領域250を備える態様を明確に示す。“デフォルト”のセキュアードシステムクリーンアップルーチン160は、ROM250に保存される。いくつかの態様では、カスタムセキュアードシステムクリーンアップルーチン210はパブリックメモリ150に保存されてもよいが、いくつかの態様では、カスタムセキュアードシステムクリーンアップルーチン210はプライベートメモリ140または任意の他の適切なメモリの場所に保存されてもよい。
NMI220は、イベントベクターテーブル260に保存されるイベントアドレス270の検索を最初にトリガしてもよい。イベントベクターテーブル260は、任意の適切な場所(例えば、レジスタ120、メモリ130、プライベートメモリ140、図示のようなパブリックメモリ150)に保存されてもよい。イベントアドレス270は、セキュアードシステムクリーンアップルーチン160、またはカスタムセキュアードシステムクリーンアップルーチン210の場所のメモリアドレスを備えてもよい。プログラムカウンター122は、その時イベントアドレス270と共に更新されてもよい。論理ユニット110は、対応するセキュアードシステムクリーンアップルーチンを実行してもよい。いくつかの態様では、ハードウェアリセット170は、実行されたセキュアードシステムクリーンアップルーチンの最後にトリガされる。いくつかの態様では、トリガは、ウォッチドッグタイマーの終了に起因する。
マイクロプロセッサは、セキュリティーおよび順応性を提供するために、いくつかの異なる動作モードにおいて動作可能であってよい。マイクロプロセッサは、セキュリティー機能が不必要で、秘密情報へのアクセスが不必要である場合に、例えばオープンモード動作で動作してもよい。個人秘密情報は、オープンモードにおいてアクセス不可能であり得るプライベートメモリ140に保存されてもよい。
秘密情報が、処理される、またはアクセスされる場合に、マイクロプロセッサは、セキュアモード動作に入ってもよい。セキュアモードにおいて、プライベートメモリ140は、アクセス可能であってもよく、そして、個人情報はレジスタ120および/またはメモリ130に書き込まれてもよい。
セキュアステートマシン300は、レジスタ120、メモリ130、または任意の他の適切な方法を介して、マイクロプロセッサ内に実装されてもよい。図3に示される態様例では、セキュアステートマシン300は、オープンモード310、セキュアエントリーモード320、およびセキュアモード330で動作してもよい。
オープンモード310で動作するセキュアステートマシン300は、セキュアエントリーモード320に遷移(遷移302を介して)してもよい。
セキュアエントリーモード320において、プライベートメモリ140は、アクセス不可能であってもよい。いくつかの態様では、プログラムカウンター122は、それが認証ソフトウェアへ割り当てられたアドレス領域の範囲内にとどまっていることを保証するためにモニターされてもよい。いくつかの態様では、DMAアクセスはメモリ130の特定の領域に対して許可され、JTAGエミュレーションは無効にされる。
セキュアステートマシン300は、認証が成功する時にだけ、セキュアエントリーモード320からセキュアモード330へ遷移してもよい。認証が成功した場合、セキュアモード330に入る前に、遷移304を介して追加のステップを行ってもよい。いくつかの態様では、リセットダイバージョン回路180が有効にされる(図2)。イベントベクターテーブル260内のイベントアドレス270は更新されてもよい。いくつかの態様では、イベントアドレス270は、セキュアードシステムクリーンアップルーチン160のデフォルトのアドレスに更新されてもよい。
セキュアステートマシン300は、セキュアモード330からオープンモード310へ復帰するように遷移305してもよい。いくつかの態様では、セキュアモード330からセキュアエントリーモード320への直接経路が存在しないようにしてもよい。いくつかの態様では、セキュアモードからオープンモードへの遷移305に先立って、セキュアードシステムクリーンアップルーチンの実行がおこなわれる。セキュアードシステムクリーンアップルーチンは、認証コードにより呼び出されてもよい。セキュアモードから抜ける前に、セキュアードシステムクリーンアップルーチンを実行することは、メモリおよびレジスタ内の取扱注意のコード/データが、オープンモード310において可視可能およびアクセス可能になることを防止するであろう。
認証コードは、カスタムセキュアードシステムクリーンアップルーチンを含んでもよい。いくつかの態様では、認証コードは、カスタムセキュアードシステムクリーンアップルーチン210(図2)の場所を指定するために、イベントベクターテーブル260内のイベントレジスタ270を更新してもよい。ユーザーは、例えば、デフォルトのセキュアードシステムクリーンアップルーチン160の代わりに、カスタムルーチンに頼ってもよい。
図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の動作に従った、動作状態の間を遷移してもよい。
リセットダイバージョンモジュール403が無効にされる場合、リセットポート191により受信されるリセット信号は、ハードウェアリセットモジュール402のマイクロプロセッサ400のリセットの実行をトリガしてもよい。リセットダイバージョンモジュール403が有効にされる場合、リセットポート191により受信されるリセット信号は、イベントアドレスのイベントベクターモジュール404から実行モジュール420へのロードをトリガしてもよい。リセットダイバージョンモジュール403は、例えば、それがセキュアエントリーモード320からセキュアモード330へ遷移するように決定される場合に有効にされてもよい。セキュアクセスモジュール460は、認証が成功した時にリセットダイバージョンモジュール403を有効にしてもよい。
マイクロプロセッサは、任意の動作ステート(例えば、セキュアモード330)の間に、ハードウェアリセットプロテクションを実行してもよい。リセットプロテクション機能は、リセットポート191の悪意のあるアサーションが、メモリ140および/またはレジスタ120内の取扱注意コードまたはデータを暴露することを防ぐ。
図5Aに示される方法500は、外部リセット命令を処理するための方法を提供する。方法500は、例えば、マイクロプロセッサにより実行されてもよい。
ステップ501の最初には、外部リセット命令が受信される。例えば、リセット命令は、リセットポート191(図1、2および4)により受信されてもよい。
ステップ502では、リセットダイバージョンが有効または無効にされているかどうかを決定する。リセットダイバージョンが無効にされている場合、プロセスフローは、ステップ503でのハードウェアリセットの実行を継続する。ハードウェアリセットが一度実行されると、マイクロプロセッサをデフォルトのステートに戻す(ステップ504)。例えば、セキュアステートマシン300が実装されているマイクロプロセッサの態様では、リセット後にオープンモード310に入る。
ステップ506では、セキュアードシステムクリーンアップルーチンが実行される。セキュアードシステムクリーンアップルーチンは、マイクロプロセッサから秘密情報を消去するであろう。セキュアードシステムクリーンアップルーチンは任意の望ましい機能を提供してもよい。
いくつかの態様では、セキュアードシステムクリーンアップルーチンの後に、ハードウェアリセット(ステップ503)が実行される。ハードウェアリセットは、マイクロプロセッサをデフォルトステート(ステップ504)に戻してもよい。いくつかの態様では、セキュアードシステムクリーンアップルーチン内の明示的な命令が、ハードウェアリセットの実行をトリガするために要求されてもよい(例えば、セキュアードシステムクリーンアップルーチン内の最後の命令)。いくつかの他の態様では、ステップ503は、ルーチン内の明示的な命令の要求なしに、セキュアードシステムクリーンアップルーチンの完了後に実行される。例えば、ウォッチドッグタイムが終了することを単に許可し、ハードウェアリセットの実行を自動的にトリガしてもよい。
ステップ551の最初には、セキュアモード動作に入るための決定が行われる。決定は、ユーザーまたはセキュアモードで実行されるコードの認証の後に行われてもよい。いくつかの態様では、認証はSESRにより実行されてもよい。いくつかの態様では、セキュアモード330へ入るための決定は、セキュアステートマシン300に従ったセキュアエントリーモード320において行われてもよい。
ステップ552では、イベントアドレスはイベントベクターテーブルにおいて更新される。いくつかの態様では、SESRは、認証の成功後にイベントアドレスと共にイベントベクターテーブルを更新するための命令を提供してもよい。イベントアドレスは、セキュアードシステムクリーンアップルーチンを参照してもよい。いくつかの態様では、セキュアードシステムクリーンアップルーチンはROMに保存されてもよい。
ステップ553では、リセットダイバージョンが有効にされる。リセットダイバージョンは、リセット信号を、ハードウェアリセットのトリガからノンマスカブル割り込みへ転換する。リセットダイバージョンは、入力信号をリセットダイバージョン回路に適応させることにより有効にされてもよい。
ステップ555では、外部リセット命令は、セキュアモードの間に受信される。いくつかの態様では、外部リセット命令は、リセットポート191で受信されてもよい。外部リセット命令は、非同期的に受信されてもよい。
ステップ556では、イベントアドレスは、イベントベクターテーブルからプログラムカウンターレジスタにロードされる。いくつかの態様では、イベントアドレスのロードは、有効にされたリセットダイバージョン回路による、外部リセット命令の遮断によりトリガされてもよい。
ステップ558では、ハードウェアリセットが実行される。いくつかの態様では、これはセキュアードシステムクリーンアップルーチン内のソフトウェア命令の実行に応じる。
ステップ559では、プロセッサはオープンモードに入る。これは、ハードウェアリセットによりトリガされるブートルーチンの一部である。いくつかの態様では、オープンモードは、セキュアステートマシン300(図3)のオープンモード310であってもよい。
リセットダイバージョン回路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は、ノンマスカブル割り込みを生じるであろう。ノンマスカブル割り込みは、セキュアードシステムクリーンアップルーチンのためのイベントアドレスのプログラムカウンターレジスタへのロードをトリガしてもよい。
この望まれている動作は、例えば、論理“AND”ゲート605および606、およびインバーター607を備える、図6Aに示される論理図を実装することにより達成できるであろう。論理図は、すべての入力および出力がアクティブハイであると仮定する。リセットダイバージョン回路180Aは、任意の信号伝達状態に対応するために簡単に変更されてもよい。
表1は、リセットダイバージョン回路180Aの動作を要約する論理テーブルである。符号“0”は、アサートなしまたは論理ローステートを示し、一方で、符号“1”は、アサートありまたは論理ハイステートを示す。
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つにより制御されてもよい。
接続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は、いくつかの態様に従ったレジスタ内の各ビットの機能の要約を提供する。
Claims (23)
- 装置であって:
リセット信号を受信するリセットポート;
セキュアモードを含む複数のモードのいずれにおいても動作可能なステートマシン;
セキュアードシステムクリーンアップルーチンを保存するメモリ;および
ステートマシンがセキュアモードで動作しようとする場合に有効になるリセットダイバージョン回路を含み、リセットダイバージョン回路が、リセットポートでリセット信号が受信された場合にセキュアードシステムクリーンアップルーチンの実行を初期化するように構成される、前記装置 - セキュアードシステムクリーンアップルーチンが実行されると、メモリの、秘密情報を保存している部分を消去する、請求項1に記載の装置。
- セキュアードシステムクリーンアップルーチンが実行されると、秘密情報を保存するレジスタをクリアする、請求項1に記載の装置。
- セキュアードシステムクリーンアップルーチンが実行されると、秘密情報に関連するいずれのバッファ、スクラッチメモリ、またはメモリを示すポインターもクリアする、請求項1に記載の装置。
- ステートマシンがセキュアモードに入る時に、リセットダイバージョン回路を有効にするセキュアアクセスモジュールをさらに含む、請求項1に記載の装置。
- 装置をリセットするハードウェアリセットをさらに含み、ハードウェアリセットは、リセットポートでリセット信号が受信され、リセットダイバージョン回路が無効になる時にトリガされる、請求項5に記載の装置。
- 複数のモードがさらにオープンモードを含み、
オープンモードにおいて装置リセット時にステートマシンが初期化され、
セキュアードシステムクリーンアップルーチンが完了する時にハードウェアリセットがトリガされる、請求項6に記載の装置。 - セキュアアクセスモジュールが、メモリの読み込み専用部分に保存され、セキュアエントリーサービスルーチンを含む、請求項5に記載の装置。
- リセットダイバージョン回路によるセキュアードシステムクリーンアップルーチンの実行の初期化が、有効にされた場合は、ノンマスカブルである、請求項1に記載の装置。
- 装置がさらに:
メモリアドレスを保存するためのプログラムカウンターレジスタ;
少なくとも一部がメモリアドレスで示される位置にあるメモリに保存されるルーチンを実行する論理ユニット;および
イベントアドレスを保存するイベントベクターテーブルを含み、イベントアドレスは、セキュアードシステムクリーンアップルーチンのメモリ内の位置を示し、
リセットダイバージョン回路は、プログラムカウンターレジスタに保存されたメモリアドレスを、イベントベクターテーブルに保存されたイベントアドレスで更新することにより、セキュアードシステムクリーンアップルーチンの実行を初期化する、請求項1に記載の装置。 - マイクロプロセッサの動作方法であって、
外部リセット命令を受信すること、および
外部リセット命令を、ハードウェアリセットのトリガから、セキュアードシステムクリーンアップルーチンの実行をトリガすることへと、選択的に転換することを含み、
転換は、マイクロプロセッサのリソースへのセキュアアクセスを要求するセキュアモードにおいてマイクロプロセッサが動作する場合に有効となることが選択され、また、転換は、オープンモードにおいてマイクロプロセッサが動作する場合に無効となることが選択されるものである、前記動作方法。 - 転換が有効となることが選択された場合に、転換がノンマスカブルである、請求項11に記載の方法。
- セキュアードシステムクリーンアップルーチンのメモリ位置を参照するアドレスを保存することをさらに含む、請求項11に記載の方法。
- セキュアードシステムクリーンアップルーチンの実行をトリガすることが、転換が有効となることが選択された場合に、セキュアードシステムクリーンアップルーチンのアドレスをプログラムカウンターレジスタにロードすることを含む、、請求項13に記載の方法。
- マイクロプロセッサであって:
リセット信号を受信するリセットポート;
秘密情報を保存するメモリ領域;
メモリ領域から秘密情報を消去するセキュアードシステムクリーンアップモジュール;および
リセットダイバージョンモジュールを含み、前記リセットダイバージョンモジュールは、マイクロプロセッサが、マイクロプロセッサのリソースへのアクセスを保証するセキュアモードである間に、イネーブルステートで動作するように構成され、リセットダイバージョンモジュールは、イネーブルステートにおいて、リセット信号がリセットポートによって受信される場合に、セキュアードシステムクリーンアップモジュールの実行をトリガするように構成される、前記マイクロプロセッサ。 - マイクロプロセッサをリセットするハードウェアリセットモジュールをさらに含み、
リセットダイバージョンモジュールがさらに、マイクロプロセッサがオープンモードの間にディスエーブルステートで動作するように構成され、ディスエーブルステートに構成されたリセットダイバージョンモジュールが、リセット信号を、リセットポートにより受信される場合に許可し、ハードウェアリセットモジュールがマイクロプロセッサのリセットをトリガするように構成される、請求項15に記載のマイクロプロセッサ。 - ハードウェアリセットモジュールがハードウェアリセット回路であり、リセットダイバージョンモジュールがリセットダイバージョン回路である、請求項15に記載のマイクロプロセッサ。
- リセットダイバージョンモジュールが、セキュアードシステムクリーンアップモジュールの実行をトリガするノンマスカブル割り込みを出力する、請求項15に記載のマイクロプロセッサ。
- メモリ領域が第1メモリ領域であり、マイクロプロセッサがさらに
論理ユニット;および
ROM領域を含み、
セキュアードシステムクリーンアップモジュールが、論理ユニットにより実行可能なコードを含み、実行可能なコードがROM領域に保存される、請求項15に記載のマイクロプロセッサ。 - マイクロプロセッサがさらに、
論理ユニットによる実行のためのアドレスを保存するプログラムカウンターレジスタ;および
セキュアードシステムクリーンアップモジュールのメモリアドレスを保存するイベントアドレスストアを含み、
リセット信号がリセットポートにより受信され、リセットダイバージョンモジュールがイネーブルステートで動作する場合に、メモリアドレスがイベントアドレスストアからプログラムカウンターレジスタにロードされる、請求項19に記載のマイクロプロセッサ。 - メモリ領域が、レジスタ、またはマイクロプロセッサのキャッシュである、請求項15に記載のマイクロプロセッサ。
- リセットダイバージョンモジュールが、ノンマスカブル割り込みが有効である場合のみ、イネーブルステートに構成される、請求項15に記載のマイクロプロセッサ。
- プロセッサ内の情報を保護する方法であって、
(a)ハードウェアリセットトリガを受信する動作、
(b)動作(a)の後に、ソフトウェア割り込みをアクティブにする動作、
(c)動作(b)の後に、プロセッサのストレージ領域から情報を消去する動作、および
(d)動作(c)の後に、プロセッサのリセットを実行することにより、ハードウェアリセットトリガを行う動作
を含む、前記方法。
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)
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)
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 |
-
2009
- 2009-02-04 US US12/365,386 patent/US9274573B2/en active Active
- 2009-02-06 JP JP2010545882A patent/JP5349498B2/ja not_active Expired - Fee Related
- 2009-02-06 WO PCT/US2009/000769 patent/WO2009099648A2/en active Application Filing
- 2009-02-06 EP EP09707992.5A patent/EP2257860B1/en not_active Not-in-force
- 2009-02-06 CN CN2009801096028A patent/CN101978339B/zh not_active Expired - Fee Related
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 |