JP4226816B2 - マイクロプロセッサ - Google Patents

マイクロプロセッサ Download PDF

Info

Publication number
JP4226816B2
JP4226816B2 JP2001304488A JP2001304488A JP4226816B2 JP 4226816 B2 JP4226816 B2 JP 4226816B2 JP 2001304488 A JP2001304488 A JP 2001304488A JP 2001304488 A JP2001304488 A JP 2001304488A JP 4226816 B2 JP4226816 B2 JP 4226816B2
Authority
JP
Japan
Prior art keywords
task
state
key
program
identifier
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
JP2001304488A
Other languages
English (en)
Other versions
JP2003108442A (ja
Inventor
幹生 橋本
謙作 藤本
健治 白川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2001304488A priority Critical patent/JP4226816B2/ja
Priority to EP02256772A priority patent/EP1298518B1/en
Priority to DE60214640T priority patent/DE60214640T2/de
Priority to KR10-2002-0058773A priority patent/KR100503906B1/ko
Priority to CN02143924A priority patent/CN1410876A/zh
Priority to US10/259,379 priority patent/US7424622B2/en
Publication of JP2003108442A publication Critical patent/JP2003108442A/ja
Priority to US12/118,291 priority patent/US7673155B2/en
Application granted granted Critical
Publication of JP4226816B2 publication Critical patent/JP4226816B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • 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
    • G06F21/72Protecting 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 in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • 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/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、マルチタスクのプログラム実行環境下で、実行コードや処理対象であるデータの不正な改変を防止することのできる耐タンパマイクロプロセッサに関する。
【0002】
【従来の技術】
PCなどの一般ユーザ向けコンピュータのハードウェア情報や、オペレーションシステム(以下、「OS」とする)のシステムプログラム情報が、特に秘密にされることなく開示されているオープンシステムが広く普及している。オープンシステムでは、エンドユーザがシステムプログラムを変更して、所望の改良を加えることができる。このような環境下で、アプリケーションプログラムが扱う情報の著作権や、プログラム自体の著作権を保護するには、あらかじめシステムのOSがアプリケーションに対して敵対的動作をとり得ることを想定した秘密保護能力のあるハードウェアが必要である。実際、このような秘密保護機能を有するハードウェア、特にマイクロプロセッサが提案されている(特許出願第2000−35398号,Lie et al., “Architectural Support for Copy and Tamper Resistant Software”;Computer Architecture News 28(5):p168- 等)。
【0003】
秘密保護能力を有するマイクロプロセッサは、マルチタスク環境下で、プログラム自体やプログラムが扱う情報が不正に覗き見され、改変されないように、これらの情報を暗号化する機能を備えている。このようなマイクロプロセッサを、耐タンパプロセッサと呼ぶ。
【0004】
耐タンパプロセッサの主目的は、エンドユーザのシステムで動作するアプリケーションを保護することにより、プログラムやコンテンツ、ネットワークサービスの権利者の権利を保護することである。具体的には、(1)プログラムに実装されたアルゴリズムの保護、(2)プログラムに埋め込まれたトレードシークレットや、コンテンツの保護、(3)プログラム動作の改変からの保護、の3つが挙げられる。
【0005】
プログラムに実装されたアルゴリズムの保護は、プログラムの権利者を保護するために必要である。プログラムに埋め込まれたトレードシークレットの保護は、プログラムが扱うコンテンツの不正コピーを防止するために必要である。不正な改変からの保護は、たとえばサービスプロバイダの権利を保護するために必要である。
【0006】
ネットワークサービスを利用するプログラムが、課金情報をサーバとやりとりするようなアプリケーションでは、特に、課金情報の送信動作を正しく実行し、不正な改変を防止することが重要である。実際の例として、PCでDVDを再生するプログラムが解析され、そこからDVDの暗号を解読するためのトレードシークレットが読みとられて不正にDVDをコピーするプログラム(DeCSS)が作られたことはよく知られている。
【0007】
オープンシステムにおいて、単純にアプリケーションプログラムの秘密を保護する機構は従来から提案されているが、本件の出願人は、ひとつのシステム上で複数のプログラム(複数の異なるプログラムベンダからのプログラムあるいは単一のベンダからの複数の異なるプログラム)が擬似並列的に動かされる場合に、その各々について、システムの資源を管理するOSからも独立に秘密を保護する保護環境を提案してきた(特許出願第2000−35398号、第2000−135010号、第2000−333635号、第2001−024480号など)。このような保護環境を、「マルチパーティアプリケーション保護環境」と呼ぶ。
【0008】
図18は、一般的なマルチパーティのアプリケーション保護環境を示す。図18において、ユーザ12が、複数のソフトウェアベンダ21−1〜21−nのうち、ベンダ1(21−1)からプログラムをする購入すると場合を例にとる。ユーザ12が使用するシステム2は、マイクロプロセッサAを内蔵し、マイクロプロセッサAは、このプロセッサに固有の秘密鍵Aを有する。秘密鍵Aに対応する公開鍵Aは、公開されている。
【0009】
ソフトウェアベンダ1はプログラム22−1を開発し、暗号鍵としてプログラム鍵1を選択し、平文プログラム22−1を暗号化して暗号プログラム23−1を作成する。次に、プログラム鍵1を、配布先システム2のプロセッサAに固有の公開鍵Aで暗号化して、配布鍵25−1を作成する。
【0010】
図示はしないが、ソフトウェアベンダ1はプログラム22−1の他にも、複数の異なるプログラムを開発しており、それぞれプログラムに応じたプログラム鍵を選択して、暗号化プログラムと配布鍵を作成する。ここでは、説明の便宜上、ひとつのプログラムについて説明する。
【0011】
ソフトウェアベンダ1は、暗号化したプログラム23−1と、暗号化した配布鍵25−1とを、ネットワークを介して、ターゲットシステム2に配信する。配信されたプログラム23−1と配布鍵25−1は、システムの二次記憶(たとえば、ハードディスク)7に格納される。プログラム23−1は、実行コードとデータ(初期化データ等)を含み、実行時に、マイクロプロセッサ3の外にある外部メモリ8上に、暗号化されたままの状態で読み込まれる。外部メモリ8上の暗号化されたプログラムを保護プログラムと称する。
【0012】
マイクロプロセッサAは、配布鍵25−1を読み込み、公開鍵Aに対応する秘密鍵Aによってこれを復号してプログラム鍵1を得る。鍵の復号処理はマイクロプロセッサ内の保護ロジック(コア)6で行なわれる。
【0013】
次にマイクロプロセッサAは、プログラム鍵1によってプログラム1を復号してキャッシュメモリ4に読み込む。復号とキャッシュメモリ3への読み込みは、所定のキャッシュアルゴリズムにより、プログラムの実行に従って、部分ごとに行われ、プログラム全体が一度にキャッシュメモリ4に読み込まれるわけではない。キャッシュメモリ4に読み込まれたプログラムは平文状態なので、暗号化されていない通常のプログラムと同様にコア6で実行される。プログラム鍵1や平文プログラムを扱う部分は、プロセッサAのコア6によって行なわれ、OSが介在する余地はない。マイクロプロセッサ内にあるキャッシュメモリ4、秘密鍵5の内容は、プロセッサの仕様に定められた操作を除いては、外部から直接読み出すことはできない。
【0014】
なお図示はしないが、キャッシュメモリ4に格納された平文の情報について、ユーザが複数のプログラムベンダ21−1〜21−nから、複数の異なるプログラムを購入しても、それらのプログラムの間で、独立に秘密が守られることを保証するために、キャッシュメモリ4のライン毎に、その平文情報がどの暗号鍵によって復号化された情報であるかを特定する識別子がつけられる。異なるプログラムベンダの、異なるプログラムごとにプログラム鍵はそれぞれ異なるので、キャッシュラインにあるタスクと、それを復号した鍵とを対応付けることにより、プログラムの独立性は一応保証される。
【0015】
【発明が解決しようとする課題】
(1)タスクの識別機能を実現するには、各プログラムのプログラム鍵をタスクIDに対応して保持するテーブルをマイクロプロセッサ内部に持つことが必要である。このようなテーブルの設定を指示するのは、システムを管理するOSであり、OSプログラムからテーブルを操作する手段が必要となる。このテーブル操作手段は、当然、秘密保護の要求を満たすものでなければならない。
【0016】
また、タスク対応の鍵テーブルは秘密保護の要となるが、資源の有限性やコストの関係上、テーブルの量を無限に増やすことはできない。このため、あるテーブルのエントリをどのプログラムに割り当てるか、エントリをどのように再利用するかは、システムユーザの意向に従って、OSが管理する必要がある。
【0017】
このようなOSの操作は、秘密保護に欠陥をもたらす可能性がある。例えば、あるプログラム鍵XにタスクID#1を割り当てた状態の時、OSが別のプログラム鍵Yに同一のタスクID#1を再割当したとする。このとき、キャッシュメモリにタスクID#1のタグが付与されたキャッシュラインが残っていると、そのデータは、プログラム鍵Yに対応するプログラムから読みとることができる。これは秘密保護の原則に違反する。
【0018】
そこで、第1の課題として、このような違反を防止するためのタスク状態管理とテーブル管理の機構を提供する。
【0019】
(2)プログラムの暗号化には、キャッシュライン単位で復号処理が完結するような方法と、あるひとつのキャッシュラインの復号に複数のキャッシュラインのデータが必要な方法の2種類がある。前者はメモリ容量やライン単位の入れ替えにさほど影響しないが、後者には、以下の問題がある。
【0020】
キャッシュラインの復号に複数のキャッシュラインのデータを必要とする方法では、メモリへのランダムアクセスが発生する場合、必要なメモリ領域の前後のメモリ領域も読み込まなければならない。このため、大きなオーバヘッドが発生する。
【0021】
また、復号結果は隣接するラインのデータに依存するため、いわゆるブロック交換攻撃の可能性がある。ブロック交換攻撃とは、同一の秘密に基づいて暗号化されたブロック情報を、攻撃者が適切に入れ換えることにより、システムの状態を攻撃者の意図するように変更する攻撃を意味する。たとえば、攻撃者が、あるアドレスXに配置されていたラインPが課金動作に対応する部分であることを、通信のタイミングなどから知ったとする。そして、同一のプログラム鍵で暗号化された別のラインQを実行しても、プログラムの提供するサービスに悪影響がないことを、知っていたとする。このとき、ラインPをラインQで置き換えれば、攻撃者はプログラムのサービスに影響なく、課金だけを逃れることができる。同様の攻撃は、プログラムが扱うデータにも適用可能である。
【0022】
すべてのブロック毎に個別の鍵を与えれば上記の問題は解決できるが、配布鍵にブロックごとの個別暗号鍵を格納すると、配布鍵を公開鍵で暗号化するアルゴリズムが膨大になり、復号化処理のオーバヘッドを引き起こす。また、そのような鍵を管理する膨大な容量のテーブルをマイクロプロセッサ内部に必要とし、鍵の配布、管理コストの面で現実的ではない。
【0023】
さらに、一般にプログラムは、あらかじめ配置されるアドレスが常に一定であるわけではなく、ターゲットシステムの構成(他のプログラムと共有するライブラリや共有メモリの構成)によって、配置されるアドレスが変更されることがある。これをリロケーションと呼ぶ。ブロックごとの暗号化を行う場合、リロケーションの問題を考慮しなければならない。
【0024】
そこで、第2の課題として、処理オーバヘッドが小さく、データ交換攻撃を困難にし、リロケーションをも考慮した秘密情報管理能力を有するマイクロプロセッサを提供する。
【0025】
(3)プログラム(実行コード)、データ、コンテキスト情報は、アプリケーションの3要素であるが、これらはプロセッサ内部での取り扱い違いがある。実行コードとデータでプログラム本体を成し、コンテキストは、タスクの実行が中断されたときにタスクを再開するためにメモリ上に保存される状態情報である。
【0026】
一般にマイクロプロセッサ内部のプログラムは書き換えられることはないが、キャッシュ上のデータに変更があればデータは外部メモリへと書き戻される。
【0027】
また、プログラムやデータはキャッシュライン単位でアクセスされるが、コンテキスト情報は、単一のキャッシュラインでは格納できないほどのサイズになることが多い。コンテキスト切り替えのときは、複数のキャッシュラインにまたがる情報がまとめて読み書きされる。
【0028】
性質の異なるこれらの情報を外部メモリとやりとりする際には、それぞれ暗号処理が必要になるが、その一方でハードウェアコストの削減が望まれる。
【0029】
そこで、第3の課題として、これらの情報に対する暗号処理ハードウェアを共通化できるマイクロプロセッサを提供する。
【0030】
【課題を解決するための手段】
第1の課題を解決するために、実際にキャッシュラインにあるタスクの識別子と、OSにより割り当てられたタスクの識別子とを比較して、一致するときにのみそのキャッシュラインへのアクセスを許可し、一致しないときは、キャッシュラインの内容を廃棄する。
【0031】
これを実現するために、マイクロプロセッサは、複数の状態を取り得るタスクに識別子を付与し、タスク識別子と対応してタスクの状態を保持するタスク状態テーブルと、現在実行中のタスク識別子を保持するタスクレジスタと、タスクの要求があったときに、外部メモリに所定のプログラム鍵で暗号化された状態で格納されているプログラムをキャッシュライン単位に読み込むインターフェイスと、プログラム鍵に基づきキャッシュラインごとに復号鍵を生成し、読み込まれた内容を復号する暗号処理部と、各々がタグを有する複数のキャッシュラインから構成され、キャッシュラインごとに、そのキャッシュラインの復号に用いられた復号鍵に対応するタスク識別子をタグに保持する第1のキャッシュメモリと、キャッシュラインのタグに保持されたタスク識別子と、前記タスクレジスタの値を比較し、値が一致しない場合にキャッシュラインの内容を廃棄するアクセス検証部とを備える。
【0032】
第2の課題を解決するために、少ない秘密に基づいてブロックごとに異なる鍵で復号することを可能にする。これを実現するために、マイクロプロセッサは、以下を備える。
【0033】
(a)それぞれ固有のプログラム鍵に基づいて暗号化された複数のプログラムが格納されている外部メモリのアドレスを指定して、読み出し要求を発行するプロセッサコア;
(b)プロセッサコアの読み出し要求に応じて、外部メモリの指定されたアドレスのデータブロックを読み出すインターフェイス;
(c)プログラムの実行制御単位であるタスクごとに与えられるタスク識別子に対応して、プログラム鍵を保持するタスク鍵テーブル;
(d)タスク識別子ごとに、プログラムが配置された先頭アドレスをオフセット値として保持するオフセットテーブル;
(e)読み出し要求により指定されたアドレスと、オフセットテーブルのタスク識別子で指定されるオフセット値とから相対アドレス値を計算し、この相対アドレス値を、プログラム鍵で暗号化したブロック対応鍵を生成する鍵生成部;
(f)読み出されたデータブロックを、ブロック対応鍵により復号化する暗号処理部;および
(g)復号化されたデータブロックをキャッシュライン単位に読み込むキャッシュメモリ。
【0034】
また、タスクの実行中断の際に、プログラムやデータが配置される物理アドレスは、しばしばシステムの資源管理によって変更される(リロケーション)が、ブロックごとに暗号化されたプログラムを復号して正常に実行するためには、情報は一定のアドレス空間に配置される必要がある。そこで、ターゲットアドレスとプログラムの開始アドレス(オフセットアドレス)との差で表わされる相対アドレスを計算するときは、仮想アドレスを用いる。
【0035】
これによって、ブロック入れ替えを効果的に防止するとともいに、制限ある物理メモリを効率よく利用することができる。
【0036】
第3の課題を解決するために、マイクロプロセッサは、
(a)外部メモリに暗号化された状態で格納されているプログラムの実行コードおよびデータをキャッシュラインごとに取り込むインターフェイスと、
(b)プログラムの開始アドレスであるオフセット値を保持するオフセットテーブルを有し、実行コードを平文状態でキャッシュラインごとに保持する第1のキャッシュと、
(c)データのアドレス範囲を保持するアドレス範囲レジスタを有し、データを平文状態でキャッシュラインごとに保持する第2のキャッシュと、
(d)第1および第2のキャッシュに共通バスを介して接続され、プログラムの暗号化に用いた暗号鍵を保持する鍵値テーブルと、
(e)第1および第2のキャッシュバスおよび鍵値テーブルに共通バスを介して接続され、鍵値テーブルと第1のキャッシュから暗号鍵とオフセット値をそれぞれ受け取り、この暗号鍵とオフセット値に基づいて実行コードを復号化して第1のキャッシュに供給し、鍵値テーブルと第2のキャッシュから暗号鍵とアドレス範囲をそれぞれ受け取って、暗号鍵とアドレス範囲に基づきデータを復号化して第2のキャッシュに供給する暗号処理部と
を備える。この構成により、キャッシュ間で共有される効率的な暗号処理構造を有するマイクロプロセッサが実現される。
【0037】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施の形態を説明する。
【0038】
図1は、本発明が適用されるマルチパーティのアプリケーション保護環境を説明するための図である。
【0039】
ソフトウェアベンダ121は、プログラム122を作製し、これをユーザ112のシステム102に内蔵されるマイクロプロセッサAに配布する。配布するプログラムを保護するため、平文プログラム122を暗号化する。
【0040】
具体的には、実行コードと、初期化済データ等のデータで構成されるプログラムを、ソフトウェアベンダ121が選択したプログラム鍵で暗号化し、暗号化に用いたプログラム鍵を、ターゲットシステム102のプロセッサAの公開鍵Aで暗号化して配布鍵を生成する。
【0041】
このとき、ソフトウェアベンダ121は、プログラムや初期化データを複数のブロックに分割し、ブロックごとに異なる鍵で暗号化する。ただし、ベンダ121は、ブロック数に応じた数の鍵を選択するのではなく、複数の鍵を生成するための基本となる定数Cxと、Cxに基づいて生成された複数の鍵を暗号化する鍵Kxの2つだけを選択すればよい。詳細は後述するが、この2つの定数を基にして、ブロックごとに異なる鍵で暗号化し、暗号化プログラム123を生成する。そして、CxとKxをプロセッサAの公開鍵Aで暗号化して、配布鍵Kx[A]、Cx[A]を作製する。
【0042】
なお、図1では、説明の便宜上、単一のソフトウェアベンダしか描いていないが、マルチパーティの環境を想定しているので、ユーザ112は、複数のベンダから、それぞれブロック暗号化プログラムを購入し、システム102に格納するものとする。
【0043】
配布されたブロック暗号化プログラムは、配布鍵とともに、いったんハードドライブディスクなどの二次記憶107に格納され、実行時にメモリ108に確保された領域109−1に読み込まれる。このメモリへの読み込みは、システム102の資源を管理するOS110によって行われる。プログラム本体と配布鍵は同一のファイルに格納しても良いし、別々のファイルに格納してもよい。メモリ108は、同じベンダ121による別のプログラムや、その他のベンダからのプログラムのための領域109−nも有するが,説明の便宜上、これらについては省略する。
【0044】
プロセッサAは、配布鍵125を読み込み、秘密鍵Aを用いて、保護ロジック106で配布鍵を復号する。復号した鍵で、メモリ108に配置された暗号化プログラムを、ブロック単位でキャッシュメモリ104に読み込み、ブロックごとに復号化する。このとき、プロセッサAの特徴として、限られた数の秘密、たとえば2つの定数Kx、Cxから、複数の暗号ブロックの各々に対応したブロック対応鍵を生成して、ブロック単位で復号する能力を有する。
【0045】
図2は、図1に示すマイクロプロセッサAのハードウェア構成図である。プロセッサAは、プロセッサパッケージ200の中に、コア902、命令キャッシュ903、データキャッシュ904、これらのキャッシュで共有される高速暗号鍵処理モジュール(FCM:Fast Ciphering Module)911、鍵値テーブル(KVT:key value table)912、配布鍵管理モジュール913、バスインターフェイス(BIU)906を有する。これらは、内部バス905で互いに接続されている。
【0046】
コア902、高速暗号鍵処理モジュール911、鍵値テーブル912、配布鍵管理モジュール913で、図1の保護ロジックを構成する。
【0047】
コア902は、レジスタアレイ915とタスクスイッチャー914を有する。タスクスイッチャー914は、タスクの切り替え、すなわち割り込み発生時のコンテキストの保存、復帰を実行する。コンテキストは、タスクの実行に対応して生成され、タスクと対応して管理される。これを実現するために、タスクスイッチャー914は、内部にタスク状態テーブル921と、ハッシュ計算部922を有する。タスク状態テーブル921は、後述するように、タスクIDと対応付けてタスク状態を保持する。また、図示はしないが、コア902は、レジスタアレイにあるコンテキストの変更通知や、配布鍵設定命令などを発する。
【0048】
命令キャッシュ903は、プログラムの実行コードをキャッシュする。通常のアドレスを識別するキャッシュタグに加え、保護タスクを識別するタグも付けられ、マイクロプロセッサの内部データでアプリケーションの独立性を保証する。なお、図2には図示しないが、後述するように,命令キャッシュは、プログラム(実行コード)やデータの開始アドレス(オフセット)を記述するオフセットテーブル1207(図9参照)を内部に有する。
【0049】
データキャッシュ904は、プログラムの初期化データ、スタックデータ、ダイナミックデータなど、プログラムに関連する種々の情報をキャッシュする。
【0050】
高速(対称)鍵暗号処理モジュール911は、鍵生成モジュール1312と暗号処理モジュール1313を有する。鍵生成モジュール1312は、内部バス905を通じてブロックの鍵と、処理対象ブロックの相対アドレス値を取得し、後述する方法でブロックごとに対応する暗号鍵を生成する。暗号処理モジュール1313は、生成されたブロックごとの暗号鍵により、対応するブロックの暗号/復号処理を実行する。ブロックの暗号処理には複数クロックを要するので、複数のモジュールを並列処理するためのディスパッチャも含む。
【0051】
鍵値テーブル(KVT)912は、キャッシュから送られてくるテーブルID情報に基づいてテーブルを検索し、鍵の値を高速暗号鍵処理モジュール911に供給する。
【0052】
配布鍵管理モジュール913は、配布鍵の公開鍵復号化および復号化結果のテーブルをセットアップする。
【0053】
マイクロプロセッサはまた、点線の矢印で示すように、タスクチャンネル916を有し、コア902から他のモジュールへ、現在実行中のタスク、およびコンテキスト保存されるタスクの情報を伝達する。マイクロプロセッサのパッケージの外に外部メモリとしてのRAM907,周辺回路を接続するいわゆるサウスブリッジ908があり、バスインターフェイス905で、内部バス905と外部メモリ907やサウスブリッジ908との間のデータ転送、バッファリングを行なう。
【0054】
図3は、プログラムをブロックごとに暗号化する手順を説明する図である。この処理は、図1のソフトウェアベンダ121のブロック対応暗号処理部126によって行われる。
【0055】
ソフトウェアベンダが開発した平文のアプリケーションプログラムのプログラム領域1001は、128ビット(16バイト)を単位とする複数のブロック0〜ブロックnで構成されている。この領域全体に対して、あらかじめ2つの定数KxとCxが選択されている。
【0056】
まず、定数Cxと、プログラムの先頭から見た相対的は各ブロックの先頭アドレスとの和を求める。たとえば最初のブロック0の先頭バイトは0であるから、Cx+0が計算される(S1002−0)。Cx+0の値は、秘密鍵Kxで暗号化され、ブロック対応鍵Kv0が生成される(S1003−0)。平文ブロック1001−0は、このブロック対応鍵Kv0で暗号化され(S1004−0)、暗号ブロック1005−0が生成される。
【0057】
同様に、2番目のブロック1の先頭バイトは16バイトであるから、プログラムの先頭からみた相対アドレスは16となり、Cx+16を計算する(S1002−1)。n+1番目のブロックnの相対アドレスは16nであり、Cx+16nを求める(S1002−n)。これらの値をKxで暗号化して、対応するブロックの暗号鍵Kv1〜Kvnを生成する(S1004−1〜S1004−n)。各暗号鍵で平文ブロック1〜nを暗号化し、暗号ブロック1005−1〜1005−nを生成する。
【0058】
図3では、暗号化処理S1003−0〜S1003−nや、S1004−0〜S1004−nを独立に示してあるが、ひとつの暗号化処理に与えるパラメータを変えて繰り返し使ってもよいし、ソフトウェアで実現してもよい。
【0059】
図3に示す暗号化方法によれば、プログラムベンダ121は、ターゲットシステム102でプログラムが配置される絶対アドレスを意識せずに、暗号処理することができる。プログラムベンダは絶対アドレス値を予想することはできないので、絶対アドレス値に基づいてブロック対応鍵を生成しようとすると、ターゲットシステム102からあらかじめプログラムが配置される絶対アドレスの通知を受けてから、配置アドレス対応の暗号化プログラム本体を作成するか、配置アドレス対応の暗号化プログラム本体を無数に配布しなければならない。いずれの場合もプログラム本体の配布コストが著しく大きくなる。
【0060】
図3の方法では、配布しなければならない秘密は鍵Kxと定数Cxのみであり、かつ、各ブロックの相対アドレスを使用して複数ブロック対応の暗号鍵を生成するので、ソフトウェアベンダ側の処理負担が軽減され、経済性も満たされる。
【0061】
こうして暗号化された各ブロック1005−0〜1005−nは、配布鍵Kx[A],Cx[A]とともに、ターゲットシステム102に送られる。ターゲットシステムでは、秘密情報Kx、Cxと、ブロックの相対アドレス値さえ与えられれば、マイクロプロセッサ内で、他のブロックのデータや配置されたメモリの絶対番地に依存せず、各ブロック独立に復号することができる。
【0062】
これは、メモリへのランダムアクセスを特徴とする現在のコンピュータアーキテクチャおよびアプリケーションプログラムのリロケーションを前提とした現在のOSに効率よく適合する。
【0063】
また、たとえ攻撃者が、ブロックの不正な入れ換えを行っても、ブロックごとの相対アドレス値が異なるので、ブロック暗号鍵Kvも異なり、攻撃者の意図する動作は行われない。
【0064】
次に、ターゲットシステム102側での動作の詳細を説明する。
【0065】
プログラムの実行に先立って、OS110は、ソフトウェアベンダ121から受け取ったアプリケーションプログラムの実行コード、初期化データ(静的データ)、作業領域(スタック)に、それぞれメモリ108の領域を割り当てる。この段階では、プログラムは暗号化されたままの状態である。割り当てられるメモリ領域の開始アドレスは、システムの状態、すなわち連係して動作する他のプログラムモジュールや共有メモリの配置によって変わってくるので、システムを管理するOSは、状況に応じて領域のアドレスを自由に決定する(リロケーション)。OS110はまた、配置鍵を配置するメモリ領域を決定し、配布鍵情報を読み込む。
【0066】
OS110は、これらの領域のアドレス情報を、メモリ上の情報配置記述子(IAD:information arrangement descriptor)とよばれる構造体に記述する。
【0067】
図4は、あるタスクの仮想アドレス空間のメモリマップと、情報配置記述子1111および配布鍵情報1121の構造を示す。メモリマップ上には、プログラム1102、初期化(static)データ1103、作業領域(スタック)1104に加え、情報配布記述子用の領域1105、配布鍵用の領域1106が配置される。
【0068】
情報配置記述子1111は、プログラム領域の開始アドレス(オフセット)1112、データ領域開始アドレス(オフセット)1113、データ領域終了アドレス1114、作業領域開始アドレス(オフセット)1115、作業領域終了アドレス1116、配布鍵アドレス開始アドレス(オフセット)1117を含む。
【0069】
配布鍵1121は、プログラム鍵(Kx)1122、プログラム秘密定数(Cx)1123、初期化データ鍵1124、初期化データ秘密定数1125、初期化データ長1126、作業領域(スタック)鍵1127、作業領域秘密定数1128、作業領域長1129を含む。
【0070】
メモリ上に配置されたプログラムが、マイクロプロセッサ103に読み込まれて、復号、実行されるときは、OS110は、情報配置記述子に基づいて、タスク状態を制御する種々の特権命令(タスク制御命令)を発行して、タスクの状態管理を行う。
【0071】
図5は、タスク制御命令の例を示し、図6は、タスクの状態遷移を示す。タスク制御命令は、内部テーブルへのタスクの登録(register)、タスクの開始(start)、中断されたタスク状態の保存(suspend)、中断されたタスクの再開(continue)、タスクの終了、すなわち内部テーブルからのタスク秘密情報の削除(delete)などを含む。そして、これらの制御命令に応じて、図6に示すようにNULL状態201からINIT状態202になり、RUN状態203、STOPPED状態204、SUSPEND状態205等を遷移する。
【0072】
以下、タスクを実行するための動作について、特に、タスクの登録、タスクの実行、タスクの中断、タスクの終了を中心に、詳細に説明する。
【0073】
<タスクの登録>
1.登録処理フロー
まず、タスクを登録するために、OS110は、登録したいタスクのIDと、そのプログラムの情報配置記述子の先頭アドレスをパラメータとして、特権命令であるregister命令を発行する。register命令の発行により、このプログラムのための配布鍵1121が復号され、各メモリブロックの復号に使われる鍵と相対アドレス情報が、タスクIDと関連付けて、マイクロプロセッサ内の各種テーブル(後述)に登録される。
【0074】
図7は、マイクロプロセッサ(ハードウェア)103上でのタスク登録の概略動作を示し、図8は、登録(register)命令の処理フローを示す。
【0075】
情報配置記述子(IAD)1111のアドレスとタスクID#1をパラメータとしてregister命令が発行されると、コア902内のタスクスイッチャー914はタスクの状態をチェックする(S301)。タスク状態がNULLでなければ(S301でNO)、タスク状態をINVALIDとしてエラーにする(S308)。タスク状態がNULLならば(S301でYES)、図7の点線(1)で示すように、コア902は情報配置記述子のアドレスとタスクIDを含む登録要求を、配布鍵管理モジュール913のシーケンサ913−1に書き込む。
【0076】
シーケンサは、図7の点線(2)で示すように、情報配置記述子の領域に対するメモリ読み出し要求をBIU906に送り、BIUは、点線(3)で示すように情報記述子1111をシーケンサに供給する。シーケンサはこの情報記述子を解析して、プログラム、初期化データ、作業領域に対応するオフセットアドレスや範囲、配布鍵オフセットアドレス1117を取得する(S302)。
【0077】
次にシーケンサは、配布鍵アドレスに対する読み出し要求をBIUに送る。BIUは、点線(4)で示すように、配布鍵の内容を公開鍵復号モジュール913−2に供給する。公開鍵復号モジュール913−2は、配布鍵1121(図4)を復号化し、プログラムの秘密定数(Cx)、初期化データの秘密定数、作業領域秘密定数を取得する(S303)。
【0078】
次に、図7の点線(5)で示すように、S302で取得したプログラム、初期化データ、作業領域のオフセットアドレスを、命令キャッシュ903のオフセットテーブル(図9参照)に書き込む(S304)。
【0079】
同様に、S303で取得したプログラム、初期化データ、作業領域の暗号鍵(秘密定数)を、鍵値テーブル912に書き込む(S305)。こうして、テーブルが設定され、タスクの登録が完了する。
【0080】
タスクの登録が完了すると、タスク状態はNULLからINITに移行し(S306)、この状態の遷移は、割り込みによりコア902に通知され(S307)、OSは、タスクを実行するための準備が整ったことを知る。
【0081】
2.テーブルの設定
マイクロプロセッサ内の各種テーブルの設定を説明する前に、図9〜11を参照して、マイクロプロセッサを構成する命令キャッシュ903、高速暗号鍵処理モジュール(FCM)911、鍵値テーブル(KVT)912、データキャッシュ904の構成を説明する。
【0082】
図9は命令キャッシュ903の詳細を示す。命令キャッシュ903は、命令TLB(translation lookaside buffer)1202を有する命令管理ユニット(MMU)1201と、命令キャッシュメモリ1203と、カレントタスクIDレジスタ1204と、キャッシュアクセス検証部1205と、タスクID書き込み部1206と、オフセットテーブル1207を含む。
【0083】
キャッシュメモリ1203は、複数の所定サイズのキャッシュラインで構成され、各キャッシュラインは、そのキャッシュライン(ブロック)で実行されるタスクのタスクIDを保持するタグを有する。キャッシュアクセス検証部1205は、タグに保持されたタスクIDと、カレントタスクIDレジスタの値とを比較し、一致するときのみアクセスを許可する。一致しないときは、そのキャッシュラインの内容を廃棄する。
【0084】
図10は、鍵値テーブル(KVT)912と、高速暗号鍵処理モジュール(FCM)911の詳細を示す。KVT912は、テーブルアクセス制御部1301と、カレントタスクIDレジスタ1302と、タスク鍵(あるいはプログラム鍵)テーブル1303と、コンテキスト鍵テーブル1304と、データ鍵テーブル1305を含む。ここでは図示はしないが、データ鍵テーブル1305は、4つのテーブル(0〜3)を含む。KVT912は、パス1315を介してバス905と接続される。
【0085】
高速暗号鍵処理モジュール(FCM)911は、ディスパッチャ1311と、鍵生成モジュール1312と、暗号処理モジュール1313を含む。鍵生成モジュール1312は、鍵生成単位として並列に1312−1〜1312−3を有し、暗号処理モジュール1313は暗号処理単位として1313−1〜1313−3を有する。ディスパッチャ1311は、後述するように、鍵生成単位や暗号処理単位の空きのある部分に処理を割り振り、並列処理を可能にする。FCM911は、パス1314を介してバス905に接続される。
【0086】
KVT912からFCM911へ、パス1316を介して暗号鍵が転送され、パス1317を介して相対アドレス値が転送される。
【0087】
図11は、データキャッシュ904の詳細を示す。データキャッシュ904は、カレントタスクIDレジスタ1401と、アドレス範囲を保持するMTRR(memory type range register)テーブル1403と、このテーブルを管理しMTRRテーブルのアドレス範囲とターゲットアドレスを比較するMTRRテーブル管理比較部1402と、暗号属性送出部1411と、データキャッシュメモリ1431と、データTLB1433を有するMMU1442と、保存予定コンテキスト識別子レジスタ1434を含む。暗号属性送出部1411は、データやコンテキストを外部メモリへ書き戻すときに、その暗号属性を確認するために、読み込み要求データ暗号識別子レジスタ1412と、読み込み要求コンテキスト暗号鍵識別子レジスタ1413と、書き出し要求データ暗号鍵識別子レジスタ1414と、書き出し要求コンテキスト暗号鍵識別子レジスタ1415と、アクセス検証部1421を有する。MMU1442は、所定の変換情報に基づいて、コア902から出力される仮想アドレスから物理アドレスへと変換してメモリアクセスを行う。
【0088】
KVT912の6種類のテーブル、すなわちプログラム鍵テーブル1303、コンテキスト鍵テーブル1304、データ鍵テーブル1305(0−3)は、それぞれタスクIDでインデックスされ、鍵生成に使う2種類の秘密情報を保持できる。ブロックの復号鍵生成に使われる2つの秘密情報、例えば図4に示すプログラムのためのKx1122とCx1123は、KVT912のプログラム鍵テーブル1303のタスクID#1の欄に書き込まれる。
【0089】
一方、このプログラム領域のオフセット値1112は、命令キャッシュ903内のオフセットテーブル1207のタスクID#1の欄に書き込まれる。
【0090】
データキャッシュ904のMTRRテーブル1403は、タスクIDと0〜3の値をとるMTRR識別子で識別される。すなわち、MTRRテ−ブル1403は、1タスク当たり4個のMTRR(アドレス範囲レジスタ)を持ち、それぞれにデータ領域のアドレス範囲と鍵の値を登録することができる。タスク登録時においては、MTRR識別子0、1に対応する初期化データと、作業領域(スタック)に対応するMTRRが設定される。また、MTRR2,3の内容は0で初期化される。
【0091】
あるタスクがメモリを参照する時、ターゲットアドレスとMTRRのアドレス範囲とが比較され、一致したMTRRに対応する暗号化属性(すなわち鍵)が使用される。データについても、MTRRの先頭番地をオフセットとして、相対アドレス値を使用して、上述した手順の暗号鍵生成が適用される。
【0092】
テーブルの内容に矛盾が発生するのを防ぐため、これらのテーブルを書き換えている期間は、コア902ではこのタスクに対するあらゆるオペレーションが禁止される。
【0093】
テーブルの書換えが完了すると、タスクスイッチャー(STS)914のタスク状態テーブル921で、このタスクIDに対応するエントリが状態NULLからINITに書き換えられ、登録の完了が、割り込みによってコア902に通知される。
【0094】
なお、本実施例ではこれらの登録オペレーションをハードウェアで実装した例を示したが、ファームウェアとしてプロセッサ内部に組み込まれたソフトウェアとして実装してもよい。ただし、ファームウェアは悪意を持つシステムユーザによって改変されることがないような注意が必要である。
【0095】
<タスクの実行>
1.タスクの実行開始
タスクを実行するには、INIT状態にあるタスクに対して、OSがタスクIDをパラメータとしてstart命令を実行する。すると制御がプログラム領域の先頭に移される。INIT状態にあるタスク以外を指定してstart命令を実行した場合、エラーとなり、なにも実行されない。
【0096】
図12は、タスク実行開始命令の処理フローを示す。あるタスクについてそのタスクIDを指定してstart命令が発行されると、まず、そのタスク状態がINITにあるかどうか、すなわち、タスク実行の準備が整った状態にあるか否かを判断する(S401)。INIT以外の状態にあるタスク識別子を指定してstart命令が出された場合は(S401でNO)、タスク状態テーブル921がINVALIDにされ(S407)、エラーとなる。
【0097】
タスクがINIT状態にある場合は(S401でYES)、コア902が保持するカレントタスクIDが、新しいタスクに設定され(S402)、レジスタアレイ915が初期化される(S403)。また、プログラムカウンタ(不図示)の値が、プログラム領域の先頭に設定される(S404)。
【0098】
続いて、新しいタスクIDが、タスクチャンネル916を通じて、命令キャッシュ903、データキャッシュ904、鍵値テーブル912に通知され、それぞれのカレントタスクIDレジスタ1204、1401、1302に保持される(S405)。その後、コア902のタスク状態テーブル921で、タスク状態がINITからRUNに書き換えられ(S406)、実行が開始される。
【0099】
本実施形態では、ブロックごとに暗号化され保護されたプログラムを実行するので、外部メモリのプログラムがキャッシュに読み込まれる際に、タスクIDに対応して登録されたプログラム鍵に基づいて、ブロックごとにプログラムの復号化が行われ、復号結果である平文がキャッシュに読み込まれ、実行される。このとき、タスク登録時に配置されたメモリアドレスに合わせて、オフセットを命令キャッシュ903内部のオフセットテーブル1297に登録し、メモリアクセスとオフセットの差を相対アドレス値として使用するので、プログラマが暗号化したプログラムがOSによりどのアドレスに配置されていても、正しく復号化できる。
【0100】
なお、実施形態ではNULL状態から中間のINIT状態を経てRUN状態へ移行する例が書かれているが、これは配布鍵の公開鍵アルゴリズム処理を非同期的に実行することにより、公開鍵アルゴリズム処理中の比較的長い応答不能時間を短縮することが目的である。応答不能時間を許容すれば中間のINIT状態を省略してもさしつかえない。(非同期的公開アルゴリズム処理については、同一出願人による特許出願第2001−024480号を参照されたい。)
2.命令キャッシュの読み込み
次に、命令キャッシュ903の読み込み処理について、図13の処理フローを参照して説明する。
【0101】
タスクの実行が開始されてキャッシュに読み込まれたラインには、通常のメモリアドレスの一致を判定するタグに加えて、このタスクのタスクIDタグが付けられる。そして、読み込まれたキャッシュラインにアクセスがあると、命令キャッシュ903のアクセス検証部1205で、ラインに付されたタスクIDのタグと、アクセスのあったカレントタスクIDの一致、不一致が判断される。不一致の場合は、たとえメモリアドレスのタグが一致していてもキャッシュのミスヒットとして扱われ、このキャッシュラインの情報が再度外部メモリから読み込まれることになる。別のタスクによりこのラインに対応する外部メモリの内容が再読み込みされても、新たにアクセスしたタスクのタスクIDに対応する鍵で復号化されて読み込まれることになる。つまり、本来の鍵と異なる鍵で復号化された結果を実行することになり、正常な処理は行われない。
【0102】
なお、以下の説明で、相対アドレスの計算は仮想アドレスに基づいて行なわれるが、キャッシュのヒット、ミスヒットの判定は、物理アドレスに対して行われる。キャッシュのヒット、ミスヒットの判定に仮想アドレスを使用すると、同一のメモリブロックがキャッシュ上に複数存在するエイリアスと呼ばれる現象が発生するからである。この現象は特に同一の物理アドレス領域を複数のタスクが共有する場合に問題となるので、本実施形態では、通常のキャッシュヒット、ミスヒットは物理アドレスによって判定している。
【0103】
図13は、命令キャッシュ903の読み込み処理フローを示す。このフローでは、説明の簡略化のため、命令キャッシュ903と、FCM911、BIU906の動作を一体として示している。
まず、コア902から読み出し要求があると、命令キャッシュ903はBIU906に対して、ターゲットアドレスブロックの読み出し要求を送る。読み出し要求には、リクエストID、保護の有無、ターゲットアドレス範囲、要求元IDの情報が含まれている。
【0104】
ここで、ターゲットアドレスと、読み込まれたキャッシュラインに付されているアドレスタグとの一致、不一致が判断される(S501)。物理アドレスが一致しない場合は(S501でNO)、ミスヒットとして、読み出し要求された新たなタスクIDに対応するオフセットアドレスの取得を開始する。オフセットアドレスは、オフセットテーブル1207の中の、カレントタスクIDに対応するエントリから取得する(S502)。
【0105】
次に、取得したオフセット値から相対アドレスを計算する。相対アドレスは、メモリアドレスからオフセット値を引き算することによって求められる(S503)。なお、保護タスク実行中にキャッシュメモリへのアクセスがあると、命令キャッシュ903は、キャッシュメモリのアクセスと並行して、相対アドレスの計算を行なう。
【0106】
命令キャッシュ903は、求めた相対アドレス値とタスクIDとを、内部バス905を通じて鍵値テーブル(KVT)912へ送る。このとき、リクエストIDがつけられる。KVT912は、はタスク鍵テーブル1303からタスクIDに対応する鍵の値を取得し、鍵の値とオフセット値を、チャネル1316を通じて、高速暗号鍵処理モジュール(FCM)911の鍵生成モジュール1312へと送る。同時にKVT912は、オフセット値とリクエストID、要求元IDを、チャネル1317を通じて、FCM911の暗号処理モジュール1313へ送る。
【0107】
FCM911の鍵生成モジュール1312は、KVT912から鍵の値とオフセット値を受け取ると、すぐにそのブロックに対応する鍵の計算を開始する。すなわち、プログラムの秘密定数Cxに相対アドレス値を加算した中間値を求め(S504)、求めた中間値をプログラムの秘密鍵Kxで暗号化して、プログラムのブロックに対応するブロック対応鍵を生成する(S505)。
【0108】
この鍵の計算は暗号化処理なので、複数サイクルの時間を要する。効率よく計算をするため、鍵生成モジュール1312には複数の鍵生成単位1312−1〜1312−3が設けられ、ディスパッチャ1311が、空きの鍵生成単位に処理要求を割り振る。1つのリクエストが複数の暗号ブロックで構成される場合は、すべての暗号ブロック対応の鍵を生成するまで相対アドレス値を増分してS502〜505を繰り返す。
【0109】
一方、BIU906は外部メモリから読み出した結果を、暗号ブロックの大きさのデータになるまでバッファリングする。もともと保護されていない非暗号化データが要求されている場合は、データは直接要求元の命令キャッシュへ送られるが、本実施形態では、暗号化データに対する要求なので、読み出し結果はFCM911へ送られる。FCM911の暗号処理モジュール1313は、鍵生成モジュールによって生成されたブロック暗号鍵で、BIU906から供給されたデータを復号する(S506)。
【0110】
復号には複数サイクルの時間がかかるので、前の復号処理が完了する前にキャッシュラインを構成する次の暗号ブロックが到着した場合は、別の暗号処理単位が割り当てられ、並列的に処理が行なわれる。図10には、暗号処理単位として1313−1〜1313−3だけが示されているが、十分な数の暗号処理単位を準備すれば、暗号処理単位の処理サイクルよりも短い間隔でデータが到着しても遅延を発生させることなく復号化処理が可能となる。
【0111】
復号を完了したブロックは、直ちに内部バス経由で要求元の命令キャッシュ903に送られる。命令キャッシュ903は、このキャッシュラインにデータを格納し、ラインを構成するすべてのデータがそろうと、キャッシュタグにライン有効の表示、暗号化ありの表示、実行中のタスクIDを書き込む(S507)。
【0112】
キャッシュラインが有効になると、コア902はこのラインからデータを読み出し、プログラムの実行を再開する(S508)。
【0113】
次に、S501でターゲットアドレスとキャッシュラインのアドレスタグ(物理アドレス部分)が一致した場合、つまり、それまで実行されていたタスクAと異なるタスクIDを有するタスクBが、たまたま同一のメモリ領域をアクセスしてキャッシュラインがヒットした場合を考える。キャッシュの物理アドレスがヒットしたということは、タスクBは、従来の資源管理的な意味でこのアドレスのメモリのアクセス権があることになる。
【0114】
この場合は、命令キャッシュ903のアクセス検証部1205が、現在のタスクIDレジスタ1204の値と、このキャッシュラインにつけられているタスクIDタグとを、さらに比較する(S509)。比較結果が一致しない場合、たとえばカレントタスクIDレジスタ1204には“B”と書かれているが、キャッシュラインタグのタスクID欄には“A”と書かれ、その暗号特性は暗号化ラインであることを示している場合には(S509でNO)、キャッシュがフラッシュされ、タスクBにタスクIDに対してS502〜S507を繰り返す。すなわち、タスクBのオフセットアドレスから相対アドレスが計算され、キャッシュラインアドレスに対応する外部メモリのデータをタスクBのプログラム鍵で復号した結果が、このキャッシュラインに読み込まれる。
【0115】
タスクAとタスクBのプログラム鍵が一致していれば、別々に読み込まれたとしても2つのタスクは同一のプログラムを実行するだけであるが、外部メモリのデータを暗号化した本来の鍵がタスクAのプログラム鍵であり、タスクBの鍵がそれとは違うものである場合、タスクBは本来のプログラムとは異なるでたらめなプログラムを実行することになり、意図する攻撃ができない。
【0116】
一方、カレントタスクレジスタの値とキャッシュラインのタスクIDタグが一致すれば(S509でYES)、要求されたアドレスの内容が、コア902に送られる(S508)。
【0117】
このように、あるタスクの実行中に、別のタスクによって同じキャッシュラインが再度読み込まれた場合、外部メモリの内容は、本来の鍵とは異なる鍵で復号化されてキャッシュラインに読み込まれる。本来の鍵と異なる鍵で復号化した結果を実行したプログラムはもちろん正常な動作をしない。
【0118】
この制御はOSの特権をもっても覆すことはできない。OSが自由にタスク鍵テーブル1303を操作できとしたならば、他のプログラムの秘密を取得することができるが、本発明では、OSがプログラム鍵の登録に代表されるタスクの状態管理と秘密情報の操作を実行できるのは、図5に示すような一連のタスク制御命令の発行に制限されている。したがって、本発明のマイクロプロセッサでは、たとえOSの資源特権をもっても、アプリケーションのプログラムまたはデータの各ブロックに対応する鍵を知らない限り、それを正しく実行したり読み出したりすることはできない。
【0119】
この機構により、アプリケーションプログラムの独立性を保証するマルチパーティのプログラム保護環境が提供できるのである。
【0120】
なお、S506と関連して複数の暗号処理単位1313により迅速な復号処理が可能であると述べたが、1個の暗号処理単位に十分なスループットがあれば、複数の暗号処理単位を備えることは不要である。例えば、DESのように同一種類の演算の繰り返しにより構成される暗号処理では、処理をパイプライン化することにより高いスループットが得られることが知られている。
【0121】
しかし、このようなパイプライン実装は、ハードウェア規模においても、設計の困難さにおいても大きなコストが必要である。また、一般に利用可能なIPの形で提供される暗号処理単位は、設計に高度のノウハウと時間を必要とするので、必要な処理能力に見あった番号処理単位をその都度設計することを大きな負担となる。多様な条件への対応を考えた時、本実施形態のように既存の暗号処理単位を複数並列動作させることが、設計の柔軟性の点で有利である。また、ハードウェア設計コストを含めた全体のコスト削減の効果がある。
【0122】
3.データキャッシュでの実行処理
次に、データキャッシュの動作について説明する。初期化データ、作業領域(スタック)などのデータの保護については、タスクが動的に確保したデータ領域を、任意の暗号鍵によって暗号化保護することができる。初期化データ、作業領域、動的領域など、複数の保護領域を定義し、各々異なる鍵を設定することが可能である。たとえば初期化データの場合、外部メモリにはすでに暗号化済みのデータがおかれており、これを読み出し、復号する際の手順は基本的にはプログラムの場合と同じである。
【0123】
前述したプログラム(実行コード)の場合は、暗号属性は、命令キャッシュ903でカレントタスクIDとキャッシュタグのタスクIDを比較することによって判断されていたが、データの場合は、属性の判断がカレントタスクIDとMTRR(アドレス範囲レジスタ)との比較で行なわれるところが異なる。
【0124】
データアクセスがあった場合、図11に示すデータキャッシュ904のMTRRテーブル管理比較部1402でアクセス属性が判定される。具体的には、MTRRテーブル管理比較部1402にカレントタスクIDとターゲットアドレスが入力されると、タスクIDに対応するMTRRテーブル1403のエントリ(0〜3)のアドレス範囲とターゲットアドレスがそれぞれ比較される。
【0125】
MTRRエントリに合致するものがひとつだけであれば、その属性が無条件に採用され、タスクIDとMTRRエントリIDの組が当該メモリアクセスの暗号属性となる。
【0126】
MTRRエントリが重複したアドレス範囲を持ち、ターゲットアドレスが複数のエントリのアドレス範囲に合致した場合、あらかじめMTRRごとに定められた優先順位にしたがってただひとつのMTRRが選ばれ、このメモリアクセスの暗号属性となる。
【0127】
こうしてMTRRテーブル管理比較部1402で決定されたメモリアクセス属性は、データ読み込みの場合、暗号属性送出部1411の読み込みデータキーIDレジスタ1412に一時的に保持される。また、MTRRテーブル管理比較部1402では、ヒットしたMTRRエントリの先頭アドレスとメモリアクセスのターゲットアドレスから相対アドレス値が計算される。
【0128】
これらのメモリアクセス属性と相対アドレス値は、プログラムメモリのアクセスの場合と同様に、内部バス905を通じて鍵値テーブル(KVT)912に送られる。
【0129】
データキャッシュがBIU906にデータ読み出しを要求し、メモリアクセス属性がKVT912に送られ、データがFCM911に送られて復号化され、データキャッシュに返されるシーケンスは、命令キャッシュの場合と同一である。
【0130】
最後にキャッシュタグにメモリアクセス属性と相対アドレス値が書き込まれてキャッシュの読み込みは完了する。
【0131】
次に、アドレス変換機構を持つ場合のデータキャッシュの非同期書き込みに関する問題と、本実施形態で提供する機構について説明する。
【0132】
図14に、本実施形態のデータキャッシュのデータ構造を示す。データキャッシュメモリ1431は、256本のライン1501―0〜1501−255で構成されている。各ライン(たとえばライン0)は、外部メモリの内容を格納するラインバッファ1501−0−0と、物理アドレスタグ1501−0−1と、相対アドレス値1501−0−2と、タスク識別子1501−0−3と、MTRR識別子1501−0−4と、フラッグ領域1501−0−5を有する。
【0133】
データキャッシュ904が命令キャッシュ903と異なる点は、データの書き戻し、すなわち割り込み時などに、外部メモリに一時的に退避される場合があることである。
【0134】
あるタスクAに読み込まれたキャッシュラインは、必ずしもタスクAの実行中にフラッシュされて外部メモリに書き戻されるとは限らない。別のタスクBの実行中にフラッシュされる可能性もある。アドレス変換機構を持つプロセッサの場合、タスク毎に異なるメモリマップを持つことできるため、キャッシュラインの保存先物理アドレスは、仮想アドレスから一意に決定することはできない。
【0135】
従来、この問題は、キャッシュタグに物理アドレスタグ1501−0−1をもうけて、保存先の物理アドレス情報を付与すれば、現在実行中のタスクが何であるかに関わらずキャッシュラインの保存先を決定できる。
【0136】
ところが、これに本発明のブロック対応鍵を利用した暗号化を適用しようとすると、問題が生じる。ブロック対応鍵は、上述したように、キャッシュラインの仮想アドレスと、オフセット値の差である相対アドレス値から生成されている。一般にはこの相対アドレス値は物理アドレスから生成することはできないので、キャッシュの書き戻しにあたってのデータ暗号化ができない。
【0137】
本実施形態では、データキャッシュメモリ1431のキャッシュタグに、相対アドレス値を格納するタグ1501−0−2をもうけて、このキャッシュラインの確保時に付与された相対アドレス値を保存することで、書き戻し時の暗号化の問題を解決している。タグの書き込みは、このキャッシュラインの暗号属性決定時に行う。
【0138】
別の方法として、キャッシュタグに仮想アドレスを保持しても同様の機能が実現される。キャッシュの非同期書き戻しを実行するときに、メモリ領域情報はMTRRテーブル1403に保持されているので、仮想アドレスとタスク識別子からMTRRのオフセット情報を取得して相対アドレス値を計算すればよい。
【0139】
データキャッシュ904では、配布鍵で決められた初期化データと作業領域の他に、2箇所のデータ領域を追加することができる。これらの領域は、MTRR(アドレス範囲レジスタ)のID2、3で指定される。
【0140】
データ領域の追加は、setkeyと呼ぶ特別な命令をタスクが発行することで行なわれる。プロセッサの所定のレジスタにデータの暗号鍵、補助定数とメモリ領域およびMTRR IDを格納してsetkey命令を発行する。Setkey命令は自タスクIDのデータ暗号化属性のみに有効なので、命令で明示的にタスクIDを指定する必要はない。
【0141】
Setkey命令は、プロセッサコア902の内部で、データキャッシュ904のMTRRテーブル1403へのアクセスと、鍵値テーブル912のデータ鍵テーブル1305へのアクセスという、2つのステップに分解されて実行される。
【0142】
タスクの初期状態において、MTRR(アドレス範囲レジスタ)の2、3は無効化された状態、すなわちアドレス範囲の大きさが0である状態にある。この状態ではいかなるメモリアクセスもアドレス範囲に該当しない。
【0143】
Setkey命令が発行されると、最初にタスクIDとMTRRのIDに一致するデータキャッシュラインがフラッシュされる。
【0144】
次に、鍵値テーブル912のデータ鍵テーブル1305のタスクIDとMTRRのIDでインデックスされた欄に、暗号鍵が書き込まれる。
【0145】
次に、データキャッシュ904のMTRRテーブル1403の指定タスクIDとMTRR IDでインデックスされた欄に、アドレス範囲が書き込まれる。
【0146】
MTRRのアドレス範囲の長さが0を越えるとその暗号化指定が有効になる。以下、追加データの読み書きについては初期化データの場合と同様である。
【0147】
設定したMTRRを変更、すなわちデータ領域の属性を変更するには、再度setkey命令を発行する。上述のように、setkey命令を発行するとMTRRのIDに対応するキャッシュ上のラインはすべてフラッシュされ、外部メモリへと書き出される。その後、データ鍵テーブル1305,MTRRテーブル1403に新しい設定が書き込まれ、新しい設定での読み書きが始まる。
【0148】
いったん外部メモリに書き戻されて保存された暗号データは、先に使用した暗号鍵Kx、補助定数Cx、オフセットアドレスが一致して初めて正しく読み出せる。たとえ暗号鍵、補助定数が一致していてもオフセットアドレスが一致しなければ正しい値を復号化することはできない。このことはタスク間で共有される共有メモリやディスクデータの読み書きにおいて重要である。この理由でsetkey命令が実行されると、対応するキャッシュラインは無条件にフラッシュされる。
【0149】
逆に、あるデータ領域が外部メモリ上で別の絶対メモリアドレスに領域にコピーされたとしても、MTRRの領域指定先頭アドレスが移動先アドレスに対応して設定されれば、暗号鍵、補助定数が一致する条件の下で、元のデータを正しく読み出すことができる。
【0150】
このように、本実施形態ではデータの暗号化においても、ブロック交換攻撃防止のためのブロックごとの個別暗号鍵方式と、メモリの再配置(リロケーション)とを、矛盾なく両立させることができる。
【0151】
<タスクの一時中断>
マルチタスクOSでは、タスクの実行はしばしば割り込みにより中断される。割り込み後はOSの割り込みハンドラが実行され、必要に応じて、別のタスクに実行が切替えられる場合と、タスクの切り替えなしに元のタスクに復帰する場合がある。
【0152】
本実施形態のプロセッサでは、割り込みコントローラから割り込み要求があると、保護タスクの実行は中断され、割り込みベクタで指定されるアドレスの割り込みハンドラの実行が開始される。すなわち、それまでの保護タスクのレジスタ値(コンテキスト情報)が、割り込みハンドラによりコア902のレジスタバッファ(アレイ)915に退避され、OSを含む他のタスクからの読み出しから保護される。この割り込みにより、図6の状態遷移に示されるように、タスク状態テーブル921の値がRUNからSTOPPEDに移行する。
STOPPED状態では、中断されたタスクのコンテキストは、コア902のレジスタバッファ915を占有しているが、この状態でSUSPEND命令(タスク実行状態保存命令)が発せられると、レジスタバッファの内容は、SUSPEND命令で指定されたメモリ領域に保存され、タスク状態はSUSPENDへ移行する。割り込みハンドラは、レジスタバッファの内容を読み出すことはできないが、それを一括してメモリに保存することはできるのである。
【0153】
割り込み処理時間が長い場合や、タスク切り替えがある場合は、レジスタバッファの内容は、キャッシュメモリに保存される。また、保存されたコンテキスト情報が、さらに外部メモリへ書き出される場合もある。この場合、コンテキスト情報が所定のコンテキスト鍵で暗号化されてから、外部メモリに書き出される。
【0154】
SUSPEND(保存)状態のタスクを再開するには、図5および6に示すように、タスクIDとコンテキスト情報の保存先アドレスを指定して、resume命令を発行する。
【0155】
STOPPED状態(レジスタ値が保存されず、単に退避されている状態)からタスクを再開するには、continue命令を発行する。たとえば、割り込み処理が簡単に終りタスクの切り替えが起きない場合や、ソフトウェアタイマーのカウンタインクリメント処理では、それまで実行されていたレジスタ値を保存せずに、レジスタバッファアレイ915に退避させるにとどまる。この場合は、レジスタバッファからレジスタ値が復帰され、割り込み前のタスク実行が再開される。タスクの状態は、STOPPEDからRUNに戻される。
【0156】
図15は、suspend(タスク状態保存)命令が出されたときの処理フローである。
【0157】
まず、suspend命令の発行を受けて、タスク状態テーブル921を参照して、指定されたタスク状態がSTOPPEDであるか判断される(S601)。STOPPEDでない場合は(S601でNO)、それまのレジスタ値がコア902のレジスタバッファ(アレイ)915に退避されていないことになるので、この状態でsuspend命令が出されても無効にされ、タスク状態はINVALIDにされる(S605)。
【0158】
指定されたタスク状態がSTOPPEDの場合は(S601でYES)、レジスタバッファアレイ915にある内容が、suspend命令で指定されたアドレスのメモリ領域に書き込まれ、保存が開始される(S692)。
【0159】
保存はキャッシュへの保存が基本であり、保存開始前にタスクチャネル916を通じてそれまで実行していたタスクのIDが、データキャッシュの保存予定コンテキスト識別子レジスタ1434に保持される。そして、データキャッシュメモリ1431上でコンテキスト情報を書き込むためのキャッシュラインが確保され、データの転送が開始される。ラインの書き込み完了ごとに、キャッシュラインのタグにコンテキストを表す識別子とタスクIDが書き込まれる。
【0160】
コンテキスト情報の保存は元のメモリの内容を完全に上書きするものである。コンテキスト情報はキャッシュラインサイズの整数倍で、その先頭アドレスがかならずキャッシュラインサイズでアラインされており、通常必要とされる書き込み前に保存先内容を読み出す動作(ライトアロケート)は不要となる。
【0161】
そして、コア902のハッシュ計算部922で、レジスタバッファの内容全体のハッシュが計算され、タスクIDとともに、メモリ上のレジスタ情報の最後にハッシュ値が付加される(S603)。多数ラインにわたる場合は、コア902のタスクスイッチャ(STS)914は、レジスタバッファアレイ915の情報を順次キャッシュラインに書き込みながらハッシュを計算する。
【0162】
コンテキスト領域の最後にタスクIDとハッシュ値を書き込み、タグの付加が終わるとsuspend命令の実行は完了となり、タスクの状態はSUSPENDに移行する(S604)。
【0163】
保存されたコンテキスト情報は、データと同様に、タスクの実行とは非同期的に外部メモリ108へと書き出される。外部メモリへの書き出し時のコンテキスト情報の取り扱いで、他の情報と異なる点が2点ある。ひとつは相対アドレス値の扱いであり、もうひとつは読み込み処理の違いである。
【0164】
コンテキスト情報は複数のブロックで構成されるが、相対アドレス値として同一の値が使われる。相対アドレス値には、あらかじめ定められた定数が用いられる。コンテキスト情報にはハッシュが付加されているため、ブロックの交換に元々耐性があるためである。コンテキスト情報が保存されたキャッシュラインがフラッシュされる時、取り出された暗号属性は書き出しコンテキストキーID1415に一時的に保持される。その後の処理は、データキャッシュの書き出しと同様である。
【0165】
図16は、保存されたコンテキスト情報からタスクを再開する処理フローである。
【0166】
まず、保存されたコンテキスト情報を読み込んでタスクの実行を再開するために、タスクIDと保存先メモリアドレスをパラメータとしたresume命令が発行されると、指定されたタスク状態がSUSPENDであるかどうか判断される(S701)。SUSPEND状態にない場合は(S701でNO)、コンテキスト情報が保存されていないので、タスク状態はINVALIDにされる(S707)。換言すれば、resume命令はタスク状態がSUSPENDED以外の場合は、無効である。
【0167】
SUSPEND状態にある場合は(S701でYES)、アドレスとタスクIDが、それぞれアドレスラインとタスクチャンネルを通して、データキャッシュ904に送られる。キャッシュのアドレスがヒットして、かつタグがコンテキストを示しており、タスクIDが一致する場合、キャッシュメモリ1431上のデータが、レジスタバッファに転送され、タスクの再開処理が開始される(S702)。
【0168】
レジスタバッファへのデータ転送と並行してハッシュ計算が行なわれる(S703)。計算したハッシュが期待値と一致するかどうか判断され(S704)、不一致の場合、再開処理は中止され、タスクはINVALID状態となる(S707)。
【0169】
ハッシュが一致した場合は(S704でYES)、カレントタスクレジスタに指定されたタスクのIDを設定し(S705)、タスクの状態をRUNに変更して実行が再開される(S706)。
【0170】
図16のフローには記載されていないが、resume命令で指定されたコンテキスト情報の領域がキャッシュにヒットしない場合は、保存されたデータが外部メモリに書き出されている場合である。この場合は、外部メモリからのデータ読み込みが開始される。すなわち、タスクIDレジスタ1401に保持されたタスクIDと、resume命令で指定されたアドレスに対応するメモリの読み出し要求がデータキャッシュ904からBIU906に送られる。そして、タスクIDとコンテキストを意味する暗号属性が鍵値テーブル912へ送られ、FCM911で復号のための鍵が生成される。ある時点で保存されたタスクのコンテキスト情報は、すべて同じ鍵で暗号化されているので、ブロック単位の鍵生成は行なわない。
【0171】
復号が完了したブロックは、順次データキャッシュ904へと送られ、タスクスイッチャ(STS)914はレジスタバッファアレイ915にその内容を読み込む。以後の処理はキャッシュがヒットした場合と同じである。
【0172】
<タスクの終了>
タスクを終了して、割り当てたタスクIDとプロセッサ内の各種テーブルを別の新しいタスクのために再利用するには、タスクIDを指定してdelete命令を発行する。本実施形態では、それまでのタスクの内容が不正に覗き見されないように、システム動作中は、一度登録したタスクのタスクIDは、その登録を削除しない限り、新しいタスクのために使用することはできない。
【0173】
図17は、タスク削除の処理フローを示す。
【0174】
まず、タスクに対してdelete命令が発行されると、指定されたタスクがINIT、STOPPED、SUSPENDのいずれかの状態にあるかが判断される(S801)。上記のいずれの状態にもない場合(すなわちRUN,NULLである場合)には、タスクはINVALIDにされ(S805)、エラーとなる。
【0175】
上記のいずれかの状態にある場合は(S801でYES)、指定されたタスクIDに対応するタグが付与されたキャッシュラインがフラッシュされ(S802)。
【0176】
これにより、対応する鍵テーブル1303〜1305、命令キャッシュのオフセットテーブル1207、データキャッシュのMTRRテーブル1403もクリアされる(S803)。
【0177】
これらの動作が完了すると、タスク状態がNULLにされる(S804)。
【0178】
Delete命令を発行するのはタスク自身ではなくOSであり、delete命令を発行できるのはRUNとNULL以外の状態にあるタスクに対してである。
【0179】
タスクが削除されてタスクIDがNULL状態となれば、再びregister命令により配布鍵を登録して、新しいタスクを実行することができる。
【0180】
【発明の効果】
少ない数の秘密に基づき、簡便な方法でプログラムをブロックごとに暗号化、復号化するので、ブロック入れ替え攻撃を防止できるとともに、ソフトウェアベンダ側とマイクロプロセッサ側の双方の資源管理、処理負担が軽減する。
【0181】
ブロック対応暗号化に、仮想メモリ空間に基づく相対アドレスを用いるので、リロケーションの問題に効率的に対処できる。
【0182】
鍵値テーブルと高速暗号鍵処理モジュールをキャッシュ間で共有することにより、ハードウェアコストが削減される。
【図面の簡単な説明】
【図1】本発明の実施形態に係るマルチパーティのアプリケーション保護環境を示す図である。
【図2】図1のターゲットシステムに内蔵されたマイクロプロセッサの概略構成図である。
【図3】図1のマルチパーティ保護環境を実現するためのブロック対応暗号鍵生成手順を示す図である。
【図4】本発明の実施形態で用いられる情報配置記述子と配布鍵の構成と、これらの情報が配置される仮想アドレス空間のメモリマップを示す図である。
【図5】タスク制御命令の例を示す図である。
【図6】タスク状態遷移の例を示す図である。
【図7】マイクロプロセッサ上でのタスク登録の動作を示す図である。
【図8】タスク登録の処理手順を示すフローチャートである。
【図9】図2に示すマイクロプロセッサ内の命令キャッシュの概略構成図である。
【図10】図2に示すマイクロプロセッサ内の鍵値テーブルと高速暗号鍵処理モジュールの概略構成図である。
【図11】図2に示すマイクロプロセッサ内のデータキャッシュの概略構成図である。
【図12】タスク実行開始の処理手順を示すフローチャートである。
【図13】命令キャッシュの読み込み(フェッチ)手順を示すフローチャートである。
【図14】データキャッシュ内部のデータ構造を示す図である。
【図15】タスク状態保存(SUSPEND)の処理手順を示すフローチャートである。
【図16】中断されたタスク再開の処理手順を示すフローチャートである。
【図17】タスクの終了(削除)の処理手順を示すフローチャートである。
【図18】従来のマルチパーティアプリケーション保護環境の図である。
【符号の説明】
102 ターゲットシステム(ユーザーシステム)
103 マイクロプロセッサ
105 秘密鍵
108 外部メモリ
113 公開鍵
121 ソフトウェアベンダ
125 配布鍵
126 ブロック対応暗号処理部
200 プロセッサパッケージ
902 コア
903 命令キャッシュ
904 データキャッシュ
905 内部バス
906 バスインターフェイスユニット(BIU)
911 高速暗号鍵処理モジュール(FCM)
912 鍵値テーブル
913 配布鍵管理モジュール
913−1 シーケンサ
913−2 公開鍵復号モジュール
914 タスクスイッチャ
915 レジスタバッファアレイ
921 タスク状態テーブル
922 ハッシュ計算部
1111 情報配置記述子
1203 命令キャッシュメモリ
1204、1302、1401 カレントタスクIDレジスタ
1205 アクセス検証部
1207 オフセットテーブル
1303〜1305 キーテーブル
1311 ディスパッチャ
1312 鍵生成モジュール
1313 暗号処理モジュール
1402 MTRRテーブル管理比較部
1403 MTRR(アドレス範囲レジスタ)テーブル
1411 暗号属性送出部

Claims (5)

  1. 複数の状態を取り得るタスクに識別子を付与し、前記タスク識別子と対応して前記タスクの状態を保持するタスク状態テーブルと、
    前記タスク識別子で識別される、前記タスク毎のプログラム鍵を格納する鍵値テーブルと、
    現在実行中のタスク識別子を保持するタスクレジスタと、
    前記タスクの要求があったときに、外部メモリに前記プログラム鍵で暗号化された状態で格納されているプログラムをキャッシュライン単位に読み込むインターフェイスと、
    前記インターフェイスにより読み込まれた内容を前記プログラム鍵に基づいて復号する暗号処理部と、
    各々がタグを有する複数のキャッシュラインから構成され、キャッシュラインごとに、そのキャッシュラインの復号に用いられた復号鍵に対応するタスク識別子を前記タグに保持する第1のキャッシュメモリと、
    前記キャッシュラインのタグに保持されたタスク識別子と、前記タスクレジスタの値を比較し、値が一致しない場合に前記キャッシュラインの内容を廃棄するアクセス検証部と
    前記タスク識別子および所定の暗号鍵で暗号化状態にあるプログラム鍵をパラメータとした第1のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を初期状態であるNULLから実行状態であるRUNへと遷移させ、該遷移の間に所定の復号鍵による前記プログラム鍵の復号と、該プログラム鍵の前記タスク識別子で指定された前記鍵値テーブルのエントリへの格納を1回だけ行う第1のタスク制御手段と、
    前記タスク識別子をパラメータとした第2のタスク制御命令の発行により、前記タスクの状態を実行状態であるRUNから初期状態であるNULLへと遷移させ、該遷移の間に前記タスク識別子に対応する前記鍵値テーブルのエントリおよび前記タスク識別子をタグ値として保持する前記キャッシュラインの消去を行う第2のタスク制御手段と
    を備えるマイクロプロセッサ。
  2. 前記タスク識別子で識別される、前記タスク毎の前記プログラムのオフセットアドレスを保持するオフセットテーブルを更に備え、
    前記暗号処理部が、前記タスクの要求先のアドレスと、前記オフセットアドレスとから相対アドレスを計算し、該相対アドレスを前記プログラム鍵で暗号化することにより前記キャッシュライン毎に異なる復号鍵を生成し、該復号鍵で読み込まれた内容を復号し、
    前記第1のタスク制御手段が、前記第1のタスク制御命令の発行時のパラメータとして前記タスク識別子および所定の暗号鍵で暗号化状態にあるプログラム鍵およびオフセットアドレスをとり、前記タスク識別子で指定されたタスクの状態のNULLからRUNへの遷移の間に、前記前記オフセットアドレスの前記タスク識別子で指定された前記鍵値テーブルのエントリへの格納を1回だけ行うことを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 複数の状態を取り得るタスクに識別子を付与し、前記タスク識別子と対応して複数のタスクの状態を保持するタスク状態テーブルと、
    前記タスク識別子で識別される、前記タスク毎のプログラム鍵を格納する鍵値テーブルと、
    現在実行中のタスク識別子を保持するタスクレジスタと、
    前記タスクの要求があったときに、外部メモリに所定のプログラム鍵で暗号化された状態で格納されているプログラムをキャッシュライン単位に読み込むインターフェイスと、
    前記プログラム鍵に基づいて前記インターフェイスにより読み込まれた内容を復号する暗号処理部と、
    各々がタグを有する複数のキャッシュラインから構成され、キャッシュラインごとに、 そのキャッシュラインの復号に用いられた復号鍵に対応するタスク識別子を前記タグに保持する第1のキャッシュメモリと、
    前記キャッシュラインのタグに保持されたタスク識別子と、前記タスクレジスタの値を比較し、値が一致しない場合に前記キャッシュラインの内容を廃棄するアクセス検証部と、
    前記タスク識別子および所定の暗号鍵で暗号化状態にあるプログラム鍵をパラメータとした第3のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を初期状態であるNULLから実行準備状態であるINITへと遷移させ、該遷移の間に所定の復号鍵による前記プログラム鍵および実行開始アドレスの復号と、該実行開始アドレスの前記プログラム鍵の前記タスク識別子で指定された前記鍵値テーブルのエントリへの格納を1回だけ行う第3のタスク制御手段と、
    前記タスク識別子をパラメータとした第4のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を実行準備状態であるINITから実行状態であるRUNへと遷移させ、該遷移の間に1回だけプログラムカウンタ値を前記プログラムの先頭アドレスにセットして実行を開始する第4のタスク制御手段と、
    前記タスク識別子をパラメータとした第5のタスク制御命令の発行により、前記タスクの状態を実行状態であるRUNから初期状態であるNULLへと遷移させ、該遷移の間に前記タスク識別子に対応する前記鍵値テーブルのエントリおよび前記タスク識別子をタグ値として保持する前記キャッシュラインの消去を行う第5のタスク制御手段と
    を備えるマイクロプロセッサ。
  4. 複数の状態を取り得るタスクに識別子を付与し、前記タスク識別子と対応して複数のタスクの状態を保持するタスク状態テーブルと、
    前記タスク識別子で識別される、前記タスク毎のプログラム鍵を格納する鍵値テーブルと、
    現在実行中のタスク識別子を保持するタスクレジスタと、
    前記タスクの要求があったときに、外部メモリに前記プログラム鍵で暗号化された状態で格納されているプログラムをキャッシュライン単位に読み込むインターフェイスと、
    前記プログラム鍵に基づいて前記インターフェイスにより読み込まれた内容を復号する暗号処理部と、
    各々がタグを有する複数のキャッシュラインから構成され、キャッシュラインごとに、そのキャッシュラインの復号に用いられた復号鍵に対応するタスク識別子を前記タグに保持する第1のキャッシュメモリと、
    前記キャッシュラインのタグに保持されたタスク識別子と、前記タスクレジスタの値を比較し、値が一致しない場合に前記キャッシュラインの内容を廃棄するアクセス検証部と、
    前記実行中のタスクが中断されたときに、中断されたタスクの実行状態を一時的に保存する第2のキャッシュメモリと
    前記タスク識別子および所定の暗号鍵で暗号化状態にあるプログラム鍵をパラメータとした第6のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を初期状態であるNULLから実行準備状態であるINITへと遷移させ、該遷移の間に所定の復号鍵による前記プログラム鍵および実行開始アドレスの復号と、該実行開始アドレスの前記プログラム鍵の前記タスク識別子で指定された前記鍵値テーブルのエントリへの格納を1回だけ行う第6のタスク制御手段と、
    前記タスク識別子をパラメータとした第7のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を実行準備状態であるINITから実行状態であるRUNへと遷移させ、該遷移の間に1回だけプログラムカウンタ値を前記プログラムの先頭アドレスにセットして実行を開始する第7のタスク制御手段と、
    割り込みによって前記タスク識別子で指定されたタスクの状態を実行状態であるRUNから実行中断状態であるSTOPPEDへと遷移させ、該遷移の間にタスクの状態を前記 第2のキャッシュメモリに保存する第8のタスク制御手段と、
    前記タスク識別子をパラメータとした第9のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を実行中断状態であるSTOPPEDから実行状態であるRUNへと遷移させ、前記実行状態を復帰してタスク実行を再開する第9のタスク制御手段と、
    前記タスク識別子をパラメータとした第10のタスク制御命令の発行により、前記タスクの状態を実行中断状態であるSTOPPEDまたは休眠状態であるSUSPENDから初期状態であるNULLへと遷移させ、該遷移の間に前記タスク識別子に対応する前記鍵値テーブルのエントリおよび前記タスク識別子をタグ値として保持する前記キャッシュラインの消去を行う第10のタスク制御手段と、
    を備えるマイクロプロセッサ。
  5. 複数の状態を取り得るタスクに識別子を付与し、前記タスク識別子と対応して複数のタスクの状態を保持するタスク状態テーブルと、
    前記タスク識別子で識別される、前記タスク毎のプログラム鍵を格納する鍵値テーブルと、
    現在実行中のタスク識別子を保持するタスクレジスタと、
    前記タスクの要求があったときに、外部メモリに前記プログラム鍵で暗号化された状態で格納されているプログラムをキャッシュライン単位に読み込むインターフェイスと、
    前記プログラム鍵に基づいて前記インターフェイスにより読み込まれた内容を復号する暗号処理部と、
    各々がタグを有する複数のキャッシュラインから構成され、キャッシュラインごとに、そのキャッシュラインの復号に用いられた復号鍵に対応するタスク識別子を前記タグに保持する第1のキャッシュメモリと、
    前記キャッシュラインのタグに保持されたタスク識別子と、前記タスクレジスタの値を比較し、値が一致しない場合に前記キャッシュラインの内容を廃棄するアクセス検証部と、
    前記実行中のタスクが中断されたときに、中断されたタスクの実行状態を一時的に保存する第2のキャッシュメモリと
    前記タスク識別子および所定の暗号鍵で暗号化状態にあるプログラム鍵をパラメータとした第11のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を初期状態であるNULLから実行準備状態であるINITへと遷移させ、該遷移の間に所定の復号鍵による前記プログラム鍵および実行開始アドレスの復号と、該実行開始アドレスの前記プログラム鍵の前記タスク識別子で指定された前記鍵値テーブルのエントリへの格納を1回だけ行う第11のタスク制御手段と、
    前記タスク識別子をパラメータとした第12のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を実行準備状態であるINITから実行状態であるRUNへと遷移させ、該遷移の間に1回だけプログラムカウンタ値を前記プログラムの先頭アドレスにセットして実行を開始する第12のタスク制御手段と、
    割り込みによって前記タスク識別子で指定されたタスクの状態を実行状態であるRUNから実行中断状態であるSTOPPEDへと遷移させ、該遷移の間にタスクの状態を前記第2のキャッシュメモリに保存する第13のタスク制御手段と、
    前記タスク識別子をパラメータとした第14のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を実行中断状態であるSTOPPEDから休眠状態であるSUSPENDへと遷移させ、前記第2のキャッシュメモリに格納されたタスク状態情報を所定の暗号鍵で暗号化して前記インターフェイスを通じて外部メモリに書き出す第14のタスク制御手段と、
    前記タスク識別子をパラメータとした第15のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を休眠状態であるSUSPENDから実行中断状態であるSTOPPEDへと遷移させ、前記インターフェイスを通じて外部メモリに格納され たタスク状態情報を所定の鍵で復号して前記第2のキャッシュメモリに格納し、前記タスク状態情報を復帰してタスク実行を再開する第15のタスク制御手段と、
    前記タスク識別子をパラメータとした第16のタスク制御命令の発行により、前記タスク識別子で指定されたタスクの状態を実行中断状態であるSTOPPEDから実行状態であるRUNへと遷移させ、前記実行状態を復帰してタスク実行を再開する第11のタスク制御手段と、
    前記タスク識別子をパラメータとした第16のタスク制御命令の発行により、前記タスクの状態を実行中断状態であるSTOPPEDまたは休眠状態であるSUSPENDから初期状態であるNULLへと遷移させ、該遷移の間に前記タスク識別子に対応する前記鍵値テーブルのエントリおよび前記タスク識別子をタグ値として保持する前記キャッシュラインの消去を行う第16のタスク制御手段と、
    を備えるマイクロプロセッサ。
JP2001304488A 2001-09-28 2001-09-28 マイクロプロセッサ Expired - Fee Related JP4226816B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2001304488A JP4226816B2 (ja) 2001-09-28 2001-09-28 マイクロプロセッサ
DE60214640T DE60214640T2 (de) 2001-09-28 2002-09-27 Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen
KR10-2002-0058773A KR100503906B1 (ko) 2001-09-28 2002-09-27 마이크로프로세서
EP02256772A EP1298518B1 (en) 2001-09-28 2002-09-27 Microprocessor with improved task management and table management mechanism
CN02143924A CN1410876A (zh) 2001-09-28 2002-09-28 微处理机
US10/259,379 US7424622B2 (en) 2001-09-28 2002-09-30 Microprocessor with improved task management and table management mechanism
US12/118,291 US7673155B2 (en) 2001-09-28 2008-05-09 Microprocessor with improved task management and table management mechanism

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001304488A JP4226816B2 (ja) 2001-09-28 2001-09-28 マイクロプロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008276073A Division JP4643702B2 (ja) 2008-10-27 2008-10-27 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2003108442A JP2003108442A (ja) 2003-04-11
JP4226816B2 true JP4226816B2 (ja) 2009-02-18

Family

ID=19124403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001304488A Expired - Fee Related JP4226816B2 (ja) 2001-09-28 2001-09-28 マイクロプロセッサ

Country Status (6)

Country Link
US (2) US7424622B2 (ja)
EP (1) EP1298518B1 (ja)
JP (1) JP4226816B2 (ja)
KR (1) KR100503906B1 (ja)
CN (1) CN1410876A (ja)
DE (1) DE60214640T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116741B2 (en) 2010-02-18 2015-08-25 Kabushiki Kaisha Toshiba Computer program product, and information processing apparatus and method

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
JP4115759B2 (ja) * 2002-07-01 2008-07-09 株式会社東芝 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
US7519833B2 (en) 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7900055B2 (en) 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7539876B2 (en) 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7844053B2 (en) 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7529367B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7392400B2 (en) 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7321910B2 (en) 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7536560B2 (en) 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
JP4624732B2 (ja) * 2003-07-16 2011-02-02 パナソニック株式会社 アクセス方法
WO2005020111A2 (en) * 2003-08-21 2005-03-03 Koninklijke Philips Electronics, N.V. Hardware register access via task tag id
JP4309726B2 (ja) * 2003-09-01 2009-08-05 株式会社東芝 マイクロプロセッサ
JP4263976B2 (ja) 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US20050097300A1 (en) * 2003-10-30 2005-05-05 International Business Machines Corporation Processing system and method including a dedicated collective offload engine providing collective processing in a distributed computing environment
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
JP4282472B2 (ja) 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
JP4559794B2 (ja) 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4490192B2 (ja) 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム
JP4668556B2 (ja) * 2004-07-02 2011-04-13 株式会社エヌ・ティ・ティ・ドコモ タスク管理システム
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
US8954751B2 (en) 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US20060242429A1 (en) * 2004-12-21 2006-10-26 Michael Holtzman In stream data encryption / decryption method
JP4737592B2 (ja) * 2005-02-16 2011-08-03 ルネサスエレクトロニクス株式会社 データ処理装置
JP4721737B2 (ja) * 2005-03-17 2011-07-13 富士通株式会社 データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
US7843830B1 (en) * 2005-05-05 2010-11-30 Force 10 Networks, Inc Resilient retransmission of epoch data
CN100447702C (zh) * 2005-05-23 2008-12-31 联想(北京)有限公司 一种防止未被授权程序在计算机系统运行的方法及其系统
US7684566B2 (en) 2005-05-27 2010-03-23 Microsoft Corporation Encryption scheme for streamed multimedia content protected by rights management system
JP4372061B2 (ja) * 2005-07-01 2009-11-25 パナソニック株式会社 機密情報実装システム及びlsi
US8321690B2 (en) * 2005-08-11 2012-11-27 Microsoft Corporation Protecting digital media of various content types
CN100354789C (zh) * 2005-08-19 2007-12-12 华为技术有限公司 一种内容群组的数字版权保护方法及系统
US7970133B2 (en) * 2006-01-19 2011-06-28 Rockwell Collins, Inc. System and method for secure and flexible key schedule generation
US8001591B2 (en) * 2006-01-31 2011-08-16 Freescale Semiconductor, Inc. Distributed resource access protection
US7991965B2 (en) 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US20070297606A1 (en) * 2006-06-27 2007-12-27 Tkacik Thomas E Multiple key security and method for electronic devices
US8285877B1 (en) * 2006-12-05 2012-10-09 Nvidia Corporation Intelligent background data conversion
US8588421B2 (en) 2007-01-26 2013-11-19 Microsoft Corporation Cryptographic key containers on a USB token
JP2009044677A (ja) * 2007-08-10 2009-02-26 Panasonic Corp 機密情報処理装置、機密情報処理機器、及び機密情報処理方法
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
JP2009199414A (ja) * 2008-02-22 2009-09-03 Renesas Technology Corp マイクロコンピュータ
US8112634B2 (en) * 2008-06-04 2012-02-07 Samsung Electronics Co., Ltd. Security-enhanced storage devices using media location factor in encryption of hidden and non-hidden partitions
US8145855B2 (en) 2008-09-12 2012-03-27 Sandisk Technologies Inc. Built in on-chip data scrambler for non-volatile memory
US8429330B2 (en) * 2008-09-12 2013-04-23 Sandisk Technologies Inc. Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8745411B2 (en) * 2008-11-07 2014-06-03 Broadcom Corporation Protecting external volatile memories using low latency encryption/decryption
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法
JP5322620B2 (ja) 2008-12-18 2013-10-23 株式会社東芝 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム
JP5304345B2 (ja) * 2009-03-11 2013-10-02 富士通株式会社 コンテンツ処理装置、コンテンツ処理システム、およびコンテンツ処理プログラム
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8819446B2 (en) * 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8578175B2 (en) * 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
EP2280365B1 (en) * 2009-07-27 2012-07-18 Nagravision S.A. A processor-implemented method for ensuring software integrity
JP2011071760A (ja) * 2009-09-25 2011-04-07 Canon Inc 情報処理装置、情報処理装置のジョブ処理方法、及びプログラム
JP2011181000A (ja) * 2010-03-03 2011-09-15 Toshiba Corp コントローラ、半導体記憶装置および半導体記憶装置の制御方法
US8751789B2 (en) * 2010-09-17 2014-06-10 International Business Machines Corporation General purpose distributed encrypted file system
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US8745408B2 (en) * 2011-04-08 2014-06-03 Infineon Technologies Ag Instruction encryption/decryption arrangement and method with iterative encryption/decryption key update
JP5775738B2 (ja) * 2011-04-28 2015-09-09 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
JP5316592B2 (ja) * 2011-06-09 2013-10-16 富士通セミコンダクター株式会社 セキュアプロセッサ用プログラム
KR101869059B1 (ko) * 2012-02-28 2018-06-20 삼성전자주식회사 저장 장치 및 그것의 메모리 컨트롤러
EP2653992A1 (en) * 2012-04-17 2013-10-23 Itron, Inc. Microcontroller configured for external memory decryption
US8572410B1 (en) 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
JP6214142B2 (ja) * 2012-10-09 2017-10-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US20140181402A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
TW201512894A (zh) * 2013-09-24 2015-04-01 hong-jian Zhou 資料存取系統及其資料與指令傳輸裝置
US9223965B2 (en) 2013-12-10 2015-12-29 International Business Machines Corporation Secure generation and management of a virtual card on a mobile device
US9235692B2 (en) 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US20170116003A1 (en) * 2015-10-27 2017-04-27 International Business Machines Corporation Dynamic determination of the applicability of a hardware accelerator to a request
US9886390B2 (en) * 2015-11-10 2018-02-06 International Business Machines Corporation Intelligent caching of responses in a cognitive system
CN107145308B (zh) * 2017-05-04 2021-06-22 惠州Tcl移动通信有限公司 移动终端、及其sd卡操作控制方法、系统、存储装置
IT201700050153A1 (it) * 2017-05-09 2018-11-09 St Microelectronics Srl Modulo hardware di sicurezza, relativo sistema di elaborazione, circuito integrato e dispositivo
US10509666B2 (en) * 2017-06-29 2019-12-17 Ati Technologies Ulc Register partition and protection for virtualized processing device
TWI670960B (zh) 2018-06-14 2019-09-01 笠眾實業有限公司 在公眾網路下進行驗證連線的車聯網系統及其連線方法
US11595192B2 (en) * 2020-04-24 2023-02-28 Dell Products L.P. System and method of migrating one or more storage class memories from a first information handling system to a second information handling system
CN117940910A (zh) * 2021-08-18 2024-04-26 美光科技公司 选择性高速缓存行存储器加密
CN114462105A (zh) * 2022-03-18 2022-05-10 浙江中控研究院有限公司 一种应用于现场可编程逻辑门阵列的程序防盗方法及装置
CN117519955B (zh) * 2024-01-08 2024-03-29 浪潮电子信息产业股份有限公司 一种加速设备的控制方法、系统、装置及加速设备

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3976978A (en) * 1975-03-26 1976-08-24 Honeywell Information Systems, Inc. Method of generating addresses to a paged memory
US4168396A (en) * 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4463420A (en) * 1982-02-23 1984-07-31 International Business Machines Corporation Multiprocessor cache replacement under task control
US4558176A (en) 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
JPS6079446A (ja) 1983-10-06 1985-05-07 Hitachi Ltd 多重仮想記憶デ−タ処理装置
US4887296A (en) * 1984-10-26 1989-12-12 Ricoh Co., Ltd. Cryptographic system for direct broadcast satellite system
JPH0192833A (ja) * 1987-10-02 1989-04-12 Satoru Kubota 暗号翻訳の回路を内蔵することにより、ソフトウェアの違法なコピーを防止するマイクロプロセッサ
US5097533A (en) * 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
JPH03204744A (ja) 1990-01-08 1991-09-06 Nec Corp アドレス変換機構
JPH03235143A (ja) 1990-02-13 1991-10-21 Sanyo Electric Co Ltd キャッシュメモリ制御装置
JP2846697B2 (ja) 1990-02-13 1999-01-13 三洋電機株式会社 キャッシュメモリ制御装置
JP3235144B2 (ja) 1991-08-02 2001-12-04 ソニー株式会社 量子箱列の作製方法
JP3235143B2 (ja) 1991-11-25 2001-12-04 ソニー株式会社 アルカリ電池
JP3204744B2 (ja) 1992-07-22 2001-09-04 株式会社東芝 信号遅延メモリ回路
US5319705A (en) * 1992-10-21 1994-06-07 International Business Machines Corporation Method and system for multimedia access control enablement
JP3381079B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 キャッシュメモリを用いた排他制御システム
JP3381080B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 処理の中断が可能な排他制御方式
JPH06266621A (ja) 1993-03-17 1994-09-22 Nippon Telegr & Teleph Corp <Ntt> データアクセス方法
JPH06282488A (ja) 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JP3381086B2 (ja) 1993-07-09 2003-02-24 日本電信電話株式会社 排他制御可能なマルチプロセッサシステム
US5805711A (en) * 1993-12-21 1998-09-08 Francotyp-Postalia Ag & Co. Method of improving the security of postage meter machines
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
JPH08180001A (ja) * 1994-04-12 1996-07-12 Mitsubishi Electric Corp 通信方式及び通信方法及びネットワークインタフェース
JPH07311712A (ja) 1994-05-19 1995-11-28 Toshiba Corp 障害復旧方法
JPH09259044A (ja) 1996-03-21 1997-10-03 Fuji Xerox Co Ltd 機密保護機能付き情報処理装置および機密保護方法
US6427162B1 (en) * 1996-05-02 2002-07-30 Sun Microsystems, Inc. Separate code and data contexts: an architectural approach to virtual text sharing
US6311290B1 (en) * 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
JP3376956B2 (ja) * 1999-05-14 2003-02-17 日本電気株式会社 プロセッサ間通信装置
US6816488B1 (en) * 1999-05-21 2004-11-09 Advanced Micro Devices, Inc. Apparatus and method for processing data frames in a network switch
US7270193B2 (en) * 2000-02-14 2007-09-18 Kabushiki Kaisha Toshiba Method and system for distributing programs using tamper resistant processor
US20010031050A1 (en) * 2000-02-14 2001-10-18 Lateca Computer Inc. N.V. Key generator
EP1182556B1 (en) * 2000-08-21 2009-08-19 Texas Instruments France Task based adaptive profiling and debugging
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116741B2 (en) 2010-02-18 2015-08-25 Kabushiki Kaisha Toshiba Computer program product, and information processing apparatus and method

Also Published As

Publication number Publication date
US20030065933A1 (en) 2003-04-03
DE60214640D1 (de) 2006-10-26
KR20030027803A (ko) 2003-04-07
JP2003108442A (ja) 2003-04-11
US7673155B2 (en) 2010-03-02
EP1298518A3 (en) 2004-04-21
DE60214640T2 (de) 2007-01-11
EP1298518B1 (en) 2006-09-13
KR100503906B1 (ko) 2005-07-27
US20090006864A1 (en) 2009-01-01
EP1298518A2 (en) 2003-04-02
CN1410876A (zh) 2003-04-16
US7424622B2 (en) 2008-09-09

Similar Documents

Publication Publication Date Title
JP4226816B2 (ja) マイクロプロセッサ
JP3866597B2 (ja) 内部メモリ型耐タンパプロセッサおよび秘密保護方法
JP4098478B2 (ja) マイクロプロセッサ
KR100924043B1 (ko) 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들
JP4226760B2 (ja) マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US6983374B2 (en) Tamper resistant microprocessor
US7590869B2 (en) On-chip multi-core type tamper resistant microprocessor
US7673152B2 (en) Microprocessor with program and data protection function under multi-task environment
US8135867B2 (en) Secure operation of processors
JP3880933B2 (ja) 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
US20160364343A1 (en) Systems and methods for data encryption
JP4643702B2 (ja) マイクロプロセッサ
JP3801833B2 (ja) マイクロプロセッサ
US20070198851A1 (en) Secure processor
JP2005521942A (ja) 領域粒状、ハードウェア制御メモリ暗号化を提供するシステムおよび方法
US11748493B2 (en) Secure asset management system
Whelihan et al. A key-centric processor architecture for secure computing
JP2004272816A (ja) マルチタスク実行システム及びマルチタスク実行方法
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치
JP4021810B2 (ja) プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081027

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081127

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131205

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees