(57)【要約】      （修正有）【課題】プログラムの実行が中断された際に暗号化などの処理負荷をかけずに、タスクの実行環境を外部からの不正なアクセスから保護することができるプログラム実行保護プロセッサを提供すること。【解決手段】タスクを実行するタスク実行手段と、タスクからの要求に応じて、復号鍵が暗号化された暗号情報を取得する暗号情報取得手段４と、暗号情報取得手段４によって取得された暗号情報を復号化し、この復号化で得られた復号鍵をもって、暗号化されたプログラムコードおよび／またはデータを復号化する復号化手段５と、タスクからの要求に応じて割り当てられ、少なくとも復号化手段５によって復号化されたプログラムコードおよび／またはデータを記憶するプライベートページを有する内部メモリ７と、タスクによる上記プライベートページへのアクセスを許可するか否かを判断するアクセス判断手段８とを備える。【選択図】図２
2006209703.tif 000002
【特許請求の範囲】
【請求項１】
タスクを実行するタスク実行手段と、
タスク実行手段によって実行されるタスクからの要求に応じて、復号鍵が暗号化された暗号情報を取得する暗号情報取得手段と、
暗号情報取得手段によって取得された暗号情報を復号化し、この復号化で得られた復号鍵をもって、暗号化されたプログラムコードおよび／またはデータを復号化する復号化手段と、
タスク実行手段によって実行されるタスクからの要求に応じて割り当てられ、少なくとも復号化手段によって復号化されたプログラムコードおよび／またはデータを記憶するプライベートページを有する内部メモリと、
タスク実行手段によって実行されるタスクによる上記プライベートページへのアクセスを許可するか否かを判断するアクセス判断手段と、
を備えたことを特徴とするプログラム実行保護プロセッサ。
【請求項２】
暗号情報取得手段が、タスク実行手段によって実行されるタスクからの要求に応じて、プログラムコードおよび／またはデータが暗号化された暗号情報を取得するものであり、
復号化手段が、暗号情報取得手段によって取得された暗号情報を復号化するものである
ことを特徴とする請求項１に記載のプログラム実行保護プロセッサ。
【請求項３】
アクセス判断手段が、
タスク実行手段によって実行されるタスクが、アクセス要求されるプライベートページを割り当てられたタスクか否かに基づき、タスク実行手段によって実行されるタスクによるプライベートページへのアクセスを許可するか否かを判断するものである
ことを特徴とする請求項１または２に記載のプログラム実行保護プロセッサ。
【請求項４】
内部メモリが、
プライベートページを割り当てられたタスクを識別するための所属タスク識別子を記憶し、
アクセス判断手段が、
上記所属タスク識別子に基づき、タスク実行手段によって実行されるタスクによるプライベートページへのアクセスを許可するか否かを判断するものである
ことを特徴とする請求項１または３に記載のプログラム実行保護プロセッサ。
【請求項５】
内部メモリが、
タスクが記述されたタスクプログラムコードを識別するためのプログラム識別子と、
タスク実行手段によって実行されるタスクからプライベートページへのアクセス条件が記述されたアクセス制御情報と
を記憶し、
アクセス判断手段が、
上記プログラム識別子が上記アクセス制御情報に記述されるアクセス条件を満たすものであるか否かに基づき、タスク実行手段によって実行されるタスクによるプライベートページへのアクセスを許可するか否かを判断するものである
ことを特徴とする請求項１から請求項４のいずれかに記載のプログラム実行保護プロセッサ。
【請求項６】
タスクプログラムコードとプログラム識別子との関係を証明するプログラム証明書を検証するプログラム証明書検証手段を備えた請求項５に記載のプログラム実行保護プロセッサ。
【請求項７】
公開鍵および秘密鍵よりなる鍵ペアを、タスク毎に生成する鍵ペア生成手段を備え、
暗号情報取得手段が、鍵ペア生成手段によって生成された公開鍵をもって暗号化された暗号情報を取得するものであり、
復号化手段が、鍵ペア生成手段によって生成された秘密鍵をもって、暗号情報取得手段によって取得された暗号情報の復号を行うものである
ことを特徴とする請求項１から請求項６のいずれかに記載のプログラム実行保護プロセッサ。
【請求項８】
内部メモリは、
メモリ上の指定された情報単位それぞれに対応する、外部からの読み出し手段を有しない秘密情報格納領域を１つ以上有し、
各秘密情報格納領域は、
Ａ．未定義値が格納されている秘密情報格納領域に、未定義値ではない値であり新たに発生させた乱数を格納する、
Ｂ．秘密情報格納領域に格納されている値を、未定義値が格納されている別の秘密情報格納領域に複写する、
Ｃ．２つの秘密情報格納領域に格納される値を比較し、この比較結果を得る、
Ｄ．メモリ上の情報単位が開放される場合に、これに対応する秘密情報格納領域に未定義値を格納する、
の処理のみがなされるものである
ことを特徴とする請求項１から請求項７のいずれかに記載のプログラム実行保護プロセッサ。
【請求項９】
タスクに対応する秘密情報格納領域に、そのタスクを表す乱数であるタスク秘密情報を格納し、
プライベートページに対応する秘密情報格納領域に、そのプライベートページを割り当てられたタスクを表す乱数であるタスク秘密情報を格納する
ことを特徴とする請求項８に記載のプログラム実行保護プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、詳しくは、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ；以下「ＯＳ」という。）上で実行されるタスクの実行環境を、外部からの不正なアクセスから保護するマイクロプロセッサに関するものである。
【背景技術】
【０００２】
近時、コンピュータの高機能化・高性能化に加え、プログラム自体に対する知的財産的保護価値が重要視されることなどに伴い、コンピュータにおいて実行されるプログラムやこのプログラムが扱うデータの安全性が求められている。そして、このような観点から、ＯＳのマルチタスク環境下において実行されるプログラムやこのプログラムが扱うデータを、ＯＳカーネル、デバッガ、エミュレータ装置などを介した外部からの不正なアクセスから保護することを目的としたマイクロプロセッサが提供されている。
【０００３】
このようなマイクロプロセッサとして、例えば下記特許文献１に開示されるものがある。特許文献１に開示されるマイクロプロセッサは、暗号化されたプログラムを第１の暗号鍵を用いて復号化し、復号化されたプログラムの実行対象であるデータを、第２の暗号鍵を用いて暗号化／復号化し、第１および第２の鍵を関連付けて第１の記憶領域に格納し、これらの鍵を特定する識別子を、プログラムに関連するデータとともに第２の記憶領域に格納することによって、プログラム自体の秘密と、プログラムが扱うデータの秘密の双方を暗号学的に保証するものである。
【０００４】
しかし、上記マイクロプロセッサでは、割り込みなどによって復号されたプログラムの実行が中断される場合、このプログラムおよびプログラムによって処理されていたデータを暗号化し、外部のメモリなどに退避させるため、マイクロプロセッサへの処理負荷が大きくなるといった問題があった。
【０００５】
また、別の従来技術としては、タタスクに対して特権レベルを割り当て、特権レベルの高低によってタスク間に優先順位をつけることで、ＯＳカーネルなど優先順位の高い特権タスクを作り、特権タスクの管理下でユーザタスク間の分離や切り替えを実現するものがある（下記非特許文献１参照）。
【０００６】
しかし、このような方法では、ユーザタスク間の分離や切り替えが暗号化を伴わないので高速に実行できるが、特権タスクに対するユーザタスクの秘匿性や独立性が実現できない。
【特許文献１】特開２００２−１４０２３６号公報
【非特許文献１】ＩＡ−３２  インテル（Ｒ）  アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、上巻：基本アーキテクチャ、インテル株式会社、［平成１７年１月２８日検索］、インターネット〈URL:http://www.intel.co.jp/jp/developer/download/index.htm〉<URL:ftp://download.intel.co.jp/jp/developer/jpdoc/ia32_arh_dev_man_vol1_online_i.pdf>
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで本発明は、上記の問題点に鑑みて、プログラムの実行が中断された際に、このプログラムおよびプログラムによって処理されていたデータを外部のメモリなどに退避させることなく、プログラムやプログラムが扱うデータを外部からの不正なアクセスから保護することができるプログラム実行保護プロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のプログラム実行保護プロセッサは、上記の課題を解決するものとして、タスクを実行するタスク実行手段と、タスク実行手段によって実行されるタスクからの要求に応じて、復号鍵が暗号化された暗号情報を取得する暗号情報取得手段と、暗号情報取得手段によって取得された暗号情報を復号化し、この復号化で得られた復号鍵をもって、暗号化されたプログラムコードおよび／またはデータを復号化する復号化手段と、タスク実行手段によって実行されるタスクからの要求に応じて割り当てられ、少なくとも復号化手段によって復号化されたプログラムコードおよび／またはデータを記憶するプライベートページを有する内部メモリと、タスク実行手段によって実行されるタスクによる上記プライベートページへのアクセスを許可するか否かを判断するアクセス判断手段とを備えたことを特徴とする。
【０００９】
また、上記プログラム実行保護プロセッサにおいては、暗号情報取得手段が、タスク実行手段によって実行されるタスクからの要求に応じて、プログラムコードおよび／またはデータが暗号化された暗号情報を取得するものであり、復号化手段が、暗号情報取得手段によって取得された暗号情報を復号化するものとしてもよい。
【００１０】
これらの構成によれば、ネットワーク上の送受信におけるプログラムコードやデータの秘匿性が暗号学的に保証されるとともに、プログラム実行保護プロセッサの内部に設けられたプライベートページへのアクセスは、アクセス判断手段によって許可されたタスクに制限される。
【００１１】
また、上記のプログラム実行保護プロセッサにおいては、アクセス判断手段が、タスク実行手段によって実行されるタスクが、アクセス要求されるプライベートページを割り当てられたタスクか否かに基づき、タスク実行手段によって実行されるタスクによるプライベートページへのアクセスを許可するか否かを判断するものとしてもよい。
【００１２】
この構成によれば、プログラム実行保護プロセッサの内部に設けられたプライベートページへのアクセスは、アクセス要求されるプライベートページを割り当てられたタスクに制限される。
【００１３】
また、上記のプログラム実行保護プロセッサにおいては、内部メモリが、プライベートページを割り当てられたタスクを識別するための所属タスク識別子を記憶し、アクセス判断手段が、上記所属タスク識別子に基づき、タスク実行手段によって実行されるタスクによるプライベートページへのアクセスを許可するか否かを判断するものとすることでもよい。
【００１４】
この構成によれば、プログラム実行保護プロセッサの内部に設けられたプライベートページへのアクセスは、所属タスク識別子に基づいた判断の下に制限されることになる。
【００１５】
さらに、上記のプログラム実行保護プロセッサにおいては、内部メモリが、タスクが記述されたタスクプログラムコードを識別するためのプログラム識別子と、タスク実行手段によって実行されるタスクからプライベートページへのアクセス条件が記述されたアクセス制御情報とを記憶し、アクセス判断手段が、上記プログラム識別子が上記アクセス制御情報に記述されるアクセス条件を満たすものであるか否かに基づき、タスク実行手段によって実行されるタスクによるプライベートページへのアクセスを許可するか否かを判断するものであるとしてもよい。
【００１６】
この構成によれば、プログラム実行保護プロセッサの内部に設けられたプライベートページへのアクセスは、プログラム識別子やアクセス制御情報にも基づいた判断の下に制限されることになる。
【００１７】
さらに、上記のプログラム実行保護プロセッサにおいては、タスクプログラムコードとプログラム識別子との関係を証明するプログラム証明書を検証するプログラム証明書検証手段を備えるものであってもよい。
【００１８】
この構成によれば、タスクプログラムコードとプログラム識別子との関係がプログラム証明書によって保証されるため、改竄されたタスクプログラムコードに基づいて実行されるタスクによる実行環境への不正なアクセスが防止される。
【００１９】
さらに、上記のプログラム実行保護プロセッサにおいては、公開鍵および秘密鍵よりなる鍵ペアを、タスク毎に生成する鍵ペア生成手段を備え、暗号情報取得手段が、鍵ペア生成手段によって生成された公開鍵をもって暗号化された暗号情報を取得するものであり、復号化手段が、鍵ペア生成手段によって生成された秘密鍵をもって、暗号情報取得手段によって取得された暗号情報の復号を行うものであるとしてもよい。
【００２０】
この構成によれば、暗号情報がタスク毎に生成された秘密鍵をもって復号されるため、プログラム実行保護プロセッサの外部におけるプログラムコードの漏洩が防止される。
【００２１】
さらに、上記のプログラム実行保護プロセッサにおいては、内部メモリは、メモリ上の指定された情報単位それぞれに対応する、外部からの読み出し手段を有しない秘密情報格納領域を１つ以上有し、各秘密情報格納領域は、Ａ．未定義値が格納されている秘密情報格納領域に、未定義値ではない値であり新たに発生させた乱数を格納する、Ｂ．秘密情報格納領域に格納されている値を、未定義値が格納されている別の秘密情報格納領域に複写する、Ｃ．２つの秘密情報格納領域に格納される値を比較し、この比較結果を得る、Ｄ．メモリ上の情報単位が開放される場合に、これに対応する秘密情報格納領域に未定義値を格納する、の処理のみがなされるものであると構成することでもよい。
【００２２】
また、タスクに対応する秘密情報格納領域に、そのタスクを表す乱数であるタスク秘密情報を格納し、プライベートページに対応する秘密情報格納領域に、そのプライベートページを割り当てられたタスクを表す乱数であるタスク秘密情報を格納するようにしてもよい。
【００２３】
この構成によれば、秘密情報格納領域に格納されるタスク秘密情報に対して、プロセッサの命令実行に伴う読み出しや書き込みなどのプラグラムからの通常のアクセスは禁止され、タスク実行手段（内の論理回路）による、上記４つの処理に伴う内部的な読み出し、書き込みのみが可能である。
【００２４】
秘密情報格納領域に格納される乱数は、外部から予測不可能な値であれば、乱数生成器により発生させた真の乱数に限らず、アルゴリズムによって発生させた擬似乱数でもよい。
【００２５】
また、秘密情報格納領域に格納されるタスク秘密情報の値について、外部から予測不可能であること、命令の実行による読み出しと書き込みが禁止されていること、タスク秘密情報がプロセッサ内部に置かれてその内容がバス上に出力されないことによって、ＯＳカーネルやデバッガなどのソフトウェアによる攻撃およびエミュレータなどのハードウェアによる攻撃に対しても、タスク秘密情報の秘匿性が保証され、さらに、対応するタスクやプライベートページが開放されない限り、タスク秘密情報の一致性に基づいたタスクとプライベートページの対応付けが保証される。
【００２６】
さらに、タスクとプライベートページの対応付けが変更される場合には、その内容を消去するように構成される。
【発明の効果】
【００２７】
本発明のプログラム実行保護プロセッサによれば、プログラム実行保護プロセッサにおいて実行されるプログラムの実行が中断された際に、このプログラムおよびプログラムによって処理されていたデータを外部のメモリなどに退避させることなく、プログラムやプログラムが扱うデータを、当該タスクあるいは関連したタスク以外の外部からの不正なアクセスから保護することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明のプログラム実行保護プロセッサの実施形態について、図面を参照して説明する。
【００２９】
まず、この明細書においてタスクとは、ＯＳカーネルや、ＯＳ上で実行されるプログラムの１実行単位を表し、プロセスやスレッドと呼ばれるものも含む。また、複数のスレッドを含むプログラム全体であるプロセスを１つの実行単位として見た場合に、これもタスクに含める。なお、タスクが記述されたプログラムコードをタスクプログラムコードということにする。
【００３０】
また、この明細書においてプログラムコードとは、後述するタスク実行手段（２）によって実行されるタスクから呼び出される、サブルーチンやライブラリなどのモジュールを実行するための命令が記述されたものである。このプログラムコードは、外部からの不正なアクセスから保護される対象であって、タスクプログラムコードとは別に、暗号化された状態で供給される。
【００３１】
さらに、この明細書では、後述するタスク実行手段（２）によって実行されているタスクを「実行タスク」ということにする。また、後述するメインメモリ（１１）やページメモリ（６）などの記憶装置からの命令の取り出し、データの読み取りおよびメインメモリ（１１）やページメモリ（６）などの記憶装置に対するデータの書き込みを「アクセス」ということにする。
【００３２】
＜第１の実施形態＞
図１は、プログラム実行保護プロセッサ（１）を含むプログラム実行装置（１０）のハードウェア構成を例示したブロック図である。また図２は、第１の実施形態に関するプログラム実行保護プロセッサ（１）の内部構成を示したブロック図である。
【００３３】
図１に例示するように、プログラム実行装置（１０）は、本発明であるプログラム実行保護プロセッサ（１）、メインメモリ（揮発性メモリであるＲＡＭ（Random Access Memory）が利用されるものである。）（１１）、不揮発性メモリであるＲＯＭ（Read Only Memory）（１２０）、ハードディスクなどの外部記憶装置（１３０）、キーボードやポインティングデバイスなどの入力装置（１６０）、画像を表示するモニタ装置（１５０）、およびプログラム実行装置（１０）の外部に有線および／または無線通信可能であって、ネットワークを介して他の通信装置と通信を行うネットワークインタフェイス（１４０）並びにこれらの入力装置（１６０）、モニタ装置（１５０）、ネットワークインタフェイス（１４０）、プログラム実行保護プロセッサ（１）、ＲＡＭ（１１）、ＲＯＭ（１２０）、外部記憶装置（１３０）間のデータのやり取りが可能なように接続するバス（１７０）を備えている。また必要に応じて、プログラム実行装置（１０）に、ＣＤ−ＲＯＭなどの記憶媒体を読み書きできる装置（ドライブ）やスピーカなどを設けるとしてもよい。なお、プログラム実行装置（１０）は、コンピュータ装置、携帯端末、または通信機能を備えた家電製品などによって構成するとしてもよい。
【００３４】
プログラム実行保護プロセッサ（１）は、その内部に不揮発性あるいは揮発性の半導体メモリ（内部メモリ）を備えるＣＰＵ（Central Processing Unit）である。そして、より具体的には、プログラム実行保護プロセッサ（１）は、タスクを実行するタスク実行手段（２）と、公開鍵暗号系（例えばＲＳＡ暗号系）における公開鍵および秘密鍵よりなる鍵ペアをタスク毎に生成する鍵ペア生成手段（３）と、タスク実行手段（２）において実行されるタスクからの要求に応じて、復号鍵が暗号化された暗号情報を取得する暗号情報取得手段（４）と、取得された暗号情報を復号化し、この復号化で得られた復号鍵をもって、暗号化されたプログラムコードやデータを復号鍵によって復号化する復号化手段（５）と、後述する内部メモリと、タスク実行手段（２）において実行されるタスクによる内部メモリのプライベートページへのアクセスを許可するか否かを判断するアクセス判断手段（８）とを備えている。
【００３５】
この実施形態において内部メモリは、プログラム実行保護プロセッサ（１）内部に２つ備わるものとする。即ち、内部メモリの１つはページメモリ（６）であり、内部メモリのもう１つはタスクプライベート情報メモリ（７）である。もちろん、１つの半導体メモリにおいて、記憶容量を適宜振り分けることで、ページメモリ（６）およびタスクプライベート情報メモリ（７）としての機能を持つようにしてもよい。
【００３６】
内部メモリは、メモリ上の指定された情報単位それぞれに対応する、外部からの読み出し手段を有しない秘密情報格納領域を１つ以上有している。
【００３７】
この秘密情報格納領域は、内部メモリに対するデータの読み出し／書き込みなどの制御を行うコントローラ（例えば、本実施形態ではタスク実行手段（２）に相当する。）による上述した４つの処理に伴う内部的な読み出し、書き込みが可能である。このようにして、内部メモリの秘密情報格納領域に格納される値は、プロセッサの外部に対して秘匿性を有するものとなっている。
【００３８】
また、秘密情報格納領域は、コントローラの制御によって、秘密情報格納領域に格納される値（この値は、未定義値に限定されない。）を、予め未定義値が格納されている秘密情報格納領域に複写することができ、さらに、２つの秘密情報格納領域に格納される値を比較し、この比較結果を外部へ出力することができるようになっている。なお、秘密情報格納領域に格納される値が共に未定義値の場合には、比較結果は不一致であるとするようになっている。
【００３９】
また、未定義値が格納されている秘密情報格納領域に対しては、コントローラから出力される（未定義値ではない）乱数だけを格納することができるようになっている。
【００４０】
さらに、秘密情報格納領域は、この秘密情報格納領域に対応付けられるメモリ上の情報単位の記憶内容が消去されるなどによって開放される場合に、コントローラの制御の下に、未定義値が格納されるようになっている。逆に、秘密情報格納領域に格納される値は、秘密情報格納領域に対応付けられるメモリ上の情報単位の記憶内容が消去されるなどによって開放されるまで、所定の値を格納し続けることになる。
【００４１】
この実施形態において秘密情報格納領域は、後述するタスク秘密情報の格納に利用される。
【００４２】
ページメモリ（６）は、復号化手段（５）によって復号化されたプログラムコードやデータを記憶するものであるプライベートページ（５０）を有する。なお、ここでのデータとは、プログラムコードに基づいて実行される命令によって利用されるものに限らない。プライベートページ（５０）は、後述するアクセス判断手段（８）によってアクセス許可された場合にアクセス可能となっているので、復号化手段（５）で復号化されたプログラムコードやデータに限らず、およそ自在にアクセスされることが好ましくない情報であれば、このプライベートページに格納するようにしてよいものである。
【００４３】
タスクプライベート情報メモリ（７）は、他のタスクから秘匿する情報であってタスクを管理するためのタスクプライベート情報が記憶されるタスクプライベート情報格納領域（４０）を有する。
【００４４】
ここで、メインメモリ（１１）、タスクプライベート情報メモリ（７）およびページメモリ（６）のそれぞれに記憶された情報について図面を参照して説明する。
【００４５】
図３（ａ）は、メインメモリ（１１）のメモリマップの概念図である。
メインメモリ（１１）は、タスクプログラムコード、およびタスクプログラムコードに基づいて実行される命令によって利用されるデータが記憶されるページ（３０）を有している。また、メインメモリ（１１）は、ＯＳカーネルなどの特権タスクからは秘匿化しない情報であってタスクを管理するためのタスク管理情報が記憶されるタスク管理情報格納領域（３１）を有し、タスク管理情報は、タスク実行手段（２）によって起動されているタスク毎に、タスク管理情報格納領域（３１）に記憶される。
【００４６】
タスク管理情報格納領域（３１）に記憶されるタスク管理情報には、タスクを識別するためのタスク識別子（３２）と、プライベートページ（５０）またはページ（３０）の物理アドレスを示すページテーブルエントリよりなるページテーブル（３３）とが含まれる。なお、実行タスクは、ページテーブル（３３）を構成するページテーブルエントリに従ってプライベートページ（５０）またはページ（３０）にアクセスするようになっている。
【００４７】
図３（ｂ）は、タスクプライベート情報メモリ（７）のメモリマップの概念図である。
タスクプライベート情報メモリ（７）のタスクプライベート情報格納領域（４０）に記憶されるタスクプライベート情報には、メインメモリ（１１）におけるタスク管理情報格納領域（３１）の記憶アドレスを表すタスク管理情報ポインタ（４１）と、タスク毎に生成されるタスク秘密情報（４４）と、鍵ペア生成手段（３）によって生成された秘密鍵（４２）および公開鍵（４３）とが含まれる。また、タスクプライベート情報は、タスク実行手段（２）によって起動されているタスク毎に、タスクプライベート情報格納領域（４０）に記憶される。
【００４８】
なお、タスク実行手段（２）は、プログラム実行保護プロセッサ（１）の外部、およびタスク実行手段（２）によって実行されるＯＳカーネルを含むいかなるタスクの要求に基づいても、タスクプライベート情報メモリ（７）のタスクプライベート情報格納領域（４０）に対する、命令の実行による読み出し、書き込みおよび実行などの通常のアクセスができないようになっている。換言すれば、タスクプライベート情報格納領域（４０）へのアクセスは、タスク実行手段（２）の動作による内部的な呼び出しによってできるものである。
【００４９】
図３（ｃ）は、ページメモリ（６）のメモリマップの概念図である。
ページメモリ（６）は、上記のとおりプライベートページ（５０）を有しており、また、各プライベートページ（５０）に対応して、各プライベートページ（５０）に関する情報を記憶するページヘッダ（５１）を有している。ページヘッダ（５１）には、プライベートページ（５０）を割り当てられたタスクのタスク識別子（３２）と同じ値が設定される所属タスク識別子（５２）と、プライベートページ（５０）が割り当てられたタスクのタスクプライベート情報に含まれるタスク秘密情報（４４）と同じ値が設定されるタスク秘密情報（５３）が記憶される。
【００５０】
なお、タスク実行手段（２）は、プログラム実行保護プロセッサ（１）の外部、およびタスク実行手段（２）によって実行されるＯＳカーネルを含むいかなるタスクの要求に基づいても、ページメモリ（６）のページヘッダ（５１）に対する、命令の実行による読み出し、書き込みおよび実行などの通常のアクセスできないようになっている。
【００５１】
また、タスク実行手段（２）は、プログラム実行保護プロセッサ（１）の外部、および、アクセス判断手段（８）によってアクセスが許可されたものを除くタスクの要求に基づいては、ページメモリ（６）のプライベートページ（５０）に対する、命令の実行による読み出し、書き込みおよび実行などの通常のアクセスできないようになっている。
【００５２】
また、プログラム実行保護プロセッサ（１）は、後述するページメモリレジスタ（９）と、タスク実行手段（２）によって実行されているタスクを示す情報が記憶される実行タスクレジスタ（１３）と、タスク実行手段（２）によって実行されているタスクに関する情報（例えば、特権レベルや割り込みの可否など）が記憶されるプロセッサ状態レジスタ（１４）とを備えている。
【００５３】
なお、プログラム実行保護プロセッサ（１）は、図示しないものの、公知のＣＰＵが備える算術論理演算ユニット、汎用レジスタ、プログラムカウンタ、データバッファなどをも備えているとする。
【００５４】
タスク実行手段（２）は、複数のタスクを起動することができ、起動した複数のタスクから１つのタスクを選択して、このタスクを実行するための命令をメインメモリ（１１）やページメモリ（６）から取り出し、取り出した命令を解読し、解読した命令に従ってメインメモリ（１１）やページメモリ（６）からデータを読み取ったり、メインメモリ（１１）やページメモリ（６）にデータを書き込んだりすることができる。また、タスク実行手段（２）は、実行されるタスクの要求などに応じてアクセス判断手段（８）、暗号情報取得手段（４）、復号化手段（５）、メインメモリ（１１）などの動作処理を制御するようにもなっている。
【００５５】
暗号情報取得手段（４）は、ネットワークインタフェイス（１４０）を介して、鍵ペア生成手段（３）によって生成された公開鍵、およびタスクによって要求されたプログラムコードを識別するためのコード識別情報を図示しないサーバ装置に送信する。
【００５６】
ここでサーバ装置とは、タスクプログラムコードのベンダーや公的な機関などの信頼される機関に設置されているものである。サーバ装置は、ネットワークに通信可能に接続されているので、暗号情報取得手段（４）によって送信された公開鍵およびコード識別情報を受信できるようになっている。また、サーバ装置は、受信したコード識別情報に応じた復号鍵を、受信した公開鍵で暗号化し、暗号化した暗号情報をプログラム実行装置（１０）に送信するようになっている。
【００５７】
そして、暗号情報取得手段（４）は、公開鍵およびコード識別情報の送信を受けたサーバ装置によって送信された暗号情報を、ネットワークインタフェイス（１４０）を介して受信する。
【００５８】
復号化手段（５）は、暗号情報取得手段（４）によって取得された暗号情報を鍵ペア生成手段（３）によって生成された秘密鍵をもって復号化し、復号化して得られた復号鍵もって、暗号化されたプログラムコードやデータを復号する。
【００５９】
暗号化されたプログラムコードやデータは、プログラム実行装置（１０）のハードディスクなどの外部記憶装置（１３）に既に記憶されているものとする。プログラム実行装置（１０）は、暗号化されたプログラムコードやデータを、ネットワークやＣＤ−ＲＯＭなどの記録媒体を介して取得するようにしてもよい。
【００６０】
なお、ここでは、サーバ装置から受信する暗号情報は、暗号化されたプログラムコードやデータを復号するため復号鍵が公開鍵によって暗号化されたものとした。しかし、このような形態に限るものではなく、サーバ装置から受信する暗号情報は、公開鍵で暗号化されたプログラムコードやデータとし、この暗号情報を復号化手段（５）において秘密鍵をもって復号するとしてもよい。
【００６１】
図４は、メインメモリ（１１）、タスクプライベート情報メモリ（７）、およびページメモリ（６）のそれぞれに記憶された情報の関連を示す関連図である。
【００６２】
実行タスクレジスタ（１３）には、実行タスクに対応するタスク管理情報格納領域（３１）のメインメモリ（１１）における記憶アドレスが記憶される。また、タスク管理情報格納領域（３１）のタスク管理情報に含まれるタスク識別子（３２）には、タスクプライベート情報格納領域（４０）のインデックスが設定されており、タスク実行手段（２）は、タスク識別子（３２）に基づいてタスクプライベート情報格納領域（４０）のタスクプライベート情報を取得することができる。
【００６３】
上述のとおり、タスクプライベート情報格納領域（４０）のタスクプライベート情報に含まれるタスク管理情報ポインタ（４１）は、メインメモリ（１１）におけるタスク管理情報格納領域（３１）の記憶アドレスを表している。従って、タスク管理情報格納領域（３１）のタスク管理情報に含まれるタスク識別子（３２）に基づいて取得されるタスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）が、タスク管理情報格納領域（３１）の記憶アドレスを表すか否かによって、タスク識別子（３２）が改竄のない正当なものであるか否かを検証することができる。
【００６４】
ページテーブル（３３）は、論理アドレステーブルを構成し、ページテーブル（３３）を構成する各ページテーブルエントリは、プライベートページ（５０）またはページ（３０）を示す物理アドレスが記憶されている。すなわち、ページテーブル（３３）は、論理アドレスを物理アドレスに変換するために参照される。
【００６５】
ところで、ページメモリレジスタ（９）は、物理アドレスのどの領域にプライベートページ（５０）をマップするかを表す情報（マップ情報）を記憶するようになっている。つまり、ページメモリレジスタ（９）に記憶されるマップ情報を参照することによって、プライベートページ（５０）かであるか否かが判別することになる。もしプライベートページ（５０）ではない物理アドレスが示されるならば、ページ（３０）を示していることになる。ここで、プライベートページ（５０）を連続する物理アドレス領域にマップする場合には、ページメモリレジスタ（９）は、マップする領域の先頭アドレスとサイズまたは終端アドレスとを記憶するようにすることができる。なお、サイズや終端アドレスは、ページメモリ（６）中のプライベートページ（５０）に割り当てられた記憶容量から得るようにしてもよい。
【００６６】
なお、ページヘッダ（５１）とプライベートページ（５０）とは、ページメモリ（６）における記憶順序で対応付けられている。もちろん、ページヘッダ（５１）の記憶領域とプライベートページ（５０）とを連続した領域に割り当てることによって対応付けてもよく、あるいは、ページヘッダ（５１）にプライベートページ（５０）を示すページメモリ（６）内の位置情報を含めて対応付けてもよい。
【００６７】
このため、実行タスクがページテーブル（３３）のページテーブルエントリに基づいてプライベートページ（５０）にアクセス要求する場合には、このプライベートページ（５０）に対応するページヘッダ（５１）のタスク秘密情報（５３）と、タスクプライベート情報格納領域（４０）のタスク秘密情報（４４）とが一致するか否かに基づいて、ページヘッダ（５１）とタスクプライベート情報格納領域（４０）とが正しく対応付けられているか否かを検証することができることになる。
【００６８】
次に、アクセス判断手段（８）について説明する。アクセス判断手段（８）は、実行タスクによってプライベートページ（５０）へのアクセス要求があった場合に、プライベートページ（５０）に対するアクセスを許可するか否かを判断するようになっている。
【００６９】
具体的には、アクセス判断手段（８）は、実行タスクに対応するタスク管理情報格納領域（３１）のタスク識別子（３２）と、アクセスが要求されたプライベートページ（５０）に対応するページヘッダ（５１）の所属タスク識別子（５２）とが等しいか否かに基づいて、実行タスクによるプライベートページ（５０）に対するアクセスを許可するか否かを判断するようになっている。
【００７０】
なお、アクセス判断手段（８）は、上述したページメモリレジスタ（９）に記憶されたマップ情報に基づいて、実行タスクが要求する物理アドレスへのアクセスが、プライベートページ（５０）に対するものか、メインメモリ（１１）のページ（３０）に対するものかの何れであるかを判断するようになっている。
【００７１】
以下に、プログラム実行保護プロセッサ（１）の動作を説明する。
図５は、プログラム実行保護プロセッサ（１）におけるタスク起動動作を示すフローチャートである。
【００７２】
タスクが起動されると、まず、タスク管理情報を記憶するための領域であるタスク管理情報格納領域（３１）がＯＳによってメインメモリ（１１）に割り当てられて初期化される（Ｓ１）。なお、タスク管理情報格納領域（３１）が初期化された際に、タスク管理情報格納領域（３１）のタスク識別子（３２）は所定の未定義値に設定される。
【００７３】
次に、タスクプライベート情報を記憶するための領域であるタスクプライベート情報格納領域（４０）が、タスク実行手段（２）によって、タスクプライベート情報メモリ（７）に割り当てられて初期化される（Ｓ２）。そして、タスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）には、ステップＳ１において初期化されたタスク管理情報格納領域（３１）のメインメモリ（１１）における記憶アドレスが設定される（Ｓ３）。また、タスク実行手段（２）は、乱数を生成して、これをタスクプライベート情報格納領域（４０）のタスク秘密情報（４４）に設定する（Ｓ４）。なお、ここでの乱数は、外部から予測不可能であれば擬似乱数生成アルゴリズムに基づく擬似乱数であってもよい。
【００７４】
次に、タスク実行手段（２）は、ステップＳ２において初期化されたタスクプライベート情報格納領域（４０）のインデックスを、ステップＳ１において初期化されたタスク管理情報格納領域（３１）のタスク識別子（３２）に設定する（Ｓ５）。
【００７５】
次に、公開鍵および秘密鍵からなる鍵ペアが鍵ペア生成手段（３）によって生成される（Ｓ６）。そして、鍵ペア生成手段（３）で生成された公開鍵および秘密鍵は、タスクプライベート情報格納領域（４０）の公開鍵（４３）および秘密鍵（４２）として設定される（Ｓ７）。
【００７６】
なお、タスクプログラムコードにおいて鍵ペア生成に必要な一連の処理を不可分に行う鍵生成命令が記述されることで、タスク実行手段（２）において、その鍵生成命令を実行して鍵ペアを生成するようにしてもよい。
【００７７】
上述したタスク起動動作において、ステップＳ６以降の各ステップは、タスク起動時に処理されるものとして限定されるのではなく、実行タスクによる動的な要求に応じて処理されるようにしてもよい。
【００７８】
また、プログラム実行保護プロセッサ（１）は、プライベートページ（５０）を要しないタスクにも適用することができる。この場合、プライベートページ（５０）を要しないタスクに対しては、ステップＳ２以降の各ステップを処理しない。従って、プライベートページ（５０）を要しないタスクに対するタスク識別子（３２）は、タスク実行時において未定義値となる。
【００７９】
図６は、プログラム実行保護プロセッサ（１）におけるプログラムコード要求動作を示すフローチャートである。プログラムコード要求動作は、実行タスクによってプログラムコードの読み込み要求があった時に、タスク実行手段（２）によって実行される。また、プログラムコードの場合だけでなく、データの読み込み要求があった場合も同様の手順で処理される。なお、以下に説明するプログラムコード要求動作は、プライベートページ（５０）を要しないタスクに対しては行われない。
【００８０】
まず、プライベートページ（５０）がページメモリ（６）に割り当てられて確保される（Ｓ１０）。続いて、プライベートページ（５０）に関する情報を記憶するページヘッダ（５１）がページメモリ（６）に割り当てられて初期化される（Ｓ１１）。
【００８１】
次に、ページヘッダ（５１）の所属タスク識別子（５２）が、実行タスクに対応するタスク管理情報格納領域（３１）のタスク識別子（３２）と同じ値に設定される（Ｓ１２）。さらに、ページヘッダ（５１）のタスク秘密情報（５３）が、タスク識別子（３２）に基づいて得られるタスクプライベート情報格納領域（４０）のタスク秘密情報（４４）と同じ値に設定される（Ｓ１３）。
【００８２】
次に、タスクプライベート情報格納領域（４０）の公開鍵（４３）および実行タスクによって要求されたプログラムコードを識別するためのコード識別情報が、暗号情報取得手段（４）によってネットワークインタフェイス（１４０）を介してサーバ装置に送信される（Ｓ１４）。なお、コード識別情報は、タスクプログラムコードに記述されていて、タスク実行時にメインメモリ（１１）から呼び出される。
【００８３】
暗号情報取得手段（４）によって送信された公開鍵（４３）およびコード識別情報は、上述したサーバ装置によって受信される。サーバ装置は、コード識別情報に応じたプログラムコードやデータを復号するための復号鍵を、公開鍵（４３）をもって暗号化し、この暗号化された暗号情報を、ネットワークを介してプログラム実行装置（１０）に送信する。
【００８４】
サーバ装置から送信された暗号情報は、ネットワークインタフェイス（１４０）を介して暗号情報取得手段（４）によって受信される（Ｓ１５）。受信された暗号情報は、復号化手段（５）によって、タスクプライベート情報格納領域（４０）の秘密鍵（４２）をもって復号化され、復号鍵が得られる（Ｓ１６）。
【００８５】
次に、復号化手段（５）は、復号化して得られた復号鍵をもって、実行タスクによって要求されたプログラムコードを復号化し（Ｓ１７）、ステップＳ１０において割り当てられたプライベートページ（５０）に書き込む（Ｓ１８）。なお、ステップＳ１７およびステップＳ１８は、不可分の処理として実行してもよい。即ち、プログラムコードを復号化しながらプライベートページ（５０）への書き込みを実行するのである。なお、ここでプログラムコードやデータは、外部記憶装置（１３）からメインメモリ（１１）に呼び出されているものとする。
【００８６】
なお、プログラム実行保護プロセッサ（１）は、１つのタスクに対して、複数のプライベートページ（５０）を動的に割り当てることができるようになっている。例えば、複数のタスクが起動されることによって、プライベートページ（５０）が割り当てられる場合もあるし、１つのタスクの起動によって、プログラムコード要求動作が複数回実行される場合もある。
【００８７】
上述したプログラムコード要求動作は、実行タスクに対応するタスク管理情報格納領域（３１）のタスク識別子（３２）に基づいて、タスクプライベート情報格納領域（４０）のインデックスを取得し、この取得したインデックスが示すタスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）が、メインメモリ（１１）における実行タスクに対応するタスク管理情報格納領域（３１）の記憶アドレスを表していることを検証した後に行うようにしてもよい。
【００８８】
上記のプログラムコード要求動作で割り当て・初期化されるプライベートページは、実行タスクによって読み込み要求のあったプログラムコードを書き込むためのものとして説明したが、プライベートページは、プログラムコードを書き込むためだけに割り当て・初期化されるものではない。例えば、プログラムで内部的に用いるデータを書き込むためにプライベートページが用いられるものであってもよい。さらに、実行可能なコードを含まないプログラムデータ要求動作によってプライベートページが割り当て・初期化されるとしてもよい。
【００８９】
図７は、プログラム実行保護プロセッサ（１）におけるプライベートページ（５０）に対するアクセス判断動作を示すフローチャートである。以下に説明するプライベートページ（５０）に対するアクセス判断動作は、実行タスクによってプライベートページ（５０）に対するアクセス要求があった時にアクセス判断手段（８）によって実行される。
【００９０】
実行タスクによってプライベートページ（５０）に対するアクセス要求がなされると、アクセス判断手段（８）はまず、アクセスが要求されたプライベートページ（５０）に対応するページヘッダ（５１）をページメモリ（６）から取得する（Ｓ２０）。続いて、取得されたページヘッダ（５１）の所属タスク識別子（５２）に基づいてタスクプライベート情報メモリ（７）からタスクプライベート情報格納領域（４０）のタスクプライベート情報を取得する（Ｓ２１）。
【００９１】
ここで、ページヘッダ（５１）とタスクプライベート情報格納領域（４０）とが正しく対応付けられているか否かを検証するために、ページヘッダ（５１）のタスク秘密情報（５３）とタスクプライベート情報格納領域（４０）のタスク秘密情報（４４）とが等しいか否かを判断する（Ｓ２２）。
【００９２】
タスク秘密情報（５３）とタスク秘密情報（４４）とが等しくないと判断された場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ２３）。一方、タスク秘密情報（５３）とタスク秘密情報（４４）とが等しいと判断された場合には、アクセス判断手段（８）は、タスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）に基づいて、メインメモリ（１１）からタスク管理情報格納領域（３１）の記憶アドレスを取得する（Ｓ２４）。
【００９３】
次に、取得されたタスク管理情報格納領域（３１）の記憶アドレスが、実行タスクレジスタ（１３）に記憶されるタスク管理情報格納領域（３１）の記憶アドレスと等しいか否かが判断される（Ｓ２５）。取得されたタスク管理情報格納領域（３１）の記憶アドレスが、実行タスクレジスタ（１３）に記憶されるタスク管理情報格納領域（３１）の記憶アドレスと等しくないと判断された場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ２３）。即ち、プライベートページ（５０）を割り当てられたタスクと、実行タスクとが異なる場合には、プライベートページ（５０）に対するアクセスは禁止されるのである。
【００９４】
一方、取得されたタスク管理情報格納領域（３１）の記憶アドレスが、実行タスクレジスタ（１３）に記憶されるタスク管理情報格納領域（３１）の記憶アドレスと等しいと判断された場合には、ステップＳ２４において取得された記憶アドレスに示されるタスク管理情報格納領域（３１）のタスク識別子（３２）とページヘッダ（５１）の所属タスク識別子（５２）とが等しいか否かが判断される（Ｓ２６）。
【００９５】
タスク識別子（３２）と所属タスク識別子（５２）とが等しいと判断された場合には、プライベートページ（５０）に対するアクセスは許可される（Ｓ２７）。しかし、タスク識別子（３２）と所属タスク識別子（５２）とが等しくないと判断された場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ２３）。
【００９６】
なお、ステップＳ２２において、タスク秘密情報（５３）とタスク秘密情報（４４）とが等しくないと判断された場合には、タスク実行手段（２）によって、タスク秘密情報（５３）を含むページヘッダ（５１）およびこのページヘッダ（５１）と対応するプライベートページ（５０）に記憶された情報を復元できないように消去してからページヘッダ（５１）およびプライベートページ（５０）を開放するようにしてもよい。
【００９７】
また、ステップＳ２３において、プライベートページ（５０）に対するアクセスを禁止するのに加えて、実行タスクに対する例外処理（例えば強制終了など）を実行するようにしてもよい。
【００９８】
図８は、プログラム実行保護プロセッサ（１）におけるタスク終了動作を示すフローチャートである。以下に説明するタスク終了動作は、実行タスクが終了するときに実行される。
【００９９】
タスク実行手段（２）は、実行タスクに対応するタスク管理情報格納領域（３１）のページテーブル（３３）を構成する全てのページテーブルエントリについて、順次、下記のステップＳ３１〜Ｓ３４を繰り返す。
まず、タスク実行手段（２）は、実行タスクに対応するタスク管理情報格納領域（３１）のページテーブル（３３）を構成するあるページテーブルエントリが、ページ（３０）を示すものであるか、あるいはプライベートページ（５０）を示すものであるかを、ページメモリレジスタ（９）に記憶されたマップ情報に基づいて判断する（Ｓ３０、Ｓ３１）。
【０１００】
ステップＳ３１において、ページテーブルエントリがページ（３０）を示すと判断された場合には、メインメモリ（１１）に記憶された該当のページ（３０）がタスク実行手段（２）によって開放される（Ｓ３２）。一方、ページテーブルエントリがプライベートページ（５０）を示すと判断された場合には、ページメモリ（６）の該当のプライベートページ（５０）に記憶された情報が復元できないようにタスク実行手段（２）によって消去されてからプライベートページ（５０）が開放される（Ｓ３３）。
【０１０１】
さらに、プライベートページ（５０）と対応するページヘッダ（５１）についても、ページヘッダ（５１）に含まれる情報が復元できないようにタスク実行手段（２）によって消去され、ページヘッダ（５１）が開放される（Ｓ３４）。
【０１０２】
あるページテーブルエントリについてステップＳ３４が終了すると、次のページテーブルエントリについてステップＳ３１〜Ｓ３４の繰り返すことによって、全てのページテーブルエントリについてステップＳ３１〜Ｓ３４の処理が実行される。
【０１０３】
以上の処理の後、タスクプライベート情報メモリ（７）に対するタスクプライベート情報格納領域（４０）のインデックスがタスク管理情報（３１）のタスク識別子（３２）に基づいてタスク実行手段（２）によって取得される。そして、取得されたインデックスに示されるタスクプライベート情報格納領域（４０）のタスクプライベート情報が復元できないようにタスク実行手段（２）によって消去されてから、タスクプライベート情報格納領域（４０）が開放される（Ｓ３６）。
【０１０４】
次に、実行タスクに対応する、メインメモリ（１１）に記憶されたタスク管理情報格納領域（３１）のタスク管理情報が復元できないようにＯＳによって消去されてからタスク管理情報格納領域（３１）が開放される（Ｓ３７）。
【０１０５】
なお、ステップＳ３３およびステップＳ３４を処理する前に、ページヘッダ（５１）に含まれる所属タスク識別子（５２）に基づいてタスクプライベート情報格納領域（４０）のインデックスを取得し、取得したインデックスに示されるタスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）によって示されたタスク管理情報格納領域（３１）の記憶アドレスが、実行タスクレジスタ（１３）に記憶されるタスク管理情報格納領域（３１）の記憶アドレスと等しいか否かを検証した後に、ステップＳ３３およびステップＳ３４を処理するようにしてもよい。
【０１０６】
また、ステップＳ３２からステップＳ３４までの各処理は、実行タスクからの要求に応じて動的に処理されるようにしてもよい。
【０１０７】
また、ステップＳ３６を処理する前に、タスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）に示されたタスク管理情報格納領域（３１）の記憶アドレスが、実行タスクレジスタ（１３）に記憶されるタスク管理情報格納領域（３１）の記憶アドレスと等しいか否かを検証した後にステップＳ３６を処理するようにしてもよい。
【０１０８】
以上で説明したタスク終了動作において、メインメモリ（１１）に記憶されたタスク管理情報格納領域（３１）のタスク識別子（３２）やページテーブル（３３）が他のタスクなどによって書き換えられていた場合には、プライベートページ（５０）、ページヘッダ（５１）およびタスクプライベート情報格納領域（４０）が消去されないままになる可能性が生じる。このため、タスク実行手段（２）は、以下に示す不要情報消去動作を実行するようになっている。
【０１０９】
図９は、プログラム実行保護プロセッサ（１）における不要情報消去動作を示すフローチャートである。なお、以下に説明する不要情報消去動作は、タスク実行手段（２）によって、定期的に実行されるようにしてもよいし、各タスクを起動する前や各タスクが終了した後に実行されるようにしてもよい。
【０１１０】
タスクプライベート情報メモリ（７）に記憶された全てのタスクプライベート情報格納領域（４０）について、順次、下記のステップＳ４１〜Ｓ４４を繰り返す。
まず、タスクプライベート情報メモリ（７）に記憶されたあるタスクプライベート情報格納領域（４０）のタスク管理情報ポインタ（４１）に基づいて、メインメモリ（１１）におけるタスク管理情報格納領域（３１）のタスク管理情報を取得する（Ｓ４０、Ｓ４１）。
【０１１１】
もしステップ４１において、タスク管理情報格納領域（３１）のタスク管理情報が取得されなかった場合には、タスクプライベート情報格納領域（４０）のタスクプライベート情報に対応するタスクが存在しないことになるため、タスクプライベート情報格納領域（４０）が復元できないように消去されてからタスクプライベート情報格納領域（４０）が開放される（Ｓ４２）。
【０１１２】
次に、ステップＳ４１でタスク管理情報格納領域（３１）のタスク管理情報が取得された場合、取得されたタスク管理情報のタスク識別子（３２）がタスクプライベート情報格納領域（４０）のインデックスと一致するか否かが判断される（Ｓ４３）。
【０１１３】
タスク識別子（３２）がタスクプライベート情報格納領域（４０）のインデックスと一致しないと判断された場合には、タスクプライベート情報格納領域（４０）とタスクとの対応が正しくないことになるため、タスクプライベート情報格納領域（４０）が復元できないように消去されてからタスクプライベート情報格納領域（４０）が開放される（Ｓ４２）。
【０１１４】
ステップ４３において、タスク識別子（３２）がタスクプライベート情報格納領域（４０）のインデックスと一致すると判断された場合は、ステップＳ４４において、全てのタスクプライベート情報格納領域について、上記処理が終了したと判断し、もし終了していないならば、次のタスクプライベート情報格納領域（４０）についてステップＳ４１〜Ｓ４４を処理する。
ステップＳ４４において、全てのタスクプライベート情報格納領域（４０）について上記ステップの処理がなされたと判断されたら、続く下記のステップに移行する。
【０１１５】
以上の処理の後、ページメモリ（６）に記憶された全てのページヘッダ（５１）について、順次、下記のステップＳ４６〜Ｓ５０を繰り返す。
まず、ページメモリ（６）に記憶されたあるページヘッダ（５１）の所属タスク識別子（５２）に基づいて、タスクプライベート情報メモリ（７）におけるタスクプライベート情報格納領域（４０）のタスクプライベート情報を取得する（Ｓ４５、Ｓ４６）。
【０１１６】
もしステップ４６で、タスクプライベート情報格納領域（４０）のタスクプライベート情報が未割り当てまたは開放済みなどの理由によって取得されなかった場合には、ページヘッダ（５１）に対応するタスクプライベート情報格納領域（４０）が存在しないことになるため、ページヘッダ（５１）が復元できないように消去されてからページヘッダ（５１）が開放される（Ｓ４７）。
【０１１７】
続いて、ページヘッダ（５１）に対応するプライベートページ（５０）に記憶された情報が復元できないように消去されてからプライベートページ（５０）が開放される（Ｓ４８）。
【０１１８】
次に、ステップＳ４６においてタスクプライベート情報格納領域（４０）のタスクプライベート情報が取得された場合、取得されたタスクプライベート情報のタスク秘密情報（４４）とページヘッダ（５１）のタスク秘密情報（５３）とが等しいか否かが判断される（Ｓ４９）。
【０１１９】
ここで、タスク秘密情報（４４）とタスク秘密情報（５３）とが等しくないと判断された場合には、ページヘッダ（５１）とタスクプライベート情報格納領域（４０）とが正しく対応付けられていないことになるため、ページヘッダ（５１）が復元できないように消去されてからページヘッダ（５１）が開放される（Ｓ４７）。
【０１２０】
続いて、ページヘッダ（５１）に対応するプライベートページ（５０）に記憶された情報が復元できないように消去されてからプライベートページ（５０）が開放される（Ｓ４８）。
【０１２１】
ステップＳ４９において、タスク秘密情報（４４）とタスク秘密情報（５３）とが等しいと判断された場合には、ステップＳ５０において、全てのページヘッダーについて上記処理が終了したかを判断し、もし終了していないならば、次のページヘッダ（５１）についてステップＳ４６〜Ｓ５０を処理する。ステップＳ５０において、全てのページヘッダについて上記処理が終了したと判断されれば、不要情報消去処理は終了する。
【０１２２】
以上説明したように、本発明の第１の実施形態のプログラム実行保護プロセッサ（１）によれば、プログラム実行保護プロセッサ（１）内部に設けられたプライベートページ（５０）に対するアクセスが、アクセス判断手段（８）によって許可されたタスクに制限されるため、プログラムの実行が中断された際にプログラムコードの暗号化などの処理負荷をかけずに、タスクの実行環境を外部からの不正なアクセスから保護することができる。
【０１２３】
＜第２の実施形態＞
図１０は、本発明の第２の実施形態に係るプログラム実行保護プロセッサ（６１）を含むプログラム実行装置（６０）の構成を示すブロック図である。なお、本発明の第２の実施形態におけるプログラム実行装置（６０）においては、上述した第１の実施形態におけるプログラム実行装置（１０）の構成要素と同一の構成要素に同一の符号を付して、その説明を省略する。
【０１２４】
プログラム実行装置（６０）は、ＣＰＵによって構成されるプログラム実行保護プロセッサ（６１）と、メインメモリ（１１）と、ネットワークインタフェイス（１４０）とを備えている。
【０１２５】
ここで、第２の実施形態におけるプログラム実行保護プロセッサ（６１）においては、上述した第１の実施形態におけるプログラム実行保護プロセッサ（１）の構成要素と同一の構成要素に同一の符号を付して、その説明を省略する。
【０１２６】
プログラム実行保護プロセッサ（６１）は、タスク実行手段（２）と、鍵ペア生成手段（３）と、暗号情報取得手段（４）と、復号化手段（５）と、ページメモリ（６）と、他のタスクから秘匿化する情報であってタスクを管理するためのタスクプライベート情報を記憶するタスクプライベート情報メモリ（６２）と、実行タスクによるプライベートページに対するアクセスを許可するか否かを判断するアクセス判断手段（６３）と、ページメモリレジスタ（９）と、実行タスクレジスタ（１３）と、プロセッサ状態レジスタ（１４）とを備えている。
【０１２７】
図１１は、タスクプライベート情報メモリ（６２）のメモリマップの概念図である。タスクプライベート情報メモリ（６２）は、タスクプライベート情報を記憶するタスクプライベート情報格納領域（７０）を有する。タスクプライベート情報には、第１の実施形態において説明したタスクプライベート情報格納領域（４０）と同様に、タスク管理情報ポインタ（４１）と、タスク秘密情報（４４）と、秘密鍵（４２）と、公開鍵（４３）とが含まれる。また、このタスクプライベート情報は、タスク実行手段（２）によって起動されているタスク毎に、タスクプライベート情報格納領域（７０）に記憶される。
【０１２８】
また、タスクプライベート情報格納領域（７０）のタスクプライベート情報には、タスク実行手段（２）によって実行されるタスクの処理が記述されたタスクプログラムコードを識別する第１プログラム識別子（７１）と、プライベートページ（５０）に対する他のタスクからのアクセス条件が記述されたアクセス制御情報（７２）とがさらに含まれる。アクセス制御情報（７２）は、プライベートページ（５０）が割り当てられたタスク毎に設けられる。
【０１２９】
ここで、プログラム識別子（７１）は、グローバルに割り当てられるもので、例えば、プログラムベンダーの識別子と、プログラムベンダー内のローカルな識別子との組み合わせやプログラム名などよりなる。なお、タスクプログラムコードに異なるバージョンがある場合などには、複数のタスクプログラムコードに対して１つのプログラム識別子が割り当てられていてもよい。
【０１３０】
図１２は、アクセス制御情報（７２）のデータ構成図である。
アクセス制御情報（７２）は、プライベートページ（５０）などのリソースに対するアクセスを要求するタスクが記述されたタスクプログラムコードを識別するためのプログラム識別子（７４）と、アクセス対象のリソース（７５）と、読み出し、書込み、および実行などを表すアクセス種別（７６）と、リソースにアクセスするタスクの実行ユーザの属性や実行環境などの環境情報の制約を表す付加条件（７７）と、アクセスの可否を表すアクセス可否（７８）を含む複数のアクセス条件（７３）によって構成される。なお、ここで実行環境とは、タスクが実行される特権レベル、割り込み許可条件、ハードウェア構成情報などを含むものである。
【０１３１】
アクセス判断手段（６３）は、実行タスクと対応するタスク管理情報格納領域（３１）のタスク識別子（３２）と、アクセスが要求されたプライベートページ（５０）に対応するページヘッダ（５１）の所属タスク識別子（５２）とが等しいか否かに加えて、上記アクセス制御情報（７２）に基づいて、実行タスクによるプライベートページ（５０）へのアクセスを許可するか否かを判断するようになっている。
【０１３２】
プログラム実行保護プロセッサ（６１）は、さらに、タスクプログラムコードとプログラム識別子との関係を証明するプログラム証明書を検証するプログラム証明書検証手段（６４）をさらに備えている。
【０１３３】
ここで、プログラム証明書について図面を参照して説明する。
図１３は、プログラム証明書のデータ構成図である。
【０１３４】
メインメモリ（１１）に記憶されるプログラム証明書（８０）は、プログラム識別子（８１）と、タスクプログラムコードの不変部分を一方向性ハッシュ関数にかけることよって得られるプログラムフィンガープリント（８２）と、タスクプログラムコードとプログラム識別子（８１）との関係を証明する条件を表す証明条件情報（８３）と、プログラム証明書（８０）の発行日時（８４）と、プログラム証明書（８０）の有効期間（８５）と、タスクプログラムコードのベンダーやバージョンなどのタスクプログラムコードに関する情報を含む属性情報（８６）と、アクセス制御情報（７２）を生成する元のデータであるアクセス制御情報（８７）と、プログラム証明書（８０）の発行機関（８８）とを含んでいる。ここで、証明条件情報（８３）には、タスクの実行ユーザの属性や実行環境などの制約などの証明条件が記述されている。
【０１３５】
また、プログラム証明書（８０）は、プログラム識別子（８１）、プログラムフィンガープリント（８２）、証明条件情報（８３）、発行日時（８４）、有効期間（８５）、属性情報（８６）、アクセス制御情報（８７）、および発行機関（８８）に対する署名情報（８９）を含んでいる。
【０１３６】
署名情報（８９）は、上記各情報を一方向性ハッシュ関数にかけた値を発行機関（８８）に示される機関の秘密鍵を用いて計算したディジタル署名や認証子（ＭＡＣ；Message Authentication Code）などである。ここで、発行機関（８８）は、タスクプログラムコードのベンダーや公的な機関などの信頼される機関である。
【０１３７】
プログラム証明書検証手段（６４）は、署名情報（８９）をもってプログラム証明書（８０）が改竄されていないことを検証するようになっている。また、プログラム証明書検証手段（６４）は、ユーザの属性、タスクプログラムコードの属性、日時、およびプログラム実行装置（６０）の属性などの環境情報に基づいて証明条件情報（８３）に記述された証明条件を満たしているか否かを判断するようになっている。
【０１３８】
さらに、プログラム証明書検証手段（６４）は、発行日時（８４）および有効期間（８５）に基づいてプログラム証明書（８０）の有効期限を現在日時が過ぎているか否かを判断するようになっている。また、プログラム証明書検証手段（６４）は、プログラムフィンガープリント（８２）をもってタスクプログラムコードが改竄されていないことを検証するようになっている。
【０１３９】
プログラム証明書検証手段（６４）は、署名情報（８９）に基づき、プログラム証明書（８０）を検証することによって、タスクプログラムコードとプログラム識別子（８１）との関係を証明すると共に、アクセス制御情報（８７）が改竄されていないことを証明した上で、証明したプログラム識別子（８１）をタスクプライベート情報格納領域（７０）の第１プログラム識別子（７１）に設定し、証明したアクセス制御情報（８７）をタスクプライベート情報格納領域（７０）のアクセス制御情報（７２）に設定する。
【０１４０】
プログラム証明書検証手段（６４）は、タスク実行手段（２）によって起動されるタスクのタスクプログラムコードに基づいてプログラムフィンガープリントを算出し、算出したプログラムフィンガープリントに基づいてプログラム証明書（８０）を取得するようになっている。なお、タスクプログラムコードに埋め込まれたプログラム識別子（８１）に基づいてプログラム証明書（８０）を取得するようにしてもよい。
【０１４１】
なお、プログラム証明書検証手段（６４）は、ネットワーク上のサーバ装置や、ハードディスクなどの不揮発性の記憶装置、および着脱可能な記憶媒体などからプログラム証明書（８０）を取得するようにしてもよい。
【０１４２】
以下に、プログラム実行保護プロセッサ（６１）の動作を説明する。
なお、以下に説明するプログラム実行保護プロセッサ（６１）の動作において、タスク起動動作、プログラムコード要求動作、タスク終了動作、および不要情報消去動作については、第１の実施形態で説明したものと同様であるためその説明を省略する。
【０１４３】
図１４は、プログラム実行保護プロセッサ（６１）におけるプログラム証明書検証動作を示すフローチャートである。以下に説明するプログラム証明書検証動作は、タスク起動動作に続いて実行される。
【０１４４】
まず、プログラム証明書検証手段（６４）によってプログラム証明書（８０）がメインメモリ（１１）から取得される（Ｓ６０）。ステップＳ６０において、プログラム証明書（８０）が取得できた場合には、プログラム証明書（８０）に含まれる署名情報（８９）をもってプログラム証明書（８０）が改竄されていないかが検証される（Ｓ６１）。
【０１４５】
ステップＳ６１において、プログラム証明書（８０）が改竄されていないと検証された場合には、ユーザの属性、タスクプログラムコードの属性、日時およびプログラム実行装置（６０）の属性などの環境情報がプログラム証明書（８０）に含まれる証明条件情報（８３）に記述された証明条件を満たしているか否かがプログラム証明書検証手段（６４）によって判断される（Ｓ６２）。なお、ここでユーザの属性とは、特権ユーザか否かなどを表し、タスクプログラムコードの属性とは、読み出し、書き込みおよび実行などの許可設定、実行時の特権モードの指定などを表し、プログラム実行装置（６０）の属性とは、サポートする機能や構成要素に関する情報などを表すものである。
【０１４６】
ステップＳ６２において、環境情報が証明条件情報（８３）に記述された証明条件を満たしていると判断された場合には、プログラム証明書（８０）に含まれる発行日時（８４）および有効期間（８５）に基づいてプログラム証明書（８０）の有効期限を現在日時が過ぎているか否かがプログラム証明書検証手段（６４）によって検証される（Ｓ６３）。
【０１４７】
ステップＳ６３において、プログラム証明書（８０）の有効期限を現在日時が過ぎていないと判断された場合には、プログラム証明書（８０）に含まれるプログラムフィンガープリント（８２）をもってタスクプログラムコードが改竄されていないことがプログラム証明書検証手段（６４）によって検証される（Ｓ６４）。
【０１４８】
ステップＳ６４において、タスクプログラムコードが改竄されていないと検証された場合には、プログラム証明書（８０）に含まれるプログラム識別子（８１）がプログラム証明書検証手段（６４）によってタスクプライベート情報格納領域（７０）に含まれる第１プログラム識別子（７１）に設定され（Ｓ６５）、続いて、プログラム証明書（８０）に含まれるアクセス制御情報（８７）がタスクプライベート情報格納領域（７０）のアクセス制御情報（７２）に設定される（Ｓ６６）。
【０１４９】
なお、プログラム実行保護プロセッサ（６１）においては、図５を参照して説明したタスク起動動作のステップＳ２でタスクプライベート情報格納領域（７０）が初期化された時に、タスクプライベート情報格納領域（７０）の第１プログラム識別子（７１）およびアクセス制御情報（７２）は、所定の未定義値に設定される。
【０１５０】
従って、プログラム証明書（８０）が取得できなかった場合（Ｓ６０）、プログラム証明書（８０）が改竄されていないと検証されなかった場合（Ｓ６１）、環境情報が証明条件情報（８３）に記述された証明条件を満たしていないと判断された場合（Ｓ６２）、プログラム証明書（８０）の有効期限を現在日時が過ぎていると判断された場合（Ｓ６３）、または、タスクプログラムコードが改竄されていないと検証されなかった場合（Ｓ６４）には、タスクプライベート情報格納領域（７０）の第１プログラム識別子（７１）およびアクセス制御情報（７２）は、未定義値のままとなる。
【０１５１】
この場合には、タスクプライベート情報格納領域（７０）のタスクプライベート情報に対応するタスクは、他のタスクに割り当てられたプライベートページ（５０）にアクセスすることが禁止され、自己に割り当てられたプライベートページ（５０）が他のタスクからアクセスされることも禁止される。
【０１５２】
なお、上述したプログラム証明書検証動作は、タスク起動動作に続いて実行されるものとしたが、各タスクが、他のタスクに割り当てられたプライベートページ（５０）にアクセスする際や、自己に割り当てられたプライベートページ（５０）に対して他のタスクからアクセスが要求された際に動的に実行されるようにしてもよい。
【０１５３】
また、プログラム証明書検証動作によって、タスクプライベート情報格納領域（７０）の第１プログラム識別子（７１）およびアクセス制御情報（７２）が設定されなかった場合には、実行タスクに例外処理を実行させることによって、正当なプログラム証明書（８０）を要求するようにしてもよい。
【０１５４】
また、ステップＳ６４において、タスクプログラムコードが改竄されていないと検証されなかった場合には、このタスクプログラムコードに基づいてタスク実行手段（２）によって実行されるタスクを強制終了するようにしてもよい。
【０１５５】
図１５は、プログラム実行保護プロセッサ（６１）におけるプライベートページ（５０）に対するアクセス判断動作を示すフローチャートである。なお、以下に説明するプライベートページ（５０）に対するアクセス判断動作は、実行タスクによってプライベートページ（５０）に対するアクセス要求があった時にアクセス判断手段（６３）によって実行される。
【０１５６】
まず、アクセスが要求されたプライベートページ（５０）に対応するページヘッダ（５１）がページメモリ（６）から取得される（Ｓ７０）。続いて、取得されたページヘッダ（５１）に含まれる所属タスク識別子（５２）に基づいて、タスクプライベート情報メモリ（６２）におけるタスクプライベート情報格納領域（７０）のインデックスが取得される（Ｓ７１）。
【０１５７】
ここで、ページヘッダ（５１）とタスクプライベート情報格納領域（７０）とが正しく対応付けられているか否かを検証するために、ページヘッダ（５１）に含まれるタスク秘密情報（５３）とタスクプライベート情報格納領域（７０）のタスク秘密情報（４４）とが等しいか否かが判断される（Ｓ７２）。
【０１５８】
タスク秘密情報（５３）とタスク秘密情報（４４）とが等しくないと判断された場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ７３）。一方、タスク秘密情報（５３）とタスク秘密情報（４４）とが等しいと判断された場合には、タスクプライベート情報格納領域（７０）のタスク管理情報ポインタ（４１）に基づいて、メインメモリ（１１）におけるタスク管理情報格納領域（３１）の記憶アドレスが取得される（Ｓ７４）。
【０１５９】
次に、取得されたタスク管理情報格納領域（３１）の記憶アドレスが、実行タスクレジスタ（１３）に記憶されるタスク管理情報格納領域（３１）の記憶アドレスと等しいか否かが
判断される（Ｓ７５）。タスク管理情報格納領域（３１）の記憶アドレスと実行タスクレジスタ（１３）に記憶される記憶アドレスと等しいと判断された場合には、ステップＳ７４において取得された記憶アドレスに示されるタスク管理情報格納領域（３１）のタスク識別子（３２）とページヘッダ（５１）の所属タスク識別子（５２）とが等しいか否かを判断する（Ｓ７６）。
【０１６０】
タスク識別子（３２）と所属タスク識別子（５２）とが等しいと判断された場合には、プライベートページ（５０）に対するアクセスは許可される（Ｓ７７）。しかし、タスク識別子（３２）と所属タスク識別子（５２）とが等しくないと判断された場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ７３）。
【０１６１】
ステップＳ７５において、タスク管理情報格納領域（３１）の記憶アドレスと実行タスクレジスタ（１３）に記憶される記憶アドレスとが等しくないと判断された場合には、タスク管理情報格納領域（３１）のタスク識別子（３２）と、ステップＳ７１で取得されたタスクプライベート情報格納領域（７０）のインデックスとが等しいか否かに基づいて、タスク管理情報格納領域（３１）のタスク識別子（３２）が正当なものであるか否かを検証する（Ｓ７８）。
【０１６２】
タスク管理情報格納領域（３１）のタスク識別子（３２）が正当なものであると検証されなかった場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ７３）。一方、タスク管理情報格納領域（３１）のタスク識別子（３２）が正当なものであると検証された場合には、実行タスクレジスタ（１３）に記憶される記憶アドレスが示すタスク管理情報格納領域（３１）のタスク管理情報が取得される（Ｓ７９）。続いて、取得されたタスク管理情報に含まれるタスク識別子（３２）に基づいて、実行タスクに対応するタスクプライベート情報格納領域（７０）のタスクプライベート情報が取得される（Ｓ８０）。
【０１６３】
次に、ステップＳ８０で取得されたタスクプライベート情報に含まれるタスク管理情報ポインタ（４１）が、実行タスクに対応するタスク管理情報格納領域（３１）の記憶アドレスを示すか否かに基づいて、実行タスクに対応するタスク管理情報格納領域（３１）のタスク識別子（３２）が正当なものであるか否かが検証される（Ｓ８１）。
【０１６４】
ステップＳ８１において、実行タスクに対応するタスク管理情報格納領域（３１）のタスク識別子（３２）が正当なものであると検証されなかった場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ７３）。一方、実行タスクに対応するタスク管理情報格納領域（３１）のタスク識別子（３２）が正当なものであると検証された場合には、実行タスクに対応するタスクプライベート情報格納領域（７０）の第１プログラム識別子（７１）や環境情報が、ステップＳ７１で取得されたタスクプライベート情報格納領域（７０）のアクセス制御情報（７２）を構成する各アクセス条件（７３）を満たすか否かが判断される（Ｓ８２）。
【０１６５】
第１プログラム識別子（７１）や環境情報が、アクセス制御情報（７２）を構成する各アクセス条件（７３）を満たすと判断された場合には、プライベートページ（５０）に対するアクセスは許可される（Ｓ７７）。しかし、第１プログラム識別子（７１）や環境情報が、アクセス制御情報（７２）を構成する各アクセス条件（７３）を満たさないと判断された場合には、プライベートページ（５０）に対するアクセスは禁止される（Ｓ７３）。
【０１６６】
なお、ステップＳ７２において、タスク秘密情報（５３）とタスク秘密情報（４４）とが等しくないと判断された場合には、タスク秘密情報（５３）を含むページヘッダ（５１）と、このページヘッダ（５１）に対応するプライベートページ（５０）に記憶された情報とを復元できないように消去してからページヘッダ（５１）およびプライベートページ（５０）を開放するようにしてもよい。
【０１６７】
また、ステップＳ７３において、プライベートページ（５０）に対するアクセスを禁止するのに加えて、実行タスクに対して例外処理（例えば強制終了など）を実行するようにしてもよい。
【０１６８】
以上説明したように、プログラム実行保護プロセッサ（６１）によれば、プログラム実行保護プロセッサ（６１）の内部に設けられたプライベートページ（５０）に対するアクセスを、第１プログラム識別子（７１）に基づいてアクセス制御情報（７２）の各アクセス条件（７３）を満たすか否かによって制限するようになっている。このため、プログラムの実行が中断された際に暗号化などの処理負荷をかけずに、タスクの実行環境を外部からの不正なアクセスから保護することができる。
【０１６９】
さらに、プログラム証明書（８０）に基づき、予め指定したプログラムコードを実行する他のタスクからプライベートページ（５０）上の保護されたプログラムコードやデータに対するアクセス制御を行うことで、タスク間の通信を安全かつ高速に行うことができる。
【０１７０】
なお、上述した第１の実施形態および第２の実施形態において、暗号情報取得手段（４）が、暗号化されたプログラムコードを復号するための復号鍵が暗号化された暗号情報を取得し、復号化手段（５）が、暗号情報取得手段（４）によって取得された暗号情報を鍵ペア生成手段（３）によって生成された秘密鍵をもって復号化し、復号化して得られた復号鍵で暗号化されたプログラムコードを復号するように構成したが、別実施形態として、暗号情報取得手段（４）が、暗号化されたプログラムコードよりなる暗号情報を取得し、復号化手段（５）が、暗号情報取得手段（４）によって取得された暗号情報を鍵ペア生成手段（３）によって生成された秘密鍵をもって復号化し、プログラムコードを得るようにしてもよい。
【図面の簡単な説明】
【０１７１】
【図１】プログラム実行保護プロセッサ（１）を含むプログラム実行装置（１０）のハードウェア構成を例示したブロック図。
【図２】第１の実施形態に係るプログラム実行保護プロセッサの内部構成を示すブロック図。
【図３】第１の実施形態に係るページメモリ、タスクプライベート情報メモリ、およびメインメモリのメモリマップの概念図。
【図４】第１の実施形態に係るページメモリ、タスクプライベート情報メモリ、およびメインメモリのそれぞれに記憶された情報の関連を示す関連図。
【図５】第１の実施形態に係るプログラム実行保護プロセッサにおけるタスク起動動作を示すフローチャート。
【図６】第１の実施形態に係るプログラム実行保護プロセッサにおけるプログラムコード要求動作を示すフローチャート。
【図７】第１の実施形態に係るプログラム実行保護プロセッサにおけるプライベートページのアクセス判断動作を示すフローチャート。
【図８】第１の実施形態に係るプログラム実行保護プロセッサにおけるタスク終了動作を示すフローチャート。
【図９】第１の実施形態に係るプログラム実行保護プロセッサにおける不要情報消去動作を示すフローチャート。
【図１０】第２の実施形態に係るプログラム実行保護プロセッサを含むプログラム実行保護装置の構成を示すブロック図。
【図１１】第２の実施形態に係るタスクプライベート情報メモリのメモリマップの概念図。
【図１２】第２の実施形態に係るタスクプライベート情報メモリに記憶されるアクセス制御情報のデータ構成図。
【図１３】第２の実施形態に係るプログラム証明書のデータ構成図。
【図１４】第２の実施形態に係るプログラム実行保護プロセッサにおけるプログラム証明書検証動作を示すフローチャート。
【図１５】第２の実施形態に係るプログラム実行保護プロセッサにおけるプライベートページのアクセス判断動作を示すフローチャート。
【符号の説明】
【０１７２】
１、６１  プログラム実行保護プロセッサ
２  タスク実行手段
３  鍵ペア生成手段
４  暗号情報取得手段
５  復号化手段
６  ページメモリ
７、６２  タスクプライベート情報メモリ
８、６３  アクセス判断手段
９  ページメモリレジスタ
１０、６０  プログラム実行装置
１１  メインメモリ
１３  実行タスクレジスタ
１４  プロセッサ状態レジスタ
３０  ページ
３１  タスク管理情報格納領域
３２  タスク識別子
３３  ページテーブル
４０、７０  タスクプライベート情報格納領域
４１  タスク管理情報ポインタ
４２  秘密鍵
４３  公開鍵
４４  タスク秘密情報
５０  プライベートページ
５１  ページヘッダ
５２  所属タスク識別子
５３  タスク秘密情報
６４  プログラム証明書検証手段
７１  第１プログラム識別子
７２  アクセス制御情報
７３  アクセス条件
７４  プログラム識別子
７５  リソース
７６  アクセス種別
７７  付加条件
７８  アクセス可否
８０  プログラム証明書
８１  プログラム識別子
８２  プログラムフィンガープリント
８３  証明条件情報
８４  発行日時
８５  有効期間
８６  属性情報
８７  アクセス制御情報
８８  発行機関
８９  署名情報
【図１】
2006209703.tif 000003
【図２】
2006209703.tif 000004
【図３】
2006209703.tif 000005
【図４】
2006209703.tif 000006
【図５】
2006209703.tif 000007
【図６】
2006209703.tif 000008
【図７】
2006209703.tif 000009
【図８】
2006209703.tif 000010
【図９】
2006209703.tif 000011
【図１０】
2006209703.tif 000012
【図１１】
2006209703.tif 000013
【図１２】
2006209703.tif 000014
【図１３】
2006209703.tif 000015
【図１４】
2006209703.tif 000016
【図１５】
2006209703.tif 000017