JP2013101550A - 情報処理空間管理方法、外部デバイス及び情報処理装置 - Google Patents

情報処理空間管理方法、外部デバイス及び情報処理装置 Download PDF

Info

Publication number
JP2013101550A
JP2013101550A JP2011245631A JP2011245631A JP2013101550A JP 2013101550 A JP2013101550 A JP 2013101550A JP 2011245631 A JP2011245631 A JP 2011245631A JP 2011245631 A JP2011245631 A JP 2011245631A JP 2013101550 A JP2013101550 A JP 2013101550A
Authority
JP
Japan
Prior art keywords
area
access
loader
external device
information
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
Application number
JP2011245631A
Other languages
English (en)
Inventor
Junko Suginaka
順子 杉中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to JP2011245631A priority Critical patent/JP2013101550A/ja
Priority to PCT/JP2012/078575 priority patent/WO2013069587A1/ja
Priority to TW101141107A priority patent/TW201333748A/zh
Publication of JP2013101550A publication Critical patent/JP2013101550A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Abstract

【課題】BIOS起動に応じて主メモリ内の第1領域にセキュア領域を構築すると共にアクセス保護情報に差を持たせて、第2領域からの不当なアクセスを無効化し、主メモリ内にセキュア領域を確保する。
【解決手段】BIOSの起動に応じて外部デバイスからRAM12の0MB〜1MBに専用ローダ123をロードする専用ローダロードステップと、RAM12の1MB〜100MBにDPL“0”(最高特権レベル)を設定し、かつRAM12の101MB〜4GBへロードされるOSの1MB〜100MBへのアクセスを監視するための管理ファイルを専用ローダ123によって外部デバイスから1MB〜100MBにロードする管理ファイルロードステップと、管理ファイルのロードからOSのロードまでの間に、DPL“2”又はDPL“3”を101MB〜4GBに設定するアクセス保護情報設定ステップとを備えた。
【選択図】図4

Description

