JP2013114367A - ファイル通信処理方法及び外部デバイス - Google Patents
ファイル通信処理方法及び外部デバイス Download PDFInfo
- Publication number
- JP2013114367A JP2013114367A JP2011258482A JP2011258482A JP2013114367A JP 2013114367 A JP2013114367 A JP 2013114367A JP 2011258482 A JP2011258482 A JP 2011258482A JP 2011258482 A JP2011258482 A JP 2011258482A JP 2013114367 A JP2013114367 A JP 2013114367A
- Authority
- JP
- Japan
- Prior art keywords
- specific
- general
- external device
- area
- nic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Stored Programmes (AREA)
Abstract
【課題】汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信を実現する。
【解決手段】端末のブート時にHDからRAM12に読み出された汎用OS134の環境で動作する汎用APa1341からの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、端末に設けられているNICを経由して行う汎用通信ステップと、端末に着脱可能に接続された外部デバイス2から外部ブートによってRAM12に読み出された特定OS136の環境で動作する特定APa1361からの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、外部デバイス2に設けられているNIC26を経由して行う特定通信ステップとを、メモリマップドI/O17、29を用いてそれぞれ実行する。
【選択図】図31
【解決手段】端末のブート時にHDからRAM12に読み出された汎用OS134の環境で動作する汎用APa1341からの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、端末に設けられているNICを経由して行う汎用通信ステップと、端末に着脱可能に接続された外部デバイス2から外部ブートによってRAM12に読み出された特定OS136の環境で動作する特定APa1361からの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、外部デバイス2に設けられているNIC26を経由して行う特定通信ステップとを、メモリマップドI/O17、29を用いてそれぞれ実行する。
【選択図】図31
Description
本発明は、ネットワークを介してファイル通信を行うファイル通信処理技術に関する。
近年、インターネット等のネットワークに接続されたサーバや端末(パーソナルコンピュータ)等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限(アドレス制限)の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
特許文献1には、選択的にインストール可能な同種の2つのOSであって、一方についてはブラウザやメーラ等の通信アプリケーションプログラムを実行させ、他方についてはスタンドアロンタイプとすることによって、当該一方のOSについてのみ、セキュリティー対策を施すようにしたマルチブート可能なコンピュータが提案されている。このマルチブート可能なコンピュータによれば、各OSに対して通信セキュリティー対策を施すことなく、全体としてセキュリティーが図れるという利点がある。また、特許文献2には、複数の不揮発性記憶装置にそれぞれ異なるOSが格納されており、どの不揮発性記憶装置を用いてブートするかを指定して切り換える手法が開示されている。
特許文献1に記載されたマルチブート方法は、複数のOSが同一のハードディスクに搭載されたタイプであり、かつ、選択されたOSをコンピュータの同一のRAM上に展開するものである。このため、通信アプリケーションプログラムを使用した際にハードディスクが一旦コンピュータウイルスに汚染されると、他のOS使用時においても、当該他のOSで作動するアプリケーションについてもウイルス感染する虞があった。また、特許文献2に記載されたブート方法は、制御者が望む起動装置とOSを動的に設定して起動でき、ブート時の不用意なシステム起動不可状態や、目的外のシステム起動を避けることを目的としたものであり、セキュリティーの向上とは直接関係がない。
本発明の目的は、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信を実現するファイル通信処理方法及び外部デバイスを提供することにある。
本発明に係るファイル通信処理方法は、情報処理装置のブート時にハードディスクから主メモリに読み出された汎用OSの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側NICを経由して行う汎用通信ステップと、前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定OSの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側NICを経由して行う特定通信ステップとを択一的に行うことを特徴とするものである。
本発明によれば、外部デバイスが接続されていない状態では、汎用アプリケーションによって装置側NICを介してネットワークへの通信が可能となり、一方、外部デバイスが接続された状態でブート(外部ブート)された場合は、特定アプリケーションによって外部デバイスに設けられている外部側NICを介してネットワークへの通信が可能となる。また、特定アプリケーションは外部デバイスによる外部ブートによって外部デバイスから情報処理装置の主メモリに読み出されたものであることから、さらに、外部デバイスに設けられた外部側NICを経由しての通信であるため、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信が可能となる。
請求項2記載の発明は、請求項1記載のファイル通信処理方法において、前記情報処理装置の起動後に、外部からの切り換え操作を受け付けて、前記汎用OSの環境と、前記特定OSの環境とを択一的に切り替える切替ステップを備えることを特徴とする。この構成によれば、外部ブート後において、汎用OS環境と特定OS環境とが択一的に選択可能となり、従って、汎用通信ステップと特定通信ステップとは選択的に利用可能となり、利用の都度、リブートするといったような煩雑さはなくなる。
請求項3記載の発明は、請求項1又は2に記載のファイル通信処理方法において、前記主メモリは、第1の領域と第2の領域とに区分され、前記第1の領域に前記特定OS及び前記特定アプリケーションが読み出され、前記第2の領域に前記汎用OS及び前記汎用アプリケーションが読み出され、前記第1の領域に前記第2の領域より相対的に高い特権保護レベルが設定されていることを特徴とする。この構成によれば、特定OS及び特定アプリケーションが読み出された第1の領域に対して、仮にマルウエアに感染した汎用OS及び汎用アプリケーション等から、改竄等を目的とした不当なアクセスがあっても、かかるアクセスは一般保護例外としてフックされ、無効とされることになる。
請求項4記載の発明は、請求項3記載のファイル通信処理方法において、前記特定通信ステップは、前記第1の領域に展開されている、前記外部側NICの動作を制御する特定デバイスドライバから、前記第2の領域に展開されている、前記外部側NICに対して動作許可を指示するマップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスし、前記汎用通信ステップは、前記第2の領域に展開されている、前記装置側NICの動作を制御する汎用デバイスドライバから、前記第2の領域に展開されている、前記装置側NICに対して動作許可を指示する前記マップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスすることを特徴とする。この構成によれば、特定通信ステップでは特定デバイスドライバを介して、汎用通信ステップでは汎用デバイスドライバを介して、それぞれマップドI/Oの対応するI/Oレジスタにアクセスするようにページング処理されて個々の物理アドレスで指定されるので、各通信ステップが好適に実行可能となる。また、特定デバイスドライバ及びページング処理の部分が第1の領域に設けられているので、これらの内容が、第2の領域からの不当なアクセス等によって改竄等されることはない。また、ページングの内容、特に物理アドレスのデータが改竄されることが防止できるので、マップドI/OのI/Oレジスタにアクセスできず、その内容を改竄等することはできない。
また、本発明に係る外部デバイスは、ネットワークに通信対象ファイルの送出を行う装置側NICを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、通信対象ファイルの前記ネットワークへの送出を行うための外部側NICと、特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側NICに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側NICに対して動作許可を指示するI/Oレジスタを有するマップドI/Oとを含むことを特徴とするものである。
本発明によれば、情報処理装置に備えられた汎用アプリケーションに基づく装置側NICとは異なる特定アプリケーションを利用して、外部デバイスに設けられている外部側NICからネットワークへのファイル送受信が可能となる。この場合、特定デバイスドライバからページング処理を介して得られる物理アドレスで外部デバイスに設けられているマップドI/OのI/Oレジスタに外部側NICの動作指示が行われる。従って、特定アプリケーションによって外部デバイスに設けられているマップドI/O及び外部側NICを経由してネットワーク通信が可能となるので、情報処理装置側の装置側NICを使用する場合に比して高いセキュリティーが確保される。
請求項6記載の発明は、請求項5記載の外部デバイスにおいて、前記情報処理装置のハードディスクから読み出された汎用OS及び前記汎用OSの環境で動作する汎用アプリケーションとは異なる特定OS及び前記特定OSの環境で動作する特定アプリケーションが、外部ブート時に前記情報処理装置の主メモリに読み出し可能に記憶される第1の記憶手段を備えることを特徴とする。この構成によれば、外部デバイスが情報処理装置に接続された状態で、外部ブートが行われた場合、外部デバイスに記憶されていた特定OS及び特定アプリケーションによって外部デバイスに設けられている外部側NICを経由してネットワーク通信が可能となるので、情報処理装置側のNICを使用する場合に比して高いセキュリティーが確保される。
請求項7記載の発明は、請求項6記載の外部デバイスにおいて、前記情報処理装置の起動時に、前記第1の記憶手段及びドライバ記憶手段の内容を前記主メモリに読み出すロード手段を含むことを特徴とする。この構成によれば、各記憶手段に記憶されている特定OS、特定アプリケーション及びネットワーク通信の指示を行う特定デバイスドライバが外部ブート時に主メモリに読み出されるようにしたので、高いセキュリティーが確保される。
請求項8記載の発明は、請求項7記載の外部デバイスにおいて、前記主メモリは、第1の領域と第2の領域とに区分され、前記ロード手段は、前記第1の領域に前記特定OS及び前記特定アプリケーションを読み出し、前記第2の領域に前記汎用OS及び前記汎用アプリケーションを読み出すもので、前記第1の記憶手段には、前記第1の領域に前記第2の領域より高い特権保護レベルを設定する特権処理ファイルが記憶されている。この構成によれば、特定OS及び特定アプリケーションが読み出された第1の領域に対して、仮にマルウエアに感染した汎用OS及び汎用アプリケーション等から、改竄等を目的とした不当なアクセスがあっても、かかるアクセスは一般保護例外としてフックされ、無効とされることになる。
請求項9記載の発明は、請求項8記載の外部デバイスにおいて、前記ロード手段は、前記外部側NICを動作させる特定デバイスドライバを前記第1の領域に読み出すものである。この構成によれば、特定デバイスドライバが高いセキュリティーで維持される。
本発明によれば、汎用OS環境に比べ特定OS環境での高いセキュリティーでの通信を実現することができる。
図1は、本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。図2は、図1に示す外部デバイスのハードウエア構成の一例を示すブロック図である。図3は、端末及び外部デバイスのブート及び管理に関連する機能部の一例を示すブロック図である。図4は、専用ローダのブートでのリアルモードにおける端末のRAMのメモリマップの一例を示す図である。図5は、専用ローダのブートでのプロテクトモードにおける端末のRAMのメモリマップの一例を示す図である。
図1に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末1と、この端末1に接続可能にされた、例えばPCI(Peripheral Component Interconnect)タイプの外部デバイス2と、インターネット等のネットワーク3とを備えている。端末1はNIC16(図3参照)及びプロバイダ(ISP)4を介してネットワーク3と接続されている。外部デバイス2の一例としてのPCIは、所定サイズからなるカセット型の筐体を有し、外部に端末1と接続するためのI/Oポートを有し、内部に、後述するようにCPU、拡張BIOS等を記憶する記憶部及びネットワーク3との通信を可能にするNIC(Network Interface Card)を備えている。本実施形態では、端末1はそのままネットワーク3に接続される一方、外部デバイス2が装着された状態では、後述するように外部デバイス2のNIC26(図2、図3参照)を経由してネットワーク3と接続される構成を有する。ネットワーク3上には複数のISP4が配設されており、各ISP4には、1又は複数の端末1や各種の情報を提供する図略のWebサイトが接続されている。外部デバイス2は、例えば、端末1からの操作を通して所定のサービスの提供を受ける権限を持つ会員として登録を受ける際に支給される。外部デバイス2は、内部の記憶部に会員を識別する情報及びその他の情報が記録されている。
端末1は、コンピュータを有しており、図3,図4及び図5に示すように、制御手段としてのCPU(Central Processing Unit)10を有する。CPU10は、ROM(Read Only Memory)11とRAM(Random Access Memory)12とに接続されている。ROM11には、データが書き換え可能なフラッシュROMを含む。本実施形態では、ROM11は、このフラッシュROM、またCMOS(Complementary Metal OxideSemiconductor)等を備え、フラッシュROM11Aには、BIOS(Basic Input/Output System)が書き込まれている。なお、本実施形態では、外部デバイス2にも後述するようにBIOSを格納していることから、以後、端末1のBIOSをシステムBIOSと呼称し、外部デバイス2のBIOSを拡張BIOSと呼称して、両者を区別する。
また、CPU10には、図3に示すように、操作者が必要な指令や情報を入力するテンキーを有するキーボードやマウス等を備える操作部13、画像を表示する表示部14及びNIC16が接続されている。メモリマップドI/O17及びメモリマップドI/O29はRAM12とデータの授受が可能な状態でリンクされている。表示部14は、入力情報の確認のための表示や通信内容の表示のために用いられる。なお、システムBIOSは、拡張BIOSを有するデバイスである外部デバイス2を優先的に指定するように設定されている。RAM12は、所定の記憶容量、一般的には32ビット態様で4GB(B:byte)の記憶容量を有する。4GBを有するRAM12のうち、例えば16ビット態様の1MB(正確には1MB+64KBであるが、説明の便宜上、1MBと表記する。)分は、起動時のリアルモードでのワークエリアである起動メモリ領域120となる。また、本実施形態では、OSの管理のための後述する管理ファイル(管理プログラム等)が展開される所定の領域、本実施形態では1MB〜100MB、そして、残りの領域が起動後の通常処理を実行する場合のワークエリアとなる。本実施形態では、0MB〜100MBを第1領域とし、そのうちの0MB〜1MBの起動メモリ領域120を第1領域の一部とし、100MB〜4GBを第2領域としている。更に、別のメモリ部分として、システムBIOS他の種々のプログラムやデータ類が格納されるハードディスク(HD)12A等を有する。
また、端末1には、例えば図4、図5に示すように、チップセット15が設けられている。チップセット15は、図略のマザーボードを構成する主要部品で、CPUや各種メモリ、その他ハードディスク(HD)や図略のCD−ROM等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。詳細は、後述する。
本ネットワーク3には、ISP4を介して、1又は所定数の会員サーバ5及び複数の取引先端末6が接続されている。会員サーバ5は、端末1を所有する乃至は操作を支配し得る会員に関する適宜な情報、例えば会員の氏名、名称、電子メールアドレス、住所等の会員情報等を会員単位で記憶するものである。取引先端末6は、クライアントである各端末1からの取引要求に対する処理、例えば電子決済による処理、取引情報を記憶しかつ情報管理を行うものである。会員サーバ5には、前記会員情報の他、必要に応じて端末1に提供可能な情報、例えば会員に提供するサービスを実行する上で必要な処理ソフトウエア、例えば所要の書類を作成するための書類作成プログラムとか、さらには大容量サーバに端末1毎の取引内容及び履歴情報が記憶(保管及び管理)されていてもよい。
なお、図1のネットワーク通信システムは、以下の態様が一例として採用可能である。端末1は、専用のネットワークにのみ接続可能な専用端末としてもよいし、インターネットとの切り替えで他のネットワークにも接続可能な汎用端末のいずれでもよい。端末1のHD12A内には、例えば汎用端末の場合、一般的な文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、更に通信用のソフトウエアを利用しての情報の送受信等の一般的な各処理を実行するプログラムファイル(以下、単にAP(application program)という)が格納されている。また、外部デバイス2内には、必要に応じて特定のアプリケーションソフトウエアの実行に関連する処理を行うプログラムファイル(特定APという)が記憶されている。汎用のAPは、OSローダによって読み込まれる汎用OSによって動作可能にされるものであり、特定APは、管理ファイルによって読み込まれる特定OSによって動作可能にされるものである。より具体的には、会員間である消費者、商店及び企業等の端末1には、特定APとして、商品やサービスの売買、見積もり乃至は請求、入出金に関する(いわゆる商取引に関する)各書類の作成と通信とを行うソフトウエア、及び必要に応じて所定の認証処理のソフトウエアが、ブート後に外部デバイス2からロードされる。すなわち、端末1は、特定APによって、一般的な商取引における決済、例えば業者店舗からの請求書の発行、受領や、購買者側から請求書発行元の契約金融機関の口座への入金(すなわち支払い)指示書、その受領書の発行の他、電子決済の如何を問わず種々の電子書面での送受信処理を可能とするものである。特定APは、各種書類をテキスト形式の、またバイナリー形式の電子ファイルとして作成可能である。この電子ファイルは、例えば会員サーバ5を中継して(あるいは並行して)外部デバイス2経由で端末1間で授受される。各金融機関の端末1には、消費者や企業の端末1からの金融的な決済書面に従った決済指示処理(金融機関間での決済処理の指令等)を行う特定APもインストールされている。登録会員毎に固有の情報が書き込まれた外部デバイス2が配布される。会員はサービスの提供を受ける場合、この外部デバイス2を端末1のポート1aに差し込み、少なくとも外部デバイス2の正当性の認証処理を、好ましくはさらに個人認証(外部デバイス2の正当所持者であることの認証)処理を受けた場合を条件としている。
会員サーバ5は、各会員のファイル送受信履歴やそのファイル類等を管理用に記憶する記憶部を備えている。会員サーバ5は、認証機能を備えていてもよく、この場合、認証機能は、会員サーバ5と端末1との間で授受されるファイル、すなわちパケットを閲覧して、会員の正当性の有無の認証を行う態様としてもよい。
また、図1に示すネットワーク通信システムは、他に種々の適用例が考えられる。例えば秘密情報を作成、保管管理する、例えば公的乃至は準公的(民間含む)な機関である団体組織(国、自治体、協会、組合等含む)外にある端末1との間における情報通信・管理体制に適用する例を挙げることができる。団体組織外にある端末との間における情報通信としては、例えば証明書の発行、申請書の発送などが想定される。また、LANシステムにも同様に適用可能である。
なお、TCP/IP(transmission control protocol/internet protocol)規約に沿って形成されたパケットによって文書ファイルの送受信を行う場合、受信したパケットを元のファイルに戻したり、送信予定のファイルをパケットに置換して送信したりする。さらに、送信される各パケットのヘッダには、送信元である端末1のグローバルのIPアドレス、送信先である他の端末及び会員サーバのグローバルのIPアドレスが含まれる。
図2に示すNIC26には図略のルータが装備され、乃至ルータとシリアルに接続されている。このルータは、例えば、送信信号乃至は受信信号としての各パケットの所定位置に付加されている送信先を示すアドレス情報が、インターネット用の規約に基づくグローバルIPアドレスか、このグローバルIPアドレスの付し方とは異なる(グローバルIPアドレスとは識別可能な形態である)専用ネットワーク用の、例えばイーサネット(登録商標)用等に準じた所定のローカルIPアドレス(MACアドレス)かを識別するためのアドレス情報(ルーティングテーブルやarp(Address Resolution Protocol)テーブル)の設定を行うものである。パケットは、テーブルと照合されて、アドレスの一致したルートへのみ送信され、これにより伝送路をインターネット経由か、専用ネットワークかにソフトウエア的に切り換えることができる。
図2において、外部デバイス2は、筐体内にマザーボード(図略)を備え、マザーボード上には各種の回路素子及び半導体素子が搭載されている。外部デバイス2は、制御手段であるCPU20を備える。CPU20には、ROM21及びRAM22が接続されている。また、CPU20には、マザーボード上に搭載された、拡張BIOSを記憶するROM等の拡張BIOS記憶部23及びDMAC(Direct Memory Access controller)24が接続され、更に、ROMここではフラッシュROM25、及びNIC26が接続されている。I/Oインターフェース27は、外部デバイス2の入出力部に設けられ、端末1のポート1aと装着脱可能に構成され、装着された状態で、所定数のラインを介して通信、電源供給が可能にされている。なお、I/Oインターフェース27には拡張BIOS記憶部23及びDMAC24が接続されているが、CPU20との間で通信可能とされている。外部デバイス2は、起動された端末1におけるOSの監視を行う管理ファイルのロード及びOSの監視を行うためのものである。また、拡張BIOSはフラッシュROM25に格納された態様でもよい。
図3に示すように、ROM21は、外部デバイス2として実行するべき各種の処理プログラム及び外部デバイスとして実行するべき各種の処理プログラムが格納される処理プログラム記憶部211、少なくとも会員を識別するための情報を記憶する会員情報記憶部212、及び後述するマルウエア有無監視のための基準時間情報を記憶する基準時間記憶部213を備えている。RAM22は、処理途中のデータや転送データを一時的に格納するものである。
CPU20は、端末1の起動時及び操作時に、ROM21から必要な処理プログラムを読み出して実行するものである。CPU10は、電源が投入されると、システムBIOSを起動し、必要な自己診断処理を実行した後、ブートの前に行われる処理である、利用可能な周辺機器の初期化を行うPOST(Power On Self Test)処理の実行に移行する。POST処理では、接続されている外部デバイスに対して、いわゆる拡張BIOSを格納したものがあるか否かが検索される。そして、拡張BIOSを格納した外部デバイスが検索されると、当該外部デバイスの拡張BIOSの取り込み処理が行われる。
拡張BIOSは、端末1に読み込まれ、制御が渡された後に起動し、外部デバイス2との間で所定の情報、本実施形態では、後述する専用ローダの取り込みを行わせるプログラムである。
DMAC24は、CPU10の制御を受けることなく、端末1と外部デバイス2間のバスの制御を管理することによって情報の授受を強制的に行うバスマスタ方式のコントローラ(回路)をいう。ここでは、CPU10のからの要求、外部デバイス2内のCPU20の動作状況を監視し、監視結果に応じて、両デバイス間で前記DMA転送を行うものである。
図2において、フラッシュROM25は、端末1に読み込まれる各種の情報を格納している。専用ローダ記憶部251は、後述するようにRAM12がリアルモードの状態にあるときに、DMAC24によって転送されてRAM12に読み込まれるプログラムである専用ローダ(R)を格納するものである。専用ローダ記憶部252は、後述するようにRAM12がプロテクトモードの状態にあるときに、後述するようにリアルモードに戻してDMAC24によって転送されてRAM12に読み込まれる、プログラムである専用ローダ(P)を格納するものである。専用ローダ(P)の読み込み時点で割込ベクタテーブルのレジスタIDTR(InterruptDescriptor Table Register)がプロテクトモード用になっているので、リアルモードに戻さないまま専用ローダ(P)を展開した場合、リアルモード時の割込ベクタテーブルが使用できなくなる。そこで、拡張BIOSは、レジスタIDTRをリアルモード用の割込ベクタテーブルに書き換えるリアルモード戻し処理が先に行われるようになっている。
なお、専用ローダ(R)は1MBの情報量を有するもので、起動メモリ領域120に展開される。専用ローダ(P)は、4GBの情報量を有するもので、RAM12の全体に上書きで展開される。専用ローダ(R)、(P)のローダ命令部分のプログラム内容は共通しており、その他の情報部分の内容は、起動メモリ領域120、RAM12を上書き(リセット)するために使用される情報、例えばデータ“0”等である。なお、専用ローダ(R)の情報内容を専用ローダ(P)と共通にしてもよい。
管理ファイル記憶部253は、マルウエアに汚染されたOS(乃至はAP)の後述する不正な動作を監視し、その動作を無効にするプログラムを記憶するものである。システムテーブル記憶部254は、管理ファイルの資源となるIDT(InterruptDescriptor Table)、GDT(Global Descriptor Table)、TSS(Task State Segment)等を記憶するものである。IPL(Initial Program Loader)すなわちここではOSローダを記憶するOSローダ記憶部255は、HD12AからOSをRAM12にロードするためのプログラムである。システムBIOS記憶部256は、フラッシュROM11Aに格納されているシステムBIOSと同一のプログラムである。システムBIOS記憶部256に記憶されたシステムBIOSは、HD12Aに格納されているシステムBIOSがマルウエアに汚染される可能性があることから、専用ローダがロードされた後に、起動メモリ領域120にロードするためのものである。特定OS,AP記憶部257は、プログラムであるOS等(各I/OデバイスのI/O制御ドライバ、特定APを含む)を格納するものである。I/O情報記憶部258は、各I/OデバイスのI/O制御ドライバを記憶するもので、詳細は図31で説明する。各I/Oデバイスは、例えば操作部13、表示部14、NIC16、図略のプリンタ等の周辺機器である。
また、専用ローダ(P)を、1MBのサイズのファイルと、その専用ローダ(P)内で1MB以上をクリアするロジックとを備えたものとし、専用ローダ(P)の実行時に、端末1のCPU10で、1MBの読み込み処理と、クリア処理とを行わせる態様という手法を採用してもよい。この方法によれば、4GBの転送に比してパフォーマンス面の向上が期待できる。
NIC26は、ネットワーク3を介して他の端末1等と通信を行う場合の情報処理を実行するもので、そのための所定の処理プログラムを記憶するROM及び処理内容を一時的に格納するRAM(共に図略)を有する。また、前述したように、ネットワーク3との接続を管理するNIC26は、図略のルータを介してISP4までの公衆通信回線と接続され、その網及びネットワーク3に対する通信制御を行うものである。
I/Oインターフェース27は、ポート1aを介して外部デバイス2との間で情報の授受を行うラインの他、電源供給を行うラインも有する。端末1は図略の電源回路を有しており、外部デバイス2が端末1に装着されると、この充電回路からポート1a、外部デバイス2のI/Oインターフェース27を経由して、外部デバイス2内の図略の充電回路に電流が供給されることで外部デバイス2の電源起動が行われる。
図3において、端末1のCPU10は、ROM11、フラッシュROM11A、HD12A及びフラッシュROM25からRAM12に読み出された処理プログラムを実行することによって、システムBIOSの起動から拡張BIOSの実行を行う専用ローダロード処理部101、ロードされた専用ローダを実行させる専用ローダ処理部102、専用ローダの実行によってロードされる管理ファイル及びその動作環境を作成する管理ファイル動作環境作成部103、管理ファイルの準備終了後にOSローダ(IPL)をロードするOSローダロード処理部104、ロードされたOSローダ及びその動作環境を作成するOSローダ処理部105、管理ファイルの下にOSローダによるOSのブート乃至ブート後の動作の監視を行うOS動作監視部106、特定APあるいは汎用APを用いて文書作成その他種々の処理を実行する情報処理部107、端末1からネットワーク3を介して一般の端末1やウエブサイトサーバと通信し、またNIC26からネットワーク3を介して他の会員の端末1、会員サーバ5及び取引先端末6との間で情報の授受を行うネットワーク通信処理部108、例えば操作部13からの特定の操作に応じて動作環境を汎用OS環境と特定OS環境との間で切り替える動作環境切替部109として機能する。
専用ローダロード処理部101は、端末1の電源投入を受けて、自己診断処理を実行し、次いで、POST処理によってメモリや周辺機器の状態をチェックするものである。次いで、BIOSに設定されたデバイス、本実施形態では拡張BIOSが格納されている外部デバイス2から、この拡張BIOSを起動するようになっている。
専用ローダロード処理部101は、外部デバイス2側の専用ローダロード処理部201によって読み出される拡張BIOSをRAM12の起動メモリ領域120内の所定の領域に読み込む処理を行うものである。なお、外部デバイス2が装着されていない場合には、優先順位の順に、例えばROMからMBR(マスターブートレコード)のプログラムが読み出され、次いで読み込まれたマスターブートプログラムに制御が渡される。
専用ローダロード処理部101は、拡張BIOSがRAM12の起動メモリ領域120に読み込まれ、システムBIOSによって制御を渡された後に、拡張BIOSを実行するものである。拡張BIOSは、各種の命令コードを外部デバイス2からRAM12の起動メモリ領域120に読み出して各命令に制御を渡すようにしている。命令コードとしては、ここでは、所定の複数が設定されている。すなわち、ある命令コードによって、端末1内に特定APが実行可能な環境を準備するべく、必要なデバイスのドライバに対する初期化処理を実行する。必要なデバイスとしては、表示部14、操作部13を構成するキーボードやマウスである。また、ある命令コードによって、I/OAPIC150のリダイレクションテーブル1501(図4参照)に外部デバイス2のIRQと割込ベクタテーブル(INT)とを登録する。なお、この登録時のIRQの番号を割込番号として言い換えている。また、I/OAPIC150は、マルチプロセッサ対応可能で、受け取った割込をCPU10に通知するためのリダイレクションテーブル1501でハードウエア割り込みでの優先順位が設定可能な割込コントローラである。ここに、IRQとは割込要求であり、割込番号とは同時にハードウエア割り込みが発生した時の優先順を指す順位情報である。
また、ある命令コードは、外部デバイス2に対して、DMAC24を使用してデータ転送を受け付けるためのデータ転送要求信号を送信させるものである。このデータ転送要求信号によって転送が要求されるデータは、略1MBのローダ等(割込ベクタテーブルを含む)である。拡張BIOSによって実行される専用ローダのローダ処理に、DMAバスマスタ転送方式を採用して少なくともCPU10の関与を外すことで、仮にこの間、CPU10がマルウエアに乗っ取られていたとしても、データの転送自体を正常に行わせることができる。従って、専用ローダ(R)をRAM12の起動メモリ領域120に強制的(CPU10の制御を受けることなく)に、直前のデータを消しながら、すなわち上書きすることで、マルウエアによって起動メモリ領域120内にウイルス等が複製されたとしても、これらを確実に消去することが可能となる。なお、必要に応じて、SMRAM制御レジスタのD_LCKビットをセットして、SMRAMを書き込み禁止(アクセス禁止)させる命令コードを採用する態様であってもよい。このように、アクセス禁止のためのロックをかけることで、全てのメモリに自由にアクセスできる最上位権限であるSMM(システムマネージメントモード)という特権モードを悪用させないようにすることが可能となる。
ところで、システムBIOSから立ち上がる起動の間に、プロテクトモードの動作状態にあることが検知されると、マルウエアが存在する可能性が高いと見なして、起動動作を中止することが考えられる。この場合には、システムBIOSを書き換えたり、ワクチンによってシステムBIOS内に潜伏するウイルスを駆除する対処方法が考えられる。これによって、マルウエアが存在する環境下で情報処理を行うことによる危険は回避される。一方、このように起動を中断すれば、対処するまでの間、一律に端末1の立ち上げができず、特定APの使用環境を円滑に会員に提供できないといった不便さがあり、問題がないではない。そこで、プロテクトモードによる異常が発生した場合には、リセット処理を実行させて、リアルモードに設定し直すようにしている。
専用ローダロード処理部101は、拡張BIOSに制御が移行された後に、後述するように外部デバイス2から送信されてくる、リアルモードへの設定のための命令コマンドによって、実行されるものである。システムBIOSの起動動作中に、端末1がプロテクトモードに設定されていると判断、あるいはリアルモードに設定されていることが疑わしいと判断された場合に発せられる、前記リアルモードへの設定のための命令コマンドを受けて、専用ローダロード処理部101は、モードをリアルモードに設置し直すための処理の一部を実行するものである。本実施例では、前述のレジスタIDTRをリアルモードの割込ベクタテーブルに戻す処理、I/OAPIC150のリダイレクションテーブル1501に外部デバイス2のIRQと割込番号を登録する処理、データ転送要求信号の出力処理である。かかるモード判断処理は、マルウエアの影響を受けないようにするべく、後述するように外部デバイス2側で実行される。
次に、図3において、CPU20は、ROM21に記憶されたプログラムを実行することによって、専用ローダをロードするための拡張BIOSの端末1への読み出しを行う専用ローダロード処理部201、専用ローダのロード動作を監視し、監視内容に応じた指示を発する監視部202、管理ファイルの端末1側への読み出しを行わせる管理ファイルロード処理部203、OSローダの一部である外部デバイス2側から端末1へのロード部分の読み出し行わせるOSローダロード処理部204、及び外部デバイス2による起動後に特定APを用いて作成されたファイル等に、後述するデータ処理回路28による符号化、復号化処理、またTCP/IPへのパケット作成処理を施し、NIC26及びネットワーク3を介して他の端末1、会員サーバ5及び取引先端末6との間で授受するネットワーク通信処理部205として機能する。
監視部202は、ここでは後述の3態様の監視方法が含まれており、計時手段による監視態様、リアルモードかプロテクトモードかのモード状態を判断するモード判断手段による監視態様、及びモードをチェックするモードチェック手段による監視態様である。
専用ローダロード処理部201は、端末1でのPOST処理によって読み出し指示を受けてRAM12へ拡張BIOSの読み出し処理を実行するものである。また、専用ローダロード処理部201は、監視部202の監視内容に応じて、リアルモードの状態においてローダ(R)を転送するべく、DMAC24を起動する(転送指示を行う)ものであり、一方、プロテクトモードの状態においてローダ(P)をRAM12に転送するべく、DMAC24を起動する(転送要求(指示)を行う)ものである。
監視部202の計時手段は、端末1からの電源供給を受けて外部デバイス2が起動するレベルに達した時点から計時をスタートし、端末1のシステムBIOSが拡張BIOSに制御を渡して命令コードが外部デバイス2に送出されたことを受けて計時動作をストップすることで、その間の所要時間を計測するものである。
監視部202のモード判断手段は、計時手段で計時された時間と、ROM21の基準時間記憶部213に記憶されている基準時間情報との大小(長短)を比較し、計時時間が基準時間を超えている場合には、マルウエアによってモードがプロテクトモードになっていると見なしてリアルモードへの設定し直し(書き換え)のための命令コードを端末1に送出するものである。なお、基準時間とは、以下のようにして設定されている。すなわち、まず、端末1に電源が投入され、システムBIOSが起動してPOST処理が実行され、RAM12に拡張BIOSが展開され、さらに、拡張BIOSに制御が渡されるまでに要する時間は、マルウエアが動作せず正常の場合、ほぼ予め設定された時間となる。
一方、システムBIOSにマルウエアが潜伏しており、あるいはシステムBIOS起動中にマルウエアが侵入してきて、RAM12上にプロテクトモード環境を構築する場合には、前記の正常な場合での設定時間に比してより大きな時間を要することとなる。そこで、端末1の起動、すなわち外部デバイス2の起動から拡張BIOSへの制御移管までの経過時間によってRAM12がリアルモード空間にあるか、プロテクトモード空間にあるかを、端末1側で直接モード内容を判断する方法ではなく、外部デバイス2側で判断するようにしている。
図4は、リアルモードにおけるRAM12の内容であり、図5はプロテクトモードにおけるRAM12の内容である。図4に示すように、チップセット15は、I/OAPIC150の他、CPU10が複数ある態様では、CPU10毎に、ローカルAPIC151、EFLAGSや汎用レジスタ等の各種のレジスタからなるレジスタ群152を含むチップセット15a〜15nを有する。また、RAM12のうち、0MB〜1MBの起動メモリ領域120には、システムBIOS121、拡張BIOS122、割込ベクタテーブルを含む専用ローダ123、一時的GDT124が展開されている。なお、専用ローダ123は起動メモリ領域120の全域に展開されるもので、ローダとして機能するプログラム部分と、1MB分の転送データを作成するために補充されたダミーデータ等を適宜含む。なお、一時的GDT124は専用ローダ123によって作成されたもので、専用ローダ123によって1MB〜100MBに管理ファイルをアンリアルモード(Unreal mood)でロードするためのアドレッシング用である。ここにアンリアルモードとは、リアルモード環境においてチップセット15内の図略のデータセグメントレジスタのアクセスリミットを4GBに変更することによって、データアクセスのみ1MB以上、すなわち起動メモリ領域120外に対してアクセスを可能にした特殊な状態を指す。
一方、プロテクトモードでは、図5に示すように、各チップセット15a〜15nには、レジスタ群152に、割込ディスクリプタテーブル(IDT)のアドレスが格納され、CPU10によって参照されるレジスタIDTR(InterruptDescriptor Table Register:割込ディスクリプタテーブルレジスタ)も含まれている。また、4GBのRAM12の任意の領域について、専用ローダ内の割込ベクタテーブル123’、システムBIOS121、拡張BIOS122が展開され、さらに任意の領域にはプロテクトモードを構成するための、IDT(InterruptDescriptor Table)、GDT(Global Descriptor Table)、さらにPGM(Program)1〜i及びPGM1〜i毎のTSS(Task State Segment)の各管理テーブル(但し、PGMは除く)が形式的に作成されている。すなわち、図5は、RAM12に、あたかも図4と同様な空間が存在するかのように、マルウエアによって作成された、外部デバイス2に見せるための環境設定の結果である。
マルウエアは、システムBIOSの動作中に、プロテクトモードの環境をRAM12上に展開するために、図5に示すようなそれぞれのプログラムを作成し、RAM12上の適所に展開し、その後に、制御を拡張BIOSに渡すことになる。さらに、マルウエアの本体プログラムをRAM12内に展開する必要があり、これらのデータは外部媒体である、ハードディスク(HD12A)から主に取得しなければならない。従って、端末1の起動から拡張BIOS122に制御を渡すまでの所要時間は、図4の場合に比してかなり大きな時間にならざるを得ないことになる。そこで、図4のリアルモードにおける場合の所要時間と、図5のプロテクトモードにおける場合の所要時間との間の適当な時間を基準時間として設定している。
図3に戻って、監視部202のモードチェック手段について説明する。監視部202のモードチェック手段は、計時手段による監視態様やモード判断手段による監視態様とは別の方法で監視を行う実施態様である。すなわち、システムBIOSが拡張BIOSに制御を渡した後、外部デバイス2が命令コードを発するようにしている。DMAC24はこの命令コードによって起動され、RAM12の内容を、CPU10の制御を受けることなく、全て転送によって読み取り、外部デバイス2に取り込む。監視部202のモードチェック手段は、読み込まれたRAM12の内容をチェックして、プロテクトモード環境にあるか否かの判断を行う。判断手法は、RAM12のデータ中に、プロテクトモードに固有の情報、例えば前述したGDT,IDT又はTSS等の管理テーブルの有無を判断材料としてもよい。このように、プロテクトモード空間にあるかを、端末1側で判断する方法ではなく、外部デバイス2側で判断するようにしている。
さらに、監視部202のモードチェック手段は、マルウエアによってモードがプロテクトモードになっている判断すると、リアルモードへの設定し直しのための命令コードを端末1に送出するものである。
続いて、図6〜図10により、CPU10、CPU20におけるブート処理を説明する。図6は、端末1のCPU10によって実行されるシステムBIOSの起動処理の手順を説明するフローチャートである。まず、端末1の電源投入後、システムBIOSのチェックが行われ(ステップS1)、次いでPOST処理が実行される(ステップS3)。そして、POST処理によって外部デバイス2から拡張BIOSの読み込みが終了したか否かが判断される(ステップS5)。拡張BIOSの読み込みが終了していなければ読み取りが継続され、読み取りが終了したのであれば、拡張BIOSへ制御が渡される(ステップS7)。
なお、以降においては、端末1のポート1aに外部デバイス2の一例としてPCIが装着されているという前提で述べる。すなわち、端末1のポート1aにPCIである外部デバイス2が装着されていると、POST処理によって、システムBIOSの起動ルーチンによって拡張BIOSがRAM12に読み込まれる。
図7は、端末1のCPU10によって実行されるシステムBIOSのPOST処理(ステップS3)の手順を説明するフローチャートである。まず、端末1に接続されているデバイスとしてPCIが装着されているか否かが判断され(ステップS11)、PCIが装着されていなければ、システムBIOSは通常の起動処理が実行される(ステップS13)。一方、PCIが装着されていると、デバイスのBIOS、すなわち拡張BIOSが検索されて(ステップS15)、この拡張BIOSがRAM12にロードされる(ステップS17)。次いで、ロードが終了すると、システムBIOSによってロード終了信号が出力される(ステップS19)。
図8は、外部デバイス2のCPU20によって実行される監視処理Iの手順を説明するフローチャートである。まず、外部デバイス2の電源がオンしたか否かが判断され、オンしたのであれば(ステップ#1)、監視部202の計時手段によって計時動作がスタートされる(ステップ#3)。次いで、システムBIOSから命令コードが受信されるまで待機し(ステップ#5でNo)、命令コードが受信されると、計時動作がストップされる(ステップ#7)。
次いで、計測した計時時間が基準時間より短い(計時時間<基準時間)か否かが判断(比較)され(ステップ#9)。計時時間が基準時間より短ければ、端末1はプロテクトモード環境に設定されていないと判断し、すなわち少なくともマルウエアによって端末1のCPU10がプロテクトモードに設定されていないとして、本フローを抜ける。一方、計時時間が基準時間と等しいか長ければ、端末1のCPU10はプロテクトモード環境に設定されている可能性があると判断し、すなわち、少なくともマルウエアによって端末1のCPU10の環境がプロテクトモードに設定されている可能性があるとして、端末1のCPU10をリアルモードへ設定し直すための命令コードを返信して(ステップ#11)、本フローを抜ける。
図9は、外部デバイス2のCPU20によって実行される監視処理IIの手順を説明するフローチャートである。まず、(端末1側において、システムBIOSから拡張BIOSにCPU10の制御が渡されて)、拡張BIOSから前述した命令コードが受信されたか否かが判断される(ステップ#21)。この命令コードが受信されていなければ、本フローをスルーする。一方、この命令コードが受信されたのであれば、端末1の制御が拡張BIOSにあると判断して、DMAC24の起動及びDMAC24による転送対象であるRAM12の指定を行う(ステップ#23)。これによりDMAC24を介してRAM12の内容が外部デバイス2のRAM22に取り込まれる。この時点においても、端末1のCPU10の制御から離れてRAM12の全ての内容(ここでは4GB)を取り込むようにして、CPU10のモードの如何による影響を全く受けないようにしている。
次いで、取り込んだRAM12の内容に対して、プロテクトモードに固有の内容、具体的には前述したIDT、GDT、TSS等の固有の管理テーブルが存在するか否かがチェックされる(ステップ#25)。RAM12内にプロテクトモード固有の内容が含まれていなければ、リアルモードであると判断して、本フローを抜ける。
一方、RAM12内にプロテクトモード固有の内容が含まれている場合には、端末1のCPU10はプロテクトモード環境に設定されている可能性があると判断し、すなわち、少なくともマルウエアによって端末1のCPU10の環境がプロテクトモードに設定されている可能性があるとして、端末1のCPU10をリアルモードへ設定し直すための命令コードを返信して(ステップ#29)、本フローを抜ける。
図10は、端末1のCPU10によって実行される拡張BIOS処理の手順を説明するフローチャートである。CPU10の制御が渡された拡張BIOSは、まず、外部デバイス2からリアルモードへの設定し直しのための命令コードが受信されたか否かが判断される(ステップS31)。受信のために準備された所定の時間内に、この命令コードが受信されなければ、端末1に接続されている所定のデバイス(前述した表示部14、キーボード、マウス)に対して初期化のためのPOST処理が施される(ステップS33)。次いで、I/OAPIC処理(ステップS35)、データ転送要求信号出力処理(ステップS37)が実行される。続いて、DMAC24が起動されて、専用ローダ記憶部251からローダ(R)が端末1側に転送され、RAM12の起動メモリ領域120に上書きされる(ステップS39)。そして、転送が終了したかどうかが転送終了信号によって確認されると(ステップS41でYes)、ハードウエア割込が発生され、CPU10の制御がローダに渡されて(ステップS43)、本フローを抜ける。
一方、ステップS31で、リアルモードへの設定し直しの命令コードが受信されると、レジスタIDTRを割込ベクタテーブルに書き換えるリアルモード戻し処理(ステップS45)、I/OAPIC処理(ステップS47)、データ転送要求信号出力処理(ステップS49)が実行される。続いて、DMAC24が起動されて、専用ローダ記憶部252からローダ(P)が端末1側に転送され、RAM12の全域に上書きされる(ステップS51)。そして、転送が終了したかどうかが転送終了信号によって確認されると(ステップS53でYes)、ハードウエア割り込みが発生され、CPU10の制御がローダに渡されて(ステップS55)、本フローを抜ける。なお、専用ローダ(R),(P)のロードの終了に引き続いて、システムBIOS記憶部256から適正なシステムBIOSを専用ローダのローダ部分に影響しない領域に上書きするようにしている。あるいは、専用ローダ(R),(P)の一部にシステムBIOS記憶部256のシステムBIOSを予め含めておいて、専用ローダ(R),(P)のロードで起動メモリ領域120に上書きされる態様でもよい。このシステムBIOSは後述するように、OSのローダの際に用いられる。
また、専用ローダのロード処理に関しては、監視処理I、IIに代えて、図11〜図13に示す態様を採用したものでもよい。図11は、外部デバイス2のCPU20及び拡張BIOSによって実行される監視処理IIIの手順を示すための説明図である。また、図12は、端末1側のCPU10によって実行される監視処理IIIの一部手順を説明するフローチャートであり、図13は、外部デバイス2側のCPU20によって実行される監視処理IIIの一部手順を説明するフローチャートである。
図11に示す監視処理IIIを実行するためには、外部デバイス2は以下の構成を備えている必要がある。CPU20のROM21又はフラッシュROM25は、IOAPICを記憶する記憶手段として機能する。このIO APIC150は、POST処理時に、外部デバイス2のレジスタに設定されたハードウエア割込IRQにて端末1側に登録されて、当該IRQの番号に紐付く割込番号が自動設定される。同様にCPU20のROM21又はフラッシュROM25は、割込ベクタテーブル、及び割込ハンドラの内容を記憶する記憶手段として機能する。また、DMAC24は、割込ベクタテーブル123’、及び割込ハンドラ124’の内容をCPU10の制御抜きで、端末1側に転送する処理を行う。また、監視部206は、後述する割込ハンドラ124’の実行結果信号の有無を監視する機能を備える。また、この監視部206は、前記転送要求が発せられた後、DMAC24により、バスマスタ方式で割込ベクタテーブル123’と前記割込ベクタテーブル123’の所定のベクタに対応する割込ハンドラ124’との前記起動メモリ領域への転送を行い、さらに割込ハンドラ124’からの実行結果信号の有無を判断する機能部を備えている。
そして、拡張BIOSは、以下の手順を実行する。なお、IOAPIC150のリダイレクションテーブル1501内には、ハードウエア割込(IRQ10)に、例えばINT0が設定されている。また、ここでは、ハードウエア割込としてIRQ10としたが、IRQは“10”に限定されず、デバイスを指定するべく予め対応付けされた番号であればよい。また、割込ハンドラ124’とは、割り込み処理を実行するためのメモリ上に待機しているプログラムをいう。さらに、割込ベクタテーブル123’のINT0には、割込ハンドラ124’であるプログラムの先頭アドレス、図11の例ではアドレス1000が設定されている。
次に、図12において、まず、システムBIOSから拡張BIOSに制御が渡ったか否かが判断され(ステップS61)、拡張BIOSに制御が渡っていなければ、本フローをスルーする。一方、拡張BIOSに制御が渡ったのであれば、拡張BIOSに制御が渡った旨のリクエスト信号が外部デバイス2に送信される(ステップS63、図11の矢印[1]参照)。次いで、ハードウエア割込(IRQ10)命令の発行の有無が判断され(ステップS65)、例えばリクエスト信号の送信時点から所定時間内に、ハードウエア割込(IRQ10)命令の発行が確認されると、INT0が指定されてINT0命令が発行され、該当アドレスの割込ハンドラ124’が実行される(ステップS67、図11の矢印[4]参照)。そして、割込ハンドラ124’の実行結果信号が外部デバイス2へ返信される(ステップS69、図11の矢印[5]参照)。なお、割込ハンドラ124’の実行結果信号を毎回変更することが秘匿性の点からはより好ましい。実行結果信号は、例えば、ブートの日時情報や外部デバイス2の会員情報記憶部212の会員情報を用いて所定のルールに従って作成される。
図13においては、まず、リクエスト信号の受信の有無が判断され(ステップ#41)、リクエスト信号が受信されていなければ、本フローをスルーする。一方、リクエスト信号が受信されていると、DMAC24の起動及び転送対象となる記憶領域の指定処理が行われて(ステップ#43、図11の矢印[2]参照)、転送対象の情報がブロック転送によってCPU10の制御を受けない状態で、端末1側に転送される。ここに、転送対象の情報とは、IOAPIC150(のリダイレクションテーブル1501)、割込ベクタテーブル123’及び割込ハンドラ124’の各内容である。
次いで、転送動作の終了を受けてCPU20から出力される転送終了信号の有無が判断され(ステップ#45)、転送終了信号が確認されると、ハードウエア割込(IRQ10)命令が発行されて、端末1に送信される(ステップ#47、図11の矢印[3]参照)。次いで、監視処理として、ハードウエア割込(IRQ10)命令の発行時点から所定時間内に、割込ハンドラ実行結果信号の受信の有無が判断される(ステップ#49)。監視の結果、割込ハンドラ実行結果信号が受信されると、CPU10はリアルモードの状態にあって、ブートが正常に行われたと判断されて、本フローを終了する。
一方、CPU10がマルウエアによってプロテクトモードの状態にされた場合、DMAC24を利用したバスマスタ転送によって、この転送前に、CPU10は割込ベクタテーブル123’のINT0のアドレスと割込ハンドラ124’の先頭アドレスとを知ることはできないから、マルウエアによって設定されるINT0のアドレスと割込ハンドラ124’の先頭アドレスとを対応させることはできない。特に、INT0の内容と割込ハンドラ124’の先頭アドレスの設定を、ブート処理毎に外部デバイス2側で所定のルールによって、あるいは乱数発生部を作動させて無作為に設定するようにすることが好ましい。
従って、プロテクトモードの状態にある場合、割込ハンドラ124’は実行されず、監視の結果、割込ハンドラ実行結果信号が生成されない、すなわちブートが正常に行われていない可能性が高いと判断して、端末1のCPU10をリアルモードへ設定し直すための命令コードを返信し(ステップ#51)、本フローを抜ける。図13の処理を抜けて、端末1は、図10の処理を行う。
このように、DMACを端末1側に設けた場合には、DMAC24の起動や転送対象内容の指定が、マルウエアに乗っ取られたCPU10によって管理される虞(すなわち、例えばある処理を行っていないにも拘わらず、処理を行った旨の信号のみを擬似的に生成して出力するような処理)があるが、DMAC24を外部デバイス2側に設けることで、CPU10の制御を受けることを排除することが可能となる。
次に、図4、図14〜図17は、専用ローダのロードからOSの動作監視までのRAM12のメモリマップの変遷を示す図である。図4は、前述したように、専用ローダ123のロードから一時的GDT124の作成まで、すなわち起動メモリ領域120内に対するデータ作成状態を示している。なお、システムBIOS121は専用ローダ123のロードによって一旦消去されるので、前述したように外部デバイス2から新たにロードされる。あるいは専用ローダ123内に予め含めておき、専用ローダのロード時に同時にロードされるようにしてもよい。これは、専用ローダ123及びシステムBIOS121は後述するように、後にOSのロードにおいて必要となるからである。その意味では、拡張BIOS122は必ずしも再度ロードする必要はない。また、図4において、外部デバイス2からのシステムBIOSのロードは専用ローダ123内のダミーデータ部分に上書きするようにすればよい。
図14は、1MB〜100MBの領域に管理ファイル125、管理用GDT126及び管理用IDT127が展開された状態のメモリマップである。図3の専用ローダ処理部102は、拡張BIOS122のリクエストを受けた外部デバイス2からのハードウエア割込の発生に応じて専用ローダ123にCPU10の制御が移されることによって実行されるローダ処理である。専用ローダ処理部102は、図14に示すように、管理ファイルロード処理部203によって読み出された、外部デバイス2の管理ファイル記憶部253内の管理ファイル125を端末1のRAM12の1MB〜100MBの所定位置に読み込む処理及びこれに関連する処理を行う。より詳細には、専用ローダ処理部102は、まず、RAM12の1MB〜100MBへのアクセスを可能にするための処理、例えば図4で示したような一時的GDT124の作成、チップセット内の各種レジスタに対する設定を行う。一時的GDT124は、管理ファイル125を構成するプログラムや管理テーブルの全て(のセグメントディスプリクタ)に対して特権レベルであるDPL(Description Privilege Level)に“0”(いわゆるリング“0”)を設定することによって、管理ファイル125を1MB〜100MBの所定位置に最も高い特権レベルでロード可能にしている他、この領域に設定される情報に対して全てDPL“0”でのロードを実現している。DPLとは、公知のように、メモリ空間の特権レベルを記述するもので、DPL“0”からDPL“3”までの4ランクがある。DPL値が相対的に小さい程、特権のレベルが高い。例えば、DPL値の相対的に大きい値として記述された空間で動作するプログラムはDPL値がそれより小さい値で記述された空間側にアクセスすることはできない。すなわち、この場合は特権レベル違反として、後述する一般保護例外(#GP)あるいはページフォルト(#PF)が発行され、アクセスは無効とされる。一方、DPL値の相対的に小さい値として記述された空間で動作するプログラムはDPL値がそれより大きい値で記述された空間側にアクセスしたり閲覧したりすることができる。これによって、不適当なアクセスか否かの判断が事前に可能となる。
また、専用ローダ処理部102は、管理レジスタのうちのレジスタCR0に対してフラグを設定することで、1MB〜100MBの領域へのアクセスをプロテクトモードで行う他、別途、リアルモードにおいて、一時的GDT124のセグメントリミットを1M以上、ここでは4Gに設定したことで、アンリアルモードでの動作を可能としている。このアンリアルモードで、管理ファイル125及び割込ハンドラ130がロードされ、次いで管理用GDT126がロードされ、また管理用IDT(管理用割込ベクタテーブル)127がロードされる(図14参照)。管理用GDT126、管理用IDT127の各セグメントディスクリプタは、当該時点で必要なテーブル部分までが予め作成されており、専用ローダ処理部102によってロードされる。専用ローダ処理部102は、これら必要な情報のロード後、CPU10の制御を管理ファイル125に渡す(ジャンプする)。
図15は、1MB〜100MBの領域にTSS128、PTE(Page Table Entry)129及び管理用割込ハンドラ130が作成された状態のメモリマップである。また、図には示していないが、必要に応じてタスク毎のLDT(Local Descriptor Table)が作成される。管理ファイル動作環境作成部103は、管理ファイル125のプログラムによって、TSS128、PTE(Page Table Entry)129、管理用割込ハンドラ130及び必要なLDTを作成する。なお、TSS128及びPTE129は、後述するように、101MB以上で動作するタスク(主に、HD12AからのOSのロード)を監視するための管理用(プロテクト)モード用のテーブルと、100MB〜101MBで動作するタスクを監視するVM8086モード用のテーブルとを備えている。モードを図略のタスクスイッチで適宜切り替えることで、OSを構成する各プログラムのロードと当該OSの各プログラムのセグメントディスプリクタを管理用GDT,IDTにそれぞれ追加する処理が可能となる。
TSS128は、管理ファイル125内の各管理用のプログラム(タスク)の各々に対応付けて作成されている。すなわち、TSS128は動作状態に応じたプログラムを稼働させるべく、タスクスイッチによって必要なプログラムに実行状態を移し、かつ直前のプログラムの処理内容を対応する個々のTSSにコンテキストすることで、現状復帰を可能にしている。PTE129は、GDT126で作成されたリニアアドレスを物理アドレスに変換するためのもので、各情報(各プログラムコード、各データ、各スタック)について対応して設けられている。
ここで、図18〜図21を用いて、GDT126及びPTE129と、リニアアドレスから物理アドレスへの変換との関係を説明する。まず、端末1が起動する際のモードである16ビットのプログラムで動作するリアルモードでは、セグメント値とオフセット値とを用いてアドレスが決定され、公知のように、セグメント値を4ビットずらした値(16倍した値)にオフセット値を加算することで、最大、(1MB+64KB)までのアドレス(リニアアドレス)が直ちに物理アドレスとして算出できる。一方、それ以上のアドレスに対しては、プロテクトモードが採用されており、例えば32ビットのプログラムで動作する態様では、4GBまでアドレス指定が可能となる。なお、それぞれの情報(タスク)毎に、異なるアドレスを設定することで、仮想アドレス空間が設定できることから、情報(タスク)を所要データ量ずつに分けて、格納することが可能である。
図18は、かかる情報格納態様に対応するもので、情報の格納箇所を示すGDT126の全体概要を示している。GDT126は、例えば8バイト単位で各情報の格納箇所を管理するセグメントディスクリプタのリストである。各セグメントディスクリプタは、4つの属性を有している。属性は、情報の「種別」(プログラムコード、データ、スタック)と、「ベースアドレス」と、「リミット」と、「DPL」である。「ベースアドレス」は、情報のRAM12内における格納基準(スタート)アドレスを示している。「リミット」は、情報のアクセス範囲を示す。DPLは、前述した特権レベルを示す。アドレッシングにおいて採用されるセグメントディスクリプタは、リニアアドレスからの変換に際して使用されるセグメントセレクタの情報を介して選択される。また、タスクのアクセスが許可されるものか否かは、アクセス要求時に、チップセット内に書き込まれたレジスタCS,DS,SSのいずれかのレジスタ内のCPL(Current Privilege Level)及びRPL(Requested Privilege Level)と、GDT126の対応するセグメントディスクリプタとを照合することで決定される。
図19は、PTEのメモリマップを示す。各ページデータは所定のデータ量、例えば4KB毎に分割されており、各ページデータは、物理アドレスとアクセス属性とが設定されている。各ページデータは、プログラムコード、データ、スタックの種類が含まれる。物理アドレスは、リニアアドレスをRAM12内の所定の位置に移動させるためのものである。アクセス属性は、特権レベルに相当するもので、「スーパーバイザー」と「ユーザ」とを有する。「スーパーバイザー」は特権レベルDPL“0”〜DPL“2”に該当し、「ユーザ」は特権レベルDPL“3”に該当する。また、データに該当するページにNX−Bit(Non eXecute Bit)を保有し、当該ページからCPU10に命令コードが発行できなくする。そして、CPU10からのアクセスが特権レベル違反となる場合には、例外割込の一般保護例外(#GP)が発行され、一方、アクセス属性違反となる場合には、ページフォルト(#PF)が発行される。いずれの場合にも、割込ハンドラ130を経てアクセスを無効とする処理が実行される。なお、アクセスの無効とは、アクセス自体をシャットダウンする態様、改変された特権レベル値を正しい値に書き直す態様を含む。
図20は、リニアアドレスから物理アドレスに変換する変換方法を図で示したものである。CPU10で作成された、ある情報をアクセスするためのリニアアドレスは、GDT126のセグメントセレクタとベースアドレス、さらにPTE129の物理アドレスとを用いて物理アドレスに変換されることとなる。図21は、プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示すものである。まず、リアルモードでは、リニアアドレスの0MB〜1MBは、物理アドレスの0MB〜1MBに対応する。この範囲は16ビット仕様であり、両者は一致する。ところで、PTE129は、後述するように管理用(100MB以下の領域)とVM8086用(100MB〜101MBの領域)とが準備される。ここでは、プロテクトモードにおける管理用のアドレッシングについて説明する。すなわち、リニアアドレスの0MB〜1MBを、物理アドレスの100MB〜101MBに対応するようにしている。このように、物理アドレスの100MB(あるいは101MBでもよい)以上の所定の値をPTE129内の管理用側のテーブルの各タスクの物理アドレスの項に設定するようにしている。この物理アドレスの設定により、PTE129のタスク(代表的にはOSのロード、あるいはOSの実行)は、全て100MB(あるいは101MB)以上の設定アドレスにロード、あるいは展開されることになる。換言すれば、PTE129によって100MB(あるいは101MB)以上のあるアドレスにページングされる結果、管理ファイル125及びGDT126、IDT127,TSS128、PTE129、割込ハンドラ130が配置されている100MB以下にアクセスされることはなく、従って、GDT126その他のテーブル内の内容の改変はできず、かつそもそも100MB以下は見えない(存在しない)ことと等価となる。
図16は、100MB〜101MBの領域に0MB〜1MBの内容(実質的に専用ローダと外部デバイス2から新たにロードされたシステムBIOS)がコピーされた状態、及び同領域の所定位置にOSローダ131が作成された状態のメモリマップである。OSローダ131は、例えばダミーデータが書き込まれている位置に、あるいは拡張BIOSが書き込まれている位置に上書きする態様でよい。この100MB〜101MBへの情報の書込処理はVM8086モードで行われる。なお、VM8086モードとは、プロテクトモード実行中に、リアルモードに切り替える処理を行うと管理の煩雑さ等を考慮すれば効率が低下することから、EFLAGSレジスタのVMビットを切り替えてリアルモードのアドレス演算を行うようにし、16ビット用のプログラムを実行可能にするものである。この期間において、当該領域から0MB〜100MBの情報へのアクセスをページングによって無効にしている。
OSローダロード処理部104は、外部デバイス2側のOSローダロード処理部204によってコピーされ、端末1側に読み出される0MB〜1MBの内容をRAM12の100MB〜101MBにロードする処理、及びOSローダをロードする処理を行う。OSローダは、HD12Aから読み取ったMBRと、外部デバイス2から読み取った、後述するブートプログラムコードとから作成される。より具体的には、OSローダロード処理部104は、管理ファイル125内のプログラムであって、HD12Aの0セクタ目から読み出されたMBRのパーティションテーブルから、OSのロード及び起動を行わせるためのプログラムであるPBR(Partition Boot Record)、及びHD12A内のOSの格納アドレス情報を読み取る。また、PBRは、BPB(BIOS Parameter Block)とブートプログラムコードとを含んでいる。この内、BPBはHD12AからOSを読み出すための情報であることから、改変される可能性はなく、そのまま利用する一方、ブートプログラムコートは、固定的で共通であり、また改変の可能性があることから、予め外部デバイス2に準備しているブートプログラムコードをロードして用いるようにしている。そして、OSローダロード処理部104は、BPBと外部デバイス2からロードされたブートプログラムコードとを結合してOSローダ(IPL(Initial Program Loader)とも言う。)131を作成する。この後、専用ローダ処理部102は、CPU10の制御をOSローダ処理部105に渡す(ジャンプする)。
図17は、101MB以上の領域にOSがロードされる状態を示すメモリマップである。なお、図17中、破線で示すOS用GDT132、OS用IDT133は、OSが自己の挙動を記述するためのテーブルを作成しようとしている状況を示している。
OSローダ処理部105は、まず、VM8086モード(すなわちCPL“3”)に設定した状態で、制御レジスタCR3に物理アドレスを設定して、OSローダを起動させてHD12AからOSを構成する各プログラムを順次RAM12の101MB以上の領域にロードするものである。HD12AからロードされてきたOSは、自己の動きを記述するOS用GDT132を作成するべく、チップセットのレジスタGDTRの内容を書き換えようとするLGDT要求を出す。一方、チップセットのレジスタGDTRへのアクセス(書き替え要求)はCPL“0”でのみ許可されるものであるから、OS動作監視部106は、このアクセスに対して、例外割込としての一般保護例外(#GP)を発行する。そして、この一般保護例外は、IDT127を介して、管理ファイル125内の割込ハンドラに移行する。OS動作監視部106は、割込ハンドラ2を介して、プログラムカウンタを用いてCPU10が次に実行するべき命令(プログラム)の格納場所を指すレジスタEIPを参照して、不当なアクセス要求をしているプログラムのアクセスを特定し、レジスタGDTRの書き替えを禁止すると共に、当該不当なプログラムに対し、改変された特権レベルを元の値に書き直す等の割込ハンドラ処理を実行する。また、OS動作監視部106は、この不当なプログラムをGDT126に新たなセグメントディスクリプタとして追加し、特権レベルの項目にDPL“2”を設定し、かつPTE129の管理用のテーブルに新たなページングテーブルとして追加し、物理アドレスとして少なくとも101M(あるいは100M)以上の所定のアドレス値を設定する。これにより、GDT126のアクセス権にDPL“2”に設定されることで、以後、OS側から0MB〜100MB内へのアクセスは不当アクセスとして無効にされ、かつPTE129によってOSからは100M以下の物理アドレス変換が不可能となる。
なお、管理ファイル125は、外部デバイス2が予め格納している特定APを1MB〜100MB内にDPL“0”でロードするようにしている。特定APとしては、操作部13のデバイスドライバ、表示部14のデバイスドライバを制御して特定モード環境で情報処理操作を実行可能にすると共に、必要に応じて特定の会員に対して通信を行うべく外部デバイス2のNIC26のデバイスドライバを制御する。なお、端末1がサーバの場合、外部デバイス2のNIC26のデバイスドライバが少なくとも実行される態様であればよい。
情報処理部107は、前記デバイスドライバを切り替えて汎用のAPモードでの処理と特定APモードでの処理を実行させるものである。ネットワーク通信処理部108は、端末1からの通信と外部デバイス2のNIC26からの会員間、特定サーバ間との通信とをデバイスドライバを用いて切り替制御するものである。動作環境切替部109は、汎用OS環境での処理と特定OS環境での処理とを切り替えるものである。切替指示は、端末1に対する特定操作で行うことができ、例えばキーボード上の特定キー(1又は複数)を押下することで、サイクリックにモード切替指示が可能であり、あるいは個別に別々の操作で各環境を指示する態様でもよい。
続いて、図22〜図27を用いて、端末1の処理手順について説明する。図22は、CPU10によって実行される専用ローダ123の処理を示すフローチャートである。まず、専用ローダ123のロード終了に応じたハードウエア割込の有無が判断され(ステップS101)、ハードウエア割込がなければ、本フローを抜ける。一方、ハードウエア割込があれば、レジスタ群の初期化が行われ、かつ制御レジスタCR0がリアルモードに設定される(ステップS103)。
そして、まず、専用ローダ123によって一時的GDT124が作成され(ステップS105)、次いで、制御レジスタCR0がプロテクトモードに設定される(ステップS107)。そして、一時的GDT124のセグメントリミット値を4GBにしたディスプリクタの内容がチップセットのセグメントレジスタに登録される(ステップS109)。これにより、1MB以上のアドレスが指定可能な状態にされる。続いて、制御レジスタCR0がリアルモードに設定される(ステップS111)。すなわち、制御レジスタCR0をリアルモードに変更すると共に、一時的GDT124のセグメントリミット値を4Gとしたことに対応させてリアルモードの中で1MB以上をアクセス可能にするアンリアルモードが設定できる。
そして、専用ローダ123によって、管理ファイル125、管理用割込ハンドラ(管理ファイル内に含まれている態様でよい)が外部デバイス2から1MB〜100MBの領域にロードされる(ステップS113)。この後、管理用GDT126が外部デバイス2からロードされる(ステップS115)。かかる処理が終了すると、CPU10は制御レジスタCR0をプロテクトモードに設定して(ステップS117)、管理ファイル125にジャンプし、管理ファイル125が起動する。
図23は、CPU10によって実行される管理ファイル125の処理を示すフローチャートである。まず、特権レベルDPL“0”で1MB〜100MBの所定位置に、GDT126、IDT127、TSS128が作成される(ステップS131)。前述したように、TSS128は管理用(100MB以上の領域)とVM8086用(100MB〜101MBの領域)とが作成される。次いで、PTE129が作成される(ステップS133)。PTE129も前述したように、管理用とVM8086用とが作成される。
続いて、0MB〜1MBの領域の内容が100MB〜101MBに複製(コピー)される(ステップS135)。これにより、OSロードに必要なシステムBIOSがロードされる。さらに、100MB〜101MBの適所にOS用ローダが作成される(ステップS137)。この後、CPU10は、管理ファイル125内のOSのロードを処理(監視及び管理)するプログラムにジャンプする(ステップS139)。
図24は、HD12Aの先頭セクタからMBRが100MB〜101MBの所定位置にロードされる(ステップS151)。次いで、MBR内のアクティブなパーティションテーブルからOS(OSを構成する各プログラム)の格納アドレスが取得される(ステップS153)。
そして、HD12AからPBRが100MB〜101MBへロードされ(ステップS155)、次いで、PBRのブートプログラムコードの部分が外部デバイス2からロードされてきたブートプログラムコードと書き替えられ(ステップS157)、PBRのBPBと、書き替えられたブートプログラムコードとが結合される(ステップS159)。このようにして、OSローダが作成される。なお、OSローダは所謂IPLに相当し、このIPLは、周知のようにOS本体をロードする部分のローダプログラムを事前にリアルモードでロードするためのものである。そして、このOS本体をロードするローダプログラムによってOS本体が、例えば分割等されてロードされるが、ここでは、OSローダがOS本体を分割したプログラムを順次ロードするものとして説明する。
図25は、CPU10によって実行される、OSローダ作成後における管理ファイル125の処理を示すフローチャートである。管理ファイル125は、OSローダが作成されると、直ちにOSのロードを監視及び管理するVM8086モードに設定、すなわち特権レベルをDPL“3”に自動的に設定する(ステップS171)。従って、この状態で101MB以上の領域にアクセスされる情報(ここではロードされるOSのプログラム)は、特権レベルCPL“3”で扱われる。
次いで、OS用GDT、IDT及びPTEの作成命令による、チップセットのレジスタGDTR等へのアクセス(GDTRの書き替え要求LGDT等)の有無が判断される(ステップS173)。レジスタGDTR等へのアクセスがあれば、かかるアクセスに対して、アクセス権の正当性が照合されるが、CPL“3”からのアクセスであることから、一般保護例外が発行され(ステップS175)、管理用IDT127から一般保護例外に対応する割込ハンドラ130へのジャンプが実行される(ステップS177)。その結果、割込ハンドラ130でEIPに対して、一時保管された次のジャンプ先がロードされる処理が実行される(ステップS179)。また、このタスクによって、前記レジスタGDTR等へのアクセスが拒否され、いわゆる無効処理が実行される。
続いて、管理用GDT126、管理用PTE129に、今回ロードされてきたOSのプログラムに対応するセグメントディスクリプタが追加される(ステップS181)。さらに、管理用GDT126及び管理用PTE129の特権レベルDPL“0”がDPL“2”に書き替えられ、また、管理用PTE129の物理アドレスの項に101M(あるいは100M)より大きな所定の値が設定、例えば当該例外で受け取ったアドレスを100Mずらして設定される(ステップS183)。
続いて、HD12AからOSを構成する次のプログラムがロードされてきたか否かが判断され(ステップS185)、OSを構成する次のプログラムのロードがなければ、本フローを抜ける。一方、OSを構成する次のプログラムがロードされてきたのであれば、ステップS173に戻って、同様な処理が繰り返され、新しいセグメントディスクリプタとして、管理用GDT126、管理用PTE129に追加される。
一方、ステップS189で、アクセスがあれば、ステップS157に進んで、一般保護例外が発行され、これに基づいて、前述したような割込ハンドラが実行される(ステップS159,S161)。なお、同様に、OSのプログラムによって、APのプログラムがロードされる場合にも同様に処理される。なお、APは特権レベルDPL“3”に設定されているから、新たに追加されるセグメントディスクリプタの特権レベルは、書き替える必要はないが、DPL“3”を積極的に書き込むようにしてもよい。また、ロードされるAPについても、管理ファイル125によって、管理用PTE129の物理アドレスの項に101M(あるいは100M)より大きな所定の値が設定される。
図26は、CPU10によって実行される、OSブート後における管理ファイル125の処理を示すフローチャートである。まず、0MB〜100MBにOS(あるいはAP)のプログラムから管理用GDT126にアクセスがなされたか否かが判断される(ステップS201)。管理用GDT126にアクセスがなければ、本フローを抜ける。一方、管理用GDT126にアクセスがあれば、アクセスしてきたOSの特権レベルとレジスタGDTRの特権レベルとの照合によって一般保護例が発行される(ステップS203)。そして、管理用IDT127から一般保護例外に対応する割込ハンドラ130へのジャンプが実行される(ステップS205)。その結果、割込ハンドラ130の処理が実行される(ステップS207)。ここでの割込ハンドラ130の処理は、管理用GDT126へのアクセスの拒否、あるいはアクセスされたことを想定して、正常な内容に書き直す処理を行うようにしてもよい。
図27は、CPU10によって実行される、処理環境の切替処理を示すフローチャートである。処理環境の切替とは、汎用OS環境での作業と特定OS環境での作業との間の切替をいう。端末1の稼働中において、特定OS環境への切替指示の有無が判断され(ステップS221)、切替指示がなければ、ステップS227に進む。なお、ステップS221は、許可された状態での割込処理としてもよい。そして、ステップS227で、汎用OS環境への切替指示の有無が判断され、切替指示がなければ、本フローを抜ける。
一方、ステップS221で、特定OS環境への切替指示があったのであれば、現在の使用環境が汎用OS環境か否かが判断され(ステップS223)、現在の使用環境が汎用OS環境であれば、特定OS環境に切り替える処理が実行される(ステップS225)。これによって、0MB〜100MB内において特定OS環境の下での情報処理のための操作及びデバイスドライバの制御が行われる。これによって汎用OS環境と区別され、マルウエアが侵入することはない。逆に、現在の使用環境が既に特定OS環境であれば、切替指示は無視されて、本フローが終了する。
また、ステップS227で、汎用OS環境への切替指示のあったのでれば、現在の使用環境が特定OS環境か否かが判断され(ステップS229)、現在の使用環境が特定OS環境であれば、汎用OS環境に切り替える処理が実行される(ステップS231)。逆に、現在の使用環境が既に汎用OS環境であれば、切替指示は無視されて、本フローが終了する。
本実施形態では、外部デバイスとしてPCIで説明したが、本発明は、これに限定されず、また、0MB〜1MBへの専用ローダのロード方式もDMACを採用する実施形態(本発明者が既に提案したPCT/JP2010/58552)に限定されない。例えば、本発明者が既に提案した、PCT/JP2009/57962、PCT/JP2010/68346、日本特許出願2011−235386を適用して専用ローダを強制的に起動メモリ領域にロードする態様でもよい。
上記のうち、PCT/JP2009/57962には、CPUを備える情報処理装置に装着して前記情報処理装置をUSBメモリ等の外部デバイスによってブートする外部ブート方法を開示している。この方法は、外部デバイスの記憶手段に、情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して情報処理装置の主メモリの起動メモリ領域(0MB〜1MB)にマッピングさせるためのMBRであって、情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶されている。そして、ローダは、外部デバイスの分散処理手段によって、MBRの起動に先立って予め設定された個数に分割されていると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報が作成される。
例えば図28を用いて説明すると、図28は、スタック領域1203を割込ベクタテーブル1202に重畳する方法を説明する図である。スタック領域1203には、割込直前の命令内容に関するEFLAG,CS,IPがベースポインタBPから書き込まれる。そこで、このベースポインタBPの位置を、図の矢印で示すように、割込ベクタテーブル1202のベクタ2の上位ビットの位置に一致するように、スタック領域1203を位置設定する。従って、スタック領域1203へのEFLAG,CS,IPの書き込みは、割込ベクタテーブル1202のベクタ2の上位ビットにFLAGが、ベクタ1の下位ビットにCSが、ベクタ1の上位ビットにIPが書き込まれることになる。一方、ベクタ1は、外部割込先となるアドレスを示すものであるから、割込が発生してCPU10がベクタ1を参照し、制御が、ベクタ1に書き込まれているアドレスのプログラムに移行すると、スタック領域1203にその直前の命令内容であるEFLAG,CS,IPが退避して書き込まれる。すなわち、割込ベクタテーブル1202のベクタ1には、IP,CSのアドレス情報が書き込まれることになる。ベクタ1には、その上位ビットにIPが、下位ビットにCSが書き込まれることになる。従って、そのアドレスは、具体的には、IP×16+CSとなる。
すなわち、今、BIOSにマルウエアが潜伏等(あるいはBIOSの立ち上げ中に外部から侵入)していたとして、BIOS起動時にマルウエアが動作して、チップセットのEFLAGSのフラグTFをセットし、割込ベクタテーブル1202のベクタ1にウイルス本体の存在するアドレスが書き込まれている場合を想定する。BIOS起動後、典型的にはMBR起動中に、ある命令が実行され、その後に、CPU10の制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。一方、マルウエアの割込によって、スタック領域1203すなわち割込ベクタテーブル1202のベクタ1には、直前の命令内容を示す内の、情報IP,CSが書き込まれることになる。従って、ベクタ1に元々書き込まれていたマルウエアの格納位置を示すアドレスは書き換えられ、消去されたことになる。かかる方法によれば、マルウエアは、BIOS起動中に仕掛けをした状態において、MBR起動後に一度でも動作した途端、潜伏先のアドレスを失う結果となり、その後の動作が抑止されることになる。次いで、RAM12内の起動メモリ領域120内であって、前記領域1202,1203及びMBR領域を除いた領域にローダがマッピングされる。分割されたローダは、マッピング位置情報に従って、分割数だけ分散配置(展開)される。なお、分割ローダに適宜数のダミーデータを加える態様としてもよい。各分割ローダは、例えば最終ビット位置に、次のマッピング位置情報が書き込まれており、このマッピング位置情報を順次参照することで、ローダ後に元のローダに合成される。この場合、ダミーデータには、その旨の情報が書き込まれておれば、合成時に省く処理が可能となる。このようにして、ローダ、すなわち本発明における専用ローダが適正に0MB〜1MBにロードされる。
また、PCT/JP2010/68346には、CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部デバイスを記載している。この外部デバイスは、前記情報処理装置のBIOSが前記CPUによって前記情報処理装置の起動メモリ領域に書き込まれるように設定された起動プログラムであって、書込後に前記CPUからの一つの命令に基づいて実行され、所定ビット数分のダミーコードを割込ベクタテーブルに上書きして一般保護例外を発生させる第1のプログラム、及び前記一般保護例外の発生によって実行される正常リセット処理のための正常リセットプログラムを割込ハンドラとして設定するための第2のプログラムからなる起動プログラムが記憶された起動プログラム記憶部を備えたものでる。
例えば図29は、ダミーコードの割込ベクタテーブルへの上書き処理、及び一般保護例外に基づく正常リセット処理を説明する図である。まず、ダミーコードを所定のベクタ、特にベクタ0,1,13に上書きする意義について説明する。BIOS動作中にCPU10の制御を一時的に奪ったマルウエアによって割込ベクタテーブルのデータが改竄、特にINT1を規定するベクタ1のデータが書き換えられて、マルウエアの潜伏位置を記述することが考えられる。また、BIOSの動作期間中に、起動メモリ領域120にマルウエアを起動させる異常プログラムが配置されることが考えられる。そこで、割込ベクタテーブルのベクタ1については、書き換えられた可能性のある内容を書き直してマルウエアの挙動を抑止する処理を行わせる必要がある。また、ベクタ13については、起動メモリ領域120上の前記異常プログラムを所定のデータの上書きによって消去するという、正常リセット処理のための割込ハンドラを確実に起動させる処理を行わせる必要がある。割込ハンドラを確実に起動させる処理は、ベクタ13に割込ハンドラ領域12031の先頭アドレスを書き込むこと、及び後述するような一般保護例外を発生させる仕組みを作ることである。
すなわち、ベクタ13の一般保護例外を利用することで、ベクタ13から割込ハンドラ領域12031に自動的に処理が移行する仕組みを構築する。すなわち、(i)ダミーコードの書込アドレスを降順に読み出すためにチップセットのEFLAGSのフラグDFを1にセットし、(ii)降順の書込アドレスが割込ベクタテーブル12021の左端アドレス“0x0000”を下回る不正なアクセスを発生させて一般保護例外を引き起こすようにしている。さらに、(ii)のためには、ベクタ1からベクタ0の方向への、すなわち降順に書込アドレスを生成させる必要がある。そこで、ベクタ0,1,13を含み、かつ不正アクセス用のアドレスを生成させるためには、ダミーコードのビット数は、ベクタ0,1,13の3個のベクタ及び不正アクセスを発生させる少なくとも1ビット分で足りる。なお、ベクタ13とベクタ1,0及び不正アクセス分とは不連続であり、かつダミーコードの割込ベクタテーブルに対する上書き位置が明白となる傾向にある。そこで、より好ましい態様として、本実施形態では、ベクタ13〜0及び不正アクセスの少なくとも1ビット分のデータ量を有するダミーコードを作成し、書込アドレスをベクタ13以上の所定のベクタからスタートさせて、最終的に不正アクセスが発生するように降順に指定するようにしている。
図29は、この状態を示しており、ダミーコードは、所定のビット数、ここでは512ビット(bit)を有するものとし、スタートアドレスは500ビット目としている。なお、512ビットを有するデータ列は、USBメモリ2が一連の動作(REP INS)で読み出し可能なデータ量である。すなわち、矢印(A)で示すように降順にアドレスが生成されていくと、(本実施例では、1アドレスずつ生成するとして)501回目のアクセス時に不正アクセスが発生し、一般保護例外が発生する。一般保護例外が発生すると、CPU10は、矢印(B)に示すようにベクタ13に移動する。ここで、CPU10はベクタ13の記憶内容を読み取り、読み取った内容に一致する起動メモリ領域120のアドレス、すなわち矢印(C)に示すように割込ハンドラ領域12031の先頭アドレスに移動する。そして、CPU10は、割込ハンドラを実行して、正常リセット処理を行う。このダミーコードの上書き処理は、CPU10からの1つの命令によってREP INS処理で行われ、かつ正常リセット処理は、ダミーコードの上書き処理に連続して割込ハンドラによって行われるため、CPU10からの1回の命令で両方の処理が済み、従って、その間、マルウエアがCPU10に介入する機会はない。
今、BIOSにマルウエアが潜伏等(あるいはBIOSの立ち上げ中に外部から侵入)していたとして、BIOS起動中にマルウエアが動作して、EFLAGSのフラグTFをセットし、割込ベクタテーブル12021のベクタ1をマルウエア本体の存在するアドレスに書き換えた場合を想定する。BIOS起動後、典型的にはMBR起動中に、ある命令が実行され、その後に、CPU10の制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。その後、CPU10の制御がBIOSからMBRに渡されると、割込ベクタテーブルのベクタのうち、正常リセットに必要なベクタの内容をダミーコードで書き換えるので、マルウエア本体の存在するアドレス情報は実質削除される。さらに、一般保護例外によって、起動メモリ領域120も正常リセット処理され、仮に潜伏しているマルウエア自身も消去されることになる。すなわち、マルウエアは、BIOS起動中に挙動のための仕掛けをしたとしても、MBRが起動されると、その挙動のための情報が全て消去されることとなり、この結果、その後の挙動が抑止されることになる。
また、日本特許出願2011−235386には、CPU及び前記CPUが実行するプログラムが展開される主メモリを備えると共に、前記主メモリと外部との間でハードウエアによるデータ通信を行う、チップセット内のコントローラを備えた情報処理装置を、前記コントローラを経由して起動に要するデータを前記主メモリに書き込んで起動させる外部デバイスを記載している。
この外部デバイスは、前記情報処理装置のBIOSが前記CPUによって実行されることによって前記主メモリの一部であるアドレス指定が可能な起動メモリ領域に優先して読み出される、データ転送の指示情報を含む1次ローダを記憶する第1の記憶部と、前記1次ローダによる前記データ転送指示を受けて前記起動メモリ領域に順次分割された分割制御データとして読み出される少なくとも割込ベクタテーブル及び2次ローダを含む所定の制御データと前記分割制御データが前記起動メモリ領域に書き込まれる際の書込位置となるアドレスデータとを記憶する第2の記憶部と、前記起動メモリ領域への読出後に起動される前記1次ローダから前記データ転送の指示を受けて、前記第2の記憶部から前記各分割制御データを対応する前記アドレスデータに従って前記コントローラを経由して前記主メモリに順番に読み出すデータ転送部と、前記データ転送処理の終了を受けて前記ハードウエア割込指示信号を前記起動メモリ領域に読み出された前記割込ベクタテーブルに遷移し、前記2次ローダを起動させるべくハードウエア割込を発行させるハードウエア割込指示部とを備えたものである。
例えば図30は、ブートの流れを簡単に説明する。ブート時における情報の流れ及びその手順は、図30中に矢印で示されている。まず、情報処理装置(端末)1の電源投入を受けて、CPU10は、BIOSを起動し、BIOSの処理によってUSBメモリ2から外部MBR1211を取り込む。外部MBR1211の取込が終了すると、CPU10の処理が外部MBR1211に渡されて、外部MBR1211のマスターブートレコードが1次ローダとして機能する。まず、1番目の分割TDデータテーブルTD[1]1212が作成される(図30の矢印(1))。次に、外部MBR1211は、USBホストコントローラに対してインターラプト転送の開始指示(コマンド)を行う(図30の矢印(2))。まず、分割TDデータテーブルTD[1]の1行目のアドレスデータがUSBホストコントローラで取得され、当該アドレスデータと1番目に転送される分割データであるダミーデータ1213とがMCH(MemoryController Hub)、ICHICH(I/O Controller Hub)を経てRAM12に送られて(図30の矢印(3))、当該アドレスに書き込まれる(図30の矢印(4))。以後、CPU10の制御を受けることなく、USBホストコントローラとUSBターゲットコントローラとの間で、USBメモリ2から、分割データを順次取り込むことが可能となり、分割TDデータテーブルTD[1]の5行目のアドレスデータがUSBホストコントローラで取得され、当該アドレスデータと5番目に転送される分割データである分割TDデータテーブルTD[2]とがMCHを経てRAM12に送られて、起動メモリ領域120外の当該アドレス“0x40000”に書き込まれる(図30の矢印(5))。
この分割TDデータテーブルTD[2]の各行のアドレスデータに対応する分割データがUSBメモリ2から順次読み込まれて、起動メモリ領域120に展開される。USBホストコントローラは、分割TDデータテーブルTDが転送される毎に、その分割TDデータテーブルに含まれるアドレスデータを一時保管し、次に転送される分割制御データにアドレスデータを対応付けてMCHに送出するようにしている。MCHは、転送されてきたデータからアドレスデータを取得し、このアドレスに分割制御データ1215を書き込ませる。
ここでは、分割TDデータテーブルTD[2]の1行目のアドレスデータに対応して割込ベクタテーブル1214がUSBメモリ2から読み取られて書き込まれる(図30の矢印(6))。そして、順次、分割TDデータテーブルTD[i]が展開され(図30の矢印(7))、最後の分割TDデータテーブルTD[n]の最下行のアドレスデータに対応する分割データがUSBメモリ2から読み込まれ、起動メモリ領域120に展開されると、同時にMCH経由(CPU10を経由することなく)で、ハードウエア割込指示信号が割込ベクタテーブルのINT“XX”に送信される(図30の矢印(8))。CPU10は、このハードウエア割込指示信号を受けて、割込のコマンドを、分割された特定OSローダの先頭の分割データが展開されている分割制御データ(先頭)1215の基準アドレスにジャンプし(図30の矢印(9))、これによって特定OSローダの実行が開始される。以上の処理によって、インターラプト転送前の起動メモリ領域120に存在するマルウエア等は全て消去される。なお、この実施例における特定OSローダ(制御データ)が、本発明における専用ローダに相当する。
以上の各専用ローダのロード方法は、外部デバイスから行われるものである。そして、起動メモリ領域120に対して、BIOSやMBR内に仮にマルウエアが潜伏していても、かかるマルウエアを消去して行うことを可能にするもので、これによって起動メモリ領域120をクリーンな環境とし、かつこの領域120に外部デバイスから専用ローダ(必要に応じて専用ローダをロードするために必要なテーブル等を含む)をロードすることができる。そして、外部デバイスから起動メモリ領域120に専用ローダがロードされた後、この専用ローダによってロードされる管理ファイルの配置領域に特権レベルの最高乃至は相対的に最高(OS、APのロード領域に設定される特権レベルと比較した場合)を設定することで、管理ファイルをクリーンな環境で起動及び稼働維持させることが可能となる。
次に、図31は、汎用AP及び特定APの実行時における各デバイスドライバ、メモリマップドI/Oの内容及びそれらの処理の流れを説明する図である。
まず、端末1の起動中において、汎用OS134、汎用APa1341…、汎用NICドライバ1351…、特定OS136、特定APa1361…、特定NICドライバ1371…のRAM12への読み出しについて説明する。なお、汎用APa1341…、汎用NICドライバ1351…、及び特定APa1361…、特定NICドライバ1371…は、I/Oデバイスの一つであるNIC16,28を代表して示したものであり、他のI/Oデバイスとして操作部13や表示部14に対応するものが設けられており、さらに図略のプリンタ等にも適用される。
前述したように、汎用OS134、汎用APa1341…、汎用NICドライバ1351…は、端末1のHD12AからRAM12の101MB〜4GBの所定位置に、特権レベルDPL“3”で読み出される。一方、特定OS136、特定APa1361…、特定NICドライバ1371…は、外部デバイス2の特定OS,AP記憶部257及びI/O情報記憶部258からRAM12の1MB〜100MB内の所定位置に読み出される。
本実施形態では、物理的には、メモリマップドI/O17は端末1側にあり、メモリマップドI/O29は外部デバイス2側に設けられている。なお、図31に示すように、メモリマップドI/O17及びメモリマップドI/O29のI/Oレジスタはアドレッシング動作に関しては、図略のメモリコントローラハブ等によって端末1のRAM12の各アドレス域にマッピングされているのと等化に扱われる。
端末1が立ち上がった状態では、本実施形態では、前述したように端末1は汎用OSの環境で動作可能な状態にある。そして、動作環境切替部109によって汎用OS環境と特定OS環境とが択一的に切り替え可能になる。汎用OS環境で動作する汎用AP、及び特定OS環境で動作する特定APを利用しての情報処理は、情報処理部107によって実行される。
ここに、メモリマップドI/Oとは、CPU10がI/Oデバイス(入出力機器)にアクセスするための命令を、RAM12へアクセスするための命令と同一のアドレス空間で扱う方式をいう。メモリマップドI/Oは、I/Oデバイスに対する汎用デバイスドライバ及び特定デバイスドライバに対応するI/Oレジスタで構成されている。CPU10は、かかるI/Oレジスタに動作許可等の情報の読み書きをすることで、対応するI/Oデバイスの制御を行うようにしている。なお、I/Oデバイス制御方法は、メモリマップドI/Oに限定されず、他のマップドI/O方式でもよい。
メモリマップドI/O17は、汎用OS環境でのI/Oデバイスとしての、操作部13、表示部14、NIC16、図略のプリンタ等に対応するもので、例えば、汎用OS環境における各汎用デバイスドライバに対応するそれぞれのI/Oレジスタ171,172,…に分けられている。例えば、I/Oレジスタ171はNIC16の汎用NICドライバ1351に対応し、I/Oレジスタ172は操作部13のデバイスドライバに対応している。
一方、メモリマップドI/O29は、特定OS環境でのI/Oデバイスとしての、操作部13、表示部14、NIC28、図略のプリンタ等に対応するもので、例えば、特定OS環境における各特定デバイスドライバに対応するそれぞれのI/Oレジスタ291,292,293,…に分けられている。例えば、I/Oレジスタ291はNIC26の特定NICドライバ1371に対応し、I/Oレジスタ292は操作部13のデバイスドライバに対応し、I/Oレジスタ293は表示部14のデバイスドライバに対応している。なお、図31において、I/Oレジスタ291がメモリマップドI/O29と分かれて設けられているが、アドレッシングにおいては一体的として機能している。
メモリマップドI/O17,29の各I/Oレジスタは、GDT126及びPTE129によって生成されるアドレスで指定可能にされている。より詳細には、PTE129は、かかる汎用AP及び特定APの個々のタスクに対して、対応するI/Oレジスタのアドレスを指定し得るように、物理アドレスがそれぞれ設定されている。この結果、例えば、汎用APa1341に対しては、NICドライバ1351に対応するI/Oレジスタ171のアドレスを生成することでNIC16の動作制御が可能となり、一方、特定APa1361に対しては、NICドライバ1371に対応するI/Oレジスタ291のアドレスを生成することでNIC26の動作制御が可能となる。このように、PTE129の物理アドレスによって、メモリマップドI/O17、メモリマップドI/O29が個別に、かつそれらの各I/Oレジスタが指定できる。
ところで、本実施形態では、アドレッシングの際におけるメモリマップドI/O17,29の各I/Oレジスタのアドレスとして、例えば32ビットのCPUを想定した場合、最大アドレスが4GBとなることから、4GBから降方向に所要の範囲、例えば4GBから3GBまでの範囲にリンクを設定している。すなわち、アドレス範囲からは、特権レベルDPL“2”又は“3”の範囲に該当する。しかし、メモリマップドI/O17,29の各I/Oレジスタは、前述のようにPTE129に設定されている物理アドレスによって指定されるものであるから、仮に汎用OS環境からマルウエアが特定APに対応するI/Oレジスタの内容を改竄し、マルウエアの意図する状態で電子メールの送信(例えば、別ファイルの送信とか他の送信先の設定)を行わせることは不可能となる。すなわち、汎用OS環境の101MB〜4GBから、特権レベルDPL“0”の1MB〜100MB内のPTE129へのアクセスは、前述したように、一般保護例外としてフックされ、割込ハンドラ130を介して無効とされる。
情報処理部107として、例えば作成したファイルをネットワーク3へ(電子メールで)送出し、指定した送信先に送信する場合を考える。図31に示す矢印(1)〜(4)は、汎用APa1341の電子メール送信の命令が発行された場合の処理の流れを示し、矢印(11)〜(14)は、特定APa1361の電子メールによる特定会員への送信の命令が発行された場合の処理の流れを示している。
汎用APa1341が電子メール処理を行うプログラムに該当するものであるとして、操作部13を介して電子メールの指示(タスク要求)があると、汎用APa1341は汎用NICドライバ1351に電子メール処理(タスク)が指示される(図31の(1)参照)。汎用NICドライバ1351は、電子メール処理のタスクを受けると、GDT126及びPTE129によってメモリマップドI/O17の対応するI/Oレジスタ171のアドレスへのアドレッシング、すなわち対応する物理アドレスが作成される(図31の(2)参照)。そして、メモリマップドI/O17のI/Oレジスタ171の対応するアドレスに対して、動作許可の信号等が書き込まれる(図31の(3)参照)。一方、NIC16側はメモリマップドI/O17のI/Oレジスタ171に対応するアドレスに周期的にアクセスして、動作許可の有無の確認処理を繰り返している(図31の(4)参照)。そして、動作許可が確認されると、電子メールの送信対象ファイルはメモリマップドI/O17のI/Oレジスタ171を経由してNIC16に転送され、所定の暗号化処理等が施され、更にTCP/IP規約に沿って形成されたパケットがネットワーク3に送出される。なお、所定の暗号化処理及びTCP/IPへのパケット変換処理は、NIC16へ転送される前にネットワーク通信処理部108で行われてもよい。
次に、特定APa1361が電子メール処理を行うプログラムに該当するものであるとして、操作部13を介して電子メールの指示(タスク要求)があると、特定APa1361は特定NICドライバ1371に電子メール処理(タスク)が指示される(図31の(11)参照)。特定NICドライバ1371は、電子メール処理のタスクを受けると、GDT126及びPTE129によってメモリマップドI/O29の対応するアドレスへのアドレッシング、すなわち対応する物理アドレスが作成される(図31の(12)参照)。そして、メモリマップドI/O29のI/Oレジスタ291に対応するアドレスに対して、動作許可の信号が書き込まれる(図31の(13)(13’)参照)。一方、NIC26側はメモリマップドI/O29のI/Oレジスタ291に対応するアドレスに周期的にアクセスして、動作許可の有無の確認処理を繰り返している(図31の(14)参照)。そして、動作許可が確認されると、電子メールの送信対象ファイルはメモリマップドI/O29のI/Oレジスタ291を経由して外部デバイス2に転送され、後述するような所定の符号化処理等が施され、更にTCP/IP規約に沿って形成されたパケットがNIC26を介してネットワーク3に送出される。なお、NIC26は有線、あるいは無線LAN等によってISP4と通信可能に接続されている。また、送信されるパケットの先頭領域には、送信元を示すIPアドレス(すなわち、汎用APa1341の場合にはNIC16のIPアドレス、また特定APa1361の場合にはNIC26のIPアドレス)が設定される。
上記において、特定APa1361で電子メール送信を指示する場合に、指定した送信先が会員であるか否かのチェックは、全ての電子メールが会員サーバ5を介して行われる態様では、会員サーバ5に送、少なくとも信先についての会員に関する照合機能を持たせておけば、外部デバイス2に送信先の適性に関して照合等の監視処理が不要となり、会員情報を持たなくて済むこととなる。
次に、受信の場合、NIC16における受信と、NIC26における受信とがある。NIC16でファイルが受信された場合、従来同様の方法で処理される。すなわち、NIC16のバッファ(図略)に一時的に保管され(あるいはHD12Aに格納され)、(TCP/IP形式のパケットが元のデータに戻され、かつ復号化処理が施されて)ファイルの先頭情報から送信元情報、テーマ乃至件名情報等が抽出される。そして、汎用APa1341が選択されると、電子メール画面に切り替わって受信リストが表示され、当該電子メールが選択されると、その開封処理が実行されて表示部14に本文が表示される。
一方、NIC26でファイルが受信された場合、NIC26のバッファに一時的に保管され、(TCP/IP形式のパケットが元の形式のデータに戻され)ファイルの先頭情報から送信元情報、テーマ乃至件名情報等が抽出される。そして、特定OS環境(汎用OS環境から特定OS環境に切り替えられた状態も含む)で、NIC26で受信された受信リストが表示され、当該電子メールが選択されると、後述の復号化処理が施されるようになっている。
以下、特定APでの電子メールの対象となるファイルに施されるデータ処理(符号化、復号化)について簡単に説明しておく。データ処理(符号化、復号化)については、例えば、本発明者が既に提案した(PCT/JP2010/67756)技術が採用可能である。すなわち、送信対象となるファイルをデータ処理回路28を利用して3枚の画像の情報に埋め込む符号化処理を行うもので、可及的に情報を白黒の一方側に変換するものである。
図32は、例えば論理式:XOR(D,ONOR(G,S))で構成されるデータ処理回路28(図3参照)の一例を示す回路図である。図32は、データ処理回路28の一実施形態を示す1ビット分の回路図である。データ処理回路28は、所要数の論理回路、例えば排他的論理和回路XORを備えている。ここでは、3種類の画像G1,G2,G3に順次対応させるべく、3個のXOR282,284,286が採用されている。また、本実施形態では、XOR282,284,286の各前段に排他的論理和を否定する回路ONOR281,283,285が接続されている。回路ONORの真理値表は、特定の一方入力端の値が“1”で、他方入力端の値が“0”の状態にあるときのみ、出力端に“1”を出力するものである。
図32では、ONOR281は、その特定入力端に調整値S1が入力され、他方入力端に対象ファイルの原データD0が入力され、そして出力端からデータD0’が中間データとして出力されている。調整値S1〜S3は例えば所定値として作成されるもので、データ処理回路28の最終段からの出力データD3の値に後述する制限を付与するものである。XOR282は、その一方入力端にONOR281の中間データD0’が入力され、他方入力端に画像データG1が入力され、出力端から中間データD1が出力されている。ONOR283は、その特定入力端に調整値S2が入力され、他方入力端にXOR282からの中間データD1が入力され、出力端から中間データD1’が出力されている。XOR284は、その一方入力端にONOR283の中間データD1’が入力され、他方入力端に画像データG2が入力され、出力端から中間データD2が出力されている。ONOR285は、その特定入力端に調整値S3が入力され、他方入力端にXOR284からの中間データD2が入力され、出力端から中間データD2’が出力されている。XOR286は、その一方入力端にONOR285の中間データD2’が入力され、他方入力端に画像データG3が入力され、出力端から出力データD3が出力されている。すなわち、図32の論理回路は、論理式:XOR(D,ONOR(G,S))で表現できる。ここに、Dは原データ及び中間データの総称、Gは画像データの濃度データの総称である。
なお、画像データは、互いに異なる少なくとも2種以上の所要枚数、例えば3種の画像が電子化されて、好ましくは予め外部デバイス2内に記憶されている。本実施形態では、外部メモリ等から取り込んだり、カメラ等の撮像手段で撮像されたりした3種類の写真画像で、例えば3種類(R(赤),G(緑),B(青))の色成分毎の濃度の行列方向のピクセル毎の画像データとして記憶されている。各色成分の濃度は、処理対象のファイルデータの前記素データと同一ビット数、ここでは8ビットである。また、調整値Sの範囲は、8ビットかつ素データの最大値が16である本実施形態の場合、“128”〜“240”となる。
なお、データ処理回路28としては、他に、論理式:XOR(OR(D,S),OR(G,S))を利用したものでもよい。また、論理式:XOR(ONOR(D,S),OR(G,S))を利用したものでもよい。なお、後者の場合、最終段については、論理式(最終段):XOR(D,OR(G,S))を使用する。また、データ処理回路28は受信ファイルの復号化用(解凍用)を含み、これらの論理式で構成される回路の逆回路が採用されている。
図33は、埋込処理の具体例を示す説明図である。図33の上側には、上から順に「入力文字」、「バイナリ(SJIS)」、「Bit」、「素データ」が例示されている。図33の中央左側のテーブルは、3枚の画像データの対応するピクセルの色成分値データ、ここでは色成分濃度データを示している。ここでは、説明の便宜上、3色の全ての開始ピクセルPsをPs(1,1)とする。ここで、素データについて説明する。ファイルデータがテキストデータであって、各文字が2byteで規定されるコードデータである場合で説明すると、コードデータを上位側の1byteと下位側の1byteとに分割する。さらに、これらの各1byteをそれぞれ上位、下位の4ビットに分割(以上、分割処理)する。各4ビットの上位側に4ビットを追加して(ビット追加処理)、8ビットの素データを生成する。例えば、図32において、入力文字“○”を表す2byteのコードデータが「10001100 11000011」である場合、素データは、上記方法に従って作成すれば、「00001000」、「00001100」、「00001100」、「00000011」の4個となる。そして、かかる素データを数値に置換すると、“8”,“12”,“12”,“3”となる。なお、素データの取り得る最大値は、本実施形態では4ビットである“15”とする。
図33の中央には、テーブル(A)、(B)が記載されている。テーブル(A)はデータD0が埋め込まれる場合であり、テーブル(B)はダミーコードが埋め込まれる場合である。テーブル(A)、(B)は、横方向にRGB色成分(に対応する各論理回路)が設定され、縦方向に画像データG1,G2,G3のPs(1,1)の色成分濃度データとの論理結果であるデータD1,D2,D3(図33参照)の内容を示している。
例えば、テーブル(A)において、調整値Sが“240”の場合、データD0の先頭データ“8”に対して、画像データG1のPs(1,1)のR(1,1)が“136”、画像データG2のPs(1,1)のR(1,1)が“56”、画像データG3のPs(1,1)のR(1,1)が“251”としたとき、中間データD1は“0”となり、さらに中間データD2は“8”となり、そして、出力データD3は“3”となる。同様に、2番目のデータ“12”に対しては、画像データG1のPs(1,1)のG(1,1)が“210”、画像データG2のPs(1,1)のG(1,1)が“30”、画像データG3のPs(1,1)のG(1,1)が“67”としたとき、中間データD1は“14”となり、さらに中間データD2は“0”となり、そして、出力データD3は“3”となる。同様に、3番目のデータ“12”に対しては、画像データG1のPs(1,1)のB(1,1)が“34”、画像データG2のPs(1,1)のB(1,1)が“0”、画像データG3のPs(1,1)のB(1,1)が“89”としたとき、中間データD1は“14”となり、さらに中間データD2は“14”となり、そして、出力データD3は“7”となる。
一方、テーブル(B)では、色成分Rに対応するダミーデータ“26”に対して、データD1は“18”となり、さらに中間データD2は“26”となり、そして、出力データD3は“17”となる。同様に、色成分Gに対応するダミーデータ“22”に対して、データD1は“20”となり、さらに中間データD2は“26”となり、そして、出力データD3は“25”となる。同様に、色成分Bに対応するダミーデータ“17”に対して、データD1は“19”となり、さらに中間データD2は“19”となり、そして、出力データD3は“26”となる。
上記によれば、ダミーデータは、それ自体及び出力データD3が“16”を超える値となるようにしている。また、画像データG1は、R(1,1)が“136”、G(1,1)が“210”、B(1,1)が“34”であるところ、データ処理回路28の出力データD3は、テーブル(A)のように、R対応分が“3”、G対応分が“3”、B対応分が“7”であるから、出力データD3からなる結果の画像は濃度データが小さい。同様に、テーブル(B)でも、R対応分が“17”、G対応分が“25”、B対応分が“26”であるから、出力データD3からなる結果の画像は、画像データG1〜G3に比して濃度データが小さい。従って、画面上では輝度の低い暗い画像となり、また記録紙に黒色に近い色でプリントアウトされてほとんど解読ができないものとなるという特徴を有する。
なお、本発明は、以下の態様を採用することが可能である。
(1)本実施形態では、外部デバイスとしてPCIを想定したもので説明したが、これに限定されず、少なくとも、CPU及びROM、RAMを内蔵したものであればよい。また、DMACを備えているデバイスであればよい。例えばUSB(Universal Serial Bus)メモリチップ、ICカードを改良した対応でもよいし、携帯型の通信機器に内蔵された態様であってもよい。
(2)本実施形態では、管理ファイル125等を格納するためのセキュア領域(特権レベルDPL“0”)を1MB〜100MBと設定したが、これに限定されず、管理ファイル125及び他の必要な管理テーブル等の格納が可能なメモリ容量分があればよく、例えば1MB〜数MBのメモリ容量であってもよい。また、領域0MB〜1MBについてもセキュア領域(特権レベルDPL“0”)としたことで、0MB〜100MBを同質のセキュア領域として扱うことができる。
(3)本実施形態ではネットワーク3と通信するものとしてNIC16,26を採用したが、本発明においてはNICをネットワーク通信処理を行うI/Oデバイスの総称として扱っている。
(4)本実施形態では、外部デバイス2に特定OS及び特定APと共に特定NICドライバ1371やメモリマップドI/O29を設けたが、特定OS及び特定APと、特定NICドライバ1371やメモリマップドI/O29とを別の外部デバイスに設ける態様としてもよい。この場合、例えば、特定OS及び特定APが端末1側に立ち上がった後、特定NICドライバ1371が読み込ませる態様とすることができる。
1 端末(情報処理装置)
10,20 CPU
107 情報処理部
108 ネットワーク通信処理部
12 RAM(主メモリ)
12A ハードディスク(HD)
120 起動メモリ領域
1351 汎用NICドライバ
1371 特定NICドライバ
16 NIC(装置側NIC)
17,29 メモリマップドI/O
171,172 I/Oレジスタ
291,292,293 I/Oレジスタ
2 外部デバイス
253 管理ファイル記憶部(第1の記憶手段の一部)
254 システムテーブル記憶部(第1の記憶手段の一部)
257 特定OS,AP記憶部(第1の記憶手段)
258 I/O情報記憶部(ドライバ記憶手段)
26 NIC(外部側NIC)
28 データ処理回路
10,20 CPU
107 情報処理部
108 ネットワーク通信処理部
12 RAM(主メモリ)
12A ハードディスク(HD)
120 起動メモリ領域
1351 汎用NICドライバ
1371 特定NICドライバ
16 NIC(装置側NIC)
17,29 メモリマップドI/O
171,172 I/Oレジスタ
291,292,293 I/Oレジスタ
2 外部デバイス
253 管理ファイル記憶部(第1の記憶手段の一部)
254 システムテーブル記憶部(第1の記憶手段の一部)
257 特定OS,AP記憶部(第1の記憶手段)
258 I/O情報記憶部(ドライバ記憶手段)
26 NIC(外部側NIC)
28 データ処理回路
Claims (9)
- 情報処理装置のブート時にハードディスクから主メモリに読み出された汎用OSの環境で動作する汎用アプリケーションからの指示を受けてネットワークに通信対象ファイルの送出を行う場合に、前記情報処理装置に設けられている装置側NICを経由して行う汎用通信ステップと、
前記情報処理装置に着脱可能に接続された外部デバイスから外部ブートによって前記主メモリに読み出された特定OSの環境で動作する特定アプリケーションからの指示を受けて前記ネットワークに通信対象ファイルの送出を行う場合に、前記外部デバイスに設けられている外部側NICを経由して行う特定通信ステップとを択一的に行うことを特徴とするファイル通信処理方法。 - 前記情報処理装置の起動後に、外部からの切り換え操作を受け付けて、前記汎用OSの環境と、前記特定OSの環境とを択一的に切り替える切替ステップを備えることを特徴とする請求項1記載のファイル通信処理方法。
- 前記主メモリは、第1の領域と第2の領域とに区分され、前記第1の領域に前記特定OS及び前記特定アプリケーションが読み出され、前記第2の領域に前記汎用OS及び前記汎用アプリケーションが読み出され、前記第1の領域に前記第2の領域より相対的に高い特権保護レベルが設定されていることを特徴とする請求項1又は2に記載のファイル通信処理方法。
- 前記特定通信ステップは、前記第1の領域に展開されている、前記外部側NICの動作を制御する特定デバイスドライバから、前記外部側NICに対して動作許可を指示するマップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスし、前記汎用通信ステップは、前記第2の領域に展開されている、前記装置側NICの動作を制御する汎用デバイスドライバから、前記装置側NICに対して動作許可を指示するマップドI/Oの対応するI/Oレジスタにページング処理を介して得られる物理アドレスでアクセスすることを特徴とする請求項3記載のファイル通信処理方法。
- ネットワークに通信対象ファイルの送出を行う装置側NICを備える情報処理装置に着脱可能に接続される外部デバイスにおいて、
通信対象ファイルの前記ネットワークへの送出を行うための外部側NICと、
特定アプリケーションの内、通信対象ファイルの送信に係るアプリケーションからの指示を受けて前記外部側NICに前記通信対象ファイルの転送処理を行う特定デバイスドライバが前記主メモリに読み出し可能に記憶されるドライバ記憶手段と、
前記特定デバイスドライバから、ページング処理を介して得られる物理アドレスで前記外部側NICに対して動作許可を指示するI/Oレジスタを有するマップドI/Oとを含むことを特徴とする外部デバイス。 - 前記情報処理装置のハードディスクから読み出された汎用OS及び前記汎用OSの環境で動作する汎用アプリケーションとは異なる特定OS及び前記特定OSの環境で動作する特定アプリケーションが、外部ブート時に前記情報処理装置の主メモリに読み出し可能に記憶される第1の記憶手段を備えることを特徴とする請求項5に記載の外部デバイス。
- 前記情報処理装置の起動時に、前記第1の記憶手段及びドライバ記憶手段の内容を前記主メモリに読み出すロード手段を含むことを特徴とする請求項6に記載の外部デバイス。
- 前記主メモリは、第1の領域と第2の領域とに区分され、
前記ロード手段は、前記第1の領域に前記特定OS及び前記特定アプリケーションを読み出し、前記第2の領域に前記汎用OS及び前記汎用アプリケーションを読み出すもので、
前記第1の記憶手段には、さらに、前記第1の領域に前記第2の領域より高い特権保護レベルを設定する特権処理ファイルが記憶されていることを特徴とする請求項7に記載の外部デバイス。 - 前記ロード手段は、前記外部側NICを動作させる特定デバイスドライバを前記第1の領域に読み出すものであることを特徴とする請求項8に記載の外部デバイス。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011258482A JP2013114367A (ja) | 2011-11-28 | 2011-11-28 | ファイル通信処理方法及び外部デバイス |
PCT/JP2012/080137 WO2013080848A1 (ja) | 2011-11-28 | 2012-11-21 | ファイル通信処理方法及び外部デバイス |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011258482A JP2013114367A (ja) | 2011-11-28 | 2011-11-28 | ファイル通信処理方法及び外部デバイス |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013114367A true JP2013114367A (ja) | 2013-06-10 |
Family
ID=48535309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011258482A Pending JP2013114367A (ja) | 2011-11-28 | 2011-11-28 | ファイル通信処理方法及び外部デバイス |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2013114367A (ja) |
WO (1) | WO2013080848A1 (ja) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005072759A (ja) * | 2003-08-21 | 2005-03-17 | Sony Corp | 送信装置および方法、受信装置および方法、通信装置および方法、並びにプログラム |
JP4342576B2 (ja) * | 2006-07-25 | 2009-10-14 | 株式会社エヌ・ティ・ティ・ドコモ | 複数オペレーティングシステム切替制御装置及びコンピュータシステム |
JP2008158710A (ja) * | 2006-12-22 | 2008-07-10 | Hitachi Ltd | 計算機システム |
JP2009000889A (ja) * | 2007-06-21 | 2009-01-08 | Kyocera Mita Corp | セキュリティ管理方法、画像形成装置及び認証方法 |
JP5195756B2 (ja) * | 2007-08-24 | 2013-05-15 | 富士通株式会社 | Pciデバイスのi/o空間要求抑止方法 |
JP5260081B2 (ja) * | 2008-02-25 | 2013-08-14 | パナソニック株式会社 | 情報処理装置及びその制御方法 |
JPWO2011145199A1 (ja) * | 2010-05-20 | 2013-07-22 | 順子 杉中 | 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム |
-
2011
- 2011-11-28 JP JP2011258482A patent/JP2013114367A/ja active Pending
-
2012
- 2012-11-21 WO PCT/JP2012/080137 patent/WO2013080848A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2013080848A1 (ja) | 2013-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4498735B2 (ja) | オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム | |
JP5512610B2 (ja) | 非ファームウェアエージェントからメモリへのアクセスを許可または阻止する方法、システム、および機械可読記憶媒体 | |
JP6306578B2 (ja) | メモリ保護装置及び保護方法 | |
CN110785759B (zh) | 用于多核处理器的远程认证 | |
US20080034350A1 (en) | System and Method for Checking the Integrity of Computer Program Code | |
WO2011145199A1 (ja) | 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム | |
US20070276969A1 (en) | Method and device for controlling an access to peripherals | |
WO2003085498A2 (en) | System and method for resetting a platform configuration register | |
JP2011508292A (ja) | プロセッサから周辺機器へのセキュア動作モードアクセス特権の譲渡のための方法及び装置 | |
JP6370098B2 (ja) | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 | |
WO2013069587A1 (ja) | 情報処理空間管理方法、外部デバイス及び情報処理装置 | |
EP2570956A1 (en) | External boot device, external boot program, external boot method and network communication system | |
EP1843250B1 (en) | System and method for checking the integrity of computer program code | |
CN113268447A (zh) | 计算机架构及其内的访问控制、数据交互及安全启动方法 | |
EP4231159A1 (en) | Method for switching execution environment and related device | |
WO2013080848A1 (ja) | ファイル通信処理方法及び外部デバイス | |
WO2012053053A1 (ja) | 外部ブートデバイス及びネットワーク通信システム | |
WO2013061782A1 (ja) | 外部ブートデバイス及び外部ブート方法 | |
JP6085320B2 (ja) | プロセッサ、プログラム、システム及び方法 | |
Degani et al. | μ IPS: Software-Based Intrusion Prevention for Bare-Metal Embedded Systems | |
CN118427147B (zh) | 基于eSPI的服务器主板的安全启动方法及相关设备 | |
JP6480403B2 (ja) | 装置 | |
Stüttgen | On the viability of memory forensics in compromised environments | |
JP2024513716A (ja) | 読み取り専用メモリ(rom)のセキュリティ | |
JP2024515450A (ja) | 読み取り専用メモリ(rom)のセキュリティ |