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

マイクロプロセッサ

Info

Publication number
JP2003108442A
JP2003108442A JP2001304488A JP2001304488A JP2003108442A JP 2003108442 A JP2003108442 A JP 2003108442A JP 2001304488 A JP2001304488 A JP 2001304488A JP 2001304488 A JP2001304488 A JP 2001304488A JP 2003108442 A JP2003108442 A JP 2003108442A
Authority
JP
Japan
Prior art keywords
task
key
program
cache
address
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.)
Granted
Application number
JP2001304488A
Other languages
English (en)
Other versions
JP4226816B2 (ja
Inventor
Mikio Hashimoto
幹生 橋本
Kensaku Fujimoto
謙作 藤本
Kenji Shirakawa
健治 白川
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 KR10-2002-0058773A priority patent/KR100503906B1/ko
Priority to DE60214640T priority patent/DE60214640T2/de
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

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)

Abstract

(57)【要約】 【課題】 少ない秘密に基づいて、暗号化プログラムの
内容をOSからも効率的に保護することのできる耐タン
パプロセッサを提供する。 【解決手段】 マイクロプロセッサは、複数の状態を取
り得るタスクに識別子を付与し、タスクの状態をそのタ
スク識別子と対応して保持するタスク状態テーブルと、
現在実行中のタスク識別子を保持するタスクレジスタ
と、タスクの要求があったときに、外部メモリに所定の
プログラム鍵で暗号化された状態で格納されているプロ
グラムをキャッシュライン単位に読み込むインターフェ
イスと、プログラム鍵に基づいてキャッシュラインごと
に異なる復号鍵を生成し、読み込まれた内容を復号する
暗号処理部と、キャッシュラインごとにそのキャッシュ
ラインの復号に用いられた復号鍵に対応するタスク識別
子をタグに保持するキャッシュメモリと、キャッシュラ
インのタグに保持されたタスク識別子と、タスクレジス
タの値を比較し、値が一致しない場合にキャッシュライ
ンの内容を廃棄するアクセス検証部とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチタスクのプ
ログラム実行環境下で、実行コードや処理対象であるデ
ータの不正な改変を防止することのできる耐タンパマイ
クロプロセッサに関する。
【0002】
【従来の技術】PCなどの一般ユーザ向けコンピュータ
のハードウェア情報や、オペレーションシステム(以
下、「OS」とする)のシステムプログラム情報が、特
に秘密にされることなく開示されているオープンシステ
ムが広く普及している。オープンシステムでは、エンド
ユーザがシステムプログラムを変更して、所望の改良を
加えることができる。このような環境下で、アプリケー
ションプログラムが扱う情報の著作権や、プログラム自
体の著作権を保護するには、あらかじめシステムのOS
がアプリケーションに対して敵対的動作をとり得ること
を想定した秘密保護能力のあるハードウェアが必要であ
る。実際、このような秘密保護機能を有するハードウェ
ア、特にマイクロプロセッサが提案されている(特許出
願第2000−35398号,Lie et al., “Architec
tural Support for Copy and TamperResistant Softwar
e”;Computer Architecture News 28(5):p168- 等)。
【0003】秘密保護能力を有するマイクロプロセッサ
は、マルチタスク環境下で、プログラム自体やプログラ
ムが扱う情報が不正に覗き見され、改変されないよう
に、これらの情報を暗号化する機能を備えている。この
ようなマイクロプロセッサを、耐タンパプロセッサと呼
ぶ。
【0004】耐タンパプロセッサの主目的は、エンドユ
ーザのシステムで動作するアプリケーションを保護する
ことにより、プログラムやコンテンツ、ネットワークサ
ービスの権利者の権利を保護することである。具体的に
は、(1)プログラムに実装されたアルゴリズムの保
護、(2)プログラムに埋め込まれたトレードシークレ
ットや、コンテンツの保護、(3)プログラム動作の改
変からの保護、の3つが挙げられる。
【0005】プログラムに実装されたアルゴリズムの保
護は、プログラムの権利者を保護するために必要であ
る。プログラムに埋め込まれたトレードシークレットの
保護は、プログラムが扱うコンテンツの不正コピーを防
止するために必要である。不正な改変からの保護は、た
とえばサービスプロバイダの権利を保護するために必要
である。
【0006】ネットワークサービスを利用するプログラ
ムが、課金情報をサーバとやりとりするようなアプリケ
ーションでは、特に、課金情報の送信動作を正しく実行
し、不正な改変を防止することが重要である。実際の例
として、PCでDVDを再生するプログラムが解析さ
れ、そこからDVDの暗号を解読するためのトレードシ
ークレットが読みとられて不正にDVDをコピーするプ
ログラム(DeCSS)が作られたことはよく知られて
いる。
【0007】オープンシステムにおいて、単純にアプリ
ケーションプログラムの秘密を保護する機構は従来から
提案されているが、本件の出願人は、ひとつのシステム
上で複数のプログラム(複数の異なるプログラムベンダ
からのプログラムあるいは単一のベンダからの複数の異
なるプログラム)が擬似並列的に動かされる場合に、そ
の各々について、システムの資源を管理するOSからも
独立に秘密を保護する保護環境を提案してきた(特許出
願第2000−35398号、第2000−13501
0号、第2000−333635号、第2001−02
4480号など)。このような保護環境を、「マルチパ
ーティアプリケーション保護環境」と呼ぶ。
【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の資源を管理するOS
110によって行われる。プログラム本体と配布鍵は同
一のファイルに格納しても良いし、別々のファイルに格
納してもよい。メモリ108は、同じベンダ121によ
る別のプログラムや、その他のベンダからのプログラム
のための領域109−nも有するが,説明の便宜上、こ
れらについては省略する。
【0044】プロセッサAは、配布鍵125を読み込
み、秘密鍵Aを用いて、保護ロジック106で配布鍵を
復号する。復号した鍵で、メモリ108に配置された暗
号化プログラムを、ブロック単位でキャッシュメモリ1
04に読み込み、ブロックごとに復号化する。このと
き、プロセッサAの特徴として、限られた数の秘密、た
とえば2つの定数Kx、Cxから、複数の暗号ブロック
の各々に対応したブロック対応鍵を生成して、ブロック
単位で復号する能力を有する。
【0045】図2は、図1に示すマイクロプロセッサA
のハードウェア構成図である。プロセッサAは、プロセ
ッサパッケージ200の中に、コア902、命令キャッ
シュ903、データキャッシュ904、これらのキャッ
シュで共有される高速暗号鍵処理モジュール(FCM:
Fast Ciphering Module)911、鍵値テーブル(KV
T:key value table)912、配布鍵管理モジュール
913、バスインターフェイス(BIU)906を有す
る。これらは、内部バス905で互いに接続されてい
る。
【0046】コア902、高速暗号鍵処理モジュール9
11、鍵値テーブル912、配布鍵管理モジュール91
3で、図1の保護ロジックを構成する。
【0047】コア902は、レジスタアレイ915とタ
スクスイッチャー914を有する。タスクスイッチャー
914は、タスクの切り替え、すなわち割り込み発生時
のコンテキストの保存、復帰を実行する。コンテキスト
は、タスクの実行に対応して生成され、タスクと対応し
て管理される。これを実現するために、タスクスイッチ
ャー914は、内部にタスク状態テーブル921と、ハ
ッシュ計算部922を有する。タスク状態テーブル92
1は、後述するように、タスクIDと対応付けてタスク
状態を保持する。また、図示はしないが、コア902
は、レジスタアレイにあるコンテキストの変更通知や、
配布鍵設定命令などを発する。
【0048】命令キャッシュ903は、プログラムの実
行コードをキャッシュする。通常のアドレスを識別する
キャッシュタグに加え、保護タスクを識別するタグも付
けられ、マイクロプロセッサの内部データでアプリケー
ションの独立性を保証する。なお、図2には図示しない
が、後述するように,命令キャッシュは、プログラム
(実行コード)やデータの開始アドレス(オフセット)
を記述するオフセットテーブル1207(図9参照)を
内部に有する。
【0049】データキャッシュ904は、プログラムの
初期化データ、スタックデータ、ダイナミックデータな
ど、プログラムに関連する種々の情報をキャッシュす
る。
【0050】高速(対称)鍵暗号処理モジュール911
は、鍵生成モジュール1312と暗号処理モジュール1
313を有する。鍵生成モジュール1312は、内部バ
ス905を通じてブロックの鍵と、処理対象ブロックの
相対アドレス値を取得し、後述する方法でブロックごと
に対応する暗号鍵を生成する。暗号処理モジュール13
13は、生成されたブロックごとの暗号鍵により、対応
するブロックの暗号/復号処理を実行する。ブロックの
暗号処理には複数クロックを要するので、複数のモジュ
ールを並列処理するためのディスパッチャも含む。
【0051】鍵値テーブル(KVT)912は、キャッ
シュから送られてくるテーブルID情報に基づいてテー
ブルを検索し、鍵の値を高速暗号鍵処理モジュール91
1に供給する。
【0052】配布鍵管理モジュール913は、配布鍵の
公開鍵復号化および復号化結果のテーブルをセットアッ
プする。
【0053】マイクロプロセッサはまた、点線の矢印で
示すように、タスクチャンネル916を有し、コア90
2から他のモジュールへ、現在実行中のタスク、および
コンテキスト保存されるタスクの情報を伝達する。マイ
クロプロセッサのパッケージの外に外部メモリとしての
RAM907,周辺回路を接続するいわゆるサウスブリ
ッジ908があり、バスインターフェイス905で、内
部バス905と外部メモリ907やサウスブリッジ90
8との間のデータ転送、バッファリングを行なう。
【0054】図3は、プログラムをブロックごとに暗号
化する手順を説明する図である。この処理は、図1のソ
フトウェアベンダ121のブロック対応暗号処理部12
6によって行われる。
【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を計算する(S1
002−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〜S
1003−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から受け取ったアプリケ
ーションプログラムの実行コード、初期化データ(静的
データ)、作業領域(スタック)に、それぞれメモリ1
08の領域を割り当てる。この段階では、プログラムは
暗号化されたままの状態である。割り当てられるメモリ
領域の開始アドレスは、システムの状態、すなわち連係
して動作する他のプログラムモジュールや共有メモリの
配置によって変わってくるので、システムを管理するO
Sは、状況に応じて領域のアドレスを自由に決定する
(リロケーション)。OS110はまた、配置鍵を配置
するメモリ領域を決定し、配布鍵情報を読み込む。
【0066】OS110は、これらの領域のアドレス情
報を、メモリ上の情報配置記述子(IAD:informatio
n 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、作業領域(スタック)鍵11
27、作業領域秘密定数1128、作業領域長1129
を含む。
【0070】メモリ上に配置されたプログラムが、マイ
クロプロセッサ103に読み込まれて、復号、実行され
るときは、OS110は、情報配置記述子に基づいて、
タスク状態を制御する種々の特権命令(タスク制御命
令)を発行して、タスクの状態管理を行う。
【0071】図5は、タスク制御命令の例を示し、図6
は、タスクの状態遷移を示す。タスク制御命令は、内部
テーブルへのタスクの登録(register)、タスクの開始
(start)、中断されたタスク状態の保存(suspend)、
中断されたタスクの再開(continue)、タスクの終了、
すなわち内部テーブルからのタスク秘密情報の削除(de
lete)などを含む。そして、これらの制御命令に応じ
て、図6に示すようにNULL状態201からINIT
状態202になり、RUN状態203、STOPPED
状態204、SUSPEND状態205等を遷移する。
【0072】以下、タスクを実行するための動作につい
て、特に、タスクの登録、タスクの実行、タスクの中
断、タスクの終了を中心に、詳細に説明する。
【0073】<タスクの登録> 1.登録処理フロー まず、タスクを登録するために、OS110は、登録し
たいタスクのIDと、そのプログラムの情報配置記述子
の先頭アドレスをパラメータとして、特権命令であるre
gister命令を発行する。register命令の発行により、こ
のプログラムのための配布鍵1121が復号され、各メ
モリブロックの復号に使われる鍵と相対アドレス情報
が、タスクIDと関連付けて、マイクロプロセッサ内の
各種テーブル(後述)に登録される。
【0074】図7は、マイクロプロセッサ(ハードウェ
ア)103上でのタスク登録の概略動作を示し、図8
は、登録(register)命令の処理フローを示す。
【0075】情報配置記述子(IAD)1111のアド
レスとタスクID#1をパラメータとしてregister命令
が発行されると、コア902内のタスクスイッチャー9
14はタスクの状態をチェックする(S301)。タス
ク状態がNULLでなければ(S301でNO)、タス
ク状態をINVALIDとしてエラーにする(S30
8)。タスク状態がNULLならば(S301でYE
S)、図7の点線(1)で示すように、コア902は情
報配置記述子のアドレスとタスクIDを含む登録要求
を、配布鍵管理モジュール913のシーケンサ913−
1に書き込む。
【0076】シーケンサは、図7の点線(2)で示すよ
うに、情報配置記述子の領域に対するメモリ読み出し要
求をBIU906に送り、BIUは、点線(3)で示す
ように情報記述子1111をシーケンサに供給する。シ
ーケンサはこの情報記述子を解析して、プログラム、初
期化データ、作業領域に対応するオフセットアドレスや
範囲、配布鍵オフセットアドレス1117を取得する
(S302)。
【0077】次にシーケンサは、配布鍵アドレスに対す
る読み出し要求をBIUに送る。BIUは、点線(4)
で示すように、配布鍵の内容を公開鍵復号モジュール9
13−2に供給する。公開鍵復号モジュール913−2
は、配布鍵1121(図4)を復号化し、プログラムの
秘密定数(Cx)、初期化データの秘密定数、作業領域
秘密定数を取得する(S303)。
【0078】次に、図7の点線(5)で示すように、S
302で取得したプログラム、初期化データ、作業領域
のオフセットアドレスを、命令キャッシュ903のオフ
セットテーブル(図9参照)に書き込む(S304)。
【0079】同様に、S303で取得したプログラム、
初期化データ、作業領域の暗号鍵(秘密定数)を、鍵値
テーブル912に書き込む(S305)。こうして、テ
ーブルが設定され、タスクの登録が完了する。
【0080】タスクの登録が完了すると、タスク状態は
NULLからINITに移行し(S306)、この状態
の遷移は、割り込みによりコア902に通知され(S3
07)、OSは、タスクを実行するための準備が整った
ことを知る。
【0081】2.テーブルの設定 マイクロプロセッサ内の各種テーブルの設定を説明する
前に、図9〜11を参照して、マイクロプロセッサを構
成する命令キャッシュ903、高速暗号鍵処理モジュー
ル(FCM)911、鍵値テーブル(KVT)912、
データキャッシュ904の構成を説明する。
【0082】図9は命令キャッシュ903の詳細を示
す。命令キャッシュ903は、命令TLB(translatio
n lookaside buffer)1202を有する命令管理ユニッ
ト(MMU)1201と、命令キャッシュメモリ120
3と、カレントタスクIDレジスタ1204と、キャッ
シュアクセス検証部1205と、タスクID書き込み部
1206と、オフセットテーブル1207を含む。
【0083】キャッシュメモリ1203は、複数の所定
サイズのキャッシュラインで構成され、各キャッシュラ
インは、そのキャッシュライン(ブロック)で実行され
るタスクのタスクIDを保持するタグを有する。キャッ
シュアクセス検証部1205は、タグに保持されたタス
クIDと、カレントタスクIDレジスタの値とを比較
し、一致するときのみアクセスを許可する。一致しない
ときは、そのキャッシュラインの内容を廃棄する。
【0084】図10は、鍵値テーブル(KVT)912
と、高速暗号鍵処理モジュール(FCM)911の詳細
を示す。KVT912は、テーブルアクセス制御部13
01と、カレントタスクIDレジスタ1302と、タス
ク鍵(あるいはプログラム鍵)テーブル1303と、コ
ンテキスト鍵テーブル1304と、データ鍵テーブル1
305を含む。ここでは図示はしないが、データ鍵テー
ブル1305は、4つのテーブル(0〜3)を含む。K
VT912は、パス1315を介してバス905と接続
される。
【0085】高速暗号鍵処理モジュール(FCM)91
1は、ディスパッチャ1311と、鍵生成モジュール1
312と、暗号処理モジュール1313を含む。鍵生成
モジュール1312は、鍵生成単位として並列に131
2−1〜1312−3を有し、暗号処理モジュール13
13は暗号処理単位として1313−1〜1313−3
を有する。ディスパッチャ1311は、後述するよう
に、鍵生成単位や暗号処理単位の空きのある部分に処理
を割り振り、並列処理を可能にする。FCM911は、
パス1314を介してバス905に接続される。
【0086】KVT912からFCM911へ、パス1
316を介して暗号鍵が転送され、パス1317を介し
て相対アドレス値が転送される。
【0087】図11は、データキャッシュ904の詳細
を示す。データキャッシュ904は、カレントタスクI
Dレジスタ1401と、アドレス範囲を保持するMTR
R(memory type range register)テーブル1403
と、このテーブルを管理しMTRRテーブルのアドレス
範囲とターゲットアドレスを比較するMTRRテーブル
管理比較部1402と、暗号属性送出部1411と、デ
ータキャッシュメモリ1431と、データTLB143
3を有するMMU1442と、保存予定コンテキスト識
別子レジスタ1434を含む。暗号属性送出部1411
は、データやコンテキストを外部メモリへ書き戻すとき
に、その暗号属性を確認するために、読み込み要求デー
タ暗号識別子レジスタ1412と、読み込み要求コンテ
キスト暗号鍵識別子レジスタ1413と、書き出し要求
データ暗号鍵識別子レジスタ1414と、書き出し要求
コンテキスト暗号鍵識別子レジスタ1415と、アクセ
ス検証部1421を有する。MMU1442は、所定の
変換情報に基づいて、コア902から出力される仮想ア
ドレスから物理アドレスへと変換してメモリアクセスを
行う。
【0088】KVT912の6種類のテーブル、すなわ
ちプログラム鍵テーブル1303、コンテキスト鍵テー
ブル1304、データ鍵テーブル1305(0−3)
は、それぞれタスクIDでインデックスされ、鍵生成に
使う2種類の秘密情報を保持できる。ブロックの復号鍵
生成に使われる2つの秘密情報、例えば図4に示すプロ
グラムのためのKx1122とCx1123は、KVT
912のプログラム鍵テーブル1303のタスクID#
1の欄に書き込まれる。
【0089】一方、このプログラム領域のオフセット値
1112は、命令キャッシュ903内のオフセットテー
ブル1207のタスクID#1の欄に書き込まれる。
【0090】データキャッシュ904のMTRRテーブ
ル1403は、タスクIDと0〜3の値をとるMTRR
識別子で識別される。すなわち、MTRRテ−ブル14
03は、1タスク当たり4個のMTRR(アドレス範囲
レジスタ)を持ち、それぞれにデータ領域のアドレス範
囲と鍵の値を登録することができる。タスク登録時にお
いては、MTRR識別子0、1に対応する初期化データ
と、作業領域(スタック)に対応するMTRRが設定さ
れる。また、MTRR2,3の内容は0で初期化され
る。
【0091】あるタスクがメモリを参照する時、ターゲ
ットアドレスとMTRRのアドレス範囲とが比較され、
一致したMTRRに対応する暗号化属性(すなわち鍵)
が使用される。データについても、MTRRの先頭番地
をオフセットとして、相対アドレス値を使用して、上述
した手順の暗号鍵生成が適用される。
【0092】テーブルの内容に矛盾が発生するのを防ぐ
ため、これらのテーブルを書き換えている期間は、コア
902ではこのタスクに対するあらゆるオペレーション
が禁止される。
【0093】テーブルの書換えが完了すると、タスクス
イッチャー(STS)914のタスク状態テーブル92
1で、このタスクIDに対応するエントリが状態NUL
LからINITに書き換えられ、登録の完了が、割り込
みによってコア902に通知される。
【0094】なお、本実施例ではこれらの登録オペレー
ションをハードウェアで実装した例を示したが、ファー
ムウェアとしてプロセッサ内部に組み込まれたソフトウ
ェアとして実装してもよい。ただし、ファームウェアは
悪意を持つシステムユーザによって改変されることがな
いような注意が必要である。
【0095】<タスクの実行> 1.タスクの実行開始 タスクを実行するには、INIT状態にあるタスクに対
して、OSがタスクIDをパラメータとしてstart命令
を実行する。すると制御がプログラム領域の先頭に移さ
れる。INIT状態にあるタスク以外を指定してstart
命令を実行した場合、エラーとなり、なにも実行されな
い。
【0096】図12は、タスク実行開始命令の処理フロ
ーを示す。あるタスクについてそのタスクIDを指定し
てstart命令が発行されると、まず、そのタスク状態が
INITにあるかどうか、すなわち、タスク実行の準備
が整った状態にあるか否かを判断する(S401)。I
NIT以外の状態にあるタスク識別子を指定してstart
命令が出された場合は(S401でNO)、タスク状態
テーブル921がINVALIDにされ(S407)、
エラーとなる。
【0097】タスクがINIT状態にある場合は(S4
01でYES)、コア902が保持するカレントタスク
IDが、新しいタスクに設定され(S402)、レジス
タアレイ915が初期化される(S403)。また、プ
ログラムカウンタ(不図示)の値が、プログラム領域の
先頭に設定される(S404)。
【0098】続いて、新しいタスクIDが、タスクチャ
ンネル916を通じて、命令キャッシュ903、データ
キャッシュ904、鍵値テーブル912に通知され、そ
れぞれのカレントタスクIDレジスタ1204、140
1、1302に保持される(S405)。その後、コア
902のタスク状態テーブル921で、タスク状態がI
NITからRUNに書き換えられ(S406)、実行が
開始される。
【0099】本実施形態では、ブロックごとに暗号化さ
れ保護されたプログラムを実行するので、外部メモリの
プログラムがキャッシュに読み込まれる際に、タスクI
Dに対応して登録されたプログラム鍵に基づいて、ブロ
ックごとにプログラムの復号化が行われ、復号結果であ
る平文がキャッシュに読み込まれ、実行される。このと
き、タスク登録時に配置されたメモリアドレスに合わせ
て、オフセットを命令キャッシュ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、BIU
906の動作を一体として示している。まず、コア90
2から読み出し要求があると、命令キャッシュ903は
BIU906に対して、ターゲットアドレスブロックの
読み出し要求を送る。読み出し要求には、リクエストI
D、保護の有無、ターゲットアドレス範囲、要求元ID
の情報が含まれている。
【0104】ここで、ターゲットアドレスと、読み込ま
れたキャッシュラインに付されているアドレスタグとの
一致、不一致が判断される(S501)。物理アドレス
が一致しない場合は(S501でNO)、ミスヒットと
して、読み出し要求された新たなタスクIDに対応する
オフセットアドレスの取得を開始する。オフセットアド
レスは、オフセットテーブル1207の中の、カレント
タスクIDに対応するエントリから取得する(S50
2)。
【0105】次に、取得したオフセット値から相対アド
レスを計算する。相対アドレスは、メモリアドレスから
オフセット値を引き算することによって求められる(S
503)。なお、保護タスク実行中にキャッシュメモリ
へのアクセスがあると、命令キャッシュ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で暗号化して、プログラム
のブロックに対応するブロック対応鍵を生成する(S5
05)。
【0108】この鍵の計算は暗号化処理なので、複数サ
イクルの時間を要する。効率よく計算をするため、鍵生
成モジュール1312には複数の鍵生成単位1312−
1〜1312−3が設けられ、ディスパッチャ1311
が、空きの鍵生成単位に処理要求を割り振る。1つのリ
クエストが複数の暗号ブロックで構成される場合は、す
べての暗号ブロック対応の鍵を生成するまで相対アドレ
ス値を増分してS502〜505を繰り返す。
【0109】一方、BIU906は外部メモリから読み
出した結果を、暗号ブロックの大きさのデータになるま
でバッファリングする。もともと保護されていない非暗
号化データが要求されている場合は、データは直接要求
元の命令キャッシュへ送られるが、本実施形態では、暗
号化データに対する要求なので、読み出し結果はFCM
911へ送られる。FCM911の暗号処理モジュール
1313は、鍵生成モジュールによって生成されたブロ
ック暗号鍵で、BIU906から供給されたデータを復
号する(S506)。
【0110】復号には複数サイクルの時間がかかるの
で、前の復号処理が完了する前にキャッシュラインを構
成する次の暗号ブロックが到着した場合は、別の暗号処
理単位が割り当てられ、並列的に処理が行なわれる。図
10には、暗号処理単位として1313−1〜1313
−3だけが示されているが、十分な数の暗号処理単位を
準備すれば、暗号処理単位の処理サイクルよりも短い間
隔でデータが到着しても遅延を発生させることなく復号
化処理が可能となる。
【0111】復号を完了したブロックは、直ちに内部バ
ス経由で要求元の命令キャッシュ903に送られる。命
令キャッシュ903は、このキャッシュラインにデータ
を格納し、ラインを構成するすべてのデータがそろう
と、キャッシュタグにライン有効の表示、暗号化ありの
表示、実行中のタスクIDを書き込む(S507)。
【0112】キャッシュラインが有効になると、コア9
02はこのラインからデータを読み出し、プログラムの
実行を再開する(S508)。
【0113】次に、S501でターゲットアドレスとキ
ャッシュラインのアドレスタグ(物理アドレス部分)が
一致した場合、つまり、それまで実行されていたタスク
Aと異なるタスクIDを有するタスクBが、たまたま同
一のメモリ領域をアクセスしてキャッシュラインがヒッ
トした場合を考える。キャッシュの物理アドレスがヒッ
トしたということは、タスクBは、従来の資源管理的な
意味でこのアドレスのメモリのアクセス権があることに
なる。
【0114】この場合は、命令キャッシュ903のアク
セス検証部1205が、現在のタスクIDレジスタ12
04の値と、このキャッシュラインにつけられているタ
スク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】しかし、このようなパイプライン実装は、
ハードウェア規模においても、設計の困難さにおいても
大きなコストが必要である。また、一般に利用可能なI
Pの形で提供される暗号処理単位は、設計に高度のノウ
ハウと時間を必要とするので、必要な処理能力に見あっ
た番号処理単位をその都度設計することを大きな負担と
なる。多様な条件への対応を考えた時、本実施形態のよ
うに既存の暗号処理単位を複数並列動作させることが、
設計の柔軟性の点で有利である。また、ハードウェア設
計コストを含めた全体のコスト削減の効果がある。
【0122】3.データキャッシュでの実行処理 次に、データキャッシュの動作について説明する。初期
化データ、作業領域(スタック)などのデータの保護に
ついては、タスクが動的に確保したデータ領域を、任意
の暗号鍵によって暗号化保護することができる。初期化
データ、作業領域、動的領域など、複数の保護領域を定
義し、各々異なる鍵を設定することが可能である。たと
えば初期化データの場合、外部メモリにはすでに暗号化
済みのデータがおかれており、これを読み出し、復号す
る際の手順は基本的にはプログラムの場合と同じであ
る。
【0123】前述したプログラム(実行コード)の場合
は、暗号属性は、命令キャッシュ903でカレントタス
クIDとキャッシュタグのタスクIDを比較することに
よって判断されていたが、データの場合は、属性の判断
がカレントタスクIDとMTRR(アドレス範囲レジス
タ)との比較で行なわれるところが異なる。
【0124】データアクセスがあった場合、図11に示
すデータキャッシュ904のMTRRテーブル管理比較
部1402でアクセス属性が判定される。具体的には、
MTRRテーブル管理比較部1402にカレントタスク
IDとターゲットアドレスが入力されると、タスクID
に対応するMTRRテーブル1403のエントリ(0〜
3)のアドレス範囲とターゲットアドレスがそれぞれ比
較される。
【0125】MTRRエントリに合致するものがひとつ
だけであれば、その属性が無条件に採用され、タスクI
DとMTRRエントリIDの組が当該メモリアクセスの
暗号属性となる。
【0126】MTRRエントリが重複したアドレス範囲
を持ち、ターゲットアドレスが複数のエントリのアドレ
ス範囲に合致した場合、あらかじめMTRRごとに定め
られた優先順位にしたがってただひとつのMTRRが選
ばれ、このメモリアクセスの暗号属性となる。
【0127】こうしてMTRRテーブル管理比較部14
02で決定されたメモリアクセス属性は、データ読み込
みの場合、暗号属性送出部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箇所のデー
タ領域を追加することができる。これらの領域は、MT
RR(アドレス範囲レジスタ)のID2、3で指定され
る。
【0140】データ領域の追加は、setkeyと呼ぶ特別な
命令をタスクが発行することで行なわれる。プロセッサ
の所定のレジスタにデータの暗号鍵、補助定数とメモリ
領域およびMTRR IDを格納してsetkey命令を発行
する。Setkey命令は自タスクIDのデータ暗号化属性の
みに有効なので、命令で明示的にタスクIDを指定する
必要はない。
【0141】Setkey命令は、プロセッサコア902の内
部で、データキャッシュ904のMTRRテーブル14
03へのアクセスと、鍵値テーブル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命令で指定されたアドレ
スのメモリ領域に書き込まれ、保存が開始される(S6
92)。
【0159】保存はキャッシュへの保存が基本であり、
保存開始前にタスクチャネル916を通じてそれまで実
行していたタスクのIDが、データキャッシュの保存予
定コンテキスト識別子レジスタ1434に保持される。
そして、データキャッシュメモリ1431上でコンテキ
スト情報を書き込むためのキャッシュラインが確保さ
れ、データの転送が開始される。ラインの書き込み完了
ごとに、キャッシュラインのタグにコンテキストを表す
識別子とタスクIDが書き込まれる。
【0160】コンテキスト情報の保存は元のメモリの内
容を完全に上書きするものである。コンテキスト情報は
キャッシュラインサイズの整数倍で、その先頭アドレス
がかならずキャッシュラインサイズでアラインされてお
り、通常必要とされる書き込み前に保存先内容を読み出
す動作(ライトアロケート)は不要となる。
【0161】そして、コア902のハッシュ計算部92
2で、レジスタバッファの内容全体のハッシュが計算さ
れ、タスクIDとともに、メモリ上のレジスタ情報の最
後にハッシュ値が付加される(S603)。多数ライン
にわたる場合は、コア902のタスクスイッチャ(ST
S)914は、レジスタバッファアレイ915の情報を
順次キャッシュラインに書き込みながらハッシュを計算
する。
【0162】コンテキスト領域の最後にタスクIDとハ
ッシュ値を書き込み、タグの付加が終わるとsuspend命
令の実行は完了となり、タスクの状態はSUSPEND
に移行する(S604)。
【0163】保存されたコンテキスト情報は、データと
同様に、タスクの実行とは非同期的に外部メモリ108
へと書き出される。外部メモリへの書き出し時のコンテ
キスト情報の取り扱いで、他の情報と異なる点が2点あ
る。ひとつは相対アドレス値の扱いであり、もうひとつ
は読み込み処理の違いである。
【0164】コンテキスト情報は複数のブロックで構成
されるが、相対アドレス値として同一の値が使われる。
相対アドレス値には、あらかじめ定められた定数が用い
られる。コンテキスト情報にはハッシュが付加されてい
るため、ブロックの交換に元々耐性があるためである。
コンテキスト情報が保存されたキャッシュラインがフラ
ッシュされる時、取り出された暗号属性は書き出しコン
テキストキーID1415に一時的に保持される。その
後の処理は、データキャッシュの書き出しと同様であ
る。
【0165】図16は、保存されたコンテキスト情報か
らタスクを再開する処理フローである。
【0166】まず、保存されたコンテキスト情報を読み
込んでタスクの実行を再開するために、タスクIDと保
存先メモリアドレスをパラメータとしたresume命令が発
行されると、指定されたタスク状態がSUSPENDで
あるかどうか判断される(S701)。SUSPEND
状態にない場合は(S701でNO)、コンテキスト情
報が保存されていないので、タスク状態はINVALI
Dにされる(S707)。換言すれば、resume命令はタ
スク状態がSUSPENDED以外の場合は、無効であ
る。
【0167】SUSPEND状態にある場合は(S70
1でYES)、アドレスとタスクIDが、それぞれアド
レスラインとタスクチャンネルを通して、データキャッ
シュ904に送られる。キャッシュのアドレスがヒット
して、かつタグがコンテキストを示しており、タスクI
Dが一致する場合、キャッシュメモリ1431上のデー
タが、レジスタバッファに転送され、タスクの再開処理
が開始される(S702)。
【0168】レジスタバッファへのデータ転送と並行し
てハッシュ計算が行なわれる(S703)。計算したハ
ッシュが期待値と一致するかどうか判断され(S70
4)、不一致の場合、再開処理は中止され、タスクはI
NVALID状態となる(S707)。
【0169】ハッシュが一致した場合は(S704でY
ES)、カレントタスクレジスタに指定されたタスクの
IDを設定し(S705)、タスクの状態をRUNに変
更して実行が再開される(S706)。
【0170】図16のフローには記載されていないが、
resume命令で指定されたコンテキスト情報の領域がキャ
ッシュにヒットしない場合は、保存されたデータが外部
メモリに書き出されている場合である。この場合は、外
部メモリからのデータ読み込みが開始される。すなわ
ち、タスクIDレジスタ1401に保持されたタスクI
Dと、resume命令で指定されたアドレスに対応するメモ
リの読み出し要求がデータキャッシュ904からBIU
906に送られる。そして、タスクIDとコンテキスト
を意味する暗号属性が鍵値テーブル912へ送られ、F
CM911で復号のための鍵が生成される。ある時点で
保存されたタスクのコンテキスト情報は、すべて同じ鍵
で暗号化されているので、ブロック単位の鍵生成は行な
わない。
【0171】復号が完了したブロックは、順次データキ
ャッシュ904へと送られ、タスクスイッチャ(ST
S)914はレジスタバッファアレイ915にその内容
を読み込む。以後の処理はキャッシュがヒットした場合
と同じである。
【0172】<タスクの終了>タスクを終了して、割り
当てたタスクIDとプロセッサ内の各種テーブルを別の
新しいタスクのために再利用するには、タスクIDを指
定してdelete命令を発行する。本実施形態では、それま
でのタスクの内容が不正に覗き見されないように、シス
テム動作中は、一度登録したタスクのタスクIDは、そ
の登録を削除しない限り、新しいタスクのために使用す
ることはできない。
【0173】図17は、タスク削除の処理フローを示
す。
【0174】まず、タスクに対してdelete命令が発行さ
れると、指定されたタスクがINIT、STOPPE
D、SUSPENDのいずれかの状態にあるかが判断さ
れる(S801)。上記のいずれの状態にもない場合
(すなわちRUN,NULLである場合)には、タスク
はINVALIDにされ(S805)、エラーとなる。
【0175】上記のいずれかの状態にある場合は(S8
01でYES)、指定されたタスクIDに対応するタグ
が付与されたキャッシュラインがフラッシュされ(S8
02)。
【0176】これにより、対応する鍵テーブル1303
〜1305、命令キャッシュのオフセットテーブル12
07、データキャッシュの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 暗号属性送出部
フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) H04L 9/08 G06F 9/06 660L (72)発明者 白川 健治 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 Fターム(参考) 5B005 JJ00 KK12 LL04 MM02 MM03 NN42 UU12 5B017 AA03 BA07 BB00 CA15 5B076 FA01 FA13 FA16 5J104 NA02 NA37 NA42 PA14

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 複数の状態を取り得るタスクに識別子を
    付与し、前記タスク識別子と対応して前記タスクの状態
    を保持するタスク状態テーブルと、 現在実行中のタスク識別子を保持するタスクレジスタ
    と、 前記タスクの要求があったときに、外部メモリに所定の
    プログラム鍵で暗号化された状態で格納されているプロ
    グラムをキャッシュライン単位に読み込むインターフェ
    イスと、 前記プログラム鍵に基づいて、前記キャッシュラインご
    とに異なる復号鍵を生成し、読み込まれた内容を復号す
    る暗号処理部と、 各々がタグを有する複数のキャッシュラインから構成さ
    れ、キャッシュラインごとに、そのキャッシュラインの
    復号に用いられた復号鍵に対応するタスク識別子を前記
    タグに保持する第1のキャッシュメモリと、 前記キャッシュラインのタグに保持されたタスク識別子
    と、前記タスクレジスタの値を比較し、値が一致しない
    場合に前記キャッシュラインの内容を廃棄するアクセス
    検証部とを備えるマイクロプロセッサ。
  2. 【請求項2】 前記プログラム鍵を前記タスク識別子と
    関連付けて格納する鍵値テーブルをさらに有し、 前記アクセス検証部の比較結果が一致したときに、前記
    暗号処理部は、前記タスク識別子に対応して格納されて
    いるプログラム鍵で、前記読み込まれた内容を復号する
    ことを特徴とする請求項1に記載のマイクロプロセッ
    サ。
  3. 【請求項3】 前記タスクに対応するプログラムが配置
    された先頭アドレスを、オフセット値として保持するオ
    フセットテーブルをさらに備え、 前記暗号処理部は、前記オフセット値と前記プログラム
    鍵とに基づき、前記復号鍵を生成し、前記キャッシュラ
    イン単位で読み込まれた内容を復号することを特徴とす
    る請求項1に記載のマイクロプロセッサ。
  4. 【請求項4】 前記タスクは、少なくともNULL、R
    UNの2種類の状態をとり、 前記鍵値テーブルは、前記タスク状態がNULLからR
    UNに移行するときに、前記プログラム鍵と、このプロ
    グラム鍵に基づいて生成された前記復号鍵とを格納する
    ことを特徴とする請求項2に記載のマイクロプロセッ
    サ。
  5. 【請求項5】 前記タスクは、少なくともNULL,R
    UN,SUSPENDの3種類の状態を取り、 前記実行中のタスクが中断されたときに、中断されたタ
    スクの実行状態を一時的に保存する第2のキャッシュメ
    モリをさらに備えることを特徴とする請求項1に記載の
    マイクロプロセッサ。
  6. 【請求項6】 現在処理中のタスクの識別子をタスクI
    Dレジスタに格納するステップと、 タスクの要求があったときに、タスクを実行するため
    に、外部メモリにブロックごとに暗号化された状態で格
    納されているプログラムをキャッシュライン単位に読み
    込むステップと、 前記キャッシュラインの所定領域に、前記要求のあった
    タスクの識別子を格納するステップと、 前記キャッシュラインに格納されたタスクの識別子と、
    前記タスクIDレジスタに格納されたタスク識別子とを
    比較するステップと、 前記比較結果が一致するときに、前記読み込んだ内容を
    復号化するステップとを含む暗号処理方法。
  7. 【請求項7】 前記比較結果が不一致の場合に、前記キ
    ャッシュラインの内容を廃棄するステップをさらに含む
    ことを特徴とする請求項6に記載の暗号処理方法。
  8. 【請求項8】 それぞれ固有のプログラム鍵に基づいて
    暗号化された複数のプログラムが格納されている外部メ
    モリのアドレスを指定して、読み出し要求を発行するプ
    ロセッサコアと、 前記プロセッサコアの読み出し要求に応じて、前記外部
    メモリの指定されたアドレスのデータブロックを読み出
    すインターフェイスと、 前記プログラムの実行制御単位であるタスクごとに与え
    られるタスク識別子に対応して、前記プログラム鍵を保
    持するタスク鍵テーブルと、 前記タスク識別子ごとに、前記プログラムが配置された
    先頭アドレスをオフセット値として保持するオフセット
    テーブルと、 前記読み出し要求により指定されたアドレスと、前記オ
    フセットテーブルのタスク識別子で指定されるオフセッ
    ト値とから相対アドレス値を計算し、この相対アドレス
    値を、前記プログラム鍵で暗号化したブロック対応鍵を
    生成する鍵生成部と、 前記読み出されたデータブロックを、前記ブロック対応
    鍵により復号化する暗号処理部と、 前記復号化されたデータブロックをキャッシュライン単
    位に読み込むキャッシュメモリと、 を備えるマイクロプロセッサ。
  9. 【請求項9】 前記プロセッサコアが指定する外部メモ
    リのアドレスは、仮想アドレスであり、 前記マイクロプロセッサは、所定の変換情報に基づいて
    仮想アドレスから物理アドレスへ変換して外部メモリに
    アクセスするアドレス変換機能をさらに有し、 前記鍵生成部は、前記仮想アドレスから相対アドレス値
    を計算することを特徴とする請求項8に記載のマイクロ
    プロセッサ。
  10. 【請求項10】 現在実行中のタスクの識別子を保持す
    るタスクレジスタをさらに有し、 前記鍵生成部は、前記相対アドレス値に所定の秘密定数
    を加算し、前記加算結果を、前記タスクレジスタに保持
    されたタスク識別子で指定されるプログラム鍵によって
    暗号化して、前記ブロック対応鍵を生成することを特徴
    とする請求項8に記載のマイクロプロセッサ。
  11. 【請求項11】 外部メモリに暗号化されて保持された
    プログラムを、アドレス指定することによって、キャッ
    シュライン単位に読み込むステップと、 前記プログラムの開始アドレスをオフセット値として取
    り込むステップと、 前記指定したアドレスと、前記オフセット値とから相対
    アドレスを求め、前記相対アドレスを所定の暗号鍵で暗
    号化することによって、暗号鍵を生成するステップと、 前記生成した暗号鍵で、前記読み込んだ内容を復号化す
    るステップとを含む暗号処理方法。
  12. 【請求項12】 現在実行されているタスクの識別子を
    保持するタスクレジスタと、 複数のキャッシュラインから構成され、タスクの要求が
    あったときに、外部メモリに暗号化された状態で格納さ
    れているデータを、前記キャッシュライン単位に前記タ
    スクの識別子と対応付けて、平文状態で読み込み可能な
    キャッシュメモリと、 前記暗号状態のデータを、キャッシュラインごとに異な
    るブロック対応暗号鍵で前記平文に復号する暗号処理部
    と、 前記暗号状態のデータのアドレス範囲を、前記タスクの
    識別子と対応付けて保持するアドレス範囲レジスタとを
    備え、前記タスクの実行中に、第2のタスクの要求があ
    った場合に、前記暗号処理部は、前記タスクレジスタに
    保持されているタスクの識別子に対応するキャッシュラ
    インの内容を、前記ブロック対応暗号鍵で暗号化し、 前記キャッシュメモリは、前記暗号化されたデータを外
    部メモリに書き戻し可能であることを特徴とするマイク
    ロプロセッサ。
  13. 【請求項13】 前記アドレス範囲レジスタに保持され
    たアドレス範囲と、前記タスクの要求先のアドレスとか
    ら相対アドレスを計算し、この相対アドレスを所定の鍵
    で暗号化することにより前記ブロック対応暗号鍵を生成
    する暗号鍵生成部をさらに備えることを特徴とする請求
    項12に記載のマイクロプロセッサ。
  14. 【請求項14】 外部メモリに暗号化された状態で格納
    されているプログラムの実行コードおよびデータをキャ
    ッシュラインごとに取り込むインターフェイスと、 前記プログラムの開始アドレスであるオフセット値を保
    持するオフセットテーブルを有し、前記実行コードを平
    文状態でキャッシュラインごとに保持する第1のキャッ
    シュと、 前記データのアドレス範囲を保持するアドレス範囲レジ
    スタを有し、前記データを平文状態でキャッシュライン
    ごとに保持する第2のキャッシュと、 前記第1および第2のキャッシュに共通バスを介して接
    続され、前記プログラムの暗号化に用いた暗号鍵を保持
    する鍵値テーブルと、 前記第1および第2のキャッシュバスおよび前記鍵値テ
    ーブルに、前記共通バスを介して接続され、前記鍵値テ
    ーブルと前記第1のキャッシュから前記暗号鍵と前記オ
    フセット値をそれぞれ受け取り、当該暗号鍵とオフセッ
    ト値に基づいて前記実行コードを復号化して前記第1の
    キャッシュに供給し、前記鍵値テーブルと前記第2のキ
    ャッシュから前記暗号鍵と前記アドレス範囲をそれぞれ
    受け取って、前記暗号鍵とアドレス範囲に基づき前記デ
    ータを復号化して、前記第2のキャッシュに供給する暗
    号処理部とを備えるマイクロプロセッサ。
  15. 【請求項15】 前記暗号処理部は、 複数の並列鍵生成ユニットから構成され、前記鍵値テー
    ブルの暗号鍵と、前記第1および第2のキャッシュから
    のオフセット値およびアドレス範囲に基づいて、前記キ
    ャッシュラインごとに復号するブロック暗号鍵を生成す
    る鍵生成モジュールと、 複数の並列暗号処理ユニットから構成され、前記生成さ
    れたブロック暗号鍵に基づいて前記キャッシュラインご
    とに復号化する暗号処理モジュールと、 前記鍵生成ユニットおよび暗号処理ユニットの空きユニ
    ットに順次処理を割り振るディスパッチャとを備えるこ
    とを特徴とする請求項14に記載のマイクロプロセッ
    サ。
  16. 【請求項16】 タスクの要求に応じて、外部メモリに
    暗号化された状態で格納されているプログラムを、キャ
    ッシュラインごとに平文状態で保持するキャッシュメモ
    リと、 前記平文状態のプログラムを実行する命令実行部と、 前記タスクの実行中に割り込みが発生した場合に,前記
    プログラムの実行状態を一時的に退避させる退避レジス
    タと、 実行状態保存要求があったときに、前記退避レジスタの
    内容にハッシュを付加して前記キャッシュメモリの所定
    のラインに書き込むハッシュ計算部と、 前記キャッシュラインに書き込まれた実行状態を前記キ
    ャッシュライン単位で所定の暗号鍵により暗号化して、
    外部メモリに書き戻す暗号処理部とを備えるマイクロプ
    ロセッサ。
  17. 【請求項17】 前記キャッシュメモリのキャッシュラ
    インは、当該キャッシュラインが実行状態を格納中であ
    ることを示すフラグを有することを特徴とする請求項1
    6に記載のマイクロプロセッサ。
  18. 【請求項18】 前記暗号処理部は、実行状態復帰要求
    があったときに、前記暗号化された実行状態を前記キャ
    ッシュメモリに読み込み、前記暗号鍵でキャッシュライ
    ンごとに復号して前記退避レジスタに供給し、前記ハッ
    シュ計算部は前記ハッシュを検証して、検証に成功した
    場合にのみ、前記実行状態の復帰を許可することを特徴
    とする請求項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 マイクロプロセッサ
KR10-2002-0058773A KR100503906B1 (ko) 2001-09-28 2002-09-27 마이크로프로세서
DE60214640T DE60214640T2 (de) 2001-09-28 2002-09-27 Mikroprozessor mit verbesserten Taskverwaltungs- und Tabellenverwaltungsvorrichtungen
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 true JP2003108442A (ja) 2003-04-11
JP4226816B2 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 (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005078459A (ja) * 2003-09-01 2005-03-24 Toshiba Corp マイクロプロセッサ
JP2005196257A (ja) * 2003-12-26 2005-07-21 Toshiba Corp マイクロプロセッサ
JP2006018684A (ja) * 2004-07-02 2006-01-19 Ntt Docomo Inc タスク管理システム
JP2006018685A (ja) * 2004-07-02 2006-01-19 Ntt Docomo Inc マルチタスク実行システム
JP2006042289A (ja) * 2004-06-24 2006-02-09 Toshiba Corp マイクロプロセッサ
JP2006227777A (ja) * 2005-02-16 2006-08-31 Renesas Technology Corp データ処理装置
JP2006260224A (ja) * 2005-03-17 2006-09-28 Fujitsu Ltd データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
JP2006526173A (ja) * 2003-06-25 2006-11-16 インテル・コーポレーション 解読待ち時間が削減されたメモリ暗号化のための装置及び方法
JP2007515709A (ja) * 2003-11-26 2007-06-14 インテル コーポレイション 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス
US7590869B2 (en) 2003-09-24 2009-09-15 Kabushiki Kaisha Toshiba On-chip multi-core type tamper resistant microprocessor
JP2010517424A (ja) * 2007-01-26 2010-05-20 マイクロソフト コーポレーション Usbトークン上の暗号化キーコンテナ
JP2011181107A (ja) * 2011-06-09 2011-09-15 Fujitsu Semiconductor Ltd セキュアプロセッサ用プログラム
JP2012090286A (ja) * 2004-12-21 2012-05-10 Sandisk Corp イン−ストリームデータ暗号化/復号の機能を有するメモリシステム

Families Citing this family (79)

* 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 株式会社東芝 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
US7529367B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7392400B2 (en) 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7321910B2 (en) 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7900055B2 (en) 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7536560B2 (en) 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7539876B2 (en) 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
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
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher 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
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US6996698B2 (en) * 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
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
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
JP2006023957A (ja) * 2004-07-07 2006-01-26 Sony Corp 半導体集積回路及び情報処理装置
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
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
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
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 富士通株式会社 コンテンツ処理装置、コンテンツ処理システム、およびコンテンツ処理プログラム
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
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
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US8578175B2 (en) * 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
ES2390796T3 (es) * 2009-07-27 2012-11-16 Nagravision S.A. Método de implementación de un procesador para garantizar la integridad de un software
JP2011071760A (ja) * 2009-09-25 2011-04-07 Canon Inc 情報処理装置、情報処理装置のジョブ処理方法、及びプログラム
WO2011101972A1 (ja) 2010-02-18 2011-08-25 株式会社東芝 プログラム
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 富士通株式会社 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
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 美光科技公司 选择性高速缓存行存储器加密
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
JP3381080B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 処理の中断が可能な排他制御方式
JP3381079B2 (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
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
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 (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006526173A (ja) * 2003-06-25 2006-11-16 インテル・コーポレーション 解読待ち時間が削減されたメモリ暗号化のための装置及び方法
JP2005078459A (ja) * 2003-09-01 2005-03-24 Toshiba Corp マイクロプロセッサ
US7590869B2 (en) 2003-09-24 2009-09-15 Kabushiki Kaisha Toshiba On-chip multi-core type tamper resistant microprocessor
US9348767B2 (en) 2003-11-26 2016-05-24 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US9087000B2 (en) 2003-11-26 2015-07-21 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
JP2011076632A (ja) * 2003-11-26 2011-04-14 Intel Corp 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス
JP2007515709A (ja) * 2003-11-26 2007-06-14 インテル コーポレイション 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス
JP2005196257A (ja) * 2003-12-26 2005-07-21 Toshiba Corp マイクロプロセッサ
US7603566B2 (en) 2003-12-26 2009-10-13 Kabushiki Kaisha Toshiba Authenticated process switching on a microprocessor
US8191155B2 (en) 2004-06-24 2012-05-29 Kabushiki Kaisha Toshiba Microprocessor
JP2006042289A (ja) * 2004-06-24 2006-02-09 Toshiba Corp マイクロプロセッサ
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4668556B2 (ja) * 2004-07-02 2011-04-13 株式会社エヌ・ティ・ティ・ドコモ タスク管理システム
JP4490192B2 (ja) * 2004-07-02 2010-06-23 株式会社エヌ・ティ・ティ・ドコモ マルチタスク実行システム
US7577851B2 (en) 2004-07-02 2009-08-18 Ntt Docomo, Inc. Multitask execution apparatus and multitask execution method
JP2006018685A (ja) * 2004-07-02 2006-01-19 Ntt Docomo Inc マルチタスク実行システム
JP2006018684A (ja) * 2004-07-02 2006-01-19 Ntt Docomo Inc タスク管理システム
JP2012090286A (ja) * 2004-12-21 2012-05-10 Sandisk Corp イン−ストリームデータ暗号化/復号の機能を有するメモリシステム
JP2006227777A (ja) * 2005-02-16 2006-08-31 Renesas Technology Corp データ処理装置
JP4737592B2 (ja) * 2005-02-16 2011-08-03 ルネサスエレクトロニクス株式会社 データ処理装置
JP2006260224A (ja) * 2005-03-17 2006-09-28 Fujitsu Ltd データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
JP4721737B2 (ja) * 2005-03-17 2011-07-13 富士通株式会社 データのバックアップ方法、バックアップ処理システム、およびコンピュータプログラム
US8588421B2 (en) 2007-01-26 2013-11-19 Microsoft Corporation Cryptographic key containers on a USB token
JP2010517424A (ja) * 2007-01-26 2010-05-20 マイクロソフト コーポレーション Usbトークン上の暗号化キーコンテナ
JP2011181107A (ja) * 2011-06-09 2011-09-15 Fujitsu Semiconductor Ltd セキュアプロセッサ用プログラム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4226816B2 (ja) マイクロプロセッサ
US7590869B2 (en) On-chip multi-core type tamper resistant microprocessor
JP3866597B2 (ja) 内部メモリ型耐タンパプロセッサおよび秘密保護方法
US7136488B2 (en) Microprocessor using asynchronous public key decryption processing
US8190917B2 (en) System and method for securely saving and restoring a context of a secure program loader
KR100924043B1 (ko) 보안 데이터 프로세싱 및 전송을 위한 방법들 및 장치들
US7673152B2 (en) Microprocessor with program and data protection function under multi-task environment
JP4226760B2 (ja) マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US6983374B2 (en) Tamper resistant microprocessor
US7681044B2 (en) Secure processor and system
EP2062191B1 (en) System and method for securely restoring a program context from a shared memory
US8135867B2 (en) Secure operation of processors
US8095802B2 (en) System and method for securely saving a program context to a shared memory
JP4643702B2 (ja) マイクロプロセッサ
US11748493B2 (en) Secure asset management system
US20050144438A1 (en) Microprocessor
JP4021810B2 (ja) プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치

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