本発明は、情報処理を行う端末、サーバ等のコンピュータ内蔵の情報処理装置等に対する、高セキュリティの情報処理空間管理技術に関する。
近年、インターネット等のネットワークに接続されたサーバや端末(パーソナルコンピュータ)等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限(アドレス制限)の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
特許文献1には、情報処理装置のハードディスク内に格納されたOS(Operation System)起動方法が記載されている。より詳細には、情報処理装置の電源投入が検知されると、フラッシュメモリに記憶されているBIOS(Basic Input/Output System)を起動して起動可能なブートデバイスを検索し、USB(Universal Serial Bus)メモリに格納されているブートOSを起動して、まず表示手段にパスワードの入力画面を表示させる。次いで、この入力画面に対して入力手段からのパスワードの入力を受け付ける。パスワードが入力されると、入力パスワードとUSBメモリに固有な情報とを連結してハッシュ値に変換し、起動すべきハードディスクのロック解除パスワードを生成する。そして、起動するハードディスクがセキュリティ設定済みであると判断した場合には、前記ロック解除パスワードで前記ハードディスクのロック状態を解除する一方、前記ハードディスクがセキュリティ設定済みではないと判断した場合には、前記ハードディスクのセキュリティを設定し、ロック状態が解除された前記ハードディスクのMBR(Master Boot Record)を起動し、OSのブートローダを起動し、これによってOSを起動する方法である。これにより、OS起動時のセキュリティ認証が可能になる。また、特許文献1には、前記ハードディスクのロック状態が解除された状態で、USBメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されている。
また、特許文献2には、起動プログラムの実行方法が記載されている。より詳細には、パーソナルコンピュータからハードディスクに対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタに先立ってセキュリティ等の任意プログラムを格納した仮起動セクタを読み出し、該任意プログラムを実行させる起動前処理ステップを有するようにしたものである。そして、このセキュリティ等の任意プログラムの実行後に本来の起動プログラムを実行してOSを起動させるものである。これにより、パーソナルコンピュータのBOISや記憶媒体の起動セクタ(LBA0)を変更することなく、OS起動に先立ってセキュリティ等の任意のプログラムの実行を可能としている。
特許文献3には、オペレーティングシステムにオペレーティングシステム特権モードを設定すると共にユーザアプリケーションにユーザ特権モードを設定し、仮想マシン及び特権モードを用いてウイルス対策が講じられたコンピュータデバイスが記載されている。このコンピュータデバイスには、さらに、仮想マシンモニタ特権モードが設定された仮想マシンモニタ(VMM)及び保護エージェント特権モードが設定された保護エージェント(VM)が設けられており、特権レベルは、仮想マシンモニタ特権モード、保護エージェント特権モード、オペレーティングシステム特権モード、ユーザ特権モードの順でアクセス権の強さが設定されている。従って、悪意者によって作成され、オペレーティングシステムに送り込まれたマルウエアが、特権モードが上位である保護エージェントに対してアクセスしても、かかるアクセスを受け付けず、保護エージェントの内容を改変することを阻止している。そして、マルウエアによってオペレーティングシステム内の資源(SSDT、GDT、IDT等)の改変、また保護エージェントの資源の改変が検知されると、システムをシャットダウンし、リブートすることで改変をリセットするようにしていた。
特開2007−66123号公報 特開2006−236193号公報 特表2010−517164号公報
特許文献1は、パスワード入力画面に対してパスワードを入力する態様であるためパスワードの盗難の虞があることから、USBメモリの固有情報と結合してハッシュ値を作成し、ロック解除情報とする個人認証技術である。また、特許文献1には、USBメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されているが、具体的な記載は一切ない。
一方、特許文献2では、ハードディスク内の仮起動セクタの任意プログラムがウィルスチェックプログラムである場合においても、そのプログラムが実行される前に、例えばRootkitの形態を有するような不正プログラムが起動され、任意プログラムから自身(不正プログラム)を隠蔽することも可能であるため、ウイルスチェックに対する信頼性に一定の限界がある。また、特許文献2にはOS起動前にウイルスを監視する具体的な方法は一切記載されていない。電源投入前から潜伏していたウイルスを仮に発見し得るとしても、再起動(OS起動)後にはウイルスチェックは行われていないため、再起動中に侵入するウイルス対して依然として無防備の状態にある。さらに、特許文献1、2はパーソナルコンピュータ側で処理を担う一般的態様であるから、この点からしても高い信頼性を確保するには限界がある。
また、特許文献3は、順次異なる特権レベルを設定してオペレーティングシステムから侵入するマルウエアの不正アクセスを阻止する仮想マシンモニタ及び保護エージェントを利用したものである。しかしながら、特許文献3には、仮想マシン及び特権レベルの差を利用したアクセス阻止が説明されているのみで、コンピュータデバイスメモリのメモリマップに関しては何等記載されておらず、内容の改変が検出可能な仕組みまで開示されているとはいえない。また、特許文献3はオペレーティングシステムのマルウエアを対象としているが、その他の種類、主にはコンピュータデバイスの起動前から例えばBIOSやMBRに潜伏していた場合等には、例えばオペレーティングシステムより上位の部分が、起動時に潜伏マルウエアによって改変され得るが、かかる場合の対策に関しては何等示されていない。特に、仮想マシンモニタ及び保護エージェントのインストール方法に関しては何等記載がなく、これら自体のセキュリティ性の確保は不明である。さらに、内部資源が改変された場合にシャットダウンし、リブートし得たとしても、それで不備の事情が完全に改善されるものでもない。
本発明の目的は、情報処理装置の起動に連動して主メモリの一部領域にロードされ、オペレーティングシステムからアクセス権限の高い、この一部領域への不当アクセスを制限した高セキュリティの情報処理空間管理技術を提供することにある。
本発明に係る情報処理空間管理方法は、BIOSの起動に応じて外部デバイスから主メモリの起動メモリ領域に専用ローダをロードする専用ローダロードステップと、前記主メモリの一部の第1領域に対して保護特権を設定し、かつ前記主メモリの前記第1領域及び起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)の前記第1領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第1領域にロードする管理ファイルロードステップと、前記管理ファイルのロードから前記OSのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第2領域に設定するアクセス保護情報設定ステップとを備えたことを特徴とするものである。
また、本発明に係る外部デバイスは、接続された情報処理装置にファイルのロードを行う外部デバイスにおいて、BIOSの起動に応じて主メモリの起動メモリ領域にロードする専用ローダと、主メモリの一部の第1領域に対して保護特権を設定し、かつ前記主メモリの前記第1領域及び前記起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)の前記第1領域へのアクセスを監視するためのファイルであって前記第1領域にロードされる管理ファイルと、前記管理ファイルのロードから前記OSのロードまでの間にロードされ、前記保護特権より低いアクセス権限のアクセス保護情報を前記第2領域に設定するアクセス保護情報設定ファイルとを含むことを特徴とするものである。
また、本発明に係る情報処理装置は、ワークメモリである主メモリを有し、接続された外部デバイスから所定のファイルを前記主メモリにロードする情報処理装置において、BIOSの起動に応じて前記外部デバイスから前記主メモリの起動メモリ領域に専用ローダをロードする専用ローダロード部と、前記主メモリの一部の第1領域に対して保護特権を設定し、かつ前記主メモリの前記第1領域及び起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)の前記第1領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第1領域にロードする管理ファイルロード処理手段と、前記管理ファイルのロードから前記OSのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第2領域に設定するアクセス保護情報設定手段とを備えたことを特徴とするものである。
これらの発明によれば、情報処理装置の電源が投入されると、BIOSが起動する。このBIOSの起動に応じて、情報処理装置に接続されている外部デバイスから主メモリの起動メモリ領域に専用ローダがロードされる。次いで、前記主メモリの一部の第1領域に対して保護特権が設定される。かつ前記主メモリの前記第1領域及び起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)が、例えばマルウエアに感染しているような場合に、第2領域から第1領域へアクセスがあったかどうかを監視するための管理ファイルが前記専用ローダによって前記外部デバイスから前記第1領域にロードされる。そして、前記管理ファイルのロードから前記OSのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報が前記第2領域に設定される。すなわち、本発明は、BIOSの起動に応じて外部デバイスから専用ローダをロードするようにしたので、情報処理装置内のBIOSやMBRに潜伏しているマルウエアの挙動を抑止して専用ローダを起動メモリ領域にクリーンのままロードすることが可能となる。そして、クリーンな専用ローダによって管理ファイルが同外部デバイスからロードされるので、保護特権の適正な設定及び不当アクセスの適正な監視が確保される。従って、マルウエアに感染したOSのプログラムが複製を行う等の目的でアクセスを企てて第2領域から第1領域に侵入してきても、アクセス保護情報の差によって、確実にフック(検知)され、かかる不当なアクセスは無効にされる。
請求項2記載の発明は、請求項1に記載の情報処理空間管理方法において、前記専用ローダロードステップは、前記起動メモリ領域を更新的に前記専用ローダをロードすることを特徴とする。この構成によれば、起動メモリ領域にマルウエアが潜伏し、あるいはフックのためのアドレスが記述されていても、これらの上に専用ローダを上書き等することで、結果的にマルウエアの挙動を抑止することが可能となる。
請求項3記載の発明は、請求項2に記載の情報処理空間管理方法において、前記専用ローダのロードは前記主メモリの前記起動メモリ領域の全体に強制的に行うことを特徴とする。この構成によれば、専用ローダは起動目盛領域の全域に対して強制的にロードされるので、潜伏マルウエアの挙動を抑止することが可能となる。
請求項4記載の発明は、請求項1〜3のいずれかに記載の情報処理空間管理方法において、前記第1領域と前記起動メモリ領域とは同一の保護特権が設定されていることを特徴とする。この構成によれば、これにおり、専用ローダについても高い保護特権が設定されることとなる。
請求項5記載の発明は、請求項1〜4のいずれかに記載の情報処理空間管理方法において、前記前記起動メモリ領域は、0MB〜1MBであることを特徴とする。この構成によれば、本技術は専用の情報処理装置に限らず、汎用の情報処理装置(パーソナルコンピュータやサーバ類)にも適用可能となる。
請求項6記載の発明は、請求項1〜5のいずれかに記載の情報処理空間管理方法において、前記管理ファイルは、前記OS内の各プログラムのアクセス保護情報が登録されたGDT(Global Descriptor Table)を有し、前記第2領域から前記第1領域へアクセスされた前記OS内のプログラムに対して、前記GDTに登録されているアクセス保護情報を参照して前記一般保護例外を発行する処理を含むことを特徴とする。この構成によれば、アクセスされてきたOS内のプログラムに対応するGDTのセグメントディスクリプタのアクセス保護情報を参照することで、一般保護例外を発行することができ、これによって当該不当なアクセスは無効化される。
請求項7記載の発明は、請求項6に記載の情報処理空間管理方法において、前記管理ファイルは、前記第2領域から前記第1領域への前記OS内のプログラムのアクセスに対して、前記一般保護例外を発行し、IDT(Interrupt Descriptor Table)を介して割込ハンドラによって前記アクセスを無効にする処理を含むことを特徴とする。この構成によれば、OSによる第1領域へのアクセスが一律に無効化される。
請求項8記載の発明は、請求項1〜7のいずれかに記載の情報処理空間管理方法において、前記GDTで生成されたリニアアドレスはPTE(Page Table Entry)を用いて物理アドレスに変換されるもので、前記PTEは、前記GDTで生成されたリニアアドレスに加算される、少なくとも前記第2領域内アドレス値が設定されたものであることを特徴とする。この構成によれば、ページングによって物理アドレスは必ず第2領域内となるので、第2領域から第1領域へのアクセス自体が不可能となる。
請求項9記載の発明は、請求項8に記載の情報処理空間管理方法において、前記PTEは、前記OSの各プログラムに対するアクセスレベル属性情報が登録されており、前記第2領域からの前記OSのプログラムのアクセスに対して前記PTEを介してページフォルトを発行し、IDTを介して前記割込ハンドラによって前記アクセスを無効にすることを特徴とする。この構成によれば、第2領域からアクセスされてきたOSのプログラは、当該プログラムに対応するPTE内のセグメントディスクリプタのアクセスレベル属性情報との差によってページフォルトが発行されて、IDT、割込ハンドラを介してかかるアクセスは無効化される。
請求項10記載の発明は、請求項1〜9のいずれかに記載の情報処理空間管理方法において、前記アクセス保護情報は、前記第1領域に対して値0が設定され、前記OSに対して値2が設定され、前記OSによって稼働されるAP(Application Program)に対して値3が設定されていることを特徴とするものである。この構成によれば、アクセス保護の差によってOS,APから第1領域へのアクセスは無効にされル。この結果、第1領域がセキュア領域として保持される。
請求項11記載の発明は、請求項1〜10のいずれかに記載の情報処理空間管理方法において、前記OSのロード後、前記第2領域からの前記OSのプログラムのアクセスに対して一般保護例外を発行し、前記アクセスを無効にする不正アクセス対応ステップを含むことを特徴とする。この構成によれば、OSロード後において、マルウエアに感染し、あるいは潜伏していたOSのプログラムが第1領域に不当なアクセスを行っても、第1領域が適正にセキュア領域として管理されているため、必ず一般保護例外が発行される。
本発明によれば、BIOS起動に応じて主メモリ内の第1領域にセキュア領域を構築すると共にアクセス保護情報に差を持たせることで、第2領域からの不当なアクセスを無効化し、主メモリ内にセキュア領域を確保することができる。
本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。 図1に示す外部デバイスのハードウエア構成の一例を示すブロック図である。 端末及び外部デバイスのブートに関連する機能部の一例を示すブロック図である。 専用ローダのブートでのリアルモードにおける端末のRAMのメモリマップの一例を示す図である。 専用ローダのブートでのプロテクトモードにおける端末のRAMのメモリマップの一例を示す図である。 端末のCPUによって実行されるシステムBIOSの起動処理の手順を説明するフローチャートである。 端末のCPUによって実行されるシステムBIOSのPOST処理(ステップS3)の手順を説明するフローチャートである。 外部デバイスのCPUによって実行される監視処理Iの手順を説明するフローチャートである。 外部デバイスのCPUによって実行される監視処理IIの手順を説明するフローチャートである。 端末のCPUによって実行される拡張BIOS処理の手順を説明するフローチャートである。 外部デバイスのCPU及び拡張BIOSによって実行される監視処理IIIの手順を示すための説明図である。 端末側のCPUによって実行される監視処理IIIの一部手順を説明するフローチャートである。 外部デバイス側のCPUによって実行される監視処理IIIの一部手順を説明するフローチャートである。 1MB〜100MBの領域に管理ファイル125、管理用GDT126及び管理用IDT127が展開された状態のメモリマップである。 1MB〜100MBの領域にTSS128、PTE(Page Table Entry)129及び管理用割込ハンドラ130が作成された状態のメモリマップである。 100MB〜101MBの領域に0MB〜1MBの内容(実質的に専用ローダと外部デバイス2から新たにロードされたシステムBIOS)がコピーされた状態、及び同領域の所定位置にOSローダ131が作成された状態のメモリマップである。 101MB以上の領域にOSがロードされる状態を示すメモリマップである。 情報の格納箇所を示すGDT126の全体概要を示す図である。 PTEのメモリマップを示す図である。 リニアアドレスから物理アドレスに変換する変換方法を図で示した図である。 プロテクトモードにおけるリニアアドレスと物理アドレスとの関係の一例を示す図である。 端末のCPUによって実行される専用ローダ123の処理を示すフローチャートである。 端末のCPUによって実行される管理ファイル125の処理を示すフローチャートである。 端末のCPUによって実行される管理ファイル125のOSローダ作成処理を示すサブルーチンである。 端末のCPUによって実行される、OSローダ作成後における管理ファイル125の処理を示すフローチャートである。 端末のCPUによって実行される、OSブート後における管理ファイル125の処理を示すフローチャートである。 端末のCPUによって実行される、処理環境の切替処理を示すフローチャートである。 スタック領域1203を割込ベクタテーブル1202に重畳する方法を説明する図である。 ダミーコードの割込ベクタテーブルへの上書き処理、及び一般保護例外に基づく正常リセット処理を説明する図である。 ブートの流れを簡単に説明する図である。
図1は、本発明に係る外部デバイスが適用されるネットワーク通信システムの一実施形態を示す概要図である。図2は、図1に示す外部デバイスのハードウエア構成の一例を示すブロック図である。図3は、端末及び外部デバイスのブート及び管理に関連する機能部の一例を示すブロック図である。図4は、専用ローダのブートでのリアルモードにおける端末のRAMのメモリマップの一例を示す図である。図5は、専用ローダのブートでのプロテクトモードにおける端末のRAMのメモリマップの一例を示す図である。
図1に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末1と、この端末1に接続可能にされた、例えばPCI(Peripheral Component Interconnect)タイプの外部デバイス2と、インターネット等のネットワーク3とを備えている。端末1はプロバイダ(ISP)4を介してネットワーク3と接続されている。外部デバイス2の一例としてのPCIは、所定サイズからなるカセット型の筐体を有し、外部に端末1と接続するためのI/Oポートを有し、内部に、後述するようにCPU、拡張BIOS等を記憶する記憶部及びネットワーク3との通信を可能にするNIC(Network Interface Card)を備えている。本実施形態では、端末1はそのままネットワーク3に接続される一方、外部デバイス2が装着された状態では、後述するように外部デバイス2を経由してネットワーク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が接続されている。表示部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は、端末1内のOSローダによって読み込まれるOSによって動作可能にされるものであり、特定APは、外部デバイス2内のローダ(または再起動プログラムによって起動されたローダ)によって読み込まれる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デバイスは、例えば操作部13、表示部14、図略のプリンタ等の周辺機器である。
また、専用ローダ(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、及び外部ブートによる起動後に特定APを用いて作成されたファイル等を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環境であれば、切替指示は無視されて、本フローが終了する。
本発明は、以下の態様を採用することが可能である。
(1)本実施形態では、外部デバイスとしてPCIを想定したもので説明したが、これに限定されず、少なくとも、CPU及びROM、RAMを内蔵したものであればよい。また、DMACを備えているデバイスであればよい。例えばUSB(Universal Serial Bus)メモリチップ、ICカードを改良した対応でもよいし、携帯型の通信機器に内蔵された態様であってもよい。
(2)本実施形態では、外部デバイスとして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のロード領域に設定される特権レベルと比較した場合)を設定することで、管理ファイルをクリーンな環境で起動及び稼働維持させることが可能となる。
(3)本実施形態では、管理ファイル125等を格納するためのセキュア領域(特権レベルDPL“0”)を1MB〜100MBと設定したが、これに限定されず、管理ファイル125及び他の必要な管理テーブル等の格納が可能なメモリ容量分があればよく、例えば1MB〜数MBのメモリ容量であってもよい。また、領域0MB〜1MBについてもセキュア領域(特権レベルDPL“0”)としたことで、0MB〜100MBを同質のセキュア領域として扱うことができる。
(4)本実施形態によれば、0MB〜100MBにセキュア領域を構築したので、感染の検知が困難な、いわゆるステルス型ウイルスの侵入を効果的に阻止できる。また、セキュアな領域内で特定OS環境を設定し、特定の情報処理を可能としたが、これに代えて、あるいはこれに加えて、マルウエアを検知するアンチウイルスソフトウエアをロードし、100MB〜4GBまでを監視する態様とすることも可能である。
1 端末(情報処理装置)
10,20 CPU
11,21 ROM
101 専用ローダロード処理部
102 専用ローダ処理部(管理ファイルロード処理手段)
103 管理ファイル動作環境作成部(管理ファイルロード処理手段)
104 OSローダロード処理部
105 OSローダ処理部
106 OS動作監視部106
12 RAM(主メモリ)
12A ハードディスク(HD)
120 起動メモリ領域
13 操作部
2 PCI(外部デバイス)
201 専用ローダロード処理部
202 監視部
203 管理ファイルロード処理部
204 OSローダロード処理部
251 専用ローダ記憶部
252 専用ローダ記憶部
253 管理ファイル記憶部
254 システムテーブル記憶部
255 OSローダ記憶部
24 DMAC(専用ローダロード部)

