JP2011150457A - 情報処理装置およびメモリアクセス制御方法 - Google Patents
情報処理装置およびメモリアクセス制御方法 Download PDFInfo
- Publication number
- JP2011150457A JP2011150457A JP2010009864A JP2010009864A JP2011150457A JP 2011150457 A JP2011150457 A JP 2011150457A JP 2010009864 A JP2010009864 A JP 2010009864A JP 2010009864 A JP2010009864 A JP 2010009864A JP 2011150457 A JP2011150457 A JP 2011150457A
- Authority
- JP
- Japan
- Prior art keywords
- program
- access
- bus
- signal
- memory
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】情報処理装置の汎用性を損なうことなく、プログラムについての必要な機密性を確保する。
【解決手段】情報処理装置1は、他のプログラム21による呼び出しが制限されているアクセス制限領域28に記憶された処理プログラム24を含む、複数のプログラムを記憶可能な記憶部12〜14と、記憶部12〜14からプログラムを読み込んで実行する実行部11と、実行部11と記憶部12〜14とを接続するバス16と、バス16を監視し、実行部11による記憶部12〜14へのアクセスを制御するバスアクセス制御部15とを有する。記憶部12〜14は、アクセス制限領域28外に、処理プログラム24を呼び出す呼出しプログラム23を記憶する。バスアクセス制御部15は、呼出しプログラム23の実行により実行部11がバス16を通じて記憶部12〜14のアクセス制限領域28にアクセスする場合に、当該アクセス制限領域28へのアクセスを許可し、それ以外の場合にアクセスを禁止する。
【選択図】図1
【解決手段】情報処理装置1は、他のプログラム21による呼び出しが制限されているアクセス制限領域28に記憶された処理プログラム24を含む、複数のプログラムを記憶可能な記憶部12〜14と、記憶部12〜14からプログラムを読み込んで実行する実行部11と、実行部11と記憶部12〜14とを接続するバス16と、バス16を監視し、実行部11による記憶部12〜14へのアクセスを制御するバスアクセス制御部15とを有する。記憶部12〜14は、アクセス制限領域28外に、処理プログラム24を呼び出す呼出しプログラム23を記憶する。バスアクセス制御部15は、呼出しプログラム23の実行により実行部11がバス16を通じて記憶部12〜14のアクセス制限領域28にアクセスする場合に、当該アクセス制限領域28へのアクセスを許可し、それ以外の場合にアクセスを禁止する。
【選択図】図1
Description
本発明は、機密性が要求されるプログラムを利用可能な情報処理装置およびメモリアクセス制御方法に関する。
情報処理装置では、たとえば暗号化プログラムなどの、機密性が要求されるプログラム(以下、秘密プログラムという。)を利用することがある。
そして、一般的な情報処理装置に用いられるCPUは、プログラムの機密度を判断しない。
よって、秘密プログラムと、機密性が要求されない一般のプログラムとを同一の情報処理装置に混在させた場合、情報処理装置のCPUは、一般プログラムの実行により、たとえば秘密プログラムを読み込んだり、書き換えたりできる。
すなわち、プログラムの機密度を判断しない汎用的なCPUが情報処理装置に用いられている場合、一般プログラムは、何の制限を受けることなく秘密プログラムに簡単にアクセス可能である。
そして、一般的な情報処理装置に用いられるCPUは、プログラムの機密度を判断しない。
よって、秘密プログラムと、機密性が要求されない一般のプログラムとを同一の情報処理装置に混在させた場合、情報処理装置のCPUは、一般プログラムの実行により、たとえば秘密プログラムを読み込んだり、書き換えたりできる。
すなわち、プログラムの機密度を判断しない汎用的なCPUが情報処理装置に用いられている場合、一般プログラムは、何の制限を受けることなく秘密プログラムに簡単にアクセス可能である。
秘密プログラムの目的外利用を避けて秘密プログラムの機密性を確保するためには、情報処理装置のCPUに、たとえば、プログラムの機密性を判断させ、その機密性の判断結果に応じた処理を実行させることが考えられる。
しかしながら、プログラムの機密性をCPUのプログラム処理により判断する場合、CPUは、たとえばプログラムを実行する度にプログラムの機密性を判断する必要がある。
その結果、CPUの処理負荷が増加し、情報処理装置は、それを補うために情報処理能力が高く、汎用性に劣る高価なCPUを使用する必要が生じる。
この他にも例えば、CPUを改良して、各プログラムの機密性をハードウェアにより判断することも考えられる(特許文献1)。
しかしながら、機密性を判断するようにハードウェアが改良されたCPUは、汎用品ではなく、特殊で高価なものになる。
しかしながら、プログラムの機密性をCPUのプログラム処理により判断する場合、CPUは、たとえばプログラムを実行する度にプログラムの機密性を判断する必要がある。
その結果、CPUの処理負荷が増加し、情報処理装置は、それを補うために情報処理能力が高く、汎用性に劣る高価なCPUを使用する必要が生じる。
この他にも例えば、CPUを改良して、各プログラムの機密性をハードウェアにより判断することも考えられる(特許文献1)。
しかしながら、機密性を判断するようにハードウェアが改良されたCPUは、汎用品ではなく、特殊で高価なものになる。
このように情報処理装置では、情報処理装置の汎用性を損なうことなく、プログラムについての必要な機密性を確保することが求められている。
本発明の第1の観点の情報処理装置は、他のプログラムによる呼び出しが制限されているアクセス制限領域に記憶された処理プログラムを含む、複数のプログラムを記憶可能な記憶部と、記憶部からプログラムを読み込んで実行する実行部と、実行部と記憶部とを接続するバスと、バスを監視し、実行部による記憶部へのアクセスを制御するバスアクセス制御部とを有する。そして、記憶部は、アクセス制限領域外に、処理プログラムを呼び出す呼出しプログラムを記憶し、バスアクセス制御部は、呼出しプログラムの実行により実行部がバスを通じて記憶部のアクセス制限領域にアクセスする場合に、当該アクセス制限領域へのアクセスを許可し、呼出しプログラム以外のプログラムの実行により実行部がバスを通じて記憶部のアクセス制限領域にアクセスする場合に、当該アクセス制限領域へのアクセスを禁止する。
第1の態様では、実行部は、呼出しプログラムを実行する場合にバスを通じて記憶部のアクセス制限領域にアクセスでき、それ以外のプログラムを実行する場合にはバスを通じて記憶部のアクセス制限領域にアクセスできない。
よって、第1の態様では、機密性が要求される処理プログラムをアクセス制限領域に記憶させることにより、当該処理プログラムに対して一般プログラムから直接的にアクセスできないようにすることができる。
その結果、第1の態様では、実行部がプログラムの機密性を判断することなく、機密性が要求される処理プログラムに対するアクセスを制限できる。
よって、第1の態様では、機密性が要求される処理プログラムをアクセス制限領域に記憶させることにより、当該処理プログラムに対して一般プログラムから直接的にアクセスできないようにすることができる。
その結果、第1の態様では、実行部がプログラムの機密性を判断することなく、機密性が要求される処理プログラムに対するアクセスを制限できる。
本発明の第2の観点のメモリアクセス制御方法は、他のプログラムによる呼び出しが制限されているアクセス制限領域に記憶された処理プログラムを含む、複数のプログラムを記憶可能な記憶部と、記憶部からプログラムを読み込んで実行する実行部とがバスにより接続された情報処理装置でのメモリアクセス制御方法である。そして、このメモリアクセス制御方法では、バス上で、呼出しプログラムの実行による実行部のアクセスを検出するステップと、バス上でアクセス制限領域に対する実行部のアクセスを検出した場合に、直前に呼出しプログラムの実行によるアクセスがあったか否かに応じて、アクセス制限領域へのアクセスを許可または禁止に制御するステップとを備える。
本発明では、情報処理装置の汎用性を低下させることなく、プログラムについての必要な機密性を確保できる。
以下、本発明の実施の形態を図面に関連付けて説明する。
説明は以下の順に行う。
1.情報処理装置の構成
2.アドレスマップ
3.メモリ制御回路などの詳細な説明
4.秘密プログラムの実行シーケンス
5.秘密プログラム実行までのタイミングチャート
説明は以下の順に行う。
1.情報処理装置の構成
2.アドレスマップ
3.メモリ制御回路などの詳細な説明
4.秘密プログラムの実行シーケンス
5.秘密プログラム実行までのタイミングチャート
[情報処理装置の構成]
図1は、本発明の実施形態に係る情報処理装置1の概略ブロック図である。
図1には、情報処理装置1のCPUバス・アーキテクチャ・システムが図示されている。
図1は、本発明の実施形態に係る情報処理装置1の概略ブロック図である。
図1には、情報処理装置1のCPUバス・アーキテクチャ・システムが図示されている。
図1の情報処理装置1は、1チップの集積回路装置2と、集積回路装置2に接続された発振部3とを有する。
集積回路装置2は、CPU11、通常メモリ12、許可メモリ13、機密メモリ14、メモリ制御回路15、およびCPUバス16を有する。
発振部3は、クロック信号を出力する。
集積回路装置2のCPU11、メモリ制御回路15などは、このクロック信号に同期して動作する。
集積回路装置2は、CPU11、通常メモリ12、許可メモリ13、機密メモリ14、メモリ制御回路15、およびCPUバス16を有する。
発振部3は、クロック信号を出力する。
集積回路装置2のCPU11、メモリ制御回路15などは、このクロック信号に同期して動作する。
CPUバス16は、CPU11、通常メモリ12、許可メモリ13、機密メモリ14およびメモリ制御回路15を接続する。
CPU11は、たとえば1クロック毎に命令を実行するRISC(Reduced Instruction Set Computer)コアである。なお、CPU11は、CISC(Complex Instruction Set Computer)コアであってもよい。
CPU11は、たとえば情報処理装置1のCPUバス16の利用を管理するバスマスタとして機能する。
CPU11は、CPUバス16を使用して、通常メモリ12、許可メモリ13、機密メモリ14またはメモリ制御回路15にアクセスする。CPU11によるメモリアクセスには、リードアクセスと、ライトアクセスとがある。また、リードアクセスには、プログラムを読み込むオペコードフェッチと、データを読み込むデータフェッチとがある。
CPU11は、通常メモリ12、許可メモリ13または機密メモリ14からプログラムを読み込んで実行する。
これにより、CPU11は、情報処理装置1の制御部として機能する。
CPU11は、たとえば情報処理装置1のCPUバス16の利用を管理するバスマスタとして機能する。
CPU11は、CPUバス16を使用して、通常メモリ12、許可メモリ13、機密メモリ14またはメモリ制御回路15にアクセスする。CPU11によるメモリアクセスには、リードアクセスと、ライトアクセスとがある。また、リードアクセスには、プログラムを読み込むオペコードフェッチと、データを読み込むデータフェッチとがある。
CPU11は、通常メモリ12、許可メモリ13または機密メモリ14からプログラムを読み込んで実行する。
これにより、CPU11は、情報処理装置1の制御部として機能する。
また、CPU11は、CPU11によるプログラムの実行を管理する。
CPU11は、たとえば実行状態、実行待ち状態、待ち状態とによりプログラムの実行を管理する。
CPU11が読み込むプログラムには、他のプログラムの読出し処理、データの読み込み、加工、保存処理などの命令(コマンド)が記述される。CPU11は、これらの処理を記述したプログラムデータをメモリから読み込んで実行する。その結果、CPU11は、新たなデータやプログラムをメモリから読み込んで実行したり、生成したデータをメモリに書き込んだりする。
たとえば、実行中のプログラムに他のプログラムの呼び出し処理が記述されている場合、CPU11は、その処理の実行によりメモリにリードアクセス(オペコードフェッチ)し、他のプログラムを読み込む。また、CPU11は、実行中のプログラムを待ち状態または実行待ち状態としてその処理を中断した後、新たに読み込んだ他のプログラムを実行する。また、新たに読み込んだ当該他のプログラムの実行を終えると、CPU11は、実行待ち状態に制御した中断中のプログラムの実行を再開する。
CPU11は、たとえば実行状態、実行待ち状態、待ち状態とによりプログラムの実行を管理する。
CPU11が読み込むプログラムには、他のプログラムの読出し処理、データの読み込み、加工、保存処理などの命令(コマンド)が記述される。CPU11は、これらの処理を記述したプログラムデータをメモリから読み込んで実行する。その結果、CPU11は、新たなデータやプログラムをメモリから読み込んで実行したり、生成したデータをメモリに書き込んだりする。
たとえば、実行中のプログラムに他のプログラムの呼び出し処理が記述されている場合、CPU11は、その処理の実行によりメモリにリードアクセス(オペコードフェッチ)し、他のプログラムを読み込む。また、CPU11は、実行中のプログラムを待ち状態または実行待ち状態としてその処理を中断した後、新たに読み込んだ他のプログラムを実行する。また、新たに読み込んだ当該他のプログラムの実行を終えると、CPU11は、実行待ち状態に制御した中断中のプログラムの実行を再開する。
また、CPU11は、CPU11の割り込みなどのイベントを管理する。
割り込みイベントには、ソフトウェアによる割り込みイベントと、ハードウェアによる割り込みイベントとがある。
割り込みイベントが発生すると、CPU11は、そのイベント待ち状態であったプログラムを実行または実行待ち状態とする。実行待ち状態のプログラムの優先順位が実行中のプログラムより高い場合、CPU11は、実行中のプログラムを実行待ち状態とし、優先順位が高い実行待ち状態のプログラムを実行する。
割り込みイベントには、ソフトウェアによる割り込みイベントと、ハードウェアによる割り込みイベントとがある。
割り込みイベントが発生すると、CPU11は、そのイベント待ち状態であったプログラムを実行または実行待ち状態とする。実行待ち状態のプログラムの優先順位が実行中のプログラムより高い場合、CPU11は、実行中のプログラムを実行待ち状態とし、優先順位が高い実行待ち状態のプログラムを実行する。
通常メモリ12は、たとえばフラッシュメモリなどの不揮発性の半導体メモリである。CPU11は、CPUバス16を通じて通常メモリ12にアクセスする。
そして、通常メモリ12は、たとえば一般プログラム21と、一般データ22とを記憶する。
一般プログラム21は、たとえば暗号を利用するアプリケーションプログラムなどである。暗号を利用するアプリケーションプログラムとしては、たとえば通信アプリケーションプログラムなどがある。
一般データ22は、一般プログラム21が利用するデータである。通信アプリケーションプログラムが利用する一般データ22には、たとえば通信先の識別情報のデータなどである。
そして、通常メモリ12は、たとえば一般プログラム21と、一般データ22とを記憶する。
一般プログラム21は、たとえば暗号を利用するアプリケーションプログラムなどである。暗号を利用するアプリケーションプログラムとしては、たとえば通信アプリケーションプログラムなどがある。
一般データ22は、一般プログラム21が利用するデータである。通信アプリケーションプログラムが利用する一般データ22には、たとえば通信先の識別情報のデータなどである。
機密メモリ14、通常メモリ12は、たとえばフラッシュメモリなどの不揮発性の半導体メモリである。CPU11は、CPUバス16を通じて機密メモリ14にアクセスする。
機密メモリ14は、たとえば秘密プログラム24と、秘密データ25とを記憶する。
秘密プログラム24は、たとえば通信データの暗号処理プログラム、復号処理プログラムなどである。
秘密データ25は、たとえば暗号処理プログラムが通信データの暗号化に使用する暗号キーなどである。
そして、秘密プログラム24および秘密データ25は、一般プログラム21や一般データ22と異なり、たとえば一般ユーザ、アプリケーションプログラムの開発者などにその内容を知られたくない。
すなわち、秘密プログラム24および秘密データ25は、一般プログラム21および一般データ22と比べて高い秘匿性が要求される。
機密メモリ14は、たとえば秘密プログラム24と、秘密データ25とを記憶する。
秘密プログラム24は、たとえば通信データの暗号処理プログラム、復号処理プログラムなどである。
秘密データ25は、たとえば暗号処理プログラムが通信データの暗号化に使用する暗号キーなどである。
そして、秘密プログラム24および秘密データ25は、一般プログラム21や一般データ22と異なり、たとえば一般ユーザ、アプリケーションプログラムの開発者などにその内容を知られたくない。
すなわち、秘密プログラム24および秘密データ25は、一般プログラム21および一般データ22と比べて高い秘匿性が要求される。
許可メモリ13は、たとえばCPU11により書き換えできないROMである。CPU11は、CPUバス16を通じて許可メモリ13にアクセスする。
許可メモリ13は、たとえば許可プログラム23を記憶する。
許可プログラム23は、一般プログラム21により呼び出され、秘密プログラム24を呼び出すプログラムである。
許可メモリ13は、たとえば許可プログラム23を記憶する。
許可プログラム23は、一般プログラム21により呼び出され、秘密プログラム24を呼び出すプログラムである。
[アドレスマップ]
図2は、図1のCPU11がアクセス可能な記憶領域のアドレスマップである。
図2には、0x0000(16進数の0000。以下同様。)から0xFFFFまでのアドレスが図示されている。
図2は、図1のCPU11がアクセス可能な記憶領域のアドレスマップである。
図2には、0x0000(16進数の0000。以下同様。)から0xFFFFまでのアドレスが図示されている。
そして、0x1000から0x2000までのアドレス範囲は、許可メモリ13に割り当てられている。
以下、この許可メモリ13に割り当てられたアドレス範囲を第1アドレス範囲26という。
許可メモリ13は、許可プログラム23を記憶するROMなどである。
よって、CPU11は、0x1000から0x2000までのアドレス範囲についてはリードアクセスのみが有効となる。
以下、この許可メモリ13に割り当てられたアドレス範囲を第1アドレス範囲26という。
許可メモリ13は、許可プログラム23を記憶するROMなどである。
よって、CPU11は、0x1000から0x2000までのアドレス範囲についてはリードアクセスのみが有効となる。
また、0x3000から0x4000までのアドレス範囲は、メモリ制御回路15のプロテクトレジスタ69に割り当てられている。
以下、このメモリ制御回路15に割り当てられたアドレス範囲を第2アドレス範囲27という。
以下、このメモリ制御回路15に割り当てられたアドレス範囲を第2アドレス範囲27という。
また、0x5000から0x7000までのアドレス範囲は、機密メモリ14に割り当てられている。
この機密メモリ14のアドレス範囲が、メモリアクセスが制限される機密メモリ領域28となる。
機密メモリ14は、秘密プログラム24、秘密データ25を記憶する不揮発性メモリである。よって、CPU11は、基本的には、機密メモリ14にライトアクセスすることで、秘密プログラム24、秘密データ25を上書きすることが可能である。
この機密メモリ14のアドレス範囲が、メモリアクセスが制限される機密メモリ領域28となる。
機密メモリ14は、秘密プログラム24、秘密データ25を記憶する不揮発性メモリである。よって、CPU11は、基本的には、機密メモリ14にライトアクセスすることで、秘密プログラム24、秘密データ25を上書きすることが可能である。
上述した以外のアドレス範囲は、通常メモリ12に割り当てられている。
通常メモリ12は、一般プログラム21などを記憶する。CPU11は、通常メモリ12にアクセスすることで、一般プログラム21、一般データ22などを読み込んだり、上書きしたりできる。
通常メモリ12は、一般プログラム21などを記憶する。CPU11は、通常メモリ12にアクセスすることで、一般プログラム21、一般データ22などを読み込んだり、上書きしたりできる。
CPU11は、基本的には、機密メモリ14にライトアクセスすることで、秘密プログラム24、秘密データ25を上書きできる。
また、CPU11は、基本的には、機密メモリ14にリードアクセスすることで、秘密プログラム24、秘密データ25を読み込むことが可能である。
しかしながら、上述したように、秘密プログラム24などには、一般プログラム21などと比べて高い秘匿性が要求される。
秘密プログラム24の提供者は、秘密プログラム24を集積回路装置2において利用することは許可するけれども、秘密プログラム24の内容を読み取ったり、改変したりする目的外利用は許可したくない。
このため、本実施形態では、CPU11と独立して動作し、CPUバス16を監視するメモリ制御回路15を設けている。
また、CPU11は、基本的には、機密メモリ14にリードアクセスすることで、秘密プログラム24、秘密データ25を読み込むことが可能である。
しかしながら、上述したように、秘密プログラム24などには、一般プログラム21などと比べて高い秘匿性が要求される。
秘密プログラム24の提供者は、秘密プログラム24を集積回路装置2において利用することは許可するけれども、秘密プログラム24の内容を読み取ったり、改変したりする目的外利用は許可したくない。
このため、本実施形態では、CPU11と独立して動作し、CPUバス16を監視するメモリ制御回路15を設けている。
また、本実施形態では、図2に示すように、一般プログラム21は、許可メモリ13から許可プログラム23を読み込み、この許可プログラム23の実行によりプロテクトレジスタ69の値を変更し、機密メモリ14へのアクセスを可能にする。
また、本実施形態では、許可プログラム23の実行開始から実行終了までの期間は、CPU11での割り込みを一切禁止する。
また、本実施形態では、許可プログラム23の実行開始から実行終了までの期間は、CPU11での割り込みを一切禁止する。
[メモリ制御回路などの詳細な説明]
図3は、図1のCPUバス16、メモリ制御回路15、機密メモリ14およびその周辺部の詳細なブロック図である。
図3は、図1のCPUバス16、メモリ制御回路15、機密メモリ14およびその周辺部の詳細なブロック図である。
CPUバス16は、図3に示すように、アドレスバス31、データバス32、制御バス33を有する。
アドレスバス31は、複数本のアドレス信号線を有する。
データバス32は、複数本のデータ信号線を有する。
制御バス33は、たとえばライトイネーブル信号線WE、オペコードの出力信号線Opecodeなどを有する。
ライトイネーブル信号線WEは、CPU11がメモリにデータを書込む場合にCPU11によりハイレベルに制御され、CPU11がメモリからデータを読み出す場合にCPU11によりローレベルに制御される信号線である。
オペコードは、CPU11が実行する処理の内容がオペコードフェッチであることを示す信号線である。CPU11は、オペコードの出力信号線Opecodeに、実行中のオペコードを示す信号を出力する。
たとえばCPU11がメモリからプログラムを読み出す場合、CPU11は、オペコードの出力信号線Opecodeにオペコードフェッチに対応したハイレベルの信号を出力する。
メモリに対してデータアクセスをする場合、CPU11は、オペコードの出力信号線Opecodeにデータアクセスに対応したローレベルの信号を出力する。
アドレスバス31は、複数本のアドレス信号線を有する。
データバス32は、複数本のデータ信号線を有する。
制御バス33は、たとえばライトイネーブル信号線WE、オペコードの出力信号線Opecodeなどを有する。
ライトイネーブル信号線WEは、CPU11がメモリにデータを書込む場合にCPU11によりハイレベルに制御され、CPU11がメモリからデータを読み出す場合にCPU11によりローレベルに制御される信号線である。
オペコードは、CPU11が実行する処理の内容がオペコードフェッチであることを示す信号線である。CPU11は、オペコードの出力信号線Opecodeに、実行中のオペコードを示す信号を出力する。
たとえばCPU11がメモリからプログラムを読み出す場合、CPU11は、オペコードの出力信号線Opecodeにオペコードフェッチに対応したハイレベルの信号を出力する。
メモリに対してデータアクセスをする場合、CPU11は、オペコードの出力信号線Opecodeにデータアクセスに対応したローレベルの信号を出力する。
メモリ制御回路15は、CPUバス16と、機密メモリ14とに接続される。
そして、メモリ制御回路15は、CPUバス16の検出状態に基づいて、CPU11による機密メモリ14へのアクセス可否を制御する。
メモリ制御回路15は、アクセス可否を制御するためのプロテクト信号を機密メモリ14へ出力する。
メモリ制御回路15は、アクセス判定回路41、第1アドレス範囲レジスタ42、プロテクトレジスタ回路43、および第2アドレス範囲レジスタ44を有する。
そして、メモリ制御回路15は、CPUバス16の検出状態に基づいて、CPU11による機密メモリ14へのアクセス可否を制御する。
メモリ制御回路15は、アクセス可否を制御するためのプロテクト信号を機密メモリ14へ出力する。
メモリ制御回路15は、アクセス判定回路41、第1アドレス範囲レジスタ42、プロテクトレジスタ回路43、および第2アドレス範囲レジスタ44を有する。
第1アドレス範囲レジスタ42は、許可メモリ13に割り当てられた第1アドレス範囲26(0x1000から0x2000)を記憶する。
アクセス判定回路41は、アドレスバス31、制御バス33、第1アドレス範囲レジスタ42に接続される。
アクセス判定回路41には、アドレスバス31のアドレス信号と、制御バス33のプロテクション情報信号が入力される。プロテクション情報信号としては、たとえばライトイネーブル信号、オペコードの出力信号を用いる。
そして、アクセス判定回路41は、クロック信号が入力される度に、これらの信号に基づいて、CPU11が許可メモリ13にアクセスしたか否かを判定し、判定信号を出力する。
アクセス判定回路41には、アドレスバス31のアドレス信号と、制御バス33のプロテクション情報信号が入力される。プロテクション情報信号としては、たとえばライトイネーブル信号、オペコードの出力信号を用いる。
そして、アクセス判定回路41は、クロック信号が入力される度に、これらの信号に基づいて、CPU11が許可メモリ13にアクセスしたか否かを判定し、判定信号を出力する。
第2アドレス範囲レジスタ44は、メモリ制御回路15に割り当てられた第2アドレス範囲27(0x3000から0x4000)を記憶する。
プロテクトレジスタ回路43は、データバス32、アドレスバス31、アクセス判定回路41、第2アドレス範囲レジスタ44に接続される。
プロテクトレジスタ回路43には、アドレスバス31のアドレス信号と、データバス32のデータ信号、アクセス判定回路41の判定信号が入力される。
そして、プロテクトレジスタ回路43は、クロック信号が入力される度に、これらの信号に基づいて所定の正常なアクセスであるか否かを判断し、所定の正常なアクセスである場合には、プロテクトレジスタ69の値を、データ信号に対応する値へ更新する。
プロテクトレジスタ回路43は、プロテクトレジスタ69の値に応じたプロテクト信号を出力する。
プロテクトレジスタ回路43には、アドレスバス31のアドレス信号と、データバス32のデータ信号、アクセス判定回路41の判定信号が入力される。
そして、プロテクトレジスタ回路43は、クロック信号が入力される度に、これらの信号に基づいて所定の正常なアクセスであるか否かを判断し、所定の正常なアクセスである場合には、プロテクトレジスタ69の値を、データ信号に対応する値へ更新する。
プロテクトレジスタ回路43は、プロテクトレジスタ69の値に応じたプロテクト信号を出力する。
このようにプロテクトレジスタ回路43の値およびプロテクト信号は、アクセス判定回路41が判定信号を出力することにより許可した場合だけ変更可能になる。
また、アクセス判定回路41は、CPUバス16を監視し、直前のオペコードフェッチ時のアドレス・バスの値が許可プログラム23を格納する許可メモリ13の領域の値であった場合のみ、プロテクトレジスタ回路43への書き込みを可能にする。
また、アクセス判定回路41は、CPUバス16を監視し、直前のオペコードフェッチ時のアドレス・バスの値が許可プログラム23を格納する許可メモリ13の領域の値であった場合のみ、プロテクトレジスタ回路43への書き込みを可能にする。
機密メモリ14は、たとえばアドレスデコーダ51と、不揮発性の半導体メモリ52とを有する。
アドレスデコーダ51には、アドレスバス31と、プロテクトレジスタ回路43とが接続される。
アドレスデコーダ51は、プロテクト信号が機密メモリ14へのアクセス許可に対応するレベルである場合、アドレスバス31のアドレス信号に基づいて自分宛てのアドレス(0x5000から0x7000)であるか否かを判断する。
アドレスデコーダ51は、判断結果を示すチップセレクト信号を出力する。
アドレスデコーダ51は、プロテクト信号が機密メモリ14へのアクセス許可に対応するレベルである場合、アドレスバス31のアドレス信号に基づいて自分宛てのアドレス(0x5000から0x7000)であるか否かを判断する。
アドレスデコーダ51は、判断結果を示すチップセレクト信号を出力する。
機密メモリ14の半導体メモリ52には、アドレスデコーダ51と、CPUバス16とが接続される。
機密メモリ14の半導体メモリ52は、アドレスデコーダ51からチップセレクト信号が入力された場合、アドレスバス31のアドレス信号に基づいてアクセス先を特定する。また、半導体メモリ52は、制御バス33のライトイネーブル信号に応じて、アクセス先のデータをデータバス32に入出力する。
機密メモリ14の半導体メモリ52は、アドレスデコーダ51からチップセレクト信号が入力された場合、アドレスバス31のアドレス信号に基づいてアクセス先を特定する。また、半導体メモリ52は、制御バス33のライトイネーブル信号に応じて、アクセス先のデータをデータバス32に入出力する。
図4は、アクセス判定回路41およびプロテクトレジスタ回路43の一例の詳細なブロック図である。
アクセス判定回路41は、第1アンド回路61、第1アドレスコンパレータ62、第1セレクタ63、第2アンド回路64、第1Dフリップフロップ回路65を有する。
プロテクトレジスタ回路43は、第2アドレスコンパレータ66、第3アンド回路67、第2セレクタ68、プロテクトレジスタ69を有する。
プロテクトレジスタ69は、プロテクト信号を出力する。
アクセス判定回路41は、第1アンド回路61、第1アドレスコンパレータ62、第1セレクタ63、第2アンド回路64、第1Dフリップフロップ回路65を有する。
プロテクトレジスタ回路43は、第2アドレスコンパレータ66、第3アンド回路67、第2セレクタ68、プロテクトレジスタ69を有する。
プロテクトレジスタ69は、プロテクト信号を出力する。
アクセス判定回路41の第1アンド回路61には、ライトイネーブル信号線WEと、オペコードの出力信号線Opecodeとが接続される。ライトイネーブル信号は、第1アンド回路61に反転入力される。
そして、第1アンド回路61は、ライトイネーブル信号がローレベルであり、かつ、オペコードの出力信号がハイレベル(オペコードフェッチ)である場合、ハイレベルの第1アンド信号を出力する。
それ以外の場合は、第1アンド回路61は、ローレベルの第1アンド信号を出力する。
そして、第1アンド回路61は、ライトイネーブル信号がローレベルであり、かつ、オペコードの出力信号がハイレベル(オペコードフェッチ)である場合、ハイレベルの第1アンド信号を出力する。
それ以外の場合は、第1アンド回路61は、ローレベルの第1アンド信号を出力する。
第1アドレスコンパレータ62には、第1アドレス範囲レジスタ42と、アドレスバス31とが接続される。
そして、第1アドレスコンパレータ62は、アドレスバス31に第1アドレス範囲26(0x1000から0x2000)のアドレス信号が出力されている場合、ハイレベルの第1アドレス信号を出力する。
それ以外の場合は、第1アドレスコンパレータ62は、ローレベルの第1アドレス信号を出力する。
そして、第1アドレスコンパレータ62は、アドレスバス31に第1アドレス範囲26(0x1000から0x2000)のアドレス信号が出力されている場合、ハイレベルの第1アドレス信号を出力する。
それ以外の場合は、第1アドレスコンパレータ62は、ローレベルの第1アドレス信号を出力する。
第1セレクタ63には、第1アンド回路61、第1アドレスコンパレータ62、第1Dフリップフロップ回路65が接続される。
そして、第1セレクタ63は、第1アンド信号がハイレベルの場合、第1アドレス信号を選択して出力する。
第1アンド信号がローレベルの場合、第1セレクタ63は、第1Dフリップフロップ回路65の第1フリップフロップ信号を選択して出力する。
そして、第1セレクタ63は、第1アンド信号がハイレベルの場合、第1アドレス信号を選択して出力する。
第1アンド信号がローレベルの場合、第1セレクタ63は、第1Dフリップフロップ回路65の第1フリップフロップ信号を選択して出力する。
第2アンド回路64には、第1セレクタ63と、第3アンド回路67とが接続される。第3アンド回路67が出力する第3アンド信号は、第2アンド回路64に反転入力される。
そして、第2アンド回路64は、第3アンド信号がローレベルであり、かつ、第3アンド信号がハイレベルである場合、ハイレベルの第2アンド信号を出力する。
それ以外の場合は、第2アンド回路64は、ローレベルの第2アンド信号を出力する。
そして、第2アンド回路64は、第3アンド信号がローレベルであり、かつ、第3アンド信号がハイレベルである場合、ハイレベルの第2アンド信号を出力する。
それ以外の場合は、第2アンド回路64は、ローレベルの第2アンド信号を出力する。
第1Dフリップフロップ回路65には、第2アンド回路64が接続される。
そして、第1Dフリップフロップ回路65は、クロック信号が入力される度に、第2アンド信号をラッチした第1Dフリップフロップ信号を出力する。
そして、第1Dフリップフロップ回路65は、クロック信号が入力される度に、第2アンド信号をラッチした第1Dフリップフロップ信号を出力する。
よって、アクセス判定回路41は、CPU11が許可メモリ13にリードアクセス(オペコードフェッチ)するクロックサイクルにおいてハイレベルの第1Dフリップフロップ信号(WriteValid)を出力する。
それ以外の場合には、アクセス判定回路41は、ローレベルの第1Dフリップフロップ信号を出力する。
すなわち、たとえば許可メモリ13から許可プログラム23の命令コードをフェッチする場合には、CPUバス16上のオペコードの出力信号がHighになり、ライトイネーブル信号がLowとなる。
このときのCPUバス16上のアドレスバス31の値が許可プログラム23を格納する許可メモリ13のアドレス範囲(0x1000から0x2000)であるので、第1Dフリップフロップ信号(WriteValid)は、Highとなる。
それ以外の場合には、アクセス判定回路41は、ローレベルの第1Dフリップフロップ信号を出力する。
すなわち、たとえば許可メモリ13から許可プログラム23の命令コードをフェッチする場合には、CPUバス16上のオペコードの出力信号がHighになり、ライトイネーブル信号がLowとなる。
このときのCPUバス16上のアドレスバス31の値が許可プログラム23を格納する許可メモリ13のアドレス範囲(0x1000から0x2000)であるので、第1Dフリップフロップ信号(WriteValid)は、Highとなる。
プロテクトレジスタ回路43の第2アドレスコンパレータ66には、第2アドレス範囲レジスタ44と、アドレスバス31とが接続される。
そして、第2アドレスコンパレータ66は、アドレスバス31に第2アドレス範囲27(0x3000から0x4000)のアドレス信号が出力されている場合、ハイレベルの第2アドレス信号を出力する。
それ以外の場合は、第2アドレスコンパレータ66は、ローレベルの第2アドレス信号を出力する。
そして、第2アドレスコンパレータ66は、アドレスバス31に第2アドレス範囲27(0x3000から0x4000)のアドレス信号が出力されている場合、ハイレベルの第2アドレス信号を出力する。
それ以外の場合は、第2アドレスコンパレータ66は、ローレベルの第2アドレス信号を出力する。
第3アンド回路67には、第2アドレスコンパレータ66、ライトイネーブル信号線WE、第1Dフリップフロップ回路65が接続される。
そして、第3アンド回路67は、第1Dフリップフロップ信号がハイレベルであり、かつ、第2アドレス信号およびライトイネーブル信号がハイレベルである場合、ハイレベルの第3アンド信号を出力する。
それ以外の場合は、第3アンド回路67は、ローレベルの第3アンド信号を出力する。
そして、第3アンド回路67は、第1Dフリップフロップ信号がハイレベルであり、かつ、第2アドレス信号およびライトイネーブル信号がハイレベルである場合、ハイレベルの第3アンド信号を出力する。
それ以外の場合は、第3アンド回路67は、ローレベルの第3アンド信号を出力する。
第2セレクタ68には、第3アンド回路67と、データバス32と、プロテクトレジスタ69とが接続される。
そして、第2セレクタ68は、第3アンド信号がハイレベルの場合、データ信号を選択して出力する。
第3アンド信号がローレベルの場合、第2セレクタ68は、プロテクト信号を選択して出力する。
そして、第2セレクタ68は、第3アンド信号がハイレベルの場合、データ信号を選択して出力する。
第3アンド信号がローレベルの場合、第2セレクタ68は、プロテクト信号を選択して出力する。
プロテクトレジスタ69は、複数の第2Dフリップフロップ回路を有する。
複数の第2Dフリップフロップ回路には、第2セレクタ68が接続される。
そして、第2Dフリップフロップ回路は、クロック信号が入力される度に、第2セレクタ68により選択された信号をラッチする。
プロテクトレジスタ69は、複数の第2Dフリップフロップ回路に基づくプロテクト信号を出力する。
複数の第2Dフリップフロップ回路には、第2セレクタ68が接続される。
そして、第2Dフリップフロップ回路は、クロック信号が入力される度に、第2セレクタ68により選択された信号をラッチする。
プロテクトレジスタ69は、複数の第2Dフリップフロップ回路に基づくプロテクト信号を出力する。
プロテクト信号は、たとえば複数の第2Dフリップフロップ回路のすべてのラッチ信号がハイレベルである場合にハイレベルとなり、それ以外の場合にローレベルとなる。
よって、プロテクトレジスタ回路43は、CPU11が許可メモリ13にリードアクセス(オペコードフェッチ)した次のクロックサイクルにおいてプロテクトレジスタ69へのアクセスを実行すると、データバス32のデータをプロテクトレジスタ69に書き込む。また、プロテクトレジスタ回路43は、ハイレベルのプロテクト信号を出力する。
それ以外の場合には、プロテクトレジスタ回路43は、ローレベルのプロテクト信号を出力する。
すなわち、たとえば許可メモリ13から許可プログラム23が読み込まれた次のクロックサイクルにおいて、プロテクトレジスタ69への書き込みが実行されると、書込みデータは、プロテクトレジスタ69に反映される。
よって、プロテクトレジスタ回路43は、CPU11が許可メモリ13にリードアクセス(オペコードフェッチ)した次のクロックサイクルにおいてプロテクトレジスタ69へのアクセスを実行すると、データバス32のデータをプロテクトレジスタ69に書き込む。また、プロテクトレジスタ回路43は、ハイレベルのプロテクト信号を出力する。
それ以外の場合には、プロテクトレジスタ回路43は、ローレベルのプロテクト信号を出力する。
すなわち、たとえば許可メモリ13から許可プログラム23が読み込まれた次のクロックサイクルにおいて、プロテクトレジスタ69への書き込みが実行されると、書込みデータは、プロテクトレジスタ69に反映される。
なお、プロテクトレジスタ69がHighの場合のみ、メモリ制御回路15は、秘密プログラム24を格納する機密メモリ14へのアクセスを許可するハイレベルのプロテクト信号を出力する。
また、プロテクトレジスタ69がLowの場合、メモリ制御回路15は、機密メモリ14へのアクセスを禁止するローレベルのプロテクト信号を出力する。
また、第3アンド回路67の第3アンド信号が第2アンド回路64に反転入力されているため、プロテクトレジスタ69への書き込みがなされた次のサイクルでは、第1Dフリップフロップ信号(WriteValid)は、自動的にローレベルにクリアされる。
また、プロテクトレジスタ69がLowの場合、メモリ制御回路15は、機密メモリ14へのアクセスを禁止するローレベルのプロテクト信号を出力する。
また、第3アンド回路67の第3アンド信号が第2アンド回路64に反転入力されているため、プロテクトレジスタ69への書き込みがなされた次のサイクルでは、第1Dフリップフロップ信号(WriteValid)は、自動的にローレベルにクリアされる。
以上の構成により、プロテクトレジスタ69へ書き込みアクセス直前のCPUバス16へのアクセスは、必ず許可プログラム23を格納する許可メモリ13のアドレスからの命令コードフェッチとなる。
[秘密プログラムの実行シーケンス]
図5は、以上のハードウェア構成を前提としたCPU11による機密プログラムの実行プロセスの一例を示すシーケンスチャートである。
図5には、CPU11により読み込んで実行されるプログラムとして、一般プログラム21、許可プログラム23、秘密プログラム24が図示されている。
また、図5において時間は、上から下に流れている。
また、以下の説明では、図5の各ステップは、クロック信号の1クロックサイクル毎に実行されるものとして説明する。
図5は、以上のハードウェア構成を前提としたCPU11による機密プログラムの実行プロセスの一例を示すシーケンスチャートである。
図5には、CPU11により読み込んで実行されるプログラムとして、一般プログラム21、許可プログラム23、秘密プログラム24が図示されている。
また、図5において時間は、上から下に流れている。
また、以下の説明では、図5の各ステップは、クロック信号の1クロックサイクル毎に実行されるものとして説明する。
なお、情報処理装置1の起動時に、プロテクトレジスタ69には、初期値として、プロテクトを有効(ローレベル)とする値が書き込まれるものとする。
プロテクトが有効である場合、CPU11がCPUバス16を通じて機密メモリ14にリードアクセスしても、機密メモリ14は、有効なプログラムやデータをデータバス32へ出力しない。
また、CPU11がCPUバス16を通じて機密メモリ14にライトアクセスしても、機密メモリ14は、データバス32のデータをメモリに格納保存しない。
これにより、機密メモリ14の秘密プログラム24および秘密データ25は、読み出されず且つ保護される。
プロテクトが有効である場合、CPU11がCPUバス16を通じて機密メモリ14にリードアクセスしても、機密メモリ14は、有効なプログラムやデータをデータバス32へ出力しない。
また、CPU11がCPUバス16を通じて機密メモリ14にライトアクセスしても、機密メモリ14は、データバス32のデータをメモリに格納保存しない。
これにより、機密メモリ14の秘密プログラム24および秘密データ25は、読み出されず且つ保護される。
図5において、一般プログラム21を実行するCPU11は、一般プログラム21に記述された許可プログラム23へのジャンプ処理を読み込んで実行する(ステップST1)。
CPU11は、一般プログラム21をリターンイベント待ち状態とする。
その後、CPU11は、ジャンプコードの記述に基づいて許可プログラム23の格納先アドレスを特定し、特定した格納先アドレスから許可プログラム23を読み込む。
CPU11は、CPUバス16を通じて許可メモリ13にリードアクセス(オペコードフェッチ)する。
CPU11は、一般プログラム21をリターンイベント待ち状態とする。
その後、CPU11は、ジャンプコードの記述に基づいて許可プログラム23の格納先アドレスを特定し、特定した格納先アドレスから許可プログラム23を読み込む。
CPU11は、CPUバス16を通じて許可メモリ13にリードアクセス(オペコードフェッチ)する。
許可メモリ13から許可プログラム23を読み込むと、CPU11は、許可プログラム23を実行する。
許可プログラム23の実行において、CPU11は、まず、割り込みハンドラをディセーブルにする(ステップST2)。
これにより、CPU11は、割り込みハンドラがイネーブルにされるまで、他のプログラムなどを実行する割り込みイベントが発生しても、他のプログラムによる割り込み処理を実行せず、実行中のプログラムを継続して実行し続ける。
許可プログラム23の実行において、CPU11は、まず、割り込みハンドラをディセーブルにする(ステップST2)。
これにより、CPU11は、割り込みハンドラがイネーブルにされるまで、他のプログラムなどを実行する割り込みイベントが発生しても、他のプログラムによる割り込み処理を実行せず、実行中のプログラムを継続して実行し続ける。
次に、CPU11は、CPUバス16を通じて許可メモリ13から許可プログラム23の続きを読み込み、プロテクト解除処理を実行する(ステップST3)。
具体的には、CPU11は、CPUバス16を通じてプロテクトレジスタ69にライトアクセスし、プロテクト信号を無効(ハイレベル)とするためのデータをプロテクトレジスタ69に書き込む。
ここで、CPU11がCPUバス16を通じて許可メモリ13から許可プログラム23の続きを読み込むことにより、アクセス判定回路41は、ハイレベルの第1Dフリップフロップ信号(WriteValid)を出力している。
よって、プロテクトレジスタ回路43は、データバス32のデータ信号をラッチする。
プロテクトレジスタ69にはデータ信号が書き込まれ、プロテクトレジスタ回路43は、ハイレベル(無効)のプロテクト信号を出力する。
具体的には、CPU11は、CPUバス16を通じてプロテクトレジスタ69にライトアクセスし、プロテクト信号を無効(ハイレベル)とするためのデータをプロテクトレジスタ69に書き込む。
ここで、CPU11がCPUバス16を通じて許可メモリ13から許可プログラム23の続きを読み込むことにより、アクセス判定回路41は、ハイレベルの第1Dフリップフロップ信号(WriteValid)を出力している。
よって、プロテクトレジスタ回路43は、データバス32のデータ信号をラッチする。
プロテクトレジスタ69にはデータ信号が書き込まれ、プロテクトレジスタ回路43は、ハイレベル(無効)のプロテクト信号を出力する。
次に、CPU11は、CPUバス16を通じて許可メモリ13から許可プログラム23の続きを読み込み、秘密プログラム24へのジャンプ処理を実行する(ステップST4)。
CPU11は、許可プログラム23をリターンイベント待ち状態とする。
その後、CPU11は、ジャンプコードの記述に基づいて秘密プログラム24の格納先アドレスを特定し、特定した格納先アドレスから秘密プログラム24を読み込む。
CPU11は、CPUバス16を通じて機密メモリ14にリードアクセス(オペコードフェッチ)する。
CPU11は、許可プログラム23をリターンイベント待ち状態とする。
その後、CPU11は、ジャンプコードの記述に基づいて秘密プログラム24の格納先アドレスを特定し、特定した格納先アドレスから秘密プログラム24を読み込む。
CPU11は、CPUバス16を通じて機密メモリ14にリードアクセス(オペコードフェッチ)する。
秘密プログラム24を読み込んだCPU11は、秘密プログラム24の処理を実行する(ステップST5)。
たとえばCPU11は、機密メモリ14に格納された暗号キーを読み込んで、所定のデータを暗号化することができる。
そして、秘密プログラム24による所定の処理が完了し、CPU11は、秘密プログラム24の最後に記述されたジャンプコマンド(リターンコマンド)を機密メモリ14から読み込んで実行する(ステップST6)。
CPU11は、秘密プログラム24の実行を終了する。
その後、CPU11は、許可プログラム23の実行を再開する。
たとえばCPU11は、機密メモリ14に格納された暗号キーを読み込んで、所定のデータを暗号化することができる。
そして、秘密プログラム24による所定の処理が完了し、CPU11は、秘密プログラム24の最後に記述されたジャンプコマンド(リターンコマンド)を機密メモリ14から読み込んで実行する(ステップST6)。
CPU11は、秘密プログラム24の実行を終了する。
その後、CPU11は、許可プログラム23の実行を再開する。
許可プログラム23の実行を再開したCPU11は、CPUバス16を通じて許可プログラム23の次のコマンド(ジャンプコマンドの次のコマンド)を読み込み、実行する。
CPU11は、まず、プロテクト設定処理を実行する(ステップST7)。
具体的には、CPU11は、CPUバス16を通じてプロテクトレジスタ69にライトアクセスし、プロテクト信号を有効(ローレベル)とするためのデータをプロテクトレジスタ69に書き込む。
CPU11は、まず、プロテクト設定処理を実行する(ステップST7)。
具体的には、CPU11は、CPUバス16を通じてプロテクトレジスタ69にライトアクセスし、プロテクト信号を有効(ローレベル)とするためのデータをプロテクトレジスタ69に書き込む。
次に、CPU11は、割り込みハンドラをイネーブルにする(ステップST8)。
これにより、CPU11は、割り込みイベントが発生すると、他のプログラムによる割り込み処理を実行することが可能になる。
これにより、CPU11は、割り込みイベントが発生すると、他のプログラムによる割り込み処理を実行することが可能になる。
次に、CPU11は、許可プログラム23の最後に記述されたジャンプコマンド(リターンコマンド)を許可メモリ13から読み込んで実行する(ステップST9)。
CPU11は、許可プログラム23の実行を終了する。その後、CPU11は、一般プログラム21の実行を再開する。
CPU11は、許可プログラム23の実行を終了する。その後、CPU11は、一般プログラム21の実行を再開する。
一般プログラム21の実行を再開したCPU11は、CPUバス16を通じて一般プログラム21の次のコマンド(ジャンプコマンドの次のコマンド)を読み込み、実行する(ステップST10)。
これにより、CPU11は、通常処理に復帰する。
これにより、CPU11は、通常処理に復帰する。
このように、CPU11は、一般プログラム21から許可プログラム23を呼び出す。
また、CPU11は、許可プログラム23から機密プログラムを呼び出す。
そして、機密プログラムの実行中には、CPU11は、許可プログラム23の実行により割り込みハンドラをディセーブルとし、機密メモリ14へのアクセスのプロテクトを解除した状態とする。
また、CPU11は、許可プログラム23から機密プログラムを呼び出す。
そして、機密プログラムの実行中には、CPU11は、許可プログラム23の実行により割り込みハンドラをディセーブルとし、機密メモリ14へのアクセスのプロテクトを解除した状態とする。
[秘密プログラム実行までのタイミングチャート]
図6は、秘密プログラム24を読み込むまでのCPUバス16などの状態の一例を示すタイミングチャートである。
図6(A)は、アドレスバス31のアドレス信号である。図6(B)は、オペコードの出力信号線Opecodeのオペコードの出力信号である。図6(C)は、ライトイネーブル信号線WEのライトイネーブル信号である。図6(D)は、アクセス判定回路41が出力する第1Dフリップフロップ信号(WriteValid)である。図6(E)は、データバス32のデータ信号である。図6(F)は、プロテクトレジスタ回路43のプロテクト信号である。図6(G)は、機密メモリ14によるデータバス32への入出力信号である。
図6は、秘密プログラム24を読み込むまでのCPUバス16などの状態の一例を示すタイミングチャートである。
図6(A)は、アドレスバス31のアドレス信号である。図6(B)は、オペコードの出力信号線Opecodeのオペコードの出力信号である。図6(C)は、ライトイネーブル信号線WEのライトイネーブル信号である。図6(D)は、アクセス判定回路41が出力する第1Dフリップフロップ信号(WriteValid)である。図6(E)は、データバス32のデータ信号である。図6(F)は、プロテクトレジスタ回路43のプロテクト信号である。図6(G)は、機密メモリ14によるデータバス32への入出力信号である。
そして、図6のタイミングT1において、CPU11は、許可プログラム23を読み込むために、アドレスバス31に許可メモリ13の第1アドレスを出力し、オペコードの出力信号をハイレベルとし、かつ、ライトイネーブル信号をローレベルとする。
このタイミングT1において、たとえば許可プログラム23の命令(コマンド)がフェッチされる。
このタイミングT1において、たとえば許可プログラム23の命令(コマンド)がフェッチされる。
許可プログラム23の命令(コマンド)が許可メモリ13からフェッチされることにより、アクセス判定回路41は、タイミングT2において、ハイレベルの第1Dフリップフロップ信号(WriteValid)を出力する。
なお、第1Dフリップフロップ信号(WriteValid)は、プロテクト信号がハイレベルとなるタイミングT4において自動的にローレベルにクリアされる。
なお、第1Dフリップフロップ信号(WriteValid)は、プロテクト信号がハイレベルとなるタイミングT4において自動的にローレベルにクリアされる。
また、タイミングT3において、CPU11は、プロテクトレジスタ69へプロテクト信号をハイレベルとするためのデータを書込むために、アドレスバス31にプロテクトレジスタ69の第2アドレスを出力し、データバス32へ書込みデータを出力する。
これにより、プロテクトレジスタ回路43は、プロテクトレジスタ69を更新し、タイミングT4から、ハイレベルのプロテクト信号を出力する。
また、秘密プログラム24を格納する機密メモリ14へのアクセスが許可される。
これにより、プロテクトレジスタ回路43は、プロテクトレジスタ69を更新し、タイミングT4から、ハイレベルのプロテクト信号を出力する。
また、秘密プログラム24を格納する機密メモリ14へのアクセスが許可される。
タイミングT4以降に、CPU11は、CPUバス16を通じて機密メモリ14にリードアクセス(オペコードフェッチ)する。
タイミングT4からハイレベルのプロテクト信号が出力されているので、機密メモリ14は、データバス32へ秘密プログラム24等を出力する。
タイミングT4からハイレベルのプロテクト信号が出力されているので、機密メモリ14は、データバス32へ秘密プログラム24等を出力する。
このようにプロテクト信号がハイレベルである場合、機密メモリ14は、データバス32へ有効な秘密プログラム24、秘密データ25を入出力する。
また、例えばタイミングT1からT4に示すように、プロテクト信号がローレベルである場合、機密メモリ14は、データバス32へ無意味なデータを入出力する。
また、例えばタイミングT1からT4に示すように、プロテクト信号がローレベルである場合、機密メモリ14は、データバス32へ無意味なデータを入出力する。
なお、CPU11が機密メモリ14にアクセス可能となるタイミングT4の以前に、図5に示すように割り込みハンドラがディセーブルとされている。
よって、タイミングT5以降において割り込みハンドラ等によって通常メモリ12に格納されている一般プログラム21へのジャンプが発生したとしても、CPU11は、その割り込みは割り込みハンドラがイネーブルとなるまで無視される。
また、CPU11が機密メモリ14にアクセス可能な期間においては、CPU11は、一般プログラム21を実行しない。
これにより一般プログラム21を実行するCPU11は、機密メモリ14にアクセスすることができなくなる。
よって、タイミングT5以降において割り込みハンドラ等によって通常メモリ12に格納されている一般プログラム21へのジャンプが発生したとしても、CPU11は、その割り込みは割り込みハンドラがイネーブルとなるまで無視される。
また、CPU11が機密メモリ14にアクセス可能な期間においては、CPU11は、一般プログラム21を実行しない。
これにより一般プログラム21を実行するCPU11は、機密メモリ14にアクセスすることができなくなる。
以上のように、本実施形態では、一般プログラム21を実行するCPU11が機密メモリ14にアクセスすることができない。
つまり、本実施形態では、情報処理装置1のCPU11などの汎用性を損なうことなく、秘密プログラム24についての必要な機密性を確保できる。
つまり、本実施形態では、情報処理装置1のCPU11などの汎用性を損なうことなく、秘密プログラム24についての必要な機密性を確保できる。
また、本実施形態では、秘密プログラム24を使用したい場合は、許可プログラム23を中継する必要がある。
仮に一般プログラム21が秘密プログラム24を直接コールしたとしても、有効な秘密プログラム24にアクセスすることはできず、無意味なデータを読み出してしまう。
仮に一般プログラム21が秘密プログラム24を直接コールしたとしても、有効な秘密プログラム24にアクセスすることはできず、無意味なデータを読み出してしまう。
また、本実施形態では、許可プログラム23へのアクセス監視は、許可プログラム23を格納する許可メモリ13のアドレスから判断する。
そして、CPUバス16を監視し、直前のオペコードフェッチアクセスが許可プログラム23のアドレスであった場合のみ、メモリ制御装置のプロテクトレジスタ69への書き込みを可能にする。
そのため、許可プログラム23以外の一般プログラム21にプロテクトレジスタ69の設定に関するプログラムが記述されていても、秘密プログラム24を格納する機密メモリ14のプロテクトを解除することはできない。
そして、CPUバス16を監視し、直前のオペコードフェッチアクセスが許可プログラム23のアドレスであった場合のみ、メモリ制御装置のプロテクトレジスタ69への書き込みを可能にする。
そのため、許可プログラム23以外の一般プログラム21にプロテクトレジスタ69の設定に関するプログラムが記述されていても、秘密プログラム24を格納する機密メモリ14のプロテクトを解除することはできない。
これに加えて、本実施形態では、許可プログラム23の中身は公開された状態に実装されるが、アドレスマップ、及び許可プログラム23の書き換えはハードウェア的に不可とされている。
その結果、本実施形態では、許可プログラム23を介した一般プログラム21から秘密プログラム24への呼び出しのセキュリティレベルを落とさずに、機密性の高い秘密プログラム24を一般プログラム21と同一システムに混在させることができる。
その結果、本実施形態では、許可プログラム23を介した一般プログラム21から秘密プログラム24への呼び出しのセキュリティレベルを落とさずに、機密性の高い秘密プログラム24を一般プログラム21と同一システムに混在させることができる。
また、本実施形態では、許可プログラム23から最初に読み出す秘密プログラム24以外は、プロテクトレジスタ69が保護するアドレス内に自由に配置することができる。また、許可メモリ13以外は、RAMによる実装が可能であるため、自由度の高い設計ができる。
また、本実施形態では、秘密プログラム24の開示を許可されていない開発者は、秘密プログラム24を使用することは可能だが、中身を読み出すことができない。
このため、秘密プログラム24を読み出す一般プログラム21の開発を、秘密プログラム24の開示を許可されている開発者以外でも行うことができる。
また、本実施形態では、秘密プログラム24の開示を許可されていない開発者に対して、秘密プログラム24のインターフェースを提供することが可能になる。
このため、秘密プログラム24を読み出す一般プログラム21の開発を、秘密プログラム24の開示を許可されている開発者以外でも行うことができる。
また、本実施形態では、秘密プログラム24の開示を許可されていない開発者に対して、秘密プログラム24のインターフェースを提供することが可能になる。
これに対して、一般的な情報処理装置1では、機密性の低い一般プログラム21と機密性の高い秘密プログラム24とを混在させる場合、一般的なCPU11では機密性の高/低を区別することができない。
このため、機密性の低い一般プログラム21から機密性の高い秘密プログラム24へ簡単にアクセスできるという問題が生じる。
このような事態を防止するためには、一般的な情報処理装置1では、秘密プログラム24ではない一般プログラム21までも秘密プログラム24として扱う必要がある。あるいは、機密性の高/低に応じて複数のCPU11を用意する必要がある。
これらの場合には、いずれも、システムの汎用性が低下し、システムを構築するためのコストが高くなってしまう。
このため、機密性の低い一般プログラム21から機密性の高い秘密プログラム24へ簡単にアクセスできるという問題が生じる。
このような事態を防止するためには、一般的な情報処理装置1では、秘密プログラム24ではない一般プログラム21までも秘密プログラム24として扱う必要がある。あるいは、機密性の高/低に応じて複数のCPU11を用意する必要がある。
これらの場合には、いずれも、システムの汎用性が低下し、システムを構築するためのコストが高くなってしまう。
以上の実施形態は、本発明の好適な実施形態の例であるが、本発明は、これに限定されるものではなく、発明の要旨を逸脱しない範囲において種々の変形または変更が可能である。
たとえば上記実施形態では、CPU11、通常メモリ12、許可メモリ13、機密メモリ14、およびメモリ制御回路15は、同じCPUバス16に接続されている。
この他にも例えば、CPU11は第1バスに接続され、通常メモリ12などの記憶部は第2バスに接続され、情報処理装置1は第1バスと第2バスとが接続されるブリッジ回路を有してもよい。
この場合、メモリ制御回路15は、第1バスを監視しても、第2バスを監視してもよい。
この他にも例えば、CPU11は第1バスに接続され、通常メモリ12などの記憶部は第2バスに接続され、情報処理装置1は第1バスと第2バスとが接続されるブリッジ回路を有してもよい。
この場合、メモリ制御回路15は、第1バスを監視しても、第2バスを監視してもよい。
上記実施形態では、メモリ制御回路15は、許可プログラム23の格納先アドレスへの読出しアクセスに基づいて有効信号(WriteValid)を生成している。
この他にも例えば、メモリ制御回路15は、許可プログラム23の格納先アドレスへの書込みアクセスに基づいて有効信号(WriteValid)を生成してもよい。
さらに他にも例えば、メモリ制御回路15は、許可プログラム23が、秘密プログラム24を呼び出す前にアクセスする所定のアドレスへのアクセスに基づいて有効信号を生成してもよい。
ただし、許可プログラム23の格納先アドレスへのアクセスに基づいて有効信号を生成する方が、他のプログラムのなりすましを予防するために最も優れている。
また、メモリ制御回路15は、複数のアドレスに対するアクセスに基づいて有効信号を生成してもよい。
また、メモリ制御回路15は、複数のアドレスに対する所定の手順でのアクセスに基づいて有効信号を生成してもよい。
この他にも例えば、メモリ制御回路15は、許可プログラム23の格納先アドレスへの書込みアクセスに基づいて有効信号(WriteValid)を生成してもよい。
さらに他にも例えば、メモリ制御回路15は、許可プログラム23が、秘密プログラム24を呼び出す前にアクセスする所定のアドレスへのアクセスに基づいて有効信号を生成してもよい。
ただし、許可プログラム23の格納先アドレスへのアクセスに基づいて有効信号を生成する方が、他のプログラムのなりすましを予防するために最も優れている。
また、メモリ制御回路15は、複数のアドレスに対するアクセスに基づいて有効信号を生成してもよい。
また、メモリ制御回路15は、複数のアドレスに対する所定の手順でのアクセスに基づいて有効信号を生成してもよい。
上記実施形態では、許可プログラム23は、CPU11により書き換えできないROMに記憶されている。
この他にも例えば、許可プログラム23は、CPU11により書き換え可能なメモリに記憶されていてもよい。
ただし、この場合には、許可プログラム23を暗号化するなどしてメモリに記憶させるのが望ましい。
この他にも例えば、許可プログラム23は、CPU11により書き換え可能なメモリに記憶されていてもよい。
ただし、この場合には、許可プログラム23を暗号化するなどしてメモリに記憶させるのが望ましい。
上記実施形態では、CPU11、通常メモリ12、許可メモリ13、機密メモリ14、およびメモリ制御回路15は、CPUバス16とともに1チップの集積回路装置(集積回路装置)に組み込まれている。
この他にも例えば、CPU11、通常メモリ12、許可メモリ13、機密メモリ14、およびメモリ制御回路15は、別々の集積回路装置2に組み込まれてもよい。
この他にも例えば、CPU11、通常メモリ12、許可メモリ13、機密メモリ14、およびメモリ制御回路15は、別々の集積回路装置2に組み込まれてもよい。
1…情報処理装置、2…集積回路装置、3…発振部、11…CPU(実行部)、12…通常メモリ(記憶部)、13…許可メモリ(記憶部、読出専用メモリ)、14…機密メモリ(記憶部、制限メモリ)、15…メモリ制御回路(バスアクセス制御部)、16…CPUバス(バス)、21…一般プログラム(他のプログラム)、23…許可プログラム(呼出しプログラム)、24…秘密プログラム(処理プログラム)、26…第1アドレス範囲、27…第2アドレス範囲、28…アクセス制限領域、31…アドレスバス、32…データバス、33…制御バス(プロテクション情報用の信号線)、41…アクセス判定回路、43…プロテクトレジスタ回路
Claims (11)
- 他のプログラムによる呼び出しが制限されているアクセス制限領域に記憶された処理プログラムを含む、複数のプログラムを記憶可能な記憶部と、
前記記憶部からプログラムを読み込んで実行する実行部と、
前記実行部と前記記憶部とを接続するバスと、
前記バスを監視し、前記実行部による前記記憶部へのアクセスを制御するバスアクセス制御部と
を有し、
前記記憶部は、
前記アクセス制限領域外に、前記処理プログラムを呼び出す呼出しプログラムを記憶し、
前記バスアクセス制御部は、
前記呼出しプログラムの実行により前記実行部が前記バスを通じて前記記憶部の前記アクセス制限領域にアクセスする場合に、当該アクセス制限領域へのアクセスを許可し、
前記呼出しプログラム以外のプログラムの実行により前記実行部が前記バスを通じて前記記憶部の前記アクセス制限領域にアクセスする場合に、当該アクセス制限領域へのアクセスを禁止する
情報処理装置。 - 前記記憶部は、
アクセス制限領域外に、前記他のプログラムを記憶し、
前記呼出しプログラムは、
前記実行部による前記他のプログラムの実行に基づいて前記実行部に読み込まれて実行され、前記処理プログラムを前記実行部に読み込ませて実行させる
請求項1記載の情報処理装置。 - 前記呼出しプログラムは、
前記処理プログラムを前記実行部に読み込ませる前に、前記実行部による他のプログラムの実行を禁止する
請求項1または2記載の情報処理装置。 - 前記処理プログラムは、
当該処理プログラムの一連の処理の最後に、前記呼出しプログラムを前記実行部に実行させ、
前記呼出しプログラムは、
前記処理プログラムの呼び出しに基づいて、前記実行部による他のプログラムの実行を許可する
請求項3記載の情報処理装置。 - 前記記憶部は、
前記バスに接続され、プロテクト信号が解除されている場合にアクセス可能な制限メモリを有し、当該制限メモリに前記アクセス制限領域が設けられ、
前記バスアクセス制御部は、
前記制限メモリへ前記プロテクト信号を出力し、
前記バス上の信号に基づいて、前記呼出しプログラムを実行する前記実行部による所定のアクセスを検出した場合に、前記プロテクト信号を解除する
請求項1から4のいずれか一項記載の情報処理装置。 - 前記バスアクセス制御部は、
前記バスを通じた前記実行部による第1アドレスへのアクセスを検出した場合に、有効信号を生成し、
前記有効信号が生成されている状態で、前記バスを通じた前記実行部による第2アドレスへのアクセスを検出した場合に、前記プロテクト信号を解除する
請求項5記載の情報処理装置。 - 前記第1アドレスは、
前記呼出しプログラムの格納先アドレスであり、
前記バスアクセス制御部は、
前記第1アドレスへのアクセスとして、前記第1アドレスからの読出しアクセスを検出する
請求項6記載の情報処理装置。 - 前記記憶部は、前記実行部により書き換えることができない読出専用メモリを有し、
前記呼出しプログラムは、前記読出専用メモリに記憶されている
請求項1から7のいずれか一項記載の情報処理装置。 - 前記記憶部、前記実行部、前記バス、および前記バスアクセス制御部は、1個の集積回路装置に組み込まれている
請求項1から8のいずれか一項記載の情報処理装置。 - 前記バスアクセス制御部に対して、前記実行部と共通するクロック信号を出力する発振部を有し、
前記バスは、
データバス、アドレスバス、および当該バスのアクセス状態を示すプロテクション情報用の信号線を有し、
前記バスアクセス制御部は、
前記クロック信号、前記アドレスバスのアドレス信号および前記プロテクション情報の信号が入力され、前記呼出しプログラムの格納先アドレスからの読出しアクセスを検出した場合に、前記クロック信号と同期して前記有効信号を出力するアクセス判定回路と、
前記クロック信号、前記アドレスバスのアドレス信号および前記有効信号が入力され、前記プロテクト信号を出力するプロテクトレジスタ回路と
を有し、
前記プロテクトレジスタ回路は、
前記有効信号が入力されている期間において前記第2アドレスへのアクセスを検出した場合に、前記クロック信号と同期して前記プロテクト信号を解除する
請求項5記載の情報処理装置。 - 他のプログラムによる呼び出しが制限されているアクセス制限領域に記憶された処理プログラムを含む、複数のプログラムを記憶可能な記憶部と、前記記憶部からプログラムを読み込んで実行する実行部とがバスにより接続された情報処理装置でのメモリアクセス制御方法であって、
前記バス上で、前記呼出しプログラムの実行による前記実行部のアクセスを検出するステップと、
前記バス上で前記アクセス制限領域に対する実行部のアクセスを検出した場合に、直前に前記呼出しプログラムの実行によるアクセスがあったか否かに応じて、前記アクセス制限領域へのアクセスを許可または禁止に制御するステップと
を備えるメモリアクセス制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010009864A JP2011150457A (ja) | 2010-01-20 | 2010-01-20 | 情報処理装置およびメモリアクセス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010009864A JP2011150457A (ja) | 2010-01-20 | 2010-01-20 | 情報処理装置およびメモリアクセス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011150457A true JP2011150457A (ja) | 2011-08-04 |
Family
ID=44537388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010009864A Pending JP2011150457A (ja) | 2010-01-20 | 2010-01-20 | 情報処理装置およびメモリアクセス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011150457A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017058873A (ja) * | 2015-09-15 | 2017-03-23 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP2019096338A (ja) * | 2019-02-04 | 2019-06-20 | ルネサスエレクトロニクス株式会社 | 半導体装置および半導体装置販売モデル |
-
2010
- 2010-01-20 JP JP2010009864A patent/JP2011150457A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017058873A (ja) * | 2015-09-15 | 2017-03-23 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP2019096338A (ja) * | 2019-02-04 | 2019-06-20 | ルネサスエレクトロニクス株式会社 | 半導体装置および半導体装置販売モデル |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6306578B2 (ja) | メモリ保護装置及び保護方法 | |
JP4872001B2 (ja) | メモリ・アクセス安全性管理 | |
JP3710671B2 (ja) | 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法 | |
JP4818793B2 (ja) | マイクロコンピュータ及びメモリアクセスの制御方法 | |
KR100319677B1 (ko) | 메모리액세스제어회로 | |
JP4939382B2 (ja) | 情報処理装置及びそのプログラム実行制御方法 | |
JP4939387B2 (ja) | データ処理装置及びアドレス空間保護方法 | |
TWI603223B (zh) | 記憶體保護電路、處理裝置、及記憶體保護方法 | |
JP4584044B2 (ja) | 半導体装置 | |
JP2005018770A (ja) | システム・オン・チップのためのセキュリティ・アーキテクチャ | |
EP1763761A1 (en) | Digital signal controller secure memory partitioning | |
US7523279B2 (en) | Information processing apparatus for accessing memory spaces including a user memory space and a secure memory space | |
JP2009157542A (ja) | 情報処理装置及びそのスタックポインタ更新方法 | |
JP4945053B2 (ja) | 半導体装置、バスインターフェース装置、およびコンピュータシステム | |
JP4591163B2 (ja) | バスアクセス制御装置 | |
JP2007109053A (ja) | バスアクセス制御装置 | |
JP2011150457A (ja) | 情報処理装置およびメモリアクセス制御方法 | |
JP6495290B2 (ja) | Ic無線装置 | |
JP2008040585A (ja) | マイクロコンピュータ | |
JP2010134572A (ja) | セキュリティを実現する装置、および方法 | |
JP2010225182A (ja) | 半導体装置 | |
JP2011222055A (ja) | マイクロコンピュータ及びメモリアクセスの制御方法 | |
US20150154123A1 (en) | Device with processing unit and information storage | |
JP5380392B2 (ja) | 半導体装置、バスインターフェース装置、およびコンピュータシステム | |
JP5324676B2 (ja) | プロセッサ、バスインターフェース装置、およびコンピュータシステム |