(57)【要約】      （修正有）【課題】ＢＩＯＳ起動に応じて主メモリ内の第１領域にセキュア領域を構築すると共にアクセス保護情報に差を持たせて、第２領域からの不当なアクセスを無効化し、主メモリ内にセキュア領域を確保する。【解決手段】ＢＩＯＳの起動に応じて外部デバイスからＲＡＭ１２の０ＭＢ〜１ＭＢに専用ローダ１２３をロードする専用ローダロードステップと、ＲＡＭ１２の１ＭＢ〜１００ＭＢにＤＰＬ“０”（最高特権レベル）を設定し、かつＲＡＭ１２の１０１ＭＢ〜４ＧＢへロードされるＯＳの１ＭＢ〜１００ＭＢへのアクセスを監視するための管理ファイルを専用ローダ１２３によって外部デバイスから１ＭＢ〜１００ＭＢにロードする管理ファイルロードステップと、管理ファイルのロードからＯＳのロードまでの間に、ＤＰＬ“２”又はＤＰＬ“３”を１０１ＭＢ〜４ＧＢに設定するアクセス保護情報設定ステップとを備えた。【選択図】図４
2013101550.tif 000002
【特許請求の範囲】
【請求項１】
ＢＩＯＳの起動に応じて外部デバイスから主メモリの起動メモリ領域に専用ローダをロードする専用ローダロードステップと、
前記主メモリの一部の第１領域に対して保護特権を設定し、かつ前記主メモリの前記第１領域及び起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）の前記第１領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第１領域にロードする管理ファイルロードステップと、
前記管理ファイルのロードから前記ＯＳのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第２領域に設定するアクセス保護情報設定ステップとを備えたことを特徴とする情報処理空間管理方法。
【請求項２】
前記専用ローダロードステップは、前記起動メモリ領域を更新的に前記専用ローダをロードすることを特徴とする請求項１に記載の情報処理空間管理方法。
【請求項３】
前記専用ローダのロードは前記主メモリの前記起動メモリ領域の全体に強制的に行うことを特徴とする請求項２記載の情報処理空間管理方法。
【請求項４】
前記第１領域と前記起動メモリ領域とは同一の保護特権が設定されていることを特徴とする請求項１〜３のいずれかに記載の情報処理空間管理方法。
【請求項５】
前記前記起動メモリ領域は、０ＭＢ〜１ＭＢであることを特徴とする請求項１〜４のいずれかに記載の情報処理空間管理方法。
【請求項６】
前記管理ファイルは、前記ＯＳ内の各プログラムのアクセス保護情報が登録されたＧＤＴ（Global Descriptor Table）を有し、前記第２領域から前記第１領域へアクセスされた前記ＯＳ内のプログラムに対して、前記ＧＤＴに登録されているアクセス保護情報を参照して前記一般保護例外を発行する処理を含むことを特徴とする請求項１〜５のいずれかに記載の情報処理空間管理方法。
【請求項７】
前記管理ファイルは、前記第２領域から前記第１領域への前記ＯＳ内のプログラムのアクセスに対して、前記一般保護例外を発行し、ＩＤＴ（Interrupt Descriptor Table）を介して割込ハンドラによって前記アクセスを無効にする処理を含むことを特徴とする請求項６に記載の情報処理空間管理方法。
【請求項８】
前記ＧＤＴで生成されたリニアアドレスはＰＴＥ（Page Table Entry）を用いて物理アドレスに変換されるもので、前記ＰＴＥは、前記ＧＤＴで生成されたリニアアドレスに加算される、少なくとも前記第２領域内アドレス値が設定されたものであることを特徴とする請求項１〜７のいずれかに記載の情報処理空間管理方法。
【請求項９】
前記ＰＴＥは、前記ＯＳの各プログラムに対するアクセスレベル属性情報が登録されており、前記第２領域からの前記ＯＳのプログラムのアクセスに対して前記ＰＴＥを介してページフォルトを発行し、ＩＤＴを介して前記割込ハンドラによって前記アクセスを無効にすることを特徴とする請求項８記載の情報処理空間管理方法。
【請求項１０】
前記アクセス保護情報は、前記第１領域に対して値０が設定され、前記ＯＳに対して値２が設定され、前記ＯＳによって稼働されるＡＰ（Application Program）に対して値３が設定されていることを特徴とする請求項１〜９のいずれかに記載の情報処理空間管理方法。
【請求項１１】
前記ＯＳのロード後、前記第２領域からの前記ＯＳのプログラムのアクセスに対して一般保護例外を発行し、前記アクセスを無効にする不正アクセス対応ステップを含むことを特徴とする請求項１〜１０のいずれかに記載の情報処理空間管理方法。
【請求項１２】
接続された情報処理装置にファイルのロードを行う外部デバイスにおいて、
ＢＩＯＳの起動に応じて主メモリの起動メモリ領域にロードする専用ローダと、
主メモリの一部の第１領域に対して保護特権を設定し、かつ前記主メモリの前記第１領域及び前記起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）の前記第１領域へのアクセスを監視するためのファイルであって前記第１領域にロードされる管理ファイルと、
前記管理ファイルのロードから前記ＯＳのロードまでの間にロードされ、前記保護特権より低いアクセス権限のアクセス保護情報を前記第２領域に設定するアクセス保護情報設定ファイルとを含むことを特徴とする外部デバイス。
【請求項１３】
ワークメモリである主メモリを有し、接続された外部デバイスから所定のファイルを前記主メモリにロードする情報処理装置において、
ＢＩＯＳの起動に応じて前記外部デバイスから前記主メモリの起動メモリ領域に専用ローダをロードする専用ローダロード部と、
前記主メモリの一部の第１領域に対して保護特権を設定し、かつ前記主メモリの前記第１領域及び起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）の前記第１領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第１領域にロードする管理ファイルロード処理手段と、
前記管理ファイルのロードから前記ＯＳのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第２領域に設定するアクセス保護情報設定手段とを備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理を行う端末、サーバ等のコンピュータ内蔵の情報処理装置等に対する、高セキュリティの情報処理空間管理技術に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークに接続されたサーバや端末（パーソナルコンピュータ）等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限（アドレス制限）の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
【０００３】
特許文献１には、情報処理装置のハードディスク内に格納されたＯＳ（Operation System）起動方法が記載されている。より詳細には、情報処理装置の電源投入が検知されると、フラッシュメモリに記憶されているＢＩＯＳ（Ｂａｓｉｃ Input/Output System）を起動して起動可能なブートデバイスを検索し、ＵＳＢ（Universal Serial Bus）メモリに格納されているブートＯＳを起動して、まず表示手段にパスワードの入力画面を表示させる。次いで、この入力画面に対して入力手段からのパスワードの入力を受け付ける。パスワードが入力されると、入力パスワードとＵＳＢメモリに固有な情報とを連結してハッシュ値に変換し、起動すべきハードディスクのロック解除パスワードを生成する。そして、起動するハードディスクがセキュリティ設定済みであると判断した場合には、前記ロック解除パスワードで前記ハードディスクのロック状態を解除する一方、前記ハードディスクがセキュリティ設定済みではないと判断した場合には、前記ハードディスクのセキュリティを設定し、ロック状態が解除された前記ハードディスクのＭＢＲ(Master Boot Record)を起動し、ＯＳのブートローダを起動し、これによってＯＳを起動する方法である。これにより、ＯＳ起動時のセキュリティ認証が可能になる。また、特許文献１には、前記ハードディスクのロック状態が解除された状態で、ＵＳＢメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されている。
【０００４】
また、特許文献２には、起動プログラムの実行方法が記載されている。より詳細には、パーソナルコンピュータからハードディスクに対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタに先立ってセキュリティ等の任意プログラムを格納した仮起動セクタを読み出し、該任意プログラムを実行させる起動前処理ステップを有するようにしたものである。そして、このセキュリティ等の任意プログラムの実行後に本来の起動プログラムを実行してＯＳを起動させるものである。これにより、パーソナルコンピュータのＢＯＩＳや記憶媒体の起動セクタ（ＬＢＡ０）を変更することなく、ＯＳ起動に先立ってセキュリティ等の任意のプログラムの実行を可能としている。
【０００５】
特許文献３には、オペレーティングシステムにオペレーティングシステム特権モードを設定すると共にユーザアプリケーションにユーザ特権モードを設定し、仮想マシン及び特権モードを用いてウイルス対策が講じられたコンピュータデバイスが記載されている。このコンピュータデバイスには、さらに、仮想マシンモニタ特権モードが設定された仮想マシンモニタ（ＶＭＭ）及び保護エージェント特権モードが設定された保護エージェント（ＶＭ）が設けられており、特権レベルは、仮想マシンモニタ特権モード、保護エージェント特権モード、オペレーティングシステム特権モード、ユーザ特権モードの順でアクセス権の強さが設定されている。従って、悪意者によって作成され、オペレーティングシステムに送り込まれたマルウエアが、特権モードが上位である保護エージェントに対してアクセスしても、かかるアクセスを受け付けず、保護エージェントの内容を改変することを阻止している。そして、マルウエアによってオペレーティングシステム内の資源（ＳＳＤＴ、ＧＤＴ、ＩＤＴ等）の改変、また保護エージェントの資源の改変が検知されると、システムをシャットダウンし、リブートすることで改変をリセットするようにしていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−６６１２３号公報
【特許文献２】特開２００６−２３６１９３号公報
【特許文献４】特表２０１０−５１７１６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１は、パスワード入力画面に対してパスワードを入力する態様であるためパスワードの盗難の虞があることから、ＵＳＢメモリの固有情報と結合してハッシュ値を作成し、ロック解除情報とする個人認証技術である。また、特許文献１には、ＵＳＢメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されているが、具体的な記載は一切ない。
【０００８】
一方、特許文献２では、ハードディスク内の仮起動セクタの任意プログラムがウィルスチェックプログラムである場合においても、そのプログラムが実行される前に、例えばＲｏｏｔｋｉｔの形態を有するような不正プログラムが起動され、任意プログラムから自身（不正プログラム）を隠蔽することも可能であるため、ウイルスチェックに対する信頼性に一定の限界がある。また、特許文献２にはＯＳ起動前にウイルスを監視する具体的な方法は一切記載されていない。電源投入前から潜伏していたウイルスを仮に発見し得るとしても、再起動（ＯＳ起動）後にはウイルスチェックは行われていないため、再起動中に侵入するウイルス対して依然として無防備の状態にある。さらに、特許文献１、２はパーソナルコンピュータ側で処理を担う一般的態様であるから、この点からしても高い信頼性を確保するには限界がある。
【０００９】
また、特許文献３は、順次異なる特権レベルを設定してオペレーティングシステムから侵入するマルウエアの不正アクセスを阻止する仮想マシンモニタ及び保護エージェントを利用したものである。しかしながら、特許文献３には、仮想マシン及び特権レベルの差を利用したアクセス阻止が説明されているのみで、コンピュータデバイスメモリのメモリマップに関しては何等記載されておらず、内容の改変が検出可能な仕組みまで開示されているとはいえない。また、特許文献３はオペレーティングシステムのマルウエアを対象としているが、その他の種類、主にはコンピュータデバイスの起動前から例えばＢＩＯＳやＭＢＲに潜伏していた場合等には、例えばオペレーティングシステムより上位の部分が、起動時に潜伏マルウエアによって改変され得るが、かかる場合の対策に関しては何等示されていない。特に、仮想マシンモニタ及び保護エージェントのインストール方法に関しては何等記載がなく、これら自体のセキュリティ性の確保は不明である。さらに、内部資源が改変された場合にシャットダウンし、リブートし得たとしても、それで不備の事情が完全に改善されるものでもない。
【００１０】
本発明の目的は、情報処理装置の起動に連動して主メモリの一部領域にロードされ、オペレーティングシステムからアクセス権限の高い、この一部領域への不当アクセスを制限した高セキュリティの情報処理空間管理技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係る情報処理空間管理方法は、ＢＩＯＳの起動に応じて外部デバイスから主メモリの起動メモリ領域に専用ローダをロードする専用ローダロードステップと、前記主メモリの一部の第１領域に対して保護特権を設定し、かつ前記主メモリの前記第１領域及び起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）の前記第１領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第１領域にロードする管理ファイルロードステップと、前記管理ファイルのロードから前記ＯＳのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第２領域に設定するアクセス保護情報設定ステップとを備えたことを特徴とするものである。
【００１２】
また、本発明に係る外部デバイスは、接続された情報処理装置にファイルのロードを行う外部デバイスにおいて、ＢＩＯＳの起動に応じて主メモリの起動メモリ領域にロードする専用ローダと、主メモリの一部の第１領域に対して保護特権を設定し、かつ前記主メモリの前記第１領域及び前記起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）の前記第１領域へのアクセスを監視するためのファイルであって前記第１領域にロードされる管理ファイルと、前記管理ファイルのロードから前記ＯＳのロードまでの間にロードされ、前記保護特権より低いアクセス権限のアクセス保護情報を前記第２領域に設定するアクセス保護情報設定ファイルとを含むことを特徴とするものである。
【００１３】
また、本発明に係る情報処理装置は、ワークメモリである主メモリを有し、接続された外部デバイスから所定のファイルを前記主メモリにロードする情報処理装置において、ＢＩＯＳの起動に応じて前記外部デバイスから前記主メモリの起動メモリ領域に専用ローダをロードする専用ローダロード部と、前記主メモリの一部の第１領域に対して保護特権を設定し、かつ前記主メモリの前記第１領域及び起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）の前記第１領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第１領域にロードする管理ファイルロード処理手段と、前記管理ファイルのロードから前記ＯＳのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第２領域に設定するアクセス保護情報設定手段とを備えたことを特徴とするものである。
【００１４】
これらの発明によれば、情報処理装置の電源が投入されると、ＢＩＯＳが起動する。このＢＩＯＳの起動に応じて、情報処理装置に接続されている外部デバイスから主メモリの起動メモリ領域に専用ローダがロードされる。次いで、前記主メモリの一部の第１領域に対して保護特権が設定される。かつ前記主メモリの前記第１領域及び起動メモリ領域とは異なる第２領域へロードされるＯＳ（Operating System）が、例えばマルウエアに感染しているような場合に、第２領域から第１領域へアクセスがあったかどうかを監視するための管理ファイルが前記専用ローダによって前記外部デバイスから前記第１領域にロードされる。そして、前記管理ファイルのロードから前記ＯＳのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報が前記第２領域に設定される。すなわち、本発明は、ＢＩＯＳの起動に応じて外部デバイスから専用ローダをロードするようにしたので、情報処理装置内のＢＩＯＳやＭＢＲに潜伏しているマルウエアの挙動を抑止して専用ローダを起動メモリ領域にクリーンのままロードすることが可能となる。そして、クリーンな専用ローダによって管理ファイルが同外部デバイスからロードされるので、保護特権の適正な設定及び不当アクセスの適正な監視が確保される。従って、マルウエアに感染したＯＳのプログラムが複製を行う等の目的でアクセスを企てて第２領域から第１領域に侵入してきても、アクセス保護情報の差によって、確実にフック（検知）され、かかる不当なアクセスは無効にされる。
【００１５】
請求項２記載の発明は、請求項１に記載の情報処理空間管理方法において、前記専用ローダロードステップは、前記起動メモリ領域を更新的に前記専用ローダをロードすることを特徴とする。この構成によれば、起動メモリ領域にマルウエアが潜伏し、あるいはフックのためのアドレスが記述されていても、これらの上に専用ローダを上書き等することで、結果的にマルウエアの挙動を抑止することが可能となる。
【００１６】
請求項３記載の発明は、請求項２に記載の情報処理空間管理方法において、前記専用ローダのロードは前記主メモリの前記起動メモリ領域の全体に強制的に行うことを特徴とする。この構成によれば、専用ローダは起動目盛領域の全域に対して強制的にロードされるので、潜伏マルウエアの挙動を抑止することが可能となる。
【００１７】
請求項４記載の発明は、請求項１〜３のいずれかに記載の情報処理空間管理方法において、前記第１領域と前記起動メモリ領域とは同一の保護特権が設定されていることを特徴とする。この構成によれば、これにおり、専用ローダについても高い保護特権が設定されることとなる。
【００１８】
請求項５記載の発明は、請求項１〜４のいずれかに記載の情報処理空間管理方法において、前記前記起動メモリ領域は、０ＭＢ〜１ＭＢであることを特徴とする。この構成によれば、本技術は専用の情報処理装置に限らず、汎用の情報処理装置（パーソナルコンピュータやサーバ類）にも適用可能となる。
【００１９】
請求項６記載の発明は、請求項１〜５のいずれかに記載の情報処理空間管理方法において、前記管理ファイルは、前記ＯＳ内の各プログラムのアクセス保護情報が登録されたＧＤＴ（Global Descriptor Table）を有し、前記第２領域から前記第１領域へアクセスされた前記ＯＳ内のプログラムに対して、前記ＧＤＴに登録されているアクセス保護情報を参照して前記一般保護例外を発行する処理を含むことを特徴とする。この構成によれば、アクセスされてきたＯＳ内のプログラムに対応するＧＤＴのセグメントディスクリプタのアクセス保護情報を参照することで、一般保護例外を発行することができ、これによって当該不当なアクセスは無効化される。
【００２０】
請求項７記載の発明は、請求項６に記載の情報処理空間管理方法において、前記管理ファイルは、前記第２領域から前記第１領域への前記ＯＳ内のプログラムのアクセスに対して、前記一般保護例外を発行し、ＩＤＴ（Interrupt Descriptor Table）を介して割込ハンドラによって前記アクセスを無効にする処理を含むことを特徴とする。この構成によれば、ＯＳによる第１領域へのアクセスが一律に無効化される。
【００２１】
請求項８記載の発明は、請求項１〜７のいずれかに記載の情報処理空間管理方法において、前記ＧＤＴで生成されたリニアアドレスはＰＴＥ（Page Table Entry）を用いて物理アドレスに変換されるもので、前記ＰＴＥは、前記ＧＤＴで生成されたリニアアドレスに加算される、少なくとも前記第２領域内アドレス値が設定されたものであることを特徴とする。この構成によれば、ページングによって物理アドレスは必ず第２領域内となるので、第２領域から第１領域へのアクセス自体が不可能となる。
【００２２】
請求項９記載の発明は、請求項８に記載の情報処理空間管理方法において、前記ＰＴＥは、前記ＯＳの各プログラムに対するアクセスレベル属性情報が登録されており、前記第２領域からの前記ＯＳのプログラムのアクセスに対して前記ＰＴＥを介してページフォルトを発行し、ＩＤＴを介して前記割込ハンドラによって前記アクセスを無効にすることを特徴とする。この構成によれば、第２領域からアクセスされてきたＯＳのプログラは、当該プログラムに対応するＰＴＥ内のセグメントディスクリプタのアクセスレベル属性情報との差によってページフォルトが発行されて、ＩＤＴ、割込ハンドラを介してかかるアクセスは無効化される。
【００２３】
請求項１０記載の発明は、請求項１〜９のいずれかに記載の情報処理空間管理方法において、前記アクセス保護情報は、前記第１領域に対して値０が設定され、前記ＯＳに対して値２が設定され、前記ＯＳによって稼働されるＡＰ（Application Program）に対して値３が設定されていることを特徴とするものである。この構成によれば、アクセス保護の差によってＯＳ，ＡＰから第１領域へのアクセスは無効にされル。この結果、第１領域がセキュア領域として保持される。
【００２４】
請求項１１記載の発明は、請求項１〜１０のいずれかに記載の情報処理空間管理方法において、前記ＯＳのロード後、前記第２領域からの前記ＯＳのプログラムのアクセスに対して一般保護例外を発行し、前記アクセスを無効にする不正アクセス対応ステップを含むことを特徴とする。この構成によれば、ＯＳロード後において、マルウエアに感染し、あるいは潜伏していたＯＳのプログラムが第１領域に不当なアクセスを行っても、第１領域が適正にセキュア領域として管理されているため、必ず一般保護例外が発行される。
【発明の効果】
【００２５】
本発明によれば、ＢＩＯＳ起動に応じて主メモリ内の第１領域にセキュア領域を構築すると共にアクセス保護情報に差を持たせることで、第２領域からの不当なアクセスを無効化し、主メモリ内にセキュア領域を確保することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。
【図２】図１に示す外部デバイスのハードウエア構成の一例を示すブロック図である。
【図３】端末及び外部デバイスのブートに関連する機能部の一例を示すブロック図である。
【図４】専用ローダのブートでのリアルモードにおける端末のＲＡＭのメモリマップの一例を示す図である。
【図５】専用ローダのブートでのプロテクトモードにおける端末のＲＡＭのメモリマップの一例を示す図である。
【図６】端末のＣＰＵによって実行されるシステムＢＩＯＳの起動処理の手順を説明するフローチャートである。
【図７】端末のＣＰＵによって実行されるシステムＢＩＯＳのＰＯＳＴ処理（ステップＳ３）の手順を説明するフローチャートである。
【図８】外部デバイスのＣＰＵによって実行される監視処理Ｉの手順を説明するフローチャートである。
【図９】外部デバイスのＣＰＵによって実行される監視処理IIの手順を説明するフローチャートである。
【図１０】端末のＣＰＵによって実行される拡張ＢＩＯＳ処理の手順を説明するフローチャートである。
【図１１】外部デバイスのＣＰＵ及び拡張ＢＩＯＳによって実行される監視処理IIIの手順を示すための説明図である。
【図１２】端末側のＣＰＵによって実行される監視処理IIIの一部手順を説明するフローチャートである。
【図１３】外部デバイス側のＣＰＵによって実行される監視処理IIIの一部手順を説明するフローチャートである。
【図１４】１ＭＢ〜１００ＭＢの領域に管理ファイル１２５、管理用ＧＤＴ１２６及び管理用ＩＤＴ１２７が展開された状態のメモリマップである。
【図１５】１ＭＢ〜１００ＭＢの領域にＴＳＳ１２８、ＰＴＥ（Page Table Entry）１２９及び管理用割込ハンドラ１３０が作成された状態のメモリマップである。
【図１６】１００ＭＢ〜１０１ＭＢの領域に０ＭＢ〜１ＭＢの内容（実質的に専用ローダと外部デバイス２から新たにロードされたシステムＢＩＯＳ）がコピーされた状態、及び同領域の所定位置にＯＳローダ１３１が作成された状態のメモリマップである。
【図１７】１０１ＭＢ以上の領域にＯＳがロードされる状態を示すメモリマップである。
【図１８】情報の格納箇所を示すＧＤＴ１２６の全体概要を示す図である。
【図１９】ＰＴＥのメモリマップを示す図である。
【図２０】リニアアドレスから物理アドレスに変換する変換方法を図で示した図である。
【図２１】プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示す図である。
【図２２】端末のＣＰＵによって実行される専用ローダ１２３の処理を示すフローチャートである。
【図２３】端末のＣＰＵによって実行される管理ファイル１２５の処理を示すフローチャートである。
【図２４】端末のＣＰＵによって実行される管理ファイル１２５のＯＳローダ作成処理を示すサブルーチンである。
【図２５】端末のＣＰＵによって実行される、ＯＳローダ作成後における管理ファイル１２５の処理を示すフローチャートである。
【図２６】端末のＣＰＵによって実行される、ＯＳブート後における管理ファイル１２５の処理を示すフローチャートである。
【図２７】端末のＣＰＵによって実行される、処理環境の切替処理を示すフローチャートである。
【図２８】スタック領域１２０３を割込ベクタテーブル１２０２に重畳する方法を説明する図である。
【図２９】ダミーコードの割込ベクタテーブルへの上書き処理、及び一般保護例外に基づく正常リセット処理を説明する図である。
【図３０】ブートの流れを簡単に説明する図である。
【発明を実施するための形態】
【００２７】
図１は、本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。図２は、図１に示す外部デバイスのハードウエア構成の一例を示すブロック図である。図３は、端末及び外部デバイスのブート及び管理に関連する機能部の一例を示すブロック図である。図４は、専用ローダのブートでのリアルモードにおける端末のＲＡＭのメモリマップの一例を示す図である。図５は、専用ローダのブートでのプロテクトモードにおける端末のＲＡＭのメモリマップの一例を示す図である。
【００２８】
図１に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末１と、この端末１に接続可能にされた、例えばＰＣＩ（Peripheral Component Interconnect）タイプの外部デバイス２と、インターネット等のネットワーク３とを備えている。端末１はプロバイダ（ＩＳＰ）４を介してネットワーク３と接続されている。外部デバイス２の一例としてのＰＣＩは、所定サイズからなるカセット型の筐体を有し、外部に端末１と接続するためのＩ／Ｏポートを有し、内部に、後述するようにＣＰＵ、拡張ＢＩＯＳ等を記憶する記憶部及びネットワーク３との通信を可能にするＮＩＣ（Network Interface Card）を備えている。本実施形態では、端末１はそのままネットワーク３に接続される一方、外部デバイス２が装着された状態では、後述するように外部デバイス２を経由してネットワーク３と接続される構成を有する。ネットワーク３上には複数のＩＳＰ４が配設されており、各ＩＳＰ４には、１又は複数の端末１や各種の情報を提供する図略のＷｅｂサイトが接続されている。外部デバイス２は、例えば、端末１からの操作を通して所定のサービスの提供を受ける権限を持つ会員として登録を受ける際に支給される。外部デバイス２は、内部の記憶部に会員を識別する情報及びその他の情報が記録されている。
【００２９】
端末１は、コンピュータを有しており、図３，図４及び図５に示すように、制御手段としてのＣＰＵ（Central Processing Unit）１０を有する。ＣＰＵ１０は、ＲＯＭ（Read Only Memory）１１とＲＡＭ（Random Access Memory）１２とに接続されている。ＲＯＭ１１には、データが書き換え可能なフラッシュＲＯＭを含む。本実施形態では、ＲＯＭ１１は、このフラッシュＲＯＭ、またＣＭＯＳ（Complementary Metal OxideSemiconductor）等を備え、フラッシュＲＯＭ１１Ａには、ＢＩＯＳ（Ｂａｓｉｃ Input/Output System）が書き込まれている。なお、本実施形態では、外部デバイス２にも後述するようにＢＩＯＳを格納していることから、以後、端末１のＢＩＯＳをシステムＢＩＯＳと呼称し、外部デバイス２のＢＩＯＳを拡張ＢＩＯＳと呼称して、両者を区別する。
【００３０】
また、ＣＰＵ１０には、図３に示すように、操作者が必要な指令や情報を入力するテンキーを有するキーボードやマウス等を備える操作部１３及び画像を表示する表示部１４が接続されている。表示部１４は、入力情報の確認のための表示や通信内容の表示のために用いられる。なお、システムＢＩＯＳは、拡張ＢＩＯＳを有するデバイスである外部デバイス２を優先的に指定するように設定されている。ＲＡＭ１２は、所定の記憶容量、一般的には３２ビット態様で４ＧＢ（Ｂ：byte）の記憶容量を有する。４ＧＢを有するＲＡＭ１２のうち、例えば１６ビット態様の１ＭＢ（正確には１ＭＢ＋６４ＫＢであるが、説明の便宜上、１ＭＢと表記する。）分は、起動時のリアルモードでのワークエリアである起動メモリ領域１２０となる。また、本実施形態では、ＯＳの管理のための後述する管理ファイル（管理プログラム等）が展開される所定の領域、本実施形態では１ＭＢ〜１００ＭＢ、そして、残りの領域が起動後の通常処理を実行する場合のワークエリアとなる。本実施形態では、０ＭＢ〜１００ＭＢを第１領域とし、そのうちの０ＭＢ〜１ＭＢの起動メモリ領域１２０を第１領域の一部とし、１００ＭＢ〜４ＧＢを第２領域としている。更に、別のメモリ部分として、システムＢＩＯＳ他の種々のプログラムやデータ類が格納されるハードディスク（ＨＤ）１２Ａ等を有する。
【００３１】
また、端末１には、例えば図４、図５に示すように、チップセット１５が設けられている。チップセット１５は、図略のマザーボードを構成する主要部品で、ＣＰＵや各種メモリ、その他ハードディスク（ＨＤ）や図略のＣＤ−ＲＯＭ等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。詳細は、後述する。
【００３２】
本ネットワーク３には、ＩＳＰ４を介して、１又は所定数の会員サーバ５及び複数の取引先端末６が接続されている。会員サーバ５は、端末１を所有する乃至は操作を支配し得る会員に関する適宜な情報、例えば会員の氏名、名称、電子メールアドレス、住所等の会員情報等を会員単位で記憶するものである。取引先端末６は、クライアントである各端末１からの取引要求に対する処理、例えば電子決済による処理、取引情報を記憶しかつ情報管理を行うものである。会員サーバ５には、前記会員情報の他、必要に応じて端末１に提供可能な情報、例えば会員に提供するサービスを実行する上で必要な処理ソフトウエア、例えば所要の書類を作成するための書類作成プログラムとか、さらには大容量サーバに端末１毎の取引内容及び履歴情報が記憶（保管及び管理）されていてもよい。
【００３３】
なお、図１のネットワーク通信システムは、以下の態様が一例として採用可能である。端末１は、専用のネットワークにのみ接続可能な専用端末としてもよいし、インターネットとの切り替えで他のネットワークにも接続可能な汎用端末のいずれでもよい。端末１のＨＤ１２Ａ内には、例えば汎用端末の場合、一般的な文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、更に通信用のソフトウエアを利用しての情報の送受信等の一般的な各処理を実行するプログラムファイル（以下、単にＡＰ（application program）という）が格納されている。また、外部デバイス２内には、必要に応じて特定のアプリケーションソフトウエアの実行に関連する処理を行うプログラムファイル（特定ＡＰという）が記憶されている。汎用のＡＰは、端末１内のＯＳローダによって読み込まれるＯＳによって動作可能にされるものであり、特定ＡＰは、外部デバイス２内のローダ（または再起動プログラムによって起動されたローダ）によって読み込まれるＯＳによって動作可能にされるものである。より具体的には、会員間である消費者、商店及び企業等の端末１には、特定ＡＰとして、商品やサービスの売買、見積もり乃至は請求、入出金に関する（いわゆる商取引に関する）各書類の作成と通信とを行うソフトウエア、及び必要に応じて所定の認証処理のソフトウエアが、ブート後に外部デバイス２からロードされる。すなわち、端末１は、特定ＡＰによって、一般的な商取引における決済、例えば業者店舗からの請求書の発行、受領や、購買者側から請求書発行元の契約金融機関の口座への入金（すなわち支払い）指示書、その受領書の発行の他、電子決済の如何を問わず種々の電子書面での送受信処理を可能とするものである。特定ＡＰは、各種書類をテキスト形式の、またバイナリー形式の電子ファイルとして作成可能である。この電子ファイルは、例えば会員サーバ５を中継して（あるいは並行して）外部デバイス２経由で端末１間で授受される。各金融機関の端末１には、消費者や企業の端末１からの金融的な決済書面に従った決済指示処理（金融機関間での決済処理の指令等）を行う特定ＡＰもインストールされている。登録会員毎に固有の情報が書き込まれた外部デバイス２が配布される。会員はサービスの提供を受ける場合、この外部デバイス２を端末１のポート１ａに差し込み、少なくとも外部デバイス２の正当性の認証処理を、好ましくはさらに個人認証（外部デバイス２の正当所持者であることの認証）処理を受けた場合を条件としている。
【００３４】
会員サーバ５は、各会員のファイル送受信履歴やそのファイル類等を管理用に記憶する記憶部を備えている。会員サーバ５は、認証機能を備えていてもよく、この場合、認証機能は、会員サーバ５と端末１との間で授受されるファイル、すなわちパケットを閲覧して、会員の正当性の有無の認証を行う態様としてもよい。
【００３５】
また、図１に示すネットワーク通信システムは、他に種々の適用例が考えられる。例えば秘密情報を作成、保管管理する、例えば公的乃至は準公的（民間含む）な機関である団体組織（国、自治体、協会、組合等含む）外にある端末１との間における情報通信・管理体制に適用する例を挙げることができる。団体組織外にある端末との間における情報通信としては、例えば証明書の発行、申請書の発送などが想定される。また、ＬＡＮシステムにも同様に適用可能である。
【００３６】
なお、ＴＣＰ／ＩＰ（transmission control protocol/internet protocol）規約に沿って形成されたパケットによって文書ファイルの送受信を行う場合、受信したパケットを元のファイルに戻したり、送信予定のファイルをパケットに置換して送信したりする。さらに、送信される各パケットのヘッダには、送信元である端末１のグローバルのＩＰアドレス、送信先である他の端末及び会員サーバのグローバルのＩＰアドレスが含まれる。
【００３７】
図２に示すＮＩＣ２６には図略のルータが装備され、乃至ルータとシリアルに接続されている。このルータは、例えば、送信信号乃至は受信信号としての各パケットの所定位置に付加されている送信先を示すアドレス情報が、インターネット用の規約に基づくグローバルＩＰアドレスか、このグローバルＩＰアドレスの付し方とは異なる（グローバルＩＰアドレスとは識別可能な形態である）専用ネットワーク用の、例えばイーサネット（登録商標）用等に準じた所定のローカルＩＰアドレス（ＭＡＣアドレス）かを識別するためのアドレス情報（ルーティングテーブルやａｒｐ（Address Resolution Protocol）テーブル）の設定を行うものである。パケットは、テーブルと照合されて、アドレスの一致したルートへのみ送信され、これにより伝送路をインターネット経由か、専用ネットワークかにソフトウエア的に切り換えることができる。
【００３８】
図２において、外部デバイス２は、筐体内にマザーボード（図略）を備え、マザーボード上には各種の回路素子及び半導体素子が搭載されている。外部デバイス２は、制御手段であるＣＰＵ２０を備える。ＣＰＵ２０には、ＲＯＭ２１及びＲＡＭ２２が接続されている。また、ＣＰＵ２０には、マザーボード上に搭載された、拡張ＢＩＯＳを記憶するＲＯＭ等の拡張ＢＩＯＳ記憶部２３及びＤＭＡＣ（Direct Memory Access controller）２４が接続され、更に、ＲＯＭここではフラッシュＲＯＭ２５、及びＮＩＣ２６が接続されている。Ｉ／Ｏインターフェース２７は、外部デバイス２の入出力部に設けられ、端末１のポート１ａと装着脱可能に構成され、装着された状態で、所定数のラインを介して通信、電源供給が可能にされている。なお、Ｉ／Ｏインターフェース２７には拡張ＢＩＯＳ記憶部２３及びＤＭＡＣ２４が接続されているが、ＣＰＵ２０との間で通信可能とされている。外部デバイス２は、起動された端末１におけるＯＳの監視を行う管理ファイルのロード及びＯＳの監視を行うためのものである。また、拡張ＢＩＯＳはフラッシュＲＯＭ２５に格納された態様でもよい。
【００３９】
図３に示すように、ＲＯＭ２１は、外部デバイス２として実行するべき各種の処理プログラム及び外部デバイスとして実行するべき各種の処理プログラムが格納される処理プログラム記憶部２１１、少なくとも会員を識別するための情報を記憶する会員情報記憶部２１２、及び後述するマルウエア有無監視のための基準時間情報を記憶する基準時間記憶部２１３を備えている。ＲＡＭ２２は、処理途中のデータや転送データを一時的に格納するものである。
【００４０】
ＣＰＵ２０は、端末１の起動時及び操作時に、ＲＯＭ２１から必要な処理プログラムを読み出して実行するものである。ＣＰＵ１０は、電源が投入されると、システムＢＩＯＳを起動し、必要な自己診断処理を実行した後、ブートの前に行われる処理である、利用可能な周辺機器の初期化を行うＰＯＳＴ（Power On Self Test）処理の実行に移行する。ＰＯＳＴ処理では、接続されている外部デバイスに対して、いわゆる拡張ＢＩＯＳを格納したものがあるか否かが検索される。そして、拡張ＢＩＯＳを格納した外部デバイスが検索されると、当該外部デバイスの拡張ＢＩＯＳの取り込み処理が行われる。
【００４１】
拡張ＢＩＯＳは、端末１に読み込まれ、制御が渡された後に起動し、外部デバイス２との間で所定の情報、本実施形態では、後述する専用ローダの取り込みを行わせるプログラムである。
【００４２】
ＤＭＡＣ２４は、ＣＰＵ１０の制御を受けることなく、端末１と外部デバイス２間のバスの制御を管理することによって情報の授受を強制的に行うバスマスタ方式のコントローラ（回路）をいう。ここでは、ＣＰＵ１０のからの要求、外部デバイス２内のＣＰＵ２０の動作状況を監視し、監視結果に応じて、両デバイス間で前記ＤＭＡ転送を行うものである。
【００４３】
図２において、フラッシュＲＯＭ２５は、端末１に読み込まれる各種の情報を格納している。専用ローダ記憶部２５１は、後述するようにＲＡＭ１２がリアルモードの状態にあるときに、ＤＭＡＣ２４によって転送されてＲＡＭ１２に読み込まれるプログラムである専用ローダ（Ｒ）を格納するものである。専用ローダ記憶部２５２は、後述するようにＲＡＭ１２がプロテクトモードの状態にあるときに、後述するようにリアルモードに戻してＤＭＡＣ２４によって転送されてＲＡＭ１２に読み込まれる、プログラムである専用ローダ（Ｐ）を格納するものである。専用ローダ（Ｐ）の読み込み時点で割込ベクタテーブルのレジスタＩＤＴＲ（InterruptDescriptor Table Register）がプロテクトモード用になっているので、リアルモードに戻さないまま専用ローダ（Ｐ）を展開した場合、リアルモード時の割込ベクタテーブルが使用できなくなる。そこで、拡張ＢＩＯＳは、レジスタＩＤＴＲをリアルモード用の割込ベクタテーブルに書き換えるリアルモード戻し処理が先に行われるようになっている。
【００４４】
なお、専用ローダ（Ｒ）は１ＭＢの情報量を有するもので、起動メモリ領域１２０に展開される。専用ローダ（Ｐ）は、４ＧＢの情報量を有するもので、ＲＡＭ１２の全体に上書きで展開される。専用ローダ（Ｒ）、（Ｐ）のローダ命令部分のプログラム内容は共通しており、その他の情報部分の内容は、起動メモリ領域１２０、ＲＡＭ１２を上書き（リセット）するために使用される情報、例えばデータ“０”等である。なお、専用ローダ（Ｒ）の情報内容を専用ローダ（Ｐ）と共通にしてもよい。
【００４５】
管理ファイル記憶部２５３は、マルウエアに汚染されたＯＳ（乃至はＡＰ）の後述する不正な動作を監視し、その動作を無効にするプログラムを記憶するものである。システムテーブル記憶部２５４は、管理ファイルの資源となるＩＤＴ（InterruptDescriptor Table）、ＧＤＴ（Global Descriptor Table）、ＴＳＳ（Task State Segment）等を記憶するものである。ＩＰＬ（Initial Program Loader）すなわちここではＯＳローダを記憶するＯＳローダ記憶部２５５は、ＨＤ１２ＡからＯＳをＲＡＭ１２にロードするためのプログラムである。システムＢＩＯＳ記憶部２５６は、フラッシュＲＯＭ１１Ａに格納されているシステムＢＩＯＳと同一のプログラムである。システムＢＩＯＳ記憶部２５６に記憶されたシステムＢＩＯＳは、ＨＤ１２Ａに格納されているシステムＢＩＯＳがマルウエアに汚染される可能性があることから、専用ローダがロードされた後に、起動メモリ領域１２０にロードするためのものである。特定ＯＳ，ＡＰ記憶部２５７は、プログラムであるＯＳ等（各Ｉ／ＯデバイスのＩ／Ｏ制御ドライバ、特定ＡＰを含む）を格納するものである。各Ｉ／Ｏデバイスは、例えば操作部１３、表示部１４、図略のプリンタ等の周辺機器である。
【００４６】
また、専用ローダ（Ｐ）を、１ＭＢのサイズのファイルと、その専用ローダ（Ｐ）内で１ＭＢ以上をクリアするロジックとを備えたものとし、専用ローダ（Ｐ）の実行時に、端末１のＣＰＵ１０で、１ＭＢの読み込み処理と、クリア処理とを行わせる態様という手法を採用してもよい。この方法によれば、４ＧＢの転送に比してパフォーマンス面の向上が期待できる。
【００４７】
ＮＩＣ２６は、ネットワーク３を介して他の端末１等と通信を行う場合の情報処理を実行するもので、そのための所定の処理プログラムを記憶するＲＯＭ及び処理内容を一時的に格納するＲＡＭ（共に図略）を有する。また、前述したように、ネットワーク３との接続を管理するＮＩＣ２６は、図略のルータを介してＩＳＰ４までの公衆通信回線と接続され、その網及びネットワーク３に対する通信制御を行うものである。
【００４８】
Ｉ／Ｏインターフェース２７は、ポート１ａを介して外部デバイス２との間で情報の授受を行うラインの他、電源供給を行うラインも有する。端末１は図略の電源回路を有しており、外部デバイス２が端末１に装着されると、この充電回路からポート１ａ、外部デバイス２のＩ／Ｏインターフェース２７を経由して、外部デバイス２内の図略の充電回路に電流が供給されることで外部デバイス２の電源起動が行われる。
【００４９】
図３において、端末１のＣＰＵ１０は、ＲＯＭ１１、フラッシュＲＯＭ１１Ａ、ＨＤ１２Ａ及びフラッシュＲＯＭ２５からＲＡＭ１２に読み出された処理プログラムを実行することによって、システムＢＩＯＳの起動から拡張ＢＩＯＳの実行を行う専用ローダロード処理部１０１、ロードされた専用ローダを実行させる専用ローダ処理部１０２、専用ローダの実行によってロードされる管理ファイル及びその動作環境を作成する管理ファイル動作環境作成部１０３、管理ファイルの準備終了後にＯＳローダ（ＩＰＬ）をロードするＯＳローダロード処理部１０４、ロードされたＯＳローダ及びその動作環境を作成するＯＳローダ処理部１０５、管理ファイルの下にＯＳローダによるＯＳのブート乃至ブート後の動作の監視を行うＯＳ動作監視部１０６、特定ＡＰあるいは汎用ＡＰを用いて文書作成その他種々の処理を実行する情報処理部１０７、端末１からネットワーク３を介して一般の端末１やウエブサイトサーバと通信し、またＮＩＣ２６からネットワーク３を介して他の会員の端末１、会員サーバ５及び取引先端末６との間で情報の授受を行うネットワーク通信処理部１０８、例えば操作部１３からの特定の操作に応じて動作環境を汎用ＯＳ環境と特定ＯＳ環境との間で切り替える動作環境切替部１０９として機能する。
【００５０】
専用ローダロード処理部１０１は、端末１の電源投入を受けて、自己診断処理を実行し、次いで、ＰＯＳＴ処理によってメモリや周辺機器の状態をチェックするものである。次いで、ＢＩＯＳに設定されたデバイス、本実施形態では拡張ＢＩＯＳが格納されている外部デバイス２から、この拡張ＢＩＯＳを起動するようになっている。
【００５１】
専用ローダロード処理部１０１は、外部デバイス２側の専用ローダロード処理部２０１によって読み出される拡張ＢＩＯＳをＲＡＭ１２の起動メモリ領域１２０内の所定の領域に読み込む処理を行うものである。なお、外部デバイス２が装着されていない場合には、優先順位の順に、例えばＲＯＭからＭＢＲ（マスターブートレコード）のプログラムが読み出され、次いで読み込まれたマスターブートプログラムに制御が渡される。
【００５２】
専用ローダロード処理部１０１は、拡張ＢＩＯＳがＲＡＭ１２の起動メモリ領域１２０に読み込まれ、システムＢＩＯＳによって制御を渡された後に、拡張ＢＩＯＳを実行するものである。拡張ＢＩＯＳは、各種の命令コードを外部デバイス２からＲＡＭ１２の起動メモリ領域１２０に読み出して各命令に制御を渡すようにしている。命令コードとしては、ここでは、所定の複数が設定されている。すなわち、ある命令コードによって、端末１内に特定ＡＰが実行可能な環境を準備するべく、必要なデバイスのドライバに対する初期化処理を実行する。必要なデバイスとしては、表示部１４、操作部１３を構成するキーボードやマウスである。また、ある命令コードによって、Ｉ／ＯＡＰＩＣ１５０のリダイレクションテーブル１５０１（図４参照）に外部デバイス２のＩＲＱと割込ベクタテーブル（ＩＮＴ）とを登録する。なお、この登録時のＩＲＱの番号を割込番号として言い換えている。また、Ｉ／ＯＡＰＩＣ１５０は、マルチプロセッサ対応可能で、受け取った割込をＣＰＵ１０に通知するためのリダイレクションテーブル１５０１でハードウエア割り込みでの優先順位が設定可能な割込コントローラである。ここに、ＩＲＱとは割込要求であり、割込番号とは同時にハードウエア割り込みが発生した時の優先順を指す順位情報である。
【００５３】
また、ある命令コードは、外部デバイス２に対して、ＤＭＡＣ２４を使用してデータ転送を受け付けるためのデータ転送要求信号を送信させるものである。このデータ転送要求信号によって転送が要求されるデータは、略１ＭＢのローダ等（割込ベクタテーブルを含む）である。拡張ＢＩＯＳによって実行される専用ローダのローダ処理に、ＤＭＡバスマスタ転送方式を採用して少なくともＣＰＵ１０の関与を外すことで、仮にこの間、ＣＰＵ１０がマルウエアに乗っ取られていたとしても、データの転送自体を正常に行わせることができる。従って、専用ローダ（Ｒ）をＲＡＭ１２の起動メモリ領域１２０に強制的（ＣＰＵ１０の制御を受けることなく）に、直前のデータを消しながら、すなわち上書きすることで、マルウエアによって起動メモリ領域１２０内にウイルス等が複製されたとしても、これらを確実に消去することが可能となる。なお、必要に応じて、ＳＭＲＡＭ制御レジスタのＤ＿ＬＣＫビットをセットして、ＳＭＲＡＭを書き込み禁止（アクセス禁止）させる命令コードを採用する態様であってもよい。このように、アクセス禁止のためのロックをかけることで、全てのメモリに自由にアクセスできる最上位権限であるＳＭＭ（システムマネージメントモード）という特権モードを悪用させないようにすることが可能となる。
【００５４】
ところで、システムＢＩＯＳから立ち上がる起動の間に、プロテクトモードの動作状態にあることが検知されると、マルウエアが存在する可能性が高いと見なして、起動動作を中止することが考えられる。この場合には、システムＢＩＯＳを書き換えたり、ワクチンによってシステムＢＩＯＳ内に潜伏するウイルスを駆除する対処方法が考えられる。これによって、マルウエアが存在する環境下で情報処理を行うことによる危険は回避される。一方、このように起動を中断すれば、対処するまでの間、一律に端末１の立ち上げができず、特定ＡＰの使用環境を円滑に会員に提供できないといった不便さがあり、問題がないではない。そこで、プロテクトモードによる異常が発生した場合には、リセット処理を実行させて、リアルモードに設定し直すようにしている。
【００５５】
専用ローダロード処理部１０１は、拡張ＢＩＯＳに制御が移行された後に、後述するように外部デバイス２から送信されてくる、リアルモードへの設定のための命令コマンドによって、実行されるものである。システムＢＩＯＳの起動動作中に、端末１がプロテクトモードに設定されていると判断、あるいはリアルモードに設定されていることが疑わしいと判断された場合に発せられる、前記リアルモードへの設定のための命令コマンドを受けて、専用ローダロード処理部１０１は、モードをリアルモードに設置し直すための処理の一部を実行するものである。本実施例では、前述のレジスタＩＤＴＲをリアルモードの割込ベクタテーブルに戻す処理、Ｉ／ＯＡＰＩＣ１５０のリダイレクションテーブル１５０１に外部デバイス２のＩＲＱと割込番号を登録する処理、データ転送要求信号の出力処理である。かかるモード判断処理は、マルウエアの影響を受けないようにするべく、後述するように外部デバイス２側で実行される。
【００５６】
次に、図３において、ＣＰＵ２０は、ＲＯＭ２１に記憶されたプログラムを実行することによって、専用ローダをロードするための拡張ＢＩＯＳの端末１への読み出しを行う専用ローダロード処理部２０１、専用ローダのロード動作を監視し、監視内容に応じた指示を発する監視部２０２、管理ファイルの端末１側への読み出しを行わせる管理ファイルロード処理部２０３、ＯＳローダの一部である外部デバイス２側から端末１へのロード部分の読み出し行わせるＯＳローダロード処理部２０４、及び外部ブートによる起動後に特定ＡＰを用いて作成されたファイル等をＮＩＣ２６及びネットワーク３を介して他の端末１、会員サーバ５及び取引先端末６との間で授受するネットワーク通信処理部２０５として機能する。監視部２０２は、ここでは後述の３態様の監視方法が含まれており、計時手段による監視態様、リアルモードかプロテクトモードかのモード状態を判断するモード判断手段による監視態様、及びモードをチェックするモードチェック手段による監視態様である。
【００５７】
専用ローダロード処理部２０１は、端末１でのＰＯＳＴ処理によって読み出し指示を受けてＲＡＭ１２へ拡張ＢＩＯＳの読み出し処理を実行するものである。また、専用ローダロード処理部２０１は、監視部２０２の監視内容に応じて、リアルモードの状態においてローダ（Ｒ）を転送するべく、ＤＭＡＣ２４を起動する（転送指示を行う）ものであり、一方、プロテクトモードの状態においてローダ（Ｐ）をＲＡＭ１２に転送するべく、ＤＭＡＣ２４を起動する（転送要求（指示）を行う）ものである。
【００５８】
監視部２０２の計時手段は、端末１からの電源供給を受けて外部デバイス２が起動するレベルに達した時点から計時をスタートし、端末１のシステムＢＩＯＳが拡張ＢＩＯＳに制御を渡して命令コードが外部デバイス２に送出されたことを受けて計時動作をストップすることで、その間の所要時間を計測するものである。
【００５９】
監視部２０２のモード判断手段は、計時手段で計時された時間と、ＲＯＭ２１の基準時間記憶部２１３に記憶されている基準時間情報との大小（長短）を比較し、計時時間が基準時間を超えている場合には、マルウエアによってモードがプロテクトモードになっていると見なしてリアルモードへの設定し直し（書き換え）のための命令コードを端末１に送出するものである。なお、基準時間とは、以下のようにして設定されている。すなわち、まず、端末１に電源が投入され、システムＢＩＯＳが起動してＰＯＳＴ処理が実行され、ＲＡＭ１２に拡張ＢＩＯＳが展開され、さらに、拡張ＢＩＯＳに制御が渡されるまでに要する時間は、マルウエアが動作せず正常の場合、ほぼ予め設定された時間となる。
【００６０】
一方、システムＢＩＯＳにマルウエアが潜伏しており、あるいはシステムＢＩＯＳ起動中にマルウエアが侵入してきて、ＲＡＭ１２上にプロテクトモード環境を構築する場合には、前記の正常な場合での設定時間に比してより大きな時間を要することとなる。そこで、端末１の起動、すなわち外部デバイス２の起動から拡張ＢＩＯＳへの制御移管までの経過時間によってＲＡＭ１２がリアルモード空間にあるか、プロテクトモード空間にあるかを、端末１側で直接モード内容を判断する方法ではなく、外部デバイス２側で判断するようにしている。
【００６１】
図４は、リアルモードにおけるＲＡＭ１２の内容であり、図５はプロテクトモードにおけるＲＡＭ１２の内容である。図４に示すように、チップセット１５は、Ｉ／ＯＡＰＩＣ１５０の他、ＣＰＵ１０が複数ある態様では、ＣＰＵ１０毎に、ローカルＡＰＩＣ１５１、ＥＦＬＡＧＳや汎用レジスタ等の各種のレジスタからなるレジスタ群１５２を含むチップセット１５ａ〜１５ｎを有する。また、ＲＡＭ１２のうち、０ＭＢ〜１ＭＢの起動メモリ領域１２０には、システムＢＩＯＳ１２１、拡張ＢＩＯＳ１２２、割込ベクタテーブルを含む専用ローダ１２３、一時的ＧＤＴ１２４が展開されている。なお、専用ローダ１２３は起動メモリ領域１２０の全域に展開されるもので、ローダとして機能するプログラム部分と、１ＭＢ分の転送データを作成するために補充されたダミーデータ等を適宜含む。なお、一時的ＧＤＴ１２４は専用ローダ１２３によって作成されたもので、専用ローダ１２３によって１ＭＢ〜１００ＭＢに管理ファイルをアンリアルモード（Unreal mood）でロードするためのアドレッシング用である。ここにアンリアルモードとは、リアルモード環境においてチップセット１５内の図略のデータセグメントレジスタのアクセスリミットを４ＧＢに変更することによって、データアクセスのみ１ＭＢ以上、すなわち起動メモリ領域１２０外に対してアクセスを可能にした特殊な状態を指す。
【００６２】
一方、プロテクトモードでは、図５に示すように、各チップセット１５ａ〜１５ｎには、レジスタ群１５２に、割込ディスクリプタテーブル（ＩＤＴ）のアドレスが格納され、ＣＰＵ１０によって参照されるレジスタＩＤＴＲ（InterruptDescriptor Table Register：割込ディスクリプタテーブルレジスタ）も含まれている。また、４ＧＢのＲＡＭ１２の任意の領域について、専用ローダ内の割込ベクタテーブル１２３’、システムＢＩＯＳ１２１、拡張ＢＩＯＳ１２２が展開され、さらに任意の領域にはプロテクトモードを構成するための、ＩＤＴ（InterruptDescriptor Table）、ＧＤＴ（Global Descriptor Table）、さらにＰＧＭ（Program）１〜ｉ及びＰＧＭ１〜ｉ毎のＴＳＳ（Task State Segment）の各管理テーブル（但し、ＰＧＭは除く）が形式的に作成されている。すなわち、図５は、ＲＡＭ１２に、あたかも図４と同様な空間が存在するかのように、マルウエアによって作成された、外部デバイス２に見せるための環境設定の結果である。
【００６３】
マルウエアは、システムＢＩＯＳの動作中に、プロテクトモードの環境をＲＡＭ１２上に展開するために、図５に示すようなそれぞれのプログラムを作成し、ＲＡＭ１２上の適所に展開し、その後に、制御を拡張ＢＩＯＳに渡すことになる。さらに、マルウエアの本体プログラムをＲＡＭ１２内に展開する必要があり、これらのデータは外部媒体である、ハードディスク（ＨＤ１２Ａ）から主に取得しなければならない。従って、端末１の起動から拡張ＢＩＯＳ１２２に制御を渡すまでの所要時間は、図４の場合に比してかなり大きな時間にならざるを得ないことになる。そこで、図４のリアルモードにおける場合の所要時間と、図５のプロテクトモードにおける場合の所要時間との間の適当な時間を基準時間として設定している。
【００６４】
図３に戻って、監視部２０２のモードチェック手段について説明する。監視部２０２のモードチェック手段は、計時手段による監視態様やモード判断手段による監視態様とは別の方法で監視を行う実施態様である。すなわち、システムＢＩＯＳが拡張ＢＩＯＳに制御を渡した後、外部デバイス２が命令コードを発するようにしている。ＤＭＡＣ２４はこの命令コードによって起動され、ＲＡＭ１２の内容を、ＣＰＵ１０の制御を受けることなく、全て転送によって読み取り、外部デバイス２に取り込む。監視部２０２のモードチェック手段は、読み込まれたＲＡＭ１２の内容をチェックして、プロテクトモード環境にあるか否かの判断を行う。判断手法は、ＲＡＭ１２のデータ中に、プロテクトモードに固有の情報、例えば前述したＧＤＴ，ＩＤＴ又はＴＳＳ等の管理テーブルの有無を判断材料としてもよい。このように、プロテクトモード空間にあるかを、端末１側で判断する方法ではなく、外部デバイス２側で判断するようにしている。
【００６５】
さらに、監視部２０２のモードチェック手段は、マルウエアによってモードがプロテクトモードになっている判断すると、リアルモードへの設定し直しのための命令コードを端末１に送出するものである。
【００６６】
続いて、図６〜図１０により、ＣＰＵ１０、ＣＰＵ２０におけるブート処理を説明する。図６は、端末１のＣＰＵ１０によって実行されるシステムＢＩＯＳの起動処理の手順を説明するフローチャートである。まず、端末１の電源投入後、システムＢＩＯＳのチェックが行われ（ステップＳ１）、次いでＰＯＳＴ処理が実行される（ステップＳ３）。そして、ＰＯＳＴ処理によって外部デバイス２から拡張ＢＩＯＳの読み込みが終了したか否かが判断される（ステップＳ５）。拡張ＢＩＯＳの読み込みが終了していなければ読み取りが継続され、読み取りが終了したのであれば、拡張ＢＩＯＳへ制御が渡される（ステップＳ７）。
【００６７】
なお、以降においては、端末１のポート１ａに外部デバイス２の一例としてＰＣＩが装着されているという前提で述べる。すなわち、端末１のポート１ａにＰＣＩである外部デバイス２が装着されていると、ＰＯＳＴ処理によって、システムＢＩＯＳの起動ルーチンによって拡張ＢＩＯＳがＲＡＭ１２に読み込まれる。
【００６８】
図７は、端末１のＣＰＵ１０によって実行されるシステムＢＩＯＳのＰＯＳＴ処理（ステップＳ３）の手順を説明するフローチャートである。まず、端末１に接続されているデバイスとしてＰＣＩが装着されているか否かが判断され（ステップＳ１１）、ＰＣＩが装着されていなければ、システムＢＩＯＳは通常の起動処理が実行される（ステップＳ１３）。一方、ＰＣＩが装着されていると、デバイスのＢＩＯＳ、すなわち拡張ＢＩＯＳが検索されて（ステップＳ１５）、この拡張ＢＩＯＳがＲＡＭ１２にロードされる（ステップＳ１７）。次いで、ロードが終了すると、システムＢＩＯＳによってロード終了信号が出力される（ステップＳ１９）。
【００６９】
図８は、外部デバイス２のＣＰＵ２０によって実行される監視処理Ｉの手順を説明するフローチャートである。まず、外部デバイス２の電源がオンしたか否かが判断され、オンしたのであれば（ステップ＃１）、監視部２０２の計時手段によって計時動作がスタートされる（ステップ＃３）。次いで、システムＢＩＯＳから命令コードが受信されるまで待機し（ステップ＃５でＮｏ）、命令コードが受信されると、計時動作がストップされる（ステップ＃７）。
【００７０】
次いで、計測した計時時間が基準時間より短い（計時時間＜基準時間）か否かが判断（比較）され（ステップ＃９）。計時時間が基準時間より短ければ、端末１はプロテクトモード環境に設定されていないと判断し、すなわち少なくともマルウエアによって端末１のＣＰＵ１０がプロテクトモードに設定されていないとして、本フローを抜ける。一方、計時時間が基準時間と等しいか長ければ、端末１のＣＰＵ１０はプロテクトモード環境に設定されている可能性があると判断し、すなわち、少なくともマルウエアによって端末１のＣＰＵ１０の環境がプロテクトモードに設定されている可能性があるとして、端末１のＣＰＵ１０をリアルモードへ設定し直すための命令コードを返信して（ステップ＃１１）、本フローを抜ける。
【００７１】
図９は、外部デバイス２のＣＰＵ２０によって実行される監視処理IIの手順を説明するフローチャートである。まず、（端末１側において、システムＢＩＯＳから拡張ＢＩＯＳにＣＰＵ１０の制御が渡されて）、拡張ＢＩＯＳから前述した命令コードが受信されたか否かが判断される（ステップ＃２１）。この命令コードが受信されていなければ、本フローをスルーする。一方、この命令コードが受信されたのであれば、端末１の制御が拡張ＢＩＯＳにあると判断して、ＤＭＡＣ２４の起動及びＤＭＡＣ２４による転送対象であるＲＡＭ１２の指定を行う（ステップ＃２３）。これによりＤＭＡＣ２４を介してＲＡＭ１２の内容が外部デバイス２のＲＡＭ２２に取り込まれる。この時点においても、端末１のＣＰＵ１０の制御から離れてＲＡＭ１２の全ての内容（ここでは４ＧＢ）を取り込むようにして、ＣＰＵ１０のモードの如何による影響を全く受けないようにしている。
【００７２】
次いで、取り込んだＲＡＭ１２の内容に対して、プロテクトモードに固有の内容、具体的には前述したＩＤＴ、ＧＤＴ、ＴＳＳ等の固有の管理テーブルが存在するか否かがチェックされる（ステップ＃２５）。ＲＡＭ１２内にプロテクトモード固有の内容が含まれていなければ、リアルモードであると判断して、本フローを抜ける。
【００７３】
一方、ＲＡＭ１２内にプロテクトモード固有の内容が含まれている場合には、端末１のＣＰＵ１０はプロテクトモード環境に設定されている可能性があると判断し、すなわち、少なくともマルウエアによって端末１のＣＰＵ１０の環境がプロテクトモードに設定されている可能性があるとして、端末１のＣＰＵ１０をリアルモードへ設定し直すための命令コードを返信して（ステップ＃２９）、本フローを抜ける。
【００７４】
図１０は、端末１のＣＰＵ１０によって実行される拡張ＢＩＯＳ処理の手順を説明するフローチャートである。ＣＰＵ１０の制御が渡された拡張ＢＩＯＳは、まず、外部デバイス２からリアルモードへの設定し直しのための命令コードが受信されたか否かが判断される（ステップＳ３１）。受信のために準備された所定の時間内に、この命令コードが受信されなければ、端末１に接続されている所定のデバイス（前述した表示部１４、キーボード、マウス）に対して初期化のためのＰＯＳＴ処理が施される（ステップＳ３３）。次いで、Ｉ／ＯＡＰＩＣ処理（ステップＳ３５）、データ転送要求信号出力処理（ステップＳ３７）が実行される。続いて、ＤＭＡＣ２４が起動されて、専用ローダ記憶部２５１からローダ（Ｒ）が端末１側に転送され、ＲＡＭ１２の起動メモリ領域１２０に上書きされる（ステップＳ３９）。そして、転送が終了したかどうかが転送終了信号によって確認されると（ステップＳ４１でＹｅｓ）、ハードウエア割込が発生され、ＣＰＵ１０の制御がローダに渡されて（ステップＳ４３）、本フローを抜ける。
【００７５】
一方、ステップＳ３１で、リアルモードへの設定し直しの命令コードが受信されると、レジスタＩＤＴＲを割込ベクタテーブルに書き換えるリアルモード戻し処理（ステップＳ４５）、Ｉ／ＯＡＰＩＣ処理（ステップＳ４７）、データ転送要求信号出力処理（ステップＳ４９）が実行される。続いて、ＤＭＡＣ２４が起動されて、専用ローダ記憶部２５２からローダ（Ｐ）が端末１側に転送され、ＲＡＭ１２の全域に上書きされる（ステップＳ５１）。そして、転送が終了したかどうかが転送終了信号によって確認されると（ステップＳ５３でＹｅｓ）、ハードウエア割り込みが発生され、ＣＰＵ１０の制御がローダに渡されて（ステップＳ５５）、本フローを抜ける。なお、専用ローダ（Ｒ），（Ｐ）のロードの終了に引き続いて、システムＢＩＯＳ記憶部２５６から適正なシステムＢＩＯＳを専用ローダのローダ部分に影響しない領域に上書きするようにしている。あるいは、専用ローダ（Ｒ），（Ｐ）の一部にシステムＢＩＯＳ記憶部２５６のシステムＢＩＯＳを予め含めておいて、専用ローダ（Ｒ），（Ｐ）のロードで起動メモリ領域１２０に上書きされる態様でもよい。このシステムＢＩＯＳは後述するように、ＯＳのローダの際に用いられる。
【００７６】
また、専用ローダのロード処理に関しては、監視処理Ｉ、IIに代えて、図１１〜図１３に示す態様を採用したものでもよい。図１１は、外部デバイス２のＣＰＵ２０及び拡張ＢＩＯＳによって実行される監視処理IIIの手順を示すための説明図である。また、図１２は、端末１側のＣＰＵ１０によって実行される監視処理IIIの一部手順を説明するフローチャートであり、図１３は、外部デバイス２側のＣＰＵ２０によって実行される監視処理IIIの一部手順を説明するフローチャートである。
【００７７】
図１１に示す監視処理IIIを実行するためには、外部デバイス２は以下の構成を備えている必要がある。ＣＰＵ２０のＲＯＭ２１又はフラッシュＲＯＭ２５は、ＩＯＡＰＩＣを記憶する記憶手段として機能する。このＩＯ ＡＰＩＣ１５０は、ＰＯＳＴ処理時に、外部デバイス２のレジスタに設定されたハードウエア割込ＩＲＱにて端末１側に登録されて、当該ＩＲＱの番号に紐付く割込番号が自動設定される。同様にＣＰＵ２０のＲＯＭ２１又はフラッシュＲＯＭ２５は、割込ベクタテーブル、及び割込ハンドラの内容を記憶する記憶手段として機能する。また、ＤＭＡＣ２４は、割込ベクタテーブル１２３’、及び割込ハンドラ１２４’の内容をＣＰＵ１０の制御抜きで、端末１側に転送する処理を行う。また、監視部２０６は、後述する割込ハンドラ１２４’の実行結果信号の有無を監視する機能を備える。また、この監視部２０６は、前記転送要求が発せられた後、ＤＭＡＣ２４により、バスマスタ方式で割込ベクタテーブル１２３’と前記割込ベクタテーブル１２３’の所定のベクタに対応する割込ハンドラ１２４’との前記起動メモリ領域への転送を行い、さらに割込ハンドラ１２４’からの実行結果信号の有無を判断する機能部を備えている。
【００７８】
そして、拡張ＢＩＯＳは、以下の手順を実行する。なお、ＩＯＡＰＩＣ１５０のリダイレクションテーブル１５０１内には、ハードウエア割込（ＩＲＱ１０）に、例えばＩＮＴ０が設定されている。また、ここでは、ハードウエア割込としてＩＲＱ１０としたが、ＩＲＱは“１０”に限定されず、デバイスを指定するべく予め対応付けされた番号であればよい。また、割込ハンドラ１２４’とは、割り込み処理を実行するためのメモリ上に待機しているプログラムをいう。さらに、割込ベクタテーブル１２３’のＩＮＴ０には、割込ハンドラ１２４’であるプログラムの先頭アドレス、図１１の例ではアドレス1000が設定されている。
【００７９】
次に、図１２において、まず、システムＢＩＯＳから拡張ＢＩＯＳに制御が渡ったか否かが判断され（ステップＳ６１）、拡張ＢＩＯＳに制御が渡っていなければ、本フローをスルーする。一方、拡張ＢＩＯＳに制御が渡ったのであれば、拡張ＢＩＯＳに制御が渡った旨のリクエスト信号が外部デバイス２に送信される（ステップＳ６３、図１１の矢印[１]参照）。次いで、ハードウエア割込（ＩＲＱ１０）命令の発行の有無が判断され（ステップＳ６５）、例えばリクエスト信号の送信時点から所定時間内に、ハードウエア割込（ＩＲＱ１０）命令の発行が確認されると、ＩＮＴ０が指定されてＩＮＴ０命令が発行され、該当アドレスの割込ハンドラ１２４’が実行される（ステップＳ６７、図１１の矢印[４]参照）。そして、割込ハンドラ１２４’の実行結果信号が外部デバイス２へ返信される（ステップＳ６９、図１１の矢印[５]参照）。なお、割込ハンドラ１２４’の実行結果信号を毎回変更することが秘匿性の点からはより好ましい。実行結果信号は、例えば、ブートの日時情報や外部デバイス２の会員情報記憶部２１２の会員情報を用いて所定のルールに従って作成される。
【００８０】
図１３においては、まず、リクエスト信号の受信の有無が判断され（ステップ＃４１）、リクエスト信号が受信されていなければ、本フローをスルーする。一方、リクエスト信号が受信されていると、ＤＭＡＣ２４の起動及び転送対象となる記憶領域の指定処理が行われて（ステップ＃４３、図１１の矢印[２]参照）、転送対象の情報がブロック転送によってＣＰＵ１０の制御を受けない状態で、端末１側に転送される。ここに、転送対象の情報とは、ＩＯＡＰＩＣ１５０（のリダイレクションテーブル１５０１）、割込ベクタテーブル１２３’及び割込ハンドラ１２４’の各内容である。
【００８１】
次いで、転送動作の終了を受けてＣＰＵ２０から出力される転送終了信号の有無が判断され（ステップ＃４５）、転送終了信号が確認されると、ハードウエア割込（ＩＲＱ１０）命令が発行されて、端末１に送信される（ステップ＃４７、図１１の矢印[３]参照）。次いで、監視処理として、ハードウエア割込（ＩＲＱ１０）命令の発行時点から所定時間内に、割込ハンドラ実行結果信号の受信の有無が判断される（ステップ＃４９）。監視の結果、割込ハンドラ実行結果信号が受信されると、ＣＰＵ１０はリアルモードの状態にあって、ブートが正常に行われたと判断されて、本フローを終了する。
【００８２】
一方、ＣＰＵ１０がマルウエアによってプロテクトモードの状態にされた場合、ＤＭＡＣ２４を利用したバスマスタ転送によって、この転送前に、ＣＰＵ１０は割込ベクタテーブル１２３’のＩＮＴ０のアドレスと割込ハンドラ１２４’の先頭アドレスとを知ることはできないから、マルウエアによって設定されるＩＮＴ０のアドレスと割込ハンドラ１２４’の先頭アドレスとを対応させることはできない。特に、ＩＮＴ０の内容と割込ハンドラ１２４’の先頭アドレスの設定を、ブート処理毎に外部デバイス２側で所定のルールによって、あるいは乱数発生部を作動させて無作為に設定するようにすることが好ましい。
【００８３】
従って、プロテクトモードの状態にある場合、割込ハンドラ１２４’は実行されず、監視の結果、割込ハンドラ実行結果信号が生成されない、すなわちブートが正常に行われていない可能性が高いと判断して、端末１のＣＰＵ１０をリアルモードへ設定し直すための命令コードを返信し（ステップ＃５１）、本フローを抜ける。図１３の処理を抜けて、端末１は、図１０の処理を行う。
【００８４】
このように、ＤＭＡＣを端末１側に設けた場合には、ＤＭＡＣ２４の起動や転送対象内容の指定が、マルウエアに乗っ取られたＣＰＵ１０によって管理される虞（すなわち、例えばある処理を行っていないにも拘わらず、処理を行った旨の信号のみを擬似的に生成して出力するような処理）があるが、ＤＭＡＣ２４を外部デバイス２側に設けることで、ＣＰＵ１０の制御を受けることを排除することが可能となる。
【００８５】
次に、図４、図１４〜図１７は、専用ローダのロードからＯＳの動作監視までのＲＡＭ１２のメモリマップの変遷を示す図である。図４は、前述したように、専用ローダ１２３のロードから一時的ＧＤＴ１２４の作成まで、すなわち起動メモリ領域１２０内に対するデータ作成状態を示している。なお、システムＢＩＯＳ１２１は専用ローダ１２３のロードによって一旦消去されるので、前述したように外部デバイス２から新たにロードされる。あるいは専用ローダ１２３内に予め含めておき、専用ローダのロード時に同時にロードされるようにしてもよい。これは、専用ローダ１２３及びシステムＢＩＯＳ１２１は後述するように、後にＯＳのロードにおいて必要となるからである。その意味では、拡張ＢＩＯＳ１２２は必ずしも再度ロードする必要はない。また、図４において、外部デバイス２からのシステムＢＩＯＳのロードは専用ローダ１２３内のダミーデータ部分に上書きするようにすればよい。
【００８６】
図１４は、１ＭＢ〜１００ＭＢの領域に管理ファイル１２５、管理用ＧＤＴ１２６及び管理用ＩＤＴ１２７が展開された状態のメモリマップである。図３の専用ローダ処理部１０２は、拡張ＢＩＯＳ１２２のリクエストを受けた外部デバイス２からのハードウエア割込の発生に応じて専用ローダ１２３にＣＰＵ１０の制御が移されることによって実行されるローダ処理である。専用ローダ処理部１０２は、図１４に示すように、管理ファイルロード処理部２０３によって読み出された、外部デバイス２の管理ファイル記憶部２５３内の管理ファイル１２５を端末１のＲＡＭ１２の１ＭＢ〜１００ＭＢの所定位置に読み込む処理及びこれに関連する処理を行う。より詳細には、専用ローダ処理部１０２は、まず、ＲＡＭ１２の１ＭＢ〜１００ＭＢへのアクセスを可能にするための処理、例えば図４で示したような一時的ＧＤＴ１２４の作成、チップセット内の各種レジスタに対する設定を行う。一時的ＧＤＴ１２４は、管理ファイル１２５を構成するプログラムや管理テーブルの全て（のセグメントディスプリクタ）に対して特権レベルであるＤＰＬ（Description Privilege Level）に“０”（いわゆるリング“０”）を設定することによって、管理ファイル１２５を１ＭＢ〜１００ＭＢの所定位置に最も高い特権レベルでロード可能にしている他、この領域に設定される情報に対して全てＤＰＬ“０”でのロードを実現している。ＤＰＬとは、公知のように、メモリ空間の特権レベルを記述するもので、ＤＰＬ“０”からＤＰＬ“３”までの４ランクがある。ＤＰＬ値が相対的に小さい程、特権のレベルが高い。例えば、ＤＰＬ値の相対的に大きい値として記述された空間で動作するプログラムはＤＰＬ値がそれより小さい値で記述された空間側にアクセスすることはできない。すなわち、この場合は特権レベル違反として、後述する一般保護例外（＃ＧＰ）あるいはページフォルト（＃ＰＦ）が発行され、アクセスは無効とされる。一方、ＤＰＬ値の相対的に小さい値として記述された空間で動作するプログラムはＤＰＬ値がそれより大きい値で記述された空間側にアクセスしたり閲覧したりすることができる。これによって、不適当なアクセスか否かの判断が事前に可能となる。
【００８７】
また、専用ローダ処理部１０２は、管理レジスタのうちのレジスタＣＲ０に対してフラグを設定することで、１ＭＢ〜１００ＭＢの領域へのアクセスをプロテクトモードで行う他、別途、リアルモードにおいて、一時的ＧＤＴ１２４のセグメントリミットを１Ｍ以上、ここでは４Ｇに設定したことで、アンリアルモードでの動作を可能としている。このアンリアルモードで、管理ファイル１２５及び割込ハンドラ１３０がロードされ、次いで管理用ＧＤＴ１２６がロードされ、また管理用ＩＤＴ（管理用割込ベクタテーブル）１２７がロードされる（図１４参照）。管理用ＧＤＴ１２６、管理用ＩＤＴ１２７の各セグメントディスクリプタは、当該時点で必要なテーブル部分までが予め作成されており、専用ローダ処理部１０２によってロードされる。専用ローダ処理部１０２は、これら必要な情報のロード後、ＣＰＵ１０の制御を管理ファイル１２５に渡す（ジャンプする）。
【００８８】
図１５は、１ＭＢ〜１００ＭＢの領域にＴＳＳ１２８、ＰＴＥ（Page Table Entry）１２９及び管理用割込ハンドラ１３０が作成された状態のメモリマップである。また、図には示していないが、必要に応じてタスク毎のＬＤＴ（Local Descriptor Table）が作成される。管理ファイル動作環境作成部１０３は、管理ファイル１２５のプログラムによって、ＴＳＳ１２８、ＰＴＥ（Page Table Entry）１２９、管理用割込ハンドラ１３０及び必要なＬＤＴを作成する。なお、ＴＳＳ１２８及びＰＴＥ１２９は、後述するように、１０１ＭＢ以上で動作するタスク（主に、ＨＤ１２ＡからのＯＳのロード）を監視するための管理用（プロテクト）モード用のテーブルと、１００ＭＢ〜１０１ＭＢで動作するタスクを監視するＶＭ８０８６モード用のテーブルとを備えている。モードを図略のタスクスイッチで適宜切り替えることで、ＯＳを構成する各プログラムのロードと当該ＯＳの各プログラムのセグメントディスプリクタを管理用ＧＤＴ，ＩＤＴにそれぞれ追加する処理が可能となる。
【００８９】
ＴＳＳ１２８は、管理ファイル１２５内の各管理用のプログラム（タスク）の各々に対応付けて作成されている。すなわち、ＴＳＳ１２８は動作状態に応じたプログラムを稼働させるべく、タスクスイッチによって必要なプログラムに実行状態を移し、かつ直前のプログラムの処理内容を対応する個々のＴＳＳにコンテキストすることで、現状復帰を可能にしている。ＰＴＥ１２９は、ＧＤＴ１２６で作成されたリニアアドレスを物理アドレスに変換するためのもので、各情報（各プログラムコード、各データ、各スタック）について対応して設けられている。
【００９０】
ここで、図１８〜図２１を用いて、ＧＤＴ１２６及びＰＴＥ１２９と、リニアアドレスから物理アドレスへの変換との関係を説明する。まず、端末１が起動する際のモードである１６ビットのプログラムで動作するリアルモードでは、セグメント値とオフセット値とを用いてアドレスが決定され、公知のように、セグメント値を４ビットずらした値（１６倍した値）にオフセット値を加算することで、最大、（１ＭＢ＋６４ＫＢ）までのアドレス（リニアアドレス）が直ちに物理アドレスとして算出できる。一方、それ以上のアドレスに対しては、プロテクトモードが採用されており、例えば３２ビットのプログラムで動作する態様では、４ＧＢまでアドレス指定が可能となる。なお、それぞれの情報（タスク）毎に、異なるアドレスを設定することで、仮想アドレス空間が設定できることから、情報（タスク）を所要データ量ずつに分けて、格納することが可能である。
【００９１】
図１８は、かかる情報格納態様に対応するもので、情報の格納箇所を示すＧＤＴ１２６の全体概要を示している。ＧＤＴ１２６は、例えば８バイト単位で各情報の格納箇所を管理するセグメントディスクリプタのリストである。各セグメントディスクリプタは、４つの属性を有している。属性は、情報の「種別」（プログラムコード、データ、スタック）と、「ベースアドレス」と、「リミット」と、「ＤＰＬ」である。「ベースアドレス」は、情報のＲＡＭ１２内における格納基準（スタート）アドレスを示している。「リミット」は、情報のアクセス範囲を示す。ＤＰＬは、前述した特権レベルを示す。アドレッシングにおいて採用されるセグメントディスクリプタは、リニアアドレスからの変換に際して使用されるセグメントセレクタの情報を介して選択される。また、タスクのアクセスが許可されるものか否かは、アクセス要求時に、チップセット内に書き込まれたレジスタＣＳ，ＤＳ，ＳＳのいずれかのレジスタ内のＣＰＬ（Current Privilege Level）及びＲＰＬ（Requested Privilege Level）と、ＧＤＴ１２６の対応するセグメントディスクリプタとを照合することで決定される。
【００９２】
図１９は、ＰＴＥのメモリマップを示す。各ページデータは所定のデータ量、例えば４ＫＢ毎に分割されており、各ページデータは、物理アドレスとアクセス属性とが設定されている。各ページデータは、プログラムコード、データ、スタックの種類が含まれる。物理アドレスは、リニアアドレスをＲＡＭ１２内の所定の位置に移動させるためのものである。アクセス属性は、特権レベルに相当するもので、「スーパーバイザー」と「ユーザ」とを有する。「スーパーバイザー」は特権レベルＤＰＬ“０”〜ＤＰＬ“２”に該当し、「ユーザ」は特権レベルＤＰＬ“３”に該当する。また、データに該当するページにＮＸ−Ｂｉｔ（Ｎｏｎ  ｅＸｅｃｕｔｅ  Ｂｉｔ）を保有し、当該ページからＣＰＵ１０に命令コードが発行できなくする。そして、ＣＰＵ１０からのアクセスが特権レベル違反となる場合には、例外割込の一般保護例外（＃ＧＰ）が発行され、一方、アクセス属性違反となる場合には、ページフォルト（＃ＰＦ）が発行される。いずれの場合にも、割込ハンドラ１３０を経てアクセスを無効とする処理が実行される。なお、アクセスの無効とは、アクセス自体をシャットダウンする態様、改変された特権レベル値を正しい値に書き直す態様を含む。
【００９３】
図２０は、リニアアドレスから物理アドレスに変換する変換方法を図で示したものである。ＣＰＵ１０で作成された、ある情報をアクセスするためのリニアアドレスは、ＧＤＴ１２６のセグメントセレクタとベースアドレス、さらにＰＴＥ１２９の物理アドレスとを用いて物理アドレスに変換されることとなる。図２１は、プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示すものである。まず、リアルモードでは、リニアアドレスの０ＭＢ〜１ＭＢは、物理アドレスの０ＭＢ〜１ＭＢに対応する。この範囲は１６ビット仕様であり、両者は一致する。ところで、ＰＴＥ１２９は、後述するように管理用（１００ＭＢ以下の領域）とＶＭ８０８６用（１００ＭＢ〜１０１ＭＢの領域）とが準備される。ここでは、プロテクトモードにおける管理用のアドレッシングについて説明する。すなわち、リニアアドレスの０ＭＢ〜１ＭＢを、物理アドレスの１００ＭＢ〜１０１ＭＢに対応するようにしている。このように、物理アドレスの１００ＭＢ（あるいは１０１ＭＢでもよい）以上の所定の値をＰＴＥ１２９内の管理用側のテーブルの各タスクの物理アドレスの項に設定するようにしている。この物理アドレスの設定により、ＰＴＥ１２９のタスク（代表的にはＯＳのロード、あるいはＯＳの実行）は、全て１００ＭＢ（あるいは１０１ＭＢ）以上の設定アドレスにロード、あるいは展開されることになる。換言すれば、ＰＴＥ１２９によって１００ＭＢ（あるいは１０１ＭＢ）以上のあるアドレスにページングされる結果、管理ファイル１２５及びＧＤＴ１２６、ＩＤＴ１２７，ＴＳＳ１２８、ＰＴＥ１２９、割込ハンドラ１３０が配置されている１００ＭＢ以下にアクセスされることはなく、従って、ＧＤＴ１２６その他のテーブル内の内容の改変はできず、かつそもそも１００ＭＢ以下は見えない（存在しない）ことと等価となる。
【００９４】
図１６は、１００ＭＢ〜１０１ＭＢの領域に０ＭＢ〜１ＭＢの内容（実質的に専用ローダと外部デバイス２から新たにロードされたシステムＢＩＯＳ）がコピーされた状態、及び同領域の所定位置にＯＳローダ１３１が作成された状態のメモリマップである。ＯＳローダ１３１は、例えばダミーデータが書き込まれている位置に、あるいは拡張ＢＩＯＳが書き込まれている位置に上書きする態様でよい。この１００ＭＢ〜１０１ＭＢへの情報の書込処理はＶＭ８０８６モードで行われる。なお、ＶＭ８０８６モードとは、プロテクトモード実行中に、リアルモードに切り替える処理を行うと管理の煩雑さ等を考慮すれば効率が低下することから、ＥＦＬＡＧＳレジスタのＶＭビットを切り替えてリアルモードのアドレス演算を行うようにし、１６ビット用のプログラムを実行可能にするものである。この期間において、当該領域から０ＭＢ〜１００ＭＢの情報へのアクセスをページングによって無効にしている。
【００９５】
ＯＳローダロード処理部１０４は、外部デバイス２側のＯＳローダロード処理部２０４によってコピーされ、端末１側に読み出される０ＭＢ〜１ＭＢの内容をＲＡＭ１２の１００ＭＢ〜１０１ＭＢにロードする処理、及びＯＳローダをロードする処理を行う。ＯＳローダは、ＨＤ１２Ａから読み取ったＭＢＲと、外部デバイス２から読み取った、後述するブートプログラムコードとから作成される。より具体的には、ＯＳローダロード処理部１０４は、管理ファイル１２５内のプログラムであって、ＨＤ１２Ａの０セクタ目から読み出されたＭＢＲのパーティションテーブルから、ＯＳのロード及び起動を行わせるためのプログラムであるＰＢＲ（Partition Boot Record）、及びＨＤ１２Ａ内のＯＳの格納アドレス情報を読み取る。また、ＰＢＲは、ＢＰＢ（BIOS Parameter Block）とブートプログラムコードとを含んでいる。この内、ＢＰＢはＨＤ１２ＡからＯＳを読み出すための情報であることから、改変される可能性はなく、そのまま利用する一方、ブートプログラムコートは、固定的で共通であり、また改変の可能性があることから、予め外部デバイス２に準備しているブートプログラムコードをロードして用いるようにしている。そして、ＯＳローダロード処理部１０４は、ＢＰＢと外部デバイス２からロードされたブートプログラムコードとを結合してＯＳローダ（ＩＰＬ（Initial Program Loader）とも言う。）１３１を作成する。この後、専用ローダ処理部１０２は、ＣＰＵ１０の制御をＯＳローダ処理部１０５に渡す（ジャンプする）。
【００９６】
図１７は、１０１ＭＢ以上の領域にＯＳがロードされる状態を示すメモリマップである。なお、図１７中、破線で示すＯＳ用ＧＤＴ１３２、ＯＳ用ＩＤＴ１３３は、ＯＳが自己の挙動を記述するためのテーブルを作成しようとしている状況を示している。
【００９７】
ＯＳローダ処理部１０５は、まず、ＶＭ８０８６モード（すなわちＣＰＬ“３”）に設定した状態で、制御レジスタＣＲ３に物理アドレスを設定して、ＯＳローダを起動させてＨＤ１２ＡからＯＳを構成する各プログラムを順次ＲＡＭ１２の１０１ＭＢ以上の領域にロードするものである。ＨＤ１２ＡからロードされてきたＯＳは、自己の動きを記述するＯＳ用ＧＤＴ１３２を作成するべく、チップセットのレジスタＧＤＴＲの内容を書き換えようとするＬＧＤＴ要求を出す。一方、チップセットのレジスタＧＤＴＲへのアクセス（書き替え要求）はＣＰＬ“０”でのみ許可されるものであるから、ＯＳ動作監視部１０６は、このアクセスに対して、例外割込としての一般保護例外（＃ＧＰ）を発行する。そして、この一般保護例外は、ＩＤＴ１２７を介して、管理ファイル１２５内の割込ハンドラに移行する。ＯＳ動作監視部１０６は、割込ハンドラ２を介して、プログラムカウンタを用いてＣＰＵ１０が次に実行するべき命令（プログラム）の格納場所を指すレジスタＥＩＰを参照して、不当なアクセス要求をしているプログラムのアクセスを特定し、レジスタＧＤＴＲの書き替えを禁止すると共に、当該不当なプログラムに対し、改変された特権レベルを元の値に書き直す等の割込ハンドラ処理を実行する。また、ＯＳ動作監視部１０６は、この不当なプログラムをＧＤＴ１２６に新たなセグメントディスクリプタとして追加し、特権レベルの項目にＤＰＬ“２”を設定し、かつＰＴＥ１２９の管理用のテーブルに新たなページングテーブルとして追加し、物理アドレスとして少なくとも１０１Ｍ（あるいは１００Ｍ）以上の所定のアドレス値を設定する。これにより、ＧＤＴ１２６のアクセス権にＤＰＬ“２”に設定されることで、以後、ＯＳ側から０ＭＢ〜１００ＭＢ内へのアクセスは不当アクセスとして無効にされ、かつＰＴＥ１２９によってＯＳからは１００Ｍ以下の物理アドレス変換が不可能となる。
【００９８】
なお、管理ファイル１２５は、外部デバイス２が予め格納している特定ＡＰを１ＭＢ〜１００ＭＢ内にＤＰＬ“０”でロードするようにしている。特定ＡＰとしては、操作部１３のデバイスドライバ、表示部１４のデバイスドライバを制御して特定モード環境で情報処理操作を実行可能にすると共に、必要に応じて特定の会員に対して通信を行うべく外部デバイス２のＮＩＣ２６のデバイスドライバを制御する。なお、端末１がサーバの場合、外部デバイス２のＮＩＣ２６のデバイスドライバが少なくとも実行される態様であればよい。
【００９９】
情報処理部１０７は、前記デバイスドライバを切り替えて汎用のＡＰモードでの処理と特定ＡＰモードでの処理を実行させるものである。ネットワーク通信処理部１０８は、端末１からの通信と外部デバイス２のＮＩＣ２６からの会員間、特定サーバ間と通信をデバイスドライバを用いて切替制御するものである。動作環境切替処理部１０９は、汎用ＯＳ環境での処理と特定ＯＳ環境での処理とを切り替えるものである。切替指示は、端末１に対する特定操作で行うことができ、例えばキーボード上の特定キー（１又は複数）を押下することで、サイクリックにモード切替指示が可能であり、あるいは個別に別々の操作で各環境を指示する態様でもよい。
【０１００】
続いて、図２２〜図２７を用いて、端末１の処理手順について説明する。図２２は、ＣＰＵ１０によって実行される専用ローダ１２３の処理を示すフローチャートである。まず、専用ローダ１２３のロード終了に応じたハードウエア割込の有無が判断され（ステップＳ１０１）、ハードウエア割込がなければ、本フローを抜ける。一方、ハードウエア割込があれば、レジスタ群の初期化が行われ、かつ制御レジスタＣＲ０がリアルモードに設定される（ステップＳ１０３）。
【０１０１】
そして、まず、専用ローダ１２３によって一時的ＧＤＴ１２４が作成され（ステップＳ１０５）、次いで、制御レジスタＣＲ０がプロテクトモードに設定される（ステップＳ１０７）。そして、一時的ＧＤＴ１２４のセグメントリミット値を４ＧＢにしたディスプリクタの内容がチップセットのセグメントレジスタに登録される（ステップＳ１０９）。これにより、１ＭＢ以上のアドレスが指定可能な状態にされる。続いて、制御レジスタＣＲ０がリアルモードに設定される（ステップＳ１１１）。すなわち、制御レジスタＣＲ０をリアルモードに変更すると共に、一時的ＧＤＴ１２４のセグメントリミット値を４Ｇとしたことに対応させてリアルモードの中で１ＭＢ以上をアクセス可能にするアンリアルモードが設定できる。
【０１０２】
そして、専用ローダ１２３によって、管理ファイル１２５、管理用割込ハンドラ（管理ファイル内に含まれている態様でよい）が外部デバイス２から１ＭＢ〜１００ＭＢの領域にロードされる（ステップＳ１１３）。この後、管理用ＧＤＴ１２６が外部デバイス２からロードされる（ステップＳ１１５）。かかる処理が終了すると、ＣＰＵ１０は制御レジスタＣＲ０をプロテクトモードに設定して（ステップＳ１１７）、管理ファイル１２５にジャンプし、管理ファイル１２５が起動する。
【０１０３】
図２３は、ＣＰＵ１０によって実行される管理ファイル１２５の処理を示すフローチャートである。まず、特権レベルＤＰＬ“０”で１ＭＢ〜１００ＭＢの所定位置に、ＧＤＴ１２６、ＩＤＴ１２７、ＴＳＳ１２８が作成される（ステップＳ１３１）。前述したように、ＴＳＳ１２８は管理用（１００ＭＢ以上の領域）とＶＭ８０８６用（１００ＭＢ〜１０１ＭＢの領域）とが作成される。次いで、ＰＴＥ１２９が作成される（ステップＳ１３３）。ＰＴＥ１２９も前述したように、管理用とＶＭ８０８６用とが作成される。
【０１０４】
続いて、０ＭＢ〜１ＭＢの領域の内容が１００ＭＢ〜１０１ＭＢに複製（コピー）される（ステップＳ１３５）。これにより、ＯＳロードに必要なシステムＢＩＯＳがロードされる。さらに、１００ＭＢ〜１０１ＭＢの適所にＯＳ用ローダが作成される（ステップＳ１３７）。この後、ＣＰＵ１０は、管理ファイル１２５内のＯＳのロードを処理（監視及び管理）するプログラムにジャンプする（ステップＳ１３９）。
【０１０５】
図２４は、ＨＤ１２Ａの先頭セクタからＭＢＲが１００ＭＢ〜１０１ＭＢの所定位置にロードされる（ステップＳ１５１）。次いで、ＭＢＲ内のアクティブなパーティションテーブルからＯＳ（ＯＳを構成する各プログラム）の格納アドレスが取得される（ステップＳ１５３）。
【０１０６】
そして、ＨＤ１２ＡからＰＢＲが１００ＭＢ〜１０１ＭＢへロードされ（ステップＳ１５５）、次いで、ＰＢＲのブートプログラムコードの部分が外部デバイス２からロードされてきたブートプログラムコードと書き替えられ（ステップＳ１５７）、ＰＢＲのＢＰＢと、書き替えられたブートプログラムコードとが結合される（ステップＳ１５９）。このようにして、ＯＳローダが作成される。なお、ＯＳローダは所謂ＩＰＬに相当し、このＩＰＬは、周知のようにＯＳ本体をロードする部分のローダプログラムを事前にリアルモードでロードするためのものである。そして、このＯＳ本体をロードするローダプログラムによってＯＳ本体が、例えば分割等されてロードされるが、ここでは、ＯＳローダがＯＳ本体を分割したプログラムを順次ロードするものとして説明する。
【０１０７】
図２５は、ＣＰＵ１０によって実行される、ＯＳローダ作成後における管理ファイル１２５の処理を示すフローチャートである。管理ファイル１２５は、ＯＳローダが作成されると、直ちにＯＳのロードを監視及び管理するＶＭ８０８６モードに設定、すなわち特権レベルをＤＰＬ“３”に自動的に設定する（ステップＳ１７１）。従って、この状態で１０１ＭＢ以上の領域にアクセスされる情報（ここではロードされるＯＳのプログラム）は、特権レベルＣＰＬ“３”で扱われる。
【０１０８】
次いで、ＯＳ用ＧＤＴ、ＩＤＴ及びＰＴＥの作成命令による、チップセットのレジスタＧＤＴＲ等へのアクセス（ＧＤＴＲの書き替え要求ＬＧＤＴ等）の有無が判断される（ステップＳ１７３）。レジスタＧＤＴＲ等へのアクセスがあれば、かかるアクセスに対して、アクセス権の正当性が照合されるが、ＣＰＬ“３”からのアクセスであることから、一般保護例外が発行され（ステップＳ１７５）、管理用ＩＤＴ１２７から一般保護例外に対応する割込ハンドラ１３０へのジャンプが実行される（ステップＳ１７７）。その結果、割込ハンドラ１３０でＥＩＰに対して、一時保管された次のジャンプ先がロードされる処理が実行される（ステップＳ１７９）。また、このタスクによって、前記レジスタＧＤＴＲ等へのアクセスが拒否され、いわゆる無効処理が実行される。
【０１０９】
続いて、管理用ＧＤＴ１２６、管理用ＰＴＥ１２９に、今回ロードされてきたＯＳのプログラムに対応するセグメントディスクリプタが追加される（ステップＳ１８１）。さらに、管理用ＧＤＴ１２６及び管理用ＰＴＥ１２９の特権レベルＤＰＬ“０”がＤＰＬ“２”に書き替えられ、また、管理用ＰＴＥ１２９の物理アドレスの項に１０１Ｍ（あるいは１００Ｍ）より大きな所定の値が設定、例えば当該例外で受け取ったアドレスを１００Ｍずらして設定される（ステップＳ１８３）。
【０１１０】
続いて、ＨＤ１２ＡからＯＳを構成する次のプログラムがロードされてきたか否かが判断され（ステップＳ１８５）、ＯＳを構成する次のプログラムのロードがなければ、本フローを抜ける。一方、ＯＳを構成する次のプログラムがロードされてきたのであれば、ステップＳ１７３に戻って、同様な処理が繰り返され、新しいセグメントディスクリプタとして、管理用ＧＤＴ１２６、管理用ＰＴＥ１２９に追加される。
【０１１１】
一方、ステップＳ１８９で、アクセスがあれば、ステップＳ１５７に進んで、一般保護例外が発行され、これに基づいて、前述したような割込ハンドラが実行される（ステップＳ１５９，Ｓ１６１）。なお、同様に、ＯＳのプログラムによって、ＡＰのプログラムがロードされる場合にも同様に処理される。なお、ＡＰは特権レベルＤＰＬ“３”に設定されているから、新たに追加されるセグメントディスクリプタの特権レベルは、書き替える必要はないが、ＤＰＬ“３”を積極的に書き込むようにしてもよい。また、ロードされるＡＰについても、管理ファイル１２５によって、管理用ＰＴＥ１２９の物理アドレスの項に１０１Ｍ（あるいは１００Ｍ）より大きな所定の値が設定される。
【０１１２】
図２６は、ＣＰＵ１０によって実行される、ＯＳブート後における管理ファイル１２５の処理を示すフローチャートである。まず、０ＭＢ〜１００ＭＢにＯＳ（あるいはＡＰ）のプログラムから管理用ＧＤＴ１２６にアクセスがなされたか否かが判断される（ステップＳ２０１）。管理用ＧＤＴ１２６にアクセスがなければ、本フローを抜ける。一方、管理用ＧＤＴ１２６にアクセスがあれば、アクセスしてきたＯＳの特権レベルとレジスタＧＤＴＲの特権レベルとの照合によって一般保護例が発行される（ステップＳ２０３）。そして、管理用ＩＤＴ１２７から一般保護例外に対応する割込ハンドラ１３０へのジャンプが実行される（ステップＳ２０５）。その結果、割込ハンドラ１３０の処理が実行される（ステップＳ２０７）。ここでの割込ハンドラ１３０の処理は、管理用ＧＤＴ１２６へのアクセスの拒否、あるいはアクセスされたことを想定して、正常な内容に書き直す処理を行うようにしてもよい。
【０１１３】
図２７は、ＣＰＵ１０によって実行される、処理環境の切替処理を示すフローチャートである。処理環境の切替とは、汎用ＯＳ環境での作業と特定ＯＳ環境での作業との間の切替をいう。端末１の稼働中において、特定ＯＳ環境への切替指示の有無が判断され（ステップＳ２２１）、切替指示がなければ、ステップＳ２２７に進む。なお、ステップＳ２２１は、許可された状態での割込処理としてもよい。そして、ステップＳ２２７で、汎用ＯＳ環境への切替指示の有無が判断され、切替指示がなければ、本フローを抜ける。
【０１１４】
一方、ステップＳ２２１で、特定ＯＳ環境への切替指示があったのであれば、現在の使用環境が汎用ＯＳ環境か否かが判断され（ステップＳ２２３）、現在の使用環境が汎用ＯＳ環境であれば、特定ＯＳ環境に切り替える処理が実行される（ステップＳ２２５）。これによって、０MB〜１００MB内において特定ＯＳ環境の下での情報処理のための操作及びデバイスドライバの制御が行われる。これによって汎用ＯＳ環境と区別され、マルウエアが侵入することはない。逆に、現在の使用環境が既に特定ＯＳ環境であれば、切替指示は無視されて、本フローが終了する。
【０１１５】
また、ステップＳ２２７で、汎用ＯＳ環境への切替指示のあったのでれば、現在の使用環境が特定ＯＳ環境か否かが判断され（ステップＳ２２９）、現在の使用環境が特定ＯＳ環境であれば、汎用ＯＳ環境に切り替える処理が実行される（ステップＳ２３１）。逆に、現在の使用環境が既に汎用ＯＳ環境であれば、切替指示は無視されて、本フローが終了する。
【０１１６】
本発明は、以下の態様を採用することが可能である。
【０１１７】
（１）本実施形態では、外部デバイスとしてＰＣＩを想定したもので説明したが、これに限定されず、少なくとも、ＣＰＵ及びＲＯＭ、ＲＡＭを内蔵したものであればよい。また、ＤＭＡＣを備えているデバイスであればよい。例えばＵＳＢ（Universal Serial Bus）メモリチップ、ＩＣカードを改良した対応でもよいし、携帯型の通信機器に内蔵された態様であってもよい。
【０１１８】
（２）本実施形態では、外部デバイスとしてＰＣＩで説明したが、本発明は、これに限定されず、また、０ＭＢ〜１ＭＢへの専用ローダのロード方式もＤＭＡＣを採用する実施形態（本発明者が既に提案したＰＣＴ／ＪＰ２０１０／５８５５２）に限定されない。例えば、本発明者が既に提案した、ＰＣＴ／ＪＰ２００９／５７９６２、ＰＣＴ／ＪＰ２０１０／６８３４６、日本特許出願２０１１−２３５３８６を適用して専用ローダを強制的に起動メモリ領域にロードする態様でもよい。
【０１１９】
上記のうち、ＰＣＴ／ＪＰ２００９／５７９６２には、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をＵＳＢメモリ等の外部デバイスによってブートする外部ブート方法を開示している。この方法は、外部デバイスの記憶手段に、情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して情報処理装置の主メモリの起動メモリ領域（０ＭＢ〜１ＭＢ）にマッピングさせるためのＭＢＲであって、情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶されている。そして、ローダは、外部デバイスの分散処理手段によって、ＭＢＲの起動に先立って予め設定された個数に分割されていると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報が作成される。
【０１２０】
例えば図２８を用いて説明すると、図２８は、スタック領域１２０３を割込ベクタテーブル１２０２に重畳する方法を説明する図である。スタック領域１２０３には、割込直前の命令内容に関するＥＦＬＡＧ，ＣＳ，ＩＰがベースポインタＢＰから書き込まれる。そこで、このベースポインタＢＰの位置を、図の矢印で示すように、割込ベクタテーブル１２０２のベクタ２の上位ビットの位置に一致するように、スタック領域１２０３を位置設定する。従って、スタック領域１２０３へのＥＦＬＡＧ，ＣＳ，ＩＰの書き込みは、割込ベクタテーブル１２０２のベクタ２の上位ビットにＦＬＡＧが、ベクタ１の下位ビットにＣＳが、ベクタ１の上位ビットにＩＰが書き込まれることになる。一方、ベクタ１は、外部割込先となるアドレスを示すものであるから、割込が発生してＣＰＵ１０がベクタ１を参照し、制御が、ベクタ１に書き込まれているアドレスのプログラムに移行すると、スタック領域１２０３にその直前の命令内容であるＥＦＬＡＧ，ＣＳ，ＩＰが退避して書き込まれる。すなわち、割込ベクタテーブル１２０２のベクタ１には、ＩＰ，ＣＳのアドレス情報が書き込まれることになる。ベクタ１には、その上位ビットにＩＰが、下位ビットにＣＳが書き込まれることになる。従って、そのアドレスは、具体的には、ＩＰ×１６＋ＣＳとなる。
【０１２１】
すなわち、今、ＢＩＯＳにマルウエアが潜伏等（あるいはＢＩＯＳの立ち上げ中に外部から侵入）していたとして、ＢＩＯＳ起動時にマルウエアが動作して、チップセットのＥＦＬＡＧＳのフラグＴＦをセットし、割込ベクタテーブル１２０２のベクタ１にウイルス本体の存在するアドレスが書き込まれている場合を想定する。ＢＩＯＳ起動後、典型的にはＭＢＲ起動中に、ある命令が実行され、その後に、ＣＰＵ１０の制御がマルウエアに乗っ取られた（マルウエアによるデバッグ割込が発生した）と想定する。このとき、制御は、ベクタ１に書き込まれているアドレスに遷移し、マルウエアによる動作（マルウエアの複製、データ改竄や破壊等）が実行されることになる。一方、マルウエアの割込によって、スタック領域１２０３すなわち割込ベクタテーブル１２０２のベクタ１には、直前の命令内容を示す内の、情報ＩＰ，ＣＳが書き込まれることになる。従って、ベクタ１に元々書き込まれていたマルウエアの格納位置を示すアドレスは書き換えられ、消去されたことになる。かかる方法によれば、マルウエアは、ＢＩＯＳ起動中に仕掛けをした状態において、ＭＢＲ起動後に一度でも動作した途端、潜伏先のアドレスを失う結果となり、その後の動作が抑止されることになる。次いで、ＲＡＭ１２内の起動メモリ領域１２０内であって、前記領域１２０２，１２０３及びＭＢＲ領域を除いた領域にローダがマッピングされる。分割されたローダは、マッピング位置情報に従って、分割数だけ分散配置（展開）される。なお、分割ローダに適宜数のダミーデータを加える態様としてもよい。各分割ローダは、例えば最終ビット位置に、次のマッピング位置情報が書き込まれており、このマッピング位置情報を順次参照することで、ローダ後に元のローダに合成される。この場合、ダミーデータには、その旨の情報が書き込まれておれば、合成時に省く処理が可能となる。このようにして、ローダ、すなわち本発明における専用ローダが適正に０ＭＢ〜１ＭＢにロードされる。
【０１２２】
また、ＰＣＴ／ＪＰ２０１０／６８３４６には、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をブートする外部デバイスを記載している。この外部デバイスは、前記情報処理装置のＢＩＯＳが前記ＣＰＵによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記ＣＰＵからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きして一般保護例外を発生させる第１のプログラム、及び前記一般保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第２のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたものでる。
【０１２３】
例えば図２９は、ダミーコードの割込ベクタテーブルへの上書き処理、及び一般保護例外に基づく正常リセット処理を説明する図である。まず、ダミーコードを所定のベクタ、特にベクタ０，１，１３に上書きする意義について説明する。ＢＩＯＳ動作中にＣＰＵ１０の制御を一時的に奪ったマルウエアによって割込ベクタテーブルのデータが改竄、特にＩＮＴ１を規定するベクタ１のデータが書き換えられて、マルウエアの潜伏位置を記述することが考えられる。また、ＢＩＯＳの動作期間中に、起動メモリ領域１２０にマルウエアを起動させる異常プログラムが配置されることが考えられる。そこで、割込ベクタテーブルのベクタ１については、書き換えられた可能性のある内容を書き直してマルウエアの挙動を抑止する処理を行わせる必要がある。また、ベクタ１３については、起動メモリ領域１２０上の前記異常プログラムを所定のデータの上書きによって消去するという、正常リセット処理のための割込ハンドラを確実に起動させる処理を行わせる必要がある。割込ハンドラを確実に起動させる処理は、ベクタ１３に割込ハンドラ領域１２０３１の先頭アドレスを書き込むこと、及び後述するような一般保護例外を発生させる仕組みを作ることである。
【０１２４】
すなわち、ベクタ１３の一般保護例外を利用することで、ベクタ１３から割込ハンドラ領域１２０３１に自動的に処理が移行する仕組みを構築する。すなわち、（ｉ）ダミーコードの書込アドレスを降順に読み出すためにチップセットのＥＦＬＡＧＳのフラグＤＦを１にセットし、（ｉｉ）降順の書込アドレスが割込ベクタテーブル１２０２１の左端アドレス“0x0000”を下回る不正なアクセスを発生させて一般保護例外を引き起こすようにしている。さらに、（ｉｉ）のためには、ベクタ１からベクタ０の方向への、すなわち降順に書込アドレスを生成させる必要がある。そこで、ベクタ０，１，１３を含み、かつ不正アクセス用のアドレスを生成させるためには、ダミーコードのビット数は、ベクタ０，１，１３の３個のベクタ及び不正アクセスを発生させる少なくとも１ビット分で足りる。なお、ベクタ１３とベクタ１，０及び不正アクセス分とは不連続であり、かつダミーコードの割込ベクタテーブルに対する上書き位置が明白となる傾向にある。そこで、より好ましい態様として、本実施形態では、ベクタ１３〜０及び不正アクセスの少なくとも１ビット分のデータ量を有するダミーコードを作成し、書込アドレスをベクタ１３以上の所定のベクタからスタートさせて、最終的に不正アクセスが発生するように降順に指定するようにしている。
【０１２５】
図２９は、この状態を示しており、ダミーコードは、所定のビット数、ここでは５１２ビット（bit）を有するものとし、スタートアドレスは５００ビット目としている。なお、５１２ビットを有するデータ列は、ＵＳＢメモリ２が一連の動作（ＲＥＰ  ＩＮＳ）で読み出し可能なデータ量である。すなわち、矢印（Ａ）で示すように降順にアドレスが生成されていくと、（本実施例では、１アドレスずつ生成するとして）５０１回目のアクセス時に不正アクセスが発生し、一般保護例外が発生する。一般保護例外が発生すると、ＣＰＵ１０は、矢印（Ｂ）に示すようにベクタ１３に移動する。ここで、ＣＰＵ１０はベクタ１３の記憶内容を読み取り、読み取った内容に一致する起動メモリ領域１２０のアドレス、すなわち矢印（Ｃ）に示すように割込ハンドラ領域１２０３１の先頭アドレスに移動する。そして、ＣＰＵ１０は、割込ハンドラを実行して、正常リセット処理を行う。このダミーコードの上書き処理は、ＣＰＵ１０からの１つの命令によってＲＥＰ  ＩＮＳ処理で行われ、かつ正常リセット処理は、ダミーコードの上書き処理に連続して割込ハンドラによって行われるため、ＣＰＵ１０からの１回の命令で両方の処理が済み、従って、その間、マルウエアがＣＰＵ１０に介入する機会はない。
【０１２６】
今、ＢＩＯＳにマルウエアが潜伏等（あるいはＢＩＯＳの立ち上げ中に外部から侵入）していたとして、ＢＩＯＳ起動中にマルウエアが動作して、ＥＦＬＡＧＳのフラグＴＦをセットし、割込ベクタテーブル１２０２１のベクタ１をマルウエア本体の存在するアドレスに書き換えた場合を想定する。ＢＩＯＳ起動後、典型的にはＭＢＲ起動中に、ある命令が実行され、その後に、ＣＰＵ１０の制御がマルウエアに乗っ取られた（マルウエアによるデバッグ割込が発生した）と想定する。このとき、制御は、ベクタ１に書き込まれているアドレスに遷移し、マルウエアによる動作（マルウエアの複製、データ改竄や破壊等）が実行されることになる。その後、ＣＰＵ１０の制御がＢＩＯＳからＭＢＲに渡されると、割込ベクタテーブルのベクタのうち、正常リセットに必要なベクタの内容をダミーコードで書き換えるので、マルウエア本体の存在するアドレス情報は実質削除される。さらに、一般保護例外によって、起動メモリ領域１２０も正常リセット処理され、仮に潜伏しているマルウエア自身も消去されることになる。すなわち、マルウエアは、ＢＩＯＳ起動中に挙動のための仕掛けをしたとしても、ＭＢＲが起動されると、その挙動のための情報が全て消去されることとなり、この結果、その後の挙動が抑止されることになる。
【０１２７】
また、日本特許出願２０１１−２３５３８６には、ＣＰＵ及び前記ＣＰＵが実行するプログラムが展開される主メモリを備えると共に、前記主メモリと外部との間でハードウエアによるデータ通信を行う、チップセット内のコントローラを備えた情報処理装置を、前記コントローラを経由して起動に要するデータを前記主メモリに書き込んで起動させる外部デバイスを記載している。
【０１２８】
この外部デバイスは、前記情報処理装置のＢＩＯＳが前記ＣＰＵによって実行されることによって前記主メモリの一部であるアドレス指定が可能な起動メモリ領域に優先して読み出される、データ転送の指示情報を含む１次ローダを記憶する第１の記憶部と、前記１次ローダによる前記データ転送指示を受けて前記起動メモリ領域に順次分割された分割制御データとして読み出される少なくとも割込ベクタテーブル及び２次ローダを含む所定の制御データと前記分割制御データが前記起動メモリ領域に書き込まれる際の書込位置となるアドレスデータとを記憶する第２の記憶部と、前記起動メモリ領域への読出後に起動される前記１次ローダから前記データ転送の指示を受けて、前記第２の記憶部から前記各分割制御データを対応する前記アドレスデータに従って前記コントローラを経由して前記主メモリに順番に読み出すデータ転送部と、前記データ転送処理の終了を受けて前記ハードウエア割込指示信号を前記起動メモリ領域に読み出された前記割込ベクタテーブルに遷移し、前記２次ローダを起動させるべくハードウエア割込を発行させるハードウエア割込指示部とを備えたものである。
【０１２９】
例えば図３０は、ブートの流れを簡単に説明する。ブート時における情報の流れ及びその手順は、図３０中に矢印で示されている。まず、情報処理装置（端末）１の電源投入を受けて、ＣＰＵ１０は、ＢＩＯＳを起動し、ＢＩＯＳの処理によってＵＳＢメモリ２から外部ＭＢＲ１２１１を取り込む。外部ＭＢＲ１２１１の取込が終了すると、ＣＰＵ１０の処理が外部ＭＢＲ１２１１に渡されて、外部ＭＢＲ１２１１のマスターブートレコードが１次ローダとして機能する。まず、１番目の分割ＴＤデータテーブルＴＤ[1]１２１２が作成される（図３０の矢印（１））。次に、外部ＭＢＲ１２１１は、ＵＳＢホストコントローラに対してインターラプト転送の開始指示（コマンド）を行う（図３０の矢印（２））。まず、分割ＴＤデータテーブルＴＤ[1]の１行目のアドレスデータがＵＳＢホストコントローラで取得され、当該アドレスデータと１番目に転送される分割データであるダミーデータ１２１３とがＭＣＨ（MemoryController Hub）、ＩＣＨＩＣＨ（I/O Controller Hub）を経てＲＡＭ１２に送られて（図３０の矢印（３））、当該アドレスに書き込まれる（図３０の矢印（４））。以後、ＣＰＵ１０の制御を受けることなく、ＵＳＢホストコントローラとＵＳＢターゲットコントローラとの間で、ＵＳＢメモリ２から、分割データを順次取り込むことが可能となり、分割ＴＤデータテーブルＴＤ[1]の５行目のアドレスデータがＵＳＢホストコントローラで取得され、当該アドレスデータと５番目に転送される分割データである分割ＴＤデータテーブルＴＤ[2]とがＭＣＨを経てＲＡＭ１２に送られて、起動メモリ領域１２０外の当該アドレス“0x40000”に書き込まれる（図３０の矢印（５））。
【０１３０】
この分割ＴＤデータテーブルＴＤ[2]の各行のアドレスデータに対応する分割データがＵＳＢメモリ２から順次読み込まれて、起動メモリ領域１２０に展開される。ＵＳＢホストコントローラは、分割ＴＤデータテーブルＴＤが転送される毎に、その分割ＴＤデータテーブルに含まれるアドレスデータを一時保管し、次に転送される分割制御データにアドレスデータを対応付けてＭＣＨに送出するようにしている。ＭＣＨは、転送されてきたデータからアドレスデータを取得し、このアドレスに分割制御データ１２１５を書き込ませる。
【０１３１】
ここでは、分割ＴＤデータテーブルＴＤ[2]の１行目のアドレスデータに対応して割込ベクタテーブル１２１４がＵＳＢメモリ２から読み取られて書き込まれる（図３０の矢印（６））。そして、順次、分割ＴＤデータテーブルＴＤ[i]が展開され（図３０の矢印（７））、最後の分割ＴＤデータテーブルＴＤ[n]の最下行のアドレスデータに対応する分割データがＵＳＢメモリ２から読み込まれ、起動メモリ領域１２０に展開されると、同時にＭＣＨ経由（ＣＰＵ１０を経由することなく）で、ハードウエア割込指示信号が割込ベクタテーブルのＩＮＴ“XX”に送信される（図３０の矢印（８））。ＣＰＵ１０は、このハードウエア割込指示信号を受けて、割込のコマンドを、分割された特定ＯＳローダの先頭の分割データが展開されている分割制御データ（先頭）１２１５の基準アドレスにジャンプし（図３０の矢印（９））、これによって特定ＯＳローダの実行が開始される。以上の処理によって、インターラプト転送前の起動メモリ領域１２０に存在するマルウエア等は全て消去される。なお、この実施例における特定ＯＳローダ（制御データ）が、本発明における専用ローダに相当する。
【０１３２】
以上の各専用ローダのロード方法は、外部デバイスから行われるものである。そして、起動メモリ領域１２０に対して、ＢＩＯＳやＭＢＲ内に仮にマルウエアが潜伏していても、かかるマルウエアを消去して行うことを可能にするもので、これによって起動メモリ領域１２０をクリーンな環境とし、かつこの領域１２０に外部デバイスから専用ローダ（必要に応じて専用ローダをロードするために必要なテーブル等を含む）をロードすることができる。そして、外部デバイスから起動メモリ領域１２０に専用ローダがロードされた後、この専用ローダによってロードされる管理ファイルの配置領域に特権レベルの最高乃至は相対的に最高（ＯＳ、ＡＰのロード領域に設定される特権レベルと比較した場合）を設定することで、管理ファイルをクリーンな環境で起動及び稼働維持させることが可能となる。
【０１３３】
（３）本実施形態では、管理ファイル１２５等を格納するためのセキュア領域（特権レベルＤＰＬ“０”）を１ＭＢ〜１００ＭＢと設定したが、これに限定されず、管理ファイル１２５及び他の必要な管理テーブル等の格納が可能なメモリ容量分があればよく、例えば１ＭＢ〜数ＭＢのメモリ容量であってもよい。また、領域０ＭＢ〜１ＭＢについてもセキュア領域（特権レベルＤＰＬ“０”）としたことで、０ＭＢ〜１００ＭＢを同質のセキュア領域として扱うことができる。
【０１３４】
（４）本実施形態によれば、０ＭＢ〜１００ＭＢにセキュア領域を構築したので、感染の検知が困難な、いわゆるステルス型ウイルスの侵入を効果的に阻止できる。また、セキュアな領域内で特定ＯＳ環境を設定し、特定の情報処理を可能としたが、これに代えて、あるいはこれに加えて、マルウエアを検知するアンチウイルスソフトウエアをロードし、１００ＭＢ〜４ＧＢまでを監視する態様とすることも可能である。
【符号の説明】
【０１３５】
１  端末（情報処理装置）
１０，２０  ＣＰＵ
１１，２１  ＲＯＭ
１０１  専用ローダロード処理部
１０２  専用ローダ処理部（管理ファイルロード処理手段）
１０３  管理ファイル動作環境作成部（管理ファイルロード処理手段）
１０４  ＯＳローダロード処理部
１０５  ＯＳローダ処理部
１０６  ＯＳ動作監視部１０６
１２  ＲＡＭ（主メモリ）
１２Ａ  ハードディスク（ＨＤ）
１２０  起動メモリ領域
１３  操作部
２  ＰＣＩ（外部デバイス）
２０１  専用ローダロード処理部
２０２  監視部
２０３  管理ファイルロード処理部
２０４  ＯＳローダロード処理部
２５１  専用ローダ記憶部
２５２  専用ローダ記憶部
２５３  管理ファイル記憶部
２５４  システムテーブル記憶部
２５５  ＯＳローダ記憶部
２４  ＤＭＡＣ（専用ローダロード部）
【図１】
2013101550.tif 000003
【図２】
2013101550.tif 000004
【図３】
2013101550.tif 000005
【図４】
2013101550.tif 000006
【図５】
2013101550.tif 000007
【図６】
2013101550.tif 000008
【図７】
2013101550.tif 000009
【図８】
2013101550.tif 000010
【図９】
2013101550.tif 000011
【図１０】
2013101550.tif 000012
【図１１】
2013101550.tif 000013
【図１２】
2013101550.tif 000014
【図１３】
2013101550.tif 000015
【図１４】
2013101550.tif 000016
【図１５】
2013101550.tif 000017
【図１６】
2013101550.tif 000018
【図１７】
2013101550.tif 000019
【図１８】
2013101550.tif 000020
【図１９】
2013101550.tif 000021
【図２０】
2013101550.tif 000022
【図２１】
2013101550.tif 000023
【図２２】
2013101550.tif 000024
【図２３】
2013101550.tif 000025
【図２４】
2013101550.tif 000026
【図２５】
2013101550.tif 000027
【図２６】
2013101550.tif 000028
【図２７】
2013101550.tif 000029
【図２８】
2013101550.tif 000030
【図２９】
2013101550.tif 000031
【図３０】
2013101550.tif 000032