(57)【要約】      （修正有）【課題】マイクロプロセッサが実行するタスクに関連づけた暗号鍵情報を記憶し、タスクの切替え時に、その暗号鍵情報をタスク切替えプログラムにより書き換えることによって、暗号化されたプログラムを復号して実行する情報処理装置を提供する。【解決手段】秘密鍵を保持する秘密鍵保持部５と、上記秘密鍵に対応する公開鍵によって暗号化された共通鍵を少なくとも一つのタスクに対応して保持する暗号化共通鍵保持部３と、上記共通鍵を入力とし、上記秘密鍵によって復号する共通鍵復号部４と、命令フェッチ２を行なうタスクに対応する上記共通鍵が上記暗号化共通鍵保持部３に保持されている場合に、上記復号された共通鍵を用いて該タスクのプログラムを復号する命令復号部６と、上記命令復号部６から上記タスクのプログラムをフェッチ２して実行する命令実行部１とを備える構成とした。【選択図】図１
2006091967.tif 000002
【特許請求の範囲】
【請求項１】
秘密鍵を保持する秘密鍵保持部と、
上記秘密鍵に対応する公開鍵によって暗号化された共通鍵を少なくとも一つのタスクに対応して保持する暗号化共通鍵保持部と、
上記暗号化共通鍵保持部に保持された暗号化された共通鍵を入力とし、上記秘密鍵によって復号する共通鍵復号部と、
命令フェッチを行なうタスクに対応する上記共通鍵が上記暗号化共通鍵保持部に保持されている場合に、上記復号された共通鍵を用いて該タスクのプログラムを復号する命令復号部と、
上記命令復号部から上記タスクのプログラムをフェッチして実行する命令実行部と、を備えた、
ことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
少なくとも上記命令実行部がタスク切替えを行なうプログラムを実行するスーパーバイザ状態を有し、
上記スーパーバイザ状態であるときには、上記復号部は、上記プログラムの復号を行わない、
ことを特徴とする情報処理装置。
【請求項３】
請求項１又は請求項２に記載の情報処理装置において、
複数のタスクの共通鍵をそれぞれに保持する複数の上記暗号化共通鍵保持部と、
実行するタスクのタスク番号を保持する第１のタスク識別部と、を備え、
上記第１のタスク識別部は、上記タスク番号を基に上記複数の暗号化共通鍵保持部から一つの暗号化共通鍵保持部を選択し、
上記共通鍵復号部は、上記選択された暗号化共通鍵保持部に保持されている共通鍵を入力とし、上記秘密鍵によって復号する、
ことを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置において、
上記複数のタスクのプロセッサ状態情報を保持する複数のコンテキストと、
実行中のタスクのタスク番号を上記第１のタスク識別部に設定するコンテキスト切替え部と、を備え、
上記複数の暗号化共通鍵保持部は、上記複数のタスクのそれぞれのコンテキストであり、
上記複数のタスクは、上記コンテキストを上記コンテキスト切替え部により切替えながら実行する、
ことを特徴とする情報処理装置。
【請求項５】
請求項３に記載の情報処理装置において、
上記命令復号部によって復号されたプログラムを格納するプログラム記憶部と、
上記プログラム記憶部へのプログラムの転送を制御するプログラム転送部と、
上記プログラム転送部によってプログラムを転送する場合、該プログラムに対応するタスク番号を保持して上記複数の暗号化共通鍵保持部から一つの共通鍵を選択する第２のタスク識別部と、を備え、
上記命令実行部は、上記プログラム記憶部からプログラムをフェッチして実行する、
ことを特徴とする情報処理装置。
【請求項６】
請求項３に記載の情報処理装置において、
上記命令復号部によって復号されたプログラムを格納するキャッシュメモリと、上記キャッシュメモリへのプログラムの転送を制御するキャッシュコントローラとからなる命令キャッシュを備え、
上記命令実行部は、上記命令キャッシュからプログラムをフェッチして実行する、
ことを特徴とする情報処理装置。
【請求項７】
請求項５に記載の情報処理装置において、
上記プログラム転送部によってプログラムを上記プログラム記憶部に転送する際に上記共通鍵復号部に入力する共通鍵を格納する別途の暗号化共通鍵格納部をさらに備え、
上記プログラム記憶部は、上記暗号化されたプログラムのアドレス空間と別のアドレス空間に配置され、
上記プログラム転送部は、プログラム転送命令によって明示的に起動される、
ことを特徴とする情報処理装置。
【請求項８】
請求項１に記載の情報処理装置と組み合わせて用いられるデバッグ装置であって、
上記暗号化されたプログラムの格納アドレス情報と、対応する上記共通鍵とを格納するデバッグ情報保持部と、
上記暗号化されたプログラムの格納アドレス情報、及び対応する上記復号された共通鍵を用いて、上記情報処理装置から読み出した暗号化プログラムを復号して命令表示を行なう命令表示部と、を備えた、
ことを特徴とするデバッグ装置。
【請求項９】
請求項８に記載のデバッグ装置において、
上記復号されたプログラムにブレイクポイント命令を埋め込み、上記共通鍵によって暗号化を行ない、該暗号化されたプログラムを上記情報処理装置の該プログラムが格納されていた場所に書き込む暗号部を備えた、
ことを特徴とするデバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびデバッグ装置に関し、特に、暗号化されたプログラムを他のプログラムから秘匿しながら実行するマイクロプロセッサ、および、そのマイクロプロセッサのプログラム開発時のデバッグ装置に関する。
【背景技術】
【０００２】
従来のマイクロプロセッサは、暗号化されたプログラムの暗号鍵を、暗号化されたプログラムのアドレス情報と関連づけ、アドレス変換装置に、その暗号鍵に関する情報をアドレスと関連づけて保持し、マイクロプロセッサが該プログラムを実行する際の命令フェッチ時に、そのプログラムのアドレスに関連づけられた暗号鍵を用いて、暗号化されたプログラムを復号している（例えば、特許文献１参照）。
また、暗号化されたプログラムを復号して実行するマイクロプロセッサのデバッグ装置としては、デバッグ通信路上に復号されたプログラムが流れるのを防ぐために、デバッグ対象のプログラムをデバッグのために暗号化し、デバッグ装置において復号する方法がある。（例えば、特許文献２参照）。
【特許文献１】特開２００１−２３０７７０号公報
【特許文献２】特開２００３−１４０７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記従来の情報処理装置の構成では、プログラムのアドレスに関連づけた暗号鍵を用いて暗号化されたプログラムを復号して実行するため、アドレス変換装置にアドレス変換情報の他に暗号鍵情報を記憶させ、マイクロプロセッサがフェッチする命令のアドレスに対応する暗号鍵を用いてプログラムを復号させる必要があるので、アドレス変換手段を必要とし、コストを増加してしまうという課題がある。
【０００４】
また、上記従来のデバッグ装置の構成でも、デバッグ対象のプログラムをデバッグのためにデバッグ用の暗号手段を用いて暗号化しているため、同様にコストを増加してしまうという課題がある。
【０００５】
本発明は、上記のような従来の問題点を解決するためになされたもので、復号のためのアドレス変換手段、デバッグのための暗号手段を必要とせずに、タスク毎に異なる暗号鍵を用いて複数の暗号化されたプログラムを実行することのできる、ローコストの情報処理装置、及びデバッグ装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明は、マイクロプロセッサが実行するタスクに関連づけた暗号鍵情報を記憶し、タスクの切替え時に、その暗号鍵情報をタスク切替えプログラムにより書き換えることによって、暗号化されたプログラムを復号して実行する構成としている。
【０００７】
具体的には、本発明の請求項１に記載の情報処理装置は、秘密鍵を保持する秘密鍵保持部と、上記秘密鍵に対応する公開鍵によって暗号化された共通鍵を少なくとも一つのタスクに対応して保持する暗号化共通鍵保持部と、上記暗号化共通鍵保持部に保持された暗号化された共通鍵を入力とし、上記秘密鍵によって復号する共通鍵復号部と、命令フェッチを行なうタスクに対応する上記共通鍵が上記暗号化共通鍵保持部に保持されている場合に、上記復号された共通鍵を用いて該タスクのプログラムを復号する命令復号部と、上記命令復号部から上記タスクのプログラムをフェッチして実行する命令実行部とを備えたことを特徴とするものである。
これにより、タスク毎に異なる暗号鍵を用いて暗号化されたプログラムを実行することができる。
【０００８】
また、本発明の請求項２に記載の情報処理装置は、請求項１に記載の情報処理装置において、少なくとも上記命令実行部がタスク切替えを行なうプログラムを実行するスーパーバイザ状態を有し、上記スーパーバイザ状態であるときには、上記復号部は、上記プログラムの復号を行わないことを特徴とするものである。
これにより、通常タスク切替を行なうプログラムを実行するスーパーバイザモードではプログラムを暗号化せずに実行することができる。
【０００９】
本発明の請求項３に記載の情報処理装置は、請求項１又は請求項２に記載の情報処理装置において、複数のタスクの共通鍵をそれぞれに保持する複数の上記暗号化共通鍵保持部と、実行するタスクのタスク番号を保持する第１のタスク識別部と、を備え、上記第１のタスク識別部は、上記タスク番号を基に上記複数の暗号化共通鍵保持部から一つの暗号化共通鍵保持部を選択し、上記共通鍵復号部は、上記選択された暗号化共通鍵保持部に保持されている共通鍵を入力とし、上記秘密鍵によって復号することを特徴とするものである。
これにより、タスク番号を用いて対応する暗号化共通鍵保持部に保持されている共通鍵を用いることができるので、タスク切替時に暗号化共通鍵保持部に共通鍵を再設定する必要がなくなる。
【００１０】
本発明の請求項４に記載の情報処理装置は、請求項３に記載の情報処理装置において、上記複数のタスクのプロセッサ状態情報を保持する複数のコンテキストと、実行中のタスクのタスク番号を上記第１のタスク識別部に設定するコンテキスト切替え部とを備え、上記複数の暗号化共通鍵保持部は、上記複数のタスクのそれぞれのコンテキストであり、上記複数のタスクは、上記コンテキストを上記コンテキスト切替え部により切替えながら実行することを特徴とするものである。
これにより、暗号化共通鍵保持部に共通鍵を再設定せずに、複数の暗号化されたプログラムを切替えながら復号し、実行することができる。
【００１１】
本発明の請求項５に記載の情報処理装置は、請求項３に記載の情報処理装置において、上記命令復号部によって復号されたプログラムを格納するプログラム記憶部と、上記プログラム記憶部へのプログラムの転送を制御するプログラム転送部と、上記プログラム転送部によってプログラムを転送する場合、該プログラムに対応するタスク番号を保持して上記複数の暗号化共通鍵保持部から一つの共通鍵を選択する第２のタスク識別部とを備え、上記命令実行部は、上記プログラム記憶部からプログラムをフェッチして実行することを特徴とするものである。
これにより、１つのタスクを実行しながら他のタスクの暗号化されたプログラムを復号転送することができる。
【００１２】
本発明の請求項６に記載の情報処理装置は、請求項３に記載の情報処理装置において、上記命令復号部によって復号されたプログラムを格納するキャッシュメモリと、上記キャッシュメモリへのプログラムの転送を制御するキャッシュコントローラとからなる命令キャッシュを備え、上記命令実行部は、上記命令キャッシュからプログラムをフェッチして実行することを特徴とするものである。
これにより、プログラム記憶部として命令キャッシュを用いて、暗号化されたプログラムを命令キャッシュにフェッチする際に復号することができるため、１つのタスクを実行しながら他のタスクの暗号化されたプログラムを復号転送することができる。
【００１３】
本発明の請求項７に記載の情報処理装置は、請求項５に記載の情報処理装置において、上記プログラム転送部によってプログラムを上記プログラム記憶部に転送する際に上記共通鍵復号部に入力する共通鍵を格納する別途の暗号化共通鍵格納部をさらに備え、上記プログラム記憶部は、上記暗号化されたプログラムのアドレス空間と別のアドレス空間に配置され、上記プログラム転送部は、プログラム転送命令によって明示的に起動されることを特徴とするものである。
これにより、外部メモリから、メモリのアドレスが異なる内蔵メモリへのプログラム転送の場合においても、１つのタスクを実行しながら他のタスクの暗号化されたプログラムを復号転送することができる。
【００１４】
また、本発明の請求項８に記載のデバッグ装置は、請求項１に記載の情報処理装置と組み合わせて用いられるデバッグ装置であって、上記暗号化されたプログラムの格納アドレス情報と、対応する上記共通鍵とを格納するデバッグ情報保持部と、上記暗号化されたプログラムの格納アドレス情報、及び対応する上記復号された共通鍵を用いて、上記情報処理装置から読み出した暗号化プログラムを復号して命令表示を行なう命令表示部とを備えたことを特徴とするものである。
これにより、暗号化されたプログラムの開発においてデバッグを行なうことができる。
【００１５】
本発明の請求項９に記載のデバッグ装置は、請求項８に記載のデバッグ装置において、上記復号されたプログラムにブレイクポイント命令を埋め込み、上記共通鍵によって暗号化を行ない、該暗号化されたプログラムを上記情報処理装置の該プログラムが格納されていた場所に書き込む暗号部を備えたことを特徴とするものである。
これにより、ブレイクポイントを簡単に設定し又は増やして暗号化されたプログラムのデバッグを行なうことができる。
【発明の効果】
【００１６】
本発明の請求項１に係る情報処理装置によれば、実行するタスクに関連づけた共通鍵を暗号化共通鍵保持部に記憶し、タスクの切替え時に、その共通鍵を書き換えるようにしたので、タスク毎の暗号鍵を用いて暗号化されたプログラムを実行することができるという効果がある。
【００１７】
本発明の請求項２に係る情報処理装置によれば、スーパーバイザモードを設定して該モードでは復号を行わないようにしたので、スーパーバイザモードでタスク切替を行なうプログラムを暗号化せずに、それ以外のタスクとして、暗号化されたプログラムを実行することにより、タスク毎の暗号鍵の設定を、スーパーバイザモードで動作するプログラムにより簡単に行うことができるという効果がある。
【００１８】
本発明の請求項３に係る情報処理装置によれば、複数の暗号化共通鍵保持部と、実行するタスク番号により上記暗号化共通鍵保持部を選択するタスク識別部とを備えるようにしたので、複数のタスクに対する暗号鍵を再設定せずに切替えることが可能となるので、切替えにかかる時間を短縮できるという効果がある。
【００１９】
本発明の請求項４に係る情報処理装置によれば、複数のタスクのコンテキストを切替えながら実行する情報処理装置においても、複数のタスクに対する暗号鍵を再設定せずに切替えることが可能となるので、切替えにかかる時間を短縮でき、さらに低コストで暗号化されたプログラムを実行することができるという効果がある。
【００２０】
本発明の請求項５に係る情報処理装置によれば、内蔵メモリを用いた情報処理装置においても、復号されたプログラムを内蔵のプログラム記憶部に保持することにより、タスク毎に異なる暗号鍵を用いて暗号化されたプログラムを実行することができる以外に、命令実行の時間を短縮することができるという効果がある。
【００２１】
本発明の請求項６に係る情報処理装置によれば、命令キャッシュを用いた情報処理装置においても、復号されたプログラムをキャッシュメモリに保持することにより、タスク毎に異なる暗号鍵を用いて暗号化されたプログラムを実行することができる以外に、命令実行の時間を短縮することができるという効果がある。
【００２２】
本発明の請求項７に係る情報処理装置によれば、外部メモリから、メモリのアドレスが異なる内蔵メモリへのプログラム転送の場合においても、命令実行の時間を短縮しながら少ないコストで暗号化されたプログラムを実行することができるという効果がある。
【００２３】
本発明の請求項８に係るデバッグ装置によれば、暗号化されたプログラムの格納アドレス情報と、対応する上記共通鍵とを格納するデバッグ情報保持部と、上記暗号化されたプログラムの格納アドレス情報、及び対応する上記復号された共通鍵を用いて、上記情報処理装置から読み出した暗号化プログラムを復号して命令表示を行なう命令表示部とを備えるようにしたので、タスク毎に異なる暗号鍵を用いて暗号化されたプログラムを実行する際に、暗号化されたプログラムの命令表示を行なうことによりプログラムのデバッグを少ないコストで行なうことができるという効果がある。
【００２４】
本発明の請求項９に係るデバッグ装置によれば、暗号化されているプログラムにブレイクポイント命令を埋め込む暗号部を備えるようにしたので、暗号化されたプログラムにブレイクポイント命令を挿入して、プログラムにブレイクポイントを設定することにより、コストの高いハードウェアによるブレイクポイントの設定を必要とせずにプログラムのデバッグを行なうことができるという効果がある。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態を図面を用いて説明する。
【００２６】
（実施の形態１）
図１は、本発明の実施の形態１に係る情報処理装置の概略構成を示すブロック図である。同図に示すように、本実施の形態１による情報処理装置は、命令を実行する命令実行部１と、命令を読み出して命令実行部１に供給する命令フェッチ部２と、共通鍵を保持する暗号化共通鍵保持部３と、秘密鍵保持部５に保持されている秘密鍵を用いて暗号化共通鍵保持部３が保持する共通鍵を復号する共通鍵復号部４と、秘密鍵を保持する秘密鍵保持部５と、命令フェッチを行なうタスクに対応する共通鍵が暗号化共通鍵保持部３に保持されている場合に、上記復号された共通鍵を用いて該命令を復号し命令フェッチ部２に転送する命令復号部６と、命令およびデータを記憶する記憶部７とによって構成される。
【００２７】
ここで、秘密鍵保持部５は、あらかじめ決まった秘密鍵を保持する。暗号化共通鍵保持部３は、共通鍵を保持する他に、共通鍵を保持しているか否かという情報を、命令実行部１の命令実行によって設定される。また、暗号化共通鍵保持部３は、リセットによって共通鍵を保持していない状態に設定される。さらに、共通鍵が設定されていないときは、命令復号部６は、復号処理を行わずに記憶部７から読み出された命令をそのまま命令フェッチ部２に転送する。
【００２８】
記憶部７には、ブートプログラムと、タスク毎のプログラムが格納されている。各タスクに対応するプログラムは、それぞれの共通鍵によって暗号化されている。また、ブートプログラムは、タスクに対応するプログラムの格納アドレスと、そのプログラムが暗号化されているか否か、暗号化されている場合の共通鍵をタスク毎に保持している。ここで、共通鍵は、秘密鍵保持部５に保持されている秘密鍵に対応する公開鍵を用いて暗号化したものである。
【００２９】
次に、上記のように構成されている本実施の形態１に係る情報処理装置の動作を、図２のフローチャートを参照しながら説明する。
【００３０】
ステップＳ１では、命令実行部１は、リセットを行った後、ブートプログラムを実行する。
ステップＳ２では、まず、記憶部７からブートプログラムを読み出す。この時は、リセット後であって、暗号化共通鍵保持部３は、共通鍵を保持していない状態に初期化されているため、ブートプログラムは、復号処理されずに、そのまま実行される。
具体的には、ブートプログラムは、ステップＳ３〜Ｓ６の手順でタスクを実行する。
【００３１】
ステップＳ３では、命令実行部のリクエストに基づいてブートプログラムの保持した内容より実行するタスクを決定する。
ステップＳ４では、実行するタスクのプログラムが暗号化されているか否かを調べる。暗号化されている場合はステップＳ５へ、されていない場合はステップＳ６へ進む。
【００３２】
ステップＳ５では：ブートプログラムに保持されている該実行するタスクの共通鍵を、暗号化共通鍵保持部３に設定し、暗号化共通鍵保持部３が共通鍵を保持している状態に設定し、その後ステップＳ６へ進む。
ステップＳ６では、タスクの開始アドレスへプログラム制御を移す。
【００３３】
このように、本実施の形態１による情報処理装置では、秘密鍵を保持する秘密鍵保持部と、秘密鍵に対応する公開鍵によって暗号化された共通鍵をタスクに対応して保持する暗号化共通鍵保持部と、暗号化共通鍵保持部に保持された暗号化された共通鍵を秘密鍵によって復号する共通鍵復号部と、命令フェッチを行なうタスクに対する共通鍵が暗号化共通鍵保持部に保持されている場合に、復号された共通鍵によってプログラムを復号する命令復号部とを備え、命令復号部によって復号されたプログラムを実行することにより、タスク毎に異なる暗号鍵を用いて暗号化されたプログラムを実行することができる。
【００３４】
（実施の形態２）
本発明の実施の形態２による情報処理装置は、上記実施の形態１による情報処理装置における、異なるタスクを実行する場合はリセットから始まる必要があるという課題を改善したものであり、以下、図面を用いて説明する。
【００３５】
図３は、本発明の実施の形態２による情報処理装置の概略構成を示すブロック図である。図３に示すように、本実施の形態２による情報処理装置は、上記実施の形態１とは、少なくとも命令実行部１の実行状態が、タスク切替えを行なうプログラムを実行するスーパーバイザ状態であることを示すスーパーバイザ状態表示部１０１が追加されている点においてのみ異なっており、その他の構成要素は、上記実施の形態１の情報処理装置（図１）と同様で、同一符号を付しており、その説明を省略する。
【００３６】
ここでは、スーパーバイザ状態表示部１０１はその状態情報を、暗号化共通鍵保持部３に入力し、暗号化共通鍵保持部３は、スーパーバイザ状態表示部１０１がスーパーバイザ状態を示している時には共通鍵を保持していない状態と等価な動作を行なうように構成されている。
【００３７】
次に、上記のように構成されている本実施の形態２による情報処理装置の動作を、図４のフローチャートを参照しながら説明する。
ステップＳ１では、命令実行部１は、リセットを行った後、ブートプログラムを実行する。同時に、命令実行部１の実行状態は、スーパーバイザ状態に遷移する。
【００３８】
ステップＳ２では、まず、記憶部７からブートプログラムを読み出す。この時は、リセット後であって、スーパーバイザ状態表示部１０１は、スーパーバイザ状態であることを示し、暗号化共通鍵保持部３は、共通鍵を保持していない状態と等価な動作をするので、ブートプログラムは、復号処理されずに、そのまま実行される。
具体的には、ブートプログラムは、ステップＳ３〜Ｓ６の手順でタスクを実行する。
【００３９】
ステップＳ３では、命令実行部のリクエストに基づいてブートプログラムの保持した内容より実行するタスクを決定する。
ステップＳ４では、実行するタスクのプログラムが暗号化されているか否かを調べる。暗号化されている場合はステップＳ５へ、されていない場合はステップＳ６へ進む。
ステップＳ５では：ブートプログラムに保持されている該実行するタスクの共通鍵を、暗号化共通鍵保持部３に設定し、暗号化共通鍵保持部３が共通鍵を保持している状態に設定し、その後ステップＳ６へ進む。
【００４０】
ステップＳ６では、タスクの開始アドレスへプログラム制御を移す。それと同時に、命令実行部１の実行状態は、スーパーバイザ状態から非スーパーバイザ状態へ遷移する。
【００４１】
また、非スーパバイザ状態でプログラムを実行中に、割り込みを受け付けると、スーパバイザ状態へ遷移し、ブートプログラム内の割り込みベクタへ制御を移す。割り込み処理から、再度割り込まれたタスクへ制御を移す場合は、割り込みによって中断されたアドレスに制御を移すとともに非スーパバイザ状態へ遷移するよう制御する。これは、一般に行なわれる割り込み処理と同等である。ただし、タスク切替を行なって割り込み処理から復帰する場合は、タスクを起動する上述の手順により暗号化共通鍵保持部３にタスクの共通鍵を再設定する必要がある。
【００４２】
なお、ここでは、タスクの開始アドレスは、タスク起動時においては、タスクのエントリアドレスであるが、タスクの復帰時には、割り込み時に退避された復帰アドレスである。
【００４３】
このように、本実施の形態２による情報処理装置では、上記実施の形態１による情報処理装置のＣＰＵ１００にスーパーバイザ状態表示部１０１を追加するようにしたので、上記実施の形態１と同様な効果を得られるほか、スーパーバイザ状態表示部１０１がスーパーバイザ状態を示している時に、暗号化共通鍵保持部３に共通鍵が保持されていない時と同じ動作を行うことにより、タスク毎の暗号鍵の設定を、スーパーバイザモードで動作するプログラムとして簡単に実行することができ、リセットすることなしにタスク毎に異なる共通鍵を用いて暗号化されたプログラムを実行することができる。
【００４４】
（実施の形態３）
本発明の実施の形態３による情報処理装置は、上記実施の形態２による情報処理装置での、タスク切替の際に暗号化共通鍵保持部の内容を更新する必要があるため、暗号化共通鍵保持部の情報量が大きい場合はタスク切替の時間がかかるという課題を改善したものであり、以下、図面を用いて説明する。
【００４５】
図５は、本発明の実施の形態３による情報処理装置の概略構成を示すブロック図であり、図において図３と同一符号は同一又は相当部分である。図５に示すように、本実施の形態３による情報処理装置は、複数の暗号化共通鍵保持部３１、３２、３３と、命令実行部１で実行中のタスクの識別番号を保持する第１のタスク識別部１０２とを備え、第１のタスク識別部１０２の内容により複数の暗号化共通鍵保持部３１、３２、３３から一つの共通鍵が選択され共通鍵復号部４に入力されるように構成されている。その他の構成は、上記の実施の形態２による情報処理装置（図３）と同様で、同一又は相当部分に同一符号を付して、その説明を省略する。
【００４６】
次に、上記のように構成されている本実施の形態３による情報処理装置の動作を、図６のフローチャートを参照しながら説明する。
ステップＳ１では、命令実行部１は、リセットを行った後、ブートプログラムを実行する。同時に、命令実行部１の実行状態は、スーパーバイザ状態に遷移する。
【００４７】
ステップＳ２では、まず、記憶部７からブートプログラムを読み出す。この時は、リセット後であって、スーパーバイザ状態表示部１０１は、スーパーバイザ状態であることを示し、暗号化共通鍵保持部３は、共通鍵を保持していない状態と等価な動作をするので、ブートプログラムは、復号処理されずに、そのまま実行される。
具体的には、ブートプログラムは、ステップＳ３〜Ｓ７の手順でタスクを実行する。
【００４８】
ステップＳ３では、命令実行部のリクエストに基づいてブートプログラムの保持した内容より実行しようとする複数のタスク、及びそれぞれのタスクに対して、タスク番号を決定する。
【００４９】
ステップＳ４では、上記複数のタスクのプログラムが暗号化されているか否かを調べる。暗号化されている場合はそれぞれのタスクの共通鍵を、暗号化共通鍵保持部３１、３２、３３の中からステップＳ３で決定したタスク番号に対応するものに設定する。さらに、対応する暗号化共通鍵部を、共通鍵を保持している状態に設定する。
【００５０】
ステップＳ５、Ｓ６では、複数のタスクの中から実行するタスクを決定し、そのタスク番号をタスク識別部１０２に設定する。
ステップＳ７では、タスクの開始アドレスへプログラム制御を移す。それと同時に、命令実行部１の実行状態は、スーパーバイザ状態から非スーパーバイザ状態へ遷移する。
【００５１】
但し、タスク切替時には、タスクの共通鍵が複数の暗号化共通鍵保持部３１、３２、３３の中に設定されている場合は、その暗号化共通鍵保持部を選択するタスク番号をタスク識別手段１０２に再設定し、そのタスクの開始アドレスに制御を移すよう制御する。
【００５２】
このように、本実施の形態３による情報処理装置では、上記の実施の形態２の情報処理装置の構成に、複数の暗号化共通鍵保持部３１、３２、３３と、命令実行部１で実行中のタスクの識別番号を保持する第１のタスク識別部１０２とを追加するようにしたので、上記実施の形態２と同様な効果を得られる以外に、第１のタスク識別部１０２の内容により複数の暗号化共通鍵保持部３１、３２、３３から一つの共通鍵を選択して共通鍵復号部４に入力することにより、共通鍵の情報量が大きい場合、暗号化共通鍵保持部に共通鍵を更新することなく、タスク番号のみを更新することでタスク切替の際タスク毎に異なる共通鍵を用いて暗号化されたプログラムを実行することができ、タスク切替えの時間を短縮できるという効果を得ることができる。
【００５３】
（実施の形態４）
本発明の実施の形態４による情報処理装置は、上記実施の形態３による情報処理装置における、タスク切替の際に、コンテキストの退避、復帰を行なう必要があるためにタスク切替の時間がかかるという課題を改善したものであり、以下、図面を用いて説明する。
【００５４】
図７は、本発明の実施の形態４による情報処理装置の概略構成を示すブロック図であり、図において図５と同一の符号は同一又は相当部分である。図７に示すように、本実施の形態４による情報処理装置は、ＣＰＵ１００に複数のタスクのそれぞれに対応する複数のレジスタ１１、つまり複数のコンテキストと、実行中のタスクのタスク番号を第１のタスク識別部１０２に設定するコンテキスト切替え部１２とを備え、コンテキスト切替え部１２により複数のコンテキストを切替えながら複数のコンテキストを実行するように構成されている。その他の構成は、上記の実施の形態３の情報処理装置（図５）と同様で、同一又は相当部分には同一符号を付して、その説明を省略する。
【００５５】
次に、上記のように構成されている本実施の形態４による情報処理装置の動作を説明する。
本実施の形態４による情報処理装置では、プロセッサをある状態に復帰する際に用いられるプロセッサ状態情報をレジスタ１１に保持し、タスク切替の時に、コンテキスト切替え部１２により、第１のタスク識別部１０２に保持されているタスク番号を実行中のタスク番号に切替えることによって、複数のレジスタ、及び複数のタスクのコンテキストでもある複数の暗号化共通鍵保持部を切替える。これにより、その実行中のタスクに対応する共通鍵が複数の暗号化共通鍵保持部３１、３２、３３から選択され、共通鍵復号部４によって復号される。なお、本実施の形態４による情報処理装置のその他の動作は、上記の実施の形態３の情報処理装置と同様であり、ここでは省略する。
【００５６】
このように、本実施の形態４による情報処理装置では、上記の実施の形態３の情報処理装置の構成に、複数のタスクにそれぞれ対応する複数のレジスタ１１と、実行中のタスクの番号を第１のタスク識別部１０２に設定するコンテキスト切替え部１２とをＣＰＵ１００に追加し、コンテキスト切替え部により複数のレジスタ、暗号化共通鍵保持部を切替えながら複数のタスクを実行するようにしたので、上記の実施の形態３と同様に暗号化共通鍵保持部の共通鍵を更新することなく、タスク番号のみを更新することでタスク切替の際タスク毎に異なる共通鍵を用いて暗号化されたプログラムを実行することができ、さらに、タスク切替の際に、コンテキストの退避、復帰を行わずに済むため、タスク切替えにかかる時間を一層短縮することができる。
【００５７】
（実施の形態５）
本発明の実施の形態５による情報処理装置は、上記実施の形態３による情報処理装置における、命令フェッチが、記憶部７に対して行なわれ、さらに命令復号部６による復号処理に時間がかかるという課題を改善したものであり、以下、図面を用いて説明する。
【００５８】
図８は、本発明の実施の形態５による情報処理装置の概略構成を示すブロック図であり、図において図５と同一符号は同一又は相当部分である。図８に示すように、本実施の形態５による情報処理装置は、記憶部７から読み出され、命令復号部６により復号されたプログラムを格納するプログラム記憶部８と、記憶部７からプログラム記憶部８への命令復号部６を経由するプログラムの転送を制御するプログラム転送部９と、プログラム転送部９によってプログラムを転送する時に複数の暗号化共通鍵保持部３１、３２、３３から一つの共通鍵を選択するための第２のタスク識別部１０３とを新たに備えている。その他の構成は、上記の実施の形態３の情報処理装置（図５）と同様で、同一又は相当部分には同一符号を付して、その説明を省略する。
【００５９】
次に、上記のように構成されている本実施の形態５による情報処理装置の動作を説明する。なお、ここでは、上記実施の形態３による情報処理装置の動作と異なる部分を中心に説明する。
本実施の形態５では、命令フェッチ部２がプログラム記憶部８を経由せずに記憶部７からプログラムを読み出す場合は、複数の暗号化共通鍵保持部３１、３２、３３は、スーパーバイザ状態１０１および第１のタスク識別部１０２を選択し入力として動作する。つまり、上記実施の形態３の情報処理装置と同様の動作を行なう。
【００６０】
命令フェッチ部２がプログラム記憶部８からプログラムを読み出す場合は、装置の動作は２段階に分かれて行われる。第１段階では、プログラム転送部９は、記憶部７から命令復号部６を通してプログラム記憶部８へプログラムの転送を行ない、その際、複数の暗号化共通部３１、３２、３３は、第２のタスク識別部１０３を選択し入力として動作する。第２段階では、命令フェッチ部２は、プログラム記憶部８からプログラムを読み出して実行し、その際、プログラムは、既に命令復号部６によって復号されているので、復号せずに直接実行する。このため、ＣＰＵ１００が実行中のタスクと異なるタスクのプログラムの転送を行なうことが可能となる。
【００６１】
なお、命令フェッチ部２が記憶部７から命令の読み出しを行なうか、プログラム記憶部８から命令の読み出しを行なうかは、例えばプログラムのアドレスにより区別することができる。
【００６２】
また、第２のタスク識別部１０３の設定と、プログラム転送部９の設定および起動は、ＣＰＵ１００のプログラム実行によって行なうことができるが、本発明はこれを限定するものではなく、外部のホストＣＰＵがこれらの設定および起動を行なっても良い。
【００６３】
また、プログラム転送部９によってプログラムをプログラム記憶部８に転送する際に共通鍵を格納する別途の暗号化共通鍵格納部を備え、プログラム記憶部８を記憶部７のアドレス空間とは別のアドレス空間に配置し、プログラム転送部９をプログラム転送命令によって明示的に起動するように構成する場合、外部メモリから、メモリのアドレスが異なる内蔵メモリへのプログラム転送であっても、同様な効果を得られ、少ないコストで暗号化されたプログラムを実行することができる。
【００６４】
また、図９に示すように、命令フェッチ部２が記憶部７から読み出したプログラムを命令復号部６によって復号し、そのプログラムを命令キャッシュ４００のキャッシュメモリに格納する構成とすることも可能である。
【００６５】
さらに、図９に示す命令キャッシュ４００を用いた構成と、図８に示すプログラム記憶部８を用いた構成を組み合わせた構成をとることも可能である。
【００６６】
なお、プログラム格納部８および命令キャッシュ４００は、命令フェッチ部２からの読み出しのみに対して許可するものなので、暗号化プログラムの秘密性が堅牢であることは明かである。
【００６７】
このように、本実施の形態５による情報処理装置では、復号されたプログラムを格納するプログラム記憶部８と、上記復号されたプログラムの転送を制御するプログラム転送部９と、上記転送を行う際複数の暗号化共通鍵保持部より１つの共通鍵を選択する第２のタスク識別部１０３とを備え、命令が暗号化されている場合、予め復号してプログラム記憶部８に格納することにより、命令を実行する際、ＣＰＵ１００は、復号されたプログラムをプログラム記憶部８から読み出して即座に実行できるので、プログラムの実行が速くなるという効果がある。
【００６８】
また、命令キャッシュ４００を備え、復号されたプログラムをキャッシュメモリに保持させる構成とするようにしても、同様に、命令が暗号化されている場合、予め復号してキャッシュメモリに格納することにより、命令を実行する際、ＣＰＵ１００は、復号されたプログラムをキャッシュメモリから読み出して即座に実行できるので、プログラムの実行が速くなるという効果がある。
【００６９】
（実施の形態６）
図１０は、本実施の形態６によるデバッグ装置の概略構成を示すブロック図である。
図１０において、情報処理装置２００は、上述の実施の形態１で説明した動作を行なうものである。さらに、３０１は、情報処理装置２００から読み出した、プログラムデバッグのために停止したプログラムアドレス、３０２は、情報処理装置２００の中の暗号化されたプログラムを保持する記憶部からの読み出し、３０３は、デバッグする対象のプログラムを表示する命令表示部、３０４は、デバッグするプログラムの格納アドレス情報と、そのプログラムの格納アドレスに格納されているプログラムの共通鍵情報を含むデバッグ情報保持部である。
【００７０】
次に、上記のように構成されている本実施の形態６によるデバッグ装置の動作を説明する。
命令表示部３０３は、デバッグのために停止したプログラムの停止アドレス３０１を入力とし、停止アドレス３０１が、デバッグ情報保持部３０４に格納されているプログラムの格納アドレスの示す範囲内にあるかどうかを判定する。
【００７１】
上記範囲内に、該当するプログラム格納アドレス情報がない場合は、命令表示部３０３は、情報処理装置２００から停止アドレス３０１、およびその周辺のプログラムを含む読み出し３０２を新たに読み出して保持し、必要に応じて逆アセンブルなどの処理を行なって表示する。また、該当するプログラム格納アドレス情報がある場合は、情報処理装置２００からの停止アドレス３０１、およびその周辺のプログラムを含む読み出し３０２を該命令表示部３０３の中より取り出し、該当の格納アドレス情報に対応する共通鍵情報を用いて、暗号化された上記の停止アドレス３０１周辺のプログラムを復号し、必要に応じて逆アセンブルなどの処理を行なって表示する。
【００７２】
このように、本実施の形態６によるデバッグ装置では、デバッグする対象のプログラムを表示する命令表示部３０３と、デバッグするプログラムの格納アドレス情報、及びその格納アドレスに格納されているプログラムの共通鍵情報を保持するデバッグ情報保持部３０４とを備え、暗号化されたプログラムの格納アドレス、及びその対応する共通鍵情報を予めデバッグ装置のデバッグ情報保持部３０４に設定するようにしたので、暗号化されたプログラムを復号化することが可能となり、これにより、プログラムを正しく表示し、プログラムをデバッグすることができる。
【００７３】
（実施の形態７）
本発明の実施の形態７によるデバッグ装置は、上記実施の形態６によるデバッグ装置に対して、暗号化されたプログラムに対してブレイクポイント命令を埋め込めるようにしたものであり、以下、図面を用いて説明する。
【００７４】
図１１は、本実施の形態７によるデバッグ装置の概略構成を示すブロック図である。
図１１に示すように、本実施の形態７によるデバッグ装置は、上記実施の形態６とは、情報処理装置２００の中のプログラム格納部にプログラムを書き込む暗号部３０５を新たに備えた点において異なり、その他の構成要素は、上記実施の形態６にかかるデバッグ装置（図１０）と同様で、同一符号を付しており、その説明を省略する。
【００７５】
次に、上記のように構成されている本実施の形態７によるデバッグ装置の動作を説明する。なお、ここでは、上記実施の形態６によるデバッグ装置の動作と異なる部分を中心に説明を行う。
【００７６】
デバッグのためにブレイクポイント命令を埋め込むアドレスが、デバッグ情報保持部３０４に格納されているプログラムの格納アドレスの示す範囲内にあるかどうかを判定する。
【００７７】
該当するプログラム格納アドレス情報がない場合は、暗号部３０５は出力線３０６を介して、情報処理装置の中のプログラム格納部に対しそのアドレスにブレイクポイント命令を書き込む。また、該当するプログラム格納アドレス情報がある場合は、該当の格納アドレス情報に対応する共通鍵情報を用いてブレイクポイント命令を暗号化し、出力線３０６を介して上記プログラム格納部に対しそのアドレスに書き込む。
【００７８】
このように、本実施の形態７によるデバッグ装置では、上記実施の形態６のデバッグ装置の構成に、ブレイクポイント命令を情報処理装置の中のプログラム格納部に埋め込む暗号部３０５を追加するようにしたので、暗号化されたプログラムの格納アドレスと、その共通鍵情報がデバッグ装置に設定してある場合は、正しくブレイクポイント命令を書き込むことが可能となり、高価なハードウェアによるブレイクポイント部なしにプログラムのデバッグを可能にすることができる。
【産業上の利用可能性】
【００７９】
本発明にかかる情報処理装置は、タスク毎の暗号鍵を用いて複数の暗号化されたプログラムを実行する機能を有し、著作権保護の必要なディジタル情報の処理装置として有用である。
【図面の簡単な説明】
【００８０】
【図１】実施の形態１による情報処理装置の概略構成を示すブロック図である。
【図２】上記実施の形態１の情報処理装置の動作を説明するフローチャートである。
【図３】実施の形態２による情報処理装置の概略構成を示すブロック図である。
【図４】上記実施の形態２の情報処理装置の動作を説明するフローチャートである。
【図５】実施の形態３による情報処理装置の概略構成を示すブロック図である。
【図６】上記実施の形態３の情報処理装置の動作を説明するフローチャートである。
【図７】実施の形態４による情報処理装置の概略構成を示すブロック図である。
【図８】実施の形態５による情報処理装置の概略構成を示すブロック図である。
【図９】実施の形態５による情報処理装置の他の概略構成を示すブロック図である。
【図１０】実施の形態６によるデバッグ装置の概略構成を示すブロック図である。
【図１１】実施の形態７によるデバッグ装置の概略構成を示すブロック図である。
【符号の説明】
【００８１】
１  命令実行部
２  命令フェッチ部
３、３１、３２、３３、３００  暗号化共通鍵保持部
４  共通鍵復号部
５  秘密鍵保持部
６  命令復号部
７  記憶部
８  プログラム記憶部
１１  レジスタ
１２  コンテキスト切替部
１００  ＣＰＵ
１０１  スーパーバイザ状態
１０２  第１のタスク識別部
１０３  第２のタスク識別部
３０３  命令表示部
３０４  デバッグ情報保持部
３０５  暗号部
４００  命令キャッシュ
【図１】
2006091967.tif 000003
【図２】
2006091967.tif 000004
【図３】
2006091967.tif 000005
【図４】
2006091967.tif 000006
【図５】
2006091967.tif 000007
【図６】
2006091967.tif 000008
【図７】
2006091967.tif 000009
【図８】
2006091967.tif 000010
【図９】
2006091967.tif 000011
【図１０】
2006091967.tif 000012
【図１１】
2006091967.tif 000013