説明

マイクロプロセッサ

【課題】暗号化プログラムの実行単位となるプロセスを、より効率的に実行することが可能なマイクロプロセッサを提供する。
【解決手段】暗号化プログラムの実行単位となるプロセスを、実行対象のプログラム、物理アドレス及び命令鍵識別子のデータ単位でキャッシュし、実行対象のプロセスに該当するデータがキャッシュされている場合、前記暗号化プログラムの復号を行わず、このキャッシュされたデータを用いてプロセスを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサコアを備えたマイクロプロセッサに関する。
【背景技術】
【0002】
一のプロセスを構成する3要素(命令、データ、コンテキスト)を、信頼できないOSや他のプロセスから保護することを目的とした技術として、プログラムを識別する識別子と共通鍵/秘密鍵などの鍵を用いて暗号化/復号を行うことで、安全性を確保する方法が提案されている。例えば、特許文献1に開示された技術では、保護すべきプログラムについて、プロセッサ内部でのみ上記したプロセスの要素を平文とし、プロセッサ外部では暗号化することで、盗聴・改ざんといった行為から守ることを実現している。この場合、秘密情報の保護を実現するために行う暗号化・復号時においてオーバヘッドが発生することになるが、特許文献1では、キャッシュタグの効率的な利用を目的とした利用方法についてもあわせて提案されている。具体的には、同じデータ鍵や命令鍵であっても別プロセス識別子をもつ場合、キャッシュアクセス時にミス判定され、本来なら必要のないメインメモリへのアクセスが発生することになるが、特許文献1では、鍵インデックス変換機能をプロセッサ内に持たせ、同じデータ鍵や命令鍵を持つプロセス識別子を管理することで、メインメモリへのアクセスを抑え、オーバヘッドの削減を可能にしている。
【0003】
また、暗号化された命令を復号し命令キャッシュに読み込む際の技術として、プロセス毎にプログラムが配置された先頭アドレスである配置先アドレスを保持し、配置先アドレスのアドレス情報を用いて相対アドレス値に変換するアドレス変換方式が特許文献2に開示されている。
【0004】
【特許文献1】特開2002−232417号公報
【特許文献2】特開2003−108442号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、プロセス毎に生成されるデータ鍵と比べ、命令鍵は命令(プログラム)と1対1に対応しており、同一のプログラムについては同一の命令鍵が使用されるという特性を有している。そのため、特許文献1に開示された技術では、異なるプロセスの夫々で同一の命令鍵が用いられるような場合に、以下に示す理由により、各プロセスを効率的に実行できない可能性がある。
【0006】
異なるプロセスの夫々で同一の命令鍵が用いられる例として、銀行業務のオンライン処理のような大規模Webサーバ上で同じプログラムが大量に同時実行される場合や、共有ライブラリが複数のプログラムから実行される場合が挙げられる。前者の場合、大量のプログラムが同時に実行されるため、応答性の向上が必要である。また、後者の場合、共有ライブラリは同じモジュールであってもプロセス毎に異なるアドレスで同一の命令鍵を配置する必要がある。これは、暗号化されたプログラムを実行するために、プロセス毎に配置された先のアドレスを用いないと復号処理を行うことができないためである。プロセス毎に配置されるアドレスは同一とは限らないため、プロセス識別子毎に配置先アドレスの情報を保持しなければ復号処理を行うことができない。
【0007】
なお、上記した特許文献1の問題点は、特許文献2の技術を用いることで解決することが可能である。しかしながら、特許文献1に開示された技術を特許文献2の技術に適応し、同じ命令鍵毎でキャッシュアクセスを実現する構成のみでは、配置先アドレスに対処できず、プロセス毎に必要な情報を別途保持する必要があるため、処理が煩雑になるという問題がある。そのため、上記した何れの問題をも解決できるような技術が望まれている。
【0008】
本発明は、上記に鑑みてなされたものであって、暗号化プログラムの実行単位となるプロセスを、より効率的に実行することが可能なマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明は、暗号化プログラムを復号するための命令鍵と、当該命令鍵を識別する命令鍵識別子とを関連付けて記憶する第1記憶手段と、前記暗号化プログラムの実行単位となるプロセスを識別するプロセス識別子と、当該プロセスの実行対象となる前記暗号化プログラムを復号する命令鍵の前記命令鍵識別子と、当該暗号化プログラムに割り当てられた相対アドレスを算出するための配置先アドレスとを関連付けて記憶する第2記憶手段と、実行対象のプロセスのプロセス識別子を記憶する第1識別子記憶手段と、前記第1識別子記憶手段に記憶されたプロセス識別子と、当該プロセス識別子のプロセスで実行対象となる暗号化プログラムが格納された物理アドレスとを通知し、前記命令鍵により復号された暗号化プログラムを実行する実行手段と、前記実行手段から通知された前記プロセス識別子に対応する命令鍵識別子を、前記第2記憶手段から読み出す命令鍵識別子読出手段と、前記命令鍵識別子読出手段で読み出された命令鍵識別子と関連付けて前記第1記憶手段に記憶された配置先アドレスと、前記実行手段から通知された物理アドレスとを用いて、前記実行対象の暗号化プログラムに割り当てられた前記相対アドレスを算出する算出手段と、前記相対アドレスに基づき前記外部記憶手段から取得した前記実行対象の暗号化プログラムを、前記命令鍵識別子読出手段で読み出された前記命令鍵識別子と関連付けて前記第1記憶手段に記憶された命令鍵を用いて復号し、平文のプログラムを取得する復号手段と、前記復号手段で取得されたプログラムと、当該プログラムに係る前記物理アドレス及び前記命令鍵識別子とを関連付けて記憶するキャッシュ手段と、前記実行手段から通知された物理アドレスと、前記命令鍵識別子読出手段で読み出された命令鍵識別子とに対応するプログラムが、前記キャッシュ手段に記憶されているか否かを判定する判定手段と、前記判定手段により該当するプログラムが記憶されていると判定された場合、当該プログラムを前記実行手段に通知し、該当するプログラムが記憶されていないと判定された場合、前記復号手段で取得されたプログラムを前記実行手段に通知するアクセス制御手段と、を備える。
【0010】
また、本発明は、暗号化プログラムを復号するための命令鍵と、当該命令鍵を識別する命令鍵識別子とを関連付けて記憶する第1記憶手段と、前記暗号化プログラムの実行単位となるプロセスを識別するプロセス識別子と、当該プロセスの実行対象となる前記暗号化プログラムを復号する命令鍵の前記命令鍵識別子と、当該暗号化プログラムに割り当てられた相対アドレスを算出するための配置先アドレスとを関連付けて記憶する第2記憶手段と、実行対象のプロセスのプロセス識別子を記憶する第1識別子記憶手段と、実行対象のプロセスのプロセス識別子に対応する前記命令鍵識別子を記憶する第2識別子記憶手段と、前記第1識別子記憶手段に記憶されたプロセス識別子と、当該プロセス識別子のプロセスで実行対象となる暗号化プログラムが格納された物理アドレスと、前記第2識別子記憶手段に記憶された命令鍵識別子とを通知し、前記命令鍵により復号された暗号化プログラムを実行する実行手段と、前記実行手段から通知された前記命令鍵識別子と関連付けて前記第1記憶手段に記憶された配置先アドレスと、物理アドレスとを用いて、前記実行対象の暗号化プログラムに割り当てられた前記相対アドレスを算出する算出手段と、前記相対アドレスに基づき外部の記憶手段から取得した前記実行対象の暗号化プログラムを、前記実行手段から通知された命令鍵識別子と関連付けて前記第1記憶手段に記憶された命令鍵を用いて復号し、平文のプログラムを取得する復号手段と、前記復号手段で取得されたプログラムと、当該プログラムに係る前記物理アドレス及び前記命令鍵識別子とを関連付けて記憶するキャッシュ手段と、前記実行手段から通知された物理アドレス及び命令鍵識別子に対応するプログラムが、前記キャッシュ手段に記憶されているか否かを判定する判定手段と、前記判定手段により該当するプログラムが記憶されていると判定された場合、当該プログラムを前記実行手段に通知し、該当するプログラムが記憶されていないと判定された場合、前記復号手段で取得されたプログラムを前記実行手段に通知するアクセス制御手段と、を備える。
【発明の効果】
【0011】
本発明によれば、暗号化プログラムの実行単位となるプロセスを、実行対象のプログラム、物理アドレス及び命令鍵識別子のデータ単位でキャッシュし、実行対象のプロセスに該当するデータがキャッシュされている場合、前記暗号化プログラムの復号を行わず、このキャッシュされたデータを用いてプロセスを実行することが可能であるため、より効率的にプロセスを実行することができる。
【発明を実施するための最良の形態】
【0012】
以下、添付図面を参照して、本発明にかかるマイクロプロセッサの最良な実施形態を詳細に説明する。なお、以下の各実施形態では、鍵情報管理機能はハードウェアによる実装として説明するが、ユーザによる改変が不可能であるという前提が保証されれば、鍵管理機能がプロセッサ内蔵ROMに格納されたファームウェアによる実装であってもよい。
【0013】
はじめに、以下の各実施形態で使用する用語について定義する。「暗号化」は、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの両方を含めて、平文の情報を暗号化することを意味する。同様に「復号」は、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの両方を含めて、暗号化された情報を復号し平文に戻すことを意味する。
【0014】
「暗号鍵」は、上記暗号化、復号で使われる鍵を暗号化、復号の両方の場合を含んで用いる。また、「共通鍵」は、共通鍵アルゴリズムで暗号化、復号に共通に使われる鍵を意味する。
【0015】
「暗号化鍵」は、公開鍵アルゴリズムで暗号化に使われる鍵を意味する。また、「復号鍵」は、公開鍵アルゴリズムで復号に使われる鍵を意味する。
【0016】
以下に説明する各実施形態のマイクロプロセッサ(以下、プロセッサという)は、外部から読み出し不可能な復号鍵(秘密鍵:以下、Ksと表記する)を備える。プロセッサの秘密鍵Ksに対応する暗号化鍵(公開鍵:以下、Kpと表記する)は、公開鍵として公開されている。
【0017】
「暗号化プログラム」は、命令が、ある一つの共通鍵(以下、Kxと表記する)によって暗号化されたプログラムを意味する。プログラム作成者が暗号化プログラムを作成するとき、プログラムを暗号化する適切な共通鍵Kxを選び、プログラムの命令を暗号化する(ただし、必ずしもプログラムの全体が暗号化されている必要はない)。以下の実施形態で説明するマイクロプロセッサにおいて、プログラムの同一性は共通鍵Kxによって判定する。以下、共通鍵Kx(Ka,Kb,…,Kn)を暗号化プログラムの命令鍵と呼ぶ。また、暗号化プログラムをE_Kx[命令]と表記する。
【0018】
また、ターゲットのマイクロプロセッサの公開鍵Kpで命令鍵Kxを暗号化した値(以下、E_Kp[Kx]と表記する)を配布鍵と呼ぶ。プログラム作成者は、暗号化プログラムと配布鍵をターゲットのシステムに配布する。
【0019】
以下に説明する各実施形態での暗号アルゴリズムの扱いでは、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの区別は重要だが、対称(共通)鍵アルゴリズム、非対称(公開)鍵アルゴリズムの中での方式、例えば、Des,Riandal,RSA,Elgamalなどの暗号方式の違いは重要ではない。したがって、対称(共通)鍵アルゴリズムではDes,Riandalなどが、非対称(公開)鍵アルゴリズムではRSA,Elgamalなどの何れを用いてもよい。
【0020】
「プログラム」は、命令と静的データで構成される。なお、暗号化プログラムでは、命令は暗号化されているが、静的データは暗号化されていても平文でもどちらでもよい。
【0021】
「プロセス」とは、プログラムがターゲットシステムのOS(オペレーティングシステム)の管理のマルチタスク環境下で、実行中の、または実行を中断されている状態をあらわす。プロセスは、命令(プログラム)、データ、実行状態(コンテキスト)の3要素からなる。プロセスの実行は、プログラム中の命令が(暗号化プログラムの場合は復号されて)プロセッサに読み込まれ、実行されることで行われる。プロセスの実行は、割り込みなどの原因で中断されることがある。OSはそのときプロセスがプロセッサ内部に保持する状態、一般にはレジスタ情報を実行状態(コンテキスト情報とも呼ばれる)としてプロセッサ外部のメモリに保存する。割り込みサービスや別のプログラムを実行した後、プロセスの実行を再開するときはメモリに保存した実行状態を再度プロセッサ内部に読み込んで実行を再開する。また、プロセスを識別するためのプロセス識別子を有し、プロセス識別子毎にプロセスの実行制御を行う。
【0022】
一つのプログラムから複数のプロセスが作られ、同時に実行されることがある。暗号化プログラムの場合、これらの共通の起源をもつプロセスの間で復号された命令を共有することが可能である。
【0023】
また、以下の各実施形態ではキャッシュメモリ上におけるプロセスの秘密情報のアクセス制御をキャッシュタグによって行うが、このアクセス制御機構と、従来から存在する仮想記憶機構におけるプロセスのアクセス制御機構(UNIX(登録商標)カーネル)とは併用が可能である。なお、後者はターゲットシステムのOSのシステム管理意図を正しく実現するために用いられる。具体的には、あるプロセス1のメモリアクセスを、他のプロセスから隔離し、互いの動作の干渉を防ぐなどを目的とするものである。
【0024】
また「OS」は、プロセッサが属するコンピュータシステム全体を管理するソフトウェアであって、プロセッサとの協働により暗号化プログラムを実行し、当該プロセッサでの実行状態を監視する。なお、OSの機能を実現するハードウェアの主体は、以下の実施形態で説明するプロセッサであってもよいし、他の制御装置であってもよい。
【0025】
[第1の実施形態]
まず、第1の実施形態にかかるプロセッサについて説明する。本実施形態のプロセッサは、命令鍵をチップ内に固定的に保持し、この命令鍵を用いて暗号化プログラムの復号を行う構成を有している。
【0026】
図1は、第1の実施形態に係るプロセッサ100の構成を示した図である。同図に示したように、プロセッサ100は、プロセッサコア11と、命令保持部12と、命令復号処理部13と、鍵管理部14と、外部バスインタフェース15と、内部データバス16とを備えている。
【0027】
プロセッサコア11は、OSとの協働により演算処理を行うプロセッサ100の中核部分であって、命令保持部12、鍵管理部14に接続されている。
【0028】
また、プロセッサコア11は、計算の結果やデータを記憶する汎用レジスタとしてのレジスタ111と、命令保持部12から読み込んだ命令を記憶する制御レジスタ112と、現プロセス識別子格納レジスタ113とを有する。ここで、現プロセス識別子格納レジスタ113は、現時点で実行対象となっているプロセスのプロセス識別子を記憶する。
【0029】
命令保持部12は、データを一時的に保持するキャッシュメモリ等を有し、プロセッサコア11と命令復号処理部13と鍵管理部14とに接続されている。また、命令復号処理部13は、暗号化された命令(暗号化プログラム)を復号する機能部である。以下、命令保持部12及び命令復号処理部13の詳細構成について説明する。
【0030】
図2は、命令保持部12及び命令復号処理部13の詳細構成を示した図である。同図に示したように、命令保持部12は、プログラムの実行に必要な命令を記憶するための命令キャッシュ121と、命令キャッシュ121への読み書きを制御するキャッシュコントローラ122とを有している。
【0031】
図3は、命令キャッシュ121に格納されるデータ構造を模式的に示した図である。図3に示したように、命令キャッシュ121の記憶領域を構成する各キャッシュラインは、平文のプログラム(命令)が格納されるデータタグT1と、当該命令の外部メモリでの格納先を示す物理アドレスが格納されるアドレスタグT2と、当該キャッシュラインの有効/無効を示すフラグ情報が格納されるフラグタグT3と、データタグT1に格納された命令を復号する命令鍵の命令鍵識別子が格納される命令鍵識別子タグT4とから構成される。各キャッシュラインは一のプロセスに対応し、各キャッシュラインに登録された命令の実行単位となっている。
【0032】
なお、フラグタグT3の値は、プロセスの実行状態に応じてOS又はプロセッサコア11が制御することとしてもよく、例えば、所定時間アクセスが行われないキャッシュラインについて、有効から無効に切り替えることとしてもよい。以下、各キャッシュラインに登録されたデータをプロセス情報という。
【0033】
キャッシュコントローラ122は、命令キャッシュ121へのプロセス情報の登録を制御する。また、キャッシュコントローラ122は、命令キャッシュ121に登録されたプロセス情報のキャッシュヒットを判定するためのアクセス制御部1221を有している。
【0034】
具体的に、アクセス制御部1221は、各プロセス情報のアドレスタグT2及び命令鍵識別子タグT4に格納された各値と、実行対象となった命令の外部メモリ上での物理アドレス(命令アドレス)及び命令鍵識別子の各値とを比較し、これら各値が一致した場合にキャッシュヒットと判定する。
【0035】
一般に、キャッシュのヒット/ミスの判定は物理アドレスに対して行われるが、プログラムやデータが配置される物理アドレスでは、プロセスの実行中にOSの資源管理操作によって、そのアドレスが変更されることがある。具体的には、一度割り当てられた実メモリが2次記憶に一時退避され、再び実メモリに読み込まれる時、そのアドレスが同一とは限らない。そのため、アクセス制御部1221では、命令鍵識別子と物理アドレスとの組を用いることで、命令キャッシュ121のキャッシュヒットをより正確に判定する。
【0036】
なお、キャッシュがヒットしなかった場合、アクセス制御部1221は、命令復号処理部13に配置先アドレス(PrgAd#1)と、命令アドレス(IxAd)と、命令鍵識別子(#A)とを命令復号処理部13に通知することで、該当する命令の取得を命令復号処理部13に依頼する。なお、詳細については後述する。
【0037】
図2に戻り、命令復号処理部13は、アドレス変換部131と、命令復号部132とを有している。
【0038】
アドレス変換部131は、各プロセスで実行される暗号化プログラムの夫々に割り当てられた外部メモリでの相対アドレス(仮想アドレス)を算出する機能部である。具体的に、アドレス変換部131は、アクセス制御部1221から通知される配置先アドレスと、命令アドレスとの差分を算出することで相対アドレス(RAd#1)を導出する。ここで、配置先アドレスは、OSから通知される情報であって、各プロセス識別子のプロセスで実行する命令に割り当てられた暗号化プログラムの先頭アドレスを示し、相対アドレスを導出するための基準となる。なお、相対アドレスの導出方法は、特開2003−108442号公報に開示された技術を用いるものとする。
【0039】
命令復号部132は、アドレス変換部131で算出された相対アドレスに基づき、外部メモリから暗号化された命令、即ち、暗号化プログラム(E_Ka[Ix])を読み出すと、アクセス制御部1221から通知される命令鍵識別子に対応した命令鍵Kaを用いて復号し、この復号結果(命令Ix)をキャッシュコントローラ122に通知する。
【0040】
キャッシュコントローラ122では、命令復号部132により復号された命令Ixを、命令キャッシュ121のキャッシュラインのデータタグT1に格納するとともに、当該キャッシュラインについての他のタグに該当するデータを格納する。
【0041】
図1に戻り、鍵管理部14は、プログラムの実行に必要な命令鍵を管理する機能部である。ここで、図4を参照して、鍵管理部14の詳細構成について説明する。
【0042】
図4は、鍵管理部14の構成を説明するための図である。同図に示したように、鍵管理部14は、鍵管理機能部141と、命令鍵管理部142と、プロセス識別子管理部143とを有している。
【0043】
鍵管理機能部141は、プログラムの実行に必要な命令鍵を登録するための各種処理を行う機能部であり、命令鍵管理部142及びプロセス識別子管理部143が管理する各テーブルの書き込みや読み込みを制御する。なお、各テーブルは直接参照できるよう管理されているものとする。
【0044】
命令鍵管理部142は、命令鍵を管理するための命令鍵テーブル1421を有し、この命令鍵テーブル1421へのアクセス内容に応じて、命令鍵テーブル1421を操作する。
【0045】
図5は、命令鍵テーブル1421の一例を示した図である。同図に示したように、命令鍵テーブル1421は、各命令鍵を識別するための命令鍵識別子と、暗号化プログラムを復号するための命令鍵と、プロセス識別子に依存しない他の項目から構成される共通付加情報とを関連付けて記憶している。ここで共通付加情報としては、例えば、デバッグ可能か否かを示したデバッグフラグ等が挙げられる。
【0046】
プロセス識別子管理部143は、プロセス識別子を管理するためのプロセス識別子テーブル1431を有し、このプロセス識別子テーブル1431へのアクセス内容に応じて、プロセス識別子テーブル1431を操作する。
【0047】
図6は、プロセス識別子テーブル1431の一例を示した図である。同図に示したように、プロセス識別子テーブル1431は、プロセスを識別するプロセス識別子と、命令鍵テーブル1421の命令鍵識別子とリンクする命令鍵識別子と、プロセス識別子に依存したプロセス固有付加情報とを関連付けて記憶している。
【0048】
ここで、プロセス固有付加情報とは、各プロセス識別子が表すプロセスに固有の情報であって、プロセスの状態を表すプロセス状態情報や、各プロセスで実行対象となる暗号化プログラムに割り当てられた配置先アドレス、データを保護するためのデータ鍵、コンテキストを保護するためのコンテキスト鍵等が挙げられる。
【0049】
なお、プロセス状態情報は、OSが有するプロセス管理機構により管理される情報であって、プロセスの状態に応じて、後述する初期化状態を表すINITや、実行状態を表すRUN、待ち状態を表すSUSPEND等が登録される。また、データ鍵及びコンテキスト鍵は、プログラムを構成する3要素(命令、データ、コンテキスト(実行状態))のうち、暗号化されたデータとコンテキストを夫々復号するための鍵であり、特開2002−232417号公報に開示されたものと同様である。
【0050】
図5、図6に示したように、本実施形態では、命令鍵識別子をインデックスにして、命令鍵テーブル1421の命令鍵と、プロセス識別子テーブル1431のプロセス識別子とを対応付けて保持するとともに、各々のテーブルで必要な情報を保持している。
【0051】
図1に戻り、外部バスインタフェース15は、図示しない外部メモリとの間でデータの授受を行うインタフェースであり、内部データバス16を介して命令復号処理部13及び鍵管理部14に接続されている。
【0052】
以下、プロセッサ100における、暗号化プログラムの実行に係る一連の手順(鍵登録処理、プロセス実行処理、鍵削除処理)について説明する。なお、以下に説明する各処理の前提として、命令鍵テーブル1421には、命令鍵が有限個登録されている状態であるとし、プログラム(命令Ix)を暗号化するユーザはこの命令鍵のうち一つ(命令鍵Ka)を用いて暗号化したとする。また、暗号化プログラムをE_Ka[Ix]と表記し、この暗号化プログラムE_Ka[Ix]が、相対アドレスRAd#1が示す外部メモリ上のメモリ空間に配置されているとする。
【0053】
[鍵登録処理]
命令鍵により暗号化が行われた暗号化プログラム(命令)を実行するためには、この暗号化プログラムを復号するための初期化作業が必要である。OSは、この初期化作業として鍵登録命令“Register”を発行する。プロセッサ100では、この鍵登録命令“Register”の発行に応じ鍵登録処理を実行する。
【0054】
以下、図7、図8を参照して鍵登録処理の手順について説明する。ここで、図7は、鍵登録処理の手順を示したシーケンス図である。また、図8は鍵登録処理を説明するための図であって、プロセッサ100の状態の一例を示している。以下では、図8に示したプロセッサ100の状態に基づいて説明を行う。
【0055】
OSから鍵登録命令“Register”が発行されると、プロセッサコア11は、プロセス識別子を初期化するため、制御対象のプロセス識別子となる制御対象プロセス識別子#1と、この制御対象プロセス識別子#1に割り当てられた暗号化プログラムE_Ka[Ix]の配置先アドレスPrgAd#1と、命令鍵Kaの命令鍵識別子#Aとを、鍵管理機能部141に通知する(ステップS11)。なお、これらの情報は、鍵登録命令“Register”のパラメータとして、OSからプロセッサコア11に通知されるものとする。
【0056】
鍵管理機能部141では、プロセッサコア11から制御対象プロセス識別子#1と、配置先アドレスPrgAd#1と、命令鍵識別子#Aとを受け付けると、これらの情報をプロセス識別子テーブル1431に登録するため、プロセス識別子管理部143にアクセスする(ステップS12)。
【0057】
プロセス識別子管理部143では、鍵管理機能部141からのアクセスに応じ、プロセス識別子テーブル1431のうち、制御対象プロセス識別子#1に対応する列の命令鍵識別子項目に命令鍵識別子#Aを登録する(ステップS13)。
【0058】
また、プロセス識別子管理部143は、プロセス識別子#1のプロセス固有情報として、制御対象プロセス識別子#1に対応する列のプロセス状態項目に初期化を意味するINITを登録するとともに、配置先アドレス項目にPrgAd#1を登録する(ステップS14)。なお、プロセス識別子#1について他の情報が存在する場合には、このステップS14にて登録を行うものとする。
【0059】
プロセス識別子テーブル1431への登録が終了すると、プロセス識別子管理部143は、処理が終了した旨を鍵管理機能部141に通知する(ステップS15)。また、鍵管理機能部141は、プロセス識別子管理部143から終了の通知を受けると、全ての処理が終了した旨をプロセッサコア11に通知し(ステップS16)、本処理を終了する。
【0060】
なお、本実施形態では、鍵登録処理の終了に伴い、プロセッサコア11が、ステップS11で鍵管理機能部141に通知した制御対象プロセス識別子を、現プロセス識別子格納レジスタ113に格納するものとするが、これに限らず、例えば、ステップS11の直後等、異なるタイミングで格納することとしてもよい。
【0061】
[プロセス実行処理]
次に、上記鍵登録処理で初期化されたプロセス識別子のプロセスが実行される際の処理(プロセス実行処理)について説明する。OSは、プロセス識別子の初期化が行われた後、このプロセス識別子のプロセスを実行するためにプロセス実行命令“Start”を発行する。プロセッサ100では、このプロセス実行命令“Start”の発行に応じて、プロセス実行処理を開始する。
【0062】
以下、図2、図9、図10を参照して、プロセス実行処理について説明する。ここで、図9は、プロセス実行処理の手順を示したシーケンス図である。また、図10は、プロセス実行処理を説明するための図であって、プロセッサ100の状態の一例を示している。以下では、図10に示したプロセッサ100の状態に基づいて説明を行う。
【0063】
まず、プロセッサコア11は、プロセス実行命令“Start”の発行に応じ、現プロセス識別子格納レジスタ113に保持された現プロセス識別子#1と、この現プロセス識別子#1で実行対象となる暗号化プログラムが格納された外部メモリ上での物理アドレスを表す命令アドレスIxAdとを、命令保持部12(アクセス制御部1221)に通知する(ステップS21)。
【0064】
アクセス制御部1221では、プロセッサコア11から現プロセス識別子#1と、命令アドレスIxAdとを受け付けると、プロセス識別子管理部143内のプロセス識別子テーブル1431を参照し、現プロセス識別子#1に対応する命令鍵識別子#Aを読み出す(ステップS22)。
【0065】
次いで、アクセス制御部1221は、命令鍵識別子#A及び命令アドレスIxAdの各値と、命令キャッシュ121の各キャッシュラインに保持されたプロセス情報(アドレスタグT2、命令鍵識別子タグT4)の各値とを比較し、キャッシュがヒットするか否かを判定する(ステップS23)。ここで、キャッシュヒットと判定された場合(ステップS23;Yes)、ステップS32の処理に直ちに移行する。
【0066】
一方、ステップS23において、キャッシュミスと判定した場合(ステップS23;No)、アクセス制御部1221は、プロセス識別子テーブル1431から現プロセス識別子#1に対応する配置先アドレスPrgAd#1を読み出し(ステップS24)、命令鍵識別子#Aと命令アドレスIxAdとともに命令復号処理部13に通知する(ステップS25)。
【0067】
命令復号処理部13(アドレス変換部131)は、アクセス制御部1221から配置先アドレスPrgAd#1と、命令鍵識別子#Aと、命令アドレスIxAdとを受け付けると、この配置先アドレスPrgAd#1と命令アドレスIxAdとの差分を算出することで、相対アドレスRAd#1を取得する(ステップS26)。
【0068】
続いて、命令復号部132は、ステップS26で算出された相対アドレスRAd#1に基づいて、外部メモリから暗号化プログラムE_Ka[Ix]を読み出す(ステップS27)。次いで、命令復号部132は、命令鍵識別子#Aに対応する命令鍵Kaを命令鍵テーブル1421から読み出すと(ステップS28)、この命令鍵Kaを用いて暗号化プログラムE_Ka[Ix]を復号する(ステップS29)。そして、命令復号部132は、ステップS29の復号結果、即ち、平文の命令Ixを命令保持部12のキャッシュコントローラ122に通知する(ステップS30)。
【0069】
キャッシュコントローラ122では、命令復号部132から受け付けた命令Ixを、命令キャッシュ121のデータタグT1に書き込むとともに、命令アドレスIxAdと命令鍵識別子#Aとを、アドレスタグT2、命令鍵識別子タグT4の夫々に書き込む(ステップS31)。なお、フラグタグT3については、有効と設定されるものとする。
【0070】
続いて、命令保持部12は、ステップS23でキャッシュヒットした命令Ix又はステップS31で書き込んだ命令Ixをプロセッサコア11に通知し(ステップS32)、本処理を終了する。本処理により通知された命令Ixに基づき、プロセッサコア11では、現プロセス識別子#1のプロセスが実行される。
【0071】
[鍵削除処理]
次に、図11、図12を参照して、命令鍵の削除に係る処理(鍵削除処理)について説明する。ここで、図11は鍵削除処理の手順を示したシーケンス図である。また、図12は、鍵削除処理を説明するための図であって、プロセッサ100の状態の一例を示している。以下では、図12に示したプロセッサ100の状態に基づいて説明を行う。
【0072】
プロセスの完了等に伴いプロセスの削除を行う際、OSは削除対象のプロセス識別子(#1)をパラメータとしたプロセス削除命令“Delete”を発行する。プロセッサコア11は、プロセス削除命令“Delete”の発行に応じ、削除対象プロセス識別子#1を鍵管理機能部141に通知する(ステップS41)。
【0073】
鍵管理機能部141は、プロセッサコア11から削除対象プロセス識別子#1を受け付けると、この削除対象プロセス識別子#1に関する情報をプロセス識別子テーブル1431から削除するため、プロセス識別子管理部143にアクセスする(ステップS42)。
【0074】
プロセス識別子管理部143では、鍵管理機能部141からのアクセスに応じ、プロセス識別子テーブル1431のうち、削除対象プロセス識別子#1に対応する列に登録された情報を削除すると(ステップS43)、この処理が終了した旨を鍵管理機能部141に通知する(ステップS44)。
【0075】
鍵管理機能部141は、プロセス識別子管理部143から終了の通知を受けると、全ての処理が終了した旨をプロセッサコア11に通知し(ステップS45)、本処理を終了する。
【0076】
以上のように、本実施形態のプロセッサ100によれば、暗号化プログラムの実行単位となるプロセスを、実行対象のプログラム(命令)、物理アドレス及び命令鍵識別子のデータ単位でキャッシュし、実行対象のプロセスに該当するデータがキャッシュされている場合、前記暗号化プログラムの復号を行わず、このキャッシュされたデータを用いてプロセスを実行することが可能であるため、より効率的にプロセスを実行することができる。
【0077】
また、命令鍵識別子をタグとして用いることで、同じプログラムが別プロセスとして実行されていてもキャッシュヒットするため、プログラムの実行にかかる時間的コストを削減し、より高速なシステムを実現できる。さらに、共有ライブラリを用いた場合でも、配置先アドレスをプロセス毎に管理しているため、従来どおりの復号機能を実現できる。これにより、安全性と利便性のバランスの取れたシステムを実現することが可能となる。
【0078】
[第2の実施形態]
第2の実施形態では、プロセッサ内に秘密鍵を保持するとともに、当該秘密鍵に対応する公開鍵で命令鍵を暗号化した配布鍵を、外部メモリ上に保持する構成について説明する。なお、第1の実施形態と同様の構成要素については、同一の符号を付与し説明を省略する。
【0079】
図13は、第2の実施形態に係るプロセッサ200の構成を示した図である。同図に示したように、プロセッサ200は、プロセッサコア21と、命令保持部12と、命令復号処理部13と、鍵管理部22と、外部バスインタフェース15と、内部データバス16とを備えている。
【0080】
ここで、プロセッサコア21は、上述したプロセッサコア11と同様、OSとの協働により演算処理を行うプロセッサ200の中核部分であって、命令保持部12、鍵管理部22に接続されている。なお、プロセッサコア21の動作については後述する。
【0081】
図14は、鍵管理部22の構成を示した図である。同図に示したように、鍵管理部22は、鍵管理機能部221と、命令鍵管理部222と、プロセス識別子管理部223とを有している。
【0082】
鍵管理機能部221は、鍵管理機能部141と同様、プログラムの実行に必要な命令鍵を登録するための各種処理を行う機能部であり、命令鍵管理部222及びプロセス識別子管理部223が管理する各テーブルの書き込みや読み込みを制御する。なお、各テーブルは直接参照できるよう管理されているものとする。
【0083】
命令鍵管理部222は、配布鍵復号部2221と、命令鍵を管理する命令鍵テーブル2222とを有している。ここで、配布鍵復号部2221は、外部メモリから読み出した配布鍵を復号する機能部である。この復号は、公開鍵アルゴリズムでの復号のため、複数命令サイクルの非常に長いクロック数を必要とする。なお、動作の詳細については後述する。
【0084】
図15は、命令鍵テーブル2222の一例を示した図である。同図に示したように、命令鍵テーブル2222は、上述した命令鍵識別子と、命令鍵と、共通付加情報とに加え、当該命令鍵識別子を用いるプロセス識別子数を表す参照カウンタを関連付けて記憶する。なお、命令鍵テーブル2222が記憶する情報は図15の例に限定されないものとする。
【0085】
図14に戻り、プロセス識別子管理部223は、プロセス識別子管理部143と同様、プロセス識別子を管理するためのプロセス識別子テーブル1431を有し、このプロセス識別子テーブル1431へのアクセス内容に応じて、プロセス識別子テーブル1431を操作する。
【0086】
以下、プロセッサ200における、暗号化プログラム実行のための一連の手順(鍵登録処理、プロセス実行処理、鍵削除処理)について説明する。なお、以下に説明する処理の前提として、命令鍵Kaによって暗号化された命令Ix、即ち、暗号化プログラムE_Ka[Ix]と、プロセッサ200内の秘密鍵Ksと対となる公開鍵Kpによって暗号化された配布鍵E_Kp[Ka]とが、外部メモリに記憶されているとする。
【0087】
[鍵登録処理]
上述したように、プロセッサ200は、鍵登録処理において、新規プロセスの生成にあたりプロセス識別子テーブル1431に新たなプロセス識別子の登録を行うが、OS側では命令鍵Kaが既に別プロセスとして登録されているか否かを把握することが可能である。これは、命令鍵Kaが暗号化プログラムE_Ka[Ix]と1対1に対応するためであり、暗号化プログラムE_Ka[Ix]の実行状態を把握することで、命令鍵Kaに対応する命令鍵識別子がプロセス識別子テーブル1431に既に登録されているか否かを判断できる。例えば、暗号化プログラムE_Ka[Ix]が、プロセス識別子#2の別プロセスで実行されている場合、プロセス識別子テーブル1431には命令鍵Kaを識別する命令鍵識別子が登録済みの状態である。
【0088】
プロセス識別子テーブル1431に、新規プロセスに係る命令鍵識別子と同じ命令鍵識別子が登録されていない場合、すなわち暗号化プログラムE_Ka[Ix]を実行するプロセスが存在していない場合、OSは鍵登録命令“Register”を発行する。
【0089】
また、プロセス識別子テーブル1431に、新規プロセスに係る命令鍵識別子と同じ命令鍵識別子が登録されている場合、OSは命令鍵の複製を指示する命令鍵コピー命令“KeyCopy”を発行することで、別プロセスについて登録された命令鍵識別子を、新たなプロセスの命令鍵識別子とすることを指示する。
【0090】
本実施形態では、上記のKeyCopyを用い、既に登録済みの命令鍵識別子情報を有効活用することで、配布鍵の復号処理を抑制する。例えば、配布鍵の復号に関し、公開鍵暗号方式の代表例の一つであるRSA暗号を用いる場合、復号にかかるコストは共通鍵暗号方式の代表例の一つであるAES暗号に比べて非常に大きく、このオーバヘッドのシステム全体への影響も少なくない。これにより、復号処理が不必要に行われてしまうことを防止できるため、この復号処理にかかるオーバヘッドを削減することができる。
【0091】
上述したように、本実施形態では、鍵登録処理について鍵登録命令“Register”による登録方法と、命令鍵コピー命令“KeyCopy”による登録方法とが存在する。以下、上記2つの登録方法を用いた鍵登録処理について詳細に説明する。
【0092】
[第1鍵登録処理:鍵登録命令]
まず、図16、図17を参照し、鍵登録命令“Register”がOSから発行された際の鍵登録処理(第1鍵登録処理)について説明する。ここで、図16は、第1鍵登録処理の手順を示したシーケンス図である。また、図17は、第1鍵登録処理を説明するための図であって、プロセッサ200の状態の一例を示している。以下では、図17に示したプロセッサ200の状態に基づいて説明を行う。
【0093】
OSから鍵登録命令“Register”が発行されると、プロセッサコア21は、プロセス識別子を初期化するため、制御対象のプロセス識別子となる制御対象プロセス識別子#1と、配布鍵アドレスKeyAdPrg1と、配置先アドレスPrgAd#1とを鍵管理機能部221に通知する(ステップS51)。なお、これらの情報は、鍵登録命令“Register”のパラメータとして、OSからプロセッサコア21に通知されるものとする。
【0094】
鍵管理機能部221は、プロセッサコア21から制御対象プロセス識別子#1と、配布鍵アドレスKeyAdPrg1と、配置先アドレスPrgAd#1とを受け付けると、命令鍵管理部222内の配布鍵復号部2221に、制御対象プロセス識別子#1と、配布鍵アドレスKeyAdPrg1とを通知する(ステップS52)。
【0095】
配布鍵復号部2221は、鍵管理機能部221から通知された配布鍵アドレスKeyAdPrg1に基づき、外部メモリから配布鍵E_Kp[Ka]を読み出すと(ステップS53)、プロセッサ内部にある秘密鍵(秘密鍵Ks)を用いて配布鍵E_Kp[Ka]を復号する(ステップS54)。
【0096】
次いで、配布鍵復号部2221は、命令鍵テーブル2222中の空列(命令鍵識別子#Aの列とする)をシーケンシャルに探索すると、この空列の命令鍵部分に、ステップS54での復号結果、即ち命令鍵Kaを登録する(ステップS55)。
【0097】
続いて、配布鍵復号部2221は、デバッグ可能フラグといった命令鍵共通の情報を共通付加情報として登録し、さらに、命令鍵識別子#Aの参照カウンタを1に設定する(ステップS56)。ここまでの処理を終了すると、命令鍵管理部222は、命令鍵Kaの登録先となった列の命令鍵識別子#Aを鍵管理機能部221に通知する(ステップS57)。
【0098】
鍵管理機能部221は、ステップS52で受け付けた制御対象プロセス識別子#1、配置先アドレスPrgAd#1とともに、ステップS57で通知された命令鍵識別子#Aを、プロセス識別子テーブル1431に登録するためプロセス識別子管理部223にアクセスする(ステップS58)。
【0099】
プロセス識別子管理部223は、鍵管理機能部221からのアクセスに応じ、プロセス識別子テーブル1431のプロセス識別子#1に対応する列の命令鍵識別子項目に命令鍵識別子#Aを登録する(ステップS59)。また、プロセス識別子管理部223は、プロセス識別子#1のプロセス固有情報として、プロセス識別子#1の列のプロセス状態情報項目に初期化を意味するINITを登録するとともに、配置先アドレス項目に配置先アドレスPrgAd#1を登録する(ステップS60)。なお、プロセス識別子#1について他の情報が存在する場合には、ステップS60にて登録を行うものとする。
【0100】
プロセス識別子テーブル1431への登録が終了すると、プロセス識別子管理部223は、処理が終了した旨を鍵管理機能部221に通知する(ステップS61)。また、鍵管理機能部221は、プロセス識別子管理部223から終了の通知を受けると、全ての処理が終了した旨をプロセッサコア21に通知し(ステップS62)、本処理を終了する。
【0101】
なお、本実施形態では、第1鍵登録処理の終了に伴い、プロセッサコア21が、ステップS51で鍵管理機能部221に通知した制御対象プロセス識別子を、現プロセス識別子格納レジスタ113に格納するものとするが、これに限らず、例えば、ステップS51の直後等、異なるタイミングで格納することとしてもよい。
【0102】
[第2鍵登録処理:命令鍵コピー命令]
次に、図18、図19を参照し、命令鍵コピー命令“KeyCopy”がOSから発行された際の鍵登録処理(第2鍵登録処理)について説明する。ここで、図18は、第2鍵登録処理の手順を示したシーケンス図である。また、図19は、第2鍵登録処理を説明するための図であって、プロセッサ200の状態の一例を示している。以下では、図19に示したプロセッサ200の状態に基づいて説明を行う。
【0103】
ここで、鍵登録を行おうとしたプロセス識別子(#1)の鍵と、プロセス識別子テーブル1431に既に登録された鍵とが同一であるとき、OSから命令鍵コピー命令“KeyCopy”を発行する。命令鍵コピー命令“KeyCopy”が発行されると、プロセッサコア21は、コピー元となるコピー元プロセス識別子#2と、コピー先となるコピー先プロセス識別子#1と、コピー先プロセス識別子についての配置先アドレスPrgAd#1とを、鍵管理機能部221に通知する(ステップS71)。なお、これらの情報は、命令鍵コピー命令“KeyCopy”のパラメータとして、OSからプロセッサコア21に通知されるものとする。
【0104】
鍵管理機能部221は、プロセッサコア21からプロセス識別子#2と、プロセス識別子#1と、配置先アドレスPrgAd#1とを受け付けると、これらの情報をプロセス識別子テーブル1431に登録するため、プロセス識別子管理部223にアクセスする(ステップS72)。
【0105】
プロセス識別子管理部223では、鍵管理機能部221からのアクセスに応じ、プロセス識別子テーブル1431のうち、コピー元プロセス識別子#2に対応する列の命令鍵識別子項目に登録された命令鍵識別子#Aを、コピー先プロセス識別子#1に対応する列の命令鍵識別子項目にコピーする(ステップS73)。
【0106】
また、プロセス識別子管理部223は、プロセス識別子#1のプロセス固有情報として、プロセス識別子#1に対応する列のプロセス状態情報項目に初期化を意味するINITを登録するとともに、配置先アドレス項目に配置先アドレスPrgAd#1を登録する(ステップS74)。次いで、鍵管理機能部221は、ステップS73でコピーを行った命令鍵識別子#Aを鍵管理機能部221に通知すると(ステップS75)、鍵管理機能部221はこの命令鍵識別子#Aについての参照カウンタを増加させるため、命令鍵管理部222にアクセスする(ステップS76)。
【0107】
命令鍵管理部222は、鍵管理機能部221からのアクセスに応じ、命令鍵テーブル2222を参照すると、命令鍵識別子#Aに対応する列の参照カウンタを1増加させる(ステップS77)。また、鍵管理機能部221では、プロセッサコア21に処理が終了した旨を通知し(ステップS78)、本処理を終了する。
【0108】
なお、本実施形態では、第2鍵登録処理の終了に伴い、プロセッサコア21が、ステップS71で鍵管理機能部221に通知したコピー先プロセス識別子を現プロセス識別子格納レジスタ113に格納するものとするが、これに限らず、例えば、ステップS71の直後等、異なるタイミングで格納することとしてもよい。
【0109】
[プロセス実行処理]
プロセス識別子の初期化が行われた後、OSは、プロセスを実行するためプロセス実行命令“Start”を発行する。例えば、暗号化プログラムをプロセス識別子#1で実行するとき、プロセッサ200では、外部メモリに記憶された暗号化プログラムを命令保持部12に読み込む際に、現プロセス識別子#1に対応した命令鍵Kaを用いて暗号化プログラムを復号し、この復号結果となる平文の命令を命令保持部12に保持する。
【0110】
そして、プロセッサコア21は、命令保持部12に保持した命令を読み出し実行することで、プロセス識別子#1のプロセスを実行する。なお、プロセッサ200でのプロセス実行に係る処理は、第1の実施形態のプロセス実行処理と同様であるため説明を省略する。
【0111】
[鍵削除処理]
次に、図20、図21を参照して、鍵削除処理について説明する。ここで、図20は、鍵削除処理の手順を示したシーケンス図である。また、図21は、鍵削除処理を説明するための図であって、プロセッサ200の状態の一例を示している。以下では、図21に示したプロセッサ200の状態に基づいて説明を行う。
【0112】
プロセスの完了等に伴いプロセスの削除を行う際、OSは削除対象のプロセス識別子(#1)をパラメータとしたプロセス削除命令“Delete”を発行する。プロセッサコア21は、プロセス削除命令“Delete”の発行に応じ、削除対象のプロセス識別子#1を削除対象プロセス識別子#1として鍵管理機能部221に通知する(ステップS81)。
【0113】
鍵管理機能部221は、プロセッサコア21から削除対象プロセス識別子#1を受け付けると、この削除対象プロセス識別子#1についての情報をプロセス識別子テーブル1431から削除するため、プロセス識別子管理部223にアクセスする(ステップS82)。
【0114】
プロセス識別子管理部223では、鍵管理機能部221からのアクセスに応じ、プロセス識別子テーブル1431のち、削除対象プロセス識別子#1に対応する列に登録された情報を削除すると(ステップS83)、この列に登録されていた命令鍵識別子#Aを鍵管理機能部221に通知する(ステップS84)。また、鍵管理機能部221は、プロセス識別子管理部223から通知された命令鍵識別子#Aについての参照カウンタを減少させるため、命令鍵管理部222にアクセスする(ステップS85)。
【0115】
命令鍵管理部222では、鍵管理機能部221からのアクセスに応じ、命令鍵テーブル2222のうち、命令鍵識別子#Aに対応する列の参照カウンタを1減少させる(ステップS86)。続いて、命令鍵管理部222は、ステップS86の処理において、参照カウンタの値が“0”になったか否かを判定する(ステップS87)。ここで、参照カウンタの値が“0”でないと判定した場合には(ステップS87;No)、ステップS90の処理に直ちに移行する。
【0116】
一方、ステップS87において、参照カウンタの値が“0”と判定した場合(ステップS87;Yes)、命令鍵管理部222は、命令鍵識別子#Aに対応する列に登録された各情報(命令鍵Ka、共有付加情報など)を命令鍵テーブル2222から削除する(ステップS88)。続いて、命令鍵管理部222は、命令保持部12の命令キャッシュ121に記憶された命令鍵識別子#Aに関する情報を削除する(ステップS89)。
【0117】
続くステップS90において、命令鍵管理部222は、処理が終了した旨を鍵管理機能部221に通知する(ステップS90)。また、鍵管理機能部221は、命令鍵管理部222から処理が終了した旨の通知を受けると、全ての処理が終了した旨をプロセッサコア11に通知し(ステップS91)、本処理を終了する。
【0118】
このように、本実施形態では命令鍵に特化した鍵管理方式を提案することでより効率的なキャッシュアクセスを実現している。一方、従来提案された特開2002−232417号公報に記載の技術では、プロセッサ内に復号されたキャッシュラインを外部メモリへのフラッシュなしで複数のプロセスで共有することはできないことを鍵管理方式で解決しており、データと命令とのどちらにも適合可能な鍵管理方式となっている。
【0119】
しかしながら、各プロセスで生成されるデータ鍵と比べ、命令鍵はプログラムと1対1に対応しており、同じプログラムにおいて同一の命令鍵が使われるという特性を持っている。本実施形態では、この特性に着目し、鍵登録時に同一のプログラムを実行するプロセスの命令鍵をコピーして登録するという手法をとることで、必要のない鍵の復号処理を省くことを実現している。
【0120】
以上のように、本実施形態のプロセッサ200によれば、暗号化プログラムの実行単位となるプロセスを、実行対象のプログラム(命令)、物理アドレス及び命令鍵識別子のデータ単位でキャッシュし、実行対象のプロセスに該当するデータがキャッシュされている場合、前記暗号化プログラムの復号を行わず、このキャッシュされたデータを用いてプロセスを実行することが可能であるため、より効率的にプロセスを実行することができる。
【0121】
また、命令鍵識別子をタグとして用いることで、同じプログラムが別プロセスとして実行されていてもキャッシュヒットするため、プログラムの実行にかかる時間的コストを削減し、より高速なシステムを実現できる。さらに、共有ライブラリを用いた場合でも、配置先アドレスをプロセス毎に管理しているため、従来どおりの復号機能を実現できる。これにより、安全性と利便性のバランスの取れたシステムを実現することが可能となる。
【0122】
また、命令鍵登録の第2鍵登録処理として命令鍵コピー命令“KeyCopy”を発行することで、命令鍵識別子テーブルにおいて命令鍵から命令鍵識別子をサーチするコストを削減することができる。従来提案されていた特開2002−23241号公報に記載の技術と比較すると、従来では、登録時に鍵値をテーブル検索し、一致するエントリが存在しない場合は新たに値を登録し、一致するエントリが存在する場合に、存在する命令識別子を利用していたが、本実施形態では、命令鍵コピー命令“KeyCopy”を用いることで、OS側で同じ鍵のプログラムがすでに登録されているかどうかを判断し、命令鍵テーブルの検索を行わずに命令鍵を登録することができる。そのため、より高速な処理を実現することが可能となる。
【0123】
[第3の実施形態]
次に、第3の実施形態について説明する。本実施形態では、第2の実施形態の構成に加え、現プロセス識別子に対応する命令鍵識別子をプロセッサコア内部に保持する構成について説明する。なお、第1、第2の実施形態と同様の構成要素については、同一の符号を付与し説明を省略する。
【0124】
図22は、第3の実施形態に係るプロセッサ300の構成を示した図である。同図に示したように、プロセッサ300は、プロセッサコア31と、命令保持部12と、命令復号処理部13と、鍵管理部32と、外部バスインタフェース15とを備えている。
【0125】
プロセッサコア31は、上述したレジスタ111、制御レジスタ112及び現プロセス識別子格納レジスタ113に加え、現命令鍵識別子格納レジスタ311を備えている。ここで、現命令鍵識別子格納レジスタ311は、現時点で実行対象のプロセス(現プロセス識別子)に対応する命令の命令鍵識別子(現命令鍵識別子情報)を格納するための記憶領域である。なお、プロセッサコア31は、プロセスの切り替えに伴い、現プロセス識別子格納レジスタ113の値を変更すると、この変更後の値に応じた命令鍵識別子をプロセス識別子テーブル1431から取得し、現命令鍵識別子格納レジスタ311に格納するものとする。
【0126】
また、鍵管理部32は、図23に示したように、鍵管理機能部321と、命令鍵管理部322と、プロセス識別子管理部323とを有している。
【0127】
鍵管理機能部321は、鍵管理機能部141と同様、プログラムの実行に必要な命令鍵を登録するための各種処理を行う機能部であり、命令鍵管理部322及びプロセス識別子管理部323が管理する各テーブルの書き込みや読み込みを制御する。なお、各テーブルは直接参照できるよう管理されているものとする。
【0128】
命令鍵管理部322は、配布鍵復号部3221と、命令鍵を管理する命令鍵テーブル2222とを有している。ここで、配布鍵復号部3221は、配布鍵復号部2221と同様、外部メモリから読み出した配布鍵を復号する機能部である。
【0129】
プロセス識別子管理部323は、プロセス識別子を管理するためのプロセス識別子テーブル1431を有し、鍵管理機能部321からのアクセスに応じてプロセス識別子テーブル1431の読み書きを制御する。
【0130】
以下、プロセッサ300における、暗号化プログラムの実行に係る一連の手順(鍵登録処理、プロセス実行処理、鍵削除処理)について説明する。なお、以下に説明する処理の前提として、命令鍵Kaによって暗号化された命令Ix、即ち、暗号化プログラムE_Ka[Ix]と、プロセッサ300内の秘密鍵Ksと対となる公開鍵Kpによって暗号化された配布鍵E_Kp[Ka]とが、外部メモリに記憶されているとする。
【0131】
[第1鍵登録処理:鍵登録命令]
まず、図24、図25を参照し、鍵登録命令“Register”がOSから発行された際の鍵登録処理(第1鍵登録処理)について説明する。ここで、図24は、第1鍵登録処理の手順を示したシーケンス図である。また、図25は、第1鍵登録処理を説明するための図であって、プロセッサ300の状態の一例を示している。以下では、図25に示したプロセッサ300の状態に基づいて説明を行う。
【0132】
OSから鍵登録命令“Register”が発行されると、プロセッサコア31は、プロセス識別子を初期化するため、制御対象のプロセス識別子となる制御対象プロセス識別子#1と、配布鍵アドレスKeyAdPrg1と、配置先アドレスPrgAd#1とに加え、制御対象プロセス識別子に対応した制御対象の命令鍵識別子となる制御対象命令鍵識別子#Aを鍵管理機能部321に通知する(ステップS101)。なお、これらの情報は、鍵登録命令“Register”のパラメータとして、OSからプロセッサコア31に通知されるものとする。
【0133】
鍵管理機能部321は、プロセッサコア31から各種情報を受け付けると、命令鍵管理部322内の配布鍵復号部3221に、制御対象命令鍵識別子#Aと、配布鍵アドレスKeyAdPrg1とを通知する(ステップS102)。
【0134】
配布鍵復号部3221は、鍵管理機能部321から通知された配布鍵アドレスKeyAdPrg1に基づき、外部メモリから配布鍵E_Kp[Ka]を読み出すと(ステップS103)、プロセッサ内部にある秘密鍵(秘密鍵Ks)を用いて配布鍵E_Kp[Ka]を復号する(ステップS104)。
【0135】
次いで、配布鍵復号部3221は、命令鍵テーブル2222中の制御対象命令鍵識別子#Aに対応する列の命令鍵部分に、ステップS104での復号結果、即ち、命令鍵Kaを登録する(ステップS105)。続いて、配布鍵復号部3221は、デバッグ可能フラグといった命令鍵共通の情報を共通付加情報として登録し、さらに、命令鍵識別子#Aの参照カウンタを1に設定する(ステップS106)。
【0136】
一方、鍵管理機能部321は、プロセッサコア31から通知された制御対象プロセス識別子#1、配置先アドレスPrgAd#1、制御対象命令鍵識別子#Aを、プロセス識別子テーブル1431に登録するためプロセス識別子管理部323にアクセスする(ステップS107)。
【0137】
プロセス識別子管理部323は、鍵管理機能部321からのアクセスに応じ、プロセス識別子テーブル1431の制御対象プロセス識別子#1に対応する列の命令鍵識別子項目に制御対象命令鍵識別子#Aを登録する(ステップS108)。また、プロセス識別子管理部323は、制御対象プロセス識別子#1のプロセス固有情報として、プロセス識別子#1の列のプロセス状態情報項目に初期化を意味するINITを登録するとともに、配置先アドレス項目に配置先アドレスPrgAd#1を登録する(ステップS109)。なお、制御対象プロセス識別子#1について他の情報が存在する場合には、ステップS109にて登録を行うものとする。
【0138】
プロセス識別子テーブル1431への登録が終了すると、プロセス識別子管理部323は、処理が終了した旨を鍵管理機能部321に通知する(ステップS110)。また、鍵管理機能部321は、プロセス識別子管理部323から終了の通知を受けると、全ての処理が終了した旨をプロセッサコア31に通知し(ステップS111)、本処理を終了する。
【0139】
なお、本実施形態では、第1鍵登録処理の終了に伴い、プロセッサコア31が、ステップS101で鍵管理機能部321に通知した制御対象プロセス識別子を現プロセス識別子格納レジスタ113に格納し、制御対象命令鍵識別子を現命令鍵識別子格納レジスタ311に格納するものとするが、これに限らず、例えば、ステップS101の直後等、異なるタイミングで格納することとしてもよい。
【0140】
また、本処理では、命令鍵テーブル2222と、プロセス識別子テーブル1431とについての処理を時系列で行っているが、ステップS102の時点で鍵管理機能部321は命令鍵識別子#Aの情報を保持するため、各テーブルに対する処理を並列に行うこととしてもよい。この場合、第2の実施形態の第1鍵登録処理に較べ、より高速に第1鍵登録処理を終了することができる。
【0141】
[第2鍵登録処理:命令鍵コピー命令]
次に、図26、図27を参照し、命令鍵コピー命令“KeyCopy”がOSから発行された際の鍵登録処理(第2鍵登録処理)について説明する。ここで、図26は、第2鍵登録処理の手順を示したシーケンス図である。また、図27は、第2鍵登録処理を説明するための図であって、プロセッサ300の状態の一例を示している。以下では、図27に示したプロセッサ300の状態に基づいて説明を行う。
【0142】
OSから命令鍵コピー命令“KeyCopy”が発行されると、プロセッサコア21は、コピー元となるコピー元プロセス識別子#2と、コピー先となるコピー先プロセス識別子#1と、コピー先プロセス識別子についての配置先アドレスPrgAd#1とに加え、コピー元プロセス識別子に対応した命令鍵識別子であるコピー元命令鍵識別子#Aを鍵管理機能部321に通知する(ステップS121)。なお、これらの情報は、命令鍵コピー命令“KeyCopy”のパラメータとして、OSからプロセッサコア31に通知されるものとする。
【0143】
鍵管理機能部321は、プロセッサコア31から各種情報を受け付けると、これらの情報をプロセス識別子テーブル1431に登録するため、プロセス識別子管理部323にアクセスする(ステップS122)。
【0144】
プロセス識別子管理部323では、鍵管理機能部321からのアクセスに応じ、プロセス識別子テーブル1431のうち、コピー元プロセス識別子#2に対応する列の命令鍵識別子項目に登録された命令鍵識別子#Aを、コピー先プロセス識別子#1に対応する列の命令鍵識別子項目にコピーする(ステップS123)。
【0145】
また、プロセス識別子管理部323は、コピー先プロセス識別子#1のプロセス固有情報として、コピー先プロセス識別子#1に対応する列のプロセス状態情報項目に初期化を意味するINITを登録するとともに、配置先アドレス項目に配置先アドレスPrgAd#1を登録する(ステップS124)。
【0146】
一方、鍵管理機能部321は、プロセッサコア31から通知されたコピー元命令鍵識別子#Aについての参照カウンタを増加させるため、命令鍵管理部322にアクセスする(ステップS125)。
【0147】
命令鍵管理部322は、鍵管理機能部321からのアクセスに応じ、命令鍵テーブル2222を参照すると、コピー元命令鍵識別子#Aに対応する列の参照カウンタを1増加させる(ステップS126)。
【0148】
また、鍵管理機能部321では、プロセッサコア31に処理が終了した旨を通知し(ステップS127)、本処理を終了する。
【0149】
なお、本実施形態では、第2鍵登録処理の終了に伴い、プロセッサコア31が、ステップS121で鍵管理機能部321に通知したコピー先プロセス識別子を現プロセス識別子格納レジスタ113に格納し、コピー元命令鍵識別子を現命令鍵識別子格納レジスタ311に格納するものとするが、これに限らず、例えば、ステップS121の直後等、異なるタイミングで格納することとしてもよい。
【0150】
また、本処理では、命令鍵テーブル2222と、プロセス識別子テーブル1431とについての処理を時系列で行っているが、ステップS122の時点で鍵管理機能部321は命令鍵識別子#Aの情報を保持するため、各テーブルに対する処理を並列に行うこととしてもよい。この場合、第2の実施形態の第2鍵登録処理に較べ、より高速に第2鍵登録処理を終了することができる。
【0151】
[プロセス実行処理]
次に、上記鍵登録処理で初期化されたプロセス識別子のプロセスが実行される際の処理(プロセス実行処理)について説明する。なお、プロセッサコア31に現命令鍵識別子格納レジスタ311が追加されただけであるため、処理の大まかな流れは第1の実施形態と同様である。以下では、第1の実施形態との差分について説明する。
【0152】
図28、図29を参照して、プロセス実行処理について説明する。ここで、図28は、プロセス実行処理の手順を示したシーケンス図である。また、図29は、プロセス実行処理を説明するための図であって、プロセッサ300の状態の一例を示している。以下では、図29に示したプロセッサ300の状態に基づいて説明を行う。
【0153】
まず、プロセッサコア31は、プロセス実行命令“Start”の発行に応じ、現プロセス識別子格納レジスタ113に保持された現プロセス識別子#1と、この現プロセス識別子#1で実行対象となる暗号化プログラムが格納された外部メモリ上での物理アドレスを表す命令アドレスIxAdとに加え、現命令鍵識別子格納レジスタ311に保持された現命令鍵識別子#Aを命令保持部12(アクセス制御部1221)に通知する(ステップS131)。
【0154】
アクセス制御部1221では、プロセッサコア31から受け付けた現命令鍵識別子#A及び命令アドレスIxAdの各値と、命令キャッシュ121の各キャッシュラインに保持されたプロセス情報(アドレスタグT2、命令鍵識別子タグT4)の各値とを比較し、キャッシュがヒットするか否かを判定する(ステップS132)。ここで、キャッシュヒットと判定された場合(ステップS132;Yes)、ステップS141の処理に直ちに移行する。
【0155】
一方、ステップS132において、キャッシュミスと判定した場合(ステップS132;No)、アクセス制御部1221は、プロセス識別子テーブル1431から現プロセス識別子#1に対応する配置先アドレスPrgAd#1を読み出し(ステップS133)、命令鍵識別子#Aと命令アドレスIxAdとともに命令復号処理部13に通知する(ステップS134)。なお、ステップS135〜S141の処理は、第1の実施形態で説明したプロセス実行処理のステップS26〜S32の処理と同様であるため説明を省略する。
【0156】
[鍵削除処理]
次に、図30、図31を参照して、鍵削除処理について説明する。ここで、図30は、鍵削除処理の手順を示したシーケンス図である。また、図31は、鍵削除処理を説明するための図であって、プロセッサ300の状態の一例を示している。以下では、図31に示したプロセッサ300の状態に基づいて説明を行う。
【0157】
プロセスの完了等に伴いプロセスの削除を行う際、OSは削除対象のプロセス識別子(#1)と、当該プロセス識別子に対応する削除対象の命令鍵識別子(#A)をパラメータとしたプロセス削除命令“Delete”を発行する。プロセッサコア31は、プロセス削除命令“Delete”の発行に応じ、削除対象プロセス識別子#1と、削除対象命令鍵識別子#Aとを、鍵管理機能部321に通知する(ステップS151)。
【0158】
鍵管理機能部321は、プロセッサコア31から削除対象プロセス識別子#1と、削除対象命令鍵識別子#Aとを受け付けると、この削除対象プロセス識別子#1に関する情報をプロセス識別子テーブル1431から削除するため、プロセス識別子管理部323にアクセスする(ステップS152)。
【0159】
プロセス識別子管理部323では、鍵管理機能部321からのアクセスに応じ、プロセス識別子テーブル1431のち、削除対象プロセス識別子#1に対応する列に登録された情報を削除する(ステップS153)。
【0160】
また、鍵管理機能部221は、プロセッサコア31から通知された削除対象命令鍵識別子#Aについての参照カウンタを減少させるため、命令鍵管理部322にアクセスする(ステップS154)。
【0161】
命令鍵管理部322では、鍵管理機能部321からのアクセスに応じ、命令鍵テーブル2222のうち、削除対象命令鍵識別子#Aに対応する列の参照カウンタを1減少させる(ステップS155)。続いて、命令鍵管理部322は、ステップS155の処理において、参照カウンタの値が“0”になったか否かを判定する(ステップS156)。ここで、参照カウンタの値が“0”でないと判定した場合には(ステップS156;No)、ステップS159の処理に直ちに移行する。
【0162】
一方、ステップS156において、参照カウンタの値が“0”と判定した場合(ステップS156;Yes)、命令鍵管理部322は、削除対象命令鍵識別子#Aに対応する列に登録された各情報(命令鍵Ka、共有付加情報など)を命令鍵テーブル2222から削除する(ステップS157)。続いて、命令鍵管理部322は、命令保持部12の命令キャッシュ121に記憶された削除対象命令鍵識別子#Aに関する情報を削除する(ステップS158)。
【0163】
続くステップS159において、命令鍵管理部322は、処理が終了した旨を鍵管理機能部321に通知する(ステップS159)。また、鍵管理機能部321は、命令鍵管理部322から処理が終了した旨の通知を受けると、全ての処理が終了した旨をプロセッサコア31に通知し(ステップS160)、本処理を終了する。
【0164】
なお、本処理では、命令鍵テーブル2222とプロセス識別子テーブル1431とについての処理を時系列で行っているが、ステップS152の時点で鍵管理機能部321は命令鍵識別子#Aの情報を保持するため、各テーブルに対する処理を並列に行うこととしてもよい。この場合、第2の実施形態の鍵削除処理に較べ、より高速に鍵削除処理を終了することができる。
【0165】
このように、プロセッサコア内部に命令鍵識別子情報を持つことで、命令鍵登録・プログラム実行・命令鍵削除の各過程においてプロセス識別子テーブルへのアクセス回数を減らすことが可能となり実施の形態1よりも高速な処理を実現する。なお、本実施形態では、第2の実施形態の構成を基礎としたが、これに限らず、第1の実施形態の構成を基礎としてもよい。
【0166】
以上のように、本実施形態のプロセッサ300によれば、暗号化プログラムの実行単位となるプロセスを、実行対象のプログラム(命令)、物理アドレス及び命令鍵識別子のデータ単位でキャッシュし、実行対象のプロセスに該当するデータがキャッシュされている場合、前記暗号化プログラムの復号を行わず、このキャッシュされたデータを用いてプロセスを実行することが可能であるため、より効率的にプロセスを実行することができる。
【0167】
また、命令鍵識別子をタグとして用いることで、同じプログラムが別プロセスとして実行されていてもキャッシュヒットするため、プログラムの実行にかかる時間的コストを削減し、より高速なシステムを実現できる。さらに、共有ライブラリを用いた場合でも、配置先アドレスをプロセス毎に管理しているため、従来どおりの復号機能を実現できる。これにより、安全性と利便性のバランスの取れたシステムを実現することが可能となる。
【0168】
また、命令鍵登録の第2鍵登録処理として命令鍵コピー命令“KeyCopy”を発行することで、命令鍵識別子テーブルにおいて命令鍵から命令鍵識別子をサーチするコストを削減することができる。従来提案されていた特開2002−23241号公報に記載の技術と比較すると、従来では、登録時に鍵値をテーブル検索し、一致するエントリが存在しない場合は新たに値を登録し、一致するエントリが存在する場合に、存在する命令識別子を利用していたが、本実施形態では、命令鍵コピー命令“KeyCopy”を用いることで、OS側で同じ鍵のプログラムがすでに登録されているかどうかを判断し、命令鍵テーブルの検索を行わずに命令鍵を登録することができる。そのため、より高速な処理を実現することが可能となる。
【0169】
また、プロセッサコア内部に実行状態にあるプロセス識別子に対応した命令鍵識別子を保持することで、鍵登録処理、プロセス実行処理、鍵削除処理の際の各テーブルの参照回数を減少させることが可能となるとともに、各テーブルでの処理を並列に処理することが可能となるため、より高速且つ効率的に各処理を実行することができる。
【0170】
以上、本発明に係る実施形態について説明したが、これに限定されるものではなく、本発明の主旨を逸脱しない範囲での種々の変更、置換、追加などが可能である。
【図面の簡単な説明】
【0171】
【図1】第1の実施形態にかかるプロセッサの構成を示した図である。
【図2】図1に示した命令保持部及び命令復号処理部の詳細構成を示した図である。
【図3】図2の命令キャッシュに格納されるデータ構造を模式的に示した図である。
【図4】図1に示した鍵管理部の構成を説明するための図である。
【図5】図4に示した命令鍵テーブルの一例を示した図である。
【図6】図4に示したプロセス識別子テーブルの一例を示した図である。
【図7】第1の実施形態に係る鍵登録処理の手順を示したシーケンス図である。
【図8】第1の実施形態に係る鍵登録処理を説明するための図である。
【図9】第1の実施形態に係るプロセス実行処理の手順を示したシーケンス図である。
【図10】第1の実施形態に係るプロセス実行処理を説明するための図である。
【図11】第1の実施形態に係る鍵削除処理の手順を示したシーケンス図である。
【図12】第1の実施形態に係る鍵削除処理を説明するための図である。
【図13】第2の実施形態にかかるプロセッサの構成を示した図である。
【図14】図13に示した鍵管理部の構成を説明するための図である。
【図15】図14に示した命令鍵テーブルの一例を示した図である。
【図16】第2の実施形態に係る第1鍵登録処理の手順を示したシーケンス図である。
【図17】第2の実施形態に係る第1鍵登録処理を説明するための図である。
【図18】第2の実施形態に係る第2鍵登録処理の手順を示したシーケンス図である。
【図19】第2の実施形態に係る第2鍵登録処理を説明するための図である。
【図20】第2の実施形態に係る鍵削除処理の手順を示したシーケンス図である。
【図21】第2の実施形態に係る鍵削除処理を説明するための図である。
【図22】第3の実施形態にかかるプロセッサの構成を示した図である。
【図23】図23に示した鍵管理部の構成を説明するための図である。
【図24】第3の実施形態に係る第1鍵登録処理の手順を示したシーケンス図である。
【図25】第3の実施形態に係る第1鍵登録処理を説明するための図である。
【図26】第3の実施形態に係る第2鍵登録処理の手順を示したシーケンス図である。
【図27】第3の実施形態に係る第2鍵登録処理を説明するための図である。
【図28】第3の実施形態に係るプロセス実行処理の手順を示したシーケンス図である。
【図29】第3の実施形態に係るプロセス実行処理を説明するための図である。
【図30】第3の実施形態に係る鍵削除処理の手順を示したシーケンス図である。
【図31】第3の実施形態に係る鍵削除処理を説明するための図である。
【符号の説明】
【0172】
100 プロセッサ
11 プロセッサコア
111 レジスタ
112 制御レジスタ
113 現プロセス識別子格納レジスタ
12 命令保持部
121 命令キャッシュ
122 キャッシュコントローラ
1221 アクセス制御部
13 命令復号処理部
131 アドレス変換部
132 命令復号部
14 鍵管理部
141 鍵管理機能部
142 命令鍵管理部
1421 命令鍵テーブル
143 プロセス識別子管理部
1431 プロセス識別子テーブル
15 外部バスインタフェース
16 内部データバス
200 プロセッサ
21 プロセッサコア
22 鍵管理部
221 鍵管理機能部
222 命令鍵管理部
2221 配布鍵復号部
2222 命令鍵テーブル
223 プロセス識別子管理部
300 プロセッサ
31 プロセッサコア
311 現命令鍵識別子格納レジスタ
32 鍵管理部
321 鍵管理機能部
322 命令鍵管理部
3221 配布鍵復号部
323 プロセス識別子管理部

【特許請求の範囲】
【請求項1】
暗号化プログラムを復号するための命令鍵と、当該命令鍵を識別する命令鍵識別子とを関連付けて記憶する第1記憶手段と、
前記暗号化プログラムの実行単位となるプロセスを識別するプロセス識別子と、当該プロセスの実行対象となる前記暗号化プログラムを復号する命令鍵の前記命令鍵識別子と、当該暗号化プログラムに割り当てられた相対アドレスを算出するための配置先アドレスとを関連付けて記憶する第2記憶手段と、
実行対象のプロセスのプロセス識別子を記憶する第1識別子記憶手段と、
前記第1識別子記憶手段に記憶されたプロセス識別子と、当該プロセス識別子のプロセスで実行対象となる暗号化プログラムが格納された物理アドレスとを通知し、前記命令鍵により復号された暗号化プログラムを実行する実行手段と、
前記実行手段から通知された前記プロセス識別子に対応する命令鍵識別子を、前記第2記憶手段から読み出す命令鍵識別子読出手段と、
前記命令鍵識別子読出手段で読み出された命令鍵識別子と関連付けて前記第1記憶手段に記憶された配置先アドレスと、前記実行手段から通知された物理アドレスとを用いて、前記実行対象の暗号化プログラムに割り当てられた前記相対アドレスを算出する算出手段と、
前記相対アドレスに基づき前記外部記憶手段から取得した前記実行対象の暗号化プログラムを、前記命令鍵識別子読出手段で読み出された前記命令鍵識別子と関連付けて前記第1記憶手段に記憶された命令鍵を用いて復号し、平文のプログラムを取得する復号手段と、
前記復号手段で取得されたプログラムと、当該プログラムに係る前記物理アドレス及び前記命令鍵識別子とを関連付けて記憶するキャッシュ手段と、
前記実行手段から通知された物理アドレスと、前記命令鍵識別子読出手段で読み出された命令鍵識別子とに対応するプログラムが、前記キャッシュ手段に記憶されているか否かを判定する判定手段と、
前記判定手段により該当するプログラムが記憶されていると判定された場合、当該プログラムを前記実行手段に通知し、該当するプログラムが記憶されていないと判定された場合、前記復号手段で取得されたプログラムを前記実行手段に通知するアクセス制御手段と、
を備えたことを特徴とするマイクロプロセッサ。
【請求項2】
暗号化プログラムを復号するための命令鍵と、当該命令鍵を識別する命令鍵識別子とを関連付けて記憶する第1記憶手段と、
前記暗号化プログラムの実行単位となるプロセスを識別するプロセス識別子と、当該プロセスの実行対象となる前記暗号化プログラムを復号する命令鍵の前記命令鍵識別子と、当該暗号化プログラムに割り当てられた相対アドレスを算出するための配置先アドレスとを関連付けて記憶する第2記憶手段と、
実行対象のプロセスのプロセス識別子を記憶する第1識別子記憶手段と、
実行対象のプロセスのプロセス識別子に対応する前記命令鍵識別子を記憶する第2識別子記憶手段と、
前記第1識別子記憶手段に記憶されたプロセス識別子と、当該プロセス識別子のプロセスで実行対象となる暗号化プログラムが格納された物理アドレスと、前記第2識別子記憶手段に記憶された命令鍵識別子とを通知し、前記命令鍵により復号された暗号化プログラムを実行する実行手段と、
前記実行手段から通知された前記命令鍵識別子と関連付けて前記第1記憶手段に記憶された配置先アドレスと、物理アドレスとを用いて、前記実行対象の暗号化プログラムに割り当てられた前記相対アドレスを算出する算出手段と、
前記相対アドレスに基づき外部の記憶手段から取得した前記実行対象の暗号化プログラムを、前記実行手段から通知された命令鍵識別子と関連付けて前記第1記憶手段に記憶された命令鍵を用いて復号し、平文のプログラムを取得する復号手段と、
前記復号手段で取得されたプログラムと、当該プログラムに係る前記物理アドレス及び前記命令鍵識別子とを関連付けて記憶するキャッシュ手段と、
前記実行手段から通知された物理アドレス及び命令鍵識別子に対応するプログラムが、前記キャッシュ手段に記憶されているか否かを判定する判定手段と、
前記判定手段により該当するプログラムが記憶されていると判定された場合、当該プログラムを前記実行手段に通知し、該当するプログラムが記憶されていないと判定された場合、前記復号手段で取得されたプログラムを前記実行手段に通知するアクセス制御手段と、
を備えたことを特徴とするマイクロプロセッサ。
【請求項3】
公開鍵によって暗号化された命令鍵を外部の記憶手段から読み出す命令鍵読出手段と、
前記命令鍵読出手段により読み出された暗号化済みの命令鍵を、前記公開鍵に対応する秘密鍵を用いて復号し、当該命令鍵の命令鍵識別子と関連付けて前記第1記憶手段に登録する第1登録手段と、
前記プロセスの実行に先がけ、当該プロセスのプロセス識別子と、前記第1記憶手段に記憶された当該プロセスの実行対象となる暗号化プログラムに係る命令鍵識別子と、当該暗号化プログラムの配置先アドレスとを関連付け、前記第2記憶手段に登録する第2登録手段と、
を更に備えたことを特徴とする請求項1又は2に記載のマイクロプロセッサ。
【請求項4】
前記第2登録手段は、前記第2記憶手段への登録に際し、実行対象の暗号化プログラムと同一の暗号化プログラムを実行する他のプロセスのプロセス識別子が前記第2記憶手段に既に記憶されていると判定した場合、当該他のプロセスのプロセス識別子に関連付けて記憶された命令鍵識別子を、前記実行対象の暗号化プログラムに係る命令鍵識別子として複製することを特徴とする請求項3に記載のマイクロプロセッサ。
【請求項5】
前記実行手段は、削除対象となるプロセス識別子を通知し、
前記実行手段から通知された削除対象のプロセス識別子及び当該プロセス識別子に関連付けられた情報を、前記第2記憶手段から削除する第1削除手段を更に備えたことを特徴とする請求項3又は4に記載のマイクロプロセッサ。
【請求項6】
前記第1記憶手段は、前記第2記憶手段に登録された各命令鍵識別子の個数を表す参照カウンタを、対応する命令鍵識別子と関連付けて記憶し、
前記参照カウンタがゼロとなった命令鍵識別子及び当該命令識別子に関連付けられた情報を前記第1記憶手段から削除する第2削除手段を更に備えたことを特徴とする請求項5に記載のマイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate


【公開番号】特開2010−55423(P2010−55423A)
【公開日】平成22年3月11日(2010.3.11)
【国際特許分類】
【出願番号】特願2008−220506(P2008−220506)
【出願日】平成20年8月28日(2008.8.28)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】