(57)【要約】【課題】ハードディスクに格納されている、マルウエアの監視を行う管理ファイルをマルウエアから見えないようにすることで、高いセキュリティを維持する。【解決手段】端末１はＨＤ１１、ＭＢＲ１１０、管理ファイルを有する。ＨＤ１１は先頭セクタ以降に順に少なくとも１以上のパーティションに区分けされ、最終のパーティションの終了セクタの後方領域に管理ファイルが格納されている。ＭＢＲ１１０は各パーティションの先頭セクタ及び終了セクタに関する情報が書き込まれたパーティションテーブルＰＴ１１１と、管理ファイルを端末１の起動時に最初にＲＡＭ１２に読み出す専用ローダとを格納している。管理ファイルは端末１の起動後に、メモリチップ１１Ａに格納されている総ＬＢＡの読み出し指令が発生した時、指令に対応して読み出された情報を最終のパーティションの終了セクタの情報に書き替える処理プログラムを含む。【選択図】図１６
2014112304.tif 000002
【特許請求の範囲】
【請求項１】
先頭セクタにＭＢＲが、その後方側に少なくともＯＳが格納されたハードディスクと、前記ハードディスクに対応付けられ、当該ハードディスクの総容量情報が少なくとも格納されたメモリ部材と、ＣＰＵと、前記ＣＰＵによる前記ＭＢＲの起動を経て前記ハードディスクの記憶内容が読み出される主メモリとを含む情報処理装置において、
前記ハードディスクは、前記先頭セクタ以降に順に少なくとも１以上のパーティションに区分けされ、最終のパーティションの終了セクタの後方領域に管理ファイルが格納されており、
前記ＭＢＲは、各パーティションの先頭セクタ及び終了セクタに関する情報が書き込まれたパーティションテーブルと、前記管理ファイルを前記情報処理装置の起動時に最初に前記主メモリに読み出す専用ローダとを格納しており、
前記管理ファイルは、前記情報処理装置の起動後に、前記メモリ部材に格納されている前記総容量情報の読み出し指令が発生した時、前記指令に対応して読み出された情報を前記最終のパーティションの終了セクタの情報に書き替える処理プログラムを含むものであることを特徴とする情報処理装置。
【請求項２】
前記管理ファイルは、前記主メモリ上で前記ＯＳより相対的に小さい特権レベルに設定されたものであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記専用ローダは、前記ＭＢＲに予め格納されていたブートストラップローダが書き替えられたものであることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記ＭＢＲに予め格納されていたブートストラップローダは、前記専用ローダが書き込まれる前に前記最終のパーティションの終了セクタの後方領域に退避されていることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記最終のパーティションの終了セクタは、前記管理ファイルの格納に際して元々のセクタから先頭側に狭められたものであることを特徴とする請求項１〜４のいずれかに記載の情報処理装置。
【請求項６】
前記管理ファイルの格納領域は、前記最終のパーティションの終了セクタの後方側の全領域であることを特徴とする請求項１〜５のいずれかに記載の情報処理装置。
【請求項７】
前記管理ファイルは、前記総容量情報から前記最終のパーティションの終了セクタの後方側の全領域分を差し引いて最終のパーティションの終了セクタを算出するものであることを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
前記管理ファイルは、前記メモリ部材に格納されている前記総容量情報の読み出し指令を受けて割込を実行することで、前記情報の書き替えを行うものであることを特徴とする請求項１〜７のいずれかに記載の情報処理装置。
【請求項９】
前記割込は、Ｉ／Ｏポートのうちの前記メモリ部材に対応するデータレジスタへの前記ＣＰＵによるアクセスを受けて行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記割込は、メモリマップドＩ／Ｏのうちの前記メモリ部材に対応する前記ＣＰＵによるアクセスを、デバッグ例外、ページフォルト、及びハードウエア割込のうちの１つを受けて行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
先頭セクタにＭＢＲが格納され、前記先頭セクタ以降に少なくとも１つのＯＳが格納されるパーティションに区分けされたハードディスクに対して、インストーラを用いてファイルのインストールを行う方法であって、
前記ファイルは、前記ハードディスクに対応付けられ、当該ハードディスクの総容量情報が少なくとも格納されたメモリ部材から前記総容量情報に対する読み出し指令が、前記ハードディスクが搭載された情報処理装置の起動後に発生した時、前記指令に対応して読み出された情報を最終のパーティションの終了セクタの情報に書き替える処理プログラムを有する管理ファイルであり、
前記最終パーティションの終了セクタを少なくとも前記ファイルの容量に対応する容量分だけ先頭側に移動させて新たな終了セクタを設定するステップと、
前記新たな終了セクタから最終側に向けて前記ファイルを格納するステップと、
前記ＭＢＲに書き込まれている前記最終パーティションの終了セクタを新たな最終セクタに書き替えるステップと、
前記情報処理装置の起動時に前記ファイルを最初に前記情報処理装置の主メモリに読み出す専用ローダを前記ＭＢＲに書き込むステップとを有することを特徴とするファイルのインストール方法。
【請求項１２】
前記専用ローダは、前記ＭＢＲに予め格納されていたブートストラップローダが書き替えられたものであることを特徴とする請求項１１に記載のファイルのインストール方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵによって各種の情報処理を実行する技術に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークに接続されたサーバや端末（パーソナルコンピュータ）、モバイル端末等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限（アドレス制限）の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。
【０００３】
特許文献１には、起動プログラムの実行方法が記載されている。より詳細には、パーソナルコンピュータからハードディスクに対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタに先立ってセキュリティ等の任意プログラムを格納した仮起動セクタを読み出し、該任意プログラムを実行させる起動前処理ステップを有するようにしたものである。そして、このセキュリティ等の任意プログラムの実行後に本来の起動プログラムを実行してＯＳを起動させるものである。これにより、パーソナルコンピュータのＢＯＩＳや記憶媒体の起動セクタ（ＬＢＡ０）を変更することなく、ＯＳ起動に先立ってセキュリティ等の任意のプログラムの実行を可能としている。
【０００４】
特許文献２には、オペレーティングシステムにオペレーティングシステム特権モードを設定すると共にユーザアプリケーションにユーザ特権モードを設定し、仮想マシン及び特権モードを用いてウイルス対策が講じられたコンピュータデバイスが記載されている。このコンピュータデバイスには、さらに、仮想マシンモニタ特権モードが設定された仮想マシンモニタ（ＶＭＭ）及び保護エージェント特権モードが設定された保護エージェント（ＶＭ）が設けられており、特権レベルは、仮想マシンモニタ特権モード、保護エージェント特権モード、オペレーティングシステム特権モード、ユーザ特権モードの順でアクセス権の強さが設定されている。従って、悪意者によって作成され、オペレーティングシステムに送り込まれたマルウエアが、特権モードが上位である保護エージェントに対してアクセスしても、かかるアクセスを受け付けず、保護エージェントの内容を改変することを阻止している。そして、マルウエアによってオペレーティングシステム内の資源（ＳＳＤＴ、ＧＤＴ、ＩＤＴ等）の改変、また保護エージェントの資源の改変が検知されると、システムをシャットダウンし、リブートすることで改変をリセットするようにしていた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２３６１９３号公報
【特許文献２】特表２０１０−５１７１６４号公報
【特許文献３】ＷＯ ２０１１／１４１９９７ Ａ１
【特許文献４】ＷＯ ２０１１／１４５１９９ Ａ１
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１では、ハードディスク内の仮起動セクタの任意プログラムがウィルスチェックプログラムである場合においても、そのプログラムが実行される前に、例えばＲｏｏｔｋｉｔの形態を有するような不正プログラムが起動され、任意プログラムから自身（不正プログラム）を隠蔽することも可能であるため、ウイルスチェックに対する信頼性に一定の限界がある。また、特許文献１にはＯＳ起動前にウイルスを監視する具体的な方法は一切記載されていない。
【０００７】
また、特許文献２は、順次異なる特権レベルを設定してオペレーティングシステムから侵入するマルウエアの不正アクセスを阻止する仮想マシンモニタ及び保護エージェントを利用したものである。しかしながら、特許文献２には、仮想マシン及び特権レベルの差を利用したアクセス阻止が説明されているのみで、コンピュータデバイスメモリのメモリマップに関しては何等記載されておらず、内容の改変を検出可能とする仕組みまで開示されているものではない。また、仮想マシンモニタ及び保護エージェントのインストール方法に関しては何等記載がなく、これら自体のセキュリティ性の確保は不明である。さらに、内部資源が改変された場合にシャットダウンし、リブートし得たとしても、それで不備の事情が完全に改善されるものでもない。なお、特許文献３，４は、ＣＰＵを有する情報処理装置をセキュアな状態でブートすることができる技術が記載されているが、外部デバイスを用いたブート技術に関するものである。
【０００８】
本発明の目的は、ハードディスクに格納されている、マルウエアの監視を行う管理ファイルをマルウエアから見えないようにすることで、高いセキュリティを維持し得る情報処理技術を提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係る情報処理装置は、先頭セクタにＭＢＲが、その後方側に少なくともＯＳが格納されたハードディスクと、前記ハードディスクに対応付けられ、当該ハードディスクの総容量情報が少なくとも格納されたメモリ部材と、ＣＰＵと、前記ＣＰＵによる前記ＭＢＲの起動を経て前記ハードディスクの記憶内容が読み出される主メモリとを含む情報処理装置において、前記ハードディスクは、前記先頭セクタ以降に順に少なくとも１以上のパーティションに区分けされ、最終のパーティションの終了セクタの後方領域に管理ファイルが格納されており、前記ＭＢＲは、各パーティションの先頭セクタ及び終了セクタに関する情報が書き込まれたパーティションテーブルと、前記管理ファイルを前記情報処理装置の起動時に最初に前記主メモリに読み出す専用ローダとを格納しており、前記管理ファイルは、前記情報処理装置の起動後に、前記メモリ部材に格納されている前記総容量情報の読み出し指令が発生した時、前記指令に対応して読み出された情報を前記最終のパーティションの終了セクタの情報に書き替える処理プログラムを含むものであることを特徴とするものである。
【００１０】
本発明によれば、ハードディスクの最終のパーティションの終了セクタを先頭側にずらして、後方側に、いわば空き領域を形成し、この空き領域に管理ファイルをインストールしている。かつ、パーティションテーブルの最終のパーティションの終了セクタを空き領域を除いて設定したので、仮にマルウエアがパーティションテーブルを参照し得たとしても、空き領域を検知することは出来ない。一方、メモリ部材には、ハードディスクの総容量情報を格納しているから、マルウエアがこのメモリ部材を参照した場合、空き領域の存在を知得することとなり、その結果、管理ファイルが破壊、除去等される虞がある。そこで、管理ファイルに処理プログラムを設け、この処理プログラムによって、マルウエアの他、ＯＳ，ＡＰからメモリ部材の総容量情報（乃至はメモリ部材の総容量情報を含む情報）の読み出し指令が発生した時、前記指令に対応して読み出された情報を、前記最終のパーティションの、前記空き領域を除いた終了セクタの情報に書き替えるようにしている。これにより、正規、悪意に限らず、メモリ部材からハードディスクの総容量情報を知得することはできず、すなわち空き領域へのアクセスを阻止し、管理ファイルが破壊、削除、改変等されることはなくなる。
【００１１】
請求項２記載の発明は、請求項１に記載の情報処理装置において、前記管理ファイルは、前記主メモリ上で前記ＯＳより上位の特権レベルに設定されたものであることを特徴とする。この構成によれば、特権レベルの差を利用して、主メモリ上に展開された後は管理ファイルへの不当なアクセスは例外としてフックされ、無効等される。
【００１２】
請求項３記載の発明は、請求項１又は２に記載の情報処理装置において、前記専用ローダは、前記ＭＢＲに予め格納されていたブートストラップローダが書き替えられたものであることを特徴とする。この構成によれば、ＢＩＯＳが起動され、次いでＭＢＲの専用ローダが起動されることによって、管理ファイルが最初に主メモリに読み出され、ＣＰＵの制御が管理ファイルに渡されることになる。
【００１３】
請求項４記載の発明は、請求項３に記載の情報処理装置において、前記ＭＢＲに予め格納されていたブートストラップローダは、前記専用ローダが書き込まれる前に前記最終のパーティションの終了セクタの後方領域に退避されていることを特徴とする。この構成によれば、退避されているブートストラップローダをＭＢＲに復帰させることで、管理ファイルのない状態での情報処理装置の起動が可能となる。
【００１４】
請求項５記載の発明は、請求項１〜４のいずれかに記載の情報処理装置において、前記最終のパーティションの終了セクタは、前記管理ファイルの格納に際して元々のセクタから先頭側に狭められたものであることを特徴とする。この構成によれば、最終のパーティションの終了セクタはハードディスクの後方側のセクタから狭められているものである。
【００１５】
請求項６記載の発明は、請求項１〜５のいずれかに記載の情報処理装置において、前記管理ファイルの格納領域は、前記最終のパーティションの終了セクタの後方側の全領域であることを特徴とする。この構成によれば、管理ファイルの格納領域の特定は最初のセクタ位置の情報で十分となる。
【００１６】
請求項７記載の発明は、請求項１〜６のいずれかに記載の情報処理装置において、前記管理ファイルは、前記総容量情報から前記最終のパーティションの終了セクタの後方側の全領域分を差し引いて最終のパーティションの終了セクタを算出するものであることを特徴とする。この構成によれば、管理ファイルは差し引き演算を実行することで、空き領域を形成するようにしている。
【００１７】
請求項８記載の発明は、請求項１〜７のいずれかに記載の情報処理装置において、前記管理ファイルは、前記メモリ部材に格納されている前記総容量情報の読み出し指令を受けて割込を実行することで、前記情報の書き替えを行うものであることを特徴とする。この構成によれば、総容量情報の読み出し指令をフックして割込処理に移行し、この割込処理によって総容量情報の書き替えが行われる。
【００１８】
請求項９記載の発明は、請求項８に記載の情報処理装置において、前記割込は、Ｉ／Ｏポートのうちの前記メモリ部材に対応するデータレジスタへの前記ＣＰＵによるアクセスを受けて行うことを特徴とする。この構成によれば、Ｉ／Ｏポートのうちデータレジスタへのアクセスをフックして割込処理に移行するようにしている。
【００１９】
請求項１０記載の発明は、請求項８に記載の情報処理装置において、前記割込は、メモリマップドＩ／Ｏのうちの前記メモリ部材に対応する前記ＣＰＵによるアクセスを、デバッグ例外、ページフォルト、及びハードウエア割込のうちの１つを受けて行うことを特徴とする。この構成によれば、デバッグ例外、ページフォルト、及びハードウエア割込のうちの１つをフックして割込処理に移行するようにしている。
【００２０】
請求項１１に係るファイルのインストール方法は、先頭セクタにＭＢＲが格納され、前記先頭セクタ以降に少なくとも１つのＯＳが格納されるパーティションに区分けされたハードディスクに対して、インストーラを用いてファイルのインストールを行う方法であって、前記ファイルは、前記ハードディスクに対応付けられ、当該ハードディスクの総容量情報が少なくとも格納されたメモリ部材から前記総容量情報に対する読み出し指令が、前記ハードディスクが搭載された情報処理装置の起動後に発生した時、前記指令に対応して読み出された情報を最終のパーティションの終了セクタの情報に書き替える処理プログラムを有する管理ファイルであり、前記最終パーティションの終了セクタを少なくとも前記ファイルの容量に対応する容量分だけ先頭側に移動させて新たな終了セクタを設定するステップと、前記新たな終了セクタから最終側に向けて前記ファイルを格納するステップと、前記ＭＢＲに書き込まれている前記最終パーティションの終了セクタを新たな最終セクタに書き替えるステップと、前記情報処理装置の起動時に前記ファイルを最初に前記情報処理装置の主メモリに読み出す専用ローダを前記ＭＢＲに書き込むステップとを有することを特徴とするものである。この発明によれば、管理ファイルが格納される空き領域を知得することはできないこととなる。
【００２１】
請求項１２記載の発明は、請求項１１に記載の情報処理装置において、前記専用ローダは、前記ＭＢＲに予め格納されていたブートストラップローダが書き替えられたものであることを特徴とする。この構成によれば、ＢＩＯＳが起動され、次いでＭＢＲの専用ローダが起動されることによって、管理ファイルが最初に主メモリに読み出され、ＣＰＵの制御が管理ファイルに渡されることになる。
【発明の効果】
【００２２】
本発明によれば、ハードディスクに格納されている、マルウエアの監視を行う管理ファイルをマルウエアから見えないようにすることで、高いセキュリティを維持することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明に係る情報処理装置が適用される端末１及びインストーラ（２Ｂ）のインストール時に要求される機能を説明するためのブロック図である。
【図２】主にハードディスクへのインストーラ（２Ａ），（２Ｂ）によるインストールの手順を説明する図で、図２（Ａ）は端末が組み付けられた状態（乃至は出荷時の状態）のメモリマップ、図２（Ｂ）はインストーラ（２Ａ）によるインストール後のメモリマップ、図２（Ｃ）はインストーラ（２Ｂ）によるインストール後のメモリマップである。
【図３】インストーラ（２Ｂ）のプログラムに従ってＣＰＵが実行する、管理ファイルのインストール処理の手順を示すフローチャートである。
【図４】図３の「初期設定」のサブルーチンである。
【図５】図３の「インストール実行」のサブルーチンである。
【図６】ＣＰＵによって実行される端末の起動から動作中における機能を説明するブロック図である。
【図７】ＲＡＭ及びチップセットのメモリマップである。
【図８】ＲＡＭ及びチップセットのメモリマップである。
【図９】ＲＡＭ及びチップセットのメモリマップである。
【図１０】端末のＣＰＵによって実行される起動処理の手順を説明するフローチャートである。
【図１１】情報の格納箇所を示すＧＤＴの全体概要を示している。
【図１２】ＰＴＥのメモリマップを示す。
【図１３】リニアアドレスから物理アドレスに変換する変換方法を図で示したものである。
【図１４】プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示すものである。
【図１５】ＣＰＵによって実行される、ＯＳブート後における管理ファイルの処理を示すフローチャートである。
【図１６】フック機能のうち、Ｉ／Ｏポートを経由する場合の実施形態を説明するための機能構成図である。
【図１７】フック処理Ｉの流れを説明するフローチャートである。
【図１８】割込処理Ｉの流れを説明するフローチャートを示す。
【図１９】ＭＭＩＯを経由する場合の実施形態を説明するための機能構成図である。
【図２０】フック処理ＩＩの流れを説明するフローチャートである。
【図２１】割込処理ＩＩの流れを説明するフローチャートを示す。
【図２２】フック処理ＩＩＩの流れを説明するフローチャートである。
【図２３】フック処理ＩＶの流れを説明するフローチャートである。
【図２４】（Ａ）（Ｂ）は、特定アプリケーションのＲＡＭへのロードを説明するための図である。
【図２５】管理ファイル環境の下での特定アプリケーションの実行方法を説明するための図である。
【図２６】ＣＰＵによって実行される特定アプリケーションの実行手順を説明するフローチャートである。
【発明を実施するための形態】
【００２４】
図１は、本発明に係る情報処理装置が適用される端末１及びインストーラ（２Ｂ）のインストール時に要求される機能を説明するためのブロック図である。図２は、主にハードディスクへのインストーラ（２Ａ），（２Ｂ）によるインストールの手順を説明する図で、図２（Ａ）は端末が組み付けられた状態（乃至は出荷時の状態）のメモリマップ、図２（Ｂ）はインストーラ（２Ａ）によるインストール後のメモリマップ、図２（Ｃ）はインストーラ（２Ｂ）によるインストール後のメモリマップである。なお、図２（Ａ）〜（Ｃ）の右部には、メモリチップ１１Ａ及びＭＢＲ（Master Boot Record）１１０の内容が示されている。
【００２５】
図１において、端末１は、制御手段としてのＣＰＵ（Central Processing Unit）１０を有する。ＣＰＵ１０は、ＨＤ（Hard Disc）１１及び主メモリであるＲＡＭ（RandomAccess Memory）１２に接続されている。ＨＤ１１は、所定の記憶容量、例えば数百ＧＢを有し、セクタ（Sector：512Byte／track）単位でデータの書き込みが行われる。端末１は、セットアップなどによって、ＨＤ１１に、少なくともＯＳ（Operating System）やＡＰ（application program）のファイルが書き込まれ、その一例は、後述する図２のメモリマップに示されている。ＲＡＭ１２は、ＨＤ１１から読み出されるファイル、処理途中の情報を一時的に格納するもので、所定の記憶容量、例えば４ＧＢを有する。
【００２６】
メモリチップ１１Ａは、ＨＤ１１と対応付けて設けられているもので、ＨＤ１１に関連する情報が書き込まれている。メモリチップ１１Ａに書き込まれている、ＨＤ１１に関連する情報としては、図２に示すように、ＨＤ１１の型番、ＨＤ１１の記憶容量である総容量（総ＬＢＡ：Logical Block Addressing）が少なくとも含まれ、必要に応じて品質データ、入出力特性データが含まれ、さらにＨＤ１１へのアクセスのログデータも含まれる。メモリチップ１１ＡはＲＯＭ（Read Only Memory）でもよいし、ログデータ等が更新的に書き込みされる態様では書き込み可能なＲＯＭが採用される。
【００２７】
また、ＣＰＵ１０には、操作者が必要な指令や情報を入力するテンキーを有するキーボードやマウス等を備える操作部１３、及び入力情報の確認のための表示や通信内容を表示する表示部１４が接続されている。
【００２８】
インストーラ（２Ｂ）は、使用可能な状態に設定するセットアップの処理がなされた端末１に、あるいはセットアップ処理と連動して端末１に所定のファイルをインストールするためのもので、ＣＤＲＯＭ等のファイル記憶媒体である。インストーラ（２Ｂ）は、情報処理部１の外部デバイス接続ポート１０Ｐに装着（接続）されて、格納データであるファイルを端末１に書き込む処理を行う。
【００２９】
また、インストーラ（２Ｂ）は、起動プログラムメモリ２１、インストールプログラムメモリ２２、専用ローダメモリ２３、及び管理ファイルメモリ２４を少なくとも有している。起動プログラムメモリ２１は、接続された端末１を起動させるための起動プログラムが格納されたメモリである。インストールプログラムメモリ２２は、起動した端末１に対してファイルのインストール動作を実行させるインストールプログラムが格納されたメモリである。
【００３０】
専用ローダメモリ２３及び管理ファイルメモリ２４は、インストールプログラムによってＨＤ１１に書き込まれるファイルが格納されたメモリである。専用ローダはＲＡＭ１２の後述する起動メモリ領域１２０に展開されるものである。なお、専用ローダは、起動メモリ領域１２０の全域を一旦リセットして書き込まれることが好ましく、ローダとして機能するプログラム部分と、起動メモリ領域１２０に相当する１ＭＢ分の転送データを作成するために補充されたダミーデータ等を適宜含む。あるいは、専用ローダは、ＲＡＭ１２の起動メモリ領域１２０内に展開されるプログラム部分と、プログラム部分の展開領域を除く、ＲＡＭ１２の全域にダミーデータでリセットする態様でもよい。このリセット処理により、ＲＡＭ１２に先に読み込まれたＢＩＯＳを削除することになるため、仮にＢＩＯＳ内にマルウエアが潜伏していても、これを除去できる。専用ローダメモリ２３は、端末１の起動時に、ＨＤ１１内の他のファイルよりも管理ファイルを優先してＨＤ１１からＲＡＭ１２にインストールする等の処理を行うプログラムが格納されたメモリである。管理ファイルメモリ２４は、後述するように特定のアクセスに対して対応する処理を実行する、監視用等のプログラムが格納されたメモリである。
【００３１】
ＣＰＵ１０は、接続されたインストーラ（２Ｂ）の起動プログラムメモリ２１、インストールプログラムメモリ２２から起動プログラム、インストールプログラムをＲＡＭ１２に取り込んで実行することで、起動処理部１００１、インストール処理部１００２、及び操作受付部１００３として機能する。起動処理部１００１は、インストーラ（２Ｂ）を接続ポート１０Ｐに接続した状態で、図略の起動スイッチをオンすると、外部デバイスであるインストーラ（２Ｂ）を優先して選択し（あるいは優先順をマニュアル設定して）、起動プログラムメモリ２１から起動プログラムを取り込むものである。インストール処理部１００２は、起動処理に引き続いてインストールプログラムメモリ２２からインストールプログラムを取り込み、当該インストールプログラムを実行させるものである。操作受付部１００３は、操作部１３を介して入力される操作者からの指示を受け付けるものである。
【００３２】
図２においては、ＨＤ１１の記憶容量を、セクタ数で表している。ここでは、説明の便宜上、その全セクタ数を１００，０００（すなわち、総ＬＢＡ１００，０００）とする。図２（Ａ）に示す、出荷時の状態のメモリマップでは、メモリチップ１１Ａに、対となるＨＤ１１の属性（ＨＤの型番、総ＬＢＡ等）が書き込まれている。
【００３３】
図２（Ｂ）に示す、インストーラ（２Ａ）によるインストール（あるいはセットアップ）後のメモリマップでは、インストーラ（２Ａ）によって、ＨＤ１１の先頭部分のセクタ領域に、図２（Ｂ）の例では、ＬＢＡ０にＭＢＲ１１０(Master Boot Record)の書き込み領域が設定され、さらに、ＭＢＲ１１０より後方側の領域が複数のパーティションに区分けされて、所定のファイルが書き込まれている。パーティションは所定数、例えば最大で４個まで区分けが可能である。ここでは、パーティション（１）に第１のＯＳが、パーティション（２）に第２のＯＳが、パーティション（３）に必要なデータ類がインストールされている。また、第１のＯＳ、第２のＯＳの環境で動作する各アプリケーションプログラムファイル（ＡＰ）も対応するパーティション内に書き込まれている。また、説明の便宜上、パーティションの区分けは、パーティション（１）の領域がＬＢＡ１〜ＬＢＡ４９，９９９であり、パーティション（２）の領域がＬＢＡ５０，０００〜ＬＢＡ６９，９９９であり、パーティション（３）の領域がＬＢＡ７０，０００〜ＬＢＡ１００，０００であるとする。
【００３４】
また、ＭＢＲ１１０は、端末１のブート時に、アクティブパーティションを検索して起動するためのプログラムコード（ＢＳＬ：Boot Strap Loader）を有し、さらにパーティションテーブル（ＰＴ）１１１を有する。パーティションテーブルＰＴ１１１は、図２（Ｂ）のように区分けされた各パーティション（１）〜（３）についての開始ＬＢＡ、終了ＬＢＡ、その他のデータをそれぞれ記憶するものである。なお、パーティションテーブルＰＴ１１１の各パーティション（１）〜（３）のテーブル内には、開始ＬＢＡ、終了ＬＢＡの他、アクティブフラグの有無、パーティションタイプ、パーティションサイズのデータも含まれる。ところで、パーティションの開始位置、終了位置をセクタ番号で表記する方式としてＣＳＨ方式もあるが、開始位置、終了位置のセクタ番号で記述する点においてＬＢＡ式と同様である。また、通常は、アクティブフラグはパーティション（１）に対応するテーブルに設定されており、従って、端末１のブート時には、パーティション（１）の第１のＯＳか、あるいはパーティション（２）の第２のＯＳが選択的にＲＡＭ１２に展開され、次いで必要に応じてパーティション（３）のデータの順で、ＲＡＭ１２に展開される。
【００３５】
図２（Ｃ）に示す、インストーラ（２Ｂ）によるインストール処理は、管理ファイル等をインストールする。図２（Ｂ）と比べると、パーティション（３）の後方に管理ファイルがインストールされており、さらに、ＭＢＲ１１０内のブートストラップローダ（ＢＳＬ）が専用ローダに書き替えられている。管理ファイルをインストールする領域は、図２（Ｃ）の例では、ＬＢＡ９０，０００〜ＬＢＡ１００，０００となっている。従って、パーティション（３）の領域は、図２（Ｂ）では、ＬＢＡ７０，０００〜ＬＢＡ１００，０００であるのに対して、図２（Ｃ）では、ＬＢＡ７０，０００〜ＬＢＡ８９，９９９となる。そして、この変更に応じて、パーティションテーブルＰＴ１１１内のパーティション（３）のテーブル内容のうち、終了ＬＢＡは、ＬＢＡ８９，９９９に書き替えられている。この管理ファイルがインストールされるために準備される領域を、ここでは「空き領域」という。なお、図２（Ｃ）に示すように、「空き領域」内には、図２（Ｂ）で示した、ＭＢＲ１１０内のブートストラップローダＢＳＬが保管されている。この保管処理によって、ブートストラップローダＢＳＬを専用ローダに代えてＭＢＲ１１０に戻すことが可能となる（すなわち、図２（Ｂ）のセットアップ状態で端末を使用する環境に戻すことが可能となる。）。
【００３６】
図３は、インストーラ（２Ｂ）のプログラムに従ってＣＰＵ１０が実行する、管理ファイルのインストール処理の手順を示すフローチャートである。
【００３７】
まず、インストーラ（２Ｂ）が端末１に接続されて、起動スイッチがオンされると（あるいは自動起動されると）、次いでインストーラ（２Ｂ）が起動したかどうかが判断される（ステップＳ１）。インストーラ（２Ｂ）の起動に引き続いて、インストールのための初期設定が実行され（ステップＳ３）、続いてインストールが実行される（ステップＳ５）。なお、ステップＳ１において、インストーラ（２Ｂ）が起動するまでを監視してもよいし、所定時間経過して起動が確認できなければ、本フローを抜けるようにしてもよい。
【００３８】
図４は、「初期設定」のサブルーチンであり、図５は「インストール実行」のサブルーチンである。図４において、まず、インストール処理部１００２は、メモリチップ１１Ａから総ＬＢＡを、またＭＢＲ１１０内のパーティションテーブルＰＴ１１１から最終パーティション（図２では、パーティション（３）に該当）の終了ＬＢＡを取得する（ステップＳ１１）。次いで、インストール処理部１００２は、最終パーティションの終了ＬＢＡから先頭側に所定ＬＢＡ分だけ「空き領域」を作成する（ステップＳ１３）。「空き領域」は、管理ファイルがインストールされ、かつ必要に応じて退避されるブートストラップローダＢＳＬが格納可能な記憶容量を有する。ここでは、図２（Ｃ）に例示するように、ＬＢＡ９０，０００〜ＬＢＡ１００，０００のサイズが設定されている。
【００３９】
なお、各パーティションのサイズは予め余裕を持って区分けされていることから、それらの後方部分は一般的にはデータはなく、大きく空いている。従って、最終パーティションの後方側の一部分に強制的に空き領域を形成することは可能である。仮に、「空き領域」を形成する対象領域にデータが存在しているような場合（あるいは対象領域にデータが存在しているか否かを検知することなく、一律に）、公知のデフラグ処理を１回乃至は必要回数だけ繰り返すことで、「空き領域」を確保することは可能である。なお、デフラグ処理とは、デフラグ用のプログラムファイルを実行することで行われる処理で、パーティション内のファイルを先頭側から再配置し、断片的な隙間領域を解消する処理をいう。ＨＤ１１内において、ファイルの書き込みと読み出しを繰り返し行うと、ファイルの配置が、パーティション内で不連続になり、細分化された隙間スペースが散在的に生じ得る。このような隙間スペースの細分化が進行すると、連続した空き領域が確保できなくなるため、かかる状態を放置すると、新たなファイルは、これを分割して２個以上の隙間スペースに分けて保存するといったような状況が発生する可能性が出てくる。そして、これは、読み書き速度の低下等、情報処理品質を低下させる。デフラグ処理は、かかる問題を解消するものであり、かつ、これによって隙間スペースをパーティションの後方に、空き領域としてまとめることができる。
【００４０】
図５において、まず、「空き領域」の先頭のＬＢＡ以降の所定位置にＭＢＲ１１０内のブートストラップローダＢＳＬが書き込まれ、退避処理が行われる（ステップＳ２１）。次いで、最終パーティションの終了ＬＢＡが空き領域分だけ減算され、この減算値が新たな終了ＬＢＡとして、ＭＢＲ１１０内のパーティションテーブルＰＴ１１１の該当するテーブルに更新される（ステップＳ２３）。この処理によって、図２（Ｂ），（Ｃ）の例では、パーティション（３）の最終パーティションはＬＢＡ８９，９９９と記述され、この結果、パーティション（３）内のデータに対する第１、第２のＯＳからのアクセスは、パーティションテーブルＰＴ１１１を参照することで、ＬＢＡ７０，０００〜ＬＢＡ８９，９９９の領域内に制限されることになる。
【００４１】
続いて、インストーラ（２Ｂ）の管理ファイルメモリ２４から管理ファイルが読み出され、「空き領域」の所定のセクタから、例えば先頭のＬＢＡからインストールされる（ステップＳ２５）。次いで、インストーラ（２Ｂ）の専用ローダメモリ２３から専用ローダが読み出され、ＭＢＲ１１０内のブートストラップローダＢＳＬに代えて書き込まれる（ステップＳ２７）。
【００４２】
専用ローダは、端末１がブートされる場合に、ＨＤ１１内の所定セクタにインストールされた管理ファイルを優先してＲＡＭ１２に読み出す指示を行うものである。管理ファイルの内容は後述するが、管理ファイルのＲＡＭ１２への読み出しが終了すると、管理ファイル内に含まれるローダプログラムによって第１のＯＳ、又は第２のＯＳ、必要なデータ類が順番にＲＡＭ１２に読み出される。そして、ＲＡＭ１２への読み出し処理が終了すると、管理ファイルは本来の管理処理を開始する。なお、管理ファイルによって、第１のＯＳ、又は第２のＯＳ、必要なデータ類がＲＡＭ１２に読み出される態様では、管理ファイルのＲＡＭ１２への読み出し終了後、専用ローダから管理ファイルへ制御が受け渡されればよい。
【００４３】
図６は、ＣＰＵ１０によって実行される端末１の起動から動作中における機能を説明するブロック図である。図６において、ＣＰＵ１０は、ＨＤ１１からＲＡＭ１２に読み出されたプログラムを実行することによって、端末１の起動を制御する起動処理部１０１、操作部１３を経由して入力される操作内容を受け付ける操作受付処理部１０２、操作部１３からの操作内容及び情報処理プログラム等に従って情報処理を実行する情報処理部１０３、表示部１４に表示する画像を作成する表示処理部１０４、管理ファイル（のプログラム）によって実行される管理処理部１０５、及びＮＩＣ（Network Interface Card）１５を経由して外部ネットワーク（典型的にはインターネット）経由で他の情報処理装置である端末と通信する通信処理部１０６として機能する。
【００４４】
なお、図１はインストールに必要な構成を示したが、端末１は、図６に示すように、さらにＢＩＯＳ（Ｂａｓｉｃ Input/Output System）が書き込まれるＢＩＯＳメモリ１１Ｂを有している。ＢＩＯＳメモリ１１Ｂは、ＲＯＭ乃至はフラッシュＲＯＭで構成され、内部には、端末１をブートするプログラム（ＢＩＯＳ）が書き込まれている。ＢＩＯＳは、ＭＢＲ１１０内の専用ローダを優先的に指定し、ブートするように設定されている。
【００４５】
起動処理部１０１は、専用ローダ処理部１０１１、管理ファイル動作環境設定部１０１２、及びＯＳローダ処理部１０１３を備えている。専用ローダ処理部１０１１は、端末１の起動スイッチが投入（電源オン）された後、ＢＩＯＳを起動させてＭＢＲ１１０内の専用ローダを読み出し、次いでこの専用ローダに制御を渡すことで、専用ローダによる処理を実行するものである。管理ファイル動作環境設定部１０１２は、管理ファイルがＲＡＭ１２に展開された後に、専用ローダの一部あるいは管理ファイルの一部のプログラムによってＲＡＭ１２内の特定の領域に高い特権レベル（後述する）を設定するものである。ＯＳローダ処理部１０１３は、管理ファイルの動作環境が設定された状態で、すなわち、管理ファイルによる後述の監視の下での、第１のＯＳ、第２のＯＳ、必要なデータ類の読み出しを行うものである。
【００４６】
情報処理部１０３は、第１、第２のＯＳの動作環境で実行される各種のアプリケーションプログラムを利用して、操作部１３からの操作内容を受け付けて、所望の情報処理を実行するものである。情報処理としては、例えば、文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、さらにはＮＩＣ１５及びネットワーク（典型的にはインターネット）を経由して行う情報の送受信等が想定される。表示処理部１０４は、作成、加工された情報や送受信に関する情報の表示部１４への表示制御を行うものである。管理部１０５は、管理ファイルによる各種のアクセスの監視、及び本発明に関連するメモリチップ１１Ａへのアクセスに対応するフック処理を行うもので、詳細は後述する。通信処理部１０６は、ＮＩＣ１５を介してネットワーク上に接続されている他の端末、各種の情報を格納したデータサーバ等との間で情報の送受信を行わせるものである。
【００４７】
図７〜図９は、ＢＩＯＳのロードからＯＳの動作監視までのＲＡＭ１２のメモリマップの変遷を示す図である。図７に示すように、本実施形態では、ＲＡＭ１２は４ＧＢの容量を有し、ＨＤ１１から読み込まれるファイルを、０ＭＢ〜１ＭＢの起動メモリ領域１２０、１ＭＢ〜１００ＭＢの領域、１００ＭＢ以上の領域に分けて書き込むようにしている。なお、領域の区分けは上記の位置、サイズに限定されず、適宜の区分け態様が採用可能である。
【００４８】
図７には、ＲＡＭ１２とチップセットとが示されている。チップセットは、図略のマザーボードを構成する主要部品で、ＣＰＵ１０や各種レジスタ群等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。ＲＡＭ１２は、複数の領域に分けて示してあり、０ＭＢ〜１ＭＢの起動メモリ領域１２０に、ＢＩＯＳ１２１、専用ローダ１２２、一時的ＧＤＴ（Global Descriptor Table）１２３が展開されている。端末１が起動されると、ＢＩＯＳ１２１がＢＩＯＳメモリ１１ＢからＲＡＭ１２の０ＭＢ〜１ＭＢの起動メモリ領域１２０に展開され、次いで、専用ローダ１２２がＨＤ１１から読み出される。専用ローダ１２２は、前述したように、起動メモリ領域１２０全域を書き替えることができ、この場合には、いわばリセット（クリア）処理が施されることになり、同時にＢＩＯＳ１２１も消去される。なお、ＲＡＭ１２全域をリセットする態様でもよい。これらにより、ＲＡＭ１２はクリア以前のファイルが全て消去されることになる。
【００４９】
一時的ＧＤＴ１２３は専用ローダ１２２によって作成されたもので、専用ローダ１２２によって１ＭＢ〜１００ＭＢに管理ファイル１２４をアンリアルモード（Unreal mood）でロードするためのアドレッシング用である。アンリアルモードとは、リアルモード環境においてチップセット内の図略のデータセグメントレジスタのアクセスリミットを４ＧＢに変更することによって、データアクセスのみ１ＭＢ以上、すなわち起動メモリ領域１２０外に対してアクセスを可能にした特殊な状態を指す。
【００５０】
また、ＲＡＭ１２の１ＭＢ〜１００ＭＢの領域には管理ファイル１２４、管理用ＧＤＴ１２５及び管理用ＩＤＴ１２６が展開されている。専用ローダ処理部１０１１は、ＨＤ１１内の管理ファイルをＲＡＭ１２の１ＭＢ〜１００ＭＢの所定位置に読み込む処理及びこれに関連する処理を行う。より具体的には、専用ローダ処理部１０１１は、まず、ＲＡＭ１２の１ＭＢ〜１００ＭＢへのアクセスを可能にするための処理、例えば一時的ＧＤＴ１２３の作成、チップセット内の各種レジスタに対する設定を行う。この場合に、管理ファイル動作環境設定部１０１２によって、一時的ＧＤＴ１２３は、管理ファイル１２４を構成するプログラムや管理テーブルの全て（のセグメントディスプリクタ）に対して特権レベルであるＤＰＬ（Description Privilege Level）に“０”（いわゆるリング“０”）を設定することによって、管理ファイル１２４を１ＭＢ〜１００ＭＢの所定位置に最も高い特権レベルでロード可能にしている他、この領域に設定される情報に対して全てＤＰＬ“０”でのロードを実現している。ＤＰＬとは、公知のように、メモリ空間の特権レベルを記述するもので、ＤＰＬ“０”からＤＰＬ“３”までの４ランクがある。ＤＰＬ値が小さい程、特権のレベルが高い。例えば、ＤＰＬ値の相対的に大きい値として記述された空間で動作するプログラムはＤＰＬ値がそれより小さい値で記述された空間側にアクセスすることはできない。すなわち、この場合は特権レベル違反として、後述する一般保護例外（＃ＧＰ）あるいはページフォルト（＃ＰＦ）が発行され、アクセスは無効とされる。一方、ＤＰＬ値の相対的に小さい値として記述された空間で動作するプログラムはＤＰＬ値がそれより大きい値で記述された空間側にアクセスしたり閲覧したりすることができる。これによって、不適当なアクセスか否かの判断が事前に可能となる。
【００５１】
また、専用ローダ処理部１０１１は、管理レジスタのうちのレジスタＣＲ０に対してフラグを設定することで、１ＭＢ〜１００ＭＢの領域へのアクセスをプロテクトモードで行う他、別途、リアルモードにおいて、一時的ＧＤＴ１２３のセグメントリミットを１Ｍ以上、ここでは４Ｇに設定したことで、アンリアルモードでの動作を可能としている。このアンリアルモードで、管理ファイル１２４がロードされ、次いで管理用ＧＤＴ１２５がロードされ、また管理用ＩＤＴ（管理用割込ベクタテーブル）１２６がロードされる。管理用ＧＤＴ１２５、管理用ＩＤＴ１２６の各セグメントディスクリプタは、当該時点で必要なテーブル部分までが予め作成されており、専用ローダ処理部１０１１によってロードされる。専用ローダ処理部１０１１は、これら必要な情報のロード後、ＣＰＵ１０の制御を管理ファイル１２４に渡す（ジャンプする）。
【００５２】
図８は、１ＭＢ〜１００ＭＢの領域にＴＳＳ１２７、ＰＴＥ（Page Table Entry）１２８及び管理用割込ハンドラ１２９が作成された状態のメモリマップである。また、図には示していないが、必要に応じてタスク毎のＬＤＴ（Local Descriptor Table）が作成される。管理ファイル動作環境設定部１０１２は、また、管理ファイル１２４のプログラムによって、ＴＳＳ１２７、ＰＴＥ（Page Table Entry）１２８、管理用割込ハンドラ１２９及び必要なＬＤＴを作成する。なお、ＴＳＳ１２７及びＰＴＥ１２８は、後述するように、１０１ＭＢ以上で動作するタスク（主に、ＨＤ１１からのＯＳのロード）を監視するための管理用（プロテクト）モード用のテーブルと、１００ＭＢ〜１０１ＭＢで動作するタスクを監視するＶＭ８０８６モード用のテーブルとを備えている。モードを図略のタスクスイッチで適宜切り替えることで、ＯＳを構成する各プログラムのロードと当該ＯＳの各プログラムのセグメントディスプリクタを管理用ＧＤＴ１２５，ＩＤＴ１２６にそれぞれ追加する処理が可能となる。
【００５３】
ＴＳＳ１２７は、管理ファイル１２４内の各管理用のプログラム（タスク）の各々に対応付けて作成されている。すなわち、ＴＳＳ１２７は動作状態に応じたプログラムを稼働させるべく、タスクスイッチによって必要なプログラムに実行状態を移し、かつ直前のプログラムの処理内容を対応する個々のＴＳＳにコンテキストすることで、現状復帰を可能にしている。ＰＴＥ１２８は、ＧＤＴ１２５で作成されたリニアアドレスを物理アドレスに変換するためのもので、各情報（各プログラムコード、各データ、各スタック、存在フラグＰ）について対応して設けられている。
【００５４】
ここで、図１１〜図１４を用いて、ＧＤＴ１２５及びＰＴＥ１２８と、リニアアドレスから物理アドレスへの変換との関係を説明する。まず、端末１が起動する際のモードである１６ビットのプログラムで動作するリアルモードでは、セグメント値とオフセット値とを用いてアドレスが決定され、公知のように、セグメント値を４ビットずらした値（１６倍した値）にオフセット値を加算することで、最大、（１ＭＢ＋６４ＫＢ）までのアドレス（リニアアドレス）が直ちに物理アドレスとして算出できる。一方、それ以上のアドレスに対しては、プロテクトモードが採用されており、例えば３２ビットのプログラムで動作する態様では、４ＧＢまでアドレス指定が可能となる。なお、それぞれの情報（タスク）毎に、異なるアドレスを設定することで、仮想アドレス空間が設定できることから、情報（タスク）を所要データ量ずつに分けて、格納することが可能である。
【００５５】
図１１は、かかる情報格納態様に対応するもので、情報の格納箇所を示すＧＤＴ１２５の全体概要を示している。ＧＤＴ１２５は、例えば８バイト単位で各情報の格納箇所を管理するセグメントディスクリプタのリストである。各セグメントディスクリプタは、４つの属性を有している。属性は、情報の「種別」（プログラムコード、データ、スタック）と、「ベースアドレス」と、「リミット」と、「ＤＰＬ」である。「ベースアドレス」は、情報のＲＡＭ１２内における格納基準（スタート）アドレスを示している。「リミット」は、情報のアクセス範囲を示す。ＤＰＬは、前述した特権レベルを示す。アドレッシングにおいて採用されるセグメントディスクリプタは、リニアアドレスからの変換に際して使用されるセグメントセレクタの情報を介して選択される。また、タスクのアクセスが許可されるものか否かは、アクセス要求時に、チップセット内に書き込まれたレジスタ（例えばレジスタＣＳ，ＤＳ，ＳＳのいずれかの）内のＣＰＬ（Current Privilege Level）及びＲＰＬ（Requested Privilege Level）と、ＧＤＴ１２５の対応するセグメントディスクリプタとを照合することで決定される。この技術を利用し、特定のタスク（プログラム）がアクセス可能（使用可能）なメモリの領域を限定するようにすれば、他のタスク（プログラム）への干渉を防ぎ、端末１を安全かつ安定して稼働させることができる。
【００５６】
図１２は、ＰＴＥのメモリマップを示す。各ページデータは所定のデータ量、例えば４ＫＢ毎に分割されており、各ページデータは、物理アドレスとアクセス属性とが設定されている。各ページデータは、プログラムコード、データ、スタック、存在フラグＰの種類が含まれる。物理アドレスは、リニアアドレスをＲＡＭ１２内の所定の位置に移動させるためのものである。アクセス属性は、特権レベルに相当するもので、「スーパーバイザー」と「ユーザ」とを有する。「スーパーバイザー」は特権レベルＤＰＬ“０”〜ＤＰＬ“２”に該当し、「ユーザ」は特権レベルＤＰＬ“３”に該当する。また、データに該当するページにＮＸ−Ｂｉｔ（Ｎｏｎ  ｅＸｅｃｕｔｅ  Ｂｉｔ）を保有し、当該ページからＣＰＵ１０に命令コードが発行できなくする。そして、ＣＰＵ１０からのアクセスが特権レベル違反となる場合には、例外割込の一般保護例外（＃ＧＰ）が発行され、一方、アクセス属性違反となる場合には、ページフォルト（＃ＰＦ）が発行される。いずれの場合にも、割込ハンドラ１２９を経てアクセスを無効とする処理が実行される。なお、アクセスの無効とは、アクセス自体をシャットダウンする態様、改変された特権レベル値を正しい値に書き直す態様を含む。存在フラグＰは、変換後のアドレスにデータが存在している場合か否かを存在フラグＰが“０”かどうかで判断し、存在フラグＰが“０”であれば、このアドレスの情報を一旦退避する処理を行うようにしている。そして、変換後のアドレスが、かかるアドレスに該当した場合に、ページフォルト（＃ＰＦ）が発行されるようにしている。この機能を利用して、すなわち特定のタスク（プログラム）が動作するメモリ領域に対してページフォルトが発生するようにし、管理ファイルがフック（Hook）して、この特定のタスク（プログラム）の実行を管理ファイルの管理下で行うようにすれば、他のタスク（プログラム）からのアクセスを防ぎ、特定のタスク（プログラム）のみをメモリ上で隔離し、かつ保護することができる。
【００５７】
図１３は、リニアアドレスから物理アドレスに変換する変換方法を図で示したものである。ＣＰＵ１０で作成された、ある情報をアクセスするためのリニアアドレスは、ＧＤＴ１２５のセグメントセレクタとベースアドレス、さらにＰＴＥ１２８の物理アドレスとを用いて物理アドレスに変換されることとなる。図１４は、プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示すものである。まず、リアルモードでは、リニアアドレスの０ＭＢ〜１ＭＢは、物理アドレスの０ＭＢ〜１ＭＢに対応する。この範囲は１６ビット仕様であり、両者は一致する。ところで、ＰＴＥ１２８は、後述するように管理用（１００ＭＢ以下の領域）とＶＭ８０８６用（１００ＭＢ〜１０１ＭＢの領域）とが準備される。ここでは、プロテクトモードにおける管理用のアドレッシングについて説明する。すなわち、リニアアドレスの０ＭＢ〜１ＭＢを、物理アドレスの１００ＭＢ〜１０１ＭＢに対応するようにしている。このように、物理アドレスの１００ＭＢ（あるいは１０１ＭＢでもよい）以上の所定の値をＰＴＥ１２８内の管理用側のテーブルの各タスクの物理アドレスの項に設定するようにしている。この物理アドレスの設定により、ＰＴＥ１２８のタスク（代表的にはＯＳのロード、あるいはＯＳの実行）は、全て１００ＭＢ（あるいは１０１ＭＢ）以上の設定アドレスにロード、あるいは展開されることになる。換言すれば、ＰＴＥ１２８によって１００ＭＢ（あるいは１０１ＭＢ）以上のあるアドレスにページングされる結果、管理ファイル１２４及びＧＤＴ１２５、ＩＤＴ１２６，ＴＳＳ１２７、ＰＴＥ１２８、割込ハンドラ１２９が配置されている１００ＭＢ以下にアクセスされることはなく、従って、ＧＤＴ１２５その他のテーブル内の内容の改変はできず、かつそもそも１００ＭＢ以下は見えない（存在しない）ことと等価となる。
【００５８】
図１４は、１００ＭＢ〜１０１ＭＢの領域に０ＭＢ〜１ＭＢの専用ローダがコピーされ、及び同領域の所定位置にＯＳ等をロードするためのＯＳローダ１３０が作成された状態、さらにその後の、ＯＳ１３３、必要に応じて読み出されたＤＡＴＡ１３４、及び必要に応じて読み出されたＡＰ１３５の各ファイルが１０１ＭＢ以上の領域にロードされた状態のメモリマップである。ＯＳ１３３は、第１のＯＳ、第２ＯＳの双方あるいは選択された一方のＯＳのファイルを含む。１００ＭＢ〜１０１ＭＢへの情報の書込処理はＶＭ８０８６モードで行われる。なお、ＶＭ８０８６モードとは、プロテクトモード実行中に、リアルモードに切り替える処理を行うと管理の煩雑さ等を考慮すれば効率が低下することから、ＥＦＬＡＧＳレジスタのＶＭビットを切り替えてリアルモードのアドレス演算を行うようにし、１６ビット用のプログラムを実行可能にするものである。この期間において、当該領域から０ＭＢ〜１００ＭＢの情報へのアクセスをページングによって無効にしている。
【００５９】
ＯＳローダ処理部１０１３は、端末１側に読み出される０ＭＢ〜１ＭＢの専用ローダ１２２をＲＡＭ１２の１００ＭＢ〜１０１ＭＢにロードする処理、及びＯＳローダ１３０をロードする処理を行う。ＯＳローダ１３０は、管理ファイル１２４から読み出され、あるいはＭＢＲ１１０から読み取ったプログラムである。
【００６０】
また、図９中、破線で示すＯＳ用ＧＤＴ１３１、ＯＳ用ＩＤＴ１３２は、ＯＳ１３３が自己の挙動を記述するためのテーブルを作成したものである。
【００６１】
ＯＳローダ処理部１０１３は、まず、ＶＭ８０８６モード（すなわちＣＰＬ“３”）に設定した状態で、制御レジスタＣＲ３に物理アドレスを設定して、ＯＳローダ１３０を起動させてＨＤ１１からＯＳ１３３を構成する各プログラムを順次ＲＡＭ１２の１０１ＭＢ以上の領域にロードするものである。ＨＤ１１からロードされてきたＯＳ１３３は、自己の動きを記述するＯＳ用のＧＤＴを作成するべく、チップセットのレジスタＧＤＴＲの内容を書き換えようとするＬＧＤＴ要求を出す。一方、チップセットのレジスタＧＤＴＲへのアクセス（書き替え要求）はＣＰＬ“０”でのみ許可されるものであるから、管理部１０５は、このアクセスに対して、例外としての一般保護例外（＃ＧＰ）を発行する。そして、この一般保護例外は、ＩＤＴ１２６を介して、管理ファイル１２４の割込ハンドラ１２９に移行する。管理部１０５は、割込ハンドラ１２９を介して、プログラムカウンタを用いてＣＰＵ１０が次に実行するべき命令（プログラム）の格納場所を指すレジスタＥＩＰを参照して、不当なアクセス要求をしているプログラムのアクセスを特定し、レジスタＧＤＴＲの書き替えを禁止すると共に、当該不当なプログラムに対し、改変された特権レベルを元の値に書き直す等の割込ハンドラ処理を実行する。また、管理視部１０５は、この不当なプログラムをＧＤＴ１２５に新たなセグメントディスクリプタとして追加し、特権レベルの項目にＤＰＬ“２”を設定し、かつＰＴＥ１２８の管理用のテーブルに新たなページングテーブルとして追加し、物理アドレスとして少なくとも１０１Ｍ（あるいは１００Ｍ）以上の所定のアドレス値を設定する。これにより、ＧＤＴ１２５のアクセス権がＤＰＬ“２”に設定されることで、以後、ＯＳ側から０ＭＢ〜１００ＭＢ内へのアクセスは不当アクセスとして無効にされ、かつＰＴＥ１２８によってＯＳからは１００Ｍ以下の物理アドレス変換が不可能となる。
【００６２】
情報処理部１０３は、第１のＯＳ環境で所望するＡＰをＨＤ１１のパーティション（１）から読み出して実行させ、あるいは第２のＯＳ環境で所望するＡＰをＨＤ１１のパーティション（２）から読み出して実行させるものである。
【００６３】
図１０は、端末１のＣＰＵ１０によって実行されるブート処理の手順を説明するフローチャートである。まず、端末１の電源投入後、ＢＩＯＳ１２１がＲＡＭ１２に読み込まれて、ＢＩＯＳ処理が開始される（ステップＳ３１）。すなわち、ＢＩＯＳ１２１が起動され、次いでＰＯＳＴ処理が実行される。そして、ＰＯＳＴ処理によってＨＤ１１の先頭セクタのＭＢＲ１１０が選択されて専用ローダ１２２が読み込まれる（ステップＳ３３）。次いで、ＣＰＵ１０の制御が専用ローダ１２２に渡されて、専用ローダ１２２が起動され、管理ファイル１２４の読み込みが行われる（ステップＳ３５）。次いで、管理ファイル動作環境設定処理が実行され、例えばＲＡＭ１２の領域内に特権レベルが設定される（ステップＳ３７）。そして、最後に、それぞれのＯＳ１３３、各種のＤＡＴＡ１３４及びそれぞれのＡＰ１３５がロードされる（ステップＳ３９）。
【００６４】
図１５は、ＣＰＵ１０によって実行される、ＯＳブート後における管理ファイル１２４の処理を示すフローチャートである。まず、０ＭＢ〜１００ＭＢにＯＳ（あるいはＡＰ）のプログラムから管理用ＧＤＴ１２５にアクセスがなされたか否かが判断される（ステップＳ５１）。管理用ＧＤＴ１２５にアクセスがなければ、通常のＯＳ（あるいはＡＰ）処理であるとして、管理されることなく本フローを抜ける。一方、管理用ＧＤＴ１２５にアクセスがあれば、アクセスしてきたＯＳの特権レベルとレジスタＧＤＴＲの特権レベルとの照合によって一般保護例が発行される（ステップＳ５３）。そして、管理用ＩＤＴ１２６から一般保護例外に対応する割込ハンドラ１２９へのジャンプが実行される（ステップＳ５５）。その結果、割込ハンドラ１２９の処理が実行される（ステップＳ５７）。ここでの割込ハンドラ１２９の処理は、管理用ＧＤＴ１２５へのアクセスの拒否、あるいはアクセスされたことを想定して、正常な内容に書き直す処理を行うようにしてもよい。かかる処理によって、ＯＳ側からの管理ファイル１２４に対する改竄目的等の不当なアクセスを拒絶することができ、管理ファイル１２４がセキュアな状態に維持される。
【００６５】
続いて、図１６以降において、管理ファイル１２４による管理処理、より具体的には、メモリチップ１１Ａからの情報の取り出しに対する管理処理について説明する。
【００６６】
メモリチップ１１Ａには、前述したように総ＬＢＡの情報が含まれている。一方、図２（Ｃ）のメモリマップ及び図５のインストール実行処理フローチャートに示すように、ＨＤ１１の最終パーティション（図２の例ではパーティション（３））の終了ＬＢＡを所定値だけ先頭側にずらし、これにより、この部分に「空き領域」を設定して管理ファイルを格納した。すなわち、ＨＤ１１の記憶容量は、最終パーティション（３）の終了ＬＢＡが「空き領域」分だけ小さく設定されたことになる。図２（Ｂ），（Ｃ）の例では、本来はＬＢＡ１００，０００であるが、パーティションテーブルＰＴ１１１上では、ＬＢＡ９０，０００に設定されている。従って、ＯＳからパーティションテーブルＰＴ１１１の当該終了ＬＢＡを参照しても、このままでは、管理ファイルの存在を知得することはできない。
【００６７】
管理ファイルは、前述したように、端末１による処理を監視するものである。従って、不当なアクセスから、典型的にはウイルス等のマルウエアによる攻撃によって管理ファイル内のプログラムが改竄されたり、損傷を受けたりして、機能が損なわれることを阻止する必要がある。そこで、ＨＤ１１の記憶容量を書き替えて、すなわちパーティションテーブルＰＴ１１１の最終パーティションの終了ＬＢＡの値を書き替えて、パーティションテーブルＰＴ１１１上は、ＨＤ１１内に管理ファイルが所在しないことと等価とした。
【００６８】
ところで、端末１が起動した後は、前述したように、ＲＡＭ１２内の管理ファイル１２４によって特権レベルＤＰＬ０が設定され、管理ファイル１２４は不当なマルウエアからの攻撃に対抗することができる。一方、管理ファイルが格納されている元の記憶媒体であるＨＤ１１側へのマルウエアの攻撃に対抗する処置は、パーティションテーブルＰＴ１１１に対する対策に加えて、メモリチップ１１Ａに対する対策も必要である。
【００６９】
端末１が起動した後に、ＯＳあるいはＡＰのファイルの実行とは別に、マルウエアが起動して、メモリチップ１１Ａ内の総ＬＢＡの値が参照されてしまうと、パーティションテーブルＰＴ１１１内の最終パーティションの終了ＬＢＡとの不一致が検知され、ＨＤ１１に「空き領域」が存在することが知られてしまう。そして、この「空き領域」に、マルウエアが処理乃至は作成した結果物のファイルが書き込まれることが考えられる。その結果、このマルウエアに実行に起因した結果物たるファイルが、「空き領域」の管理ファイルに上書きされて、ＨＤ１１上から管理ファイルが削除、破壊、改変されることにもなりかねない。ＨＤ１１内の「空き領域」に格納された管理ファイルが、一旦削除、破壊されると、次回の端末１の起動時に管理ファイル１２４がＲＡＭ１２上に展開されず、管理ファイルの機能が損なわれることになりかねない。あるいは、ＨＤ１１上の管理ファイルが改変されると、次回の端末１に起動後に、管理ファイルは異なる内容で、すなわちマルウエアによって挙動される、偽の管理ファイルで実行される可能性もある。
【００７０】
外部（ＯＳ１３３、ＡＰ１３５又はマルウエア等）からメモリチップ１１Ａがアクセスされる態様としては、Ｉ／Ｏポート１０Ａ（図１６参照）を経由する場合と、メモリマップドＩ／Ｏ（ＭＭＩＯ）を経由する場合とがある。そこで、これらのアクセスに対抗する方法として、メモリチップ１１Ａから総ＬＢＡが読み取られることのない保護機能を、本実施例では管理ファイル内に設けている。より具体的には、管理ファイルは、外部（ＯＳ、ＡＰ又はマルウエア等）からのメモリチップ１１Ａへのアクセスをフックし、かつ、アクセスに基づいて読み出された情報を外部（ＯＳ、ＡＰ又はマルウエア等）が閲覧する前に、読み出された内容（総ＬＢＡ）を、前記フック動作を活用して書き替える処理を行う。
【００７１】
図１６は、かかるフック機能のうち、Ｉ／Ｏポート１０Ａを経由する場合の実施形態を説明するための機能構成図である。図１６において、Ｉ／Ｏポート１０Ａは、ＣＰＵ１０に対応して設けられているもので、ＨＤ１１（乃至はメモリチップ１１Ａ）をアクセスする場合に用いられる。以後、ＨＤ１１乃至はメモリチップ１１Ａへのアクセスを、ＨＤ１１等へのアクセスという。Ｉ／Ｏポート１０Ａの各ポートは、ＣＰＵ１０から見たＨＤ１１等のアドレスに対応している。メモリチップ１１Ａの総ＬＢＡの読み出し処理は、Ｉ／Ｏポート１０Ａ内の、データレジスタ（アドレス0x01f0）、ステータスレジスタ及びコマンドレジスタ（いずれもアドレス0x01f7）を用いて行われる。ステータスレジスタは、ＨＤ１１側が読み書き中（Busy）か、データ転送要求がある状態であることを示すものである。コマンドレジスタは、メモリチップ１１Ａのデータを読み出すためのコマンドであるデバイス情報取得パラメータ「Oxec：IDENTIFY DEVICE」をセットするためのものである。データレジスタは、読み出しコマンドによって読み出されるデータの読出先のレジスタである。なお、読み出される情報量は、５１２B（１セクタ分）であり、一方、総ＬＢＡのデータサイズは、そのうちの２Ｂである。また、Ｉ／Ｏポート１０Ａ内のデータレジスタの容量は、１６ビットであることから、５１２Ｂの読み出しに際しては、データレジスタで複数回の繰り返し処理が実行されて、レジスタ群内の１つの汎用レジスタに書き込まれることになる。
【００７２】
また、ＴＳＳ１２７は、各プログラム（タスク）の各々に対応付けて作成されており、それぞれにＩ／Ｏ許可ビットマップを持っている。そこで、データレジスタ（アドレス0x01f0）へのアクセスに対応するタスクのＩ／Ｏ許可ビットマップにフラグ１を設定しておくことで、管理部１０５は、アクセスと同時にこのアクセスをフックする処理を実行する。レジスタ群内のＴＲレジスタには、ＴＳＳ１２７の現タスクのセグメントが設定され、これを参照することで、Ｉ／Ｏ許可ビットマップのフラグの内容を検知することができる。管理部１０５は、かかるフックを検出すると、例外割込を発生させ、管理ファイル１２４を介して割込ハンドラ１２９に移行し、所定の割込処理プログラムを実行する。割込処理プログラムは、汎用レジスタに書き込まれたデータを取り出し、その内の総ＬＢＡのデータについて、予め設定されている所定値を減算し、新たな値を元の汎用レジスタに書き込む処理である。予め設定されている減算する所定値とは、「空き領域」分を差し引いた値であり、図２（Ｂ），（Ｃ）の例では、セクタ数で１０，０００である。割込ハンドラ１２９はこの処理の後、ＣＰＵ１０に制御を返す。従って、データレジスタ（アドレス0x01f0）をアクセスした外部（ＯＳ、ＡＰ又はマルウエア等）は、書き替え後の総ＬＢＡを取得することになる。この結果、「空き領域」の存在は検知されず、ＨＤ１１内の管理ファイルが削除等されることはない。
【００７３】
図１７は、フック処理Ｉの流れを説明するフローチャートである。まず、外部（ＯＳ、ＡＰ又はマルウエア等）、例えばＯＳ１３３からＩ／Ｏポート１０Ａのステータスレジスタの内容の読み込みが行われる（ステップＳ６１）[図１６中の（１）]。このとき、Ｉ／Ｏポート１０Ａがビジー又はデータ転送要求有りであれば、すなわち少なくとも一方の状態にあれば（ステップＳ６３でＮｏ）、この状態が終わるまで待機する。一方、いずれの状態にもなければ（ステップＳ６３でＹｅｓ）[図１６中の（２）]、Ｉ／Ｏポート１０Ａのコマンドレジスタにデータ読み出し要求のコマンドが送出される（ステップＳ６５）[図１６中の（３）]。次いで、Ｉ／Ｏポート１０Ａのデータレジスタへのアクセスが行われ（ステップＳ６７）、メモリチップ１１Ａから読み出され[図１６中の（４）]、このデータの閲覧（読み込み）が行われようとする。一方、このアクセスの時点で例外が発生し（ステップＳ６９）[図１６中の（３）]、次いで、この例外に基づいて割込処理Ｉが実行される（ステップＳ７１）[図１６中の（５）]。
【００７４】
図１８は、割込処理Ｉの流れを説明するフローチャートを示す。先ず、管理ファイル１２４によって、Ｉ／Ｏポート１０Ａのコマンドレジスタから読み出されたデータが書き込まれた汎用レジスタがアクセスされてデータの読み出し要求が行われる（ステップＳ８１）。なお、管理ファイル１２４は特権レベルＤＰＬ０であるから、このアクセスで例外が発生することはない。
【００７５】
次いで、アクセスされた汎用レジスタ内のデータの内の総ＬＢＡに対応する位置のデータから「空き領域」分のセクタ数が減算される（ステップＳ８３）。そして、減算して得られた値が元の汎用レジスタに書き込まれ（ステップＳ８５）、すなわち値が書き替えられ、この後、割込が終了する。次いで、ＯＳ１３３は、汎用レジスタにデータを閲覧しに行く[図１６中の（６）]。この結果、ＯＳ１３３は、メモリチップ１１Ａに格納されている本来の総ＬＢＡではなく、書き替え後の総ＬＢＡを取得することになる。
【００７６】
なお、割込処理は、汎用レジスタに一旦書き込まれたデータを読み出して減算処理する方法に代えて、Ｉ／Ｏポート１０Ａ内のデータレジスタに読み込まれるデータを取り込み、減算処理を施してから、レジスタ群内の所定の汎用レジスタに書き込むという方法であってもよい。
【００７７】
図１９は、ＭＭＩＯを経由する場合の実施形態を説明するための機能構成図である。図１９においては、ＲＡＭ１２は、説明の便宜上ＣＰＵ１０から見たアドレス空間を示すシステムメモリマップとして表記している。ＲＡＭ１２は、チップセット内のアクセスに関するシステムレジスタ領域、バスマスタ式のＰＣＩ（Peripheral Component Interconnect）のアドレス空間であってＭＭＩＯが展開されている領域、管理ファイル１２４が格納されるセキュア領域、及びＯＳ１３３等が展開される領域に区分されている。
【００７８】
ＭＭＩＯは、ＣＰＵ１０が各Ｉ／Ｏデバイス（ＨＤ１１も含む）にアクセスするための命令を、ＲＡＭ１２へアクセスするための命令と同一のアドレス空間で扱えるようにした方式である。ＭＭＩＯは、Ｉ／Ｏデバイスに対するデバイスドライバに対応するＩ／Ｏレジスタで構成されている。ＣＰＵ１０は、かかるＩ／Ｏレジスタに動作許可等の情報の読み書きをすることで、対応するＩ／Ｏデバイスの制御を行うようにしている。ＭＭＩＯの展開領域内には、「ＨＤ用Ｉ／Ｏデバイス」と示しているように、ＨＤ１１に対応するＩ／Ｏレジスタ領域が設けられている。そして、ＨＤ１１に対応するＩ／Ｏレジスタを介してＨＤ１１側にアクセスすることができるようになっている。
【００７９】
ＡＨＣＩ（Advanced Host Controller Interface）１６は、ＲＡＭ１２とＨＤ１１側との間に介在され、ＲＡＭ１２とＨＤ１１側との間でのデータ転送を行うためのコントローラである。より詳細には、ＡＨＣＩ１６は、その下層のＡＴＡ、あるいはＳＡＴＡの通信規約に則ったデバイスを有し、ＦＩＳ（Frame Information Structure）という構造を有するデータをバスマスタ式で、ＲＡＭ１２側からＨＤ１１側に、またＨＤ１１側からＲＡＭ１２側にデータを転送する。ＲＡＭ１２側からＨＤ１１側に転送されるデータは、ＲＥＧＨＤＦＩＳ１６１の構造体で行われ、ＨＤ１１側からＲＡＭ１２側に戻されるデータは、ＲＥＧＤＨＦＩＳ１６２の構造体で行われる。
【００８０】
チップセット内のデバッグレジスタＤＲ７には、ＲＡＭ１２のＭＭＩＯ内の「ＨＤ用Ｉ／Ｏデバイス」のアドレスが書き込まれている。すなわち、ＣＰＵ１０がこの「ＨＤ用Ｉ／Ｏデバイス」のアドレスをデータ読み取りとしてアクセスすると、このアクセスが管理ファイル１２４によって、デバッグ例外としてフックされるようになっている。管理ファイル１２４は、このフックに基づいて、割込ハンドラ１２９を経て所定の割込処理を実行させる。割込処理は、「ＨＤ用Ｉ／Ｏデバイス」からＲＥＧＤＨＦＩＳ１６２の内容を読み出し、「空き領域」分のセクタ数を差し引いて、元に戻す処理である。管理部１０５は、特権レベルがＤＰＬ０であることから、ＨＤ１１に該当するＭＭＩＯ内の「ＨＤ用Ｉ／Ｏデバイス」のアドレスを常時監視しておき、読み出しタスク時に、当該アドレスをデバッグレジスタＤＲ７に書き込むようにすることで、デバッグ例外を発生させ、外部（ＯＳ、ＡＰ又はマルウエア等）によるメモリチップ１１Ａ内の総ＬＢＡの知得を阻止する。
【００８１】
図２０は、フック処理ＩＩの流れを説明するフローチャートである。まず、外部（ＯＳ、ＡＰ又はマルウエア等）から、メモリチップ１１Ａ内の総ＬＢＡを読み出す要求情報がＲＥＧＨＤＦＩＳ１６１に設定される（ステップＳ９１）[図１９中の（１）]。より具体的には、ＲＥＧＨＤＦＩＳ１６１にＨＤ１１側（詳細にはメモリチップ１１Ａ）の番号情報が、コマンドにデバイス情報取得パラメータ（0xec：ＩＤＥＮＴＩＦＹ  ＤＥＶＩＣＥ）がセットされ、ＡＨＣＩ１６を介してＨＤ１１側に転送され[図１９中の（１）]、ＨＤ１１側で処理が行われて、デバイスのステータスが返され、更にＲＥＧＤＨＦＩＳ１６２にIdentify Dataである総ＬＢＡを含むデータがセットされ、返送されることとなる[図１９中の（２）]。
【００８２】
次いで、ＲＥＧＤＨＦＩＳ１６２がＨＤ１１側に対するＭＭＩＯ内の「ＨＤ用Ｉ／Ｏデバイス」のアドレスに書き込まれる（ステップＳ９３）。続いて、外部（ＯＳ、ＡＰ又はマルウエア等）から、ＲＥＧＤＨＦＩＳ１６２の書き込まれたアドレスに対して、メモリチップ１１Ａの総ＬＢＡを読み出すためのアクセスがあると（ステップＳ９５）[図１９中の（３）]、直ちにデバッグ例外が発生する（ステップＳ９７）[図１９中の（４）]。次いで、このデバッグ例外に基づいて割込処理ＩＩが実行される（ステップＳ９９）[図１９中の（５）]。
【００８３】
図２１は、割込処理ＩＩの流れを説明するフローチャートを示す。先ず、管理ファイル１２４によって、ＲＥＧＤＨＦＩＳ１６２内のＨＤ１１の総ＬＢＡが書き込まれている「ＨＤ用Ｉ／Ｏデバイス」がアクセスされる（ステップＳ１１１）。なお、管理ファイル１２４は特権レベルＤＰＬ０であるから、このアクセスで例外が発生することはない。
【００８４】
次いで、アクセスしたＲＥＧＤＨＦＩＳ１６２内のＨＤ１１の総ＬＢＡから空き領域分のセクタ数が減算され（ステップＳ１１３）、減算された値がＲＥＧＤＨＦＩＳ１６２の元の位置に戻される、すなわち書き替えられる（ステップＳ１１５）。この後、割込が終了する。次いで、ＯＳ１３３は、「ＨＤ用Ｉ／Ｏデバイス」にデータを閲覧するためにアクセスする。この結果、ＯＳ１３３は、メモリチップ１１Ａに格納されている本来の総ＬＢＡではなく、書き替え後の総ＬＢＡを取得することになる。
【００８５】
図２２は、フック処理ＩＩＩの流れを説明するフローチャートである。フック処理ＩＩＩは、図１９の機能構成図に対して以下の構成を備えている。ＲＡＭ１２には、図９のＰＴＥ１２８が形成されている。このＰＴＥ１２８は、前述したように存在フラグＰを有しており、ＭＭＩＯ内の「ＨＤ用Ｉ／Ｏデバイス」のアドレスへのアクセスのタスクをチップセット内のページテーブルレジスタＣＲ３に、フラグ０として設定する。このようにすると、外部（ＯＳ、ＡＰ又はマルウエア等）から「ＨＤ用Ｉ／Ｏデバイス」のアドレスがアクセスされると、直ちにページフォルトが発生するようになっている。
【００８６】
図２２では、まず、ＨＤの総ＬＢＡ読出要求がＲＥＧＨＤＦＩＳ１６１に設定される（ステップＳ１２１）。より具体的には、ＲＥＧＨＤＦＩＳ１６１にＨＤ１１側（詳細にはメモリチップ１１Ａ）の番号情報が、コマンドにデバイス情報取得パラメータ（0xec：ＩＤＥＮＴＩＦＹ  ＤＥＶＩＣＥ）がセットされ、ＡＨＣＩ１６を介してＨＤ１１側に転送され、ＨＤ１１側で処理が行われて、デバイスのステータスが返され、更にＲＥＧＤＨＦＩＳ１６２にIdentify Dataである総ＬＢＡを含むデータがセットされ、返送されることとなる。
【００８７】
次いで、ＲＥＧＤＨＦＩＳ１６２がＨＤ１１側に対するＭＭＩＯ内の「ＨＤ用Ｉ／Ｏデバイス」のアドレスに書き込まれる（ステップＳ１２３）。続いて、ＲＥＧＤＨＦＩＳ１６２の書き込まれたＭＭＩＯのアドレスに対して、ページテーブルレジスタＣＲ３の存在フラグＰがフラグ０かどうか判断される（ステップＳ１２５）。ページテーブルレジスタＣＲ３の存在フラグＰがフラグ０でなければ、本フローを抜ける。一方、ページテーブルレジスタＣＲ３の存在フラグＰがフラグ０であれば、直ちにページフォルトの例外が発生し（ステップＳ１２７）、次いで、割込処理ＩＩＩが実行される（ステップＳ１２９）。なお、割込処理ＩＩＩは、図１９に示す割込処理ＩＩと同様である。
【００８８】
図２３は、フック処理ＩＶの流れを説明するフローチャートである。フック処理ＩＶは、図１９の機能構成図に対して以下の構成を備えている。図１９に示すＡＨＣＩ１６は、ＲＥＧＨＤＦＩＳ１６１によるＨＤ１１へのアクセスに対応して作成されたＲＥＧＤＨＦＩＳ１６２が返送されると、ハードウエア割込（ＩＲＱ）を発行するようなっている。そして、このハードウエア割込（ＩＲＱ）を受けて、外部（ＯＳ、ＡＰ又はマルウエア等）から、ＨＤ１１側に対するＭＭＩＯ内の「ＨＤ用Ｉ／Ｏデバイス」のアドレスへの読出のためのアクセスが行われるようになっている。一方、管理ファイル１２４は、このハードウエア割込（ＩＲＱ）を検知（フック）して、ＲＡＭ１２のセキュア領域に作成されている割込ディスクリプタテーブルＩＤＴ１２６から、割込ハンドラ１２９で所定の割込処理が実行される。なお、割込処理ＩＶは、図１９に示す割込処理ＩＩと同様である。
【００８９】
以上のように、管理ファイルのＨＤ１１内での格納位置をマルウエアに知得されることがないため、マルウエアによって管理ファイルが破壊、削除、改変等されることが阻止でき、端末１の動作環境をセキュアな管理ファイルによって監視される。また、管理ファイルの環境下で動作可能なＯＳ乃至ＡＰを、ＲＡＭ１２上の管理ファイル１２４と同一特権レベル内にロードするようにすれば、高いセキュリティで当該ＡＰの処理を実行することが可能となる。
【００９０】
次に、図２４〜図２６は、管理ファイルの環境下で特定のアプリケーションをセキュアに実行する他の実施形態を説明するための図である。図２４（Ａ）（Ｂ）は、特定アプリケーションのＲＡＭへのロードを説明するための図、図２５は、管理ファイル環境の下での特定アプリケーションの実行方法を説明するための図、図２６は、ＣＰＵ１０によって実行される特定アプリケーションの実行手順を説明するフローチャートである。
【００９１】
前記端末１は、パーソナルコンピュータ、モバイル等にも適用される。このような場合、端末１は、ＯＳ環境下で利用可能な各種の汎用アプリケーション（ＡＰ）を備える一方で、特定のアプリケーションについては高いセキュリティ環境で使用することが望まれる。端末１を、例えば電子商取引、電子決済、個人情報が関連する情報の取得等の手段（特定ＡＰ）としても適用する場合である。そこで、前述した管理ファイル１２４によってセキュアに制御される端末１において、ＯＳ１３３で動作する各種の汎用のＡＰの領域に特定ＡＰを配置しても、高いセキュリティ環境で使用し得るようにした。以下、説明する。
【００９２】
図２４（Ａ）に示すように、ＲＯＭ１１のパーティション（１）〜（３）のいずれか、ここではパーティション（１）の適所には所定サイズのダミーＡＰ１３５１が予めインストールされている。また、前述の「空き領域」にインストールされた管理ファイル内には、特定ＡＰ１３５２が含まれている。特定ＡＰ１３５２はダミーＡＰ１３５１のデータサイズと等しいか、あるいは対応するものである。
【００９３】
ダミーＡＰ１３５１は、ＲＡＭ１２へのロードの際には、ＯＳ１３３によって、汎用のＡＰ１３５と同じ領域の所定箇所に、ダミーＡＰ１３５１としてロードされる。続いて、特定ＡＰ１３５２は、管理ファイル１２４によって、ＲＡＭ１２上のダミーＡＰ１３５１に重畳（一部重畳も含む）してロードされる。
【００９４】
図２４（Ａ）（Ｂ）では、操作部１３から、特定ＡＰの実行指令が入力されると、ＯＳ１３３はこの指示を受け付けて、ダミーＡＰ１３５１をロードする。続いて、特権レベルＤＰＬ０の管理ファイル１２４が特定ＡＰを上書きロードする。特権レベルＤＰＬ０の管理ファイル１２４によって行われる処理は、相対的に特権レベルが低いＯＳからは関与し得ない。従って、ＯＳ１３３やＯＳ１３３のロード領域にマルウエアが存在していたとしても、ダミーＡＰ１３５１が特定ＡＰ１３５２に更新されたことを知得することはできない。
【００９５】
さらに、管理ファイル１２４は、特定ＡＰ１３５２に対応する、システムテーブル内のＧＤＴもしくはＬＤＴのテーブルのベースアドレス及びリミットを当該特定ＡＰ１３５２のロード位置を含めて設定する。特定ＡＰ１３５２は、かかるベースアドレス及びリミットで記述される領域１３５２ａ（図２５参照）内で動作が制限され、他のＡＰに影響を与えない。かつ、管理ファイル１２４は、このアドレスへのアクセスに対してページフォルトを発生するよう設定する。ページフォルトが発生すると、管理ファイル１２４はこれをフックし、割込ハンドラ１２９（図２５参照）を介して、特定ＡＰの実行を許可する。
【００９６】
なお、図２５において、ドライバ群１３６は、各種のドライバ、例えばシスプレイドライバとかネットワークドライバ等を含む。Ａｇｅｎｔ１３７は、特定ＡＰ１３５２の動作の間、管理ファイル１２４によって特定ＡＰ１３５２にアクセスできる権限を有するようにされ、発生したイベントをログ出力したり、管理ファイル１２４とＯＳ側のＡＰの中継（ＩＦの役割）をしたり、ユーザーからみた場合の管理画面の役割を担うものである。また、通信時にＯＳのドライバを使用するため、特定ＡＰ１３５２で作成されたデータをネットワーク上のサーバ等へ送信するといった役割も担うものである。符号化処理１３８はこの場合に、作成されたデータに暗号化、加工を施す符号化処理を行って難読性を持たせることで、仮にドライバ１３６を介してデータが漏洩したとしても対処できるという耐タンパ性を確保している。
【００９７】
図２６において、まず、操作部１３からの特定ＡＰ１３５２に対する処理の指示の有無が判断される。特定ＡＰ１３５２に対する処理の指示とは、例えば、端末１の画面で、特定ＡＰに対応付けられている処理、例えば電子決済のアイコン（あるいはボタンやキー）が選択された場合等である。なお、この指示は、ＯＳ１３３との関係でダミーＡＰとも対応付けられている（従って、この指示の発生に伴って、ＯＳ１３５はダミーＡＰ１３５１をＲＡＭ１２内にロードする。）。指示がなければ、本フローを抜ける（ステップＳ１５１）。なお、他の処理（汎用のＡＰ等）の指示である場合には、当該指示に対応付けされた処理が実行される。
【００９８】
一方、ステップＳ１５１で指示があったのであれば、ＯＳ１３３によるダミーＡＰ１３５１のロードが実行される（ステップＳ１５３）。管理ファイル１２４は、かかるＯＳ１３３によるダミーＡＰ１３５１のロードを監視しており、そのロード位置を取得して、ロード処理に引き続いて、同一位置に特定ＡＰをロードする処理を行う（ステップＳ１５５）。次いで、管理ファイル１２４は、当該アドレスへのアクセスに対して（すなわち、特定ＡＰ１３５２へのアクセスに対して）、ページフォルトを設定し、及び本実施形態では当該位置にＧＤＴのベースアドレス及びリミットを書き替えて、ページフォルト領域１３５２ａを設定し、特定ＡＰ１３５２の動作領域を制限するようにした（ステップＳ１５７）。
【００９９】
かかる処理が終了した段階で、管理ファイル１２４は、ＣＰＵ１０をＯＳ１３５に戻す。ＯＳ１３５は、ロードしたダミーＡＰ１３５１を実行させるつもりで、この位置をアクセスすることになる。その結果、ＯＳ１３３によってページフォルトの発生を行わせる（ステップＳ１５９）。このページフォルトは管理ファイル１２４によってフックされ（ステップＳ１６１）、管理ファイル１２４から割込ハンドラ１２９を介して、特定ＡＰ１３５２の実行が許可される（ステップＳ１６３）。ページフォルトによる処理であるため、仮にマルウエアが存在しても、その期間、ページフォルト領域１３５２ａへは関与できないこととなる。そして、特定ＡＰの処理が終了すると、本フローを終了する。
【０１００】
なお、図２６の処理は、フローチャートのとおり、操作部１３からの特定ＡＰの処理の指示が受け付けられる毎に行われるため、毎回確実に特定ＡＰ１３５２がロードされ、高いセキュリティ環境で実行される。
【０１０１】
なお、本発明は、以下の態様を採用することが可能である。
【０１０２】
（１）ＲＡＭ１２のメモリマップにおいて、ＯＳ１３３、ＤＡＴＡ１３４、ＡＰ１３５を０ＭＢ側に配置し、管理ファイル１２４等のセキュア領域をその状側に配置するようにしてもよい。これによれば、アドレスを小さい値とすることで、繰り返し読み書きされるＯＳ，ＡＰの読み書き処理を容易かつ、その速度を高速に行うことができる。
【０１０３】
（２）管理部１０５によるフック処理として、Ｉ〜ＩＶの実施例を説明したが、要するにメモリチップ１１Ａに書き込まれている総ＬＢＡ値を読み出す処理に関連して、結果的にその総ＬＢＡ値が外部アクセスから知得されないようにする処理であればよい。
【０１０４】
（３）本実施形態では、ＲＡＭ１２上の管理ファイル１２４を特権レベルを用いてＯＳ等からのアクセスに対抗し得るものとしたが、ＨＤ１１からロードされる管理ファイル１２が正常であれば、格別の保護機能は備えず、あるいは他の保護機能で対応するようにしてもよい。
【０１０５】
（４）なお、特定ＡＰ１３５２をページフォルトに起因して実行する方法は、管理ファイルがＨＤ１１からロードされる態様に限定されず、本出願人による特許文献３，４、ＰＣＴ／ＪＰ２０１０／６８３４６、日本特許出願２０１１−２３５３８６に記載の外部ブート技術を採用した場合でもよい。
【０１０６】
（５）上記実施形態では、ＢＩＯＳを用いた例で説明したが、本発明は、次世代用のＵＥＦＩ（Unified Extensible Firmware Interface）を使用する場合にも同様に適用可能である。
【０１０７】
ＵＥＦＩでは、現行のＭＢＲ、ＰＴは使用されず、ＰＴに代えて、ＧＰＴ（GUID パーティションテーブル）という新しい構成が使用される。ＧＰＴでは、ＬＢＡ１〜ＬＢＡ３３のセクタが使用される。ＬＢＡ１には第１ＧＰＴヘッダが格納され、ユーザが使用可能なＨＤ１１の範囲を定義している。また、ＬＢＡ１では、ＧＰＴエントリ（各パーティションの定義情報を持つ）のエントリ数とサイズとが定義されている。また、第１ＧＰＴに異常が発生した場合に差し替えるための第２ＧＰＴ（常にＨＤ１１の最後のセクタに設定されている）の位置とサイズも保持している。さらに、ＧＰＴの内容を改竄されないように、ＧＰＴ自身のチェックサム値もＧＰＴヘッダに保持されている。ＧＰＴエントリには、各パーティションの定義が記載されている。
【０１０８】
ＧＰＴを使用している端末に、本発明に係る管理ファイルをインストールする場合、インストールのタイミングは、第２ＧＰＴの前であって、最終パーティションの後である。この場合、第１ＧＰＴの最終パーティションの終了セクタ位置を書き換えると同時に、チェックサムの値を再計算し、第１ＧＰＴヘッダの値を書き換え、整合性を保つようにすればよい。同時に第２ＧＰＴの値（第１ＧＰＴでもよい）を、本発明に係る管理ファイルの領域にバックアップを取り、第２ＧＰＴを第１ＧＰＴ同様に書き換えるようにすればよい。
【０１０９】
その後の動作については、ＧＰＴ参照時やＨＤ１１のＲＥＧＨＤＦＩＳ等の値をフック（Hook）し、書き替えることで対応が可能である。
【０１１０】
（６）また、本実施形態では、特定のファイル情報の一例としての管理ファイルの保護を例に挙げているが、保護の対象は、後述のとおり、それに限られない。通常、パーティション内のデータはＯＳやアプリケーションからアクセスが可能である。作成データ、メール、アンチウイルスソフトやファイアウォール等のセキュリティ対策ソフト、更には暗号化で使用される鍵情報や暗号化のロジックもＨＤのパーティション内に記憶されている。これらに対して、ＯＳからアクセスが可能であるということは、マルウエア等のウイルスからも同様にアクセスが可能ということになる。これに対して、本技術によって作られるパーティション外の隔離保護領域は、ＯＳやアプリケーションからアクセスできない。これはウイルスからもアクセスすることができない領域であることを意味する。これにより、ＩＤ、パスワード、暗号化の鍵情報、暗号化のロジック、セキュリティ対策ソフト、Firewall、機密情報やメール等の特定のファイル情報をウイルスから保護しつつ（高いセキュリティーの下で）、ＨＤに記憶することが可能である。また、本発明は、パーソナルコンピュータに限らず、ＣＰＵ、ＨＤ（ＳＳＤを含む）の構成を持つ、コピー機、スマートフォン、タブレット等の情報処理装置にも同様に適用が可能である。
【符号の説明】
【０１１１】
１  端末（情報処理装置）
１０  ＣＰＵ
１００２  インストール処理部
１１  ＨＤ（ハードディスク）
１１０  ＭＢＲ
１１１  パーティションテーブル
１１Ａ  メモリチップ（メモリ部材）
１２  ＲＡＭ（主メモリ）
１０１１  専用ローダ処理部
１０１２  管理ファイル動作環境設定部
１０１３  ＯＳローダ処理部
２Ｂ  インストーラ
２２  インストールプログラムメモリ
２４  管理ファイルメモリ
１２２  専用ローダ
１２４  管理ファイル
【図１】
2014112304.tif 000003
【図２】
2014112304.tif 000004
【図３】
2014112304.tif 000005
【図４】
2014112304.tif 000006
【図５】
2014112304.tif 000007
【図６】
2014112304.tif 000008
【図７】
2014112304.tif 000009
【図８】
2014112304.tif 000010
【図９】
2014112304.tif 000011
【図１０】
2014112304.tif 000012
【図１１】
2014112304.tif 000013
【図１２】
2014112304.tif 000014
【図１３】
2014112304.tif 000015
【図１４】
2014112304.tif 000016
【図１５】
2014112304.tif 000017
【図１６】
2014112304.tif 000018
【図１７】
2014112304.tif 000019
【図１８】
2014112304.tif 000020
【図１９】
2014112304.tif 000021
【図２０】
2014112304.tif 000022
【図２１】
2014112304.tif 000023
【図２２】
2014112304.tif 000024
【図２３】
2014112304.tif 000025
【図２４】
2014112304.tif 000026
【図２５】
2014112304.tif 000027
【図２６】
2014112304.tif 000028