JP2001318787A - マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 - Google Patents

マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法

Info

Publication number
JP2001318787A
JP2001318787A JP2000135010A JP2000135010A JP2001318787A JP 2001318787 A JP2001318787 A JP 2001318787A JP 2000135010 A JP2000135010 A JP 2000135010A JP 2000135010 A JP2000135010 A JP 2000135010A JP 2001318787 A JP2001318787 A JP 2001318787A
Authority
JP
Japan
Prior art keywords
program
microprocessor
key
execution
encryption
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
JP2000135010A
Other languages
English (en)
Other versions
JP4226760B2 (ja
Inventor
Mikio Hashimoto
幹生 橋本
Kensaku Fujimoto
謙作 藤本
Kenji Shirakawa
健治 白川
Keiichi Teramoto
圭一 寺本
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 JP2000135010A priority Critical patent/JP4226760B2/ja
Priority to US09/781,284 priority patent/US7270193B2/en
Priority to US09/781,158 priority patent/US6983374B2/en
Priority to EP01301241A priority patent/EP1126356B1/en
Priority to CNB011045124A priority patent/CN1220121C/zh
Priority to KR10-2001-0007300A priority patent/KR100375158B1/ko
Priority to DE60135695T priority patent/DE60135695D1/de
Priority to CNB011030003A priority patent/CN1189819C/zh
Priority to EP01301240A priority patent/EP1126355A1/en
Priority to KR1020010007301A priority patent/KR100362219B1/ko
Publication of JP2001318787A publication Critical patent/JP2001318787A/ja
Priority to US11/071,327 priority patent/US7353404B2/en
Application granted granted Critical
Publication of JP4226760B2 publication Critical patent/JP4226760B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)
  • Microcomputers (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 マルチタスク環境下で、暗号化されたプログ
ラムと、そのプログラムが扱うデータの双方を不正な解
析から確実に保護することのできるマイクロプロセッ
サ。 【解決手段】 あるプログラムの実行を中断する場合
に、コンテキスト情報暗号化/複号化ユニット254
は、中断されるプログラムのそれまでの実行状態を示す
情報と、このプログラムのコード暗号化鍵とを、マイク
ロプロセッサ101に固有のの公開鍵で暗号化し、コン
テキスト情報としてメインメモリ281に書き込む。プ
ログラムを再開する場合は、コード暗号化鍵・署名検証
ユニット257は、暗号化されたコンテキスト情報を、
マイクロプロセッサの秘密鍵で複号化し、複号化された
コンテキスト情報のコード暗号化鍵が、中断されたプロ
グラム本来のコード暗号化鍵と一致するかどうかを検証
し、一致した場合にのみ、プログラムの実行を再開す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチタスクのプ
ログラム実行環境下で、実行コードや処理対象であるデ
ータの不正な改変を防止することのできるマイクロプロ
セッサ、これを用いたマルチタスク実行方法、およびマ
ルチレッド実行方法に関する。
【0002】
【従来の技術】近年マイクロプロセッサの性能向上は著
しく、従来の用途である計算やグラフィックに留まらず
動画像、音声の再生や編集加工が可能となっている。こ
れによりマイクロプロセッサを応用したエンドユーザ向
けシステム(以下PCと呼ぶ)でユーザはさまざまな動
画像や音声を楽しめるようになった。PCを動画像、音
声の再生装置として使うことは、PCが持っている計算
能力と組み合わせてゲームなどの応用ができることは当
然として、固定的なハードウェアを必要としないため、
すでにPCを持っているユーザにとっては安価に動画
像、音声の再生が楽しめるという利点もある。
【0003】しかしながらPCで画像/音声を扱う場合
に問題となるのがその画像/音声の著作権の保護であ
る。MDやデジタルビデオデッキでは、不正なコピーを
防ぐための機構がそれら装置に組み込まれることによっ
て無制限なコピーが防止されていた。そこでは、装置を
改造して不正コピーを行うことは極めて稀であり、また
仮に改造された装置があったとしてもそれが広く流通す
ることは充分防止できるという仮定がなされていた。実
際、世界的に見て不正コピーを目的とする装置の製造、
販売は法律によって禁止される方向にあり、不正コピー
による被害は著作権者の収益を大きく脅かすほどの問題
とはなっていない。
【0004】ところが、PC上で画像、音楽の再生を行
うときにデータを扱うのではソフトウェアである。PC
ではエンドユーザがソフトウェアの改変を自由に行うこ
とができてしまう。ソフトウェアの場合、ある程度の知
識があればプログラムを解析することにより、それらソ
フトウェアを改造して不正コピーをすることが可能であ
ることは充分想像できる。さらに問題なのはそうして作
られて不正コピーのソフトウェアはハードウェアと比べ
て、ネットワークなどの媒体を通じて広まりやすいこと
がある。
【0005】この問題を解決するために、著作権が問題
となる商業映画や音楽の再生に使われるPCソフトウェ
アは、ソフトウェアを暗号化するなどの手法により、解
読、改竄されることを防止する技術が使われている。こ
の技術は耐タンパソフトウェア技術と呼ばれている(Da
vid Aucsmith et.al;“Tamper Resistant Software:An
Implementation”,Proceeding of the 1996 Intel So
ftware Developer's Conference)。
【0006】また、動画像、音声に限らずPCを通じて
ユーザに提供される著作物あるいはノウハウとして価値
のある情報を不正にコピーされたり、PCソフトウェア
自体に含まれるノウハウなどを解析から守るのにも耐タ
ンパソフトウェア技術は有効である。
【0007】しかし、耐タンパソフトウェア技術は、プ
ログラムのうち保護を要する部分を実行開始時には暗号
化しておき、その部分を実行する前に復号化し、実行終
了後に再び暗号化することにより、逆アセンブラ、デバ
ッガなどの解析ツールによる解析を困難にするという技
術である。したがって、プログラムがプロセッサによっ
て実行可能である以上、プログラムの開始時から順を追
って解析していけば必ず解析することが可能になる。
【0008】これは、著作権者がPCを利用した動画
像、音声を再生するシステムに著作物を提供する際の妨
げとなっている。
【0009】また、その他の耐タンパソフトの応用につ
いても同様の弱点があり、PCを通じた高度な情報サー
ビスや企業、個人のノウハウを含んだプログラムのPC
への適用の妨げにもなっている。
【0010】上記のことはソフトウェアの保護一般にあ
てはまる問題であるが、これに加えて、オープンプラッ
トフォームであるPCには、システムのソフトウェア的
土台となるはずのオペレーションシステム(以下、適宜
「OS」と略する)自体が改変されて攻撃の手段とされ
るという問題もある。技術を持ち、悪意のあるユーザ
は、自分が所有するPCのOSに改造を加え、OSの持
つ特権を利用して、OSにアプリケーションプログラム
に埋め込まれている著作権保護機構を無効化させたり、
その機構を解析させたりできるからである。
【0011】現代のOSは、CPUに備えられた実行制
御機能やメモリへの特権操作機能を利用して、コンピュ
ータの制御下にある資源の管理や利用の調停を行なって
いる。管理の対象として、従来からの対象であるデバイ
スや、CPU、メモリ資源に加え、ネットワークやアプ
リケーションレベルのQoS(Quality of Service)な
どが加わってきている。とはいえ、資源管理の基本はあ
くまでも、プログラムの実行に必要な資源の割り当てで
ある。すなわち、そのプログラムの実行に対するCPU
時間の割り当てと、実行に必要なメモリ空間の割り当て
が、資源管理の基本となる。それ以外のデバイス、ネッ
トワーク、アプリケーションQoSの制御は、これらの
資源に対してアクセスするプログラムの実行を制御する
ことによって(CPU時間とメモリを割り当てることに
よって)行われる。
【0012】OSは、CPU時間の割り当てと、メモリ
の割り当てを行うための特権を有する。すなわち、CP
U時間の割り当てをするために、アプリケーションプロ
グラムを任意の時点で停止、再開する特権と、任意の時
点でアプリケーションに割り当てたメモリ空間の内容
を、異なる階層のメモリに移動する特権である。後者の
特権は、異なるアクセス速度と容量を持つ(通常は)階
層化されたメモリシステムをアプリケーションから隠ぺ
いして、フラットなメモリ空間をアプリケーションに提
供するためにも使用される。
【0013】この2つの特権を持つことにより、任意の
時点でOSはアプリケーションの実行状態を停止してス
ナップショットをとり、それをコピーまたは書き換えて
再開することが可能である。この機能はアプリケーショ
ンのもつ秘密を解析する道具にも使うことができる。
【0014】コンピュータ上のアプリケーションに対す
る解析を防ぐために、プログラムやデータの暗号化を行
う技術はすでにいくつか知られている(Hampsonによる
米国特許第4,47,902号、Hartmanによる米国特許第5,22
4,166号、Davisによる米国特許第5,806,706号、Takahas
iによる米国特許第5,825,878号、Leonard et.alによる
米国特許第6,003,117号、特開平11−282756号
公報等)。しかし、これらの技術では、上述したような
オペレーションシステムの特権動作からプログラムの動
作とデータの秘密を守ることは考慮されていない。
【0015】Intel社のx86アーキテクチャに基づく
従来技術(Hartmanの米国特許第5,224,166号、“System
for seamless processing of encrypted and non-encr
ypteddata and instructions”、以下、「従来技術1」
とする)は、実行コードとデータを、予め定められた暗
号化鍵Kxで暗号化してメモリに格納する技術を開示し
ている。Kxは、プロセッサに埋め込まれた秘密鍵Ks
に対応する公開鍵Kpで暗号化されてEKr[Kx]の形
で与えられる。したがって、Ksを知っているプロセッ
サのみがメモリ上の暗号化された実行コードを復号化で
きる。暗号化鍵Kxは、セグメントレジスタと呼ばれる
プロセッサ内部のレジスタに格納される。
【0016】この機構により、確かにプログラムコード
を暗号化することでユーザからコードの秘密をある程度
保護することは可能である。また、コードの暗号化鍵K
xを知らない者がコードを意図した通りに改変すること
や、暗号化鍵Kxで復号化されて実行可能なコードを新
たに作成することは暗号学的に困難となる。
【0017】
【発明が解決しようとする課題】しかし、この技術を適
用したシステムでは、実行コードの暗号化を解かなくて
も、コンテキスト切替と呼ばれるOSが持つ特権を利用
することで、プログラムの解析が可能になるという欠点
がある。
【0018】具体的には、割り込みによってプログラム
の実行が中断された時や、プログラムがシステムコール
呼び出しのために自発的にソフトウェア割り込み命令を
呼び出した時、OSは他のプログラム実行のために、コ
ンテキストの切替処理を行う。コンテキストの切替と
は、その時点でのレジスタ値の集合からなるプログラム
の実行状態(以下コンテキスト情報と呼ぶ)をメモリに
保存し、あらかじめメモリに保存されていた別のプログ
ラムのコンテキスト情報をレジスタに復帰させる操作で
ある。x86プロセッサにおける従来のコンテキスト保
存の形式を、図18に示す。ここにはアプリケーション
が使うレジスタの内容が全て含まれている。中断された
プログラムのコンテキスト情報は、プログラムが再開さ
れる時に元のレジスタに復帰される。コンテキスト切替
は複数のプログラムを並行動作させる上で不可欠の機能
である。従来の技術では、OSはコンテキスト切替の時
にレジスタ値を読むことができるので、そのプログラム
の実行状態がどのように変化したかに基づいて、全てと
は限らないが、プログラムの行なっている動作のほとん
どの部分を推定することができる。
【0019】さらにタイマなどの設定によって例外を発
生させるタイミングを制御すれば、プログラムの任意の
実行時点でこの処理を行うことができる。また、実行を
中断、解析するばかりでなく、レジスタの情報を悪意で
書き換えることも可能である。レジスタの書き換えは、
プログラムの動作を変更できるばかりでなく、プログラ
ムの解析も容易にする。OSはアプリケーションの任意
の状態を保存することができるため、ある時点で保存し
た状態から、繰り返し何度もレジスタ値を書き換えてプ
ログラムを動作させてプログラムの動作を解析すること
が可能なのである。上記の機能に加えてプロセッサには
ステップ実行などのデバッグ支援機構があり、OSはこ
れらの機能を全て利用してアプリケーションの解析を行
うことができてしまうという失点がある。
【0020】また、前記従来技術1ではデータに関して
は、暗号化されたコードセグメントを通じたプログラム
実行によってのみ、プログラムは暗号化データにアクセ
スできるとされている。このとき、それぞれ異なる暗号
化鍵で暗号化されたプログラムがあっても、暗号化され
たデータは、プログラムがどのような暗号化鍵で暗号化
されているかにかかわらず、任意の鍵を用いて、暗号化
されたプログラムから自由に読むことができるという問
題がある。ここに示した従来技術では、OSとアプリケ
ーションが独立に秘密を持ち、アプリケーションの秘密
をOSから守ることや、複数のプログラム供給者がそれ
ぞれに秘密を持つことは考えられていないのである。
【0021】もちろん、仮想記憶機構に設けられた保護
機能によって、アプリケーションの間でメモリ空間を隔
離したり、アプリケーションによるシステムメモリへの
アクセスを禁止することは既存のプロセッサでも可能で
ある。しかし、仮想記憶機構がOSの管理下にある以
上、アプリケーションの秘密を守ることをOSの管理下
ある機能に依存することはできない。OSは保護機構を
無視してデータをアクセスすることができるからであ
り、前述のように仮想記憶機能の提供においてその特権
は不可欠である。
【0022】別の従来技術として、特開平11−282
756(以下従来技術2と呼ぶ)では、アプリケーショ
ンの持つ秘密情報を保存するためにCPU内に設けられ
た秘密メモリの技術が開示されている。この例では秘密
メモリの中のデータへアクセスするために予め定められ
た参照値を必要とするとしている。しかしながら、同一
のCPUで動作する複数のプログラム、特にOSから、
秘密データのアクセス権を得るための参照値をどのよう
に保護するかはこの公知技術においては開示されていな
い。
【0023】さらに、米国特許第5,123,045号(Ostorov
sky et.al、以下従来技術3と呼ぶ)では、アプリケー
ション対応に固有の秘密鍵を持つサブプロセッサを前提
とし、それらサブプロセッサがメインメモリ上に置かれ
たプログラムをアクセスする時にそのアクセスパターン
からプログラムの動作を推定されることのないシステム
が開示されている。メモリに対して操作を行う命令体系
を、それとは異なる命令体系に変換し、ランダムなメモ
リアクセスが行われるのがその機構である。
【0024】しかしながら、この技術はアプリケーショ
ン毎に異なるサブプロセッサが必要となり、コスト高に
なるばかりでなく、このような命令体系を処理するコン
パイラやプロセッサハードウェアの実装、高速化技術
は、現在のプロセッサのそれとはかなり異なり、非常に
困難なものとなることが予想される。なによりも、この
ようなプロセッサでは、実際に動作するコードの動作や
データを観察、追跡してもデータの内容や動作の対応関
係の把握が著しく困難となるため、プログラムコードや
データが単純に暗号化されている前の公知技術1,2と
比較して、プログラムのデバッグが非常に困難となる点
で、実用には多くの課題がある。
【0025】そこで、これらの問題点を解決するため
に、本発明の第1の目的は、マルチタスク環境下におい
て、割り込みにより実行が中断された場合でも、内部の
実行アルゴリズムとメモリ領域内部のデータ状態の双方
を、不正な解析から確実に保護することのできるマイク
ロプロセッサの提供にある。この目的は、従来技術では
プログラムコードの値を保護することはできたが、例外
発生やデバッグ機能によるプログラム実行の中断を利用
した解析を防ぐことはできなかったという問題に鑑みて
ている。そこで、プログラム実行中断時にも、確実にコ
ードを保護することができ、かつ、その保護が、現代の
OSが必要とする実行制御機能およびメモリ管理機能の
双方と両立するマイクロプロセッサの提供を目的とす
る。
【0026】本発明の第2の目的は、異なる暗号化鍵で
暗号化された複数のプログラムが実行される場合にも、
それぞれのプログラムが互いに独立して、正しく読み書
きできるデータ領域を確保したマイクロプロセッサの提
供にある。特に、Hartmanによる米国特許第5,224,166号
(従来技術1)では、暗号化されていないコードによる
暗号化されたデータ領域へのアクセスが禁止されるだけ
の単純な保護しか行なわれておらず、複数のプログラム
がそれぞれ独立に秘密を保護することができなかった。
この問題点に鑑みて、複数のアプリケーションがそれぞ
れ秘密を持つ(暗号化されている)場合、各々の秘密を
OSから守るデータ領域を有するマイクロプロセッサの
提供を第2の目的とする。
【0027】本発明の第3の目的は、第2の目的で確保
したデータ領域の保護属性(すなわち暗号化属性)を、
OSによる不正な書き換えから保護することのできるマ
イクロプロセッサの提供にある。従来技術1では、プロ
グラムがメモリ上にデータを書きだす直前に、OSがコ
ンテキスト切替を利用してプログラムの実行を中断し、
セグメントレジスタに設定された暗号化属性を書き換え
ることができるという欠点があった。暗号化属性を書き
換えることによって平文でデータが書き込まれる状態に
なると、データは暗号化されずにメモリに書き込まれて
しまう。アプリケーションがあるタイミングでセグメン
トレジスタ値をチェックしたとしても、その後にレジス
タ値が書き換えられてしまえば同じことである。そこ
で、このような改変を禁止または検出して対抗措置をと
ることのできる機構を備えたマイクロプロセッサの提供
を第3の目的とする。
【0028】本発明の第4の目的は、プログラムがデー
タ暗号化鍵として任意の値を使用することができ、暗号
解析理論上のいわゆる「選択平文攻撃」から暗号化属性
を守ることのできるマイクロプロセッサの提供にある。
【0029】本発明の第5の目的は、プログラムデバッ
グ、フィードバックのための機構を備えたマイクロプロ
セッサを提供することにある。すなわち、マイクロプロ
セッサ自体に平文でプログラムのデバッグを行わせ、ま
た、実行に失敗した場合にプログラムコードの提供者
(プログラムベンダ)に不具合情報をフィードバックさ
せることを意図する。
【0030】本発明の第6の目的は、上記第1〜第5の
目的を、安価かつ高性能に実現することのできるマイク
ロプロセッサの提供にある。
【0031】
【課題を解決するための手段】本発明の第1の特徴とし
て、上記第1の目的を達成するために、1チップまたは
1パッケージとして構成されるマイクロプロセッサは、
読み出し手段としてのバスインターフェイスユニットを
介して、プログラムごとに異なるコード暗号化鍵で暗号
化された複数のプログラムを、マイクロプロセッサ外部
の記憶手段(たとえばメインメモリ)から読み出す。マ
イクロプロセッサの復号化手段は、読み出した複数のプ
ログラムを、それぞれ対応する復号化鍵で復号化し、命
令実行部が、復号化された複数のプログラムを実行す
る。複数のプログラムのうち、あるプログラムの実行を
中断する場合に、実行状態書き込み手段としてのコンテ
キスト情報暗号化/複号化ユニットは、中断されるプロ
グラムのそれまでの実行状態を示す情報と、このプログ
ラムのコード暗号化鍵とを、マイクロプロセッサに固有
の暗号化鍵で暗号化し、暗号化した情報をコンテキスト
情報としてマイクロプロセッサ外部の記憶手段に書き込
む。中断されたプログラムを再開する場合に、再開手段
としての検証ユニットは、暗号化されたコンテキスト情
報を、マイクロプロセッサに固有の暗号化鍵に対応する
固有の復号化鍵で復号化し、復号化されたコンテキスト
情報に含まれるコード暗号化鍵(すなわち再開予定のプ
ログラムのコード暗号化鍵)が、中断されたプログラム
本来のコード暗号化鍵と一致した場合にのみ、プログラ
ムの実行を再開する。
【0032】また、第2および第3の目的を達成するた
めに、マイクロプロセッサは、外部へ読み出すことので
きないプロセッサ内部の記憶領域(たとえばレジスタ)
と、プログラムの処理対象であるデータのための暗号化
属性を、内部の記憶手段に書き込む暗号化属性書き込み
手段(たとえば命令TLB)とを、さらに有する。暗号
化属性とは、たとえば、プログラムのコード暗号化鍵
と、暗号化の対象となるアドレス範囲である。このよう
な暗号化属性の少なくとも一部は、コンテキスト情報に
含まれる。
【0033】コンテキスト情報暗号/複号化ユニットは
また、マイクロプロセッサに固有の秘密情報に基づく署
名をコンテキスト情報に付与する。この場合、検証ユニ
ットは、復号化されたコンテキスト情報に含まれる署名
が、マイクロプロセッサに固有の秘密情報に基づく本来
の署名と一致するかどうか判断し、一致する場合にのみ
中断されていたプログラムを再開する。
【0034】このように、暗号化プログラムによるそれ
までの実行状態は、コンテキスト情報として外部メモリ
に保存されるとともに、実行処理対象であるデータの保
護属性は、プロセッサ内部のレジスタに格納されている
ので、データに対する不正な改変が防止される。
【0035】本発明の第2の特徴として、上記第4の目
的を達成するために、1チップまたは1パッケージとし
て構成されるマイクロプロセッサは、外部へ読み出すこ
とのできない固有の秘密鍵を内部に保持する。読み出し
手段としてのバスインターフェイスユニットは、あらか
じめ秘密鍵に対応したマイクロプロセッサに固有の公開
鍵によって暗号化されたコード暗号化鍵を、マイクロプ
ロセッサ外部の記憶手段から読み出す。第1の復号化手
段としての鍵復号化ユニットは、読み出したコード暗号
化鍵を、マイクロプロセッサの秘密鍵を用いて復号化す
る。バスインターフェイスユニットはまた、それぞれが
異なるコード暗号化鍵で暗号化された複数のプログラム
を、外部の記憶手段から読み出す。第2の復号化手段と
してのコード復号化ユニットは、読み出された複数のプ
ログラムを復号化する。命令実行部は、復号化された複
数のプログラムを実行する。複数のプログラムのうち、
あるプログラムの実行が中断される場合に、乱数発生機
構は、一時的な鍵として乱数を発生する。コンテキスト
情報暗号/複号化ユニットは、中断されるプログラムの
実行状態を示す情報を生成された乱数で暗号化した第1
の値と、この乱数を中断するプログラムのコード暗号化
鍵で暗号化した第2の値と、乱数をマイクロプロセッサ
の秘密鍵で暗号化した第3の値とを、コンテキスト情報
として外部の記憶手段に書き込む。
【0036】プログラムの実行を再開するときは、コン
テキスト情報暗号/複号化ユニットは、外部の記憶手段
から前記コンテキスト情報を読み出し、秘密鍵を用い
て、コンテキスト情報に含まれる第3の値の乱数を復号
化し、復号化された乱数を用いて、コンテキスト情報に
含まれる実行状態情報を復号化する。同時に、再開され
る予定のプログラムのコード暗号化鍵を用いて、コンテ
キスト情報に含まれる第2の値の乱数を復号化する。第
2の値をコード暗号化鍵で復号化した乱数と、第3の値
を秘密鍵で復号化した一時鍵とを比較し、一致する場合
にのみ、プログラムの実行を再開する。
【0037】このように、それまで実行されていた状態
を示すコンテキスト情報は、保存の都度生成される乱数
で暗号化され、マイクロプロセッサに固有の秘密鍵によ
る署名が添付されるので、安全なかたちで外部メモリに
保存される。
【0038】本発明の第3の特徴として、前記第1〜第
3および第6の目的を達成するために、1チップまたは
1パッケージとして構成されるマイクロプロセッサは、
プログラムごとに異なる前記暗号化鍵によって暗号化さ
れた複数のプログラムを、マイクロプロセッサ外部の記
憶手段から読み出して実行する。このマイクロプロセッ
サは、外部へ読み出すことのできない内部記憶手段(た
とえばレジスタ)を有し、レジスタに、各プログラムか
ら参照される(すなわち処理対象となる)データのため
の暗号化属性と暗号化属性特定情報とを格納する。コン
テキスト情報暗号/複号化ユニットは、レジスタに格納
された暗号化属性特定情報と関連し、マイクロプロセッ
サに固有の署名を含む関連情報を、外部の記憶手段に書
き込む。保護テーブル管理部は、プログラムが参照する
データのアドレスに基づいて、外部の記憶手段から関連
情報を読み込む。検証ユニットは、読み込まれた関連情
報に含まれる署名を、秘密鍵によって検証し、それがマ
イクロプロセッサ固有の署名と一致した場合にのみ、暗
号化属性特定情報と読み込まれた関連情報に基づいて、
プログラムによるデータの参照を許可する。
【0039】この構成では、内部レジスタに格納される
べき情報に署名をつけて、外部メモリに書き込んでお
き、必要な部分だけをマイクロプロセッサに読み込む。
読み込み時に、署名を検証するので、すり替えなどに対
する安全性が確保される。扱うプログラムの数が増え、
暗号化属性の種類が増大した場合にも、マイクロプロセ
ッサ内部の記憶領域を拡張する必要がなく、コストを低
減できる。
【0040】本発明の、その他の特徴、効果は、図面を
参照して以下で述べる詳細な説明により、明らかになる
ものである。
【0041】
【発明の実施の形態】(第1実施形態)図1〜14を参
照して、本発明の第1実施形態にかかるマイクロプロセ
ッサについて説明する。本実施形態では、広く普及して
いるIntel社のPentium Proマイクロプロセッサ(インテ
ル・アーキテクチャ・ソフトウェア・ディベロッパーズ
・マニュアル参照)に変更を加えたアーキテクチャを例
にとって本発明の構成を説明するが、これは本発明の適
用範囲を前記プロセッサに制限するものではない。な
お、Intel Pentium Proプロセッサに特徴的な部分や、
他のアーキテクチャへの適用については、可能な限り本
文中で補足する。
【0042】また、Pentium Proアーキテクチャではア
ドレス空間に物理アドレス、リニアアドレス、論理アド
レスの3種類の区分があるが、本実施例ではPentiumの
用語におけるリニアアドレスを、論理アドレスという呼
び方で使用するものとする。
【0043】以下の説明では、特に断らない限り、保護
とはアプリケーションの秘密の保護(すなわち暗号化に
よる保護)を意味する。したがって、通常使われる保護
の概念、すなわちあるアプリケーションの動作によって
他のアプリケーションの動作が妨害されないこととは区
別される。ただし、本発明においては、アプリケーショ
ンの秘密の保護と並列して、通常の意味での動作保護機
構がオペレーションシステム(OS)によって当然に提
供されているものとする(ただし、後者に関しては本発
明と直接の関係がないので、説明は省略する。)。
【0044】また、以下の実施形態では、秘密保護をO
Sの管理下のアプリケーションの秘密を守るものとして
説明しているが、この機構はOSそのものを改竄や解析
から守る機構としても利用可能である。
【0045】図1は本発明の第1実施形態にかかるマイ
クロプロセッサの基本構成図であり、図2は、図1に示
したマイクロプロセッサの詳細構成図である。
【0046】マイクロプロセッサ101は、プロセッサ
コア111、命令TLB(変換索引バッファ)121、
例外処理部131、データTLB141、2次キャッシ
ュ152を含む。プロセッサコア111は、バスインタ
フェースユニット112、コード・データ暗号化/復号
化処理部113、1次キャッシュ114、および命令実
行部115を有する。命令実行部115は、命令フェッ
チ/デコードユニット214と、命令プール215と、
命令実行切替ユニット216と、命令実行完了ユニット
217を有する。
【0047】例外処理部131は、レジスタファイル2
53、コンテキスト情報暗号/福号化ユニット254、
例外処理ユニット255、秘密保護違反検出ユニット2
56、コード暗号化鍵・署名検証ユニット257を含
む。命令TLB121は、ページテーブルバッファ23
0と、コード復号化鍵バッファ231と、鍵復号化ユニ
ット232を有する。データTLB141は、保護テー
ブル管理部233を有する。
【0048】マイクロプロセッサ101は、このマイク
ロプロセッサに固有の公開鍵Kpと秘密鍵Ksを保存す
る鍵記憶領域241を有する。今、あるプログラムベン
ダから所望の実行プログラムAを購入し、実行する場合
を考える。プログラムベンダは、実行プログラムAを供
給する前に、コード暗号化の共通鍵Kcodeでプログラム
Aを暗号化し(EKcode[A])、暗号化に用いた共通鍵
Kcodeをマイクロプロセッサ101の公開鍵Kpで暗号
化して(EKp[Kcode])マイクロプロセッサ101に送
ってくる。マイクロプロセッサは、この実行プログラム
Aだけではなく、複数の異なる暗号化プログラムを擬似
並列的に(すなわち割り込み中断可能に)処理するマル
チタスクプロセッサである。また、暗号化プログラムだ
けではなく、平文プログラムの実行も当然行う。
【0049】マイクロプロセッサ101は、バスインタ
ーフェイスユニット(読み出し手段)112を介して、
プログラムごとに異なるコード暗号化鍵で暗号化された
複数のプログラムを、マイクロプロセッサ外部のメイン
メモリから読み出す。コード復号化ユニット212は、
読み出した複数のプログラムを、それぞれ対応する復号
化鍵で復号化し、命令実行部115が、復号化された複
数のプログラムを実行する。あるプログラムの実行を中
断する場合に、例外処理部131のコンテキスト情報暗
号化/複号化ユニット254は、中断されるプログラム
のそれまでの実行状態を示す情報と、このプログラムの
コード暗号化鍵とを、マイクロプロセッサの公開鍵で暗
号化し、暗号化した情報をコンテキスト情報としてメイ
ンメモリ281に書き込む。中断されたプログラムを再
開する場合は、コード暗号化鍵・署名検証ユニット25
7は、暗号化されたコンテキスト情報を、マイクロプロ
セッサの秘密鍵で復号化し、復号化されたコンテキスト
情報に含まれるコード暗号化鍵(すなわち再開予定のプ
ログラムのコード暗号化鍵)が、中断されたプログラム
本来のコード暗号化鍵と一致するかどうかを検証し、一
致した場合にのみ、プログラムの実行を再開する。
【0050】ここで、マイクロプロセッサ101の詳細
な構成、機能を説明する前に、まずマイクロプロセッサ
101による平文の命令の実行と、暗号化プログラムの
実行における処理の流れをおおまかに説明する。
【0051】マイクロプロセッサ101が平文命令を実
行する時は、命令フェッチ/デコードユニット214
が、プログラムカウンタ(不図示)の示すアドレスの内
容をL1命令キャッシュ213から読み出そうとする。
指定のアドレスの内容がキャッシュされていればL1命
令キャッシュ213から命令を読み出し、命令プール2
15に送って命令が実行される。命令プールは複数の命
令を並列実行可能であり、実行を行うためのデータの読
み出しを、命令実行切替ユニット216に要求してデー
タを受け取る。命令が並行して実行され、その実行結果
が確定すれば、実行結果は命令実行完了ユニット217
に送られる。命令実行完了ユニット217は、操作対象
がマイクロプロセッサ101内部のレジスタであれば、
実行結果をレジスタファイル253に書き込み、操作対
象がメモリであれば、L1データキャッシュ218に書
き込む。
【0052】L1データキャッシュ218の内容は、バ
スインタフェースの制御下にあるL2キャッシュ152
でさらにもう一度キャッシュされて、メインメモリ28
1に書き込まれる。ここでは仮想記憶機構が使われてお
り、論理的なメモリアドレスと物理的なメモリアドレス
との対応関係を定義するのが図3に示すページテーブル
である。ページテーブルは、物理メモリ上におかれるデ
ータ構造である。データTLB141は、実際に論理ア
ドレスから物理アドレスへの変換を行うと同時に、デー
タキャッシュを管理する。データTLB141は、マイ
クロプロセッサ101内部のあるレジスタが示すテーブ
ルの先頭アドレスに基づいて、テーブルの必要な部分を
読み込み、論理アドレスから物理アドレスへの変換作業
を行う。このとき、メモリ上のページテーブルの全てが
データTLB141に読み込まれるのではなく、アクセ
スされる論理アドレスに応じて必要な部分だけがページ
テーブルバッファ234に読み込まれる。
【0053】キャッシュ動作の基本は、プログラムの命
令が暗号化されているかどうかにかかわらず、一定であ
る。すなわち、命令TLB121にページテーブルの一
部が読み込まれ、その定義に従ってアドレス変換が行わ
れる。バスインタフェースユニット112は、メインメ
モリ281またはL2キャッシュ141から命令を読み
込み、L1命令キャッシュ213に命令が格納される。
L1命令キャッシュ213への命令の読み出しは、複数
のワードで構成されるラインと呼ばれる単位で行われ、
ワード単位の読み出しよりも高速なアクセスが行われ
る。
【0054】実行命令の演算処理対象であるデータにつ
いても、物理メモリ上にある同じページテーブルを利用
してアドレス変換が行われるが、変換の実行は上述した
ようにデータTLB141で行われる。
【0055】ここまでは一般のキャッシュメモリの動作
と基本的に同一であり、プロセッサの動作とキャッシュ
メモリについての詳細は、Curt Schimmel著の「UNI
Xカーネル内部解析」(ソフトバンク社、1996年)
に記載されている。
【0056】次に、暗号化されたプログラムを実行する
場合の動作を説明する。本発明では秘密の保護を受ける
実行コードは全て暗号化されていることを前提とし、暗
号化されている実行コードのことを保護されたコードと
も言う。さらに、同一の暗号化鍵による保護の範囲を保
護ドメインと呼ぶ。すなわち、同じ鍵で保護されるコー
ドの集合は同じ保護ドメインに所属し、異なる暗号化鍵
で保護されるコードは保護ドメインが異なると言う。
【0057】まず、メインメモリ281上には、共通鍵
方式のブロック暗号アルゴリズムによって暗号化された
プログラムの実行コードが格納されている。プログラム
ベンダから送られてきた暗号化プログラムのロード方法
などについては、同一出願人による特許出願第2000
−35898号に記載されるとおりである。暗号ブロッ
クサイズは、ブロックサイズの2のべき乗倍が、キャッ
シュメモリの読み書きの単位であるラインサイズと一致
すれば、どのような値をとってもよい。ただし、ブロッ
クサイズが小さい場合、ブロック長と命令長が一致し
て、サブルーチンの先頭部分などの予測可能な命令部分
と暗号化データの対応関係を記録することによって、簡
単に命令が解読されてしまう危険がある。そこで、本発
明ではブロックをインタリーブして、ブロック中のデー
タの間に依存性を持たせ、暗号化されたブロックに複数
の命令語やオペランドの情報を含ませる。こうすること
により、命令と暗号化ブロックの対応づけを困難にす
る。
【0058】図5は、本発明で行うインタリーブの例を
示す。図5に示す例では、キャッシュのラインサイズを
32バイト、ブロックサイズを64ビット(すなわち8
バイト)としている。インタリーブ前は1ワードは4バ
イトで構成され、ワードAはA0〜A3の4バイトから
なる。1ラインはA〜Hの8ワードで構成されている。
これをブロックサイズ64ビットに対応する8バイト単
位になるようにインタリーブすると、図5の下の図のよ
うに、A0,B0,…,H0がワード0および1に該当
する最初のブロックに配置され、A1,B1,…,H1
が次のブロックに配置される。
【0059】インタリーブを施す領域の長さは、長けれ
ば長いほど攻撃は困難となるが、ラインサイズを越えて
インタリーブをかけることは、あるキャッシュラインの
復号化/暗号化が別のラインの読み出し/書き込みに依
存することになり、処理の複雑化と速度低下を招くこと
になる。インタリーブを施す範囲はキャッシュラインサ
イズの範囲内にとどめることが望ましい。
【0060】ここではキャッシュラインに含まれる複数
のブロックのデータに依存性を持たせるためにブロック
のデータをインタリーブする方法をとっているが、デー
タブロック間に依存性を持たせるための他の方法、例え
ばブロック暗号のCBC(Cipher Block Chaining)モ
ードなどを使ってもよい。
【0061】暗号化された実行コードの復号化鍵Kcode
(共通鍵アルゴリズムでは暗号化鍵と復号化鍵は同一な
ので、以下では復号に用いる場合も暗号化鍵という言葉
を使う)は、ページテーブルに基づいて決定される。図
3および4は、論理アドレスから物理アドレスへの変換
テーブル構造を示す。
【0062】プログラムカウンタの論理アドレス301
がある値を示し、その上位ビットのディレクトリ302
とテーブル303によって、ページエントリ307−j
が指定される。ページエントリ307−jは、キーエン
トリID307−j−Kを含み、このIDに基づいて、
キーテーブル309内で、このページの復号化に使用さ
れる鍵エントリ309−mが決定される。キーテーブル
309の物理アドレスは、マイクロプロセッサ内部のキ
ーテーブル制御レジスタ308によって指定される。
【0063】この構成では、ぺージエントリに直接鍵情
報をおかずに、鍵エントリのIDを置くことにより、サ
イズの大きい鍵情報を複数のページで共有して、サイズ
の限られる命令TLB121上のメモリ領域を節約する
ことができる。
【0064】本発明の特徴として、キーテーブルのエン
トリは固定長だが、それぞれのテーブルで使用される鍵
の長さは暗号解析能力の向上に対応できるように可変長
とし、キーテーブルのキーサイズ領域で指定される。マ
イクロプロセッサ101に固有の秘密鍵Ksは固定され
ているが、プログラムの暗号化、復号化に用いられるK
codeの長さは鍵エントリの指定によって変えられるとい
うことである。可変長の鍵の位置を指定するため、鍵エ
ントリ309−mには鍵エントリをポイントするフィー
ルド309−m−4があり、キーオブジェクト310の
アドレスを示している。
【0065】キーオブジェクト領域310には、実行コ
ードの暗号化鍵Kcodeが、公開鍵アルゴリズムにより、
マイクロプロセッサ101の公開鍵Kpで暗号化された
形E Kp[Kcode]で格納されている。公開鍵アルゴリズ
ムでデータを安全に暗号化するためには、大きな冗長度
が必要なため、暗号化されたデータ長は元のデータ長よ
り長くなる。ここでは、Ks、Kpの長さを1024b
ビット、Kcodeの長さを64bビットとし、パディング
により256ビットの長さとして、E[Kcode]を10
24ビットの長さに暗号化してキーオブジェクト領域3
10に格納する。Kcodeが長く、1024ビットに格納
できない場合は、複数の1024ビットブロックに分割
して格納する。
【0066】図6は、上記の流れをまとめたものであ
る。プログラムカウンタ501は、論理アドレス空間5
02の上の暗号化されたコード領域503の上のアドレ
スAddrを指している。論理アドレスAddrは、命令TLB
121に読み込まれたページテーブル307に基づい
て、物理アドレスAddr’に変換される。これと同時に、
暗号化されたコード復号化鍵E[Kcode]がキーテーブ
ル309から取り出され、復号化機能506においてC
PUの持つ秘密鍵Ksで復号化されて、カレントコード
復号化鍵記憶手段507に格納される。コード暗号のた
めの共通鍵Kcodeは、プログラムベンダにより、マイク
ロプロセッサ101の公開鍵Kpで暗号化され、Kcode
で暗号化されたプログラムとともに供給されるので、マ
イクロプロセッサ101の秘密鍵Ksを知らないユーザ
は、Kcodeを知ることはできない。
【0067】プログラムベンダは、Kcodeでプログラム
の実行コードを暗号化し出荷した後は、Kcodeを安全に
保管し、第3者に秘密が洩れないように管理する。
【0068】全体キーテーブル511と、全体ページテ
ーブル512は、物理メモリ510に置かれ、それぞれ
の物理アドレスがキーテーブルレジスタ508、CR3
レジスタ509によって指定されている。これらの全体
テーブルの内容は、バスインタフェースユニット112
を介して、必要な部分だけが命令TLB121にキャッ
シュされる。
【0069】さて、命令TLB112によって変換され
た物理アドレスAddr’に対応する内容503がバスイン
タフェースユニット112によって読み出されると、こ
のページは暗号化されているので、コード復号化ユニッ
ト212で復号化される。読み出しは前記キャッシュラ
インサイズ単位で行われ、ブロック単位で復号化された
後、上述したインタリーブの逆処理が行なわれる。復号
された結果はL1命令キャッシュ213に格納され、命
令として実行される。
【0070】その他、プログラムのロード手法、リロケ
ーションなどについては、同一出願人による特許出願第
2000−35898号に記載されている。
【0071】このように暗号化されたコードを実行でき
ることにより、本発明のマイクロプロセッサでは、コー
ドを逆アセンブルしてプログラムの動作を解析すること
を、暗号化アルゴリズムとパラメータを適切に選びさえ
すれば暗号学的に不可能とすることができる。
【0072】同様に、ユーザはコード暗号化鍵Kcodeの
真の値を知ることができないので、暗号化されたプログ
ラムの一部を改変してユーザがそのアプリケーションが
扱うコンテンツの不正コピーを取るなどのユーザの意図
に沿った改変も暗号学的に不可能にすることができる。
【0073】次に、デバッグ機能の抑止について説明す
る。
【0074】命令TLB121は、現在実行中のコード
が保護されているかどうか(暗号化されているかどう
か)を判定することができる。保護されたコードの実行
中は、デバッグフラグやデバッグレジスタから暗号化プ
ログラムの解析に侵入されることを防止するため、デバ
ッグレジスタ機能と、ステップ実行機能という2つのデ
バッグ機能が禁止される。
【0075】デバッグレジスタ機能とは、プロセッサに
備えられたデバッグレジスタに、メモリアクセス範囲
や、実行、データとしての読み出し、書き込みなどのア
クセス種別を設定しておくことにより、対応するメモリ
アクセスが発生したときに割り込みが発生する機能であ
る。本実施形態においては、保護されたコードを実行し
ている時は、デバッグレジスタに設定された内容は無視
され、デバッグのために割り込みは発生しない。ただ
し、ページテーブルにデバッグのビットが設定されてい
る場合を除く。ページテーブルのデバッグビットについ
ては後述する。
【0076】非保護(平文)のコードを実行中は、プロ
セッサのEFLAGSレジスタのステップ実行ビットを
セットすると、1命令を実行する度に割り込みが発生す
るが、保護されたコードの実行中には、このビットも無
視され、割り込みは発生しない。
【0077】本発明では、実行コードの暗号化による解
析の防止に加えて、これらの機能により、デバッグレジ
スタやデバッグフラグによるプログラムの動的解析を防
止することで、ユーザによるプログラムの解析を困難に
している。
【0078】次に、本発明のマイクロプロセッサの特徴
である、マルチタスク環境下でのプログラム実行中断時
における、コンテキストの暗号化と署名および検証につ
いて説明する。
【0079】マルチタスク環境でプログラムの実行は、
例外によりしばしば中断される。通常、実行が中断され
た時にはプロセッサが保持する状態は一旦メモリ上に保
存され、後でそのプログラムの実行が再開される時に元
の状態が復帰される。これにより、複数のプログラムに
よる処理を疑似的に並行して実行したり、割り込み処理
を受け付けることが可能になっている。この中断時の状
態情報は、コンテキスト情報と呼ばれる。コンテキスト
情報にはアプリケーションが使用するレジスタ情報が含
まれ、それに加えて、明示的には見えないがレジスタの
情報が含まれる場合がある。
【0080】従来のプロセッサでは、あるプログラムの
実行中に割り込みが発生すると、アプリケーションのレ
ジスタ状態が保持されたままOSの実行コードに制御が
移されるので、OSはそのプログラムのレジスタ状態を
調べてどのような命令を実行していたかを推定したり、
平文のまま保存されたコンテキスト情報を実行の中断中
に改変することで、そのプログラムの実行再開後のプロ
グラムの動作を変えることができた。
【0081】そこで、本発明では、保護されたコードの
実行中に割り込みが発生した時に、その直前に実行して
いたコンテキストを暗号化して保存し、全てのアプリケ
ーションレジスタを暗号化または初期化するとともに、
コンテキスト情報にプロセッサによる署名を添付する。
中断からの復帰時に署名を検証し、その署名が正しい署
名かどうかをチェックする。署名の不整合を検出した場
合には復帰を中止して、ユーザによる不正なコンテキス
ト情報の改変を防止することができる。このとき、暗号
化の対象となるレジスタは、図7の701〜720まで
のユーザレジスタである。
【0082】Pentium Proアーキテクチャでは、プロセ
スのコンテキスト情報のメモリ上への保存、復帰をハー
ドウェア的に支援する機構がある。この状態を保存する
ための領域はTSS(task state segment)と呼ばれ
る。以下この機構に本発明を適用した例を説明するが、
これは本発明の適用をPentium Proアーキテクチャに限
定するものではなく、本発明は広く一般のプロセッサア
ーキテクチャに適用が可能である。
【0083】例外発生にともなうコンテキスト情報の保
存は次の場合に起きる。例外が発生すると、IDT(In
terrupt Descriptive Table)と呼ばれる例外処理を
記述するテーブルの中から、割り込み原因に対応するエ
ントリが読み出され、そこに記述された処理が実行され
る。エントリがTSSを示すものであるとき、指示され
たTSSに保存されていたコンテキスト情報がプロセッ
サに復帰される。一方、それまで実行されていたプロセ
スのコンテキスト情報は、そのときのタスクレジスタ7
25で指定されたTSS領域に保存される。
【0084】この自動的なコンテキスト保存機構を使え
ば、プログラムカウンタやスタックポインタを含めて全
てのアプリケーション状態を保存し、復帰時に署名を検
証することで改竄の有無を検出することができる。しか
し、自動的なコンテキストの保存を行う場合、コンテキ
ストの切替のために大きなオーバヘッドが生じる他に、
TSSを使わない割り込み処理ができないなどの問題が
生じる。
【0085】割り込み処理のオーバヘッドを小さくす
る、あるいは既存プログラムとの互換性を保つためには
自動的なコンテキスト保存の機構を使わないことが望ま
しいが、この場合には、プログラムカウンタはスタック
上に保存されてしまい、検証の対象とはできないため、
悪意のあるOSによる改竄の対象ともなりうる。両者は
目的に応じて使い分けられることが好ましい。そこで、
本発明のマイクロプロセッサでは、保護された(暗号化
された)実行コードに対しては、安全性を重視して、自
動的なコンテキスト保存を採用する。自動的に保存する
レジスタは必ずしも全てのレジスタでなくてもよい。
【0086】本実施例におけるコンテキスト保存と再開
処理の特徴は次の3点である。
【0087】(1)コンテキストを生成したマイクロプ
ロセッサ自体と、コンテキストを生成したプログラムの
暗号化鍵Kcodeを知る者だけが、保存されたコンテキス
トの内容を復号化できる。
【0088】(2)あるコード暗号鍵Xで保護されたプ
ログラムが中断され、そのコンテキストが保存された場
合、その再開処理は非保護のプログラムや別のコード暗
号化鍵Yで暗号化されたプログラムの再開に適用するこ
とはできない。すなわち、中断から復帰させるべきプロ
グラムが、再開時に別のプログラムに入れ代えられるこ
とはない。
【0089】(3)改変されたコンテキストの復帰を禁
止する。すなわち、仮に保存されていたコンテキストが
改変されていた場合、そのコンテキストは復帰されな
い。
【0090】上記の特徴(1)により、コンテキスト情
報の安全性を維持すると同時に、プログラムベンダによ
るコンテキスト情報の解析は可能にしておくことができ
る。プログラムベンダがコンテキスト情報を解析する権
利を保持していることは、ユーザの使用条件で発生した
不具合の原因を解析し、プログラムの品質を維持するた
めにも重要だからである。
【0091】特徴(2)は、たとえば攻撃者が、プログ
ラムAの実行によって生成されたコンテキストを、別の
暗号プログラムBに適用して、コンテキストに保存され
た既知の状態からプログラムを再開することによって、
プログラムBに含まれるデータやコードの秘密を解析し
たり動作を改変することを防ぐためのものである。この
機能はまた、後述するデータ保護に際して、複数のアプ
リケーションが互いに独立して、それぞれ排他的に暗号
化データを保持するための前提となる。
【0092】特徴(3)により、プログラムの再開時を
利用したコンテキスト情報の改変を厳密に排除すること
ができる。
【0093】このような機能を持たせる理由は、単にプ
ロセッサの秘密情報に基づいてコンテキスト情報を暗号
化しただけでは、秘密情報を、攻撃者の意図に沿ったコ
ンテキスト情報の改変から守ることはできても、コンテ
キストが無秩序に改変され、ランダムに誤りが生じた状
態からプログラムが再開される可能性を排除することが
できないからである。
【0094】以下、上記3つの特徴をそなえたコンテキ
スト保存と検証方法について詳細に説明する。
【0095】<コンテキスト保存処理>図8は、第1実
施形態のコンテキスト保存形式を概念的に示した図であ
る。保護されたプログラムの実行中にハードウェア、ま
たはソフトウェアが原因の割り込みが発生したとする。
割り込みに対応するIDTエントリがTSSを示すもの
であれば、それまでのプログラムの実行処理が暗号化さ
れ、コンテキスト情報として(そのTSSではなく)カ
レントのタスクレジスタ725が示すTSSに保存され
る。そして、IDTエントリが示すTSSに保存された
実行状態がプロセッサに復帰される。IDTのエントリ
がTSSを示していない場合、カレントのレジスタの暗
号化または初期化のみが行なわれ、TSSの保存は行な
われない。当然そのプログラムの再開は不可能となる。
ただし、OSの動作の継続のため、レジスタの暗号化ま
たは初期化の対象から、フラグレジスタの一部タスクレ
ジスタを含むシステムレジスタは除外する。
【0096】図8に示すコンテキストは、実際には、そ
の内容がインタリーブされ、ブロック毎に暗号化されて
メモリ上に保存される。まず保存される情報の項目につ
いて説明する。先頭には各特権モードに対応したスタッ
クポインタとユーザレジスタ802〜825があり、そ
の次に、TSSのサイズと暗号化の有無を示す1ワード
826が置かれる。これはプロセッサが保存されたTS
Sが暗号化されたものであるかどうかを示すもので、T
SSが暗号化された場合でも、この領域は暗号化されず
に、平文のまま保存される。続いてデータの保護のため
に追加されたデータ暗号化制御レジスタ(CY0〜CY
3)の領域827〜830と、サイズをブロック長に合
わせるためのパディング831が置かれる。最後にコン
テキストを暗号化した鍵Krを実行コードの暗号化Kco
deで共通鍵アルゴリズムにより暗号化した値EKcode[K
r]832、コンテキストを暗号化した鍵Krをプロセ
ッサの公開鍵Kpで暗号化した値EKP[Kr]833、そ
して、これら全体に対するプロセッサの秘密鍵Ksによ
る署名SKS[message]834が置かれる。また、タスク
間の呼出し関係を保持する前回のタスクとのリンク領域
801は、OSによるタスクスケジューリングを可能に
するため平文のまま保存される。
【0097】これら実行コードの暗号化や署名生成は、
図2に示す例外処理部131の中のコンテキスト情報暗
号化/復号化ユニット254によって行なわれ、実行コ
ードの処理対象であるデータの暗号化とは独立した機能
に基づく。コンテキスト情報がTSSに保存される際に
は、別途のデータ暗号化機能によりTSSのアドレスに
なんらかの暗号化が指定されていたとしても、その指定
は無視され、コンテキストの暗号化が行なわれたそのま
まの状態で保存される。データ暗号化機能の暗号化属性
は、それぞれの保護された(暗号化された)プログラム
に固有のものであるため、あるプログラムの再開をその
機能に依存することができないためである。
【0098】コンテキストの暗号化にあたっては、まず
平文のまま記録されるTSSサイズ領域826のワード
が、値0に置き換えられる。そして、図5と関連して説
明したのと同様のインタリーブが施されて、コンテキス
トが暗号化される。このとき、パディング831は暗号
化ブロックサイズに合わせてインタリーブが適切に行え
るサイズに設定する。
【0099】ここで、レジスタ値をプロセッサの公開鍵
Kpまたはコードの暗号化鍵Kcodeで直接暗号化しない
のは、プログラムベンダとプロセッサの両者による暗号
化されたコンテキストの解読を可能にし、同時にユーザ
によるコンテキストの復号化を禁止するためである。
【0100】プログラムベンダはコードの暗号化鍵Kco
deを知っているので、Kcodeを使用してEKcode[Kr]
832を復号化して、コンテキストの暗号化鍵Krを取
り出すことができる。また、マイクロプロセッサ101
は、内部に持つ秘密鍵KsでEKP[Kr]833を復号化
して、Krを取り出すことができる。すなわち、プログ
ラムベンダは、ユーザのマイクロプロセッサの秘密鍵を
知ることなく、コンテキスト情報を復号化して不具合の
解析を行うことができ、マイクロプロセッサ101自体
は、内部に持つ秘密鍵でコンテキスト情報を復号化して
実行を再開することができる。いずれの鍵も持たないユ
ーザは、保存されたコンテキスト情報を復号化すること
はできない。また、コンテキスト情報と、上記E
Kcode[Kr]、EKP[Kr]に対する署名SKS[message]
を、マイクロプロセッサ101の秘密鍵Ksを知らない
ユーザが偽造することもできない。
【0101】プログラムベンダとマイクロプロセッサに
よる互いに独立したコンテキスト情報の復号化を可能と
するために、直接Kcodeでコンテキスト情報を暗号化す
る方法も考えられる。しかし、レジスタの状態が既知の
場合、コードの暗号化鍵Kcodeに対して既知平文攻撃が
行なわれるおそれがある。すなわち、データを暗号化す
るための鍵の値が固定されていると、次のような問題が
ある。ユーザのデータ入力を読み込んで、それを一時的
に作業用メモリに暗号化して書き込むというプログラム
を実行していたとする。暗号化されて書き込まれるデー
タは、メモリ上を観察していればわかるので、ユーザは
入力の値を変えて何度も入力を繰り返し、それに対応す
る暗号化されたデータを入手することができる。これ
は、暗号解析の理論における「選択平文攻撃」が可能で
あることを意味する。
【0102】共通鍵暗号アルゴリズムにとって既知平文
攻撃は致命的ではないとはいえ、これを回避するに越し
たことはない。そこで、例外処理部131の乱数発生ユ
ニット252により、コンテキストの保存の都度、乱数
Krを生成し、コンテキスト情報暗号/復号化ユニット
254に供給する。コンテキスト情報暗号/復号化ユニ
ット254は、乱数Krを用いて、共通鍵アルゴリズム
によりコンテキストを暗号化する。そして、乱数Krを
コード暗号化鍵Kcodeで同じく共通鍵アルゴリズムによ
り暗号化した値E[Kr]832として添付する。プロ
セッサの公開鍵KpによるKrの暗号化EKp[Kr]8
33は、公開鍵アルゴリズムによる。
【0103】ここで、乱数は、乱数発生機構252によ
って生成される。暗号化されているのがプログラムの場
合には、通常はプログラムコードには変化がなく、動作
の解析をしない限り、対応する平文のコードが不正に入
手されることはない。この場合、暗号を破るには「暗号
文単独攻撃」を行う必要があり、暗号化鍵の探索は非常
に困難である。ところが、ユーザによって入力されたデ
ータを暗号化してメモリに格納する場合には、ユーザが
入力データを自由に選択できる。このため、暗号化鍵に
対して「選択平文攻撃」という、「暗号文単独攻撃」と
比べてはるかに効率的な攻撃が可能となってしまう。選
択平文攻撃に対しては、保護されるべき平文に「salt
(塩)」と呼ばれる乱数を追加して探索空間を大きくす
るという対策が可能である。しかし、すべてのデータに
saltの乱数値を組み込んだ形でメモリに保存すること
を、アプリケーションプログラミングのレベルで実装す
るのは非常に繁雑であり、プログラミング効率と性能の
低下を招くことになる。
【0104】そこで、乱数発生機構253は、コンテキ
ストの保存の都度、それを暗号化するための乱数(暗号
化鍵)を発生する。暗号化鍵を任意に選択できることに
より、プロセス間、プロセス−デバイス間の安全な通信
を高速化できるという効果も生じる。メモリアクセス時
にハードウェアによってデータを暗号化する速度は、ソ
フトウェアによって暗号化する速度に比べて一般にはる
かに速いためである。これに反し、データ領域の暗号化
鍵の値が、予め決められた値、例えば実行コードの暗号
化鍵と同一のものに制限されていると、別の暗号化鍵で
暗号化された他のプログラムや、デバイスとの暗号化さ
れたデータの共有にプロセッサのデータ暗号化機能を使
うことができず、プロセッサに設けられたハードウェア
暗号化機能の高速性を生かすことができないからであ
る。
【0105】なお、署名834の生成および再開時に行
われる暗号化された乱数E[Kr]832の復号化は、マ
イクロプロセッサ101だけが行えるという条件を満た
していれば、どのようなアルゴリズムと秘密情報に基づ
いてもよい。上の例では、ともにマイクロプロセッサ1
01に固有の秘密鍵Ks(これはコード暗号化鍵Kcode
の復号にも用いられる)を使っているが、それぞれ別の
値を使ってもかまわない。
【0106】また、保存されたコンテキストには暗号化
の有無を示すフラグがあり、暗号化されたコンテキスト
情報と暗号化されないコンテキスト情報が用途に応じて
共存できる。TSSのサイズと暗号化の有無を示すフラ
グは平文で格納されているので、過去のプログラムとの
互換性を維持するのが容易である。
【0107】<中断されたプログラムの再開処理>コン
テキストを復帰させてプロセスを再開させる時、OSは
保存されたTSSを示すTSSデスクリプタへのジャン
プまたはcall命令を発行する。
【0108】図2のブロック図に戻ると、例外処理部1
31のコード暗号化鍵・署名検証ユニット257は、最
初に署名SKs[message]834をプロセッサの秘密鍵K
pを使って検証し、検証結果を例外処理ユニット255
に送る。検証結果が失敗である場合は、例外処理ユニッ
ト255はコンテキストの再開を中止し、例外を発生さ
せる。この検証により、コンテキスト情報が確かに秘密
鍵を持つ正当なマイクロプロセッサ101により生成さ
れたものであって、改竄を受けていないことが確認でき
る。
【0109】署名の検証に成功すると、コンテキスト情
報暗号/復号化ユニット254は、コンテキスト暗号化
鍵EKp[Kr]833を秘密鍵Ksで復号化して、乱数
Krを取り出す。取り出したKrによりコンテキストを
復号化する。一方、プログラムカウンタ(EIP)80
9に対応するコード復号化鍵Kcodeがページテーブルバ
ッファ230から取り出され、コート暗号化/復号化鍵
領域251に送られる。コンテキスト情報暗号/復号化
ユニット254は、コード復号化鍵KcodeでE Kcode[K
r]832を復号化し、その結果をコード暗号化鍵・署
名検証ユニット257に送る。コード暗号化鍵・署名検
証ユニット257は、EKcode[Kr]832の復号結果
が、マイクロプロセッサの秘密鍵Ksによる復号化結果
と一致するかどうかを検証する。この検証により、この
コンテキスト情報が秘密鍵Kcodeで暗号化されたコード
の実行により生成されたものであることが確認できる。
【0110】もしコンテキスト情報に対して、このコー
ド暗号化鍵に関する検証を行わない場合には、ユーザが
適当な秘密鍵Kaで暗号化したコードをつくり、それを
実行して得たコンテキスト情報を、別の秘密鍵Kbで暗
号化したコードに適用する攻撃が可能となってしまう。
上記の検証はこの攻撃を排除し、保護されたコードのコ
ンテキスト情報の安全性を保証している。
【0111】この目的は、コンテキスト情報に秘密のコ
ード暗号化鍵Kcodeを追加することによっても達成でき
るが、本発明では、コンテキスト情報を暗号化する秘密
の乱数Krを、プログラムベンダの選んだコード暗号鍵
Kcodeで暗号化した値EKcod e[Kr]を検証に使うこ
とで、コンテキスト情報の保存に必要なメモリの量を削
減し、コンテキスト切替の高速化とメモリの節約の効果
を達成している。これはまた、プログラム作成者へのコ
ンテキスト情報のフィードバックをも可能にする。
【0112】さて、コード暗号化鍵・署名検証ユニット
257により、コード暗号化鍵の検証と署名の検証に成
功すると、コンテキストがレジスタファイル253に復
帰され、プログラムカウンタの値も復帰されるので、制
御がコンテキストを生成した実行中断時のアドレスに戻
される。
【0113】いずれかの検証に失敗して、例外処理ユニ
ット255が例外を発生させた場合は、例外の発生アド
レスはジャンプまたはcall命令が発行されたアドレスを
示す。また、IDTテーブルの割り込み原因の領域にT
SSの不正を示す値が格納され、割り込み原因となるア
ドレスを格納するレジスタにジャンプ先のTSSのアド
レスが格納される。これにより、OSはコンテキスト切
替失敗の原因を知ることができる。なお、再開処理を高
速化するため、コンテキスト情報暗号/復号化ユニット
254により復号された実行状態のレジスタファイル2
53へ供給と、検証ユニット257による検証処理を並
行して行ない、検証に失敗した時は以降の処理をとりや
める構成としてもよい。
【0114】乱数を介したこの暗号化方式の安全性は、
使用する乱数系列の予測不可能性に依存するが、予測が
困難な乱数をハードウェアによって生成する方法は例え
ば、小野寺他による日本国特許番号第2980976号
に記載されている。
【0115】プログラムベンダによるコンテキスト情報
の解析は、ユーザの使用条件で発生したプログラムの不
具合の原因を解析し、プログラムの品質を向上させる上
で重要である。本実施例ではその点を鑑み、コンテキス
トの安全性とプログラムベンダによるコンテキスト情報
の解析可能性の両立させる方式を説明しているが、この
方式により、コンテキスト保存のオーバヘッドが増える
ことも事実である。
【0116】また、マイクロプロセッサの署名によるコ
ンテキスト情報の検証は、不正なコンテキスト情報で保
護されたコードを、任意に選んだ値と暗号化鍵の組み合
わせにより実行されることを防止しているが、この追加
もやはりオーバヘッドを増やしている。
【0117】プログラムベンダによるコード解析の必要
性や、不正なコンテキスト情報によるプログラム再開を
排除する機構が必要ない場合は、コードの暗号化鍵を特
定する情報を含むコンテキスト情報をプロセッサの持つ
秘密鍵で直接暗号化してもよい。これだけでコンテキス
トの意図的な改竄は暗号学的に不可能、かつ暗号化鍵の
異なるプログラムに、コンテキスト情報が適用されるこ
とを防ぐことができる。
【0118】ここで、コンテキスト保存の形式について
説明を追加しておく。動作との関係については後述す
る。
【0119】図8において、825−1に示すRビット
はコンテキストが再開可能かどうかを示すビットであ
る。このビットが1にセットされている場合、上記復帰
手順でコンテキストに保存された状態を復帰して実行を
再開できるが、値が0の場合には、再開することはでき
ない。これは、暗号化プログラムの実行中に不正が検出
されたコンテキストの再開を防ぐことで、再開可能なコ
ンテキストを正しい状態のものに限定できるという効果
を有する。
【0120】825−2に示すUビットはTSSがユー
ザTSSかシステムTSSかを示すフラグである。この
ビットが0の場合は保存されたTSSはシステムTSS
であり、このビットが1にセットされている場合は保存
されたTSSはユーザTSSである。上の例で説明した
例外エントリからの特権の変更を伴うタスク切り替え
や、タスクゲートの呼出しを通して保存、復帰されるT
SSはシステムTSSである。一方、特権の変更を伴わ
ないユーザによるサブルーチン呼出し命令、明示的なコ
ンテキスト保存命令の実行によって保存されるTSSは
ユーザTSSである。システムTSSとユーザTSSの
違いは、TSSの復帰時に現在実行中のプログラムのT
SS保存場所を示すタスクレジスタが更新されるかされ
ないかにある。システムTSSの復帰では、現在実行中
のプログラムのタスクレジスタが、新しく復帰されるT
SSの前回のタスクとのリンク領域801に保存され、
新しいTSSのセグメントセレクタがタスクレジスタに
読み込まれる。一方、ユーザTSSの復帰では、タスク
レジスタの値の更新は行われない。ユーザTSSはプロ
グラムのレジスタ状態の保存、復帰のみを目的としてお
り、特権モードの変更は伴わない。
【0121】<データ保護>次に、実行コードの演算処
理対象であるデータの保護について説明する。
【0122】第1実施形態では、データを保護するため
の暗号化属性は、マイクロプロセッサ101の内部に設
けられたCY0〜CY3の4つのレジスタに定義され
る。図7に示す領域717〜720がこれに該当する。
図7では、CY0〜CY2については詳細を省略し、C
Y3のみを詳細を示している。
【0123】暗号化属性の各要素を、CY3レジスタ7
17を例にとって説明する。暗号化される領域の先頭を
示す論理アドレスの上位ビットが、ベースアドレス71
7−1に指定される。領域のサイズはサイズ領域717
−4に指定される。サイズはキャッシュライン単位で指
定されるため、下位のビットには無効部分がある。デー
タの暗号化鍵は717−5に指定される。共通鍵アルゴ
リズムを使用しているので、復号化鍵にも717−5を
使用する。暗号化鍵の値に0が指定された時、そのレジ
スタが示す領域は暗号化されていないことを示す。領域
の指定はCY0が優先され、以下CY1〜CY3の順番
で優先される。例えばCY0とCY1の指定する領域が
重なった場合、その領域ではCY0の属性が優先され
る。また、処理対象のデータではなく、実行コードとし
てのメモリアクセスではページテーブルの定義が優先さ
れる。
【0124】717−4はデバッグビットであり、デバ
ッグ状態でのデータ操作を暗号化状態で行うか、平文状
態で行うかを選択する。デバッグビットについての詳細
は後述する。
【0125】図10は、実行コードの処理対象であるデ
ータの暗号化、復号化の流れを示す。ここでは、コード
が保護された状態、すなわち暗号化された状態で実行さ
れている時のみ、データの保護が行われる。ただし、後
述するデバッグ状態でコードが実行されている場合は除
外する。コードが保護されている時、暗号化属性レジス
タCY0〜3の内容は、図2に示すレジスタファイル2
53からデータTLB141内にあるデータ暗号化キー
テーブル236に読み込まれている。
【0126】ある命令が論理アドレスAddrにデータを書
き込む時、データTLB141は、論理アドレスAddrが
CY0〜3の範囲に含まれているかどうかを、データ暗
号化キーテーブル236(図2参照)を調べることによ
り判断する。判断の結果、暗号化属性が指定されていれ
ば、データTLB141は、L1データキャッシュ11
4からメモリへの対応キャッシュラインのメモリ書き出
しの際に、メモリ内容を指定された暗号化鍵で暗号化す
るように、データ暗号化ユニット220に指示する。
【0127】読み込みの場合も同様に、対象アドレスが
暗号化属性を持っていれば、対応するL1データキャッ
シュ218のキャッシュラインの読み込みの際に、デー
タ復号化ユニット219に対して、指定された暗号化鍵
で復号化するように指示する。
【0128】第1実施形態では、データ暗号化のための
データ暗号化属性をすべて、マイクロプロセッサ101
内部のレジスタに置き、実行の中断時にレジスタの内容
をコンテキスト情報として安全な形でマイクロプロセッ
サ外部のメモリ(たとえば図2のメインメモリ281)
に保存することにより、データ暗号化属性を、OSの特
権も含めた不正な書き換えから保護している。
【0129】データの暗号化、復号化は、コンテキスト
の暗号化と関連して先に説明したインタリーブを受けた
キャッシュライン単位で行われる。このため、L1キャ
ッシュ114上のデータを1ビット書き換えただけで
も、メモリ上ではキャッシュライン内の他のビットが書
き換えられることになる。データの読み書きの実行はキ
ャッシュライン単位でまとめて行われるため、オーバヘ
ッドの増大はさほど大きくはないが、暗号化されたメモ
リ領域に対する読み書きは、キャッシュラインサイズ以
下の単位では行えないことに注意が必要である。
【0130】<エントリゲート>本発明では、保護され
ていないコードから、保護されたコードに制御が移行で
きるのは、次の2つの場合に限られる。
【0131】(1)再開アドレスと一致するコード暗号
化鍵で暗号化された(乱数を持つ)コンテキストが再開
される場合; (2)連続したコードの実行またはjump,call命令など
により、保護されないコードから、保護されたコードの
エントリゲート命令(EGATE命令)に制御が移る場
合。
【0132】この限定は、攻撃者がコードを任意の場所
から実行することによって、コード断片の情報を得るこ
とを防ぐためのものである。(1)の手順については、
コンテキストの復帰と関連してすでに説明した。すなわ
ち、中断前に実行していたコードのコード暗号化鍵と一
致するコンテキスト情報が含まれていること、およびマ
イクロプロセッサ101が与えた正しい署名が付加され
ていることが検証された場合に、保護されたコードの実
行制御に移る。
【0133】(2)の手法は、保護されないコードから
保護されたコードへと制御を移す場合には、制御の最初
にエントリゲート(egate)命令と呼ぶ特殊な命令を実
行しなければ、保護コートの実行に移行できないとする
処理である。
【0134】図9は、エントリゲート命令に基づく保護
ドメインの切り替え手順を示す。マイクロプロセッサ1
01は、例外処理部131のカレントコード暗号化鍵記
憶手段251(図2参照)に、現在実行中のコードの暗
号化鍵を保持している。まず、ステップ601で、命令
の実行にともなってこの鍵の値が変更されたかどうかを
判断する。鍵の値の変更が検出された場合(ステップ6
01でNO)、ステップ602に進み、変更に伴って実
行されている命令がエントリゲート(egate)命令である
かどうかを調べる。エントリゲート命令であるというこ
とは、それが適正な命令であり、変更されたコードに制
御を移行してもかまわないことを意味する。したがっ
て、ステップ602でエントリゲート命令であると判定
された場合は(ステップ602でYES)、その命令を
実行する。
【0135】ステップ602でエントリゲート命令でな
いと判断された場合は(ステップ602でNO)、割り
込まれた命令が不適正な命令であることを意味する。こ
の場合、ステップ603に進み、直前に実行されていた
命令が暗号化(保護)されたものかどうかを判断する。
保護されていない命令であれば、そのまま例外処理を発
生させることができるが、保護されている命令である場
合、一応その命令の保護を守りつつ例外処理しなければ
ならないからである。
【0136】したがって、ステップ603で保護されて
いない命令であると判断された場合は(ステップ603
でNO)、そのまま例外処理を行い、保護された命令で
あると判断された場合には(ステップ604でYE
S)、保護状態を守ったまま、例外処理を発生させる。
【0137】このような制御移行の制限により、平文コ
ードから、エントリゲート命令がおかれた場所以外のコ
ードへ、直接制御を移すことが禁止される。コンテキス
トを復帰させるということは、すでにそのプログラムが
エントリゲートを通じて一度実行された状態を復帰させ
ることである。したがって、保護されたプログラムを実
行するには、必ずエントリゲートを通らなければならな
いことになる。プログラム中でエントリゲートを置く場
所を最低限に押さえることにより、さまざまなアドレス
からプログラムを実行してプログラムの構造を推定する
攻撃を防ぐ効果がある。
【0138】さらに、このエントリゲートでは、データ
の保護属性レジスタの初期化を行なう。エントリゲート
を実行すると、図7に示す保護レジスタCY0〜CY3
(717〜720)の鍵領域(CY3では領域717−
5)に、乱数Krがロードされる。暗号化対象先頭アド
レスを0、サイズをメモリの上限までに設定し、論理ア
ドレス空間のすべてを暗号化対象に設定する。実行コー
ドにデバッグ属性が設定されていなければ、デバッグビ
ット(CY3では717−3)は非デバッグとする。
【0139】つまり、暗号化コードの実行開始時点で
は、すべてのメモリアクセスはエントリゲート実行時に
決定された乱数Krで暗号化されることになる。また、
前述の通り実行コードの暗号化制御はページテーブルの
定義が優先される。この乱数Krはコンテキストの暗号
化に使われる乱数とは独立に生成される。
【0140】この機構により、新たに実行される保護さ
れたプログラムは、必ず全てのメモリアクセス開始時に
ランダムに決定された鍵によって暗号化される設定とな
る。
【0141】もちろんこのままではメモリ領域の全体が
暗号化されたままなので、メモリを通じてシステムコー
ルのパラメータを渡したり、他のプログラムとのデータ
交換をすることができない。そこで、プログラムは順次
必要なメモリ領域を平文としてアクセスできるように保
護属性レジスタを設定して、自身の処理環境を整え処理
を進める。優先度の低いレジスタCY3は最初の乱数で
暗号化される設定のままとしておき、その他のレジスタ
に平文アクセスの設定として暗号化鍵0を設定すれば、
必要以外の領域を平文としてアクセスし、暗号化して秘
密にするべきデータを誤って平文の領域に書き出してし
まう危険を少なくすることができる。
【0142】保護属性レジスタ以外のレジスタの内容
は、エントリゲートにおける初期化でも暗号化せずに、
スタックやパラメータの場所を指定するためのポインタ
を格納しておくことができる。ただし、レジスタに不正
な値を設定してエントリゲートを呼び出すことにより、
プログラムの秘密が盗まれることがないよう、エントリ
ゲートを通して実行されるプログラムの処理には注意を
払う必要がある。
【0143】プログラミング的には制約され、効率が悪
くなるが、安全性を重視すればエントリゲートでは保護
属性レジスタ以外の汎用レジスタも含めて、フラグ、プ
ログラムカウンタ以外のすべてのレジスタを初期化する
構成としてもよい。この場合でもスタックなどのパラメ
ータはプログラムカウンタの相対アドレス、または絶対
アドレスで指定したメモリ領域を通じて受け渡すことが
可能である。ただし、ここでもコンテキスト保存の場合
と同様、OSの動作の継続のため、レジスタの暗号化ま
たは初期化の対象から、フラグレジスタの一部タスクレ
ジスタを含むシステムレジスタは除外する。
【0144】このように、第1実施形態にかかるマイク
ロプロセッサ101では、平文状態のプログラムから、
保護されたプログラムへと制御が移る際に、最初に実行
する命令をエントリゲート命令に制限し、エントリゲー
ト命令の実行によってデータ暗号化属性レジスタを含む
レジスタを初期化することで、保護された実行コードの
断片的な実行を防ぎ、特にデータ保護状態の不正な設定
を防いでいる。
【0145】次に保護されたプログラムの実行制御につ
いて説明する。始めに保護ドメイン内に閉じた呼び出し
および分岐について説明する。保護ドメイン内の呼び出
しは通常のプログラムと全く同一である。図11に、保
護ドメイン内の呼び出しおよび分岐の概念を示す。
【0146】保護ドメインのコード1101の実行は、
保護ドメイン外のスレッド1121が、保護ドメインの
egate(エントリゲート)命令へと分岐することにより
開始される。egate命令の実行によってすべてのレジス
タが初期化され、その後、プログラムの実行によって順
次データ保護属性が設定される。jmp xxx命令により、
保護ドメイン内の分岐先xxx1111に制御が移り(処
理1322)、アドレスppp1112にあるcall yyy命
令が実行される(処理1123)。スタックメモリ11
02に呼び出し元のアドレスppp1112がプッシュさ
れ、呼出先yyy1113へと制御が移る。呼び出し先で
の処理が完了して、ret命令が実行されると、スタック
の戻り番地ppp1112へと制御が移る。実行コードの
暗号化鍵が同一である間は実行制御に制限はない。
【0147】次に保護ドメインから非保護ドメインへの
呼び出しおよび分岐について説明する。この制御の移行
には、保護ドメインから非保護ドメインへのプログラム
作成者の意図しない移行を避けるためと、データ保護状
態を保護するために、特殊な命令の実行および以下に説
明するユーザTSSの操作を行う。
【0148】図12は、保護ドメインから非保護ドメイ
ンへの呼び出しおよび分岐動作の概念図である。それぞ
れのドメインに、保護ドメインの実行コード1201
と、非保護ドメインの実行コード1202が置かれてい
る。また、ユーザTSS領域1203と、非保護ドメイ
ンとのパラメータ受渡し領域1204が設けられてい
る。
【0149】実行は、スレッド1221がegate命令を
実行することに始まる。保護ドメインのプログラムは、
非保護ドメインのコードを呼び出す前に、予め定められ
たパラメータ領域1204にユーザTSS領域1203
のアドレスを保存しておく。そしてecall命令を実行し
て非保護ドメインのコードが呼び出される。ecall命令
は2つのオペランドをとる。一つは呼出先のアドレスで
あり、もう一つは実行状態の保存先である。ecall命令
は、呼出時のレジスタ状態(正確にはプログラムカウン
タはecall発行後の状態)をオペランドuTSSで指定
した領域に、これまでに説明した暗号化TSSと同じ形
式で保存する。以下、この領域をユーザTSSと呼ぶ。
【0150】ユーザTSSとシステムTSSとの違い
は、図8に示すユーザレジスタにおいて、TSS上の領
域825−2にUフラグがセットされていることであ
る。動作の違いについては、後述する。ユーザTSSの
メモリへの保存においても、システムTSSへのコンテ
キスト情報の保存と同様、ユーザが保護レジスタCY0
〜CY3に定義したデータ保護属性は適用されない。
【0151】呼出先の非保護ドメインのコードでは、ec
all命令の実行によりレジスタは初期化されているの
で、パラメータの受渡しができない。このため、予め定
められたアドレスparam1204からパラメータを取得
し、必要な処理を行なう。非保護ドメインの中ではプロ
グラミングに制限はない。図12の例では、サブルーチ
ンqqq1213を呼び出している(矢印で示す処理1
425)。例えばexxからqqqの呼出しまでの間に、スタ
ックポインタの設定やパラメータのスタックへの複写を
行うアダプタコードをおくことにより、サブルーチンqq
qが有する呼び出しセマンティクスに、保護ドメインか
らの呼び出しを適応させることができる。処理結果は、
メモリ上のパラメータ領域1204を通じて、呼出元へ
送られる(処理1226)。サブルーチンの処理が完了
すると、呼出元の保護ドメインへ制御を戻すため、sret
命令が発行される(1227)。
【0152】sret命令も、オペランドを持たないret命
令とは異なり、ユーザTSSを指定するオペランドを一
つとる。ここではパラメータ領域param1204に格納
されたポインタを通じて、間接的にユーザTSS120
3を復帰情報として指定している。sret命令によるユー
ザTSSの復帰が、システムTSSの復帰と大きく異な
る点は、ユーザTSSを復帰してもタスクレジスタは全
く影響を受けない点である。ユーザTSSのタスクリン
クのフィールドは無視される。sret命令のオペランドに
825−2Uフラグが0のシステムTSSが指定された
場合は、復帰は失敗する。
【0153】復帰の実行の際には、すでに説明した実行
状態の復号化およびコード暗号化鍵と署名の検証が行な
われ、違反が検出された場合、秘密保護違反の例外が発
生する。検証に成功すると、呼出元のecall命令の次の
命令から実行が再開される。このアドレスはユーザTS
Sの中で暗号化され署名されているので、偽造すること
は暗号学的に不可能である。プログラムカウンタを除く
すべてのレジスタ呼出前の状態に戻されてしまうので、
保護ドメインのコードは、サブルーチンexxの実行結果
をパラメータ領域1204から取得する。
【0154】保護ドメインの処理が完了して制御を非保
護ドメインに移す時は、ejmp命令が使われる。ejmp命令
はecallとは異なり、状態の保存は行なわない。もしeca
ll,ejmp以外のjmp,call命令によって保護ドメインか
ら非保護ドメインへと制御が移された場合、秘密保護違
反の例外が発生して、暗号化されたコンテキスト情報が
システムのTSS領域(タスクレジスタが示す領域)に
保存される。なお、このときコンテキスト情報は再開不
可にマークされる。なお、保護ドメイン内のアドレスを
ejmp命令の飛び先として指定しても違反とはならない。
【0155】以上が保護ドメインから非保護ドメインの
呼び出し手順とそれに使用される新たに追加された命令
である。
【0156】アプリケーションによるユーザTSSの復
帰の際に、特権を持つOSがユーザTSSをすりかえる
攻撃の可能がないわけではない。しかし、そこで交換可
能なTSS情報は、保護ドメインのコードの暗号化鍵が
正しく管理されている限りは、必ずegateを通って実行
を開始され、割り込みまたはユーザによる明示的な実行
状態の保存によって保存されたコンテキスト情報だけで
ある。このコンテキスト情報の入れ換えによって、アプ
リケーションの秘密が洩れる可能性は極めて小さく、か
つ、攻撃者にとっては、どのようなコンテキスト情報の
入れ替えを行なえばアプリケーションの秘密を取得でき
るかを予測するのは極めて困難である。
【0157】上述した保護ドメインから非保護ドメイン
の呼び出し手順は、呼出先で最初に実行される命令が被
呼出し側のegate命令ならば、保護ドメインの間で制御
を移す手順に適用することも可能である。
【0158】この時、両者の間のパラメータの受渡し領
域を、予め両者の間で認証鍵交換を行なうことで共有し
た暗号化鍵によって暗号化しておけば、保護ドメインの
間の呼出を安全に行なうことができる。
【0159】<スレッド間の制御>次に保護されたプロ
グラムの実行と、その同一プログラムの制御下における
スレッドとの関係、および、そこに生ずる問題と解決手
段について説明する。
【0160】上記では、暗号化された(保護された)プ
ログラム内部での実行制御自体は、通常のプログラムと
全く変わらないことを説明した。このことは、ユーザプ
ログラムのレベルで、スレッドの切替を行なうユーザス
レッドについても当てはまることであり、ユーザスレッ
ドでは特にプログラムが保護されていることを意識する
必要はない。問題は、カーネルレベルで実現されるスレ
ッドが複数存在する時に、どのようにデータの保護情報
を共有するかである。
【0161】始めに、ユーザスレッドとカーネルスレッ
ドについて簡単に説明する。ユーザスレッドとは、OS
による介入なしに、ユーザプログラムすなわちアプリケ
ーション内部で仮想的に複数のスレッドを並列実行する
ことである。それぞれのスレッドは、独立したスタック
とプログラムカウンタ値を持つ。一方、カーネルスレッ
ドは、スレッドの切替をOSに依存するスレッド実装で
ある。機能的な相違としては、ユーザスレッドでは、あ
るスレッドが自発的にスレッド切替えをするコードを呼
び出さない限り、スレッド切替えは発生しないが、カー
ネルスレッドでは、割り当てた実行時間を超過したスレ
ッドの実行は強制的に停止される。詳細は前述した文献
「UNIXカーネル」を参照されたい。
【0162】内部機構的には、カーネルスレッドではコ
ンテキスト情報がOSに処理され、スレッドの切替が行
なわれる。一方、ユーザスレッドではアプリケーション
がスレッド切替のコードを持ち、そこでレジスタのコン
テキスト保存領域への保存が行なわれる。この動作を行
なうのはアプリケーション自身なので、コードが保護さ
れていても全く問題なくスレッド切替の動作が可能であ
り、かつそれぞれのスレッドはデータ保護状態も共有す
ることができる。唯一注意すべき点は、スレッドコンテ
キストを保存する領域を暗号化していない場合、スレッ
ドコンテキストをOSや他のアプリケーションに読みと
られたり、改竄されるおそれがあることである。スレッ
ドコンテキスト情報は暗号化された領域に保存して、他
のプログラムによる読みとりや意図的な改竄を防止する
ことが望ましい。
【0163】カーネルスレッドにおいては、スレッドの
切替えはOSによって行なわれる。例えばあるスレッド
処理がタイマ割り込みによって中断されたとき、そのス
レッドが割り当てられた処理時間を使い尽くしている場
合には、OSのスケジューリング機能が他のスレッドを
実行することで、リアルタイム処理における応答性も高
められるなどの利点がある。また、複数のカーネルスレ
ッドが動作する機能を備えないOSも、従来のUNIX
などのOSには存在するが、ほとんどすべてのUNIX
実装が備える非同期的なシグナル配送機能は、コンテキ
スト切替の観点から、プロセスのメインのスレッドと独
立に実行されるカーネルスレッドの一種と考えてよい。
カーネルスレッドのサポートはほとんどのOSの実装に
必要な機能である。
【0164】ところが、保護されたコードに、現在のカ
ーネルスレッドの実装を適用しようとすると問題が生じ
る。本発明のマイクロプロセッサでは、保存されたコン
テキスト情報は暗号化により保護されており、安全性の
観点から、その一部を読み出す手段は備えていない。し
たがって、従来の方法では、別々に起動されたカーネル
スレッドがデータ保護状態を共有することはできない。
カーネルスレッドはそれぞれが別々のTSSを持つが、
コンテキスト情報を単純に別のTSS領域にコピーした
としても、スタック領域も含めてすべて同一となってし
まうため、それらは別々のスレッドとして独立に動作す
ることはできなくなる。
【0165】そこで、本発明では、本発明のプロセッサ
に、プログラムによる、ある特定の時点でのコンテキス
ト情報の保存命令と、以下の手順によってカーネルスレ
ッド間のデータ保護情報とを共有させ、カーネルレベル
のマルチスレッド機能を可能にしている。
【0166】図14は、データ保護属性の共有に使われ
るスレッドテーブルを示す。スレッドIDは、そのカー
ネルスレッドのタスクレジスタの値である。スレッドI
D0は初期化のために特殊な役割を持つ。ユーザTSS
は、そのスレッドが保護ドメイン外のサブルーチンを呼
ぶ場合などに、状態を保存するためのユーザTSS領域
へのポインタを格納する。パラメータは、OSからそれ
ぞれのスレッドへのパラメータ渡しや、逆にスレッドか
ら保護ドメイン外のサブルーチンを呼び出す際、パラメ
ータの渡しに使われる。作業中フラグはテーブルおよび
TSS0の書き替えの排他制御に使われる。
【0167】図13は、同一プログラム下でのデータ保
護属性共有の手順を示すフローチャートである。OSは
保護ドメインを最初に実行するメインのスレッドの実行
前に、図14に示すスレッドテーブルを初期化する。初
期化はスレッドID0のユーザTSSフィールドに値0
を書き込み、メインのスレッドTSS1のパラメータフ
ィールドに、メインのスレッドの実行に必要なパラメー
タ、例えば引数などが格納されたパラメータブロックへ
のポインタを書き込むことによって行われる。
【0168】ステップ1301で、カーネルスレッドは
最初にegateを実行して保護ドメインのコードの実行を
開始する。このとき、システムレジスタ以外のレジスタ
はすべて初期化される。次に、ステップ1302で、コ
ード中に予め埋め込まれたスレッドテーブルのアドレス
からスレッドテーブルを読みとり、初期化用のスレッド
ID0に対応するユーザTSSフィールドの値を見るこ
とによって、そのユーザTSSフィールドで初期化が開
始されているかどうかを判断する。ユーザTSSフィー
ルドの値が0であれば、まだ初期化されていない状態で
ある。この場合、スレッドテーブルが未初期化であると
判断して(ステップ1302でNO)、ステップ130
3に進む。
【0169】ステップ1303で、スレッドID0の作
業中フラグのフィールドに1を書き込み、初期化が開始
されたことを示してから、データ暗号化属性を初期化す
る。データ暗号化属性の初期化は、実行される保護され
たアプリケーションに依存する。ここではプログラムの
ロード時に確保されている固定アドレスの領域に、予め
プログラムで決められた暗号化鍵を設定してもよいし、
動的にメモリを確保して乱数による暗号化鍵を設定して
もよい。データ暗号化属性の設定が完了すると、ステッ
プ1304に進み、たとえばスレッド1(タスクレジス
タがシステムTSS1を示している)の実行状態を、ユ
ーザTSSを保存する命令であるstctx命令により、u
TSS0の領域に保存する。stctx命令で保存されるT
SSは、図8に示す825−2領域のUフラグが1にセ
ットされたユーザTSSとなる。stctxの次の命令がu
TSS0の再開時に最初に実行される命令となる。この
ユーザTSSの保存、復帰は、スレッドを識別するタス
クレジスタにはいっさい影響しない(タスクレジスタ
は、割り込みによって中断されたスレッドに対応するシ
ステムTSSが保存される場所を示す。)。
【0170】次にステップ1308に進み、テーブルに
セットしておいた作業中フラグをクリアし、同一プログ
ラムにおける他のスレッド(たとえばスレッド2)の実
行を再開させる。再開処理については、後述する。次に
ステップ1309で、ltr命令によってタスクレジスタ
を読み出し、スレッドIDを特定する。そして、ステッ
プ1310で、スレッドテーブルのパラメータに指定さ
れた本来の処理を開始する。
【0171】同一プログラムの下で、割り込みなどによ
り、他のスレッド2(タスクレジスタがシステムTTS
2を示している)がこの保護ドメインのコードを実行す
る場合も、スレッドテーブルを初期化して、egate命令
を実行するまでは同じである。2番目以降のスレッド
は、すでに最初のスレッドによって初期化が行われてい
るので、テーブルのスレッドID0に対応するユーザT
SSが1にセットされている。したがって、ステップ1
302で初期化済みと判断される(1302でYE
S)。ステップ1305で、スレッドテーブルが作業中
にマークされているかどうかを判断する。作業中であれ
ば(1305でYES)、スレッド2は休眠して(ステ
ップ1306)、ステップ1305を繰り返し、テーブ
ルに対する作業の完了により実行が再開されるのを待
つ。
【0172】ステップ1305でテーブルが作業中でな
ければ(1305でNO)、スレッドID0に対応する
ユーザTSS0を復帰し、uTSS0の保存直後の状態
(ステップ1508)に制御が移る。このとき、uTS
S0に保存されたデータ保護状態が復帰される。しか
し、このままでは、これからスレッド1を実行するのか
スレッド2を実行するのか区別がつかない。そこで、ス
テップ1309でタスクレジスタを読み出し、自分のス
レッドのスレッドIDを特定して、パラメータを読み出
し、ステップ1310で、必要な処理(例えばシグナル
ハンドラ)の実行を行なう。uTSSの復帰ではタスク
レジスタは更新されないので、スレッドは自己のスレッ
ドIDを正しく取得できる。
【0173】一度実行を開始してデータ保護属性を共有
したスレッドが、データ暗号化属性を変更する場合に
は、TSS1のスレッドを例にとれば、スレッドID
TSS1に対応するテーブルのパラメータフィールドに
必要な情報が含まれたパラメータブロックを書き込み、
uTSS1をユーザTSSとして指定して上述のecall
命令を発行してからステップ1503へ制御を移す。T
SS1の作業中フィールドに作業中フラグを書き込み、
他のスレッドに対して休眠を要求し、他のスレッドが休
眠状態になるとデータ暗号化属性の変更を開始し、デー
タ暗号化属性の更新が完了すると、uTSS1へと制御
を戻す。
【0174】(第2実施形態)第1実施形態では、デー
タの暗号化鍵などのデータ暗号化属性を全てマイクロプ
ロセッサ内部のレジスタファイル253に格納してい
た。この方法では、暗号化属性の種類が保護属性レジス
タの数を越えて増えると、保護属性レジスタの入れ替え
を余儀なくされ、プログラミングが繁雑になるとともに
処理性能の低下につながる。一方、保護属性レジスタの
数を増やすとコンテキスト切替の際にメモリに保存する
データの量が増え、やはり処理性能が低下してしまう。
プロセス間通信の暗号化を、マイクロプロセッサの暗号
化機能によって行う応用を考えれば、通信相手のプロセ
ス毎に別の暗号化鍵を使うのが普通なので、暗号化属性
の種類が多くなることは容易に想像できるので、それに
対する対策が必要となる。
【0175】このような場合、一般に情報を直接マイク
ロプロセッサ内のレジスタに保持するのではなく、外部
のメモリ(たとえばメインメモリ281)上のテーブル
に書き込んでおき、必要な部分だけを動的にプロセッサ
内部に読み込む手法が知られている。しかし、秘密を守
るという観点からは、この方法は危険である。なぜな
ら、メモリ上のテーブルが攻撃者によって別のデータ
(たとえば解読可能な鍵)が格納されたテーブルにすり
かえられてしまうおそれがあるからである。
【0176】そこで、本発明の第2実施形態では、秘密
保護に必要な情報の中で、動的に読み込まれる部分ごと
に、あらかじめマイクロプロセッサによる署名を付加し
ておく。そして、この部分が外部のメモリテーブルから
マイクロプロセッサ内部に読み込まれる時に、署名を検
証する。この方式により、毎回のコンテキスト切替の際
のオーバヘッドを減少させると同時に、すり替えに対す
る安全性を保証している。
【0177】図15は、本発明の第2実施形態にかかる
マイクロプロセッサのレジスタファイル253の構成を
示す。第2実施形態のマイクロプロセッサは、内部レジ
スタに、各プログラムから参照されるデータのための暗
号化属性をあらかじめ格納する4個の暗号化属性レジス
タCY0〜CY3と、暗号化属性を特定するための情報
を格納する60ワードのCT0〜CT59を有する。C
Y0〜CY3は、それぞれが10ワード、CT0〜CT
59は、それぞれ4ワードの大きさを持つ。
【0178】CY0〜CY3はレジスタに暗号鍵フィー
ルドを持っているが、CT0〜CT59は暗号化鍵フィ
ールドを持たず、代わりに鍵へのオフセットアドレスを
持っている。CT59のオフセットアドレスは1521
−4で示されている。オフセットは鍵格納領域の先頭か
らアドレスを示し、鍵格納領域の先頭は暗号化属性レジ
スタCY0で定義される。
【0179】暗号化属性情報特定レジスタCT59の開
始アドレス1521−1は暗号化対象領域の先頭を指定
し、サイズ1521−5はその長さを指定する。キーオ
フセット1521−6は、CY0で指定された鍵格納領
域の先頭からの鍵へのオフセットを示し、そのアドレス
は鍵の値とハッシュからなる鍵エントリが格納される。
Eフラグ1521−4は、そのレジスタが有効かどうか
を示し、Dフラグ1521−3はデバッグ状態かどうか
を示している。暗号化アルゴリズムと鍵の長さを指定す
るフィールドはそれぞれ1021−2、1021−7で
ある。このレジスタはSalt1021−8を有する。
Saltについては、後述する。
【0180】図16は、マイクロプロセッサ内部のCY
0レジスタおよび暗号化属性情報特定レジスタCT0
と、これらのレジスタで定義される外部メモリ上の鍵格
納領域の関係を示した図である。暗号化属性レジスタC
Y0によって定義されるメモリ上の鍵格納領域1601
には、各キーエントリ(鍵エントリ)1602、160
3、…がある。各キーエントリは、鍵の値を示すフィー
ルド1202−1、1203−1と、この鍵値およびそ
の他の情報についての書名1202−2、1203−2
を有する。
【0181】暗号化属性レジスタCY0〜CY3の初期
化時には、暗号化属性情報特定レジスタCT0〜CT5
9の全てのレジスタの有効フィールド1521−4(図
15)がクリアされ、これらのレジスタで指定された暗
号化機能が無効となっている。一方、CY0〜CY3は
有効で、論理アドレス空間のすべてを、初期化時に選択
した乱数で暗号化するよう設定されている。
【0182】CT0〜CT59の暗号化機能を使う場合
は、まず論理アドレス上の鍵の格納領域とその領域のた
めのマスターキーを選択し、それをCY0に設定して、
CY0レジスタの暗号化機能を有効とする。マスターキ
ーはマイクロプロセッサの例外処理部131の乱数生成
機構252によって生成されたものでも、予めプログラ
ムに埋め込まれた固定鍵でもよい。
【0183】次に、外部メモリ上の鍵格納領域1601
において、レジスタCT0で使う鍵の格納場所(鍵エン
トリ)1603を、暗号化属性レジスタCY0に設定し
たアドレス領域の中で決定して、CT0レジスタのオフ
セットフィールド1580−6(図15)に書き込む。
また、暗号化アルゴリズムと鍵の長さを選択して158
0−2,1580−7に書き込む。
【0184】そして、鍵の値を選択して、鍵値のフィー
ルド1603−1に書き込む。必要に応じてSalt1
521−8に乱数を書き込んでから、有効ビットE15
21−4を1に設定する。
【0185】マイクロプロセッサは、保護テーブル管理
ユニット233(図2参照)を有する。保護テーブル管
理ユニット233は、予め定められたアルゴリズムによ
って、定められた署名の計算対象について、マイクロプ
ロセッサの秘密鍵Ksに基づく署名を計算する。署名し
た値を、鍵の値(キーバリュー)に続く署名領域160
3−2に書き込む。このとき、保護テーブル管理ユニッ
ト233は、鍵と署名の格納領域1603がCY0の範
囲に入っているかどうか、およびCY0の暗号化機能は
有効かどうかを確認する。鍵領域1603がCY0の範
囲外である場合、あるいはCY0の暗号化鍵が0に設定
されていて暗号化機能が有効でない場合には、後述する
ように、マイクロプロセッサの例外処理ユニット255
が秘密鍵保護例外を発生させる。CT0〜CT59の安
全性はCY0の安全性に依存するので、CY0の暗号化
鍵は単に乱数を選ぶだけでなく、使用する暗号化アルゴ
リズムについて安全なことを確認することが望ましい。
【0186】署名の計算対象には、暗号化鍵の値160
3−1、CT0レジスタ1580の内容、および暗号化
鍵の論理アドレスが含まれる。CT0レジスタ1580
にはSaltが含まれているので、適切な頻度でSal
tの値を変更すれば、攻撃者が過去に使われた暗号化さ
れた鍵エントリを再利用して、鍵エントリをすりかえる
ことは、たとえCY0のその他のフィールドの値が同一
であったとしてもきわめて困難である。もちろん、全く
属性値の異なる鍵エントリを利用した場合の、鍵エント
リのすり替えは暗号学的に不可能である。
【0187】データの読み込みの際には、論理アドレス
と、暗号化属性レジスタCY0〜CY3および暗号化属
性情報特定レジスタCT0〜CT59を比較し、暗号化
属性を決定する。読み込み対象の論理アドレスがCT0
で指定された領域ならば、オフセットの示す暗号化鍵を
鍵キャッシュに読み込む。コード暗号化鍵・署名検証ユ
ニット257は、読み込まれた鍵の値と、CT0の内容
と、鍵のアドレスとから、マイクロプロセッサの公開鍵
Kpによって署名を検証する。検証の結果がエラーであ
れば、秘密保護例外を発生して処理を停止する。検証の
結果が正しければ、データTLB141の復号化ユニッ
ト237において、取り出された鍵でデータを復号化
し、復号化されたデータがデータキャッシュ218に読
み込まれる。
【0188】<再開不能ビット>検証に失敗して秘密保
護例外が発生した場合、コンテキストの再開可能ビット
が0にクリアされて、以後そのコンテキストの再開は不
可能となる。このような違反が発生するのは、何らかの
攻撃者によって、秘密保護のためのデータが破壊されて
いる可能性が高いため、これに続く実行を禁止して、秘
密情報の流出を防いでいる。
【0189】なお、ここでは暗号化属性レジスタCY0
〜CY2に、暗号化対象領域の論理アドレスの先頭とサ
イズを設定する場合を例にとったが、この他にもページ
テーブルや、セグメントディスクリプタのようなテーブ
ル形式を利用したメモリ暗号化属性の管理方式が考えら
れる。これらの方式にも本発明が適用されることは言う
までもない。
【0190】第2実施形態においては、データの暗号化
属性の決定には必要のない、サイズの大きな鍵情報をプ
ロセッサ外部のテーブルに格納して、プロセッサ内部の
コンテキスト情報のサイズを低減すると同時に、外部の
テーブルに格納される鍵情報の一つ一つにハッシュを付
加し、読み込み時に検証することで、プロセッサ外部に
格納される情報のすりかえによる攻撃を防止している。
【0191】ここで、署名は、マイクロプロセッサの暗
号化属性情報特定レジスタの値を含むデータから生成さ
れているため、暗号化属性情報特定レジスタが有するS
altの値を変えることにより、過去にプロセッサ外部
のメモリに書き込んだ鍵エントリを無効化して、過去に
使われた鍵エントリの流用を防止することができる。こ
のような署名方法を使用せずに、たとえば、アドレス範
囲属性と鍵の値だけから署名を生成するならば、アドレ
ス範囲さえ一致すれば過去に使われた鍵エントリを外部
のメモリ上ですりかえる攻撃が可能となってしまう。そ
の一方で、もし署名生成の対象に汎用レジスタが含まれ
ていれば、汎用レジスタの値が変わる都度、署名を生成
しなおさなければならなず、性能の低下を招く。
【0192】本発明では、暗号化属性情報特定レジスタ
の属性値と、Salt値さえ書き換えなければ、署名を
再計算する必要はない。実際の使用では、暗号化属性情
報特定レジスタの設定頻度はそれほど高くないと考えら
れるので、性能の低下を押さえつつ、鍵の値のすりかえ
を防止することができる。
【0193】第2実施形態にかかるマイクロプロセッサ
においては、すべての暗号化属性をマイクロプロセッサ
のレジスタ上に格納する場合と比較して、コンテキスト
情報が著しく小さくなり、コンテキスト切替の際の暗号
化や署名に必要な計算量や、コンテキストを保存するた
めのメモリトラフィックを減少させて、プロセッサの性
能を向上させることができるのである。
【0194】署名をメモリ側でなく、レジスタの側にお
いても同様にすり替えを防ぐことができるが、一般に非
対称鍵方式を使った安全な署名には、大きなデータ長を
必要とするので、レジスタの側にSalt値を置き、メモリ
上に署名を置く方がコンテキスト情報を小さくする効果
が大きい。
【0195】本発明では、暗号化エントリを有効にする
際に、対応するメモリ上の鍵格納領域1601が暗号化
されていること(すなわちエントリに有効な鍵があるこ
と)を検証するので、暗号化鍵の保護をさらに確実にし
ている。
【0196】<ページテーブル形式>また、データ保護
のテーブル形式を、仮想記憶の管理に使われるページテ
ーブルと同様のアドレス単位ごとに階層化された形式と
し、各々のエントリ毎に署名を付加したものにすること
も可能である。ページテーブル形式は理論的にはページ
毎に異なる暗号化属性を与えることができる。さらに、
マイクロプロセッサ内部に保持するデータは、ページテ
ーブルの先頭アドレスとSaltだけでよく、コンテキ
スト情報の量を小さくすることができるという効果があ
る。
【0197】混乱を避けるため以下、マイクロプロセッ
サ内部でデータ暗号化に使われるテーブルを、暗号化定
義ページテーブルと呼ぶことにする。暗号化定義ページ
テーブルは、外部メモリの仮想記憶ページテーブルとは
異なり、ユーザプログラムの論理メモリ空間上に置かれ
る。
【0198】また、暗号化定義ページテーブルの各エン
トリに付与する署名が、単純にプロセッサの暗号化定義
ページテーブルレジスタ情報およびエントリに含まれる
情報だけから生成される場合、任意のエントリが署名を
含んだ状態で交換されたとしても、それを検出すること
はできない。プロセッサ側に置かれる情報、すなわち暗
号化定義ページテーブルレジスタとそれに含まれるSa
ltが全てのエントリについて共通となってしまうから
である。この問題は、暗号化定義ページテーブルの各エ
ントリの署名の計算領域に、エントリが置かれる論理ア
ドレスを含めることによって(すなわち、エントリごと
に異なる値が署名に含まれるようにすることによっ
て)、解決される。
【0199】なお、ページテーブルの初期化は、あらか
じめキーバリュー(鍵値)などの属性をメモリのテーブ
ルに書き込んでおき、そのアドレスをマイクロプロセッ
サ内部の暗号化定義ページテーブルレジスタに設定し、
Saltの値を同じレジスタに書き込んでこのレジスタ
の有効フラグをセットする。有効フラグのセットによ
り、ページテーブルの各エントリに対する署名がマイク
ロプロセッサにより計算され、外部メモリ上に書き込ま
れる。階層化されている場合は階層を順次探索して計算
が行なわれる。この処理は、エントリ数に比例した時間
を要することに留意しなければならない。
【0200】<デバッグについて>実行コードと、その
処理対象であるデータの双方が保護されるとしても、そ
のような機能の開発途上のデバッグ作業では、暗号化す
ることなく平文でデバッグできることが開発効率上望ま
しい。
【0201】デバッグに関する設定は2箇所で行う。ひ
とつは、暗号化コードのページテーブルエントリに設け
られた実行コードのデバッグビット307−j−D(図
4参照)であり、もうひとつは、図15に示すように、
データの暗号化鍵属性を指定するレジスタに設けられた
暗号化制御ビット(CY3においては1517−3、C
T59においては1521−3)である。後者の第1実
施形態における対応ビットは、図7に示す暗号化属性レ
ジスタCY3のビット717−3である。
【0202】ページテーブルエントリに設けられたデバ
ッグビット307−j−Dがセットされている時、マイ
クロプロセッサの実行コード復号化ユニット212(図
2参照)は迂回され、エントリに対応するメモリ上にお
かれた実行コードは、平文状態のまま解釈され、実行さ
れる。デバッグ状態でコードを実行している間は、プロ
セッサのデバッグ機能、たとえば第1実施形態と関連し
て述べたステップ実行機能やデバッグレジスタが有効化
される。
【0203】ここで、ページテーブルのデバッグビット
は何ら保護を受けていないが、悪意のあるユーザが、暗
号化された実行プログラムのおかれているページテーブ
ルエントリのデバッグビットをセットしたとしても、暗
号化された実行プログラムが復号化されずに命令フェッ
チ/デコード機能214に取り込まれるだけで、正常実
行はできないので、プログラムの秘密が洩れるおそれは
ない。
【0204】デバッグ実行中は、例外発生時のコンテキ
スト保存も平文のまま行われる。したがって、コンテキ
ストを暗号化する乱数Krをコード暗号化鍵Kcodeで暗
号化した値EKcode[Kr]833は、平文のKrにおき
かえられる。この場合コンテキスト情報がコードの暗号
鍵と一致するかどうかのチェックを行うことはできない
が、デバッグの場合にはこのような攻撃の危険を考慮す
る必要がない。
【0205】実行コードの演算処理対象であるデータの
暗号化は、第1実施形態においては図7に示す暗号化制
御ビット713−3によって、第2実施形態においては
図15に示すCY3の暗号化制御ビット1517−3、
およびCT59の暗号化制御ビット1521−3によっ
て制御される。暗号化制御ビットが0の時は、デバッグ
状態でもデータは暗号化状態で処理される。暗号化制御
ビットが1にセットされている時は、デバッグ状態の場
合に限りデータは平文のまま処理される。
【0206】本発明ではデータについて、デバッグ状態
で暗号化属性のエントリごとに、暗号化と非暗号化を選
択できるようにすることで、別のプログラムやデバイス
との間で行われる暗号化されたデータ送受信のデバッグ
と、プログラムの内部的なデータの平文状態でのデバッ
グとを、容易に両立させている。
【0207】特にコードについてはコードを暗号化せず
平文として、ページテーブル上のデバッグフラグをセッ
トするだけで、プログラム自体を再コンパイルすること
なくデバッグが行なえる利便性を提供している。
【0208】処理対象データについては、他のプロセス
との通信に使われる領域は、自プロセスはデバッグモー
ドだったとしても、相手のプロセスがデバッグ状態でな
い限り平文にしておくことはできない場合がある。そこ
でコードがデバッグモードで動作している場合のみ有効
になる暗号化フラグをデータの暗号化属性に設け、この
フラグによって暗号化状態を制御できるようにしてい
る。
【0209】コードのデバッグには、コード自体の暗号
状態と、コードを暗号化する鍵の暗号化状態とで、4通
りの組み合わせが考えられる。上述した例は、コード暗
号鍵もコードも平文の場合の組み合わせ例である。
【0210】他のモード(組み合わせ)も考えられる。
第1が、コード暗号化鍵エントリもコード自体も暗号化
された状態で、デバッグモードでコードを実行できるモ
ードである。第2が、コード暗号化鍵エントリは平文の
状態で、コード自体は暗号化された状態で、デバッグモ
ードでコードを実行できるモードである。第3が、コー
ド暗号化鍵エントリは暗号化状態、コードは平文状態の
場合である。
【0211】デバッグの目的からはこれらのモードには
あまり意味を持つものではないが、必要に応じてこれら
のモードを備えてもよい。
【0212】この際に注意しなければならないのは、第
1のケースで、暗号化されたコード暗号化鍵エントリに
対応する暗号化された実行コードをデバッグモードで実
行可能とする場合は、ユーザが暗号化制御のためのビッ
トを操作するだけで、暗号化鍵を知らない保護されたプ
ログラムを、デバッグモードで実行することができてし
まう。
【0213】この場合には、デバッグモードビットを不
正に操作されないように、デバッグビットをコード暗号
化鍵Kcodeとともに、プロセッサの公開鍵Kpで暗号化
するなどの対策を施して、真のコード暗号化鍵を知らな
いユーザにデバッグビットを操作されないように注意し
なければならない。
【0214】
【発明の効果】以上説明したように、本発明のマイクロ
プロセッサによれば、マルチタスク環境下で、実行コー
ドと、そのコードの処理対象であるデータの双方を暗号
化して保護することにより、オペレーションシステム、
あるいは第三者による不正な解析を防止することができ
る。
【0215】また、データを暗号化して保存した場合
の、暗号化属性の不正な書き換えを防止することが可能
になる。
【0216】また、処理対象であるデータの暗号化鍵と
して、固定鍵ではなく任意の乱数Krを使用することが
でき、暗号化されたデータを不正な攻撃から守ることが
できる。
【0217】また、平文状態でデバッグを行い、不具合
が発見された場合は、実行コードの暗号化鍵を知ってい
るプログラムベンダにエラーをフィードバッグさせるこ
とができる。
【0218】さらに、暗号化属性情報など、秘密保護に
必要な情報にマイクロプロセッサの署名をつけて外部の
メモリ上に保存し、必要な部分だけをプロセッサ内部の
レジスタに読み込み、読み込み時に署名の検証を行うこ
とで、マイクロプロセッサのメモリの増大を防止し、コ
ストを押さえることができる。この方式では、読み込み
時のすり替えに対する安全性も保障される。
【図面の簡単な説明】
【図1】本発明の第1実施形態にかかるマイクロプロセ
ッサの基本構成を示す図である。
【図2】図1のマイクロプロセッサの詳細な構成を示す
図である。
【図3】図1のマイクロプロセッサにおけるページディ
レクトリと、ページテーブル形式を示す図である。
【図4】図3に示したページテーブルの詳細と、鍵エン
トリ形式を示す図である。
【図5】図1のマイクロプロセッサにおけるデータのイ
ンタリーブを示す図である。
【図6】第1実施形態における実行命令コードのアドレ
ス変換から復号化までの情報の流れを示す図である。
【図7】第1実施形態にかかるマイクロプロセッサのC
PUレジスタの構成を示す図である。
【図8】第1実施形態におけるコンテキスト保存形式を
示す図である。
【図9】第1実施形態における保護ドメイン切り替えの
手順を示すフローチャートである。
【図10】第1実施形態における、処理対象であるデー
タの暗号・復号化の情報の流れを示す図である。
【図11】本発明のマイクロプロセッサにおける保護ド
メイン内の実行制御を示す図である。
【図12】本発明のマイクロプロセッサにおける保護ド
メインから非保護ドメインへの呼び出し、分岐を示す図
である。
【図13】本発明のマイクロプロセッサにおけるデータ
暗号化属性共有の手順を示すフローチャートである。
【図14】データ保護属性の共有に使用されるスレッド
テーブルの図である。
【図15】本発明の第2実施形態にかかるマイクロプロ
セッサのCPUレジスタ構成を示す図である。
【図16】第2実施形態にかかるマイクロプロセッサに
おける鍵格納領域レジスタおよび暗号化属性情報特定レ
ジスタと、それぞれ対応するメモリ上の鍵格納領域の関
係を示す図である。
【図17】第2実施形態にかかるマイクロプロセッサに
おけるコンテキスト保存形式を示す図である。
【図18】従来技術におけるコンテキスト保存形式を示
す図である。
【符号の説明】
101 マイクロプロセッサ 111 プロセッサコア 112 バスインターフェイスユニット(読み出し手
段) 113 コード・データ暗号化/複号化処理部 114 1次キャッシュ 115 命令実行部 121 命令TLB 131 例外処理部 141 データTLB 151 2次キャッシュ 212 コード復号化ユニット 219 データ復号化ユニット 220 データ暗号化ユニット 233 保護テーブル管理部 252 乱数発生機構 253 レジスタファイル(プロセッサ外部の記憶手
段) 254 コンテキスト情報暗号/複号化ユニット 257 コード暗号化鍵・署名検証ユニット 281 メインメモリ(プロセッサ外部の記憶手段)) 307、512 ページテーブル 309、511 キーテーブル CY0〜CY3 暗号化属性レジスタ CT0〜CT59 暗号化属性情報特定レジスタ
フロントページの続き (72)発明者 白川 健治 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 寺本 圭一 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 Fターム(参考) 5B017 AA03 AA07 BA07 CA15 5B062 AA07 CC01 DD01 DD10 FF03 5B076 FA13 5B098 GA04 GA05 GA07 GC01

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 プログラムごとに異なる暗号化鍵により
    暗号化された複数のプログラムをマイクロプロセッサ外
    部の記憶手段から読み出す読み出し手段と、 前記読み出し手段にて読み出した前記複数のプログラム
    を、それぞれ対応する復号化鍵で復号化する復号化手段
    と、 前記復号化された複数のプログラムを実行する実行手段
    と、 前記複数のプログラムのうち、一のプログラムの実行を
    中断する場合に、前記一のプログラムの実行状態を示す
    情報と、前記一のプログラムの暗号化鍵とを、前記マイ
    クロプロセッサに固有の暗号化鍵で暗号化し、この暗号
    化した情報をコンテキスト情報として前記マイクロプロ
    セッサ外部の記憶手段に書き込む実行状態書き込み手段
    と、 前記一のプログラムを再開する場合に、前記マイクロプ
    ロセッサに固有の暗号化鍵に対応する固有の復号化鍵で
    前記コンテキスト情報を復号化し、復号化された再開予
    定のプログラムの暗号化鍵が、前記一のプログラム本来
    の暗号化鍵と一致した場合にのみ、前記一のプログラム
    の実行を再開する再開手段と、 を具備することを特徴とする1チップまたは1パッケー
    ジのマイクロプロセッサ。
  2. 【請求項2】 外部へ読み出すことのできない前記マイ
    クロプロセッサ内部の記憶手段と、 前記複数のプログラムの処理対象であるデータのための
    暗号化属性を、前記マイクロプロセッサ内部の記憶手段
    に書き込む暗号化属性書き込み手段と、 前記複数のプログラムの処理対象であるデータを、前記
    暗号化属性に基づいて暗号化するデータ暗号化手段と、 をさらに具備し、前記暗号化属性の少なくとも一部は、
    前記コンテキスト情報に含まれることを特徴とする請求
    項1の1チップまたは1パッケージのマイクロプロセッ
    サ。
  3. 【請求項3】 前記実行状態書き込み手段は、マイクロ
    プロセッサに固有の秘密情報に基づく署名をコンテキス
    ト情報に付与し、 前記再開手段は、復号化されたコンテキスト情報に含ま
    れる前記署名が、前記マイクロプロセッサに固有の秘密
    情報に基づく署名と一致する場合にのみ、前記一のプロ
    グラムを再開することを特徴とする請求項1に記載の1
    チップまたは1パッケージのマイクロプロセッサ。
  4. 【請求項4】 外部へ読み出すことのできない固有の秘
    密鍵を内部に保持した1チップまたは1パッケージのマ
    イクロプロセッサであって、 あらかじめ前記秘密鍵に対応する公開鍵によって暗号化
    されたコード暗号化鍵をマイクロプロセッサ外部の記憶
    手段から読み出す第1の読み出し手段と、 前記第1の読み出し手段で読み出した前記コード暗号化
    鍵を、前記秘密鍵を用いて復号化する第1の復号化手段
    と、 プログラムごとに異なる前記コード暗号化鍵によって暗
    号化された複数のプログラムを、前記マイクロプロセッ
    サ外部の記憶手段から読み出す第2の読み出し手段と、 前記第2の読み出し手段にて読み出した前記複数のプロ
    グラムを復号化する第2の復号化手段と、 前記復号化された複数のプログラムを実行する実行手段
    と、 前記複数のプログラムのうち、一のプログラムの実行を
    中断する場合に、前記一のプログラムの実行状態を示す
    情報と、前記プログラムのコード暗号化鍵とを前記公開
    鍵によって暗号化し、暗号化した情報をコンテキスト情
    報として、前記マイクロプロセッサ外部の記憶手段に書
    き込む実行状態書き込み手段と、 前記一のプログラムの実行を再開する場合に、前記マイ
    クロプロセッサ外部の記憶手段から前記コンテキスト情
    報を読み出し、前記秘密鍵でコンテキスト情報を復号化
    し、復号化されたコンテキスト情報に含まれるコード暗
    号化鍵が、前記一のプログラムの本来のコード暗号化鍵
    と一致する場合にのみ、前記一のプログラムの実行を再
    開する再開手段と、 を具備することを特徴とするマイクロプロセッサ。
  5. 【請求項5】 外部へ読み出すことのできない固有の秘
    密鍵を内部に保持する1チップまたは1パッケージのマ
    イクロプロセッサであって、 あらかじめ前記秘密鍵に対応した公開鍵によって暗号化
    されたコード暗号化鍵をマイクロプロセッサ外部の記憶
    手段から読み出す第1の読み出し手段と、 前記第1の読み出し手段で読み出した前記コード暗号化
    鍵を、前記秘密鍵を用いて復号化する第1の復号化手段
    と、 それぞれが異なる前記コード暗号化鍵で暗号化された複
    数のプログラムを、前記マイクロプロセッサ外部の記憶
    手段から読み出す第2の読み出し手段と、 前記第2の読み出し手段によって読み出された複数のプ
    ログラムを復号化する第2の復号化手段と、 前記復号化された複数のプログラムを実行する実行手段
    と、 前記複数のプログラムのうち一のプログラムの実行を中
    断する場合に、一時鍵として乱数を発生し、前記一のプ
    ログラムの実行状態を示す情報を前記一時鍵で暗号化し
    た第1の値と、前記一時鍵を前記一のプログラムのコー
    ド暗号化鍵で暗号化した第2の値と、前記一時鍵を前記
    マイクロプロセッサの秘密鍵で暗号化した第3の値とを
    コンテキスト情報として前記マイクロプロセッサ外部の
    記憶手段に書き込む実行状態書き込み手段と、 前記一のプログラムの実行を再開する場合に、前記マイ
    クロプロセッサ外部の記憶手段から前記コンテキスト情
    報を読み出し、前記秘密鍵を用いて、前記コンテキスト
    情報に含まれる第3の値としての一時鍵を復号化し、復
    号化された一時鍵を用いて前記コンテキスト情報に含ま
    れる実行状態情報を復号化するとともに、再開予定のプ
    ログラムのコード暗号化鍵を用いて、前記コンテキスト
    情報に含まれる第2の値としての一時鍵を復号化し、前
    記第2の値を復号化した一時鍵が、前記第3の値を秘密
    鍵で復号化した一時鍵と一致する場合にのみ前記一のプ
    ログラムの実行を再開する再開手段と、 を具備することを特徴とするマイクロプロセッサ。
  6. 【請求項6】 前記実行状態書き込み手段は、前記マイ
    クロプロセッサに固有の秘密鍵による署名を前記コンテ
    キスト情報に付与し、 前記再開手段は、復号化された前記コンテキスト情報に
    含まれる前記署名が、前記マイクロプロセッサに固有の
    秘密鍵による本来の署名と一致する場合にのみ、前記一
    のプログラムを再開することを特徴とする請求項5に記
    載の1チップまたは1パッケージのマイクロプロセッ
    サ。
  7. 【請求項7】 外部へ読み出すことのできない固有の秘
    密鍵を内部に保持した1チップまたは1パッケージのマ
    イクロプロセッサであって、 あらかじめ前記秘密鍵に対応する公開鍵によって暗号化
    された暗号化鍵をマイクロプロセッサ外部の記憶手段か
    ら読み出す第1の読み出し手段と、 前記第1の読み出し手段で読み出した前記暗号化鍵を、
    前記秘密鍵を用いて復号化する第1の復号化手段と、 プログラムごとに異なる前記暗号化鍵によって暗号化さ
    れた複数のプログラムを、前記マイクロプロセッサ外部
    の記憶手段から読み出す第2の読み出し手段と、 前記第2の読み出し手段にて読み出した前記複数のプロ
    グラムを復号化する第2の復号化手段と、 前記復号化された複数のプログラムを実行する実行手段
    と、 外部へ読み出すことのできないマイクロプロセッサ内部
    の記憶手段と、 前記プログラムが処理するデータのための暗号化属性
    を、前記マイクロプロセッサ内部の記憶手段に書き込む
    暗号化属性書き込み手段と、 前記プログラムが処理するデータを、前記マイクロプロ
    セッサ内部の記憶手段に書き込まれた暗号化属性に基づ
    いて暗号化するデータ暗号化手段と、 前記複数のプログラムのうち、一のプログラムの実行を
    中断する場合に、前記一のプログラムの実行状態を示
    し、かつ前記暗号化属性の少なくとも一部を含む実行状
    態情報と、前記一のプログラムの暗号化鍵とを、前記公
    開鍵によって暗号化し、暗号化した情報をコンテキスト
    情報として、前記マイクロプロセッサ外部の記憶手段に
    書き込む実行状態書き込み手段と、 前記一のプログラムの実行を再開する場合に、前記秘密
    鍵でコンテキスト情報を復号化し、復号化されたコンテ
    キスト情報に含まれる暗号化鍵が、前記一のプログラム
    の本来の暗号化鍵と一致する場合にのみ、前記一のプロ
    グラムの実行を再開する再開手段と、 を具備することを特徴とするマイクロプロセッサ。
  8. 【請求項8】 外部へ読み出すことのできない固有の秘
    密鍵を内部に保持した1チップまたは1パッケージのマ
    イクロプロセッサであって、 あらかじめ前記秘密鍵に対応する公開鍵によって暗号化
    された暗号化鍵をマイクロプロセッサ外部の記憶手段か
    ら読み出す第1の読み出し手段と、 前記第1の読み出し手段で読み出した前記暗号化鍵を、
    前記秘密鍵を用いて復号化する第1の復号化手段と、 プログラムごとに異なる前記暗号化鍵によって暗号化さ
    れた複数のプログラムを、前記マイクロプロセッサ外部
    の記憶手段から読み出す第2の読み出し手段と、 前記第2の読み出し手段にて読み出した前記複数のプロ
    グラムを復号化する第2の復号化手段と、 前記復号化された複数のプログラムを実行する実行手段
    と、 前記プログラムから参照されるデータのための暗号化属
    性と暗号化属性特定情報とが格納された、外部へ読み出
    すことのできないマイクロプロセッサ内部の記憶手段
    と、 前記暗号化属性特定情報に関連し、前記マイクロプロセ
    ッサに固有の署名を含む関連情報を、前記マイクロプロ
    セッサ外部の記憶手段に書き込む関連情報書き込み手段
    と、 プログラムが参照するデータのアドレスに基づいて、前
    記マイクロプロセッサ外部の記憶手段から、前記関連情
    報を読み込む関連情報読み込み手段と、 前記読み込み手段により読み込まれた関連情報に含まれ
    る署名を、前記秘密鍵によって検証し、マイクロプロセ
    ッサ固有の署名と一致した場合にのみ、前記暗号化属性
    特定情報および前記読み込まれた関連情報に基づいて、
    データ参照のための暗号化鍵およびアルゴリズムを決定
    し、前記プログラムによるデータの参照を許可する許可
    手段と、 前記プログラムから参照されるデータを、前記マイクロ
    プロセッサ内部の記憶手段に記憶された前記暗号化属性
    に基づいて暗号化するデータ暗号化手段と、 前記複数のプログラムのうち、一のプログラムの実行を
    中断する場合に、前記一のプログラムの実行状態を示
    し、かつ前記暗号化属性の少なくとも一部が含まれた実
    行状態情報と、前記一のプログラムの暗号化鍵とを、前
    記公開鍵によって暗号化し、暗号化した情報をコンテキ
    スト情報として、前記マイクロプロセッサ外部の記憶手
    段に書き込む実行状態書き込み手段と、 前記一のプログラムの実行を再開する場合に、前記秘密
    鍵でコンテキスト情報を復号化し、復号化された再開予
    定のプログラムの暗号化鍵が、前記一のプログラムの本
    来の暗号化鍵と一致する場合にのみ、前記一のプログラ
    ムの実行を再開する再開手段と、 を具備することを特徴とするマイクロプロセッサ。
  9. 【請求項9】 前記関連情報は、前記暗号化属性特定情
    報と、マイクロプロセッサ固有の秘密情報と、前記関連
    情報のうちプロセッサ固有の署名を除く部分とに基づい
    て生成される第2の署名を含むことを特徴とする請求項
    8に記載のマイクロプロセッサ。
  10. 【請求項10】 前記実行手段で実行されるプログラム
    が変更され、前記プログラムの暗号化鍵が変更された場
    合は、前記マイクロプロセッサ内部の記憶手段に記録さ
    れた、前記プログラムから参照されるデータの暗号化属
    性を初期化することを特徴とする請求項7に記載のマイ
    クロプロセッサ。
  11. 【請求項11】 プログラムごとに異なる暗号化鍵によ
    り暗号化された複数のプログラムを、マイクロプロセッ
    サ外部の記憶手段から読み出す読み出し手段と、 前記読み出し手段により読み出された前記複数のプログ
    ラムを復号化する復号化手段と、 前記復号化された複数のプログラムを実行する手段と、 第1の命令の実行に基づく、前記複数のプログラムの中
    の一のプログラムの実行中に、この実行状態を示す情報
    と、前記一のプログラムの暗号化鍵とを、コンテキスト
    情報として前記マイクロプロセッサ外部の記憶手段に書
    き込む書き込み手段と、 第2の命令の実行に基づいて、前記外部の記憶手段に書
    き込まれたコンテキスト情報を読み出す読み出し手段
    と、 前記読み出されたコンテキスト情報に含まれる前記一の
    プログラムの暗号化鍵と、前記第2の命令の実行に基づ
    き実行しているプログラムの暗号化鍵とを比較し、一致
    した場合にのみ、前記コンテキスト情報に含まれる実行
    状態を復元する復元手段と、 を具備することを特徴とする1チップまたは1パッケー
    ジのマイクロプロセッサ。
  12. 【請求項12】 それぞれ異なる暗号化鍵により暗号化
    された複数のプログラムのうち、一のプログラムを、マ
    イクロプロセッサ外部の記憶手段から読み出すステップ
    と、 前記読み出したプログラムを、このプログラムに対応す
    る復号化鍵で復号化し、実行するステップと、 前記一のプログラムの実行が中断された場合に、前記一
    のプログラムの実行状態を示す情報と、前記一のプログ
    ラムの暗号化鍵とを、前記マイクロプロセッサに固有の
    暗号化鍵で暗号化し、この暗号化した情報をコンテキス
    ト情報として前記マイクロプロセッサ外部の記憶手段に
    書き込むステップと、 前記コンテキスト情報を、前記マイクロプロセッサに固
    有の暗号化鍵に対応するマイクロプロセッサに固有の復
    号化鍵で復号化するステップと、 復号化された再開予定のプログラムの暗号化鍵と、前記
    一のプログラム本来の暗号化鍵とを比較し、一致した場
    合にのみ、前記一のプログラムの実行を再開するステッ
    プと、 を含むマルチタスク実行方法。
  13. 【請求項13】 あらかじめ異なるコード暗号化鍵で暗
    号化された複数のプログラムと、前記コード暗号化鍵の
    各々をあらかじめマイクロプロセッサに固有の公開鍵で
    暗号化したコード暗号化鍵とを、前記マイクロプロセッ
    サ外部の記憶手段に格納するステップと、 前記公開鍵で暗号化されたコード暗号化鍵を、前記マイ
    クロプロセッサ外部の記憶手段から読み出し、前記公開
    鍵に対応するマイクロプロセッサに固有の秘密鍵で復号
    化するステップと、 前記複数のプログラムを、前記マイクロプロセッサ外部
    の記憶手段から読み出して、前記復号化されたコード暗
    号化鍵で復号化するステップと、 前記復号化された複数のプログラムを実行するステップ
    と、 前記複数のプログラムのうち、一のプログラムの実行が
    中断される場合に、当該一のプログラムの実行状態を示
    す情報と、このプログラムのコード暗号化鍵とを、前記
    公開鍵によって暗号化し、これをコンテキスト情報とし
    て前記マイクロプロセッサ外部の記憶手段に書き込むス
    テップと、 前記マイクロプロセッサ外部の記憶手段から前記コンテ
    キスト情報を読み出し、前記秘密鍵でコンテキスト情報
    を復号化するステップと、 前記復号化されたコンテキスト情報に含まれるコード暗
    号化鍵と、前記一のプログラムの本来のコード暗号化鍵
    とを比較し、一致する場合にのみ、前記一のプログラム
    の実行を再開するステップと、 を含むマルチタスク実行方法。
  14. 【請求項14】 あらかじめ異なる暗号化鍵で暗号化さ
    れた複数のプログラムと、前記暗号化鍵の各々をあらか
    じめマイクロプロセッサに固有の公開鍵で暗号化した暗
    号化鍵とを、前記マイクロプロセッサ外部の記憶手段に
    格納するステップと、 前記複数のプログラムの各々の処理対象となるデータの
    ための暗号化属性を、外部へ読み出すことのできないマ
    イクロプロセッサ内部の記憶手段に書き込むステップ
    と、 前記公開鍵で暗号化された暗号化鍵を、前記マイクロプ
    ロセッサ外部の記憶手段から読み出し、前記公開鍵に対
    応するマイクロプロセッサに固有の秘密鍵で復号化する
    ステップと、 前記暗号化された複数のプログラムを、前記マイクロプ
    ロセッサ外部の記憶手段から読み出し、前記復号化され
    た暗号化鍵で復号化するステップと、 前記復号化された複数のプログラムを実行する実行する
    ステップと、 前記複数のプログラムのうち、一のプログラムの実行を
    中断する場合に、前記一のプログラムの実行状態を示
    し、かつ前記暗号化属性の少なくとも一部を含む実行状
    態情報と、前記一のプログラムのコード暗号化鍵とを、
    前記公開鍵によって暗号化し、これをコンテキスト情報
    として、前記マイクロプロセッサ外部の記憶手段に書き
    込むステップと、 前記プログラムの処理対象であるデータを、前記マイク
    ロプロセッサ内部の記憶手段に書き込まれた暗号化属性
    に基づいて暗号化し、暗号化されたデータを前記マイク
    ロプロセッサ外部の記憶手段に保存するステップと、 前記コンテキスト情報を前記マイクロプロセッサの秘密
    鍵で復号化するステップと、 前記復号化されたコンテキスト情報に含まれる暗号化鍵
    が、前記一のプログラムの本来の暗号化鍵とを比較し、
    一致する場合にのみ、前記一のプログラムの実行を再開
    するステップと、 を含むマルチタスク実行方法。
  15. 【請求項15】 それぞれ異なる暗号化鍵であらかじめ
    暗号化された複数のプログラムを、マイクロプロセッサ
    外部の記憶手段に格納するステップと、 前記複数のプログラムを前記マイクロプロセッサ外部の
    記憶手段から読み出して、復号化してから実行するステ
    ップと、 第1の命令の実行に基づき、前記複数のプログラムの中
    の一のプログラムの実行中に、この実行状態を示す情報
    と、前記一のプログラムの暗号化鍵とを、コンテキスト
    情報として前記マイクロプロセッサ外部の記憶手段に書
    き込むステップと、 第2の命令の実行に基づいて、前記マイクロプロセッサ
    外部の記憶手段に書き込まれたコンテキスト情報を読み
    出すステップと、 前記読み出されたコンテキスト情報に含まれる前記一の
    プログラムの暗号化鍵と、前記所定の第2の命令を実行
    中のプログラムの暗号化鍵とを比較し、一致した場合に
    のみ、前記コンテキスト情報に含まれる実行状態を復元
    するステップと、 を含むマルチスレッド実行方法。
JP2000135010A 2000-02-14 2000-05-08 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 Expired - Fee Related JP4226760B2 (ja)

Priority Applications (11)

Application Number Priority Date Filing Date Title
JP2000135010A JP4226760B2 (ja) 2000-05-08 2000-05-08 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US09/781,158 US6983374B2 (en) 2000-02-14 2001-02-13 Tamper resistant microprocessor
US09/781,284 US7270193B2 (en) 2000-02-14 2001-02-13 Method and system for distributing programs using tamper resistant processor
CNB011045124A CN1220121C (zh) 2000-02-14 2001-02-14 程序分发设备、客户设备、程序分发系统和程序分发方法
KR10-2001-0007300A KR100375158B1 (ko) 2000-02-14 2001-02-14 변조방지 마이크로프로세서
DE60135695T DE60135695D1 (de) 2000-02-14 2001-02-14 Betrugssicherer Mikroprozessor
EP01301241A EP1126356B1 (en) 2000-02-14 2001-02-14 Tamper resistant microprocessor
CNB011030003A CN1189819C (zh) 2000-02-14 2001-02-14 抗干预微处理器
EP01301240A EP1126355A1 (en) 2000-02-14 2001-02-14 Method and system for distributing programs using tamper resistant processor
KR1020010007301A KR100362219B1 (ko) 2000-02-14 2001-02-14 변조방지 프로세서를 이용하여 프로그램을 분배하기 위한방법 및 시스템
US11/071,327 US7353404B2 (en) 2000-02-14 2005-03-04 Tamper resistant microprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000135010A JP4226760B2 (ja) 2000-05-08 2000-05-08 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法

Publications (2)

Publication Number Publication Date
JP2001318787A true JP2001318787A (ja) 2001-11-16
JP4226760B2 JP4226760B2 (ja) 2009-02-18

Family

ID=18643178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000135010A Expired - Fee Related JP4226760B2 (ja) 2000-02-14 2000-05-08 マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法

Country Status (1)

Country Link
JP (1) JP4226760B2 (ja)

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140236A (ja) * 2000-10-31 2002-05-17 Toshiba Corp マイクロプロセッサおよびデータ保護方法
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
JP2004005679A (ja) * 2002-05-29 2004-01-08 Samsung Electronics Co Ltd コンピュータシステム、メモリ構造、および、プログラムを実行する方法
JP2004005595A (ja) * 2002-04-17 2004-01-08 Microsoft Corp 公開鍵暗号化に基づくデータの保存および検索
WO2004006075A1 (ja) * 2002-07-09 2004-01-15 Fujitsu Limited 開放型汎用耐攻撃cpu及びその応用システム
JP2004038939A (ja) * 2002-04-17 2004-02-05 Microsoft Corp 対称鍵暗号化に基づくデータの保存および検索
JP2004126854A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
JP2004246637A (ja) * 2003-02-14 2004-09-02 Fainaaku Kk 固有情報化プロセッサ、これを備えた処理装置および記憶装置、関連するプログラム実行方法、およびコンピュータプログラム
JP2004272816A (ja) * 2003-03-11 2004-09-30 Ntt Docomo Inc マルチタスク実行システム及びマルチタスク実行方法
JP2005182774A (ja) * 2003-11-28 2005-07-07 Matsushita Electric Ind Co Ltd データ処理装置
JP2006018685A (ja) * 2004-07-02 2006-01-19 Ntt Docomo Inc マルチタスク実行システム
JP2006042289A (ja) * 2004-06-24 2006-02-09 Toshiba Corp マイクロプロセッサ
JP2006507548A (ja) * 2001-12-28 2006-03-02 インテル コーポレイション 認証コード方法及び装置
JP2006065851A (ja) * 2004-08-27 2006-03-09 Microsoft Corp アドレスビットを使用してアドレス空間におけるデータのセキュリティ属性を通知するシステムおよび方法
JP2006526173A (ja) * 2003-06-25 2006-11-16 インテル・コーポレーション 解読待ち時間が削減されたメモリ暗号化のための装置及び方法
JP2007515709A (ja) * 2003-11-26 2007-06-14 インテル コーポレイション 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス
JP2008210038A (ja) * 2007-02-23 2008-09-11 Aplix Corp ユーザスレッドの実装方法
JP2009087085A (ja) * 2007-09-28 2009-04-23 Toshiba Corp コンテンツエミュレーション装置及びコンテンツエミュレーション方法
JP2009518742A (ja) * 2005-12-08 2009-05-07 アギア システムズ インコーポレーテッド マイクロコントローラにおけるデータの安全な取扱いのための方法および装置
JP2009163738A (ja) * 2008-01-02 2009-07-23 Arm Ltd 非安全アプリケーションへの安全サービスの提供
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
US7874009B2 (en) 2005-05-26 2011-01-18 Panasonic Corporation Data processing device
KR101037006B1 (ko) 2003-11-28 2011-05-25 파나소닉 주식회사 데이터 처리장치
JP2011525653A (ja) * 2008-06-24 2011-09-22 ナグラビジョン エス アー 安全なメモリ管理システム及び方法
JP2012531663A (ja) * 2009-06-26 2012-12-10 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム中の安全オブジェクトに対するサポート
JP2014112383A (ja) * 2013-12-19 2014-06-19 Intel Corp セキュアなアプリケーションの実行を提供するプロセッサ
US8775824B2 (en) 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9098442B2 (en) 2009-06-26 2015-08-04 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US10102380B2 (en) 2009-12-22 2018-10-16 Intel Corporation Method and apparatus to provide secure application execution
JP2019109910A (ja) * 2019-02-07 2019-07-04 インテル・コーポレーション プロセッサ
CN111310209A (zh) * 2015-11-03 2020-06-19 质子世界国际公司 电子电路的安全启动
CN112199298A (zh) * 2020-11-02 2021-01-08 杭州安恒信息技术股份有限公司 一种单步调试的检测方法、装置和计算机可读存储介质
JP2021090094A (ja) * 2019-12-02 2021-06-10 三菱電機株式会社 集積回路、生産装置及びデータ配信装置
CN114338236A (zh) * 2022-03-01 2022-04-12 四川省商投信息技术有限责任公司 一种防火墙入侵数据分析方法及装置
US11768968B2 (en) 2020-06-10 2023-09-26 Proton World International N.V. Secure starting of an electronic circuit

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11968295B2 (en) * 2018-04-03 2024-04-23 Telefonaktiebolaget Lm Ericsson (Publ) Access to content of encrypted data session

Cited By (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673152B2 (en) 2000-10-31 2010-03-02 Kabushiki Kaisha Toshiba Microprocessor with program and data protection function under multi-task environment
JP2002140236A (ja) * 2000-10-31 2002-05-17 Toshiba Corp マイクロプロセッサおよびデータ保護方法
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
JP2006507548A (ja) * 2001-12-28 2006-03-02 インテル コーポレイション 認証コード方法及び装置
US7890771B2 (en) 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
JP2004038939A (ja) * 2002-04-17 2004-02-05 Microsoft Corp 対称鍵暗号化に基づくデータの保存および検索
JP4689945B2 (ja) * 2002-04-17 2011-06-01 マイクロソフト コーポレーション リソースアクセス方法
US7765397B2 (en) 2002-04-17 2010-07-27 Microsoft Corporation Generating, migrating or exporting bound keys
US7752456B2 (en) 2002-04-17 2010-07-06 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US8683230B2 (en) 2002-04-17 2014-03-25 Microsoft Corporation Saving and retrieving data based on public key encryption
US8589701B2 (en) 2002-04-17 2013-11-19 Microsoft Corporation Saving and retrieving data based on public key encryption
US8621243B2 (en) 2002-04-17 2013-12-31 Microsoft Corporation Saving and retrieving data based on public key encryption
JP2004005595A (ja) * 2002-04-17 2004-01-08 Microsoft Corp 公開鍵暗号化に基づくデータの保存および検索
US8601286B2 (en) 2002-04-17 2013-12-03 Microsoft Corporation Saving and retrieving data based on public key encryption
US9183406B2 (en) 2002-04-17 2015-11-10 Microsoft Technology Licensing, Llc Saving and retrieving data based on public key encryption
JP4689946B2 (ja) * 2002-04-17 2011-06-01 マイクロソフト コーポレーション 安全なデータを使用して情報処理を実行するシステム
JP2004005679A (ja) * 2002-05-29 2004-01-08 Samsung Electronics Co Ltd コンピュータシステム、メモリ構造、および、プログラムを実行する方法
CN100354786C (zh) * 2002-07-09 2007-12-12 富士通株式会社 开放型通用抗攻击cpu及其应用系统
WO2004006075A1 (ja) * 2002-07-09 2004-01-15 Fujitsu Limited 開放型汎用耐攻撃cpu及びその応用システム
JP2004126854A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
JP2004246637A (ja) * 2003-02-14 2004-09-02 Fainaaku Kk 固有情報化プロセッサ、これを備えた処理装置および記憶装置、関連するプログラム実行方法、およびコンピュータプログラム
JP2004272816A (ja) * 2003-03-11 2004-09-30 Ntt Docomo Inc マルチタスク実行システム及びマルチタスク実行方法
JP2006526173A (ja) * 2003-06-25 2006-11-16 インテル・コーポレーション 解読待ち時間が削減されたメモリ暗号化のための装置及び方法
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
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
JP2007515709A (ja) * 2003-11-26 2007-06-14 インテル コーポレイション 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス
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
JP2011076632A (ja) * 2003-11-26 2011-04-14 Intel Corp 公的にアクセス可能なストレージからデータ処理マシンの状態に関するプライベートデータへのアクセス
JP2005182774A (ja) * 2003-11-28 2005-07-07 Matsushita Electric Ind Co Ltd データ処理装置
JP4629416B2 (ja) * 2003-11-28 2011-02-09 パナソニック株式会社 データ処理装置
KR101037006B1 (ko) 2003-11-28 2011-05-25 파나소닉 주식회사 데이터 처리장치
JP2006042289A (ja) * 2004-06-24 2006-02-09 Toshiba Corp マイクロプロセッサ
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
US8191155B2 (en) 2004-06-24 2012-05-29 Kabushiki Kaisha Toshiba Microprocessor
JP2006018685A (ja) * 2004-07-02 2006-01-19 Ntt Docomo Inc マルチタスク実行システム
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
CN100388245C (zh) * 2004-07-02 2008-05-14 株式会社Ntt都科摩 多重任务执行系统
JP2006065851A (ja) * 2004-08-27 2006-03-09 Microsoft Corp アドレスビットを使用してアドレス空間におけるデータのセキュリティ属性を通知するシステムおよび方法
US7874009B2 (en) 2005-05-26 2011-01-18 Panasonic Corporation Data processing device
JP2009518742A (ja) * 2005-12-08 2009-05-07 アギア システムズ インコーポレーテッド マイクロコントローラにおけるデータの安全な取扱いのための方法および装置
JP2008210038A (ja) * 2007-02-23 2008-09-11 Aplix Corp ユーザスレッドの実装方法
JP2009087085A (ja) * 2007-09-28 2009-04-23 Toshiba Corp コンテンツエミュレーション装置及びコンテンツエミュレーション方法
US8332660B2 (en) 2008-01-02 2012-12-11 Arm Limited Providing secure services to a non-secure application
US8775824B2 (en) 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
JP2009163738A (ja) * 2008-01-02 2009-07-23 Arm Ltd 非安全アプリケーションへの安全サービスの提供
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
JP2011525653A (ja) * 2008-06-24 2011-09-22 ナグラビジョン エス アー 安全なメモリ管理システム及び方法
US10362045B2 (en) 2009-06-26 2019-07-23 International Business Machines Corporation Protecting from unintentional malware download
US10007793B2 (en) 2009-06-26 2018-06-26 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9098442B2 (en) 2009-06-26 2015-08-04 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8819446B2 (en) 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US10785240B2 (en) 2009-06-26 2020-09-22 International Business Machines Corporation Protecting from unintentional malware download
US9372967B2 (en) 2009-06-26 2016-06-21 International Business Machines Corporation Support for secure objects in a computer system
US9471513B2 (en) 2009-06-26 2016-10-18 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US9690717B2 (en) 2009-06-26 2017-06-27 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US9727709B2 (en) 2009-06-26 2017-08-08 International Business Machines Corporation Support for secure objects in a computer system
JP2012531663A (ja) * 2009-06-26 2012-12-10 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム中の安全オブジェクトに対するサポート
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US9875193B2 (en) 2009-06-26 2018-01-23 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US10102380B2 (en) 2009-12-22 2018-10-16 Intel Corporation Method and apparatus to provide secure application execution
US10885202B2 (en) 2009-12-22 2021-01-05 Intel Corporation Method and apparatus to provide secure application execution
US8954752B2 (en) 2011-02-23 2015-02-10 International Business Machines Corporation Building and distributing secure object software
US9864853B2 (en) 2011-02-23 2018-01-09 International Business Machines Corporation Enhanced security mechanism for authentication of users of a system
US10007808B2 (en) 2011-09-06 2018-06-26 International Business Machines Corporation Protecting application programs from malicious software or malware
US9846789B2 (en) 2011-09-06 2017-12-19 International Business Machines Corporation Protecting application programs from malicious software or malware
JP2014112383A (ja) * 2013-12-19 2014-06-19 Intel Corp セキュアなアプリケーションの実行を提供するプロセッサ
CN111310209B (zh) * 2015-11-03 2024-03-05 质子世界国际公司 电子电路的安全启动
CN111310209A (zh) * 2015-11-03 2020-06-19 质子世界国际公司 电子电路的安全启动
JP2019109910A (ja) * 2019-02-07 2019-07-04 インテル・コーポレーション プロセッサ
JP2021090094A (ja) * 2019-12-02 2021-06-10 三菱電機株式会社 集積回路、生産装置及びデータ配信装置
US11768968B2 (en) 2020-06-10 2023-09-26 Proton World International N.V. Secure starting of an electronic circuit
CN112199298B (zh) * 2020-11-02 2022-05-13 杭州安恒信息技术股份有限公司 一种单步调试的检测方法、装置和计算机可读存储介质
CN112199298A (zh) * 2020-11-02 2021-01-08 杭州安恒信息技术股份有限公司 一种单步调试的检测方法、装置和计算机可读存储介质
CN114338236A (zh) * 2022-03-01 2022-04-12 四川省商投信息技术有限责任公司 一种防火墙入侵数据分析方法及装置
CN114338236B (zh) * 2022-03-01 2022-05-13 四川省商投信息技术有限责任公司 一种防火墙入侵数据分析方法及装置

Also Published As

Publication number Publication date
JP4226760B2 (ja) 2009-02-18

Similar Documents

Publication Publication Date Title
JP4226760B2 (ja) マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
US6983374B2 (en) Tamper resistant microprocessor
JP4989543B2 (ja) メモリドメインを基にしたデータ処理システム内のセキュリティ制御
Lie et al. Implementing an untrusted operating system on trusted hardware
US7065215B2 (en) Microprocessor with program and data protection function under multi-task environment
US7657760B2 (en) Method for sharing encrypted data region among processes in tamper resistant processor
US9705677B2 (en) Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol
US9471511B2 (en) System and methods for CPU copy protection of a computing device
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
EP2420949B1 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
US9756048B2 (en) System and methods for executing encrypted managed programs
JP4115759B2 (ja) 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
US20030033537A1 (en) Tamper resistant microprocessor using fast context switching
US20070124409A1 (en) Secure processing unit systems and methods
JP4347582B2 (ja) 情報処理装置
WO2016109558A1 (en) System and method for secure code entry point control
JP4643702B2 (ja) マイクロプロセッサ
JP4375980B2 (ja) マルチタスク実行システム及びマルチタスク実行方法
Lie et al. Using hypervisors to secure commodity operating systems
Bove Secure Services for Standard RISC-V Architectures
WO2005092060A2 (en) Apparatus and method for intellectual property protection using the microprocessor serial number
Platte A security architecture for microprocessors

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

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

LAPS Cancellation because of no payment of annual fees