JP5607546B2 - 保護された動作モードの間にシステムアクセスを制御するための方法および装置 - Google Patents
保護された動作モードの間にシステムアクセスを制御するための方法および装置 Download PDFInfo
- Publication number
- JP5607546B2 JP5607546B2 JP2010545881A JP2010545881A JP5607546B2 JP 5607546 B2 JP5607546 B2 JP 5607546B2 JP 2010545881 A JP2010545881 A JP 2010545881A JP 2010545881 A JP2010545881 A JP 2010545881A JP 5607546 B2 JP5607546 B2 JP 5607546B2
- Authority
- JP
- Japan
- Prior art keywords
- secure mode
- memory
- processor
- private
- secure
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- 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
- G06F21/74—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 operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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/2105—Dual mode as a secondary aspect
-
- 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/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Microcomputers (AREA)
Description
集積回路およびコンピュータの生産および利用が極端に速い速度で行われることに伴い、またほかのタイプのデジタルモジュール動作において、設計者は、集積チップの内部構造および動作のテストおよび診断のための方法が、有益で重要な役割を果たすことをますます認識するようになってきた。論理回路を集積チップに埋め込むための基準を創設することの望ましさが、IEEE委員会により提案および開発され、IEEE 1149.1として指定されるバウンダリスキャンアーキテクチャを提案した。標準IEEE1149.1または“JTAG”は電子回路のテストのための規格を定義するために開発された。JTAGの頭文字は、もともとは標準IEEEを定義したjoint test access group (JTAG)として指定された委員会団体に由来する。JTAGは、“内部チップ”機能のテストおよびプリント基板上のチップ相互接続のテストを含む、幅広い種類のテスト機能のために利用される。
マイクロプロセッサは取扱注意および/または秘密情報を保存するための信頼することができるものである。プロセッサは、ソフトウェア開発のデバッキング機能を提供するものとして、一方でそれと同時に、プロセッサに保存された取扱注意および/または秘密情報のためのセキュリティーを提供するものとして述べられる。
いくつかの態様では、プロセッサは、オープンモード,セキュアエントリーモード,セキュアモードのうちの1つで動作する。オープンモードでは、いくつかのレジストリビットへのアクセス防止およびプライベートメモリ領域(例えば、取扱注意情報が保存される場所)へのアクセス防止以外には、セキュリティー対策は実施されない。セキュアエントリーモードは、プロセッサ上でセキュアコードの実行要求が受信され認証された場合に開始される。いくつかの態様では、認証はデジタル署名を利用して行われる。一度認証されると、セキュアコードは、プライベートメモリ領域がアクセス可能であるセキュアモードで実行される。セキュアコードは、プライベートメモリ領域にアクセスし、レジストリへのより高いアクセスおよび制御を持つ。認証が失敗した場合には、状態はオープンモードに戻る。
別の態様では、本発明は、セキュアモードを含む、複数のモードで動作可能なプロセッサに関する。プロセッサは第一メモリ、第二メモリおよび論理ユニットを含む。第一メモリは、プライベートエミュレーション命令が実行される場合には第一値を、プライベートエミュレーション命令が無視されるべき場合には第二値を保存するように構成される。第二メモリは、プロセッサがセキュアモードに入る場合に、第一メモリが第一値を保存するのか、または第二値を保存するのかを示すように構成されている。論理ユニットは、プロセッサがセキュアモードに入っている場合に、第二メモリに基づいて第一メモリを設定するように構成されている。
今日の世界において多くの用途に広く利用される、プログラム可能なプロセッサの分野において、これらプロセッサの供給者の顧客は、プロセッサを特定の応用に利用するためのソフトウェアを頻繁に開発する。そのようなソフトウェア開発者のために、ソフトウェアが期待通りに実行されない場合に、彼らのソフトウェアのデバッグを可能にすることが望まれる。JTAGのような、ハードウェアデバッグツールは、アプリケーションコードの開発やテストを容易にする。
ソフトウェアデバッキングを可能にするための要求に加えて、大きなセキュリティー上の問題が存在する。取扱注意、秘密、および/または顧客またはプロセッサの利用者の財産である情報が、プロセッサのメモリおよび/またはレジスタに常に保存される場合が多い。ソフトウェアデバッグツールの利用中に、そのようなメモリおよびレジスタの内容は、ツールの利用者にアクセス可能である場合が多く、そのことは不正利用の危険性をもたらす。したがって、セキュリティーを保証するためには、プログラム可能なプロセッサの供給者の多くが、例えばデバッキング機能を有効にするプロセッサチップのピンを接続しないなどして、デバッキング機能を無効にすることを試みる。
マイクロプロセッサは、特定の動作モードの間に、ソフトウェアのデバッグ機能およびセキュリティーのバランスを取るように提供される。このバランスは、取扱注意、秘密および/または財産的情報が安全であることを保証する。
図1Aは、マイクロプロセッサ100の一態様を示す。マイクロプロセッサ100は、中央演算処理装置(CPU)110、レジスタ120、入力/出力(I/O)ポート130およびメモリ140を含んでもよい。
CPU110は、マイクロプロセッサ100の命令を実行するための論理ユニットである。CPU110により実行可能な命令は、例えば一連の実行可能な命令から成るソフトウェア(すなわち、プログラム、コード)から生じるものでもよい。
メモリ140は、実行可能なコード、パブリックキー情報、および/または任意の種類のデジタルデータを保存するために利用されてもよい。各メモリ位置は、メモリアドレスと関連してもよい。メモリ140は、ワンタイムプログラマブル(OTP)メモリ、スタティックランダムアクセスメモリ(SRAM)、リードオンリーメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、または他のメモリ技術またはメモリ技術の組合せを備えてもよい。
パブリックメモリ160は、ファームウェア170を保存してもよい。ファームウェア170は、ユーザーおよび/またはコード認証を行うための認証ソフトウェアを含んでもよい。いくつかの態様では、ファームウェア170は、認証ソフトウェア命令の変更を防止するために、ROMに記憶される。
レジスタ120は、情報のビットを記憶してもよい。ビットは、マイクロプロセッサ100の動作ステートを示してもよい。レジスタ120は、それぞれが1つ以上のビットを含む、任意の数の個別のレジスタに分けられていてもよい。いくつかの態様では、レジスタ120は、CPU110により実行される次の命令のメモリアドレスを含む、プログラムカウンター(PC)122レジスタを含む。
いくつかの態様では、マイクロプロセッサ100は、CPU110を介してメモリを呼び出す必要性を除去するためのダイレクトメモリアクセス(DMA)をサポートしてもよい。いくつかの態様では、DMAは、メモリ140の一部のために選択的に無効にしてもよい。メモリ140のどの部分が、DMA有効/無効にされるかは、例えば、レジスタ120の1つにより制御されてもよい。
マイクロプロセッサ100は、図1Bに示される組み込みシステム180の一部であってもよい。組み込みシステムは、マイクロプロセッサの出力を受信するため、および/またはマイクロプロセッサに入力を提供するために動作可能に接続される追加のハードウェアから構成されてもよい。組み込みシステム180は、デバッグコネクタ181、フラッシュメモリ182、電源制御装置183および水晶発振子184などの典型的な要素を備えたブロック図として示される。これらの要素は、純粋に典型的なものであって、実施の態様において存在しても、また存在しなくてもよい。マイクロプロセッサ100は、組み込みシステム180を形成するための任意の適切な要素と組み合わせて利用されてもよい。
接続192は、マイクロプロセッサ100を含む組み込みシステムと、ホスト190の間に、図1Dに示されるような任意の適切なインターフェース193を介して確立されてもよい。
接続191および192は、有線および無線技術を含む、任意の適切な技術を利用して実現してもよい。
マイクロプロセッサ100は、動作を管理するためのセキュアステートマシン200を実行してもよい。いくつかの態様によるセキュアステートマシン200のステート図が図2に示される。セキュアステートマシン200は、動作モードおよび動作モード間の遷移経路から成ってもよい。各遷移が異なるモード間の関係を定義する一方、各動作モードは、異なるアクセス権およびセキュリティー機能と関連していてもよい。
セキュアステートマシン200は、レジスタ120、メモリ140、または他の任意の適切な方法を介して、マイクロプロセッサ100に実行されてもよい。図2に示される態様例において、セキュアステートマシン200は、オープンモード210,セキュアエントリーモード220, およびセキュアモード230で動作してもよい。
オープンモード210は、プライベートメモリ150へのアクセスが制限されることを除いては、何も制限が掛からないプロセッサのデフォルト動作ステートである。いくつかの態様では、レジスタ120内の特定のレジスタビットへの読み込みおよび/または書き込みアクセスもまた禁止されてもよい。オープンモード210は、マイクロプロセッサ100の起動時およびリセット(経路201)後のデフォルトステートである。いくつかの態様では、デバッキング機能(例えば、JTAGエミュレーション)は、オープンモード210において有効である。
オープンモード210からセキュアエントリーモード220への遷移は、プロセッサの実行の対象がファームウェア170内の認証ソフトウェアに向けられた場合にトリガーされてもよい。いくつかの態様では、プログラムカウンター122を認証ソフトウェアの第一アドレスへ向けることにより、プロセッサの実行をファームウェア170に向けてもよい。いくつかの態様では、ノンマスカブル割り込み(NMI)もまたアクティブであることが要求される。セキュアエントリーモード220への遷移は、例えば、コード実行、ユーザー入力、または他の任意の適切な手段によりトリガーされてもよい。
セキュアエントリーモード220において、ファームウェア170内の認証ソフトウェアは、CPU110により実行されてもよい。認証ソフトウェアは、セキュアステートマシンが遷移204に従ってセキュアモード230に移行するか、または遷移203に従ってオープンモードに戻るかを決定してもよい。いくつかの態様では、認証ソフトウェアは、決定を行うためのセキュアエントリーサービスルーチン(SESR)を含んでもよい。
セキュアエントリーモード220において、プライベートメモリ150は、アクセス不可能であってもよい。いくつかの態様では、プログラムカウンター122は、それ自身がファームウェア170に割り当てられたアドレス範囲内に滞在していることを確認するためにハードウェアにより監視されてもよい。いくつかの態様では、プロセッサメモリ140の特定の領域へのDMAアクセスは許可されず、JTAGエミュレーションは無効にされる。
セキュアステートマシン200は、認証が成功する時にだけ、セキュアエントリーモード220からセキュアモード230へ遷移してもよい。認証が成功した場合、SESRは、セキュアモード230に入る前に、遷移204を介して追加のステップを行ってもよい。いくつかの態様では、割り込みが無効にされる。割り込みは、割り込みレベルがSESRを介してNMIから引き下げられることにより再び有効にしても、または、認証が成功するまで待機して、セキュアモード230に入った後に、割り込みを認証コード内で再び有効にしてもよい。
セキュアモード230は、例えば、シークレットキーが利用される、任意の暗号文の暗号法の実行を安全に行うために利用されてもよい(例えば、プライベートキーがプライベートメモリ150に保存されてもよい)。
最終コードをデバッキングする(例えば、JTAGエミュレーションを利用して)ための方法800は、図8に関連して後に示される。
セキュアステートマシン200は、セキュアモード230からオープンモード210へ復帰するように遷移205してもよい。いくつかの態様では、セキュアモード230からセキュアエントリーモード220への直接経路が存在しなくてもよい。
セキュアエントリーモード220の間は、認証プロセスは、セキュアモード230へ遷移する前に行われてもよい。いくつかの態様では、デジタル署名認証は、電子メッセージの信頼性の決定、およびメッセージ署名者の確認のために利用される。例えば、メッセージおよびデジタル署名は、I/Oポートを介してマイクロプロセッサ100に送信され、メモリ(例えば、メモリ140)に保存されてもよい。この形式の認証を利用する場合は、メッセージは、署名者により生成されるデジタル署名に関連してもよい。デジタル署名は、メッセージおよび署名者に特有であり、よって両方が認証される。
デジタル署名は、パブリックキー暗号(すなわち、非対称暗号)技術を利用して生成および照合される。非対称暗号は、2つの異なる、しかし数学的に関連したキー:パブリックキーおよびプライベートキーを利用したアルゴリズムを採用している。プライベートキーは、デジタル署名の生成、またはデータを一見理解不能な形式に変換するために利用される。パブリックキーは、デジタル署名の照合をおこなうか、またはメッセージをその元の形式に戻す。
デジタル署名の利用は、通常2つの工程を含み、1つは署名者によって、もう1つはデジタル署名の受信者によって実行される。いくつかの態様では、デジタル署名は、図3Aに示される工程300に従って生成される。署名されるメッセージ301の境界(bounds)が一度定義されると、ハッシュ関数310が、入力メッセージ301に特有のハッシュ値303を計算する。ハッシュ値303は、メッセージ301の“デジタル指紋”である。一般的に、ハッシュ値303は、メッセージよりずっと小さい標準的な長さであるが、十分に特有なものである。ハッシュ関数310は、例えばSHA-1(secure
hashing algorithm)のような一方向ハッシュ関数でもよい。“一方向ハッシュ関数”と呼ばれることもある、セキュアなハッシュ関数の場合、そのハッシュ値の知識から元のメッセージ301をコンピュータ的に導き出すことは不可能である。よってハッシュ関数は、デジタル署名を生成するためのソフトウェアが、小さくて予測可能な量のデータ上で動作することを可能にしながら、さらに元のメッセージ内容との強固な相関関係の証拠を提供するため、その結果、メッセージがデジタル的に署名されてから、変更がないことの保証を効果的に提供することができる。
次に、署名生成ソフトウェア320は、プライベートキー302を利用して、ハッシュ値303をデジタル署名305に変換する。プライベートキー302および対応するパブリックキー304(図3B)は、例えば、楕円曲線暗号(ECC)を利用して生成されてもよい。デジタル署名305は、メッセージ301およびそれを生成するために利用されるプライベートキー302の両方に特有なものである。ECCが、プライベートキーおよびパブリックキーを生成するために利用される場合は、楕円曲線暗号は、プライベートキー302およびハッシュ値303から、デジタル署名305を生成するために利用されてもよい。
デジタル署名305(デジタル的に署名されたメッセージのハッシュ結果)は、メッセージ301に添付され、メッセージ301と共に保存されるか、または送信されてもよい。しかしながら、それはまた、メッセージ301との信頼できる関係性を維持できる限り、別個のデータ要素として送信または保存されてもよい。
デジタル署名の照合は、デジタル署名を生成するために利用されたハッシュ関数と同一であるハッシュ関数330を用いて、受信したメッセージ306の新しいハッシュ値308を計算することにより達成される。パブリックキー304および新しいハッシュ値308を利用して、照合ソフトウェア340は、デジタル署名305が、パブリックキー304に関連するプライベートキー302を利用して生成されたかどうか、および新たに計算されたハッシュ値308が、デジタル署名生成工程300の間に、デジタル署名305に変換された元のハッシュ値303に一致するかどうかのチェックを行う。パブリックキー304を利用して、デジタル署名305が、元のハッシュ値303に復号されてもよい。
受信したメッセージ306が元のメッセージ301から変更された場合、変更は必ずハッシュ値308に影響を及ぼし、同じハッシュ関数が利用された場合は、異なる結果を作り出す。メッセージおよびデジタル署名はパブリックキーと一致せず、照合は失敗する。これは、オープンモード210への次の遷移につながってもよい。
セキュアステートマシン200、デジタル署名生成工程300、およびデジタル署名照合工程350の概略が提供され、セキュリティー工程を実行する方法400が、図4に関して示される。方法400は、デジタル署名認証のために実行されてもよい。方法400は、例えば、許可されたユーザーがセキュアモード230においてマイクロプロセッサ100のコードを実行したい場合に実行されてもよい。
方法400は、マイクロプロセッサ100の外側(“オフチップ”)で任意に実行されてもよい、ステップ402および404を含む。ステップ408、410および412は、デジタル署名認証のために“オンチップ”で実行されてもよいステップに対応する。
ステップ402において、認証されるメッセージ(例えば、コード)の一方向ハッシュは、任意の適切なハッシュ関数を利用して作成される。例えば、ハッシュ関数は、SHA-1(secure hash algorithm)のような一方向ハッシュ関数であってもよい。ステップ402は、ホスト190(図1Cおよび1D)により任意選択的に実行されてもよい。認証されるメッセージは、実行可能なコードであってもよい。適切なハッシュ関数は、ハッシュ値を出力してもよい。
ステップ406において、メッセージおよびデジタル署名は、マイクロプロセッサ100によりアクセス可能なメモリに転送される。例えば、メッセージおよびデジタル署名は、プロセッサメモリ140に保存されてもよい。いくつかの態様では、マイクロプロセッサ100に転送される前に、メッセージおよびデジタル署名は、転送を促進するために、外部ホスト190(図1Cおよび1D)またはオンボードメモリデバイス(例えば、図1Bのフラッシュメモリ182)に保存されてもよい。いくつかの態様では、ステップ406の完了は、マイクロプロセッサ100のオープンモード210からセキュアエントリーモード220へのスイッチを引き起こすようにしてもよい。
ステップ410において、デジタル署名は、パブリックキーおよび復号アルゴリズムを利用して復号化されてもよい。復号化されたデジタル署名は、ステップ402において生成されたハッシュ値であってもよい。パブリックキーは、パブリックメモリ150に保存されてもよい。任意の適切な復号アルゴリズムが利用されてもよい。復号アルゴリズムは、ステップ404において利用された暗号アルゴリズムと同じアルゴリズムを基にしてもよい。例えば、楕円曲線暗号が利用されてもよい。
ステップ414において、一度署名の検証が成功すると、セキュアステートマシン200は、セキュアエントリーモード230に入ってもよい。セキュアモード230に入ると、プライベートメモリ150へのアクセスは選択的に有効にしてもよい。いくつかの態様では、セキュアモード230においてプライベートメモリ150へアクセス可能かどうかの決定は、レジストリフィールドまたは任意の他の適切な指標に基づいて利用可能であってもよい。また、セキュアモード230へ入ると、エミュレーション命令(例えば、プライベートのJTAG命令)の実行は、選択的に無効にしてもよい。いくつかの態様では、セキュアモード230においてエミュレーション命令が実行されるかどうかの決定は、レジストリフィールドまたは任意の他の適切な指標に基づいて行われてもよい。いくつかの態様では、認証されたメッセージは、CPU110において実行可能なコードであってよい。いくつかの態様では、認証されたコードは、セキュアモード230において実行可能であってもよい。
図5は、マイクロプロセッサ500の一態様のブロック図である。マイクロプロセッサ500は、マイクロプロセッサ100(図1A)の1つの態様例である。マイクロプロセッサ100の要素と同じ操作記述を共有する要素は、共通の参照番号を共有する。
マイクロプロセッサ500は、中央演算処理装置(CPU)110、レジスタ120、I/Oポート130およびプロセッサメモリ140を備える。
マイクロプロセッサ500のレジスタ120は、PCレジスタ122、システムスイッチレジスタ124、制御レジスタ126、および状態レジスタ128を含む。各レジスタは、それと関係するビットのセットを備えていてもよい。各ビットおよびビットのサブセットは、レジストリフィールドのステートを示していてもよい。プロセッサメモリ140は、ワンタイムプログラマブル(OTP)メモリ510、レベル1(L1)キャッシュ520、およびレベル2(L2)キャッシュ560を含んでもよい。
L1キャッシュ520は、L1読み取り専用メモリ(ROM)530、L1データバンクA540、およびL1データバンクB550を含んでもよい。
デジタル署名認証が実行される態様において、デジタル署名およびメッセージは、任意の適切なメモリの場所に保存されてもよい。いくつかの態様では、デジタル署名およびメッセージは、格納スペース541および542のL1データバンクA540それぞれに保存されてもよい。メッセージおよび署名もまた、もしくはもう1つの方法として、L2 560または任意の他の適切な場所に保存されてもよい。
システムスイッチレジスタ124、制御レジスタ126、および状態レジスタ128は、図6A、図6B、および図6Cに関連してそれぞれ示される。レジスタ124、126、および128の各フィールドは、2進値を利用してもよい。いくつかの態様では、論理“0”は、“クリア”ステートを示し、一方で、論理“1”は、“セット”ステートを示す。言うまでもなく、任意の適切な論理的な記録、およびステートを保存するための任意の適切な物理的態様が利用されてもよい。
図6Aは、システムスイッチレジスタ124“SECURE_S YSSWT”のいくつかの態様に存在する、レジストリフィールドのいくつかを示すブロック図である。システムスイッチレジスタ124は、フィールド641-645“EMUDABL”、“EMUOVR”、“RSTDABL”、“DMAOVR”および“OTPSEN”のそれぞれを含んでもよい。
フィールド621、EMUDABL(“エミュレーション無効”)は、エミュレーションが無効の場合を示す。クリア(例えば、“0”)の場合、EMUDABLは、実行された場合に認識されるエミュレーション命令(例えば、プライベートJTAGエミュレーション命令)を示す。セット(例えば、“1”)の場合、EMUDABLがアサートされ、エミュレーション命令が無視される。オープンモード210に入ると、EMUDABLはクリアされる。セキュアモード230に入ると、EMUDABLは、EMUOVRを基に決定される。
フィールド643、RSTDABL(“リセット無効”)は、どのように外部リセットが行われるかを決定してもよい。クリアの場合は、リセットは標準的に行われる。セットの場合は、リセットは、NMIイベントを保存するNMIピンにリダイレクトされる。RSTDABLは、セキュアモードに入るとセットされ、オープンモードに入るとクリアされる。
フィールド645、OTPSEN(“シークレット有効”)は、プライベートメモリ150が読み込み可能でプログラム可能(例えば、OTPSENがセットの場合)、またはアクセス不可能(例えば、OTPSENがクリアの場合)であるかを決定する。セキュアモードでのみ書き込み可能である。
フィールド661、SECURE0は、書き込み専用ビットである。SECURE0は、セキュアエントリーモードにおいてのみセットされてもよい。SECURE0がクリアになった場合、フィールド661-664(例えば、制御レジスタ126内のすべてのSECUREビット)はクリアされ、オープンモードに入る。最初にSECURE0がセットされた場合、SECURE1がセットされる。次のSECURE0のセットは、SECURE2のセットをもたらす。
図6Cは、状態レジスタ128、“SECURE_STATUS”のいくつかの態様に存在する、いくつかのレジストリフィールドを示すブロック図である。状態レジスタ128は、フィールド681-684、それぞれ“SECMODE”、“NMI”、“AFVALID”および“AFEXIT”を含んでもよい。
フィールド681、SECMODE(“セキュアモード制御ステート”)は、セキュアステートマシン200の現在のステートを示す2ビットの読み込み専用フィールドである。いくつかの態様では、“00”は、セキュアステートマシンがオープンモードであることを示し、一方で、“01”および“10”は、それぞれセキュアエントリーおよびセキュアモードを示す(“11”は、リザーブドステートである)。
フィールド683、AFVALID(“認証ファームウェア有効”)は、認証の状態を反映する、読み込み専用ビットである。クリアされた場合、認証が正確に始まらないか、または割り込みが入る。セットされた場合、認証が有効になり、正確に進行し、割り込みはない。
フィールド684、AFEXIT(“認証ファームウェア終了”)は、認証ファームウェアからの不適切な終了が行われた場合にセットされる。例えば、セキュアステートマシン200が、AFEXITのセットを検出すると、セキュアエントリーモードを終了しオープンモードへ戻ってもよい。
図7は、マイクロプロセッサ700のブロック図である。マイクロプロセッサ700は、マイクロプロセッサ100(図1A)の態様例である。マイクロプロセッサ700は、ハードウェア、ソフトウェア、またはその両方の任意の適切な組み合わせであってもよい要素を含む。マイクロプロセッサ100の要素と同じ操作記述を共有する要素は、共通の参照番号を共有しているであろう。いくつかの態様では、マイクロプロセッサ700の要素は、マイクロプロセッサ200および/またはマイクロプロセッサ500からの要素の任意の適切な組み合わせを利用して実行してもよい。
マイクロプロセッサ700は、CPU110、I/Oポート130、動作モジュール705、実行モジュール710、メッセージストア715、署名ストア720、アクセスモジュール725、ハッシュモジュール730、復号モジュール735、プライベートメモリ745、およびエミュレーション制御モジュール750を備えてもよい。いくつかの態様では、アクセスモジュール725、ハッシュモジュール730、および復号モジュール735は、ファームウェア740の一部である。
メッセージストア715および署名ストア720は、認証されるメッセージおよびメッセージのデジタル署名それぞれを保存してもよい。メッセージストアおよび署名ストアは、メモリ140を介して実行してもよい。いくつかの態様では、メッセージストアおよび署名ストアは、L1 520および/またはL2 560(図5)の一部である。
セキュアアクセスモジュール725は、ハッシュモジュール730および/または復号モジュール735を呼び出してもよい。呼び出しは、実行されるモジュールのアドレスと共に実行モジュール710を更新することにより行われてもよい。
ハッシュモジュール730は、メッセージをハッシュし、ハッシュ値を出力してもよい。ハッシュモジュール730は、SHA-1アルゴリズムまたは任意の適切なハッシュアルゴリズムを実装してもよい。
復号モジュール735は、認証されたメッセージ送信者のパブリックキーを利用して、メッセージのハッシュ値とデジタル署名を認証してもよい。いくつかの態様では、復号モジュール735は、楕円曲線暗号を利用して、パブリックキーと、メッセージ/デジタル署名の組を認証してもよい。
セキュアアクセスモジュール725が、メッセージ/デジタル署名の組の信頼性を照合する場合、動作モジュール705はセキュアモード230に入ってもよい。
セキュアモードにおいて、プライベートメモリ領域745は、読み込みおよび/または書き込みアクセス可能であってもよい。プライベートメモリ領域745のアクセスのしやすさは、例えば、セキュアモード230においてOTPSENフィールド645により決定されてもよい。いくつかの態様では、プライベートメモリ領域745のための読み込みおよび書き込み命令は、オープンモード210およびセキュアエントリーモード220において中断/拒否されてもよい。いくつかの態様において、プライベートメモリ領域745は、ワンタイムプログラマブル(OTP)メモリ配列510(図5)の少なくとも一部であってもよい。
セキュアアクセスモジュールが、メッセージおよびデジタル署名の組が本物でないことを決定、または任意の人物(例えば、割り込みを実行するために)のために認証プロセスを中止する場合、動作モジュール705は、セキュアエントリーモード220からオープンモード210へスイッチしてもよい。いくつかの態様では、セキュアアクセスモジュール725は、認証プロセスが失敗した場合、AFVALID、状態レジスタ128のフィールド683をクリアする。クリアされたAFVALIDは、動作モジュール705に対して、オープンモード210へ戻ることを示してもよい。
セキュアアクセスモジュール725、ハッシュモジュール730および復号モジュール735は、ファームウェア740の一部であってもよい。いくつかの態様では、ファームウェア740は、これらのモジュールと共に改ざんを防止するリードオンリーメモリ(ROM)である。
利用者は、コードの最終バージョンをセキュアモードでテストすることを望むかもしれない。テストは、実行が利用者によって綿密に観察されるように、エミュレーションが有効になることを要求してもよい。図8に示される方法800は、例えば、セキュアモードでファイナルバージョンのコードのテストをするために実行されてもよい。
ステップ802の最初は、マイクロプロセッサ100は、オープンモード210であると仮定される。いくつかの態様では、エミュレーション(例えば、JTAGエミュレーション)は、セキュアモードへ入ると、デフォルトで無効にされてもよい。エミュレーションがセキュアモードにおいて利用可能であることを保証するために、システムスイッチレジスタ124内のEMUOVRフィールド642がセットされてもよい。
一度コードが認証されると、ステップ804において、EMUOVRをセットするコードが実行される。
EMUOVRのセットが行われると、マイクロプロセッサ100は、ステップ808においてオープンモードに戻る。利用者は、対応するデジタル署名にしたがってデバッグされる最終コードをアップロードしてもよい。
ステップ810において、マイクロプロセッサは、セキュアエントリーモードに入り、最終コードおよび対応するデジタル署名を認証する。
一方で、最終コードがEMUDABLをクリアするための命令に追加されてもよいことが知られており、したがって、セキュアモードへ特別に入ることを排除し、これが、実際には、最終コードを無効にする。方法800は、セキュアモードにおいて、利用者が実際の最終コードをデバッグすることを可能にする。
発明の少なくとも1つの実施態様が示されたが、様々な修正、変更、および改良は、当業者により容易になされ得るであろう。
いくつかの態様では、メッセージ(例えば、図3Aのメッセージ301)は、任意の適切な暗号アルゴリズムを利用して、それ自体が暗号化されてもよい。いくつかの態様では、メッセージの暗号化およびデジタル署名の利用は、プライバシーおよび信頼性の両方を確実にしてもよい。共通鍵暗号(symmetric-key algorithm)が暗号化のために利用されてもよい。暗号化のために利用されてもよい暗号化規格の例は、新暗号規格(AES)、データ暗号化標準(DES)を含む。いくつかの態様では、暗号化されたメッセージは、セキュアモード230(図2)およびプライベートメモリ150(図1A)へのアクセスを提供しながら最初に認証される。プライベートメモリは、復号化のために必要な共通鍵を保存してもよい。
マイクロプロセッサ100は、システムオンチップ、コンピュータオンチップ、マイクロコントローラ、および同類のものとして具現化されてもよい。いくつかの態様では、マイクロプロセッサ100は、アナログデバイセズのBlackfin processor(登録商標)である。
マイクロプロセッサ100は、任意のハードウェアおよび/またはソフトウェアデバッグツールと互換性があってもよい。デバッグおよび/またはエミュレーション命令は、デバッグポート134を介して受信してもよい。マイクロプロセッサ100は、IEEE 1149.1 J-TAG 標準と互換性があってもよい。いくつかの態様では、JTAG命令は、デバッグポート134を介して受信される。
いくつかの態様では、プライベートメモリ領域のサイズおよび/または場所は、選択可能である。
SECURE_SYSSWTレジスタは、アドレスマップ0xFFC04320のメモリを備える32ビットレジスタであってもよい。表1は、いくつかの態様にしたがった、レジスタ内の各ビットの機能の概要を提供する。
Claims (21)
- プロセッサのリソースへのセキュアアクセスを提供するセキュアモードを含む、複数のモードで動作するように構成されるプロセッサであって、
署名者によって署名されるメッセージおよびファームウェアコードを保存するように構成されるメモリ、
第一ステートおよび第二ステートを含む、複数のステートの中の1つのステートを示すように構成された第一レジスタビットであって、プライベートエミュレーション命令が実行される場合は第一ステートを示すように構成され、プライベートエミュレーション命令が無視される場合には第二ステートを示すように構成される、前記第一レジスタビット、
次のセキュアモードへ入る時に、第一レジスタビットが第一ステートを示すか、または第二ステートを示すかを制御する、第二レジスタビット、および
セキュアモード以外でメッセージを認証するためのファームウェアコードを実行し、メッセージの認証が成功すると、第二レジスタビットに従って第一レジスタビットを設定し、セキュアモードに入るように構成される、論理ユニット
を含む、前記プロセッサ。 - 第二レジスタビットが、セキュアモードにおいてのみ書き込み可能であって、次のセキュアモードへ入る時に第一レジスタビットが第一ステートを示すように制御するためのものである、請求項1に記載のプロセッサ。
- メッセージがソフトウェアコードであり、論理ユニットがさらに、セキュアモードに入った後にソフトウェアコードを実行するように構成される、請求項2に記載のプロセッサ。
- ソフトウェアコードが、セキュアモードで実行される場合に、次のセキュアモードへ入る時に第一レジスタビットが第一ステートを示すように制御するために、第二レジスタビットをセットする、請求項3に記載のプロセッサ。
- プロセッサがさらに、プライベートエミュレーション命令を受信し、論理ユニットにプライベートエミュレーション命令を提供するように動作可能に構成されるデバッグポートを含み、論理ユニットが、第一レジスタビットに従ってプライベートエミュレーション命令を実行するように構成される、請求項1に記載のプロセッサ。
- デバッグポートおよびプライベートエミュレーション命令がJTAG標準に従う、請求項1に記載のプロセッサ。
- メモリがさらにデジタル署名を保存するように構成され、
ファームウェアコードがコンピュータ実行可能な命令を含み、論理ユニットにより実行される場合に、
メッセージからハッシュ値を決定する、
パブリックキーと共にデジタル署名を復号化する、および
復号化されたデジタル署名をハッシュ値と比較する
ことを含む方法を実行することによって、メッセージを認証する、請求項1に記載のプロセッサ。 - セキュアモードにおいてのみアクセス可能なプライベートメモリ領域をさらに含む、請求項1に記載のプロセッサ。
- プロセッサが、論理ユニットにより実行可能な命令のメモリアドレスを保存するためのプログラムカウンターをさらに含み、論理ユニットが、ファームウェアコードを実行する間に、プログラムカウンターに保存されるメモリアドレスが、ファームウェアコードのメモリアドレスと一致しない場合に、ファームウェアコードの実行を中止するように構成される、請求項1に記載のプロセッサ。
- セキュアモードを含む、複数のモードで動作可能であるマイクロプロセッサの動作方法であって、
(a)セキュアモード外で、署名者によって署名されるメッセージを認証する、
(b)動作(a)が正常に完了すると、セキュアモードに入り、プライベートエミュレーション命令が実行されるかまたは無視されるかの定義を制御する第一のレジスタから第一のステートを読み込み、第一のステートに基づいて、第二のレジスタに第二のステートを書き込み、第一のレジスタはセキュアモードにおいてのみ第一のステートに書き換え可能であり、第二のステートがエミュレーション命令が実行されることを定義する、
(c)セキュアモードにおいて、エミュレーション命令が、第二のレジスタの読み込みに基づいて実行されることを決定する
動作を含む、前記マイクロプロセッサの動作方法。 - (d)動作(a)の前のセキュアモードにおいて、第一のステートを第一のレジスタに書き込むように構成された利用者により入力されるセットアップコードを実行し、第一のステートが、次のセキュアモードの期間においてエミュレーション命令が実行されることを示す、および
(e)セキュアモードを終了する
動作をさらに含む、請求項10に記載の方法。 - メッセージがプロセッサにより実行可能なターゲットコードを含み、動作方法が、
(d)セキュアモードにおいて、ターゲットコードを実行する、および
(e)動作(c)の次に、エミュレーション命令を実行することを更に含み、エミュレーション命令は実行される場合にターゲットコードの実行を制御するように構成されているものである、請求項10に記載の方法。 - 動作(a)が、
メッセージのためのハッシュ値を決定する、
パブリックキーと共にデジタル署名を復号化する、および
復号化されたデジタル署名をハッシュ値と比較する
動作を含む、請求項10に記載の方法。 - ハッシュ値がSHA-1ハッシュアルゴリズムを利用して決定され、デジタル署名が楕円曲線暗号を利用して復号化される、請求項13に記載の方法。
- 動作(b)がさらに、第三のレジスタに保存された値に基づいて、プライベートメモリへのアクセスを選択的に有効にすることを含む、請求項10に記載の方法。
- セキュアモードを含む、複数のモードで動作可能であるプロセッサであって、
プライベートエミュレーション命令が実行される場合は第一値を保存し、プライベートエミュレーション命令が無視される場合は第二値を保存するように構成された、第一メモリ、
プロセッサがセキュアモードへ入る時に、第一メモリが第一値を保存するか、または第二値を保存するかを制御するように構成された、第二メモリ、および
プロセッサがセキュアモードへ入る時に、第二メモリに基づいて第一メモリをセットする、論理ユニット
を含む、前記プロセッサ。 - 第一メモリが、プロセッサがセキュアモードで動作している時のみ、第一値に書き込み可能である、請求項16に記載のプロセッサ。
- ファームウェアを保存するROMをさらに含み、論理ユニットが、セキュアモードに入る認証を行うファームウェアコードを実行するように構成される、請求項16に記載のプロセッサ。
- 論理ユニットにより実行される場合に、ファームウェアコードが、署名者によって署名されるメッセージの信頼性を決定し、メッセージが承認されない場合はセキュアモードへ入ることを認めない、請求項18に記載のプロセッサ。
- セキュアモード動作において、プロセッサ内のターゲットコードをデバッグする方法であって、プロセッサが、プライベートエミュレーション命令が実行または無視されるかを定義する第一メモリ、および、次のセキュアモードの期間において、第一メモリのプライベートエミュレーション命令が実行または無視されるかの定義を制御する第二メモリを含み、プロセッサが、セキュアモードを含む複数のモードで動作可能であり、
(a)利用者により入力されるセットアップコードを認証し、セキュアモードに入る、
(b)セキュアモードにおいてセットアップコードを実行し、セットアップコードが、セキュアモードの次の期間において、プライベートエミュレーション命令が実行されることを示すように第二メモリをセットするように構成する、
(c)セキュアモードを終了する、
(d)ターゲットコードを認証する、
(e)動作(d)の次に、第二メモリに基づいて第一メモリをセットし、セキュアモードに入る、および
(f)動作(e)の次に、セキュアモードにおいて、ターゲットコードの実行を、プライベートエミュレーション命令を介して制御する
動作を含む、前記方法。 - プライベートエミュレーション命令が、プライベートJTAGエミュレーション命令である、請求項10に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US6392508P | 2008-02-07 | 2008-02-07 | |
US61/063,925 | 2008-02-07 | ||
PCT/US2009/000768 WO2009099647A1 (en) | 2008-02-07 | 2009-02-06 | Method and apparatus for controlling system access during protected modes of operation |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2011511383A JP2011511383A (ja) | 2011-04-07 |
JP2011511383A5 JP2011511383A5 (ja) | 2012-03-22 |
JP5607546B2 true JP5607546B2 (ja) | 2014-10-15 |
Family
ID=40527544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010545881A Expired - Fee Related JP5607546B2 (ja) | 2008-02-07 | 2009-02-06 | 保護された動作モードの間にシステムアクセスを制御するための方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20090204823A1 (ja) |
EP (1) | EP2248063B1 (ja) |
JP (1) | JP5607546B2 (ja) |
CN (1) | CN101978377B (ja) |
WO (1) | WO2009099647A1 (ja) |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5059532B2 (ja) * | 2007-09-26 | 2012-10-24 | ルネサスエレクトロニクス株式会社 | 半導体集積回路 |
US8762620B2 (en) | 2007-12-27 | 2014-06-24 | Sandisk Enterprise Ip Llc | Multiprocessor storage controller |
US8484486B2 (en) * | 2008-08-06 | 2013-07-09 | Silver Spring Networks, Inc. | Integrated cryptographic security module for a network node |
US8732806B2 (en) * | 2009-09-14 | 2014-05-20 | Broadcom Corporation | Method and system for hardware enforced virtualization in an integrated circuit |
KR101636517B1 (ko) * | 2009-11-13 | 2016-07-06 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 디버그 정보 처리 방법 |
US9202015B2 (en) * | 2009-12-31 | 2015-12-01 | Intel Corporation | Entering a secured computing environment using multiple authenticated code modules |
US9323533B2 (en) * | 2011-12-29 | 2016-04-26 | Intel Corporation | Supervisor mode execution protection |
US9246675B2 (en) * | 2012-04-12 | 2016-01-26 | Jintai Ding | Cryptographic systems using pairing with errors |
US20130305222A1 (en) * | 2012-05-11 | 2013-11-14 | Microsoft Corporation | Development System |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
KR20140073384A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법 |
US9881161B2 (en) | 2012-12-06 | 2018-01-30 | S-Printing Solution Co., Ltd. | System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
KR102102179B1 (ko) | 2013-03-14 | 2020-04-21 | 삼성전자 주식회사 | 임베디드 시스템, 이를 포함하는 인증 시스템, 및 인증 방법 |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9395805B2 (en) * | 2013-03-15 | 2016-07-19 | Seagate Technology Llc | Device sleep partitioning and keys |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US20150052616A1 (en) | 2013-08-14 | 2015-02-19 | L-3 Communications Corporation | Protected mode for securing computing devices |
US9407638B2 (en) | 2013-08-26 | 2016-08-02 | The Boeing Company | System and method for trusted mobile communications |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
EP2843429B1 (en) | 2013-09-03 | 2016-11-23 | Telefonaktiebolaget LM Ericsson (publ) | Enabling secured debug of an integrated circuit |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9344439B2 (en) * | 2014-01-20 | 2016-05-17 | The Boeing Company | Executing unprotected mode services in a protected mode environment |
KR102228454B1 (ko) | 2014-02-24 | 2021-03-16 | 삼성전자주식회사 | 보안 디버깅 회로를 갖는 디바이스 및 그것에 대한 디버깅 방법 |
US9703636B2 (en) * | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US20150331043A1 (en) * | 2014-05-15 | 2015-11-19 | Manoj R. Sastry | System-on-chip secure debug |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US9734313B2 (en) | 2014-06-16 | 2017-08-15 | Huawei Technologies Co., Ltd. | Security mode prompt method and apparatus |
CN105335672B (zh) * | 2014-06-16 | 2020-12-04 | 华为技术有限公司 | 一种安全模式提示方法及装置 |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9870475B2 (en) * | 2014-06-25 | 2018-01-16 | Intel Corporation | Hardware configuration reporting systems |
US9785801B2 (en) * | 2014-06-27 | 2017-10-10 | Intel Corporation | Management of authenticated variables |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
KR102251812B1 (ko) | 2015-01-26 | 2021-05-13 | 삼성전자주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
GB2539199B (en) * | 2015-06-08 | 2018-05-23 | Arm Ip Ltd | Apparatus and methods for transitioning between a secure area and a less-secure area |
US9989592B2 (en) * | 2015-12-18 | 2018-06-05 | Intel IP Corporation | Interfaces for wireless debugging |
US10776524B2 (en) * | 2016-01-14 | 2020-09-15 | Intel Corporation | Secure communication channel for system management mode |
CN105843112B (zh) * | 2016-03-15 | 2018-07-13 | 珠海格力电器股份有限公司 | 一种mcu、终端和控制方法 |
CN106295259B (zh) * | 2016-08-03 | 2019-02-12 | 杭州晟元数据安全技术股份有限公司 | 一种利用不可屏蔽中断提高物联网产品安全性的方法 |
US10346345B2 (en) | 2017-05-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Core mapping |
US10353815B2 (en) * | 2017-05-26 | 2019-07-16 | Microsoft Technology Licensing, Llc | Data security for multiple banks of memory |
US10587575B2 (en) | 2017-05-26 | 2020-03-10 | Microsoft Technology Licensing, Llc | Subsystem firewalls |
US20190007212A1 (en) | 2017-06-30 | 2019-01-03 | Intel Corporation | Secure unlock systems for locked devices |
KR102401088B1 (ko) * | 2017-08-02 | 2022-05-24 | 삼성전자주식회사 | 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법 |
US10783240B2 (en) * | 2017-09-29 | 2020-09-22 | Stmicroelectronics, Inc. | Secure environment in a non-secure microcontroller |
US20190108009A1 (en) * | 2017-10-05 | 2019-04-11 | Harman International Industries, Incorporated | Generating checksums on trusted storage devices for accelerated authentication |
KR102030074B1 (ko) * | 2017-11-10 | 2019-10-08 | 현대오트론 주식회사 | 레지스터 쓰기 오류 방지 장치 및 방법 |
CN110489351B (zh) * | 2018-05-14 | 2021-03-09 | 英韧科技(上海)有限公司 | 芯片指纹管理装置及安全芯片 |
US11144631B2 (en) | 2018-09-11 | 2021-10-12 | Apple Inc. | Dynamic switching between pointer authentication regimes |
GB2579034B (en) * | 2018-11-15 | 2021-05-05 | Trustonic Ltd | Software installation method |
US11113385B2 (en) * | 2018-12-21 | 2021-09-07 | Paypal, Inc. | Communicating trace information between security zones |
US11263308B2 (en) * | 2019-03-25 | 2022-03-01 | Micron Technology, Inc. | Run-time code execution validation |
US11797713B2 (en) * | 2020-12-16 | 2023-10-24 | International Business Machines Corporation | Systems and methods for dynamic control of a secure mode of operation in a processor |
US11921655B2 (en) | 2021-05-04 | 2024-03-05 | Stmicroelectronics, Inc. | Dynamic memory protection device system and method |
CN113297091B (zh) * | 2021-06-18 | 2022-04-29 | 海光信息技术股份有限公司 | SoC芯片的调试方法、装置及SoC芯片 |
KR102650003B1 (ko) * | 2021-12-30 | 2024-03-21 | 주식회사 더스팟 | 복호화 데이터 범위에 따른 유저 데이터 수집 방법 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2504191B2 (ja) * | 1989-06-05 | 1996-06-05 | 三菱電機株式会社 | マイクロプロセッサ |
US6205560B1 (en) * | 1996-02-27 | 2001-03-20 | Via-Cyrix, Inc. | Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG |
US6138236A (en) * | 1996-07-01 | 2000-10-24 | Sun Microsystems, Inc. | Method and apparatus for firmware authentication |
US7171021B2 (en) * | 1998-11-20 | 2007-01-30 | Canon Kabushiki Kaisha | Data processing apparatus and method, and storage medium therefor |
JP4260984B2 (ja) * | 1999-06-04 | 2009-04-30 | 株式会社東芝 | 情報処理装置および情報処理方法 |
JP2001034504A (ja) * | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | ソースレベルデバッガ |
JP2001083874A (ja) * | 1999-09-14 | 2001-03-30 | Sony Corp | 情報提供システム、情報規制装置、情報受信装置及び情報提供方法 |
US6925570B2 (en) * | 2001-05-15 | 2005-08-02 | International Business Machines Corporation | Method and system for setting a secure computer environment |
JP2003186693A (ja) * | 2001-12-18 | 2003-07-04 | Mitsubishi Electric Corp | エミュレート機能を有するマイクロコントローラ |
EP1331539B1 (en) * | 2002-01-16 | 2016-09-28 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
US20040003321A1 (en) * | 2002-06-27 | 2004-01-01 | Glew Andrew F. | Initialization of protected system |
JP4423206B2 (ja) * | 2002-11-18 | 2010-03-03 | エイアールエム リミテッド | 安全モードと非安全モードとを切り換えるプロセッサ |
GB0226874D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
US7248069B2 (en) * | 2003-08-11 | 2007-07-24 | Freescale Semiconductor, Inc. | Method and apparatus for providing security for debug circuitry |
US8112618B2 (en) * | 2004-04-08 | 2012-02-07 | Texas Instruments Incorporated | Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making |
GB2416282B (en) * | 2004-07-15 | 2007-05-16 | Hewlett Packard Development Co | Identifier-based signcryption with two trusted authorities |
US7457960B2 (en) * | 2004-11-30 | 2008-11-25 | Analog Devices, Inc. | Programmable processor supporting secure mode |
US7600166B1 (en) * | 2005-06-28 | 2009-10-06 | David Dunn | Method and system for providing trusted access to a JTAG scan interface in a microprocessor |
-
2009
- 2009-02-04 US US12/365,281 patent/US20090204823A1/en not_active Abandoned
- 2009-02-06 JP JP2010545881A patent/JP5607546B2/ja not_active Expired - Fee Related
- 2009-02-06 CN CN200980109601.3A patent/CN101978377B/zh not_active Expired - Fee Related
- 2009-02-06 EP EP09707709.3A patent/EP2248063B1/en not_active Not-in-force
- 2009-02-06 WO PCT/US2009/000768 patent/WO2009099647A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN101978377A (zh) | 2011-02-16 |
US20090204823A1 (en) | 2009-08-13 |
EP2248063A1 (en) | 2010-11-10 |
EP2248063B1 (en) | 2014-04-02 |
CN101978377B (zh) | 2014-07-23 |
JP2011511383A (ja) | 2011-04-07 |
WO2009099647A1 (en) | 2009-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5607546B2 (ja) | 保護された動作モードの間にシステムアクセスを制御するための方法および装置 | |
US11664994B2 (en) | Secure unlock systems for locked devices | |
US11089016B2 (en) | Secure system on chip | |
US7810002B2 (en) | Providing trusted access to a JTAG scan interface in a microprocessor | |
TWI431533B (zh) | 微處理器系統及用以初始化安全操作之方法與處理器 | |
US20230020278A1 (en) | Secure boot assist for devices, and related systems, methods and devices | |
WO2020037612A1 (zh) | 嵌入式程序的安全引导方法、装置、设备及存储介质 | |
US9100174B2 (en) | Secure provisioning in an untrusted environment | |
US7849315B2 (en) | Method for managing operability of on-chip debug capability | |
US9830456B2 (en) | Trust transference from a trusted processor to an untrusted processor | |
US7739517B2 (en) | Hardware-based authentication of a software program | |
US8438658B2 (en) | Providing sealed storage in a data processing device | |
EP1429224A1 (en) | Firmware run-time authentication | |
US9633185B2 (en) | Device having secure JTAG and debugging method for the same | |
KR20100121497A (ko) | 메인 프로세서 및 바인딩된 보안 코프로세서를 포함하는 컴퓨터 시스템 | |
JP4791250B2 (ja) | マイクロコンピュータおよびそのソフトウェア改竄防止方法 | |
JP2011141870A (ja) | 複数の認証済みコードモジュールを利用してセキュアなコンピューティング環境に入る方法 | |
KR101656092B1 (ko) | 비동기적인 인증을 갖는 보안 컴퓨팅 시스템 | |
Ashkenazi | Security Features in the i. MX31 and i. MX31L Multimedia Applications Processors | |
Malipatlolla | SUSTAINABLE TRUSTED COMPUTING | |
Malipatlolla | Sustainable Trusted Computing: A Novel Approach for a Flexible and Secure Update of Cryptographic Engines on a Trusted Platform Module | |
Drennan | Secure Block Storage |
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: 20130731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130910 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131210 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131217 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140110 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140210 |
|
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: 20140729 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140828 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5607546 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 |
|
LAPS | Cancellation because of no payment of annual fees |