(57)【要約】【課題】暗号化プログラムの耐タンパ性を向上できるようにする。【解決手段】ＨＤＤ１は、実行時にプロセスアドレス空間に配置される、暗号化プログラム１１を含む各種プログラムを格納する。プロセスアドレス空間に配置されたプログラムはページ単位にメモリ３にロードされる。仮想メモリ管理（ＶＭＭ）モジュール３２０は、プロセスアドレス空間とメモリ３のアドレス空間としての実メモリ空間との間のページ単位のマッピングを管理する。仮想メモリ管理モジュール３２０のセグメント管理部３２１は、プロセスアドレス空間に配置された実行すべきプログラムが暗号化されているかをセグメント単位で管理すると共に、プロセスアドレス空間のセグメント毎に当該セグメントに割り当て可能な実メモリ空間のページ数の上限を表す制限値を設定する。【選択図】      図１
2007122391.tif 000002
【特許請求の範囲】
【請求項１】
暗号化プログラムを復号して実行する情報処理装置において、
実行時にプロセスアドレス空間に配置される、暗号化プログラムを含む各種プログラムを格納するストレージ装置と、
前記プロセスアドレス空間に配置されたプログラムがページ単位にロードされるメモリと、
前記メモリにロードされたプログラムを実行するＣＰＵと、
前記プロセスアドレス空間と前記メモリのアドレス空間としての実メモリ空間との間のページ単位のマッピングを管理する仮想メモリ管理モジュールであって、前記プロセスアドレス空間に配置された実行すべきプログラムが暗号化されているかをセグメント単位で管理すると共に、前記プロセスアドレス空間のセグメント毎に当該セグメントに割り当て可能な前記実メモリ空間のページ数の上限を表す制限値を設定するセグメント管理手段を含む仮想メモリ管理モジュールと
を具備することを特徴とする情報処理装置。
【請求項２】
前記仮想メモリ管理モジュールは、前記プロセスアドレス空間に配置されたプログラムの実行のために当該プロセスアドレス空間内の目的のページがアクセスされた結果ページフォールトが発生した場合、前記目的のページが属するセグメントに割り当てられる前記実メモリ空間のページ数が前記セグメント管理手段によって設定されている前記制限値を超えないように、前記目的のページに前記実メモリ空間のページを割り当てるメモリ割り当てを実行し、当該割り当てられたページに前記目的のページの内容をロードするページフォールト処理手段を含むことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記仮想メモリ管理モジュールは、前記目的のページに前記実メモリ空間のページが割り当てられたならば、前記目的のページが属するセグメントに割り当てられる前記実メモリ空間のページ数が前記制限値を超えるかを判定する制限判定手段を更に含み、
前記ページフォールト処理手段は、前記目的のページが属するセグメントに割り当てられる前記実メモリ空間のページ数が前記制限値を超えると前記制限判定手段によって判定された場合、前記目的のページが属するセグメントにおいて前記制限値を超える既にメモリ割り当て済みの前記プロセスアドレス空間のページの内容を前記実メモリ空間から消去する消去手段を含む
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記仮想メモリ管理モジュールは、前記目的のページに前記実メモリ空間のページが割り当てられたならば、前記目的のページが属するセグメントに割り当てられる前記実メモリ空間のページ数が前記制限値を超えるかを判定する制限判定手段を更に含み、
前記ページフォールト処理手段は、前記目的のページが属するセグメントに割り当てられる前記実メモリ空間のページ数が前記制限値を超えると前記制限判定手段によって判定された場合、前記目的のページが属するセグメントにおいて前記制限値を超える既にメモリ割り当て済みの前記プロセスアドレス空間のページの内容がロードされている当該実メモリ空間のページを、前記目的のページに割り当てる割り当て手段を含む
ことを特徴とする請求項２記載の情報処理装置。
【請求項５】
前記ページフォールト処理手段は、
前記プロセスアドレス空間に配置された実行すべきプログラムのうち、前記目的のページが属するセグメントに配置されたプログラム部分が暗号化されているかを判定する暗号化判定手段と、
前記目的のページが属するセグメントに配置されたプログラム部分が暗号化されている場合、前記割り当てられたページにロードされたプログラム部分を復号する復号手段と
を含むことを特徴とする請求項２記載の情報処理装置。
【請求項６】
実行時にプロセスアドレス空間に配置される、暗号化プログラムを含む各種プログラムを格納するストレージ装置を備え、前記プロセスアドレス空間に配置されたプログラムがページ単位にメモリにロードされることにより、当該メモリにロードされたプログラムが実行される情報処理装置に適用されるメモリ管理方法であって、
前記プロセスアドレス空間に配置された実行すべきプログラムが暗号化されているかをセグメント単位で指定するフラグ及び前記プロセスアドレス空間のセグメント毎に当該セグメントに割り当て可能な前記実メモリ空間のページ数の上限を表す制限値が設定されたプロセスアドレス空間管理構造体を生成するステップと、
前記プロセスアドレス空間に配置されたプログラムの実行のために当該プロセスアドレス空間内の目的のページがアクセスされた結果ページフォールトが発生した場合、前記目的のページが属するセグメントに割り当てられる前記実メモリ空間のページ数が前記セグメント管理手段によって設定されている前記制限値を超えないように、前記目的のページに前記実メモリ空間のページを割り当てて、当該割り当てられたページに前記目的のページの内容をロードするステップと、
前記目的のページが属するセグメントに配置されたプログラム部分が暗号化されていることが前記プロセスアドレス空間管理構造体によって指定されている場合、前記割り当てられたページにロードされたプログラム部分を復号するステップと
を具備することを特徴とするメモリ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置に格納された暗号化プログラムを復号して実行するのに好適な情報処理装置及びメモリ管理方法に関する。
【背景技術】
【０００２】
最近、情報処理装置（電子装置）で実行されるプログラムとして、暗号化されたプログラム（暗号化プログラム）が用いられることがある。この暗号化プログラムは、暗号化されていない通常のプログラム（つまり非暗号化プログラム）と同様に、ハードディスクドライブのようなストレージ装置に格納されている。このストレージ装置に格納されている暗号化プログラムは、情報処理装置における当該プログラムの実行時に復号されて、当該情報処理装置のメモリに展開される。つまりメモリには、復号されたプログラムが存在する。この状態では、メモリに存在する復号されたプログラムは、第３者によるリバースエンジニアリングによって不正に解析される可能性がある。
【０００３】
そこで、例えば特許文献１は、復号されたプログラムを、装置毎に、或いは時刻などのパラメータに基づき、メモリの異なる位置にロード（展開）する技術（先行技術）を開示している。この先行技術によれば、復号されたプログラムは、当該プログラムが実行される情報処理装置毎に、或いは実行される時刻等の状況に応じて、メモリの異なる位置にロードされる。このため先行技術においては、メモリに存在する復号されたプログラムが第３者によるリバースエンジニアリングによって不正に解析されるのを困難にすることができる。
【特許文献１】特開２００５−０７１０５５号公報（段落０００７）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記先行技術において、復号されたプログラムがロードされるメモリの位置が、情報処理装置毎に、或いは時刻等に応じて変えられる。しかしながら、復号されたプログラム自体はメモリに存在する。このため先行技術においては、復号されたプログラムが第３者により不正に解析されるおそれは依然として残り、耐タンパ性の点で必ずしも十分ではない。
【０００５】
本発明は上記事情を考慮してなされたものでその目的は、実行時に復号される暗号化プログラムの耐タンパ性を向上できる情報処理装置及びメモリ管理方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の１つの観点によれば暗号化プログラムを復号して実行する情報処理装置が提供される。この情報処理装置は、実行時にプロセスアドレス空間に配置される、暗号化プログラムを含む各種プログラムを格納するストレージ装置と、前記プロセスアドレス空間に配置されたプログラムがページ単位にロードされるメモリと、前記メモリにロードされたプログラムを実行するＣＰＵと、前記プロセスアドレス空間と前記メモリのアドレス空間としての実メモリ空間との間のページ単位のマッピングを管理する仮想メモリ管理モジュールであって、前記プロセスアドレス空間に配置された実行すべきプログラムが暗号化されているかをセグメント単位で管理すると共に、前記プロセスアドレス空間のセグメント毎に当該セグメントに割り当て可能な前記実メモリ空間のページ数の上限を表す制限値を設定するセグメント管理手段を含む仮想メモリ管理モジュールとを具備する。
【発明の効果】
【０００７】
本発明によれば、仮想メモリ管理モジュールによるメモリ管理として、暗号化の有無をプロセスアドレス空間のセグメント単位で管理すると共に、プロセスアドレス空間のセグメント毎に当該セグメントに割り当て可能な実メモリ空間のページ数の上限を管理することにより、暗号化プログラムのうち復号された状態でメモリに存在するプログラム部分のサイズを制限することができ、当該暗号化プログラムの耐タンパ性を向上することができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る情報処理装置の構成を示すブロック図である。この情報処理装置は例えばパーソナルコンピュータであり、主として、ハードディスクドライブ（ＨＤＤ）１、ハードディスクドライブコントローラ（ＨＤＤコントローラ）２、メモリ３、ＣＰＵ４及びシステムバス５から構成される。
【０００９】
ＨＤＤ１は、各種のプログラム、データを格納するストレージ装置として用いられる。本実施形態では、ＨＤＤ１に格納されているプログラムが、暗号化プログラム１１及び非暗号化プログラム１２を含むものとする。暗号化プログラム１１及び非暗号化プログラム１２は、記憶媒体、例えば光ディスクにより提供されるものとする。この光ディスクに記憶された暗号化プログラム１１及び非暗号化プログラム１２は例えば光ディスクドライブ（図示せず）により図１の情報処理装置に読み込まれてＨＤＤ１に格納される。ＨＤＤ１に格納されるプログラムが、ネットワークを介して転送されても構わない。またＨＤＤ１に代えて、フラッシュＲＯＭのような書き換え可能な不揮発性メモリをストレージ装置として用いても構わない。ＨＤＤコントローラ２は、ＨＤＤ１１へのアクセスを制御する。
【００１０】
メモリ３は、実行中のアプリケーションプログラム（アプリケーション）３１等を格納する主記憶を構成する。アプリケーション３１は、実行時に例えばＨＤＤ１からメモリ３に一定サイズのページ単位でロードされる。メモリ３はまた、オペレーティングシステム（ＯＳ）３２を格納する。ＯＳ３２は情報処理装置の起動時に例えばＨＤＤ１からメモリ３にロードされる。
【００１１】
ＯＳ３２は仮想メモリ管理モジュール（以下、ＶＭＭモジュールと称する）３２０を含む。ＶＭＭモジュール３２０は、プロセスアドレス空間と呼ばれる仮想アドレス空間（仮想メモリアドレス空間）とメモリ３のアドレス空間としての実メモリ空間との間のページ単位のマッピングを管理する。仮想メモリ管理モジュール３２０は、セグメント管理部３２１、ページフォールト処理部３２２及び制限判定部３２３を含む。
【００１２】
セグメント管理部３２１は、プロセスアドレス空間に配置される実行中のプログラムをセグメント単位及びページ単位で管理する。セグメント管理部３２１はまた、プロセスアドレス空間に配置された実行すべきプログラムが暗号化されているかをセグメント単位で管理すると共に、プロセスアドレス空間のセグメント毎に当該セグメントに割り当て可能な実メモリ空間のページ数の上限を表す制限値を設定する。
【００１３】
ページフォールト処理部３２２は、プロセスアドレス空間に配置されたプログラムの実行のために当該プロセスアドレス空間内の目的のページがアクセスされた結果ページフォールトが発生した場合に以下のページフォールト処理を実行する。即ちページフォールト処理部３２２は、目的のページが属するセグメントに割り当てられる実メモリ空間のページ数がセグメント管理部３２１によって設定されている制限値を超えないように、上記目的のページに実メモリ空間のページを割り当てるメモリ割り当てを実行し、当該割り当てられたページに上記目的のページの内容をロードする。
【００１４】
制限判定部３２３は、上記ページフォールトが発生した場合、上記目的のページに実メモリ空間のページが割り当てられたならば、上記目的のページが属するセグメントに割り当てられる実メモリ空間のページ数が上記制限値を超えるかを判定する。
【００１５】
ページフォールト処理部３２２は、消去部３２２ａ、割り当て部３２２ｂ、暗号化判定部３２２ｃ及び復号部３２２ｄを含む。
【００１６】
消去部３２２ａは、制限判定部３２３の判定結果に応じて、目的のページが属するセグメントにおいて制限値を超える既にメモリ割り当て済みのプロセスアドレス空間のページの内容を実メモリ空間から消去する。割り当て部３２２ｂは、実行中のプログラムの各ページ（仮想ページ）に対する実アドレス空間（実メモリアドレス空間）のページ（実ページ）の割り当てを次のように行う。即ち割り当て部３２２ｂは、目的のページが属するセグメントにおいて上記制限値を超える既にメモリ割り当て済みのプロセスアドレス空間のページの内容がロードされている実メモリ空間のページを、当該目的のページに割り当てる。
【００１７】
暗号化判定部３２２ｃは、プロセスアドレス空間に配置された実行すべきプログラムのうち、目的のページが属するセグメントに配置されたプログラム部分が暗号化されているかを判定する。復号部３２２ｄは、割り当て部３２２ｂによって割り当てられたページにロードされたプログラム部分を、暗号化判定部３２２ｃの判定結果に応じて復号する。
【００１８】
ＶＭＭモジュール３２０は、プロセスアドレス空間に配置されるプログラムの各ページ（仮想ページ）に、実メモリ空間内のいずれのページ（実ページ）が割り当てられているかを管理するためのマッピングテーブル３３を例えばメモリ３の特定領域に保持する。本実施形態ではマッピングテーブル３３としてページテーブルが用いられる。一般にプロセスアドレス空間のサイズは実メモリ空間サイズよりも大きい。このため、プロセスアドレス空間に配置されるプログラムの一部のページのみが実メモリ空間に配置される。
【００１９】
ＶＭＭモジュール３２０はまた、プロセスアドレス空間管理構造体３４を例えばメモリ３の特定領域に保持する。プロセスアドレス空間管理構造体３４はＶＭＭモジュール３２０のセグメント管理部３２１によって生成される。このプロセスアドレス空間管理構造体３４の生成は、実行中のアプリケーション３１からの要求に応じて、ＨＤＤ１に格納されているプログラムを実行するために当該プログラムがメモリ３にロードされる際に行われる。
【００２０】
実行中のプログラムはプロセスアドレス空間に配置される。プロセスアドレス空間管理構造体３４は、このプロセスアドレス空間に配置されるプログラムをセグメント＃ｉ（ｉ＝１，２，…）単位に管理する情報（セグメント管理情報）ＳＭｉを含む。セグメントはプログラムの論理的な構造に基づく単位であり、例えばコード領域、テキスト領域、データ領域、スタック領域、共有ライブラリ領域などに対応して定義される。
【００２１】
プロセスアドレス空間管理構造体３４に含まれる各セグメント管理情報ＳＭｉは、フラグＦｉとメモリ割り当て制限値ＭＡＬｉとを有する。フラグＦｉは、対応するセグメント＃ｉに配置されているプログラム部分（命令／データ）が暗号化されているか否か、つまりセグメント＃ｉが暗号化セグメントであるか否かを示す。メモリ割り当て制限値ＭＡＬｉは、セグメント＃ｉに対し、ある時点において割り当て可能な実メモリ空間（つまりメモリ３）のページ数（実メモリ領域サイズ）の上限を示す。
【００２２】
ＨＤＤ１に格納されているプログラムは、セグメント＃ｉ単位でセグメント情報を含む。各セグメント情報は、対応するセグメント＃ｉに配置されているプログラム部分が暗号化されているか否か（「暗号有」か「暗号無」か）を示す情報を有する。そこでセグメント管理部３２１はＨＤＤ１に格納されているプログラムをメモリ３にロードする際に、即ち当該プログラムの実行開始時に、当該プログラムの各セグメント情報に基づいてセグメント＃ｉ毎にフラグＦｉを生成する。このときセグメント管理部３２１は、セグメント＃ｉ毎にメモリ割り当て制限値ＭＡＬｉも生成する。生成されたメモリ割り当て制限値ＭＡＬｉがＭＡＬｉ＝Ｎ（Limit N）の場合、セグメント＃ｉに対し、実メモリ空間のページをＮページを超えて割り当てることはできない。これに対し、ＭＡＬｉ＝制限無の場合、セグメント＃ｉに対し、実メモリ空間のページを当該実メモリ空間から空きページ（Freeページ）を取得できる範囲で割り当てることができる。
【００２３】
ＣＰＵ４は、メモリ３にロードされているアプリケーション３１及びＯＳ３２等を実行する。但し本実施形態では煩雑さを避けるために、ＯＳ３２に含まれるＶＭＭモジュール３２０の処理を、当該ＶＭＭモジュール３２０自身が実行するものとして説明する。システムバス５は、ＨＤＤコントローラ２、メモリ３及びＣＰＵ４を相互接続する。
【００２４】
図２は、暗号化プログラム１１が実行中の場合に、当該暗号化プログラム１１が配置されているプロセスアドレス空間（仮想アドレス空間）２０１のページと、実メモリ空間２０２のページとの対応付けの例を示す。図２において、プロセスアドレス空間２０１の各ページには、「Assign」または「N.A」が記述されている。「Assign」は、当該「Assign」が記述されたページ（仮想ページ）に、矢印で指定される実メモリ空間２０２のページ（実ページ）が割り当てられていること、つまり「Assign」が記述されたページの実体（内容）がメモリ３に存在することを示す。一方、「N.A」は、当該「N.A」が記述されたページに実メモリ空間２０２のページが割り当てられていないこと、つまり「N.A」が記述されたページの実体がメモリ３に存在しないことを示す。以下の説明では、プロセスアドレス空間２０１のページに実メモリ空間２０２のページを割り当てることを、煩雑な表現を避けるために、プロセスアドレス空間２０１のページに実メモリ空間２０２（またはメモリもしくはメモリ３）を割り当てると表現することもある。
【００２５】
本実施形態において、暗号化プログラム１１は３つのセグメントに分割して管理される。つまり暗号化プログラム１１が配置されるプロセスアドレス空間２０１は、図２に示すように３つのセグメント＃１，＃２及び＃３に分割して管理される。この場合、プロセスアドレス空間管理構造体３４は、図２に示すように、セグメント＃１，＃２及び＃３にそれぞれ対応付けられるセグメント管理情報ＳＭ１，ＳＭ２及びＳＭ３を含む。
【００２６】
セグメント管理情報ＳＭ１は、例えば、「制限無（Limit無し）」を示すメモリ割り当て制限値ＭＡＬ１及び「暗号無」を示すフラグＦ１を有する。セグメント管理情報ＳＭ２は、例えば、「制限１（Limit 1）」を示すメモリ割り当て制限値ＭＡＬ２及び「暗号有」を示すフラグＦ２を有する。セグメント管理情報ＳＭ３は、例えば、「制限無」を示すメモリ割り当て制限値ＭＡＬ３及び「暗号無」を示すフラグＦ３を有する。
【００２７】
次に、本実施形態の動作について説明する。  
今、暗号化プログラム１１の実行中であり、したがって当該暗号化プログラム１１がプロセスアドレス空間２０１に配置されているものとする。この状態で、アプリケーション３１からの要求により、暗号化プログラム１１のうち、プロセスアドレス空間２０１のあるページ（目的のページ）に配置されているプログラム部分を実行する必要があるものとする。この場合、目的のページへのアクセスが発生する。するとＶＭＭモジュール３２０はマッピングテーブル３３を参照して、目的のページ（仮想ページ）の仮想ページアドレスを、当該ページに割り当てられている実メモリ空間２０２のページ（実ページ）の実ページアドレスに変換するためのアドレス変換を実行する。
【００２８】
ところが、暗号化プログラム１１の実行中であっても、当該暗号化プログラム１１の全てがメモリ３にロードされているとは限らない。もし、目的のページが、当該目的のページにメモリ３が割り当てられていない「N.A」ページの場合、当該目的のページの仮想ページアドレスを実ページアドレスに変換できない。この場合、ページフォールトが発生する。ここでは、目的のページが、プロセスアドレス空間２０１におけるセグメント＃２のページＰ２２であるものとする。つまり、ページＰ２２へのアクセスでページフォールトが発生したものとする。
【００２９】
以下、図２に示す状態におけるページＰ２２へのアクセスでページフォールトが発生した場合を例に、図３及び図４を参照して説明する。図３はページフォールト発生時のＶＭＭモジュール３２０の処理手順を示すフローチャート、図４は図２に示す状態でページフォールトが発生した場合におけるプロセスアドレス空間２０１のページと実メモリ空間２０２のページとの対応付けの例を示す図である。
【００３０】
ＶＭＭモジュール３２０の制限判定部３２３は、ページＰ２２へのアクセスでページフォールトが発生した場合、当該ページＰ２２が属するセグメント＃２がメモリ割り当て制限のあるセグメントであるか否かを判定する（ステップＳ１）。このステップＳ１の判定のために本実施形態では、セグメント＃２に対応する、プロセスアドレス空間管理構造体３４中のセグメント管理情報ＳＭ２が参照される。そして参照されたセグメント管理情報ＳＭ２に含まれているメモリ割り当て制限値ＭＡＬ２が「制限無」でないかが判定される。もし、メモリ割り当て制限値ＭＡＬ２が「制限無」でないならば、制限判定部３２３は、セグメント＃２がメモリ割り当て制限のあるセグメントであると判定する。これに対し、メモリ割り当て制限値ＭＡＬ２が「制限無」であるならば、制限判定部３２３は、セグメント＃２がメモリ割り当て制限の無いセグメントであると判定する。
【００３１】
制限判定部３２３は、セグメント＃２がメモリ割り当て制限の有るセグメントである場合、次の判定（ステップＳ２）を行う。即ち制限判定部３２３は、ページＰ２２に実メモリ空間２０２（メモリ３）を仮に割り当てたとしても、セグメント＃２に対して割り当てられる実メモリ空間２０２のページ数が、メモリ割り当て制限値ＭＡＬ２で示されるページ数の範囲内に収まるかを判定する。
【００３２】
もし、セグメント＃２に対して割り当てられる実メモリ空間２０２のページ数が、メモリ割り当て制限値ＭＡＬ２で示されるページ数を超えるならば（ステップＳ２）、制限判定部３２３はページフォールト処理部３２２に制御を渡す。するとページフォールト処理部３２２は、以下に述べるページフォールト処理（ステップＳ３）を実行する。
【００３３】
まずページフォールト処理部３２２の消去部３２２ａは、セグメント＃２においてメモリ割り当て制限値ＭＡＬ２で示されるページ数を超える既にメモリ割り当て済みのページの内容を、実メモリ空間２０２（メモリ３）から消去する（ステップＳ３ａ）。
【００３４】
本実施形態では、ＭＡＬ２＝１（Limit 1）である。このとき、図２に示すプロセスアドレス空間２０１のセグメント＃２では、ページＰ２１に対して実メモリ空間２０２（メモリ３）のページ２１０が割り当てられている。この状態で、ページＰ２２に実メモリ空間２０２が割り当てられると、セグメント＃２に対して割り当てられる実メモリ空間２０２のページの数が、ＭＡＬ２で示されるページ数を超えてしまう。そこで消去部３２２ａは、セグメント＃２においてＭＡＬ２で示されるページ数を超える既に割り当て済みのページの内容、例えばプロセスアドレス空間２０１内の当該セグメント＃２に属するページＰ２１に対して割り当てられている実メモリ空間２０２内のページＰ２１０の内容（実体）を消去する（ステップＳ３ａ）。このとき、ページＰ２１の仮想アドレスに対応するマッピングテーブル３３のエントリには、当該ページＰ２１にメモリ（実メモリ空間２０２）が割り当てられていないことを示す第１の特定フラグが設定される。これにより図４に示すように、ページ（仮想ページ）Ｐ２１は「Assign」から「N.A.」に、ページ（実ページ）Ｐ２１０は「Assign」から空きページを表す「Free」に、それぞれ変更されて、ページＰ２１及びＰ２１０の対応関係は解消される。
【００３５】
消去部３２２ａによってステップＳ３ａが実行されると、ページフォールト処理部３２２の割り当て部３２２ｂに制御が渡される。割り当て部３２２ｂは、プロセスアドレス空間２０１内の目的ページＰ２２に、実メモリ空間２０２内の「Free」ページ、例えばページＰ２２０を割り当てる（ステップＳ３ｂ）。これにより図４に示すように、目的ページ（仮想ページ）Ｐ２２は「N.A.」から「Assign」に、ページ（実ページ）Ｐ２２０は「Free」から「Assign」に、それぞれ変更される。このとき、ページＰ２２の仮想アドレスに対応するマッピングテーブル３３のエントリには、ページＰ２２０の実ページアドレスと、当該ページＰ２２に実メモリ空間２０２（メモリ３）が割り当てられていることを示す特定フラグが設定される。
【００３６】
なお、ページＰ２２に実メモリ空間２０２（メモリ３）が割り当てられても、セグメント＃２に対して割り当てられる実メモリ空間２０２のページ数が、ＭＡＬ２で示されるページ数の範囲内であるならば（ステップＳ２）、ステップＳ３ａをスキップしてステップＳ３ｂの割り当て処理が行われる。また、メモリ割り当て制限値ＭＡＬ２が「制限無」であるならば、つまりセグメント＃２がメモリ割り当て制限の無いセグメントであるならば（ステップＳ１）、ステップＳ２及びＳ３ａをスキップしてステップＳ３ｂの割り当て処理が行われる。
【００３７】
割り当て部３２２ｂはステップＳ３ｂを実行するとロード手段として機能して、目的ページＰ２２に割り当てられた実メモリ空間２０２（メモリ３）内のページＰ２２０に、暗号化プログラム１１のうち目的ページＰ２２に格納されているプログラム部分（命令／データ）をＨＤＤ１からロードする（ステップＳ３ｃ）。するとページフォールト処理部３２２の暗号化判定部３２２ｃは、目的ページＰ２２が属するセグメント＃２が暗号化セグメントであるか否かを判定する（ステップＳ３ｄ）。この判定は、目的ページＰ２２が属するセグメント＃２のセグメント管理情報ＳＭ２に含まれているフラグＦ２を参照することにより行われる。
【００３８】
もし、目的ページＰ２２が属するセグメント＃２が本実施形態のように暗号化セグメントである場合、ページフォールト処理部３２２の復号部３２２ｄは実メモリ空間２０２（メモリ３）内のページＰ２２０にロードされた当該目的ページＰ２２のプログラム部分を復号する復号処理を実行する（ステップＳ３ｅ）。
【００３９】
このように本実施形態において、ＶＭＭモジュール３２０は、プログラムの暗号化の有無をセグメント＃ｉ単位で管理する。またＶＭＭモジュール３２０は、プログラムが配置されるプロセスアドレス空間２０１に対して割り当て可能な実メモリ空間２０２のページ数の上限を、セグメント＃ｉ単位で管理する。これにより、メモリ３に存在する復号されたプログラム部分のサイズ（ページ数）をセグメント＃ｉ毎に常に指定サイズ（ページ数）の範囲内に制限することができる。即ち本実施形態においては、暗号化プログラム１１のうち、メモリ３に存在する復号されたプログラム部分のサイズを常に制限することで、たとえ当該メモリ３の状態を観測しても、暗号化プログラム１１の解析を行う行為を困難とすることができ、暗号化プログラム１１の耐タンパ性を向上できる。しかも、復号されたプログラム部分のサイズが、ＯＳ３２の仮想メモリ管理モジュール３２０の管理によって指定サイズの範囲内に制限されるため、この制限のために特別なハードウェアや、特別なアプリケーションプログラムを必要としない。
【００４０】
［変形例］
上記実施形態では、メモリ割り当て制限値ＭＡＬｉで示されるページ数を超える既にメモリ割り当て済みのページの内容を、実メモリ空間２０２（メモリ３）から消去する処理が必要となる。そこで、この消去処理を不要とする上記実施形態の変形例について図５のフローチャートを参照して説明する。ここでは、上記実施形態と同様にページＰ２２へのアクセスでページフォールトが発生したものとする。なお、図３のフローチャートと同様の処理ステップには同一参照符号を付して説明を省略する。
【００４１】
この変形例においてページフォールト処理部３２２の割り当て部３２２ｂは、上記ステップＳ３ａ及びＳ３ｂに代わるステップＳ３０ａを次のように実行する。即ち割り当て部３２２ｂは、メモリ割り当て制限値ＭＡＬ２で示されるページ数「１」を超える既にメモリ割り当て済みの仮想ページＰ２１の内容がロードされている実メモリ空間２０２内の実ページＰ２１０を、目的ページＰ２に割り当てる。
【００４２】
割り当て部３２２ｂはステップＳ３０ａを実行すると、当該ステップＳ３０ａで目的ページＰ２２に割り当てられた実メモリ空間２０２内のページＰ２１０に、暗号化プログラム１１のうち当該目的ページＰ２２に格納されているプログラム部分をＨＤＤ１からロードする（ステップＳ３ｃ）。
【００４３】
このように上記実施形態の変形例によれば、上記実施形態において必要であった消去処理（ステップＳ３ａ）を不要とすることができ、これによりページフォールト発生時における情報処理装置のオーバヘッドを軽減できる。
【００４４】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００４５】
【図１】本発明の一実施形態に係る情報処理装置の構成を示すブロック図。
【図２】プロセスアドレス空間２０１のページと実メモリ空間２０２のページとの対応付けの例を示す図。
【図３】ページフォールト発生時の仮想メモリ管理モジュール（ＶＭＭモジュール）３２０の処理手順を示すフローチャート。
【図４】図２に示す状態でページフォールトが発生した場合におけるプロセスアドレス空間２０１のページと実メモリ空間２０２のページとの対応付けの例を示す図。
【図５】上記実施形態の変形例におけるページフォールト発生時のＶＭＭモジュール３２０の処理手順を示すフローチャート。
【符号の説明】
【００４６】
１…ＨＤＤ、２…ＨＤＤコントローラ、３…メモリ、４…ＣＰＵ、１１…暗号化プログラム、１２…非暗号化プログラム、３１…アプリケーション（アプリケーションプログラム）、３２…ＯＳ（オペレーティングシステム）、３３…マッピングテーブル、３４…プロセスアドレス空間管理構造体、２０１…プロセスアドレス空間、２０２…実メモリ空間、３２０…ＶＭＭモジュール（仮想メモリ管理モジュール）、３２１…セグメント管理部、３２２…ページフォールト処理部、３２２ａ…消去部、３２２ｂ…割り当て部、３２２ｃ…暗号化判定部、３２２ｄ…復号部、ＳＭ１〜ＳＭ３…セグメント管理情報、Ｆ１〜Ｆ３…フラグ、ＭＡＬ１〜ＭＡＬ３…メモリ割り当て制限値。
【図１】
2007122391.tif 000003
【図２】
2007122391.tif 000004
【図３】
2007122391.tif 000005
【図４】
2007122391.tif 000006
【図５】
2007122391.tif 000007