(57)【要約】      （修正有）【課題】汎用ＯＳ環境に比べ特定ＯＳ環境での高いセキュリティーでの通信を実現する。【解決手段】端末のブート時にＨＤからＲＡＭ１２に読み出された汎用ＯＳ１３４の環境で動作する汎用ＡＰa１３４１からの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、端末に設けられているＮＩＣを経由して行う汎用通信ステップと、端末に着脱可能に接続された外部デバイス２から外部ブートによってＲＡＭ１２に読み出された特定ＯＳ１３６の環境で動作する特定ＡＰa１３６１からの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、外部デバイス２に設けられているＮＩＣ２６を経由して行う特定通信ステップとを、メモリマップドＩ／Ｏ１７、２９を用いてそれぞれ実行する。【選択図】図３１
2013114367.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のブート時にハードディスクから主メモリに読み出された汎用ＯＳの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側ＮＩＣを経由して行う汎用通信ステップと、
前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定ＯＳの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側ＮＩＣを経由して行う特定通信ステップとを択一的に行うことを特徴とするファイル通信処理方法。
【請求項２】
前記情報処理装置の起動後に、外部からの切り換え操作を受け付けて、前記汎用ＯＳの環境と、前記特定ＯＳの環境とを択一的に切り替える切替ステップを備えることを特徴とする請求項１記載のファイル通信処理方法。
【請求項３】
前記主メモリは、第１の領域と第２の領域とに区分され、前記第１の領域に前記特定ＯＳ及び前記特定アプリケーションが読み出され、前記第２の領域に前記汎用ＯＳ及び前記汎用アプリケーションが読み出され、前記第１の領域に前記第２の領域より相対的に高い特権保護レベルが設定されていることを特徴とする請求項１又は２に記載のファイル通信処理方法。
【請求項４】
前記特定通信ステップは、前記第１の領域に展開されている、前記外部側ＮＩＣの動作を制御する特定デバイスドライバから、前記外部側ＮＩＣに対して動作許可を指示するマップドＩ／Ｏの対応するＩ／Ｏレジスタにページング処理を介して得られる物理アドレスでアクセスし、前記汎用通信ステップは、前記第２の領域に展開されている、前記装置側ＮＩＣの動作を制御する汎用デバイスドライバから、前記装置側ＮＩＣに対して動作許可を指示するマップドＩ／Ｏの対応するＩ／Ｏレジスタにページング処理を介して得られる物理アドレスでアクセスすることを特徴とする請求項３記載のファイル通信処理方法。
【請求項５】
ネットワークに通信対象ファイルの送出を行う装置側ＮＩＣを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、
通信対象ファイルの前記ネットワークへの送出を行うための外部側ＮＩＣと、
特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側ＮＩＣに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、
前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側ＮＩＣに対して動作許可を指示するＩ／Ｏレジスタを有するマップドＩ／Ｏとを含むことを特徴とする外部デバイス。
【請求項６】
前記情報処理装置のハードディスクから読み出された汎用ＯＳ及び前記汎用ＯＳの環境で動作する汎用アプリケーションとは異なる特定ＯＳ及び前記特定ＯＳの環境で動作する特定アプリケーションが、外部ブート時に前記情報処理装置の主メモリに読み出し可能に記憶される第１の記憶手段を備えることを特徴とする請求項５に記載の外部デバイス。
【請求項７】
前記情報処理装置の起動時に、前記第１の記憶手段及びドライバ記憶手段の内容を前記主メモリに読み出すロード手段を含むことを特徴とする請求項６に記載の外部デバイス。
【請求項８】
前記主メモリは、第１の領域と第２の領域とに区分され、
前記ロード手段は、前記第１の領域に前記特定ＯＳ及び前記特定アプリケーションを読み出し、前記第２の領域に前記汎用ＯＳ及び前記汎用アプリケーションを読み出すもので、
前記第１の記憶手段には、さらに、前記第１の領域に前記第２の領域より高い特権保護レベルを設定する特権処理ファイルが記憶されていることを特徴とする請求項７に記載の外部デバイス。
【請求項９】
前記ロード手段は、前記外部側ＮＩＣを動作させる特定デバイスドライバを前記第１の領域に読み出すものであることを特徴とする請求項８に記載の外部デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してファイル通信を行うファイル通信処理技術に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークに接続されたサーバや端末（パーソナルコンピュータ）等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限（アドレス制限）の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
【０００３】
特許文献１には、選択的にインストール可能な同種の２つのＯＳであって、一方についてはブラウザやメーラ等の通信アプリケーションプログラムを実行させ、他方についてはスタンドアロンタイプとすることによって、当該一方のＯＳについてのみ、セキュリティー対策を施すようにしたマルチブート可能なコンピュータが提案されている。このマルチブート可能なコンピュータによれば、各ＯＳに対して通信セキュリティー対策を施すことなく、全体としてセキュリティーが図れるという利点がある。また、特許文献２には、複数の不揮発性記憶装置にそれぞれ異なるＯＳが格納されており、どの不揮発性記憶装置を用いてブートするかを指定して切り換える手法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２０１９１９号公報
【特許文献２】特開２０００−１１２７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されたマルチブート方法は、複数のＯＳが同一のハードディスクに搭載されたタイプであり、かつ、選択されたＯＳをコンピュータの同一のＲＡＭ上に展開するものである。このため、通信アプリケーションプログラムを使用した際にハードディスクが一旦コンピュータウイルスに汚染されると、他のＯＳ使用時においても、当該他のＯＳで作動するアプリケーションについてもウイルス感染する虞があった。また、特許文献２に記載されたブート方法は、制御者が望む起動装置とＯＳを動的に設定して起動でき、ブート時の不用意なシステム起動不可状態や、目的外のシステム起動を避けることを目的としたものであり、セキュリティーの向上とは直接関係がない。
【０００６】
本発明の目的は、汎用ＯＳ環境に比べ特定ＯＳ環境での高いセキュリティーでの通信を実現するファイル通信処理方法及び外部デバイスを提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係るファイル通信処理方法は、情報処理装置のブート時にハードディスクから主メモリに読み出された汎用ＯＳの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側ＮＩＣを経由して行う汎用通信ステップと、前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定ＯＳの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側ＮＩＣを経由して行う特定通信ステップとを択一的に行うことを特徴とするものである。
【０００８】
本発明によれば、外部デバイスが接続されていない状態では、汎用アプリケーションによって装置側ＮＩＣを介してネットワークへの通信が可能となり、一方、外部デバイスが接続された状態でブート（外部ブート）された場合は、特定アプリケーションによって外部デバイスに設けられている外部側ＮＩＣを介してネットワークへの通信が可能となる。また、特定アプリケーションは外部デバイスによる外部ブートによって外部デバイスから情報処理装置の主メモリに読み出されたものであることから、さらに、外部デバイスに設けられた外部側ＮＩＣを経由しての通信であるため、汎用ＯＳ環境に比べ特定ＯＳ環境での高いセキュリティーでの通信が可能となる。
【０００９】
請求項２記載の発明は、請求項１記載のファイル通信処理方法において、前記情報処理装置の起動後に、外部からの切り換え操作を受け付けて、前記汎用ＯＳの環境と、前記特定ＯＳの環境とを択一的に切り替える切替ステップを備えることを特徴とする。この構成によれば、外部ブート後において、汎用ＯＳ環境と特定ＯＳ環境とが択一的に選択可能となり、従って、汎用通信ステップと特定通信ステップとは選択的に利用可能となり、利用の都度、リブートするといったような煩雑さはなくなる。
【００１０】
請求項３記載の発明は、請求項１又は２に記載のファイル通信処理方法において、前記主メモリは、第１の領域と第２の領域とに区分され、前記第１の領域に前記特定ＯＳ及び前記特定アプリケーションが読み出され、前記第２の領域に前記汎用ＯＳ及び前記汎用アプリケーションが読み出され、前記第１の領域に前記第２の領域より相対的に高い特権保護レベルが設定されていることを特徴とする。この構成によれば、特定ＯＳ及び特定アプリケーションが読み出された第１の領域に対して、仮にマルウエアに感染した汎用ＯＳ及び汎用アプリケーション等から、改竄等を目的とした不当なアクセスがあっても、かかるアクセスは一般保護例外としてフックされ、無効とされることになる。
【００１１】
請求項４記載の発明は、請求項３記載のファイル通信処理方法において、前記特定通信ステップは、前記第１の領域に展開されている、前記外部側ＮＩＣの動作を制御する特定デバイスドライバから、前記第２の領域に展開されている、前記外部側ＮＩＣに対して動作許可を指示するマップドＩ／Ｏの対応するＩ／Ｏレジスタにページング処理を介して得られる物理アドレスでアクセスし、前記汎用通信ステップは、前記第２の領域に展開されている、前記装置側ＮＩＣの動作を制御する汎用デバイスドライバから、前記第２の領域に展開されている、前記装置側ＮＩＣに対して動作許可を指示する前記マップドＩ／Ｏの対応するＩ／Ｏレジスタにページング処理を介して得られる物理アドレスでアクセスすることを特徴とする。この構成によれば、特定通信ステップでは特定デバイスドライバを介して、汎用通信ステップでは汎用デバイスドライバを介して、それぞれマップドＩ／Ｏの対応するＩ／Ｏレジスタにアクセスするようにページング処理されて個々の物理アドレスで指定されるので、各通信ステップが好適に実行可能となる。また、特定デバイスドライバ及びページング処理の部分が第１の領域に設けられているので、これらの内容が、第２の領域からの不当なアクセス等によって改竄等されることはない。また、ページングの内容、特に物理アドレスのデータが改竄されることが防止できるので、マップドＩ／ＯのＩ／Ｏレジスタにアクセスできず、その内容を改竄等することはできない。
【００１２】
また、本発明に係る外部デバイスは、ネットワークに通信対象ファイルの送出を行う装置側ＮＩＣを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、通信対象ファイルの前記ネットワークへの送出を行うための外部側ＮＩＣと、特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側ＮＩＣに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側ＮＩＣに対して動作許可を指示するＩ／Ｏレジスタを有するマップドＩ／Ｏとを含むことを特徴とするものである。
【００１３】
本発明によれば、情報処理装置に備えられた汎用アプリケーションに基づく装置側ＮＩＣとは異なる特定アプリケーションを利用して、外部デバイスに設けられている外部側ＮＩＣからネットワークへのファイル送受信が可能となる。この場合、特定デバイスドライバからページング処理を介して得られる物理アドレスで外部デバイスに設けられているマップドＩ／ＯのＩ／Ｏレジスタに外部側ＮＩＣの動作指示が行われる。従って、特定アプリケーションによって外部デバイスに設けられているマップドＩ／Ｏ及び外部側ＮＩＣを経由してネットワーク通信が可能となるので、情報処理装置側の装置側ＮＩＣを使用する場合に比して高いセキュリティーが確保される。
【００１４】
請求項６記載の発明は、請求項５記載の外部デバイスにおいて、前記情報処理装置のハードディスクから読み出された汎用ＯＳ及び前記汎用ＯＳの環境で動作する汎用アプリケーションとは異なる特定ＯＳ及び前記特定ＯＳの環境で動作する特定アプリケーションが、外部ブート時に前記情報処理装置の主メモリに読み出し可能に記憶される第１の記憶手段を備えることを特徴とする。この構成によれば、外部デバイスが情報処理装置に接続された状態で、外部ブートが行われた場合、外部デバイスに記憶されていた特定ＯＳ及び特定アプリケーションによって外部デバイスに設けられている外部側ＮＩＣを経由してネットワーク通信が可能となるので、情報処理装置側のＮＩＣを使用する場合に比して高いセキュリティーが確保される。
【００１５】
請求項７記載の発明は、請求項６記載の外部デバイスにおいて、前記情報処理装置の起動時に、前記第１の記憶手段及びドライバ記憶手段の内容を前記主メモリに読み出すロード手段を含むことを特徴とする。この構成によれば、各記憶手段に記憶されている特定ＯＳ、特定アプリケーション及びネットワーク通信の指示を行う特定デバイスドライバが外部ブート時に主メモリに読み出されるようにしたので、高いセキュリティーが確保される。
【００１６】
請求項８記載の発明は、請求項７記載の外部デバイスにおいて、前記主メモリは、第１の領域と第２の領域とに区分され、前記ロード手段は、前記第１の領域に前記特定ＯＳ及び前記特定アプリケーションを読み出し、前記第２の領域に前記汎用ＯＳ及び前記汎用アプリケーションを読み出すもので、前記第１の記憶手段には、前記第１の領域に前記第２の領域より高い特権保護レベルを設定する特権処理ファイルが記憶されている。この構成によれば、特定ＯＳ及び特定アプリケーションが読み出された第１の領域に対して、仮にマルウエアに感染した汎用ＯＳ及び汎用アプリケーション等から、改竄等を目的とした不当なアクセスがあっても、かかるアクセスは一般保護例外としてフックされ、無効とされることになる。
【００１７】
請求項９記載の発明は、請求項８記載の外部デバイスにおいて、前記ロード手段は、前記外部側ＮＩＣを動作させる特定デバイスドライバを前記第１の領域に読み出すものである。この構成によれば、特定デバイスドライバが高いセキュリティーで維持される。
【発明の効果】
【００１８】
本発明によれば、汎用ＯＳ環境に比べ特定ＯＳ環境での高いセキュリティーでの通信を実現することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。
【図２】図１に示す外部デバイスのハードウエア構成の一例を示すブロック図である。
【図３】端末及び外部デバイスのブートに関連する機能部の一例を示すブロック図である。
【図４】専用ローダのブートでのリアルモードにおける端末のＲＡＭのメモリマップの一例を示す図である。
【図５】専用ローダのブートでのプロテクトモードにおける端末のＲＡＭのメモリマップの一例を示す図である。
【図６】端末のＣＰＵによって実行されるシステムＢＩＯＳの起動処理の手順を説明するフローチャートである。
【図７】端末のＣＰＵによって実行されるシステムＢＩＯＳのＰＯＳＴ処理（ステップＳ３）の手順を説明するフローチャートである。
【図８】外部デバイスのＣＰＵによって実行される監視処理Ｉの手順を説明するフローチャートである。
【図９】外部デバイスのＣＰＵによって実行される監視処理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内において特定ＯＳ環境の下での情報処理のための操作及びデバイスドライバの制御が行われる。これによって汎用ＯＳ環境と区別され、マルウエアが侵入することはない。逆に、現在の使用環境が既に特定ＯＳ環境であれば、切替指示は無視されて、本フローが終了する。
【０１０９】
また、ステップＳ２２７で、汎用ＯＳ環境への切替指示のあったのでれば、現在の使用環境が特定ＯＳ環境か否かが判断され（ステップＳ２２９）、現在の使用環境が特定ＯＳ環境であれば、汎用ＯＳ環境に切り替える処理が実行される（ステップＳ２３１）。逆に、現在の使用環境が既に汎用ＯＳ環境であれば、切替指示は無視されて、本フローが終了する。
【０１１０】
本実施形態では、外部デバイスとしてＰＣＩで説明したが、本発明は、これに限定されず、また、０ＭＢ〜１ＭＢへの専用ローダのロード方式もＤＭＡＣを採用する実施形態（本発明者が既に提案したＰＣＴ／ＪＰ２０１０／５８５５２）に限定されない。例えば、本発明者が既に提案した、ＰＣＴ／ＪＰ２００９／５７９６２、ＰＣＴ／ＪＰ２０１０／６８３４６、日本特許出願２０１１−２３５３８６を適用して専用ローダを強制的に起動メモリ領域にロードする態様でもよい。
【０１１１】
上記のうち、ＰＣＴ／ＪＰ２００９／５７９６２には、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をＵＳＢメモリ等の外部デバイスによってブートする外部ブート方法を開示している。この方法は、外部デバイスの記憶手段に、情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して情報処理装置の主メモリの起動メモリ領域（０ＭＢ〜１ＭＢ）にマッピングさせるためのＭＢＲであって、情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶されている。そして、ローダは、外部デバイスの分散処理手段によって、ＭＢＲの起動に先立って予め設定された個数に分割されていると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報が作成される。
【０１１２】
例えば図２８を用いて説明すると、図２８は、スタック領域１２０３を割込ベクタテーブル１２０２に重畳する方法を説明する図である。スタック領域１２０３には、割込直前の命令内容に関するＥＦＬＡＧ，ＣＳ，ＩＰがベースポインタＢＰから書き込まれる。そこで、このベースポインタＢＰの位置を、図の矢印で示すように、割込ベクタテーブル１２０２のベクタ２の上位ビットの位置に一致するように、スタック領域１２０３を位置設定する。従って、スタック領域１２０３へのＥＦＬＡＧ，ＣＳ，ＩＰの書き込みは、割込ベクタテーブル１２０２のベクタ２の上位ビットにＦＬＡＧが、ベクタ１の下位ビットにＣＳが、ベクタ１の上位ビットにＩＰが書き込まれることになる。一方、ベクタ１は、外部割込先となるアドレスを示すものであるから、割込が発生してＣＰＵ１０がベクタ１を参照し、制御が、ベクタ１に書き込まれているアドレスのプログラムに移行すると、スタック領域１２０３にその直前の命令内容であるＥＦＬＡＧ，ＣＳ，ＩＰが退避して書き込まれる。すなわち、割込ベクタテーブル１２０２のベクタ１には、ＩＰ，ＣＳのアドレス情報が書き込まれることになる。ベクタ１には、その上位ビットにＩＰが、下位ビットにＣＳが書き込まれることになる。従って、そのアドレスは、具体的には、ＩＰ×１６＋ＣＳとなる。
【０１１３】
すなわち、今、ＢＩＯＳにマルウエアが潜伏等（あるいはＢＩＯＳの立ち上げ中に外部から侵入）していたとして、ＢＩＯＳ起動時にマルウエアが動作して、チップセットのＥＦＬＡＧＳのフラグＴＦをセットし、割込ベクタテーブル１２０２のベクタ１にウイルス本体の存在するアドレスが書き込まれている場合を想定する。ＢＩＯＳ起動後、典型的にはＭＢＲ起動中に、ある命令が実行され、その後に、ＣＰＵ１０の制御がマルウエアに乗っ取られた（マルウエアによるデバッグ割込が発生した）と想定する。このとき、制御は、ベクタ１に書き込まれているアドレスに遷移し、マルウエアによる動作（マルウエアの複製、データ改竄や破壊等）が実行されることになる。一方、マルウエアの割込によって、スタック領域１２０３すなわち割込ベクタテーブル１２０２のベクタ１には、直前の命令内容を示す内の、情報ＩＰ，ＣＳが書き込まれることになる。従って、ベクタ１に元々書き込まれていたマルウエアの格納位置を示すアドレスは書き換えられ、消去されたことになる。かかる方法によれば、マルウエアは、ＢＩＯＳ起動中に仕掛けをした状態において、ＭＢＲ起動後に一度でも動作した途端、潜伏先のアドレスを失う結果となり、その後の動作が抑止されることになる。次いで、ＲＡＭ１２内の起動メモリ領域１２０内であって、前記領域１２０２，１２０３及びＭＢＲ領域を除いた領域にローダがマッピングされる。分割されたローダは、マッピング位置情報に従って、分割数だけ分散配置（展開）される。なお、分割ローダに適宜数のダミーデータを加える態様としてもよい。各分割ローダは、例えば最終ビット位置に、次のマッピング位置情報が書き込まれており、このマッピング位置情報を順次参照することで、ローダ後に元のローダに合成される。この場合、ダミーデータには、その旨の情報が書き込まれておれば、合成時に省く処理が可能となる。このようにして、ローダ、すなわち本発明における専用ローダが適正に０ＭＢ〜１ＭＢにロードされる。
【０１１４】
また、ＰＣＴ／ＪＰ２０１０／６８３４６には、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をブートする外部デバイスを記載している。この外部デバイスは、前記情報処理装置のＢＩＯＳが前記ＣＰＵによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記ＣＰＵからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きして一般保護例外を発生させる第１のプログラム、及び前記一般保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第２のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたものでる。
【０１１５】
例えば図２９は、ダミーコードの割込ベクタテーブルへの上書き処理、及び一般保護例外に基づく正常リセット処理を説明する図である。まず、ダミーコードを所定のベクタ、特にベクタ０，１，１３に上書きする意義について説明する。ＢＩＯＳ動作中にＣＰＵ１０の制御を一時的に奪ったマルウエアによって割込ベクタテーブルのデータが改竄、特にＩＮＴ１を規定するベクタ１のデータが書き換えられて、マルウエアの潜伏位置を記述することが考えられる。また、ＢＩＯＳの動作期間中に、起動メモリ領域１２０にマルウエアを起動させる異常プログラムが配置されることが考えられる。そこで、割込ベクタテーブルのベクタ１については、書き換えられた可能性のある内容を書き直してマルウエアの挙動を抑止する処理を行わせる必要がある。また、ベクタ１３については、起動メモリ領域１２０上の前記異常プログラムを所定のデータの上書きによって消去するという、正常リセット処理のための割込ハンドラを確実に起動させる処理を行わせる必要がある。割込ハンドラを確実に起動させる処理は、ベクタ１３に割込ハンドラ領域１２０３１の先頭アドレスを書き込むこと、及び後述するような一般保護例外を発生させる仕組みを作ることである。
【０１１６】
すなわち、ベクタ１３の一般保護例外を利用することで、ベクタ１３から割込ハンドラ領域１２０３１に自動的に処理が移行する仕組みを構築する。すなわち、（ｉ）ダミーコードの書込アドレスを降順に読み出すためにチップセットのＥＦＬＡＧＳのフラグＤＦを１にセットし、（ｉｉ）降順の書込アドレスが割込ベクタテーブル１２０２１の左端アドレス“0x0000”を下回る不正なアクセスを発生させて一般保護例外を引き起こすようにしている。さらに、（ｉｉ）のためには、ベクタ１からベクタ０の方向への、すなわち降順に書込アドレスを生成させる必要がある。そこで、ベクタ０，１，１３を含み、かつ不正アクセス用のアドレスを生成させるためには、ダミーコードのビット数は、ベクタ０，１，１３の３個のベクタ及び不正アクセスを発生させる少なくとも１ビット分で足りる。なお、ベクタ１３とベクタ１，０及び不正アクセス分とは不連続であり、かつダミーコードの割込ベクタテーブルに対する上書き位置が明白となる傾向にある。そこで、より好ましい態様として、本実施形態では、ベクタ１３〜０及び不正アクセスの少なくとも１ビット分のデータ量を有するダミーコードを作成し、書込アドレスをベクタ１３以上の所定のベクタからスタートさせて、最終的に不正アクセスが発生するように降順に指定するようにしている。
【０１１７】
図２９は、この状態を示しており、ダミーコードは、所定のビット数、ここでは５１２ビット（bit）を有するものとし、スタートアドレスは５００ビット目としている。なお、５１２ビットを有するデータ列は、ＵＳＢメモリ２が一連の動作（ＲＥＰ  ＩＮＳ）で読み出し可能なデータ量である。すなわち、矢印（Ａ）で示すように降順にアドレスが生成されていくと、（本実施例では、１アドレスずつ生成するとして）５０１回目のアクセス時に不正アクセスが発生し、一般保護例外が発生する。一般保護例外が発生すると、ＣＰＵ１０は、矢印（Ｂ）に示すようにベクタ１３に移動する。ここで、ＣＰＵ１０はベクタ１３の記憶内容を読み取り、読み取った内容に一致する起動メモリ領域１２０のアドレス、すなわち矢印（Ｃ）に示すように割込ハンドラ領域１２０３１の先頭アドレスに移動する。そして、ＣＰＵ１０は、割込ハンドラを実行して、正常リセット処理を行う。このダミーコードの上書き処理は、ＣＰＵ１０からの１つの命令によってＲＥＰ  ＩＮＳ処理で行われ、かつ正常リセット処理は、ダミーコードの上書き処理に連続して割込ハンドラによって行われるため、ＣＰＵ１０からの１回の命令で両方の処理が済み、従って、その間、マルウエアがＣＰＵ１０に介入する機会はない。
【０１１８】
今、ＢＩＯＳにマルウエアが潜伏等（あるいはＢＩＯＳの立ち上げ中に外部から侵入）していたとして、ＢＩＯＳ起動中にマルウエアが動作して、ＥＦＬＡＧＳのフラグＴＦをセットし、割込ベクタテーブル１２０２１のベクタ１をマルウエア本体の存在するアドレスに書き換えた場合を想定する。ＢＩＯＳ起動後、典型的にはＭＢＲ起動中に、ある命令が実行され、その後に、ＣＰＵ１０の制御がマルウエアに乗っ取られた（マルウエアによるデバッグ割込が発生した）と想定する。このとき、制御は、ベクタ１に書き込まれているアドレスに遷移し、マルウエアによる動作（マルウエアの複製、データ改竄や破壊等）が実行されることになる。その後、ＣＰＵ１０の制御がＢＩＯＳからＭＢＲに渡されると、割込ベクタテーブルのベクタのうち、正常リセットに必要なベクタの内容をダミーコードで書き換えるので、マルウエア本体の存在するアドレス情報は実質削除される。さらに、一般保護例外によって、起動メモリ領域１２０も正常リセット処理され、仮に潜伏しているマルウエア自身も消去されることになる。すなわち、マルウエアは、ＢＩＯＳ起動中に挙動のための仕掛けをしたとしても、ＭＢＲが起動されると、その挙動のための情報が全て消去されることとなり、この結果、その後の挙動が抑止されることになる。
【０１１９】
また、日本特許出願２０１１−２３５３８６には、ＣＰＵ及び前記ＣＰＵが実行するプログラムが展開される主メモリを備えると共に、前記主メモリと外部との間でハードウエアによるデータ通信を行う、チップセット内のコントローラを備えた情報処理装置を、前記コントローラを経由して起動に要するデータを前記主メモリに書き込んで起動させる外部デバイスを記載している。
【０１２０】
この外部デバイスは、前記情報処理装置のＢＩＯＳが前記ＣＰＵによって実行されることによって前記主メモリの一部であるアドレス指定が可能な起動メモリ領域に優先して読み出される、データ転送の指示情報を含む１次ローダを記憶する第１の記憶部と、前記１次ローダによる前記データ転送指示を受けて前記起動メモリ領域に順次分割された分割制御データとして読み出される少なくとも割込ベクタテーブル及び２次ローダを含む所定の制御データと前記分割制御データが前記起動メモリ領域に書き込まれる際の書込位置となるアドレスデータとを記憶する第２の記憶部と、前記起動メモリ領域への読出後に起動される前記１次ローダから前記データ転送の指示を受けて、前記第２の記憶部から前記各分割制御データを対応する前記アドレスデータに従って前記コントローラを経由して前記主メモリに順番に読み出すデータ転送部と、前記データ転送処理の終了を受けて前記ハードウエア割込指示信号を前記起動メモリ領域に読み出された前記割込ベクタテーブルに遷移し、前記２次ローダを起動させるべくハードウエア割込を発行させるハードウエア割込指示部とを備えたものである。
【０１２１】
例えば図３０は、ブートの流れを簡単に説明する。ブート時における情報の流れ及びその手順は、図３０中に矢印で示されている。まず、情報処理装置（端末）１の電源投入を受けて、ＣＰＵ１０は、ＢＩＯＳを起動し、ＢＩＯＳの処理によってＵＳＢメモリ２から外部ＭＢＲ１２１１を取り込む。外部ＭＢＲ１２１１の取込が終了すると、ＣＰＵ１０の処理が外部ＭＢＲ１２１１に渡されて、外部ＭＢＲ１２１１のマスターブートレコードが１次ローダとして機能する。まず、１番目の分割ＴＤデータテーブルＴＤ[1]１２１２が作成される（図３０の矢印（１））。次に、外部ＭＢＲ１２１１は、ＵＳＢホストコントローラに対してインターラプト転送の開始指示（コマンド）を行う（図３０の矢印（２））。まず、分割ＴＤデータテーブルＴＤ[1]の１行目のアドレスデータがＵＳＢホストコントローラで取得され、当該アドレスデータと１番目に転送される分割データであるダミーデータ１２１３とがＭＣＨ（MemoryController Hub）、ＩＣＨＩＣＨ（I/O Controller Hub）を経てＲＡＭ１２に送られて（図３０の矢印（３））、当該アドレスに書き込まれる（図３０の矢印（４））。以後、ＣＰＵ１０の制御を受けることなく、ＵＳＢホストコントローラとＵＳＢターゲットコントローラとの間で、ＵＳＢメモリ２から、分割データを順次取り込むことが可能となり、分割ＴＤデータテーブルＴＤ[1]の５行目のアドレスデータがＵＳＢホストコントローラで取得され、当該アドレスデータと５番目に転送される分割データである分割ＴＤデータテーブルＴＤ[2]とがＭＣＨを経てＲＡＭ１２に送られて、起動メモリ領域１２０外の当該アドレス“0x40000”に書き込まれる（図３０の矢印（５））。
【０１２２】
この分割ＴＤデータテーブルＴＤ[2]の各行のアドレスデータに対応する分割データがＵＳＢメモリ２から順次読み込まれて、起動メモリ領域１２０に展開される。ＵＳＢホストコントローラは、分割ＴＤデータテーブルＴＤが転送される毎に、その分割ＴＤデータテーブルに含まれるアドレスデータを一時保管し、次に転送される分割制御データにアドレスデータを対応付けてＭＣＨに送出するようにしている。ＭＣＨは、転送されてきたデータからアドレスデータを取得し、このアドレスに分割制御データ１２１５を書き込ませる。
【０１２３】
ここでは、分割ＴＤデータテーブルＴＤ[2]の１行目のアドレスデータに対応して割込ベクタテーブル１２１４がＵＳＢメモリ２から読み取られて書き込まれる（図３０の矢印（６））。そして、順次、分割ＴＤデータテーブルＴＤ[i]が展開され（図３０の矢印（７））、最後の分割ＴＤデータテーブルＴＤ[n]の最下行のアドレスデータに対応する分割データがＵＳＢメモリ２から読み込まれ、起動メモリ領域１２０に展開されると、同時にＭＣＨ経由（ＣＰＵ１０を経由することなく）で、ハードウエア割込指示信号が割込ベクタテーブルのＩＮＴ“XX”に送信される（図３０の矢印（８））。ＣＰＵ１０は、このハードウエア割込指示信号を受けて、割込のコマンドを、分割された特定ＯＳローダの先頭の分割データが展開されている分割制御データ（先頭）１２１５の基準アドレスにジャンプし（図３０の矢印（９））、これによって特定ＯＳローダの実行が開始される。以上の処理によって、インターラプト転送前の起動メモリ領域１２０に存在するマルウエア等は全て消去される。なお、この実施例における特定ＯＳローダ（制御データ）が、本発明における専用ローダに相当する。
【０１２４】
以上の各専用ローダのロード方法は、外部デバイスから行われるものである。そして、起動メモリ領域１２０に対して、ＢＩＯＳやＭＢＲ内に仮にマルウエアが潜伏していても、かかるマルウエアを消去して行うことを可能にするもので、これによって起動メモリ領域１２０をクリーンな環境とし、かつこの領域１２０に外部デバイスから専用ローダ（必要に応じて専用ローダをロードするために必要なテーブル等を含む）をロードすることができる。そして、外部デバイスから起動メモリ領域１２０に専用ローダがロードされた後、この専用ローダによってロードされる管理ファイルの配置領域に特権レベルの最高乃至は相対的に最高（ＯＳ、ＡＰのロード領域に設定される特権レベルと比較した場合）を設定することで、管理ファイルをクリーンな環境で起動及び稼働維持させることが可能となる。
【０１２５】
次に、図３１は、汎用ＡＰ及び特定ＡＰの実行時における各デバイスドライバ、メモリマップドＩ／Ｏの内容及びそれらの処理の流れを説明する図である。
【０１２６】
まず、端末１の起動中において、汎用ＯＳ１３４、汎用ＡＰa１３４１…、汎用ＮＩＣドライバ１３５１…、特定ＯＳ１３６、特定ＡＰa１３６１…、特定ＮＩＣドライバ１３７１…のＲＡＭ１２への読み出しについて説明する。なお、汎用ＡＰa１３４１…、汎用ＮＩＣドライバ１３５１…、及び特定ＡＰa１３６１…、特定ＮＩＣドライバ１３７１…は、Ｉ／Ｏデバイスの一つであるＮＩＣ１６，２８を代表して示したものであり、他のＩ／Ｏデバイスとして操作部１３や表示部１４に対応するものが設けられており、さらに図略のプリンタ等にも適用される。
【０１２７】
前述したように、汎用ＯＳ１３４、汎用ＡＰa１３４１…、汎用ＮＩＣドライバ１３５１…は、端末１のＨＤ１２ＡからＲＡＭ１２の１０１ＭＢ〜４ＧＢの所定位置に、特権レベルＤＰＬ“３”で読み出される。一方、特定ＯＳ１３６、特定ＡＰa１３６１…、特定ＮＩＣドライバ１３７１…は、外部デバイス２の特定ＯＳ，ＡＰ記憶部２５７及びＩ／Ｏ情報記憶部２５８からＲＡＭ１２の１ＭＢ〜１００ＭＢ内の所定位置に読み出される。
【０１２８】
本実施形態では、物理的には、メモリマップドＩ／Ｏ１７は端末１側にあり、メモリマップドＩ／Ｏ２９は外部デバイス２側に設けられている。なお、図３１に示すように、メモリマップドＩ／Ｏ１７及びメモリマップドＩ／Ｏ２９のＩ／Ｏレジスタはアドレッシング動作に関しては、図略のメモリコントローラハブ等によって端末１のＲＡＭ１２の各アドレス域にマッピングされているのと等化に扱われる。
【０１２９】
端末１が立ち上がった状態では、本実施形態では、前述したように端末１は汎用ＯＳの環境で動作可能な状態にある。そして、動作環境切替部１０９によって汎用ＯＳ環境と特定ＯＳ環境とが択一的に切り替え可能になる。汎用ＯＳ環境で動作する汎用ＡＰ、及び特定ＯＳ環境で動作する特定ＡＰを利用しての情報処理は、情報処理部１０７によって実行される。
【０１３０】
ここに、メモリマップドＩ／Ｏとは、ＣＰＵ１０がＩ／Ｏデバイス（入出力機器）にアクセスするための命令を、ＲＡＭ１２へアクセスするための命令と同一のアドレス空間で扱う方式をいう。メモリマップドＩ／Ｏは、Ｉ／Ｏデバイスに対する汎用デバイスドライバ及び特定デバイスドライバに対応するＩ／Ｏレジスタで構成されている。ＣＰＵ１０は、かかるＩ／Ｏレジスタに動作許可等の情報の読み書きをすることで、対応するＩ／Ｏデバイスの制御を行うようにしている。なお、Ｉ／Ｏデバイス制御方法は、メモリマップドＩ／Ｏに限定されず、他のマップドＩ／Ｏ方式でもよい。
【０１３１】
メモリマップドＩ／Ｏ１７は、汎用ＯＳ環境でのＩ／Ｏデバイスとしての、操作部１３、表示部１４、ＮＩＣ１６、図略のプリンタ等に対応するもので、例えば、汎用ＯＳ環境における各汎用デバイスドライバに対応するそれぞれのＩ／Ｏレジスタ１７１，１７２，…に分けられている。例えば、Ｉ／Ｏレジスタ１７１はＮＩＣ１６の汎用ＮＩＣドライバ１３５１に対応し、Ｉ／Ｏレジスタ１７２は操作部１３のデバイスドライバに対応している。
【０１３２】
一方、メモリマップドＩ／Ｏ２９は、特定ＯＳ環境でのＩ／Ｏデバイスとしての、操作部１３、表示部１４、ＮＩＣ２８、図略のプリンタ等に対応するもので、例えば、特定ＯＳ環境における各特定デバイスドライバに対応するそれぞれのＩ／Ｏレジスタ２９１，２９２，２９３，…に分けられている。例えば、Ｉ／Ｏレジスタ２９１はＮＩＣ２６の特定ＮＩＣドライバ１３７１に対応し、Ｉ／Ｏレジスタ２９２は操作部１３のデバイスドライバに対応し、Ｉ／Ｏレジスタ２９３は表示部１４のデバイスドライバに対応している。なお、図３１において、Ｉ／Ｏレジスタ２９１がメモリマップドＩ／Ｏ２９と分かれて設けられているが、アドレッシングにおいては一体的として機能している。
【０１３３】
メモリマップドＩ／Ｏ１７，２９の各Ｉ／Ｏレジスタは、ＧＤＴ１２６及びＰＴＥ１２９によって生成されるアドレスで指定可能にされている。より詳細には、ＰＴＥ１２９は、かかる汎用ＡＰ及び特定ＡＰの個々のタスクに対して、対応するＩ／Ｏレジスタのアドレスを指定し得るように、物理アドレスがそれぞれ設定されている。この結果、例えば、汎用ＡＰa１３４１に対しては、ＮＩＣドライバ１３５１に対応するＩ／Ｏレジスタ１７１のアドレスを生成することでＮＩＣ１６の動作制御が可能となり、一方、特定ＡＰa１３６１に対しては、ＮＩＣドライバ１３７１に対応するＩ／Ｏレジスタ２９１のアドレスを生成することでＮＩＣ２６の動作制御が可能となる。このように、ＰＴＥ１２９の物理アドレスによって、メモリマップドＩ／Ｏ１７、メモリマップドＩ／Ｏ２９が個別に、かつそれらの各Ｉ／Ｏレジスタが指定できる。
【０１３４】
ところで、本実施形態では、アドレッシングの際におけるメモリマップドＩ／Ｏ１７，２９の各Ｉ／Ｏレジスタのアドレスとして、例えば３２ビットのＣＰＵを想定した場合、最大アドレスが４ＧＢとなることから、４ＧＢから降方向に所要の範囲、例えば４ＧＢから３ＧＢまでの範囲にリンクを設定している。すなわち、アドレス範囲からは、特権レベルＤＰＬ“２”又は“３”の範囲に該当する。しかし、メモリマップドＩ／Ｏ１７，２９の各Ｉ／Ｏレジスタは、前述のようにＰＴＥ１２９に設定されている物理アドレスによって指定されるものであるから、仮に汎用ＯＳ環境からマルウエアが特定ＡＰに対応するＩ／Ｏレジスタの内容を改竄し、マルウエアの意図する状態で電子メールの送信（例えば、別ファイルの送信とか他の送信先の設定）を行わせることは不可能となる。すなわち、汎用ＯＳ環境の１０１ＭＢ〜４ＧＢから、特権レベルＤＰＬ“０”の１ＭＢ〜１００ＭＢ内のＰＴＥ１２９へのアクセスは、前述したように、一般保護例外としてフックされ、割込ハンドラ１３０を介して無効とされる。
【０１３５】
情報処理部１０７として、例えば作成したファイルをネットワーク３へ（電子メールで）送出し、指定した送信先に送信する場合を考える。図３１に示す矢印（１）〜（４）は、汎用ＡＰa１３４１の電子メール送信の命令が発行された場合の処理の流れを示し、矢印（１１）〜（１４）は、特定ＡＰa１３６１の電子メールによる特定会員への送信の命令が発行された場合の処理の流れを示している。
【０１３６】
汎用ＡＰa１３４１が電子メール処理を行うプログラムに該当するものであるとして、操作部１３を介して電子メールの指示（タスク要求）があると、汎用ＡＰa１３４１は汎用ＮＩＣドライバ１３５１に電子メール処理（タスク）が指示される（図３１の（１）参照）。汎用ＮＩＣドライバ１３５１は、電子メール処理のタスクを受けると、ＧＤＴ１２６及びＰＴＥ１２９によってメモリマップドＩ／Ｏ１７の対応するＩ／Ｏレジスタ１７１のアドレスへのアドレッシング、すなわち対応する物理アドレスが作成される（図３１の（２）参照）。そして、メモリマップドＩ／Ｏ１７のＩ／Ｏレジスタ１７１の対応するアドレスに対して、動作許可の信号等が書き込まれる（図３１の（３）参照）。一方、ＮＩＣ１６側はメモリマップドＩ／Ｏ１７のＩ／Ｏレジスタ１７１に対応するアドレスに周期的にアクセスして、動作許可の有無の確認処理を繰り返している（図３１の（４）参照）。そして、動作許可が確認されると、電子メールの送信対象ファイルはメモリマップドＩ／Ｏ１７のＩ／Ｏレジスタ１７１を経由してＮＩＣ１６に転送され、所定の暗号化処理等が施され、更にＴＣＰ／ＩＰ規約に沿って形成されたパケットがネットワーク３に送出される。なお、所定の暗号化処理及びＴＣＰ／ＩＰへのパケット変換処理は、ＮＩＣ１６へ転送される前にネットワーク通信処理部１０８で行われてもよい。
【０１３７】
次に、特定ＡＰa１３６１が電子メール処理を行うプログラムに該当するものであるとして、操作部１３を介して電子メールの指示（タスク要求）があると、特定ＡＰa１３６１は特定ＮＩＣドライバ１３７１に電子メール処理（タスク）が指示される（図３１の（１１）参照）。特定ＮＩＣドライバ１３７１は、電子メール処理のタスクを受けると、ＧＤＴ１２６及びＰＴＥ１２９によってメモリマップドＩ／Ｏ２９の対応するアドレスへのアドレッシング、すなわち対応する物理アドレスが作成される（図３１の（１２）参照）。そして、メモリマップドＩ／Ｏ２９のＩ／Ｏレジスタ２９１に対応するアドレスに対して、動作許可の信号が書き込まれる（図３１の（１３）（１３’）参照）。一方、ＮＩＣ２６側はメモリマップドＩ／Ｏ２９のＩ／Ｏレジスタ２９１に対応するアドレスに周期的にアクセスして、動作許可の有無の確認処理を繰り返している（図３１の（１４）参照）。そして、動作許可が確認されると、電子メールの送信対象ファイルはメモリマップドＩ／Ｏ２９のＩ／Ｏレジスタ２９１を経由して外部デバイス２に転送され、後述するような所定の符号化処理等が施され、更にＴＣＰ／ＩＰ規約に沿って形成されたパケットがＮＩＣ２６を介してネットワーク３に送出される。なお、ＮＩＣ２６は有線、あるいは無線ＬＡＮ等によってＩＳＰ４と通信可能に接続されている。また、送信されるパケットの先頭領域には、送信元を示すＩＰアドレス（すなわち、汎用ＡＰa１３４１の場合にはＮＩＣ１６のＩＰアドレス、また特定ＡＰa１３６１の場合にはＮＩＣ２６のＩＰアドレス）が設定される。
【０１３８】
上記において、特定ＡＰa１３６１で電子メール送信を指示する場合に、指定した送信先が会員であるか否かのチェックは、全ての電子メールが会員サーバ５を介して行われる態様では、会員サーバ５に送、少なくとも信先についての会員に関する照合機能を持たせておけば、外部デバイス２に送信先の適性に関して照合等の監視処理が不要となり、会員情報を持たなくて済むこととなる。
【０１３９】
次に、受信の場合、ＮＩＣ１６における受信と、ＮＩＣ２６における受信とがある。ＮＩＣ１６でファイルが受信された場合、従来同様の方法で処理される。すなわち、ＮＩＣ１６のバッファ（図略）に一時的に保管され（あるいはＨＤ１２Ａに格納され）、（ＴＣＰ／ＩＰ形式のパケットが元のデータに戻され、かつ復号化処理が施されて）ファイルの先頭情報から送信元情報、テーマ乃至件名情報等が抽出される。そして、汎用ＡＰa１３４１が選択されると、電子メール画面に切り替わって受信リストが表示され、当該電子メールが選択されると、その開封処理が実行されて表示部１４に本文が表示される。
【０１４０】
一方、ＮＩＣ２６でファイルが受信された場合、ＮＩＣ２６のバッファに一時的に保管され、（ＴＣＰ／ＩＰ形式のパケットが元の形式のデータに戻され）ファイルの先頭情報から送信元情報、テーマ乃至件名情報等が抽出される。そして、特定ＯＳ環境（汎用ＯＳ環境から特定ＯＳ環境に切り替えられた状態も含む）で、ＮＩＣ２６で受信された受信リストが表示され、当該電子メールが選択されると、後述の復号化処理が施されるようになっている。
【０１４１】
以下、特定ＡＰでの電子メールの対象となるファイルに施されるデータ処理（符号化、復号化）について簡単に説明しておく。データ処理（符号化、復号化）については、例えば、本発明者が既に提案した（ＰＣＴ／ＪＰ２０１０／６７７５６）技術が採用可能である。すなわち、送信対象となるファイルをデータ処理回路２８を利用して３枚の画像の情報に埋め込む符号化処理を行うもので、可及的に情報を白黒の一方側に変換するものである。
【０１４２】
図３２は、例えば論理式：ＸＯＲ（Ｄ，ＯＮＯＲ（Ｇ，Ｓ））で構成されるデータ処理回路２８（図３参照）の一例を示す回路図である。図３２は、データ処理回路２８の一実施形態を示す１ビット分の回路図である。データ処理回路２８は、所要数の論理回路、例えば排他的論理和回路ＸＯＲを備えている。ここでは、３種類の画像Ｇ１，Ｇ２，Ｇ３に順次対応させるべく、３個のＸＯＲ２８２，２８４，２８６が採用されている。また、本実施形態では、ＸＯＲ２８２，２８４，２８６の各前段に排他的論理和を否定する回路ＯＮＯＲ２８１，２８３，２８５が接続されている。回路ＯＮＯＲの真理値表は、特定の一方入力端の値が“１”で、他方入力端の値が“０”の状態にあるときのみ、出力端に“１”を出力するものである。
【０１４３】
図３２では、ＯＮＯＲ２８１は、その特定入力端に調整値Ｓ１が入力され、他方入力端に対象ファイルの原データＤ０が入力され、そして出力端からデータＤ０’が中間データとして出力されている。調整値Ｓ１〜Ｓ３は例えば所定値として作成されるもので、データ処理回路２８の最終段からの出力データＤ３の値に後述する制限を付与するものである。ＸＯＲ２８２は、その一方入力端にＯＮＯＲ２８１の中間データＤ０’が入力され、他方入力端に画像データＧ１が入力され、出力端から中間データＤ１が出力されている。ＯＮＯＲ２８３は、その特定入力端に調整値Ｓ２が入力され、他方入力端にＸＯＲ２８２からの中間データＤ１が入力され、出力端から中間データＤ１’が出力されている。ＸＯＲ２８４は、その一方入力端にＯＮＯＲ２８３の中間データＤ１’が入力され、他方入力端に画像データＧ２が入力され、出力端から中間データＤ２が出力されている。ＯＮＯＲ２８５は、その特定入力端に調整値Ｓ３が入力され、他方入力端にＸＯＲ２８４からの中間データＤ２が入力され、出力端から中間データＤ２’が出力されている。ＸＯＲ２８６は、その一方入力端にＯＮＯＲ２８５の中間データＤ２’が入力され、他方入力端に画像データＧ３が入力され、出力端から出力データＤ３が出力されている。すなわち、図３２の論理回路は、論理式：ＸＯＲ（Ｄ，ＯＮＯＲ（Ｇ，Ｓ））で表現できる。ここに、Ｄは原データ及び中間データの総称、Ｇは画像データの濃度データの総称である。
【０１４４】
なお、画像データは、互いに異なる少なくとも２種以上の所要枚数、例えば３種の画像が電子化されて、好ましくは予め外部デバイス２内に記憶されている。本実施形態では、外部メモリ等から取り込んだり、カメラ等の撮像手段で撮像されたりした３種類の写真画像で、例えば３種類（Ｒ（赤），Ｇ（緑），Ｂ（青））の色成分毎の濃度の行列方向のピクセル毎の画像データとして記憶されている。各色成分の濃度は、処理対象のファイルデータの前記素データと同一ビット数、ここでは８ビットである。また、調整値Ｓの範囲は、８ビットかつ素データの最大値が１６である本実施形態の場合、“１２８”〜“２４０”となる。
【０１４５】
なお、データ処理回路２８としては、他に、論理式：ＸＯＲ（ＯＲ（Ｄ，Ｓ），ＯＲ（Ｇ，Ｓ））を利用したものでもよい。また、論理式：ＸＯＲ（ＯＮＯＲ（Ｄ，Ｓ），ＯＲ（Ｇ，Ｓ））を利用したものでもよい。なお、後者の場合、最終段については、論理式（最終段）：ＸＯＲ（Ｄ，ＯＲ（Ｇ，Ｓ））を使用する。また、データ処理回路２８は受信ファイルの復号化用（解凍用）を含み、これらの論理式で構成される回路の逆回路が採用されている。
【０１４６】
図３３は、埋込処理の具体例を示す説明図である。図３３の上側には、上から順に「入力文字」、「バイナリ（ＳＪＩＳ）」、「Ｂｉｔ」、「素データ」が例示されている。図３３の中央左側のテーブルは、３枚の画像データの対応するピクセルの色成分値データ、ここでは色成分濃度データを示している。ここでは、説明の便宜上、３色の全ての開始ピクセルＰｓをＰｓ（１，１）とする。ここで、素データについて説明する。ファイルデータがテキストデータであって、各文字が２byteで規定されるコードデータである場合で説明すると、コードデータを上位側の１byteと下位側の１byteとに分割する。さらに、これらの各１byteをそれぞれ上位、下位の４ビットに分割（以上、分割処理）する。各４ビットの上位側に４ビットを追加して（ビット追加処理）、８ビットの素データを生成する。例えば、図３２において、入力文字“○”を表す２byteのコードデータが「１０００１１００  １１００００１１」である場合、素データは、上記方法に従って作成すれば、「００００１０００」、「００００１１００」、「００００１１００」、「００００００１１」の４個となる。そして、かかる素データを数値に置換すると、“８”，“１２”，“１２”，“３”となる。なお、素データの取り得る最大値は、本実施形態では４ビットである“１５”とする。
【０１４７】
図３３の中央には、テーブル（Ａ）、（Ｂ）が記載されている。テーブル（Ａ）はデータＤ０が埋め込まれる場合であり、テーブル（Ｂ）はダミーコードが埋め込まれる場合である。テーブル（Ａ）、（Ｂ）は、横方向にＲＧＢ色成分（に対応する各論理回路）が設定され、縦方向に画像データＧ１，Ｇ２，Ｇ３のＰｓ（１，１）の色成分濃度データとの論理結果であるデータＤ１，Ｄ２，Ｄ３（図３３参照）の内容を示している。
【０１４８】
例えば、テーブル（Ａ）において、調整値Ｓが“２４０”の場合、データＤ０の先頭データ“８”に対して、画像データＧ１のＰｓ（１，１）のＲ（１，１）が“１３６”、画像データＧ２のＰｓ（１，１）のＲ（１，１）が“５６”、画像データＧ３のＰｓ（１，１）のＲ（１，１）が“２５１”としたとき、中間データＤ１は“０”となり、さらに中間データＤ２は“８”となり、そして、出力データＤ３は“３”となる。同様に、２番目のデータ“１２”に対しては、画像データＧ１のＰｓ（１，１）のＧ（１，１）が“２１０”、画像データＧ２のＰｓ（１，１）のＧ（１，１）が“３０”、画像データＧ３のＰｓ（１，１）のＧ（１，１）が“６７”としたとき、中間データＤ１は“１４”となり、さらに中間データＤ２は“０”となり、そして、出力データＤ３は“３”となる。同様に、３番目のデータ“１２”に対しては、画像データＧ１のＰｓ（１，１）のＢ（１，１）が“３４”、画像データＧ２のＰｓ（１，１）のＢ（１，１）が“０”、画像データＧ３のＰｓ（１，１）のＢ（１，１）が“８９”としたとき、中間データＤ１は“１４”となり、さらに中間データＤ２は“１４”となり、そして、出力データＤ３は“７”となる。
【０１４９】
一方、テーブル（Ｂ）では、色成分Ｒに対応するダミーデータ“２６”に対して、データＤ１は“１８”となり、さらに中間データＤ２は“２６”となり、そして、出力データＤ３は“１７”となる。同様に、色成分Ｇに対応するダミーデータ“２２”に対して、データＤ１は“２０”となり、さらに中間データＤ２は“２６”となり、そして、出力データＤ３は“２５”となる。同様に、色成分Ｂに対応するダミーデータ“１７”に対して、データＤ１は“１９”となり、さらに中間データＤ２は“１９”となり、そして、出力データＤ３は“２６”となる。
【０１５０】
上記によれば、ダミーデータは、それ自体及び出力データＤ３が“１６”を超える値となるようにしている。また、画像データＧ１は、Ｒ（１，１）が“１３６”、Ｇ（１，１）が“２１０”、Ｂ（１，１）が“３４”であるところ、データ処理回路２８の出力データＤ３は、テーブル（Ａ）のように、Ｒ対応分が“３”、Ｇ対応分が“３”、Ｂ対応分が“７”であるから、出力データＤ３からなる結果の画像は濃度データが小さい。同様に、テーブル（Ｂ）でも、Ｒ対応分が“１７”、Ｇ対応分が“２５”、Ｂ対応分が“２６”であるから、出力データＤ３からなる結果の画像は、画像データＧ１〜Ｇ３に比して濃度データが小さい。従って、画面上では輝度の低い暗い画像となり、また記録紙に黒色に近い色でプリントアウトされてほとんど解読ができないものとなるという特徴を有する。
【０１５１】
なお、本発明は、以下の態様を採用することが可能である。
【０１５２】
（１）本実施形態では、外部デバイスとしてＰＣＩを想定したもので説明したが、これに限定されず、少なくとも、ＣＰＵ及びＲＯＭ、ＲＡＭを内蔵したものであればよい。また、ＤＭＡＣを備えているデバイスであればよい。例えばＵＳＢ（Universal Serial Bus）メモリチップ、ＩＣカードを改良した対応でもよいし、携帯型の通信機器に内蔵された態様であってもよい。
【０１５３】
（２）本実施形態では、管理ファイル１２５等を格納するためのセキュア領域（特権レベルＤＰＬ“０”）を１ＭＢ〜１００ＭＢと設定したが、これに限定されず、管理ファイル１２５及び他の必要な管理テーブル等の格納が可能なメモリ容量分があればよく、例えば１ＭＢ〜数ＭＢのメモリ容量であってもよい。また、領域０ＭＢ〜１ＭＢについてもセキュア領域（特権レベルＤＰＬ“０”）としたことで、０ＭＢ〜１００ＭＢを同質のセキュア領域として扱うことができる。
【０１５４】
（３）本実施形態ではネットワーク３と通信するものとしてＮＩＣ１６，２６を採用したが、本発明においてはＮＩＣをネットワーク通信処理を行うＩ／Ｏデバイスの総称として扱っている。
【０１５５】
（４）本実施形態では、外部デバイス２に特定ＯＳ及び特定ＡＰと共に特定ＮＩＣドライバ１３７１やメモリマップドＩ／Ｏ２９を設けたが、特定ＯＳ及び特定ＡＰと、特定ＮＩＣドライバ１３７１やメモリマップドＩ／Ｏ２９とを別の外部デバイスに設ける態様としてもよい。この場合、例えば、特定ＯＳ及び特定ＡＰが端末１側に立ち上がった後、特定ＮＩＣドライバ１３７１が読み込ませる態様とすることができる。
【符号の説明】
【０１５６】
１  端末（情報処理装置）
１０，２０  ＣＰＵ
１０７  情報処理部
１０８  ネットワーク通信処理部
１２  ＲＡＭ（主メモリ）
１２Ａ  ハードディスク（ＨＤ）
１２０  起動メモリ領域
１３５１  汎用ＮＩＣドライバ
１３７１  特定ＮＩＣドライバ
１６  ＮＩＣ（装置側ＮＩＣ）
１７，２９  メモリマップドＩ／Ｏ
１７１，１７２  Ｉ／Ｏレジスタ
２９１，２９２，２９３  Ｉ／Ｏレジスタ
２  外部デバイス
２５３  管理ファイル記憶部（第１の記憶手段の一部）
２５４  システムテーブル記憶部（第１の記憶手段の一部）
２５７  特定ＯＳ，ＡＰ記憶部（第１の記憶手段）
２５８  Ｉ／Ｏ情報記憶部（ドライバ記憶手段）
２６  ＮＩＣ（外部側ＮＩＣ）
２８  データ処理回路
【図１】
2013114367.tif 000003
【図２】
2013114367.tif 000004
【図３】
2013114367.tif 000005
【図４】
2013114367.tif 000006
【図５】
2013114367.tif 000007
【図６】
2013114367.tif 000008
【図７】
2013114367.tif 000009
【図８】
2013114367.tif 000010
【図９】
2013114367.tif 000011
【図１０】
2013114367.tif 000012
【図１１】
2013114367.tif 000013
【図１２】
2013114367.tif 000014
【図１３】
2013114367.tif 000015
【図１４】
2013114367.tif 000016
【図１５】
2013114367.tif 000017
【図１６】
2013114367.tif 000018
【図１７】
2013114367.tif 000019
【図１８】
2013114367.tif 000020
【図１９】
2013114367.tif 000021
【図２０】
2013114367.tif 000022
【図２１】
2013114367.tif 000023
【図２２】
2013114367.tif 000024
【図２３】
2013114367.tif 000025
【図２４】
2013114367.tif 000026
【図２５】
2013114367.tif 000027
【図２６】
2013114367.tif 000028
【図２７】
2013114367.tif 000029
【図２８】
2013114367.tif 000030
【図２９】
2013114367.tif 000031
【図３０】
2013114367.tif 000032
【図３１】
2013114367.tif 000033
【図３２】
2013114367.tif 000034
【図３３】
2013114367.tif 000035