Claims (13)

  1. BIOSの起動に応じて外部デバイスから主メモリの起動メモリ領域に専用ローダをロードする専用ローダロードステップと、
    前記主メモリの一部の第1領域に対して保護特権を設定し、かつ前記主メモリの前記第1領域及び起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)の前記第1領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第1領域にロードする管理ファイルロードステップと、
    前記管理ファイルのロードから前記OSのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第2領域に設定するアクセス保護情報設定ステップとを備えたことを特徴とする情報処理空間管理方法。
  2. 前記専用ローダロードステップは、前記起動メモリ領域を更新的に前記専用ローダをロードすることを特徴とする請求項1に記載の情報処理空間管理方法。
  3. 前記専用ローダのロードは前記主メモリの前記起動メモリ領域の全体に強制的に行うことを特徴とする請求項2記載の情報処理空間管理方法。
  4. 前記第1領域と前記起動メモリ領域とは同一の保護特権が設定されていることを特徴とする請求項1〜3のいずれかに記載の情報処理空間管理方法。
  5. 前記前記起動メモリ領域は、0MB〜1MBであることを特徴とする請求項1〜4のいずれかに記載の情報処理空間管理方法。
  6. 前記管理ファイルは、前記OS内の各プログラムのアクセス保護情報が登録されたGDT(Global Descriptor Table)を有し、前記第2領域から前記第1領域へアクセスされた前記OS内のプログラムに対して、前記GDTに登録されているアクセス保護情報を参照して前記一般保護例外を発行する処理を含むことを特徴とする請求項1〜5のいずれかに記載の情報処理空間管理方法。
  7. 前記管理ファイルは、前記第2領域から前記第1領域への前記OS内のプログラムのアクセスに対して、前記一般保護例外を発行し、IDT(Interrupt Descriptor Table)を介して割込ハンドラによって前記アクセスを無効にする処理を含むことを特徴とする請求項6に記載の情報処理空間管理方法。
  8. 前記GDTで生成されたリニアアドレスはPTE(Page Table Entry)を用いて物理アドレスに変換されるもので、前記PTEは、前記GDTで生成されたリニアアドレスに加算される、少なくとも前記第2領域内アドレス値が設定されたものであることを特徴とする請求項1〜7のいずれかに記載の情報処理空間管理方法。
  9. 前記PTEは、前記OSの各プログラムに対するアクセスレベル属性情報が登録されており、前記第2領域からの前記OSのプログラムのアクセスに対して前記PTEを介してページフォルトを発行し、IDTを介して前記割込ハンドラによって前記アクセスを無効にすることを特徴とする請求項8記載の情報処理空間管理方法。
  10. 前記アクセス保護情報は、前記第1領域に対して値0が設定され、前記OSに対して値2が設定され、前記OSによって稼働されるAP(Application Program)に対して値3が設定されていることを特徴とする請求項1〜9のいずれかに記載の情報処理空間管理方法。
  11. 前記OSのロード後、前記第2領域からの前記OSのプログラムのアクセスに対して一般保護例外を発行し、前記アクセスを無効にする不正アクセス対応ステップを含むことを特徴とする請求項1〜10のいずれかに記載の情報処理空間管理方法。
  12. 接続された情報処理装置にファイルのロードを行う外部デバイスにおいて、
    BIOSの起動に応じて主メモリの起動メモリ領域にロードする専用ローダと、
    主メモリの一部の第1領域に対して保護特権を設定し、かつ前記主メモリの前記第1領域及び前記起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)の前記第1領域へのアクセスを監視するためのファイルであって前記第1領域にロードされる管理ファイルと、
    前記管理ファイルのロードから前記OSのロードまでの間にロードされ、前記保護特権より低いアクセス権限のアクセス保護情報を前記第2領域に設定するアクセス保護情報設定ファイルとを含むことを特徴とする外部デバイス。
  13. ワークメモリである主メモリを有し、接続された外部デバイスから所定のファイルを前記主メモリにロードする情報処理装置において、
    BIOSの起動に応じて前記外部デバイスから前記主メモリの起動メモリ領域に専用ローダをロードする専用ローダロード部と、
    前記主メモリの一部の第1領域に対して保護特権を設定し、かつ前記主メモリの前記第1領域及び起動メモリ領域とは異なる第2領域へロードされるOS(Operating System)の前記第1領域へのアクセスを監視するための管理ファイルを前記専用ローダによって前記外部デバイスから前記第1領域にロードする管理ファイルロード処理手段と、
    前記管理ファイルのロードから前記OSのロードまでの間に、前記保護特権より低いアクセス権限のアクセス保護情報を前記第2領域に設定するアクセス保護情報設定手段とを備えたことを特徴とする情報処理装置。
JP2011245631A 2011-11-09 2011-11-09 情報処理空間管理方法、外部デバイス及び情報処理装置 Pending JP2013101550A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011245631A JP2013101550A (ja) 2011-11-09 2011-11-09 情報処理空間管理方法、外部デバイス及び情報処理装置
PCT/JP2012/078575 WO2013069587A1 (ja) 2011-11-09 2012-11-05 情報処理空間管理方法、外部デバイス及び情報処理装置
TW101141107A TW201333748A (zh) 2011-11-09 2012-11-06 資訊處理空間管理方法、外部裝置及資訊處理裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011245631A JP2013101550A (ja) 2011-11-09 2011-11-09 情報処理空間管理方法、外部デバイス及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2013101550A true JP2013101550A (ja) 2013-05-23

Family

ID=48289961

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011245631A Pending JP2013101550A (ja) 2011-11-09 2011-11-09 情報処理空間管理方法、外部デバイス及び情報処理装置

Country Status (3)

Country Link
JP (1) JP2013101550A (ja)
TW (1) TW201333748A (ja)
WO (1) WO2013069587A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018230471A1 (ja) * 2017-06-13 2018-12-20 ロゴヴィスタ株式会社 ウィルスの監視プログラム
US10380336B2 (en) 2014-05-16 2019-08-13 Junko Suginaka Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel
US11550619B2 (en) 2020-09-23 2023-01-10 Kabushiki Kaisha Toshiba Information processing device and processing method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767266B (zh) * 2020-06-30 2022-06-11 神雲科技股份有限公司 基於記憶體對映輸入輸出的記憶體空間自動分配方法
EP3933629A1 (en) * 2020-07-01 2022-01-05 Nokia Technologies Oy Apparatus, method and computer program for detecting malware

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073013B2 (en) * 2003-07-03 2006-07-04 H-Systems Flash Disk Pioneers Ltd. Mass storage device with boot code
JP2008269288A (ja) * 2007-04-20 2008-11-06 Hewlett-Packard Development Co Lp 起動システム、起動プログラムおよびその方法。
JP4916576B2 (ja) * 2008-03-14 2012-04-11 三菱電機株式会社 マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10380336B2 (en) 2014-05-16 2019-08-13 Junko Suginaka Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel
WO2018230471A1 (ja) * 2017-06-13 2018-12-20 ロゴヴィスタ株式会社 ウィルスの監視プログラム
US11550619B2 (en) 2020-09-23 2023-01-10 Kabushiki Kaisha Toshiba Information processing device and processing method

