JPWO2003104948A1 - メモリ管理ユニット、コード検証装置およびコード復号装置 - Google Patents
メモリ管理ユニット、コード検証装置およびコード復号装置 Download PDFInfo
- Publication number
- JPWO2003104948A1 JPWO2003104948A1 JP2004511956A JP2004511956A JPWO2003104948A1 JP WO2003104948 A1 JPWO2003104948 A1 JP WO2003104948A1 JP 2004511956 A JP2004511956 A JP 2004511956A JP 2004511956 A JP2004511956 A JP 2004511956A JP WO2003104948 A1 JPWO2003104948 A1 JP WO2003104948A1
- Authority
- JP
- Japan
- Prior art keywords
- code
- memory
- processor
- verification
- management unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012795 verification Methods 0.000 title claims abstract description 134
- 238000007726 management method Methods 0.000 description 122
- 230000010365 information processing Effects 0.000 description 46
- 238000000034 method Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 24
- 238000006243 chemical reaction Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 16
- 238000010295 mobile communication Methods 0.000 description 11
- 238000009434 installation Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
Description
この発明は、パーソナルコンピュータや移動体通信端末などの情報処理装置に組み込まれるメモリ管理ユニット、コード検証装置およびコード復号装置に関し、特に、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することができるメモリ管理ユニット、コード検証装置およびコード復号装置に関するものである。
背景技術
従来より、パーソナルコンピュータや移動体通信端末などの情報処理装置においては、正当性が保証された安全なコード(機械語によって記述され、CPUによって解釈されて実行されるプログラム)が装置上で実行されることが求められている。つまり、ハードディスクなどへのインストール前あるいはインストール後に悪意の第三者によって改ざんされ、安全性に問題があるコードが、メモリに格納されて装置上で実行されることがないようにする必要がある。
そして、かかる必要性に対する従来技術として、▲1▼情報処理装置に検証用ソフトウェアを追加し、コードにあらかじめ付与されている検証情報を用いて、コードの実行前にコードの正当性を検証する手法や、▲2▼情報処理装置に復号用ソフトウェアを追加し、あらかじめ暗号化されたコードを実行前に復号することによって、コードの正当性を担保する手法が、従来から一般的におこなわれている。
しかしながら、上記の従来技術は、ソフトウェアによってコードの正当性を検証または担保するものであるため、検証用ソフトウェアや復号用ソフトウェア自体が改ざんされる危険性が多分にあり、必ずしも、正当性が保証された安全なコードを情報処理装置上で実行することができないという問題点があった。
すなわち、検証用ソフトウェア自体が改ざんされた場合には、検証の成否に関係なくコードが実行されてしまうおそれがあり、また、復号用ソフトウェア自体が改ざんされた場合には、復号したコードを実行前に改ざんされてしまうおそれある結果、上記の従来技術では、必ずしも、正当性が保証された安全なコードを情報処理装置上で実行することができなかった。
このソフトウェアによる問題点を解決するために、▲1▼情報処理装置内のメモリに付加した特別な検証用ハードウェアによって、プロセッサのメモリ割り当て単位であるページごとに、ページ上に配置されたコードを検証する手法や、▲2▼情報処理装置内のプロセッサに付加した特別な復号用ハードウェアによって、フェッチしたコードを復号する手法も考えられが、このようなハードウェアを簡単には開発することができないという問題点がある。
つまり、メモリに特別な検証用ハードウェアを付加することや、プロセッサに特別な復号用ハードウェアを付加することは、言い換えれば、メモリのチェック部分やプロセッサの入口部分に新たなインテリジェンスを追加することであるので、プロセッサやメモリのアーキテクチャを大幅に変更する必要が生じ、簡単には開発することができなかった。
このように、パーソナルコンピュータや移動体通信端末などの情報処理装置では、いかにして正当性が保証された安全なコードを装置上で実行するかが極めて重要な課題になっており、望ましくは、プロセッサやメモリのアーキテクチャを変更することなく、これを簡単かつ確実に解決することができるハードウェアが必要とされている。
そこで、この発明は、上述した従来技術による問題点を解決するためになされたものであり、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することができるメモリ管理ユニット、コード検証装置およびコード復号装置を提供することを目的としている。
発明の開示
本発明は、コードが格納されるメモリを管理して、コードをプロセッサによって実行させるために、当該実行対象となるコードが記憶されているメモリが有効である旨を設定するメモリ管理ユニットであって、コードの正当性を検証するために用いられる検証鍵を検証鍵格納手段に格納する。そして、コードがメモリに格納されてプロセッサによる実行が可能になった場合に、検証鍵格納手段によって格納された検証鍵およびコードに付与された検証情報を用いて、コードの正当性を検証し、正当性が検証された場合には、メモリが有効である旨を設定し、正当性が検証されなかった場合には、メモリが有効である旨を設定しないように制御する。
このため、本発明によれば、インストール前あるいはインストール後に悪意の第三者によって改ざんされたために、安全性に問題があるコードについては、コードの実行直前である水際(つまり、仮想ページから物理ページへのアドレス変換を有効とするタイミング)において、悪意の第三者にとっては手が届かないハードウェアであるメモリ管理ユニットによって、コードが正当でない旨が確実に検証されるので、プロセッサによる実行を回避することができる。また、このような検証機能を有するメモリ管理ユニットは、プロセッサやメモリのアーキテクチャを変更する必要がないので、検証機能を有するプロセッサやメモリを開発することに比較して、簡単に開発することができる。したがって、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
また、本発明は、コードが格納されるメモリを管理して、コードをプロセッサによって実行させるために、当該実行対象となるコードが記憶されているメモリが有効である旨を設定するメモリ管理ユニットであって、暗号化されたコードを復号するために用いられる復号鍵を復号鍵格納手段に格納する。そして、暗号化されたコードがメモリに格納された場合に、当該メモリから暗号化されたコードを読み出し、復号鍵格納手段によって格納された復号鍵を用いて復号して、メモリに再格納し、さらに、復号されたコードが再格納されたメモリが有効である旨を設定する。
このため、本発明によれば、コードの実行直前である水際において、悪意の第三者にとっては手が届かないハードウェアであるメモリ管理ユニットによって、暗号化されたコードが復号されるので、復号されたコードについては、正当性が担保されたコード(インストール前あるいはインストール後における悪意の第三者による改ざんがなかったコード)として実行することができる。また、このような復号機能を有するメモリ管理ユニットは、プロセッサやメモリのアーキテクチャを変更する必要がないので、復号機能を有するプロセッサやメモリを開発することに比較して、簡単に開発することができる。したがって、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
また、本発明のメモリ管理ユニットは、プロセッサによるコードの実行に際して、当該プロセッサから入力された仮想アドレスを、メモリ上のアドレスである物理アドレスに変換して、当該変換した物理アドレスをメモリに対して出力するものである。
このため、本発明によれば、パーソナルコンピュータ、ワークステーションまたは移動体通信端末など、仮想アドレスから物理アドレスへのアドレス変換をおこなう情報処理装置に適用して、かかる情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
また、本発明のメモリ管理ユニットは、プロセッサによるコードの実行に際して、当該プロセッサから入力された仮想アドレスを、メモリ上のアドレスである物理アドレスとして、メモリに対して出力するものである。
このため、本発明によれば、PHS端末、携帯端末またはPDAなど、仮想アドレスから物理アドレスへのアドレス変換をおこなわない情報処理装置に適用して、かかる情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
また、本発明において、コードは、機械語によって記述され、プロセッサとしてのCPUによって解釈されて実行されるプログラムである。
このため、本発明によれば、情報処理装置上で基本ソフトとして実行される極めて重要なコードについて、プロセッサやメモリのアーキテクチャを変更することなく、正当性を簡単かつ確実に保証することが可能になる。
また、本発明は、メモリに格納されてプロセッサによって実行されるコードの正当性を、当該コードに付与された検証情報に基づいて検証するコード検証装置であって、コードの正当性を検証するために検証情報に対応して用いられる検証鍵を検証鍵格納手段に格納する。そして、コードがメモリに格納されてプロセッサによる実行が可能になった場合に、検証鍵格納手段によって格納された検証鍵およびコードに付与された検証情報を用いて、コードの正当性を検証し、正当性が検証された場合には、プロセッサによるコードの実行を許可し、正当性が検証されなかった場合には、プロセッサによるコードの実行を拒絶する。
このため、本発明によれば、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
また、本発明は、メモリに格納されている暗号化されたコードを、プロセッサによって実行させるために復号するコード復号装置であって、暗号化されたコードを復号するために用いられる復号鍵を復号鍵格納手段に格納する。そして、暗号化されたコードがメモリに格納された場合に、当該メモリから暗号化されたモードを読み出し、復号鍵格納手段によって格納された復号鍵を用いて復号して、メモリに再格納し、さらに、復号されてメモリに再格納されたコードを実行するようにプロセッサを制御する。
このため、本発明によれば、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
発明を実施するための最良の形態
以下、添付図面を参照して、本発明に係るメモリ管理ユニット、コード検証装置およびコード復号装置の好適な実施の形態を詳細に説明する。なお、以下では、実施の形態1〜4として、本発明に係るメモリ管理ユニットについて、種々の実施の形態を説明した後に、他の実施の形態として、本発明に係るコード検証装置およびコード復号装置並びに種々の変形例を説明し、最後に、本発明の効果を説明する。
(実施の形態1)
本実施の形態1では、パーソナルコンピュータ、ワークステーションまたは移動体通信端末などの情報処理端末に通常搭載されるメモリ管理ユニット(MMU:Memory Management Unit)に、プロセッサによって実行されるコードの正当性を検証するための検証機能を追加した場合を説明する。なお、ここでは、本実施の形態1に係るメモリ管理ユニットが適用されるシステムの概要および主たる特徴とを説明した後に、メモリ管理ユニットの構成を説明し、最後に、このシステムによる処理の手順を説明することとする。
[実施の形態1:システムの概要および主たる特徴]
まず最初に、本実施の形態1に係るメモリ管理ユニットが適用されるシステムの概要および主たる特徴を説明する。第1図は、本実施の形態1に係るメモリ管理ユニットが適用されるシステムの構成を示すブロック図である。同図に示すように、このシステムは、パーソナルコンピュータ、ワークステーションまたは移動体通信端末などの情報処理端末の一部分であって、プロセッサ1と、メモリ2および検証情報用メモリ3との間に、メモリ管理ユニット10を設け、これらをアドレスバス4およびデータバス5によって接続して構成される。
このうち、プロセッサ1は、メモリ2に格納されたコード(機械語によって記述され、CPUによって解釈されて実行されるプログラム)を実行し、この実行に際して、メモリ2に格納されたデータを読み書きする処理部(例えば、CPUなど)である。また、メモリ2は、プロセッサ1が使用するコードやデータを格納する記憶部である。また、メモリ管理ユニット10は、メモリ2を管理して、主に、コードをプロセッサ1によって実行させるために、当該実行対象となるコードが記憶されているメモリ2が有効である旨を設定する処理部である。なお、検証情報用メモリ3は、後述する検証情報を格納する記憶部である。
ここで、このシステムによる概略的な処理の流れを簡単に説明すると、まず最初に、プロセッサ1は、メモリ管理ユニット10を介して、メモリ割り当て単位である所定のページ(例えば、4Kbytes)ごとに、コードをメモリ2に格納する。続いて、メモリ管理ユニット10によって、当該コードが格納されたメモリが有効である旨が設定されると、プロセッサ1は、当該コードに対応する仮想アドレスをメモリ管理ユニット10に出力する。そして、メモリ管理ユニット10は、プロセッサ1から入力された仮想アドレスを、メモリ2上のアドレスである物理アドレスに変換してメモリ2に対して出力し、これによって、メモリ2上の対応するコードがプロセッサ1によって実行されることとなる。
このように、図1に示したシステムは、概略的に、メモリ2に格納されたコードをプロセッサ1によって実行するものであるが、このコードには、コードの正当性を検証するために用いられる検証情報(例えば、電子署名や電子証明書など)が付与されている。つまり、このシステムは、メモリ管理ユニット10が、コードに付与された検証情報を用いてコードの正当性を検証することによって、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することができるようにしている点に、主たる特徴がある。
この主たる特徴を簡単に説明すると、メモリ管理ユニット10は、コードの正当性を検証するために用いられる検証鍵をあらかじめ記憶している。そして、プロセッサ1は、メモリ2にコードを格納する際に、当該コードに付与された検証情報を検証情報用メモリ3に格納する。このようにして、メモリ2に格納されたコードについてプロセッサ1による実行が可能になった場合に、メモリ管理ユニット10は、あらかじめ記憶した検証鍵および検証情報用メモリ2に格納された検証情報を用いて、コードの正当性を検証する。そして、正当性が検証された場合には、メモリ2が有効である旨を設定し、正当性が検証されなかった場合には、メモリ2が有効である旨を設定しないように制御する。
このため、インストール前あるいはインストール後に悪意の第三者によって改ざんされたために、安全性に問題があるコードについては、コードの実行直前である水際(つまり、仮想ページから物理ページへのアドレス変換を有効とするタイミング)において、悪意の第三者にとっては手が届かないハードウェアであるメモリ管理ユニット10によって、コードが正当でない旨が確実に検証されるので、プロセッサ1による実行を回避することができる。また、このような検証機能を有するメモリ管理ユニット10は、プロセッサ1やメモリ2のアーキテクチャを変更する必要がないので、検証機能を有するプロセッサ1やメモリ2を開発することに比較して、簡単に開発することができる。
このようなことから、本実施の形態1に係るメモリ管理ユニット10によれば、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することができるという上記した主たる特徴が発揮されることとなる。
ここで、メモリ管理ユニット10の構成の説明に入る前に、本実施の形態1におけるアドレス空間を簡単に説明する。第3図は、本実施の形態1におけるアドレス空間を説明するための図である。本実施の形態1に係るメモリ管理ユニット10は、プロセッサ1によるコードの実行に際して、プロセッサ1から入力された仮想アドレスを、メモリ2上のアドレスである物理アドレスに変換して、当該変換した物理アドレスをメモリ2に対して出力するものである。つまり、本実施の形態1に係るメモリ管理ユニット10が適用される情報処理装置は、パーソナルコンピュータ、ワークステーションまたは移動体通信端末など、仮想アドレスから物理アドレスへのアドレス変換をおこなうシステムである。
そして、本実施の形態1におけるアドレス空間は、例えば、第3図に示すように、仮想アドレス空間の上位半分が、アドレス変換された上で、メモリ2に割り当てられ(例えば、4Kbytesごとに割り当てられ)、仮想アドレス空間の下位半分が、アドレス変換されずに、検証情報用メモリ3に割り当てられることによって形成される。ただし、同図では、説明の便宜のために、仮想アドレス空間を上位と下位の半分に分けており、また、通常はアドレス変換されずにメモリ2上に置かれるOS(Operating System)を省略している。
なお、図1に示したシステムにおいては、メモリ2と検証情報用メモリ3とを別々に設けているが、特定のI/Oポートに値を出力することによって、メモリ2の一部が検証情報用メモリ3に置き換わるように(つまり、バンク切替形式として)、システムを構成するようにしてもよく、また、検証情報用メモリ3を、メモリ空間ではなくI/O空間に割り当てるように、構成してもよい。
また、本実施の形態1では、メモリ2の割り当て単位である単位メモリを、4Kbytes固定長のページとして説明しているが、この単位メモリを可変長にしてもよく、さらに、メモリ2全体を一つの単位メモリとしてもよい。
[実施の形態1:メモリ管理ユニットの構成]
次に、第1図に示したメモリ管理ユニット10の構成を説明する。第2図は、本実施の形態1に係るメモリ管理ユニット10の構成を示すブロック図である。同図に示すように、このメモリ管理ユニット10は、ページテーブル11と、アドレス変換部12と、実行/有効ビット設定部13と、検証鍵設定部14と、検証鍵保持部15と、検証部16とからなる。なお、検証鍵保持部15は、請求の範囲に記載の「検証鍵格納手段」に対応し、検証部16は、請求の範囲に記載の「検証手段」に対応し、実行/有効ビット設定部13は、請求の範囲に記載の「制御手段」に対応する。
このうち、ページテーブル11は、プロセッサ1によるコードの格納に際して、プロセッサ1に獲得される複数のエントリからなるテーブルである。そして、このエントリは、メモリ割り当ての単位である4Kbytesのページごとに用意され、第2図に示すように、始点仮想アドレス、始点物理アドレス、実行ビットおよび有効ビットからなる。
つまり、エントリとは、「始点物理アドレス」から始まる4Kbytesの物理ページが、「始点仮想アドレス」から始まる4Kbytesの仮想ページに対応付けられていることを示すものである。そして、「実行ビット」は、対応する物理/仮想ページに、データではなくコードが格納されいることを示し、また、「有効ビット」は、対応する物理/仮想ページが有効であることを示すものである。なお、ページは、固定長ではなく可変長であってもよいが、その場合には、エントリにサイズを表す情報を格納することとなる。
アドレス変換部12は、ページテーブル11にしたがって、仮想アドレスを物理アドレスに変換する処理部である。具体的には、プロセッサ1によるコードの実行に際して、プロセッサ1から入力された仮想アドレスに該当するエントリをページテーブル11から検索し、該当するエントリが存在する場合には、対応する物理アドレスに変換してメモリ2に対して出力し、一方、該当するエントリが存在しない場合には、プロセッサ1に対してアドレス変換例外を通知する。
なお、ページテーブル11の該当するエントリにおいて、実行ビットおよび有効ビットが設定されている場合には、対応する物理/仮想ページへのコード(機械語命令)フェッチのための読みだしのみを許可し、書き込みや、データアクセスのための読み書きは許可しないように動作する。
実行/有効ビット設定部13は、後述する検証部16による検証の結果に応じて、ページテーブル11の対応するエントリ内の実行ビットおよび有効ビットを設定する処理部である。具体的には、検証部16によってコードの正当性が検証された場合には、実行ビットおよび有効ビットが設定され(検証対象のコードが格納された物理/仮想ページが有効である旨が設定され)、プロセッサ1によるコードの実行が許可される。なお、検証部16によってコードの正当性が検証されなかった場合には、実行ビットおよび有効ビットは設定されず、プロセッサ1によるコードの実行は拒絶されることとなる。
検証鍵設定部14は、検証鍵保持部15に対して、メモリ管理ユニット10の外部から検証鍵の出し入れをおこなう処理部であり、検証鍵保持部15は、検証部16によるコードの検証に用いられる検証鍵を保持する記憶部であり、検証部17は、コードがメモリ2に格納されてプロセッサ1による実行が可能になった場合に、検証鍵保持部15に記憶された検証鍵および検証情報用メモリ3に格納された検証情報を用いて、コードの正当性を検証する処理部である。
つまり、検証部16は、ページテーブル11の所定のエントリについて、プロセッサ1から実行/有効ビットの設定指示を受けると、メモリ2の対応する物理ページ上のコードに付与されている検証情報を検証情報用メモリ3から読み出すとともに、このコードに対応する検証鍵を検証鍵保持部15から読み出し、この検証情報および検証鍵を用いて、正当性が保証された安全なコードである否かを検証する。なお、検証方式や検証鍵については、例えば、公開鍵技術に基づく電子署名や証明書に含まれる公開鍵など、コードが第三者によって改ざんされていないことを保証し得る、あらゆる手法を採用することができる。
そして、検証部16は、コードが正当である旨を検証した場合には、実行/有効ビット設定部13に対して、実行/有効ビットの設定を指示し、一方、コードが正当である旨が検証されなかった場合には、実行/有効ビット設定部13に対して実行/有効ビットの設定を指示することなく、プロセッサ1に対して例外を通知する。このようにして、プロセッサ1に例外が通知された場合には、プロセッサ1によるコードの実行は拒絶されることとなる。
なお、近年のシステムは、複数のタスク(プログラム)を見かけ上は並行して、すなわちマルチタスクで動作させる場合が多いが、このような場合には、タスクの切替時に、検証鍵設定部14の制御によって、検証鍵保持部15に格納されている検証鍵を、タスクに応じた検証鍵に入れ替えることとなる。
[実施の形態1:システムによる処理の手順]
次に、本実施の形態1におけるシステムによって実行される処理の手順を説明する。なお、ここでは、システムの処理として、プロセッサ1によってコードがメモリ2に格納されて、メモリ管理ユニット10によって実行/有効ビットが設定されるに至るまでの処理を説明する。
第4図は、本実施の形態1におけるシステムの処理を説明するためのフローチャートである。同図に示すように、まず最初に、プロセッサ1は、メモリ管理ユニット10のページテーブル11から未使用のエントリを獲得するとともに、メモリ2からは、未使用の物理ページを獲得する(ステップS401およびS402)。そして、プロセッサ1は、獲得したエントリに、始点仮想アドレスおよび始点物理アドレスを設定する(ステップS403)。
続いて、プロセッサ1は、ハードディスクなどのデータ記憶部(ディスク)からコードを読み込んで、このコードをステップS402において獲得した物理ページに格納するとともに、このコードに付与されている検証情報を検証情報用メモリ3に格納する(ステップS404およびS405)。そして、プロセッサ1は、メモリ管理ユニット10に対して、実行/有効ビットの設定を指示する(ステップS406)。
一方、かかる設定指示を受けたメモリ管理ユニット10は、設定指示に係るコードに対応する検証情報を、検証情報用メモリ3から読み込むとともに、この検証情報に対応する検証鍵を、検証鍵保持部15から読み込む(ステップS407およびS408)。そして、メモリ管理ユニット10の検証部16は、読み込んだ検証情報および検証鍵を用いて、設定指示に係るコードの正当性を検証する(ステップS409)。
この検証によって、コードが正当である旨が検証された場合には(ステップS410肯定)、検証部16は、実行/有効ビット設定部13に対して、実行/有効ビットの設定を指示し、実行/有効ビット設定部13は、検証対象のコードに関するページテーブル11内のエントリにおいて、実行ビットおよび有効ビットを設定する(ステップS411)。これによって、検証対象であるコードについて、プロセッサ1による実行が許可されることとなる。
これとは反対に、コードが正当である旨が検証されなかった場合には(ステップS410否定)、検証部16は、実行/有効ビット設定部13に対して実行/有効ビットの設定を指示することなく、プロセッサ1に対して例外を通知する(ステップS412)。これによって、検証対象であるコードについて、プロセッサ1による実行が拒絶されることとなる。
上述してきたように、本実施の形態1によれば、メモリ管理ユニット10は、コードの正当性を検証するために用いられる検証鍵を検証鍵保持部15に格納する。そして、コードがメモリ2に格納されてプロセッサ1による実行が可能になった場合に、検証鍵保持部15に格納された検証鍵およびコードに付与された検証情報(検証情報用メモリ3に格納された検証情報)を用いて、コードの正当性を検証し、正当性が検証された場合には、メモリ2が有効である旨を設定し、正当性が検証されなかった場合には、メモリ2が有効である旨を設定しないように制御する。したがって、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
(実施の形態2)
ところで、上記した実施の形態1では、プロセッサ1から入力された仮想アドレスを物理アドレスに変換してメモリ2に対して出力するメモリ管理ユニット10を説明したが、本発明はこれに限定されるものではなく、プロセッサ1から入力された仮想アドレスを変換することなく、物理アドレスとしてメモリ2に対して出力するメモリ管理ユニットについても、同様に適用することができる。
つまり、上記実施の形態1では、パーソナルコンピュータ、ワークステーションまたは移動体通信端末など、仮想アドレスから物理アドレスへのアドレス変換をおこなう情報処理装置に適用されるメモリ管理ユニット10を説明したが、PHS端末、携帯端末またはPDAなど、仮想アドレスから物理アドレスへのアドレス変換をおこなわない情報処理装置についても、同様に適用することができる。
そこで、本実施の形態2では、仮想アドレスから物理アドレスへのアドレス変換をおこなわないシステムについて適用されるメモリ管理ユニットを説明する。第5図は、本実施の形態2に係るメモリ管理ユニットの構成を示すブロック図であり、第6図は、本実施の形態2におけるアドレス空間を説明するための図である。なお、上記実施の形態1に示した各部と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
本実施の形態2に係るメモリ管理ユニット20は、上記したように、プロセッサ1から入力された仮想アドレスを変換することなく、物理アドレスとしてメモリ2に対して出力するものである。すなわち、第6図に示すように、本実施の形態2におけるアドレス空間は、第2図に示した実施の形態2におけるアドレス空間と相違し、仮想アドレスと物理アドレスとが一致している。
また、メモリ管理ユニット20は、第5図に示すように、仮想アドレスを物理アドレスに変換する処理部(第2図に示したアドレス変換部12)が存在せず、ページテーブル21の各エントリにおいても、始点仮想アドレスが存在せず、始点物理アドレスのみが存在する。なお、ページテーブル21内のエントリは、物理ページの個数分だけ存在することとなる。
したがって、このメモリ管理ユニット20は、プロセッサ1によるコードの実行に際して、プロセッサ1から入力された仮想アドレスを、メモリ2上のアドレスである物理アドレスとして、メモリ2に対して出力することとなる。なお、このメモリ管理ユニット20による検証処理は、第4図に示したメモリ管理ユニット10による処理(同図ステップS407〜S412)と同様である。
このように、本実施の形態2に係るメモリ管理ユニット20によれば、PHS端末、携帯端末またはPDAなど、仮想アドレスから物理アドレスへのアドレス変換をおこなわない情報処理装置についても、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
(実施の形態3)
ところで、上記した実施の形態1および2では、コードの実行前にコードの正当性を検証するメモリ管理ユニット10または20によって、コードの正当性を簡単かつ確実に保証する場合を説明したが、あらかじめ暗号化されたコードを実行前に復号することによっても、実施の形態1および2と同様に、コードの正当性を簡単かつ確実に保証することができる。
そこで、本実施の形態3では、あらかじめ暗号化されたコードを実行前に復号することによって、コードの正当性を簡単かつ確実に保証するメモリ管理ユニットを説明する。なお、ここでは、本実施の形態3に係るメモリ管理ユニットが適用されるシステムの概要および主たる特徴とを説明した後に、メモリ管理ユニットの構成を説明し、最後に、このシステムによる処理の手順を説明することとする。
[実施の形態3:システムの概要および主たる特徴]
まず最初に、本実施の形態3に係るメモリ管理ユニットが適用されるシステムの概要および主たる特徴とを説明する。第7図は、本実施の形態3に係るメモリ管理ユニットが適用されるシステムの構成を示すブロック図である。同図に示すように、このシステムは、プロセッサ1と、メモリ2との間に、メモリ管理ユニット30を設け、これらをアドレスバス4およびデータバス5によって接続して構成される。なお、上記実施の形態1に示した各部と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
この第7図に示したシステムは、概略的には、第1図に示したシステムと同様、メモリ2に格納されたコードをプロセッサ1によって実行するものであるが、第1図に示したシステムに比較して、検証情報用メモリ3が存在しない点と、同図に示したメモリ管理ユニット10とは機能が異なるメモリ管理ユニット30を備える点とが相違する。つまり、本実施の形態3では、コードがあらかじめ暗号化されており、メモリ管理ユニット30が、あらかじめ暗号化されたコードを復号することによって、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することができるようにしている点に、主たる特徴がある。
この主たる特徴を簡単に説明すると、メモリ管理ユニット30は、暗号化されたコードを復号するための復号鍵をあらかじめ記憶し、プロセッサ1がメモリ2に暗号化されたコードを格納した場合には、この格納されたコードについて復号鍵による復号を試行する。そして、この復号されたコードをメモリ2に再格納するとともに、メモリ2が有効である旨を設定することによって、プロセッサ1によるコードの実行を許可する。なお、暗号化されたコードが復号されなかった場合には、メモリ2が有効である旨を設定されず、プロセッサ1によるコードの実行は拒絶されることとなる。
このため、コードの実行直前である水際(つまり、仮想ページから物理ページへのアドレス変換を有効とするタイミング)において、悪意の第三者にとっては手が届かないハードウェアであるメモリ管理ユニット30によって、暗号化されたコードが復号されるので、復号されたコードについては、正当性が担保されたコード(インストール前あるいはインストール後における悪意の第三者による改ざんがなかったコード)として実行することができる。また、このような復号機能を有するメモリ管理ユニット30は、プロセッサ1やメモリ2のアーキテクチャを変更する必要がないので、復号機能を有するプロセッサ1やメモリ2を開発することに比較して、簡単に開発することができる。
このようなことから、本実施の形態3に係るメモリ管理ユニット30によれば、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することができるという上記した主たる特徴が、実施の形態1および2に係るメモリ管理ユニット30と同様に発揮されることとなる。
なお、本実施の形態3にメモリ管理ユニット30は、上記実施の形態1に係るメモリ管理ユニット10と同様、プロセッサ1から入力された仮想アドレスを物理アドレスに変換してメモリ2に対して出力するものである。つまり、このメモリ管理ユニット30は、パーソナルコンピュータ、ワークステーションまたは移動体通信端末など、仮想アドレスから物理アドレスへのアドレス変換をおこなう情報処理装置に適用され、本実施の形態3におけるアドレス空間は、第3図に示したものと同様になる。
[実施の形態3:メモリ管理ユニットの構成]
次に、第7図に示したメモリ管理ユニット30の構成を説明する。第8図は、本実施の形態3に係るメモリ管理ユニット30の構成を示すブロック図である。同図に示すように、このメモリ管理ユニット30は、ページテーブル31と、アドレス変換部32と、実行/有効ビット設定部33と、復号鍵設定部34と、復号鍵保持部35と、復号部36とからなる。なお、復号鍵保持部35は、請求の範囲に記載の「復号鍵格納手段」に対応し、復号部36は、請求の範囲に記載の「復号手段」に対応し、実行/有効ビット設定部33は、請求の範囲に記載の「制御手段」に対応する。
このうち、ページテーブル31およびアドレス変換部32は、上記実施の形態1で説明したページテーブル11およびアドレス変換部12と、それぞれ同様の機能を果たすものである。
実行/有効ビット設定部33も、上記実施の形態1で説明した実行/有効ビット設定部33と、ほぼ同様の機能を果たすものであるが、復号部36の処理に応じて、ページテーブル31の対応するエントリ内の実行ビットおよび有効ビットを設定する点が異なる。すなわち、実行/有効ビット設定部33は、復号部36によってコードが復号され、復号されたコードがメモリ2に再格納されると、ページテーブル31の対応するエントリ内の実行ビットおよび有効ビットを設定する(復号されたコードが格納された物理/仮想ページが有効である旨を設定する)。
復号鍵設定部34は、復号鍵保持部35に対して、メモリ管理ユニット10の外部から復号鍵の出し入れをおこなう処理部であり、復号鍵保持部35は、暗号化されたコードの復号に用いられる復号鍵を保持する記憶部であり、復号部37は、暗号化されたコードがメモリ2に格納された場合に、復号鍵保持部35に記憶された復号鍵を用いて、暗号化されたコードを復号する処理部である。
つまり、復号部37は、ページテーブル31の所定のエントリについて、プロセッサ1から実行/有効ビットの設定指示を受けると、メモリ2の対応する物理ページ上の暗号化されたコードを読み出すとともに、このコードに対応する復号鍵を復号鍵保持部35から読み出し、暗号化されたコードを復号鍵を用いて復号する。なお、暗号化および復号化の方式については、例えば、いわゆる共通鍵暗号方式、公開鍵暗号方式など、任意の手法を採用することができる。
そして、復号部36は、コードを復号した場合には、復号したコードをメモリ2に再格納するとともに、実行/有効ビット設定部33に対して、実行/有効ビットの設定を指示する。
なお、近年のシステムは、複数のタスク(プログラム)を見かけ上は並行して、すなわちマルチタスクで動作させる場合が多いが、このような場合には、タスクの切替時に、公開鍵設定部34の制御によって、公開鍵保持部35に格納されている公開鍵を、タスクに応じた公開鍵に入れ替えることとなる。
[実施の形態3:システムによる処理の手順]
次に、本実施の形態3におけるシステムによって実行される処理の手順を説明する。なお、ここでは、システムの処理として、暗号化されたコードがプロセッサ1によってメモリ2に格納されて、メモリ管理ユニット30によって実行/有効ビットが設定されるに至るまでの処理を説明する。
第9図は、本実施の形態3におけるシステムの処理を説明するためのフローチャートである。同図に示すように、まず最初に、プロセッサ1は、メモリ管理ユニット30のページテーブル31から未使用のエントリを獲得するとともに、メモリ2からは、未使用の物理ページを獲得する(ステップS901およびS902)。そして、プロセッサ1は、獲得したエントリに、始点仮想アドレスおよび始点物理アドレスを設定する(ステップS903)。
続いて、プロセッサ1は、ハードディスクなどのデータ記憶部(ディスク)から暗号化されたコードを読み込んで、この暗号化されたコードをステップS902において獲得した物理ページに格納する(ステップS904)。そして、プロセッサ1は、メモリ管理ユニット30に対して、実行/有効ビットの設定を指示する(ステップS905)。
一方、かかる設定指示を受けたメモリ管理ユニット30は、設定指示に係るコードに対応するメモリ2上の物理ページから、暗号化されたコードを読み込むとともに、このコードに対応する復号鍵を、復号鍵保持部35から読み込む(ステップS906およびS907)。そして、メモリ管理ユニット30の復号部36は、暗号化されているコードを復号鍵を用いて復号する(ステップS908)。
続いて、メモリ管理ユニット30の復号部36は、復号したコードをメモリ2に再格納するとともに、実行/有効ビット設定部33に対して、実行/有効ビットの設定を指示し(ステップS909)、実行/有効ビット設定部33は、復号対象のコードに関するページテーブル31内のエントリにおいて、実行ビットおよび有効ビットを設定する(ステップS910)。これによって、復号対象であるコードについて、プロセッサ1による実行が許可されることとなる。
上述してきたように、本実施の形態3によれば、メモリ管理ユニット30は、暗号化されたコードを復号するために用いられる復号鍵を復号鍵保持部35に格納する。そして、暗号化されたコードがプロセッサ1によってメモリ2に格納された場合に、メモリ2から暗号化されたコードを読み出し、復号鍵保持部35に格納された復号鍵を用いて復号してメモリ2に再格納し、さらに、復号されたコードが再格納されたメモリ2が有効である旨を設定する。したがって、上記した実施の形態1および2と同様に、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
(実施の形態4)
ところで、上記した実施の形態3では、プロセッサ1から入力された仮想アドレスを物理アドレスに変換してメモリ2に対して出力するメモリ管理ユニット30を説明したが、本発明はこれに限定されるものではなく、プロセッサ1から入力された仮想アドレスを変換することなく、物理アドレスとしてメモリ2に対して出力するメモリ管理ユニットについても、同様に適用することができる。つまり、上記本実施の形態2と同様、PHS端末、携帯端末またはPDAなど、仮想アドレスから物理アドレスへのアドレス変換をおこなわない情報処理装置についても、同様に適用することができる。
そこで、本実施の形態4では、仮想アドレスから物理アドレスへのアドレス変換をおこなわないシステムについて適用されるメモリ管理ユニットであって、上記実施の形態3と同様の効果を発揮するメモリ管理ユニットを説明する。第10図は、本実施の形態4に係るメモリ管理ユニットの構成を示すブロック図である。なお、上記実施の形態3に示した各部と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
本実施の形態4に係るメモリ管理ユニット40は、上記したように、プロセッサ1から入力された仮想アドレスを変換することなく、物理アドレスとしてメモリ2に対して出力するものである。すなわち、第6図に示したものと同様、本実施の形態4におけるアドレス空間は、仮想アドレスと物理アドレスとが一致したものとなる。
また、メモリ管理ユニット40は、第10図に示すように、仮想アドレスを物理アドレスに変換する処理部(第8図に示したアドレス変換部32)が存在せず、ページテーブル41の各エントリにおいても、始点仮想アドレスが存在せず、始点物理アドレスのみが存在する。なお、ページテーブル41内のエントリは、物理ページの個数分だけ存在することとなる。
したがって、このメモリ管理ユニット40は、上記した実施の形態2に係るメモリ管理ユニット20と同様、プロセッサ1によるコードの実行に際して、プロセッサ1から入力された仮想アドレスを、メモリ2上のアドレスである物理アドレスとして、メモリ2に対して出力することとなる。なお、このメモリ管理ユニット40による復号処理は、第9図に示したメモリ管理ユニット30(実施の形態3に係るメモリ管理ユニット30)による処理(同図ステップS906〜S910)と同様である。
このように、本実施の形態4に係るメモリ管理ユニット40によれば、PHS端末、携帯端末またはPDAなど、仮想アドレスから物理アドレスへのアドレス変換をおこなわない情報処理装置についても、上記した実施の形態3と同様に、プロセッサ1やメモリ2のアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能になる。
(他の実施の形態)
さて、これまで本発明の実施の形態について説明したが、本発明は上述した実施の形態以外にも、請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてもよいものである。
例えば、本実施の形態1および2では、メモリ管理ユニット10または20に検証機能を追加した場合を説明したが、本発明はこれに限定されるものではなく、検証機能のみを担うハードウェア(請求の範囲に記載の「コード検証装置」に対応する。)をメモリ管理ユニット10または20とは別個に設け、かかるハードウェアが、メモリ管理ユニット10または20の動作と協働して、コードの検証をおこなうようにしてもよい。
同様に、本実施の形態3および4では、メモリ管理ユニット30または40に復号機能を追加した場合を説明したが、本発明はこれに限定されるものではなく、復号機能のみを担うハードウェア(請求の範囲に記載の「コード復号装置」に対応する。)をメモリ管理ユニット30または40とは別個に設け、かかるハードウェアが、メモリ管理ユニット30または40の動作と協働して、コードの検証をおこなうようにしてもよい。
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。同様に、各種の入力用画面の内容についても、任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
以上説明したように、本発明によれば、インストール前あるいはインストール後に悪意の第三者によって改ざんされたために、安全性に問題があるコードについては、コードの実行直前である水際(つまり、仮想ページから物理ページへのアドレス変換を有効とするタイミング)において、悪意の第三者にとっては手が届かないハードウェアであるメモリ管理ユニットによって、コードが正当でない旨が確実に検証されるので、プロセッサによる実行を回避することができる。また、このような検証機能を有するメモリ管理ユニットは、プロセッサやメモリのアーキテクチャを変更する必要がないので、検証機能を有するプロセッサやメモリを開発することに比較して、簡単に開発することができる。したがって、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能なメモリ管理ユニットが得られるという効果を奏する。
また、本発明によれば、コードの実行直前である水際において、悪意の第三者にとっては手が届かないハードウェアであるメモリ管理ユニットによって、暗号化されたコードが復号されるので、復号されたコードについては、正当性が担保されたコード(インストール前あるいはインストール後における悪意の第三者による改ざんがなかったコード)として実行することができる。また、このような復号機能を有するメモリ管理ユニットは、プロセッサやメモリのアーキテクチャを変更する必要がないので、復号機能を有するプロセッサやメモリを開発することに比較して、簡単に開発することができる。したがって、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能なメモリ管理ユニットが得られるという効果を奏する。
また、本発明によれば、パーソナルコンピュータ、ワークステーションまたは移動体通信端末など、仮想アドレスから物理アドレスへのアドレス変換をおこなう情報処理装置に適用して、かかる情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能なメモリ管理ユニットが得られるという効果を奏する。
また、本発明によれば、PHS端末、携帯端末またはPDAなど、仮想アドレスから物理アドレスへのアドレス変換をおこなわない情報処理装置に適用して、かかる情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能なメモリ管理ユニットが得られるという効果を奏する。
また、本発明によれば、情報処理装置上で基本ソフトとして実行される極めて重要なコードについて、プロセッサやメモリのアーキテクチャを変更することなく、正当性を簡単かつ確実に保証することが可能なメモリ管理ユニットが得られるという効果を奏する。
また、本発明によれば、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能なコード検証装置が得られるという効果を奏する。
また、本発明によれば、プロセッサやメモリのアーキテクチャを変更することなく、情報処理装置上で実行されるコードの正当性を簡単かつ確実に保証することが可能なコード復号装置が得られるという効果を奏する。
産業上の利用可能性
以上のように、本発明に係るメモリ管理ユニット、コード検証装置およびコード復号装置は、パーソナルコンピュータ、ワークステーション、PHS端末、携帯端末、移動体通信端末またはPDAなど、プロセッサによって実行されるコードの正当性を保証する必要がある情報処理装置に適する。
【図面の簡単な説明】
第1図は、本実施の形態1に係るメモリ管理ユニットが適用されるシステムの構成を示すブロック図であり、第2図は、本実施の形態1に係るメモリ管理ユニットの構成を示すブロック図であり、第3図は、本実施の形態1におけるアドレス空間を説明するための図であり、第4図は、本実施の形態1におけるシステムの処理を説明するためのフローチャートであり、第5図は、本実施の形態2に係るメモリ管理ユニットの構成を示すブロック図であり、第6図は、本実施の形態2におけるアドレス空間を説明するための図であり、第7図は、本実施の形態3に係るメモリ管理ユニットが適用されるシステムの構成を示すブロック図であり、第8図は、本実施の形態3に係るメモリ管理ユニットの構成を示すブロック図であり、第9図は、本実施の形態3におけるシステムの処理を説明するためのフローチャートであり、第10図は、本実施の形態4に係るメモリ管理ユニットの構成を示すブロック図である。
Claims (7)
- コードが格納されるメモリを管理して、前記コードをプロセッサによって実行させるために、当該実行対象となるコードが記憶されているメモリが有効である旨を設定するメモリ管理ユニットであって、
前記コードの正当性を検証するために用いられる検証鍵を格納する検証鍵格納手段と、
前記コードが前記メモリに格納されて前記プロセッサによる実行が可能になった場合に、前記検証鍵格納手段によって格納された検証鍵および前記コードに付与された検証情報を用いて、前記コードの正当性を検証する検証手段と、
前記検証手段によって正当性が検証された場合には、前記メモリが有効である旨を設定し、前記検証手段によって正当性が検証されなかった場合には、前記メモリが有効である旨を設定しないように制御する制御手段と、
を備えたことを特徴とするメモリ管理ユニット。 - コードが格納されるメモリを管理して、前記コードをプロセッサによって実行させるために、当該実行対象となるコードが記憶されているメモリが有効である旨を設定するメモリ管理ユニットであって、
暗号化されたコードを復号するために用いられる復号鍵を格納する復号鍵格納手段と、
前記暗号化されたコードが前記メモリに格納された場合に、当該メモリから前記暗号化されたコードを読み出し、前記復号鍵格納手段によって格納された復号鍵を用いて復号して、前記メモリに再格納する復号手段と、
前記復号手段によって復号されたコードが再格納された前記メモリが有効である旨を設定する制御手段と、
を備えたことを特徴とするメモリ管理ユニット。 - 前記メモリ管理ユニットは、前記プロセッサによるコードの実行に際して、当該プロセッサから入力された仮想アドレスを、前記メモリ上のアドレスである物理アドレスに変換して、当該変換した物理アドレスを前記メモリに対して出力するものであることを特徴とする請求の範囲第1項または第2項に記載のメモリ管理ユニット。
- 前記メモリ管理ユニットは、前記プロセッサによるコードの実行に際して、当該プロセッサから入力された仮想アドレスを、前記メモリ上のアドレスである物理アドレスとして、前記メモリに対して出力するものであることを特徴とする請求の範囲第1項または第2項に記載のメモリ管理ユニット。
- 前記コードは、機械語によって記述され、前記プロセッサとしてのCPUによって解釈されて実行されるプログラムであることを特徴とする請求の範囲第1項または第2項に記載のメモリ管理ユニット。
- メモリに格納されてプロセッサによって実行されるコードの正当性を、当該コードに付与された検証情報に基づいて検証するコード検証装置であって、
前記コードの正当性を検証するために前記検証情報に対応して用いられる検証鍵を格納する検証鍵格納手段と、
前記コードが前記メモリに格納されて前記プロセッサによる実行が可能になった場合に、前記検証鍵格納手段によって格納された検証鍵および前記コードに付与された検証情報を用いて、前記コードの正当性を検証する検証手段と、
前記検証手段によって正当性が検証された場合には、前記プロセッサによる前記コードの実行を許可し、前記検証手段によって正当性が検証されなかった場合には、前記プロセッサによる前記コードの実行を拒絶する制御手段と、
を備えたことを特徴とするコード検証装置。 - メモリに格納されている暗号化されたコードを、プロセッサによって実行させるために復号するコード復号装置であって、
前記暗号化されたコードを復号するために用いられる復号鍵を格納する復号鍵格納手段と、
前記暗号化されたコードが前記メモリに格納された場合に、当該メモリから前記暗号化されたコードを読み出し、前記復号鍵格納手段によって格納された復号鍵を用いて復号して、前記メモリに再格納する復号手段と、
前記復号手段によって復号されて前記メモリに再格納されたコードを実行するように前記プロセッサを制御する制御手段と、
を備えたことを特徴とするコード復号装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/005564 WO2003104948A1 (ja) | 2002-06-05 | 2002-06-05 | メモリ管理ユニット、コード検証装置およびコード復号装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2003104948A1 true JPWO2003104948A1 (ja) | 2005-10-13 |
JP4074620B2 JP4074620B2 (ja) | 2008-04-09 |
Family
ID=29727315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004511956A Expired - Fee Related JP4074620B2 (ja) | 2002-06-05 | 2002-06-05 | メモリ管理ユニット |
Country Status (7)
Country | Link |
---|---|
US (1) | US7908450B2 (ja) |
EP (1) | EP1510899B1 (ja) |
JP (1) | JP4074620B2 (ja) |
KR (1) | KR100619657B1 (ja) |
CN (1) | CN1296790C (ja) |
AU (1) | AU2002306257A1 (ja) |
WO (1) | WO2003104948A1 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2849233B1 (fr) * | 2002-12-24 | 2005-05-20 | Trusted Logic | Procede de securisation des systemes informatiques par confinement logiciel |
US7444523B2 (en) * | 2004-08-27 | 2008-10-28 | Microsoft Corporation | System and method for using address bits to signal security attributes of data in the address space |
US7350040B2 (en) * | 2005-03-03 | 2008-03-25 | Microsoft Corporation | Method and system for securing metadata to detect unauthorized access |
WO2007004219A2 (en) * | 2005-07-04 | 2007-01-11 | Discretix Technologies Ltd. | System, device and method of verifying that a code is executed by a processor |
US20070083770A1 (en) * | 2005-09-17 | 2007-04-12 | Technology Group Northwest Inc. | System and method for foiling code-injection attacks in a computing device |
US7657754B2 (en) * | 2005-12-08 | 2010-02-02 | Agere Systems Inc | Methods and apparatus for the secure handling of data in a microcontroller |
KR100969758B1 (ko) * | 2007-01-22 | 2010-07-13 | 삼성전자주식회사 | 플래시 변환 레이어에서 데이터를 암호화하여 처리하기위한 방법 및 장치 |
US20090031142A1 (en) * | 2007-07-25 | 2009-01-29 | Shai Halevi | System, Method and Computer Program Product for Processing a Memory Page |
US8438385B2 (en) * | 2008-03-13 | 2013-05-07 | Fujitsu Limited | Method and apparatus for identity verification |
JP5374751B2 (ja) * | 2008-07-31 | 2013-12-25 | 株式会社ハイパーテック | メモリ管理方法 |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
TWI566564B (zh) * | 2012-04-25 | 2017-01-11 | Samton International Development Technology Co Ltd | Virtual reality authentication circuit, system and electronic consumption method |
US9715591B2 (en) | 2012-07-30 | 2017-07-25 | Hewlett-Packard Development Company, L.P. | Code validation |
CN102999663B (zh) * | 2012-11-19 | 2015-04-15 | 福州瑞芯微电子有限公司 | 一种soc芯片中的mmu的验证方法 |
JP6584823B2 (ja) | 2014-06-20 | 2019-10-02 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
JP6162652B2 (ja) | 2014-06-20 | 2017-07-12 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
JP6181004B2 (ja) | 2014-06-20 | 2017-08-16 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
US10303621B1 (en) * | 2017-03-07 | 2019-05-28 | Amazon Technologies, Inc. | Data protection through address modification |
JP2020027341A (ja) | 2018-08-09 | 2020-02-20 | キオクシア株式会社 | ストレージ装置およびデータ改ざん検証方法 |
US11748271B2 (en) * | 2020-04-15 | 2023-09-05 | Micron Technology, Inc. | Data security for memory and computing systems |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847902A (en) * | 1984-02-10 | 1989-07-11 | Prime Computer, Inc. | Digital computer system for executing encrypted programs |
JP3585510B2 (ja) * | 1993-07-20 | 2004-11-04 | 株式会社東芝 | プログラム実行管理装置及びプログラム実行管理方法 |
US5892944A (en) * | 1993-07-20 | 1999-04-06 | Kabushiki Kaisha Toshiba | Program execution and operation right management system suitable for single virtual memory scheme |
US5757919A (en) | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
GB9626241D0 (en) * | 1996-12-18 | 1997-02-05 | Ncr Int Inc | Secure data processing method and system |
JP3072722B2 (ja) * | 1997-06-20 | 2000-08-07 | ソニー株式会社 | フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体 |
JP3593241B2 (ja) * | 1997-07-02 | 2004-11-24 | 株式会社日立製作所 | 計算機の再起動方法 |
US5974536A (en) * | 1997-08-14 | 1999-10-26 | Silicon Graphics, Inc. | Method, system and computer program product for profiling thread virtual memory accesses |
US6003117A (en) * | 1997-10-08 | 1999-12-14 | Vlsi Technology, Inc. | Secure memory management unit which utilizes a system processor to perform page swapping |
JP3713141B2 (ja) * | 1998-05-19 | 2005-11-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの不正実行防止方法 |
JP4051510B2 (ja) * | 1998-07-16 | 2008-02-27 | ソニー株式会社 | データ記憶装置およびデータ記憶方法 |
US6651171B1 (en) * | 1999-04-06 | 2003-11-18 | Microsoft Corporation | Secure execution of program code |
US6745306B1 (en) * | 1999-07-29 | 2004-06-01 | Microsoft Corporation | Method and system for restricting the load of physical address translations of virtual addresses |
JP3801833B2 (ja) * | 2000-02-14 | 2006-07-26 | 株式会社東芝 | マイクロプロセッサ |
US6983374B2 (en) | 2000-02-14 | 2006-01-03 | Kabushiki Kaisha Toshiba | Tamper resistant microprocessor |
US6473844B1 (en) * | 2000-04-29 | 2002-10-29 | Hewlett-Packard Company | System and method to protect vital memory space from non-malicious writes in a multi domain system |
US7136982B2 (en) * | 2001-11-09 | 2006-11-14 | Danger, Inc. | Apparatus and method for allocating memory blocks |
US7080220B2 (en) * | 2003-07-03 | 2006-07-18 | International Business Machines Corporation | Page replacement with a re-reference indicator |
-
2002
- 2002-06-05 KR KR1020047015085A patent/KR100619657B1/ko not_active IP Right Cessation
- 2002-06-05 JP JP2004511956A patent/JP4074620B2/ja not_active Expired - Fee Related
- 2002-06-05 WO PCT/JP2002/005564 patent/WO2003104948A1/ja active Application Filing
- 2002-06-05 EP EP02733323A patent/EP1510899B1/en not_active Expired - Lifetime
- 2002-06-05 CN CNB028287525A patent/CN1296790C/zh not_active Expired - Fee Related
- 2002-06-05 AU AU2002306257A patent/AU2002306257A1/en not_active Abandoned
-
2004
- 2004-09-14 US US10/939,342 patent/US7908450B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2003104948A1 (ja) | 2003-12-18 |
JP4074620B2 (ja) | 2008-04-09 |
EP1510899A4 (en) | 2007-06-27 |
KR100619657B1 (ko) | 2006-09-08 |
CN1296790C (zh) | 2007-01-24 |
EP1510899B1 (en) | 2011-12-07 |
CN1625725A (zh) | 2005-06-08 |
US20050033973A1 (en) | 2005-02-10 |
AU2002306257A1 (en) | 2003-12-22 |
US7908450B2 (en) | 2011-03-15 |
KR20040105794A (ko) | 2004-12-16 |
EP1510899A1 (en) | 2005-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4074620B2 (ja) | メモリ管理ユニット | |
US8886959B2 (en) | Secure processor and a program for a secure processor | |
JP5175856B2 (ja) | セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法 | |
JP5647360B2 (ja) | メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法 | |
CN110659244A (zh) | 内联编码能力 | |
JP4850830B2 (ja) | コンピュータシステム及びプログラム生成装置 | |
CN114826582A (zh) | 用于在公共云环境中保护消费者数据的装置与方法 | |
US7610488B2 (en) | Data processing device and method and program of same | |
CN110990820B (zh) | 税盘授权方法、装置、电子设备及存储介质 | |
CN111201553B (zh) | 一种安全元件及相关设备 | |
WO2011134207A1 (zh) | 软件保护方法 | |
US12101393B2 (en) | Providing access to a hardware resource based on a canary value | |
JP4591163B2 (ja) | バスアクセス制御装置 | |
US7664953B2 (en) | Data processing device, method of same, and program of same | |
CN107688756B (zh) | 硬盘控制方法、设备及可读存储介质 | |
CN104809414B (zh) | 一种防止冷启动攻击的u盘加密密钥存放方法 | |
KR100838671B1 (ko) | 암호코드 대조기능을 갖는 휴대형 정보처리 장치 | |
JP2007109053A (ja) | バスアクセス制御装置 | |
CN110516468B (zh) | 一种虚拟机内存快照加密的方法和装置 | |
TW201918925A (zh) | 資料存取裝置及方法 | |
US20040111626A1 (en) | Security processing of unlimited data size | |
JP6069120B2 (ja) | 情報処理システム | |
CN116318658A (zh) | 信任域扩展媒介的密钥验证方法、装置、电子设备及介质 | |
JP2008102943A (ja) | データ処理装置およびその方法とプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071109 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080125 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110201 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110201 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120201 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130201 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140201 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |