JPWO2011141997A1 - 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム - Google Patents

外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム Download PDF

Info

Publication number
JPWO2011141997A1
JPWO2011141997A1 JP2012514629A JP2012514629A JPWO2011141997A1 JP WO2011141997 A1 JPWO2011141997 A1 JP WO2011141997A1 JP 2012514629 A JP2012514629 A JP 2012514629A JP 2012514629 A JP2012514629 A JP 2012514629A JP WO2011141997 A1 JPWO2011141997 A1 JP WO2011141997A1
Authority
JP
Japan
Prior art keywords
mbr
loader
information
information processing
external boot
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
JP2012514629A
Other languages
English (en)
Inventor
順子 杉中
順子 杉中
義久 古川
義久 古川
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
Publication of JPWO2011141997A1 publication Critical patent/JPWO2011141997A1/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
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2153Using hardware token as a secondary aspect
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

USBメモリ(2)は、MBR記憶部(261)と、分散処理部(221)とを備えている。MBR記憶部(261)は、端末(1)のBIOSによって優先して起動するように設定された、ローダを読み出して端末(1)の起動メモリ領域(120)上にマッピングさせるためのMBRであって、起動メモリ領域(120)に設定されている割込ベクタテーブル(1202)に対してスタック領域(1203)をベクタ2の上位ビットに重畳して位置付けるプログラムが記憶される。分散処理部(221)は、MBRの起動に先立って、ローダを予め設定された個数に分割すると共に各分割ローダの起動メモリ領域へのロードの際のマッピング情報を作成する。これにより、外部ブートによってマルウエアの動きを抑止するようにした。

Description

本発明は、CPUを備える情報処理装置に装着して前記情報処理装置を外部ブートデバイスによってブートするブート技術に関する。
近年、インターネット等のネットワークに接続されたサーバや端末(パーソナルコンピュータ)等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限(アドレス制限)の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。
特許文献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起動に先立ってセキュリティ等の任意のプログラムの実行を可能としている。
特開2007−66123号公報 特開2006−236193号公報
特許文献1は、パスワード入力画面に対してパスワードを入力する態様であるためパスワードの盗難の虞があることから、USBメモリの固有情報と結合してハッシュ値を作成し、ロック解除情報とする個人認証技術である。また、特許文献1には、USBメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されているが、具体的な記載は一切ない。
一方、特許文献2では、ハードディスク内の仮起動セクタの任意プログラムがウィルスチェックプログラムである場合においても、そのプログラムが実行される前に、例えばRootkitの形態を有するような不正プログラムが起動され、任意プログラムから自身(不正プログラム)を隠蔽することも可能であるため、ウイルスチェックに対する信頼性に一定の限界がある。また、特許文献2にはOS起動前にウイルスを監視する具体的な方法は一切記載されていない。電源投入前から潜伏していたウイルスを仮に発見し得るとしても、再起動(OS起動)後にはウイルスチェックは行われていないため、再起動中に侵入するウイルス対して依然として無防備の状態にある。さらに、特許文献1、2はパーソナルコンピュータ側で処理を担う一般的態様であるから、この点からしても高い信頼性を確保するには限界がある。
また、近年、特許文献1に記載の起動方法のような、いわゆるUSBメモリブート方式が知られている。USBメモリブート方式は、USBメモリを端末に接続して端末の電源が投入された場合に、BIOSからUSBメモリが優先的に指定されて、その内部に記憶されたOSがブートされ、例えば職場の端末を自己のPC環境の元で使用し得るようにした技術である。このUSBメモリブート方式の別の態様として、ウイルス駆除プログラムを記憶しておき、優先的に起動させて、端末内の潜伏ウイルスを駆除可能にしたものも知られている。しかし、USBメモリ自身のウイルス感染の有無やウイルス駆除処理終了からOSの起動までの間でのウイルス侵入の有無については何等言及されていない。
本発明の目的は、ウイルス等のマルウエアの動きを抑止する外部ブートの技術を提供することにある。
また、本発明の目的は、起動中にマルウエアに関わる異常を検出すると、BIOSを介さない情報処理装置の再起動を行う技術を提供することにある。
本発明に係る外部ブートデバイスは、CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶された記憶手段と、前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段とを備えたことを特徴とするものである。
また、本発明に係るネットワーク通信システムは、前記外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するものである。
また、本発明に係る外部ブートプログラムは、CPUを備える情報処理装置に装着して前記情報処理装置をコンピュータを内蔵する外部ブートデバイスによってブートする外部ブートプログラムであって、前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶された記憶手段、前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段、として前記コンピュータを機能させるものである。
また、本発明に係る外部ブート方法は、CPUを備える情報処理装置に装着して前記情報処理装置を外部ブートデバイスによってブートする外部ブート方法であって、前記外部ブートデバイスの記憶手段に、前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶され、前記外部ブートデバイスの分散処理手段が、前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成することを特徴とするものである。
これらの発明によれば、パーソナルコンピュータ(PC)等の情報処理装置に、例えばUSB(Universal Serial Bus)メモリ等の外部ブートデバイスが装着された状態で、情報処理装置の電源が投入されると、情報処理装置は操作可能な状態になるようにCPU等によって起動(ブート)される。
また、前記外部ブートデバイスは記憶手段を備え、この記憶手段には、前記情報処理装置のBIOSによって優先して起動するように設定されたMBR(Master Boot Record)が記憶されている。MBRはローダを読み出すためのプログラムである。そして、MBRは、前記情報処理装置の起動メモリ領域に予め設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有する。また、前記外部ブートデバイスの分散処理手段は、前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する。
従って、分割された各分割ローダは、起動メモリ領域内に適宜マッピングされつつロードされる。一方、BIOS内にマルウエア、例えばウイルス(なお、ウイルス本体はハードディスク(HDD)内)が潜伏していた場合、ウイルスは、BIOSの起動中に、EFLAGレジスタ内のトラップフラグ(TF:trap flag)をオンにしてプログラムの実行手順をシングルステップモードにすると共に、割込ベクタテーブル内のINT1の内容を自己のウイルス本体の潜伏位置に設定して待機する。その後、CPUによって、BIOSが立ち上がり、MBRに制御が移されて、分割ローダのロードが開始される。ウイルスは、シングルステップモード中の、ある時点でMBRプログラムからCPUの動作を奪い、これによって、ウイルスのコピー、データ改竄、破壊、流出等の各種の悪意行為が実行される可能性がある。そこで、スタック領域を割込ベクタテーブルに重畳し、さらにTFフラグをオンにしてスタック領域への直前の戻り情報の記録を行わせるようにすることで、ウイルスが動作すると、直ちにスタック領域の情報が更新され、かつこの更新内容は、割込ベクタテーブルの内容が更新されることになる。このスタック領域の情報の更新、すなわち割込ベクタテーブルの内容が書き換えられることで、ウイルス本体の潜伏位置情報が消去され、ウイルスは動きが完全に抑止されることとなる。このように、外部ブートによってウイルスの動きが抑止される。
また、本発明に係る外部ブートデバイスは、前記MBRの起動動作に異常が発生したか否かを監視する監視手段と、前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出す再起動手段とを備えたことを特徴とするものである。
また、本発明に係る外部ブートプログラムは、前記MBRの起動動作に異常が発生したか否かを監視する監視手段、前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出す再起動手段、として前記コンピュータを機能させるものである。
また、本発明に係る外部ブート方法は、前記外部ブートデバイスの監視手段が、前記MBRの起動動作に異常が発生したか否かを監視し、前記外部ブートデバイスの再起動手段が、前記監視手段によって前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出すことを特徴とするものである。
これらの発明によれば、前記外部ブートデバイスの監視手段によって、前記MBRの起動動作に異常が発生したか否かが監視される。そして、前記異常が検出された場合に、前記外部ブートデバイスの再起動手段によって、前記情報処理端末の起動メモリ領域に、前記MBRが読み出(ロード)される。従って、例えばBIOSの起動中に潜伏ウイルスが動作し、その結果、MBRの起動動作に異常が発生したような場合に、この異常が検出されると、BISOを再起動することなく、MBRを読み出して起動メモリ領域を書き直す(リセットする)ようにして、起動メモリ領域がクリアにされる。このように、マルウエアが検出される等の異常が検出されると、BIOSを介さず情報処理装置が再起動されるので、再起動によってBIOSに関わるマルウエアが起動メモリ領域上から排除される。
本発明によれば、外部ブートによってマルウエアの動きを抑止することができる。
また、本発明によれば、起動中にマルウエアに関わる異常を検出すると、BIOSを介さない情報処理装置の再起動を実行することができる。
本発明の一実施形態に係る外部ブートデバイスが適用されるネットワーク通信システムを示す概要図である。 図1に示す外部ブートデバイスのハードウエア構成の一例を示すブロック図である。 端末及び外部ブートデバイスのブートに関連する機能部を示すブロック図である。 端末のメモリマップ図である。 スタック領域を割込ベクタテーブルに重畳する方法を説明する図である。 端末のCPUによって実行されるBIOSの起動処理の手順を説明するフローチャートである。 USBメモリのCPUによって実行されるローダの分散処理の手順を説明するフローチャートである。 端末のCPUによって実行されるMBRの実行処理の手順を説明するフローチャートである。 USBメモリのCPUによって実行される監視処理の手順を説明するフローチャートである。 USBメモリのCPUによって実行される再起動処理の手順を説明するフローチャートである。 端末のCPUによって実行される再起動処理の手順を説明するフローチャートである。
図1は、本発明の一実施形態に係る外部ブートデバイスが適用されるネットワーク通信システムを示す概要図である。図2は、図1に示す外部ブートデバイスのハードウエア構成の一例を示すブロック図である。図3は、端末及び外部ブートデバイスのブートに関連する機能部を示すブロック図である。図4は、端末のメモリマップ図である。
図1に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末1と、この端末1に接続された外部ブートデバイスの一例であるUSB(Universal Serial Bus)メモリ2と、インターネット等のネットワーク3とを備えている。端末1はプロバイダ(ISP)4を介してネットワーク3と接続されている。本実施形態では、端末1はそのままネットワーク3に接続され、また、USBメモリ2が装着された状態では、後述するようにUSBメモリ2を経由してネットワーク3と接続される構成を有する。ネットワーク3上には複数のISP4が配設されており、各ISP4には、1又は複数の端末1や各種の情報を提供する図略のWebサイトが接続されている。USBメモリ2は、例えば、端末1からの操作を通して所定のサービスの提供を受ける権限を持つ会員として登録を受ける際に支給される。USBメモリ2は、内部の記憶部に会員を識別する情報及びその他の情報が記録されている。USBメモリ2の構成及び機能等に関しては後述する。
端末1は、コンピュータを有しており、図3に示すように、制御手段としてのCPU(Central Processing Unit)10を有する。CPU10は、ROM(Read Only Memory)11とRAM(Random Access Memory)12とに接続されている。ROM11には、データが書き換え可能なフラッシュROMを含む。本実施形態では、ROM11は、このフラッシュROM、またCMOS(Complementary MetalOxide Semiconductor)等を備え、フラッシュROM110(図4参照)にBIOS(Basic Input/Output system)が書き込まれている。BIOSを書き換え可能にすることで、起動時におけるMBR(Master Boot Record)の記憶部に対する、読み出しの優先順位を設定可能にする態様としている。また、CPU10には、図3に示すように、操作者が必要な指令や情報を入力するテンキーやマウス等を備える操作部13及び画像を表示する表示部14が接続されている。表示部14は、入力情報の確認のための表示や通信内容の表示のために用いられる。なお、本実施形態では、BIOSは、外部ブートデバイスであるUSBメモリ2が優先的に指定されるように設定されている。RAM12は、例えば起動時のワークエリアである起動メモリ領域120、通常処理を実行する場合のワークエリア、及び必要なプログラムやデータ類が格納されるハードディスク(HDD)121等から構成されている。
また、端末1には、図4に示すように、チップセット15が設けられている。チップセット15は、図略のマザーボードを構成する主要部品で、CPUや各種メモリ、その他ハードディスク(HDD121、図4参照)や図略のCD−ROM等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。
本ネットワーク3には、ISP4を介して、1又は所定数の会員サーバ5及び複数の取引先端末6が接続されている。会員サーバ5は、端末1を所有する乃至は操作を支配し得る会員に関する適宜な情報、例えば会員の氏名、名称、電子メールアドレス、住所等の会員情報等を会員単位で記憶するものである。取引先端末6は、クライアントである各端末1からの取引要求に対する処理、例えば電子決済による処理、取引情報を記憶しかつ情報管理を行うものである。会員サーバ5には、前記会員情報の他、必要に応じて端末1に提供可能な情報、例えば会員に提供するサービスを実行する上で必要な処理ソフトウエア、例えば所要の書類を作成するための書類作成プログラムとか、さらには大容量サーバに端末1毎の取引内容及び履歴情報が記憶(保管及び管理)されていてもよい。
なお、本発明におけるネットワーク通信システムは、以下の態様が一例として採用可能である。端末1は、専用のネットワークにのみ接続可能な専用端末としてもよいし、インターネットとの切り替えで他のネットワークにも接続可能な汎用端末のいずれでもよい。端末1内には、例えば汎用端末の場合、一般的な文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、更に通信用のソフトウエアを利用しての情報の送受信等の一般的な各処理を実行するプログラムファイル(汎用AP(application program)という)が格納されている。また、USBメモリ2内には、特定のアプリケーションソフトウエアの実行に関連する処理を行うプログラムファイル(特定APという)が記憶されている。汎用APは、端末1内の元々のMBR、ローダによって読み出されるOSによって動作可能にされるものであり、特定APは、USBメモリ2内のMBR、ローダ(または再起動プログラムによって起動されたMBR)によって読み出されるOSによって動作可能にされるものである。より具体的には、会員間である消費者、商店及び企業等の端末1には、特定APとして、商品やサービスの売買、見積もり乃至は請求、入出金に関する(いわゆる商取引に関する)各書類の作成と通信とを行うソフトウエア、及び必要に応じて所定の認証処理のソフトウエアが、ブート後にUSBメモリ2からロードされる。すなわち、端末1は、特定APによって、一般的な商取引における決済、例えば業者店舗からの請求書の発行、受領や、購買者側から請求書発行元の契約金融機関の口座への入金(すなわち支払い)指示書、その受領書の発行の他、電子決済の如何を問わず種々の電子書面での送受信処理を可能とするものである。特定APは、各種書類をテキスト形式の、またバイナリー形式の電子ファイルとして作成可能である。電子ファイルは、例えば会員サーバ5を中継して(あるいは並行して)端末1間で授受される。各金融機関の端末1には、消費者や企業の端末1からの金融的な決済書面に従った決済指示処理(金融機関間での決済処理の指令等)を行う特定APもインストールされている。端末1には、登録会員毎に固有の情報が書き込まれたUSBメモリ2が配布される。会員はサービスの提供を受ける場合、このUSBメモリ2を端末1のUSBポートに差し込み、少なくともUSBの正当性の認証処理を、好ましくはさらに個人認証(USBメモリ2の正当所持者であることの認証)処理を受けた場合を条件としている。
会員サーバ5は、各会員のファイル送受信履歴やそのファイル類等を管理用に記憶する記憶部を備えている。会員サーバ5は、認証機能を備えていてもよく、この場合、認証機能は、会員サーバ5と端末1との間で授受されるファイル、すなわちパケットを閲覧して、会員の正当性の有無の認証を行う態様としてもよい。
また、本ネットワーク通信システムは、他に種々の適用例が考えられる。例えば秘密情報を作成、保管管理する、例えば公的乃至は準公的(民間含む)な機関である団体組織(国、自治体、協会、組合等含む)外にある端末1との間における情報通信・管理体制に適用する例を挙げることができる。団体組織外にある端末との間における情報通信としては、例えば証明書の発行、申請書の発送などが想定される。
なお、TCP/IP(transmission control protocol/internet protocol)規約に沿って形成されたパケットによって文書ファイルの送受信を行う場合、受信したパケットを元のファイルに戻したり、送信予定のファイルをパケットに置換して送信したりする。さらに、送信される各パケットのヘッダには、送信元である端末1のグローバルのIPアドレス、送信先である他の端末及び会員サーバのグローバルのIPアドレスが含まれる。
図2に示すNIC(Network Interface Card)28にはルータが装備され、乃至ルータとシリアルに接続されている。このルータは、例えば、送信信号乃至は受信信号としての各パケットの所定位置に付加されている送信先を示すアドレス情報が、インターネット用の規約に基づくグローバルIPアドレスか、このグローバルIPアドレスの付し方とは異なる(グローバルIPアドレスとは識別可能な形態である)専用ネットワーク用の、例えばイーサネット(登録商標)用等に準じた所定のローカルIPアドレス(MACアドレス)かを識別するためのアドレス情報(ルーティングテーブルやarp(Address Resolution Protocol)テーブル)の設定を行うものである。パケットは、テーブルと照合されて、アドレスの一致したルートへのみ送信され、これにより伝送路をインターネット経由か、専用ネットワークかにソフトウエア的に切り換えることができる。
図2において、USBメモリ2は、略直方体形状の筐体内にマザーボード(図略)を備え、マザーボード上には各種の回路素子及び半導体素子が搭載されている。ハブ20は、USBメモリ2の入出力部に設けられ、端末1のUSBポートを介して端末1と通信可能に接続するものである。USBメモリ2は、所定数の、例えば3系統の信号ラインを有し、入出力部にはそれぞれUSBコントローラ21(211,212,213)が設けられている。USBコントローラ21は、入出力される信号のレベルや波形成形を行うものである。
USBコントローラ211には、CPU22が接続されている、CPU22は、外部ブートを実行させるもので、そのための所定の処理プログラムを記憶するROM23及び処理内容を一時的に格納するRAM24に接続されている。また、CPU22には、ROM、本実施形態ではフラッシュROM25が接続されている。フラッシュROM25は、前述した特定APとしてのアプリケーションプログラム、周辺装置を動作させるドライバというプログラム及びOSを格納する各種ファイル記憶部251と、各種ファイル記憶部251を端末1にロードさせるためのプログラムであるローダを記憶するローダ記憶部252とを有する。
USBコントローラ212には、ROM、本実施形態ではフラッシュROM26が接続されている。フラッシュROM26は、MBRを記憶するMBR記憶部261を有する。
USBコントローラ213には、CPU27が接続されている、CPU27は、ネットワーク3を介して他の端末1等と通信を行う場合の情報処理を実行するもので、そのための所定の処理プログラムを記憶するROM271及び処理内容を一時的に格納するRAM272に接続されている。また、前述したように、ネットワーク3との接続を管理するNIC28は、図略のルータを介してISP4までの公衆通信回線と接続され、その網及びネットワーク3に対する通信制御を行うものである。CPU27は、フラッシュROM26と接続されており、USBメモリ2が端末1に接続された状態において、MBR記憶部261の内容を周期的に更新可能にしている。更新は、USBメモリ2が端末1に接続される都度の1回(ブートの前後を問わない)でもよい。CPU27は、会員サーバ5に対してMBRの更新要求を発信し、この更新要求を受けて会員サーバ5からNIC28を介して新たなMBRを受信すると、MBR記憶部261のMBRを、この受信内容に更新するようにしている。
MBRの更新態様としては、内容の変更の他、要求毎に暗号方法が変更される態様としてもよい。すなわち、会員サーバ5は、予め複数の暗号及び復号プログラムを有しており、要求毎に、所定のルールにより又は無作為に選定した暗号化プログラムで暗号化し、対応する復号化プログラムを同時にあるいは時間的に少しずらして送信することで、CPU27側で復号して、MBR記憶部261に更新的に書き込むようにしてもよい。このように更新によってMBRを高い頻度で変更することができる。
図3において、端末1のCPU10は、ROM11及びRAM12に記憶されたプログラムを実行することによって、BIOSを起動させるBIOS処理部101、MBRを起動させるMBR処理部102、ローダを起動させるローダ処理部103、起動中に異常が発生した場合に再ブートを行う再起動処理部104、USBメモリ2との間で情報の授受を行う入出力処理部105、外部ブートによる起動後に特定APを用いて、また通常ブートによる起動後に汎用APを用いて文書作成その他種々の処理を実行する情報処理部106、及びNICやネットワークを介して他の端末1、会員サーバ5及び取引先端末6との間で情報の授受を行うネットワーク通信処理部107として機能する。
BIOS処理部101は、端末1の電源投入を受けて、メモリや周辺機器の状態をチェックする。BIOSプログラムの最後の部分はOS起動ルーチンになっており、このBIOS起動ルーチンによって、ブート順、すなわち優先的に起動するように設定されている先頭位置に書き込まれているMBRが読み込まれる。USBポートにUSBメモリ2が装着されている場合、優先順位に従ってBIOS起動ルーチンによってMBRのマスターブートプログラム(ブートストラップローダ)がRAM12の起動時のワークエリアである、所定の記憶容量、ここではアドレスライン20ビット仕様、すなわち約1MByteの起動メモリ領域に読み込まれる。なお、USBポートにUSBメモリ2が装着されていない場合には、BIOS処理部101によって、優先順位の降順に従って、例えばHDD121からMBRのプログラムが読み出される。
BIOS処理部101は、USBポートにUSBメモリ2が装着されている場合、BIOS起動ルーチンによってUSBメモリ2のMBR記憶部261からMBRのマスターブートプログラム(ブートストラップローダ)をRAM12の起動メモリ領域120に読み込む。そして、正常であれば、次いで、読み込まれたマスターブートプログラムに制御が渡される。
MBR処理部102は、読み込まれたマスターブートプログラムによって、ローダ記憶部252のパーティションテーブルをチェックし、アクティブな基本パーティションを検索し、そのパーティションの先頭位置にあるパーティションブートセクタ(PBS)を読み込む処理を行う。パーティションブートセクタは、OSによって予めフォーマットの際に作成されたもので、そのパーティションにインストールされたOS等を起動するためのブートプログラム(イニシャルプログラムローダ:IPL)とそのパーティション情報とが格納されている。MBR処理部102は、マスターブートプログラムによって、このIPLを読み込み、以後、IPLに制御を渡す。IPLは、ローダ記憶部252の最初の基本パーティションの中から、OS等を起動するためのローダを探し、メモリに読み込み、ローダに制御を渡す。なお、ここでは、これら一連の処理をMBR処理部102が実行するものとする。
また、ローダは予め複数に分割される。そして、MBR処理部102は、各分割ローダを起動メモリ領域120に分散配置(マッピング)させるべく、マッピング位置情報をUSBメモリ2に逐次要求し、これに応じてマッピング位置情報を順次取得する。
また、MBR処理部102は、マルウエアの動きを抑止するための処理を行う。図4において、マスターブートプログラムは、(i)起動メモリ領域120内において、予めBIOSによって作成された割込ベクタテーブル1202の設定領域にスタック領域1203を重畳させ、(ii)チップセット15内のEFLAGS152内のトラップフラグ(TF)をセットするようにしている。
ローダ処理部103は、ローダによって、OS等の起動に必要なドライバ等のファイルを各種ファイル記憶部251からRAM12の起動メモリ領域120にロードするものである。なお、OS等を起動するための準備を行った上で、OS等のカーネルを起動する。こうしてOS等が起動することとなり、次いで、制御が移されたローダによって特定APがRAM12に読み込まれる。さらに、読み込まれた特定AP内の通信制御プログラムによって、前述したルータ(図略)に対して、会員の端末1等の間での通信を許可するルーティング設定が施される。なお、この状態は、端末1にロードされた特定APにより、あるいはUSBメモリ2のCPU22によって、端末1にUSBメモリ2が装着されているか否かを周期的にチェックし、装着が継続されている間、維持されるようにすることが好ましい。あるいは、端末1において、起動後にUSBメモリ2が抜かれたことを示す信号が検出されるまで、装着が継続されていると扱ってもよい。
ところで、端末1は、BIOSから立ち上がって起動している間に異常が検知されると、MBR処理部102によって、マルウエアが存在する可能性が高いと見なして、起動動作を中止するようにしている。一方、このように起動を中止すれば、一律に端末1の立ち上げができず、特定APの使用環境を会員に提供できないといった問題がある。
そこで、再起動処理部104は、異常が発生した場合に、BIOSを経ることなく、MBR記憶部261からMBRのマスターブートプログラムを直接読み出して再起動動作を実行させるようにしている。
この場合、MBRのマスターブートプログラムを上書きする態様でもよいが、異常発生を受けて、起動メモリ領域120、あるいは後述するEFLAGS152(図4参照)を初期化した後、MBRのマスターブートプログラムを起動メモリ領域120に読み出すようにすることが好ましい。
入出力処理部105は、USBメモリ2との間での情報の授受を処理するものである。
次に、図3において、CPU22は、ROM23に記憶されたプログラムを実行することによって、ローダの分散配置(マッピング)処理を行う分散処理部221、起動中に異常の発生を検出する監視部222、異常発生後において再起動を実行する再起動処理部223、ローダの端末1への読み出しを行うローダ処理部224、端末1との間で情報の授受を処理する入出力処理部225、及び外部ブートによる起動後に特定APを用いて作成されたファイル等をNIC28、ネットワーク3を介して他の端末1、会員サーバ5及び取引先端末6との間で授受するネットワーク通信処理部226として機能する。
分散処理部221は、プログラムであるローダを所定の複数個に分割する処理、各分割ローダに対するマッピング情報(起動メモリ領域120上におけるマッピング位置情報DI及びマッピング順情報CX(CX=1,2,…,分割数))を対応付けてRAM24に記憶する処理、及び端末1からの読み出し要求を受けて出力する処理を行うものである。なお、RAM24に記憶される、各分割ローダとマッピング情報(起動メモリ領域120上におけるマッピング位置情報DI及びマッピング順情報CX)との対応付け情報は、後述の監視処理における照合元情報として用いられる。
監視部222は、分割ローダのマッピング毎にマッピング処理が適正か否かを監視する処理を行うもので、端末1からマッピング要求として送られてくる情報とRAM24に記憶されている照合元情報との異同を比較することで判断している。正常と判断される間は、起動動作が継続され、一方、異常と判断されると、再起動に移行する。
再起動処理部223は、監視部222によって異常と判断され、又は端末1から再起動指示があると、MBR記憶部261からMBRのマスターブートプログラムを直接読み出して起動メモリ領域120に出力するものである。
ローダ処理部224は、ローダの分割情報に従って、ローダから対応する分割ローダ部分を端末1側に出力するものである。
ROM23は、各処理部221〜226での処理を実行させるための処理プログラムを記憶する処理プログラム記憶部231、前述した会員を識別するための情報を記憶する会員情報記憶部232を備えている。RAM24は、前述した照合元情報を記憶する照合元情報記憶部241を備えている。
このように、USBメモリ2からのプログラムファイルの読み出し処理はCPU22が担い、端末1側でのロード中の処理及びロード後の処理は、端末1のCPU10が担うようにしている。
続いて、図4について説明する。チップセット15は、CPU10、各種レジスタ、例えば、処理データを一時的に保管するための汎用レジスタ151、CPU10の演算状態を示す値であるステークスレジスタの一種であるEFLAGS152、その他図略の各種のレジスタ類を備えている。また、図4に示すように、起動メモリ領域120は、USBメモリ2から読み出されたMBRのマスターブートプログラムの展開領域(以下、MBR展開領域という)1201、割込ベクタテーブル(interrupt vector table)1202、スタック(stack)領域1203、及びローダ等を展開するプログラム展開領域1204を有する。
割込ベクタテーブル1202とは、割込が発生した場合に処理するプログラムの先頭のアドレスが格納されている対応表をいい、テーブルの内容によって割込に対応した処理が実行される。割込ベクタテーブル1202は、例えば上位、下位各16ビットからなるベクタを複数有して構成されている。各ベクタは各処理プログラムに対応しており、例えば、ベクタ0は外部からの割込を行うためのINT0であり、ベクタ1はINT1であり、ベクタ2はINT2であり、さらにベクタ6は無効オペコードである。INT命令のベクタ領域には、割込が発生した時に遷移先となるアドレス、すなわち実行するべきプログラムが書き込まれているアドレスが書き込まれている。また、ベクタ6には無効オペコードの処理を実行するためのアドレスが書き込まれており、このアドレス位置には、本実施形態においては、USBメモリ2に再起動指示信号を出力するためのプログラムが書き込まれている。
スタック領域1203とは、割込処理等を行う場合に、CPU10のレジスタの内容を一時退避しておくために使用するメモリ領域で、複数の内容が記憶可能なスタック長を有している。各内容はここでは16ビットで書き込み可能にされている。スタック領域1203は、初期状態ではサイズは0であり、メモリ上の固定の基点(ベースポインタBP)と、書き込みに応じて(アドレスの小さい方に)延びた先の参照位置(スタックポインタSP)とで規定される。スタック領域1203は、EFLAGS152のトラップフラグTFがセットされて、CPU10の動作がシングルステップモードに移行した場合に、割込直前の命令内容に関するEFLAG、プログラムの内容、そのアドレスを示す(EFLAG,CS,IP)が16ビットで書き込まれて一時退避されるようにするためのものである。なお、本実施形態では、EFLAG,CS,IPの書き込みは、蓄積されず、毎回、ベースポインタBPから行われるように設定されているものとする。詳細は後述する。
プログラム展開領域1204は、ローダがマッピング可能なメモリ領域をいう。すなわち、RAM12内の起動メモリ領域120であって、前記領域1201〜1203を除いた領域である。分割ローダは、マッピング位置情報DIに従って、図4に示すように、例えばR1,R2,…,Rn,…,Rcxのように、分割数だけ分散配置(展開)される。なお、分割ローダに適宜数のダミーデータを加える態様としてもよい。この場合、分散処理部221は、ダミーデータを含めてマッピング位置情報DI、マッピング順情報CXを設定すればよい。また、分割ローダは、例えば最終ビット位置に、次のマッピング位置情報DIが書き込まれており、この情報DIを順次参照することで、ローダ後に元のローダに合成される。この場合、ダミーデータには、その旨の情報が書き込まれておれば、合成時に省く処理が可能となる。
図5は、スタック領域1203を割込ベクタテーブル1202に重畳する方法を説明する図である。スタック領域1203には、割込直前の命令内容に関するEFLAG,CS,IPがベースポインタBPから書き込まれる。そこで、このベースポインタBPの位置を、図の矢印で示すように、割込ベクタテーブル1202のベクタ2の上位ビットの位置に一致するように、スタック領域1203を位置設定する。従って、スタック領域1203へのEFLAG,CS,IPの書き込みは、図5に示すように、割込ベクタテーブル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起動時にマルウエアが動作して、EFLAGS152のフラグTFをセットし、割込ベクタテーブル1202のベクタ1にウイルス本体の存在するアドレスが書き込まれている場合を想定する。BIOS起動後、典型的にはMBR起動中に、ある命令が実行され、その後に、CPU10の制御がマルウエアに乗っ取られた(マルウエアによるデバッグ割込が発生した)と想定する。このとき、制御は、ベクタ1に書き込まれているアドレスに遷移し、マルウエアによる動作(マルウエアの複製、データ改竄や破壊等)が実行されることになる。一方、マルウエアの割込によって、スタック領域1203すなわち割込ベクタテーブル1202のベクタ1には、直前の命令内容を示す内の、情報IP,CSが書き込まれることになる。従って、ベクタ1に元々書き込まれていたマルウエアの格納位置を示すアドレスは書き換えられ、消去されたことになる。すなわち、マルウエアは、BIOS起動中に仕掛けをした状態において、MBR起動後に一度でも動作した途端、潜伏先のアドレスを失う結果となり、その後の動作が抑止されることになる。
ここで、MBRのマスターブートプログラムの一例について説明する。マスターブートプログラムは、
(1)割込ベクタテーブル1202のベクタ6のアドレスを再起動処理のプログラムが書き込まれたアドレスにセットする。
(2)スタック領域1203を割込ベクタテーブル1202のベクタ1とベクタ2の上位アドレスにセットする(重畳する)。
次いで、
(3)USBメモリ2へ、次の分割ローダのデータ要求を出力する。
(4)USBメモリ2から分割ローダを取得する。
(5)取得した分割ローダを起動メモリ領域120にマッピングする。
そして、LOOP命令によって、(3)〜(5)の処理が全ての分割ローダのロードについて終了するまで繰り返される。
ここで、(1)(2)の処理を行っておくことで、次に、マルウエアによるデバッグ例外が発生した時に、以下の処理が実行される。すなわち、マルウエアによるデバッグ例外が発生したとすると、ベクタ1のアドレスが、スタックされた情報に書き換えられるため、意図しないアドレス(=IP×16+CS)がセットされる。そして、マルウエアの動作が終了して、制御が、書き換えられたベクタ1のアドレス(IP×16+CS)に遷移し、無効オペコードの例外を発生させる。そうすると、制御は、無効オペコード例外を規定するベクタ6へ遷移することとなる。従って、制御は、ベクタ6にセットされているアドレスの再起動処理プログラムへ遷移するので、再起動指示が発せられることとなる。このように、一旦マルウエアによるデバッグ例外が発生すると、マルウエアの所在を規定するアドレスが消滅することで動作が抑止される。また、この異常の検出によって、再起動が行われるので、マルウエア自体を消去することが可能となる。
続いて、マスターブートプログラムは、
(6)トラップフラグTFをセットする。より具体的には、チップセット15のEFLAGS152内のトラップフラグTFに、1をセットする。トラップフラグTFをセットすることで、次回アセンブラ命令実行時にデバッグ例外が発生する。
(7)遷移(ジャンプ)命令により、スタック領域1203に任意のアドレスをセットする。そして、そのアドレスIP:CSから制御をローダに移す。
このジャンプ命令とは、アドレスIP(次回の実行予定アドレス)をセットする命令である。(6)でトラップフラグTFがセットされているため、本ジャンプ命令でスタック領域1203にスタックが積まれる。積まれる内容は、「IP」、「CS」及び「FLAGS」である。積まれたIP:CSで示されるアドレスは、ベクタ1(デバッグ例外発生時のベクタ)になるため、セットされたIP:CSは、ベクタ1のアドレスとして処理が行われる。
続いて、図6〜図11により、CPU10、CPU22におけるブート処理を説明する。図6は、端末1のCPU10によって実行されるBIOSの起動処理の手順を説明するフローチャートである。まず、端末1の電源がオンされ(ステップS1)、すなわちマザーボード上のクロックジェネレータが電源供給を受けてクロックパルスを出力し始めると、メモリや周辺機器のデバイスのチェックが行われる(ステップS3)。次いで、USBポートにUSBメモリ2が装着されているか否かの判断が、例えば公知のハンドシェイク信号の授受を利用するなどして確認される。
なお、以降においては、端末1のUSBポートにUSBメモリ2が装着されているという前提で述べる。すなわち、USBポートにUSBメモリ2が装着されていると、優先順位に従い、BIOS起動ルーチンによってMBRのマスターブートプログラムがRAM12の起動メモリ領域120に読み込まれる(ステップS5)。
次いで、異常の有無が判断される(ステップS7)。異常とは、MBRのマスターブートプログラムの読み込み中でのマルウエア等が活動をいう。異常がなければ、MBRのマスターブートプログラムの読み出しが終了したか否かが判断され(ステップS9)、終了したのであれば、MBRのマスターブートプログラムに制御が移される(ステップS11)。一方、MBRのマスターブートプログラムの読み込みが終了していないのであれば、ステップS5に戻って同様の処理が繰り返される。なお、ステップS7で、異常があると判断された場合、異常に応じた異常対応処理が実行される(ステップS13)。
図7は、USBメモリ2のCPU22によって実行されるローダの分散処理の手順を説明するフローチャートである。まず、端末1のUSBポートを介して電源供給を受けて、USBメモリ2が起動したか否かが判断される(ステップ#1)。この判断は、例えば図略のクロックジェネレータからのクロックパルスの発生を検出することで行う態様でもよい。
USBメモリ2が起動したと判断されると、ローダの分割処理が実行される(ステップ#3)。ローダの分散処理は、USBメモリ2の会員情報記憶部232に書き込まれている会員情報を固有情報として利用して、プログラムであるローダを所要数に分割する処理、分割ローダの読み出し順であるマッピング順情報CXとRAM12の起動メモリ領域120上のアドレス(マッピング位置情報)DIを設定する処理、及びこれらを対応付けて照合元情報記憶部241に記憶する処理である。なお、必要に応じて、予め準備されたダミーデータを途中に混在させるようにしてもよい。
このように、USBメモリ2が端末1に装着された状態で端末1の電源が投入される毎に、ローダの分散処理内容を固有情報を利用して変動することで、固定式の場合に比して秘匿性を高めることが可能となる。なお、ローダの分散方法は、固有情報の他、起動時の日時情報とか起動回数等の各要因を含めた所定のルールに従って設定してもよい。あるいは、乱数発生器からの乱数等を利用して無作為に設定する方法でもよい。また、各分割ローダが起動メモリ領域120上で、いずれの一部においても重なることがないように、データ長を考慮してマッピング領域が設定される。
図8は、端末1のCPU10によって実行されるMBRの実行処理の手順を説明するフローチャートである。まず、割込ベクタテーブルのベクタ6に書き込まれている(遷移先を示す)アドレスが、「リセット処理」のプログラムが書き込まれたアドレスにセットされる(ステップS21)。次いで、スタック領域1203の起動メモリ領域120上でのアドレス(ベースポインタBP)がベクタ2の上位アドレスに一致するようにセットされる(ステップS23)。
続いて、USBメモリ2へデータ要求等が出力される(ステップS25)。なお、分散2回目以降の各回において、直前の分散情報がデータ要求と共にUSBメモリ2に戻される。そこで、USBメモリ2側では、受信した分散情報と照合元情報記憶部241に記憶されている照合元情報との異同の判断を行い、不一致であれば、異常信号が端末1側に出力される。
CPU10は、USBメモリ2から、この異常信号の入力を受け付けると(ステップS27でY)、ローダの処理の実行を中止する(ステップS29)。
一方、異常信号に代えて、USBメモリ2から分割ローダ及び、そのマッピング位置情報DI及びマッピング順情報CX(初回であれば、CX=1)が入力されると(ステップS31)、分割ローダが起動メモリ領域120上のアドレスDIにロード(マッピング)される(ステップS33)。分割ローダの1回のロード毎に、マッピング順情報CXが分散処理時における分割値に達したか否かが判断され(ステップS35)、分割値に達していなければ、LOOP命令を繰り返すべく、ステップS25に戻って、同様に分割ローダの入力処理が繰り返される。一方、LOOP命令が終了したと判断された場合、トラップフラグTFがセットされる(ステップS37)。次いで、ジャンプ命令によりスタック領域に任意のアドレスがセットされる(ステップS39)。続いて、再起動要求が発生か否かの判断が行われる(ステップS41)。再起動要求が発生していなければ、読み出されたローダへ制御が移される(ステップS43)。一方、再起動要求が発生した場合には、再起動要求がUSBメモリ2に出力される(ステップS45)。
図9は、USBメモリ2のCPU22によって実行される監視処理の手順を説明するフローチャートである。まず、端末1からデータ要求、直前の分散情報が入力されたか否かが判断される(ステップ#11)。データ要求及び直前の分散情報が入力されなければ、本フローをスルーし、データ要求及び直前の分散情報が入力されると、直前の分散情報に対応した分散情報と照合元情報との異同が照合される(ステップ#13)。照合結果が一致であれば(ステップ#15でY)、次のマッピング位置情報DI、マッピング順情報CX及び対応する分割ローダが端末1に出力される(ステップ#17)。一方、照合結果が不一致であれば、異常信号が端末1に出力され(ステップ#19)、再起動処理が実行される(ステップ#21)。
なお、再起動処理とは、MBR起動中に、分割ローダの実際のマッピング位置が照合元情報と一致しない状態が生じた場合、その原因として後述するようにマルウエアが関わっていると見なして、現在のMBRの起動中の動作を中止し、BIOSを経由することなく、直接MBR記憶部261からMBRのマスターブートプログラムを読み出して起動する処理のことである。
ある分割ローダの起動メモリ領域120へのマッピング処理において、マルウエアによるデバッグ割込が発生したとする。この場合、CPU10によって実行される命令の書き込まれているアドレスは、マルウエアの書き込まれているアドレスといえることから、このマルウエアが関連するアドレスは、分割ローダのマッピング位置情報DIとは異なることになる。そうすると端末1から戻って来た位置情報DIは、明らかに照合元情報とは一致しない。そこで、監視部222は、端末1から送信されてくる情報と照合元情報との不一致を検出すると、RAM12内にマルウエアが存在するとして、BIOSを経由しないMBRのマスターブートプログラムの起動を指示するようにした。
図10は、USBメモリ2のCPU22によって実行される再起動処理の手順を説明するフローチャートである。まず、異常信号発生又は再起動指示の有無が判断される(ステップ#31)。いずれでもなければ、本フローをスルーし、一方、異常信号発生か再起動指示の一方が発生した場合、CPU22は、MBR記憶部261からMBRのマスターブートプログラムを読み出して、端末1のRAM12に出力する(ステップ#33)。
図11は、端末1のCPU10によって実行される再起動処理の手順を説明するフローチャートである。MBRのマスターブートプログラムの再起動が開始されると、まず、起動メモリ領域120が初期化される(ステップS51)。これにより、仮にマルウエアが存在していても、消去される。
次いで、その上に、MBRのマスターブートプログラムが書き込まれ(ステップS53)、書込が終了すると、制御がMBRに移され(ステップS55)、図8に示すようなMBRが実行される(ステップS57)。
本発明は、以下の態様を採用することが可能である。
(1)本実施形態では、外部デバイスとしてUSBを採用したが、これに限定されず、少なくとも、CPU及びROM、RAMを内蔵するデバイスであればよい。例えばICカードでもよいし、携帯型の通信機器に内蔵された態様であってもよい。
(2)なお、再起動で読み出されるMBRのマスターブートプログラムは、BIOS起動に起因して読み出される場合のプログラムと同一でもよいが、異なるものでもよい。例えば、MBR記憶部261に加えて、再起動用MBRを記憶する記憶部を設ける態様としてもよい。そして、この再起動用MBRは、例えば、所定のルールに従って、分割ローダを作成するようなものでもよく、あるいは分割することなく一括でロードするものとしてもよい。
(3)また、本発明では、トラップフラグTFを利用したシングルステップモードにおいて、1回のLOOP処理を行うものとしたが、LOOP処理は1回に限定されず、ローダのデータ長等を考慮して複数回に分けて実行されてもよい。また、スタック領域1203に書き込まれるFLAG,CS,IPのデータも、LOOP終了時点で更新される態様としたが、スタック領域1203の所定ビット箇所にこれらのデータが書き込まれるのであれば、LOOP命令以外の命令、例えばREP(リピート)命令を用いた命令を使用してローダを起動メモリ領域120にロードする態様、DMAC(ダイレクトメモリアクセスコントローラ)チップを用いてローダを起動メモリ領域120にロードする態様でもよい。
(4)また、本実施形態では、DI,CXを用いて各分割ローダをRAM12上に分散配置するようにしたが、これに代えて、各分割ローダの配置順番を設定し、RAM12上の所定のアドレスから連続して読み込むようにしてもよい。このようにしても、各分割ローダの分割数、配置順が異なり、また、読み込み開始アドレスを適宜変更する等することで、別の態様による分割ローダの分散配置が可能となる。
以上のとおり、本発明は、CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶された記憶手段と、前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段とを備えることが好ましい。
この構成によれば、スタック領域を割込ベクタテーブルに重畳し、さらにTFフラグをオンにしてスタック領域への直前の戻り情報の記録を行わせるようにすることで、マルウエアが動作すると、直ちにスタック領域の情報が更新され、かつこの更新内容は、割込ベクタテーブルの内容が更新されることになる。このスタック領域の情報の更新、すなわち割込ベクタテーブルの内容が書き換えられることで、マルウエア本体の潜伏位置情報が消去され、マルウエアは動きが完全に抑止されることとなる。このように、外部ブートによってマルウエアの動きが抑止される。
また、前記外部ブートデバイスにおいて、前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのINT2の上位ビットの位置に一致させることであることが好ましい。この構成によれば、スタック領域に書き込まれる情報CS,IP等が前記ベクタテーブルのINT2及びINT1に書き込まれることとなるので、仮にマルウエアによる割込が発生した場合を想定すると、マルウエアの所在情報が、上記書き込みによって失われることになり、マルウエアは動作不能に陥ることになる。
また、前記外部ブートデバイスにおいて、前記MBRは、前記分割ロードの実行前に、前記スタック領域の位置付けを行うことが好ましい。この構成によれば、MBRの起動開始時に、スタック領域の位置設定を行うようにしたので、マルウエアが動作することに応じて、以後の動きを不能にすることが可能となる。
また、前記外部ブートデバイスにおいて、前記分散処理手段は、前記ローダの前記起動メモリ領域へのロードを、所定回数ずつループ命令で実行することが好ましい。この構成によれば、ローダが分散配置されるので、書き込み位置が分散する分割ローダのマッピング動作途中で割り込んで制御を取ることが容易ではなくなる。
また、前記外部ブートデバイスにおいて、前記MBRは、最初の前記ループ命令の実行前に、前記スタック領域の位置付けを行うことが好ましい。この構成によれば、MBRの起動開始時に、スタック領域の位置設定を行うようにしたので、マルウエアが動作することに応じて、以後の動きを不能にすることが可能となる。
また、前記外部ブートデバイスにおいて、前記分散処理手段は、前記起動メモリ領域内での前記マッピング情報をブート毎に異ならせることが好ましい。この構成によれば、分割ローダのマッピング位置が毎回変動することで、マルウエアの割込に判断要素を持たせることで、割込動作をしにくくすることが可能となる。
また、前記外部ブートデバイスにおいて、固有情報が記憶された固有情報記憶手段を備え、前記分散処理手段は、前記マッピング情報を前記固有情報を用いて生成することが好ましい。この構成によれば、各外部ブートデバイスに応じた固有のマッピング内容が設定可能となる。
また、前記外部ブートデバイスにおいて、前記MBRの起動動作に異常が発生したか否かを監視する監視手段と、前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出す再起動手段とを備えたことが好ましい。この構成によれば、マルウエアが検出される等の異常が検出されると、BIOSを介さず情報処理装置が再起動されるので、再起動によってBIOSに関わるマルウエアが起動メモリ領域上から排除される。
また、前記外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するネットワーク通信システムを構築することが好ましい。この構成によれば、外部ブートデバイス及びネットワークを介して情報処理端末間で、マルウエアの影響を受けない高セキュリティの下での情報通信が実現される。
1 端末(情報処理装置)
10,22 CPU
11 ROM
12 RAM
101 BIOS処理部
102 MBR処理部
103 ローダ処理部
104 再起動処理部
105 入出力処理部
110 フラッシュROM
12 RAM
120 起動メモリ領域
1201 MBR展開領域
1202 割込ベクタテーブル
1203 スタック領域
1204 プログラム展開領域
121 HDD
15 チップセット
2 USBメモリ(外部ブートデバイス)
221 分散処理部(分散処理手段)
222 監視部(監視手段)
223 再起動処理部(再起動手段)
224 ローダ処理部
225 入出力処理部
23 ROM
231 処理プログラム記憶部
232 会員情報記憶部
24 RAM
241 照合元情報記憶部
251 各種ファイル記憶部
252 ローダ記憶部
261 MBR記憶部(記憶手段)
3 ネットワーク

Claims (15)

  1. CPUを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、
    前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶された記憶手段と、
    前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段とを備えたことを特徴とする外部ブートデバイス。
  2. 前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのINT2の上位ビットの位置に一致させることであることを特徴とする請求項1に記載の外部ブートデバイス。
  3. 前記MBRは、前記分割ローダのロードの実行前に、前記スタック領域の位置付けを行うことを特徴とする請求項1又は2記載の外部ブートデバイス。
  4. 前記分散処理手段は、前記ローダの前記起動メモリ領域へのロードを、所定回数ずつループ命令で実行することを特徴とする請求項1〜3のいずれかに記載の外部ブートデバイス。
  5. 前記MBRは、最初の前記ループ命令の実行前に、前記スタック領域の位置付けを行うことを特徴とする請求項4記載の外部ブートデバイス。
  6. 前記分散処理手段は、前記起動メモリ領域内での前記マッピング情報をブート毎に異ならせることを特徴とする請求項1〜5のいずれかに記載の外部ブートデバイス。
  7. 固有情報が記憶された固有情報記憶手段を備え、
    前記分散処理手段は、前記マッピング情報を前記固有情報を用いて生成することを特徴とする請求項6に記載の外部ブートデバイス。
  8. 前記MBRの起動動作に異常が発生したか否かを監視する監視手段と、
    前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出す再起動手段とを備えたことを特徴とする請求項1〜6のいずれかに記載の外部ブートデバイス。
  9. 請求項1〜8のいずれかに記載の外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するネットワーク通信システム。
  10. CPUを備える情報処理装置に装着して前記情報処理装置をコンピュータを内蔵する外部ブートデバイスによってブートする外部ブートプログラムであって、
    前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶された記憶手段、
    前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段、として前記コンピュータを機能させる外部ブートプログラム。
  11. 前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのINT2の上位ビットの位置に一致させることであることを特徴とする請求項10に記載の外部ブートプログラム。
  12. 前記MBRの起動動作に異常が発生したか否かを監視する監視手段、
    前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出す再起動手段、として前記コンピュータを機能させる請求項10又は11に記載の外部ブートプログラム。
  13. CPUを備える情報処理装置に装着して前記情報処理装置を外部ブートデバイスによってブートする外部ブート方法であって、
    前記外部ブートデバイスの記憶手段に、前記情報処理装置のBIOSによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのMBRであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するMBRが記憶され、
    前記外部ブートデバイスの分散処理手段が、前記MBRの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成することを特徴とする外部ブート方法。
  14. 前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのINT2の上位ビットの位置に一致させることを特徴とする請求項13に記載の外部ブート方法。
  15. 前記外部ブートデバイスの監視手段が、前記MBRの起動動作に異常が発生したか否かを監視し、
    前記外部ブートデバイスの再起動手段が、前記監視手段によって前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記MBRを読み出すことを特徴とする請求項13又は14に記載の外部ブート方法。
JP2012514629A 2010-05-11 2010-05-11 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム Pending JPWO2011141997A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/057962 WO2011141997A1 (ja) 2010-05-11 2010-05-11 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム

Publications (1)

Publication Number Publication Date
JPWO2011141997A1 true JPWO2011141997A1 (ja) 2013-07-22

Family

ID=44914066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012514629A Pending JPWO2011141997A1 (ja) 2010-05-11 2010-05-11 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム

Country Status (7)

Country Link
US (1) US20130124846A1 (ja)
EP (1) EP2570956A1 (ja)
JP (1) JPWO2011141997A1 (ja)
KR (1) KR20130027026A (ja)
CN (1) CN102985929A (ja)
SG (1) SG185114A1 (ja)
WO (1) WO2011141997A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014096126A (ja) * 2012-11-12 2014-05-22 Yec:Kk 外部接続記憶装置
DE102013224365A1 (de) * 2013-11-28 2015-05-28 Siemens Ag Österreich Verfahren für einen sicheren Hochfahrablauf eines elektronischen Systems
CN103942482B (zh) * 2014-05-13 2017-01-18 西安邮电大学 一种基于嵌入式的主机安全保护方法
KR101692015B1 (ko) 2015-03-30 2017-01-03 주식회사 웨인 운영체제와 파일저장 기능이 가능한 이동식 저장장치
CN110471675B (zh) * 2019-08-21 2023-06-16 山东比特智能科技股份有限公司 一种程序烧录方法、系统、装置及计算机可读存储介质
CN111026462B (zh) * 2019-12-10 2023-08-29 百度在线网络技术(北京)有限公司 小程序控制方法、装置、设备和介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0510244A1 (en) * 1991-04-22 1992-10-28 Acer Incorporated Method and apparatus for protecting a computer system from computer viruses
JPH06230959A (ja) * 1993-02-02 1994-08-19 Otec:Kk コンピュータウイルス防止制御方法及び装置
KR20000009369A (ko) * 1998-07-23 2000-02-15 윤종용 피씨카드를장착가능한컴퓨터시스템및그것의부팅방법
CN1258885A (zh) * 1998-12-28 2000-07-05 神达电脑股份有限公司 可侦测开机型病毒的电脑系统
TW462025B (en) * 1999-06-23 2001-11-01 Micro Star Int Co Ltd BIOS virus protection method
JP4464497B2 (ja) * 1999-10-04 2010-05-19 株式会社アイ・オー・データ機器 外部記憶装置のインターフェイス装置および同装置を内蔵した外部記憶装置
US7930531B2 (en) * 2000-01-06 2011-04-19 Super Talent Electronics, Inc. Multi-partition USB device that re-boots a PC to an alternate operating system for virus recovery
US6711675B1 (en) * 2000-02-11 2004-03-23 Intel Corporation Protected boot flow
US8095783B2 (en) * 2003-05-12 2012-01-10 Phoenix Technologies Ltd. Media boot loader
JP4568489B2 (ja) * 2003-09-11 2010-10-27 富士通株式会社 プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置
US7293166B2 (en) * 2004-03-05 2007-11-06 Hewlett-Packard Development Company, L.P. Method of indicating a format of accessing an operating system contained on a USB memory device
US7383386B1 (en) * 2004-05-21 2008-06-03 Mcm Portfolio Llc Multi partitioned storage device emulating dissimilar storage media
JP2006236193A (ja) 2005-02-28 2006-09-07 Fujitsu Ltd 起動プログラム実行方法、デバイス、記憶媒体及びプログラム
TWI259977B (en) * 2005-05-03 2006-08-11 Novatek Microelectronics Corp Structure of embedded memory unit with loader and system structure and operation method for the embedded memory apparatus
CN100362471C (zh) * 2005-08-16 2008-01-16 中国船舶重工集团公司第七〇九研究所 硬盘主引导区程序病毒的防御方法
JP4793628B2 (ja) 2005-09-01 2011-10-12 横河電機株式会社 Os起動方法及びこれを用いた装置
US20070130454A1 (en) * 2005-12-05 2007-06-07 Bentley Carl M Hardware identification utility
KR100746032B1 (ko) * 2006-01-04 2007-08-06 삼성전자주식회사 마스터 부트 레코드를 관리하는 저장 매체 및 상기 저장매체를 이용한 컴퓨터 시스템의 부팅 방법
US7757112B2 (en) * 2006-03-29 2010-07-13 Lenovo (Singapore) Pte. Ltd. System and method for booting alternate MBR in event of virus attack
US7975304B2 (en) * 2006-04-28 2011-07-05 Trend Micro Incorporated Portable storage device with stand-alone antivirus capability
CN101359356B (zh) * 2007-08-03 2010-08-25 联想(北京)有限公司 删除或隔离计算机病毒的方法及系统
US8510542B2 (en) * 2008-10-01 2013-08-13 Oracle International Corporation Flash memory device having memory partitions and including an embedded general purpose operating system for booting a computing device
JP3158114U (ja) * 2009-12-02 2010-03-18 株式会社ハギワラシスコム 挿抜式ストレージデバイス
US9588829B2 (en) * 2010-03-04 2017-03-07 F-Secure Oyj Security method and apparatus directed at removable storage devices

Also Published As

Publication number Publication date
SG185114A1 (en) 2012-12-28
CN102985929A (zh) 2013-03-20
KR20130027026A (ko) 2013-03-14
US20130124846A1 (en) 2013-05-16
EP2570956A1 (en) 2013-03-20
WO2011141997A1 (ja) 2011-11-17

Similar Documents

Publication Publication Date Title
US11089016B2 (en) Secure system on chip
US9361462B2 (en) Associating a signing key with a software component of a computing platform
JP5526450B2 (ja) ハードウェア構成を変更する方法、ハードウェア構成の変更を遠隔位置において可能にする方法、及びそのための装置
RU2385483C2 (ru) Система и способ использования гипервизора, чтобы управлять доступом к предоставляемой в аренду вычислительной машине
JP5551130B2 (ja) サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化
JP4498735B2 (ja) オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム
WO2011145199A1 (ja) 外部ブートデバイス、外部ブート方法、情報処理装置及びネットワーク通信システム
CN103262092B (zh) 基于存储驱动器的防恶意软件方法和装置
US20100082991A1 (en) Trusted key management for virtualized platforms
JP2011527777A (ja) 安全な起動メカニズムを備えたコンピュータシステム
WO2011141997A1 (ja) 外部ブートデバイス、外部ブートプログラム、外部ブート方法及びネットワーク通信システム
US20080244746A1 (en) Run-time remeasurement on a trusted platform
US20110040961A1 (en) Binding data to a computing platform through use of a cryptographic module
US11909882B2 (en) Systems and methods to cryptographically verify an identity of an information handling system
WO2013069587A1 (ja) 情報処理空間管理方法、外部デバイス及び情報処理装置
JP6951375B2 (ja) 情報処理装置、情報処理方法及びプログラム
US9202056B2 (en) Inter-processor attestation hardware
WO2012053053A1 (ja) 外部ブートデバイス及びネットワーク通信システム
WO2013061782A1 (ja) 外部ブートデバイス及び外部ブート方法
Yadav SECURE BOOTLOADER IN EMBEDDED SYSTEM USING MISRA-C
WO2013080848A1 (ja) ファイル通信処理方法及び外部デバイス
KR20240006658A (ko) 소프트웨어의 사용을 보안하는 방법