Also Published As

Publication number Publication date
TW201333748A (zh) 2013-08-16
WO2013069587A1 (ja) 2013-05-16

Similar Documents

Publication Publication Date Title
JP5512610B2 (ja) 非ファームウェアエージェントからメモリへのアクセスを許可または阻止する方法、システム、および機械可読記憶媒体
US7739517B2 (en) Hardware-based authentication of a software program
JP4486288B2 (ja) コンピュータにおいてトラステッドコア初期化プロセスを安全に実行するためのプログラム、方法、メモリコントローラ、装置及びコンピュータ
CN102271153B (zh) 用于虚拟化tpm访问的系统、方法以及装置
CN110785759B (zh) 用于多核处理器的远程认证
CN105122258B (zh) 对系统进行配置的方法、计算系统以及物品
US20130061032A1 (en) External boot device, external boot method, information processing apparatus, and network communication system
US20080034350A1 (en) System and Method for Checking the Integrity of Computer Program Code
US20070276969A1 (en) Method and device for controlling an access to peripherals
JP4249779B2 (ja) デバイス制御装置
US20080244746A1 (en) Run-time remeasurement on a trusted platform
JP6370098B2 (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
WO2013069587A1 (ja) 情報処理空間管理方法、外部デバイス及び情報処理装置
WO2011141997A1 (ja) 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム
EP1843250B1 (en) System and method for checking the integrity of computer program code
CN113806745B (zh) 验证检查的方法、计算系统及机器可读存储介质
CN113268447A (zh) 计算机架构及其内的访问控制、数据交互及安全启动方法
WO2012053053A1 (ja) 外部ブートデバイス及びネットワーク通信システム
WO2013080848A1 (ja) ファイル通信処理方法及び外部デバイス
JP2018036695A (ja) 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置
WO2013061782A1 (ja) 外部ブートデバイス及び外部ブート方法
JP2014112304A (ja) 情報処理装置、及びファイルのインストール方法