(57)【要約】  ＵＳＢメモリ（２）は、ＭＢＲ記憶部（２６１）と、分散処理部（２２１）とを備えている。ＭＢＲ記憶部（２６１）は、端末（１）のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して端末（１）の起動メモリ領域（１２０）上にマッピングさせるためのＭＢＲであって、起動メモリ領域（１２０）に設定されている割込ベクタテーブル（１２０２）に対してスタック領域（１２０３）をベクタ２の上位ビットに重畳して位置付けるプログラムが記憶される。分散処理部（２２１）は、ＭＢＲの起動に先立って、ローダを予め設定された個数に分割すると共に各分割ローダの起動メモリ領域へのロードの際のマッピング情報を作成する。これにより、外部ブートによってマルウエアの動きを抑止するようにした。
2011141997.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、
前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶された記憶手段と、
前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段とを備えたことを特徴とする外部ブートデバイス。
【請求項２】
前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのＩＮＴ２の上位ビットの位置に一致させることであることを特徴とする請求項１に記載の外部ブートデバイス。
【請求項３】
前記ＭＢＲは、前記分割ローダのロードの実行前に、前記スタック領域の位置付けを行うことを特徴とする請求項１又は２記載の外部ブートデバイス。
【請求項４】
前記分散処理手段は、前記ローダの前記起動メモリ領域へのロードを、所定回数ずつループ命令で実行することを特徴とする請求項１〜３のいずれかに記載の外部ブートデバイス。
【請求項５】
前記ＭＢＲは、最初の前記ループ命令の実行前に、前記スタック領域の位置付けを行うことを特徴とする請求項４記載の外部ブートデバイス。
【請求項６】
前記分散処理手段は、前記起動メモリ領域内での前記マッピング情報をブート毎に異ならせることを特徴とする請求項１〜５のいずれかに記載の外部ブートデバイス。
【請求項７】
固有情報が記憶された固有情報記憶手段を備え、
前記分散処理手段は、前記マッピング情報を前記固有情報を用いて生成することを特徴とする請求項６に記載の外部ブートデバイス。
【請求項８】
前記ＭＢＲの起動動作に異常が発生したか否かを監視する監視手段と、
前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出す再起動手段とを備えたことを特徴とする請求項１〜６のいずれかに記載の外部ブートデバイス。
【請求項９】
請求項１〜８のいずれかに記載の外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するネットワーク通信システム。
【請求項１０】
ＣＰＵを備える情報処理装置に装着して前記情報処理装置をコンピュータを内蔵する外部ブートデバイスによってブートする外部ブートプログラムであって、
前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶された記憶手段、
前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段、として前記コンピュータを機能させる外部ブートプログラム。
【請求項１１】
前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのＩＮＴ２の上位ビットの位置に一致させることであることを特徴とする請求項１０に記載の外部ブートプログラム。
【請求項１２】
前記ＭＢＲの起動動作に異常が発生したか否かを監視する監視手段、
前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出す再起動手段、として前記コンピュータを機能させる請求項１０又は１１に記載の外部ブートプログラム。
【請求項１３】
ＣＰＵを備える情報処理装置に装着して前記情報処理装置を外部ブートデバイスによってブートする外部ブート方法であって、
前記外部ブートデバイスの記憶手段に、前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶され、
前記外部ブートデバイスの分散処理手段が、前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成することを特徴とする外部ブート方法。
【請求項１４】
前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのＩＮＴ２の上位ビットの位置に一致させることを特徴とする請求項１３に記載の外部ブート方法。
【請求項１５】
前記外部ブートデバイスの監視手段が、前記ＭＢＲの起動動作に異常が発生したか否かを監視し、
前記外部ブートデバイスの再起動手段が、前記監視手段によって前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出すことを特徴とする請求項１３又は１４に記載の外部ブート方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵを備える情報処理装置に装着して前記情報処理装置を外部ブートデバイスによってブートするブート技術に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークに接続されたサーバや端末（パーソナルコンピュータ）等の情報処理装置に対して各種のウイルス等が侵入し、乃至は潜伏し、それによってデータの盗聴、盗難、改竄、漏洩及び攻撃等の被害が生じている。かかるウイルス被害に対し、ウイルスの侵入を可及的に阻止する目的で、ウイルスを発見し乃至は駆除するソフトウエアの改良乃至は開発、回線制限（アドレス制限）の設定を行う等の対策が講じられている。しかし、ウイルスの新種発見から駆除用のソフトウエアの開発までの時間遅れ等を考慮すれば、ウイルスの侵入を確実に阻止することは困難である。また、電源投入を受けて情報処理装置が立ち上がる間にウイルス感染する虞も考えられ、かかる期間内に対する有効なウイルス対策も望まれる。【０００３】
特許文献１には、情報処理装置のハードディスク内に格納されたＯＳ（Operation System）起動方法が記載されている。より詳細には、情報処理装置の電源投入が検知されると、フラッシュメモリに記憶されているＢＩＯＳ（Basic Input/Output system）を起動して起動可能なブートデバイスを検索し、ＵＳＢ（Universal Serial Bus）メモリに格納されているブートＯＳを起動して、まず表示手段にパスワードの入力画面を表示させる。次いで、この入力画面に対して入力手段からのパスワードの入力を受け付ける。パスワードが入力されると、入力パスワードとＵＳＢメモリに固有な情報とを連結してハッシュ値に変換し、起動すべきハードディスクのロック解除パスワードを生成する。そして、起動するハードディスクがセキュリティ設定済みであると判断した場合には、前記ロック解除パスワードで前記ハードディスクのロック状態を解除する一方、前記ハードディスクがセキュリティ設定済みではないと判断した場合には、前記ハードディスクのセキュリティを設定し、ロック状態が解除された前記ハードディスクのＭＢＲ(Master Boot Record)を起動し、ＯＳのブートローダを起動し、これによってＯＳを起動する方法である。これにより、ＯＳ起動時のセキュリティ認証が可能になる。また、特許文献１には、前記ハードディスクのロック状態が解除された状態で、ＵＳＢメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されている。【０００４】
また、特許文献２には、起動プログラムの実行方法が記載されている。より詳細には、パーソナルコンピュータからハードディスクに対する最初の読込み要求に対し、起動プログラムを格納した記憶媒体の起動セクタに先立ってセキュリティ等の任意プログラムを格納した仮起動セクタを読み出し、該任意プログラムを実行させる起動前処理ステップを有するようにしたものである。そして、このセキュリティ等の任意プログラムの実行後に本来の起動プログラムを実行してＯＳを起動させるものである。これにより、パーソナルコンピュータのＢＯＩＳや記憶媒体の起動セクタ（ＬＢＡ０）を変更することなく、ＯＳ起動に先立ってセキュリティ等の任意のプログラムの実行を可能としている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−６６１２３号公報
【特許文献２】特開２００６−２３６１９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１は、パスワード入力画面に対してパスワードを入力する態様であるためパスワードの盗難の虞があることから、ＵＳＢメモリの固有情報と結合してハッシュ値を作成し、ロック解除情報とする個人認証技術である。また、特許文献１には、ＵＳＢメモリに格納されているウイルスチェック機能を用いてウイルスチェックを行うことでハードディスクのウイルスチェックを可能とすることが記載されているが、具体的な記載は一切ない。【０００７】
一方、特許文献２では、ハードディスク内の仮起動セクタの任意プログラムがウィルスチェックプログラムである場合においても、そのプログラムが実行される前に、例えばＲｏｏｔｋｉｔの形態を有するような不正プログラムが起動され、任意プログラムから自身（不正プログラム）を隠蔽することも可能であるため、ウイルスチェックに対する信頼性に一定の限界がある。また、特許文献２にはＯＳ起動前にウイルスを監視する具体的な方法は一切記載されていない。電源投入前から潜伏していたウイルスを仮に発見し得るとしても、再起動（ＯＳ起動）後にはウイルスチェックは行われていないため、再起動中に侵入するウイルス対して依然として無防備の状態にある。さらに、特許文献１、２はパーソナルコンピュータ側で処理を担う一般的態様であるから、この点からしても高い信頼性を確保するには限界がある。【０００８】
また、近年、特許文献１に記載の起動方法のような、いわゆるＵＳＢメモリブート方式が知られている。ＵＳＢメモリブート方式は、ＵＳＢメモリを端末に接続して端末の電源が投入された場合に、ＢＩＯＳからＵＳＢメモリが優先的に指定されて、その内部に記憶されたＯＳがブートされ、例えば職場の端末を自己のＰＣ環境の元で使用し得るようにした技術である。このＵＳＢメモリブート方式の別の態様として、ウイルス駆除プログラムを記憶しておき、優先的に起動させて、端末内の潜伏ウイルスを駆除可能にしたものも知られている。しかし、ＵＳＢメモリ自身のウイルス感染の有無やウイルス駆除処理終了からＯＳの起動までの間でのウイルス侵入の有無については何等言及されていない。【０００９】
本発明の目的は、ウイルス等のマルウエアの動きを抑止する外部ブートの技術を提供することにある。【００１０】
また、本発明の目的は、起動中にマルウエアに関わる異常を検出すると、ＢＩＯＳを介さない情報処理装置の再起動を行う技術を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係る外部ブートデバイスは、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶された記憶手段と、前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段とを備えたことを特徴とするものである。【００１２】
また、本発明に係るネットワーク通信システムは、前記外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するものである。【００１３】
また、本発明に係る外部ブートプログラムは、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をコンピュータを内蔵する外部ブートデバイスによってブートする外部ブートプログラムであって、前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶された記憶手段、前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段、として前記コンピュータを機能させるものである。【００１４】
また、本発明に係る外部ブート方法は、ＣＰＵを備える情報処理装置に装着して前記情報処理装置を外部ブートデバイスによってブートする外部ブート方法であって、前記外部ブートデバイスの記憶手段に、前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶され、前記外部ブートデバイスの分散処理手段が、前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成することを特徴とするものである。【００１５】
これらの発明によれば、パーソナルコンピュータ（ＰＣ）等の情報処理装置に、例えばＵＳＢ（Universal Serial Bus）メモリ等の外部ブートデバイスが装着された状態で、情報処理装置の電源が投入されると、情報処理装置は操作可能な状態になるようにＣＰＵ等によって起動（ブート）される。【００１６】
また、前記外部ブートデバイスは記憶手段を備え、この記憶手段には、前記情報処理装置のＢＩＯＳによって優先して起動するように設定されたＭＢＲ(Master Boot Record)が記憶されている。ＭＢＲはローダを読み出すためのプログラムである。そして、ＭＢＲは、前記情報処理装置の起動メモリ領域に予め設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有する。また、前記外部ブートデバイスの分散処理手段は、前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する。【００１７】
従って、分割された各分割ローダは、起動メモリ領域内に適宜マッピングされつつロードされる。一方、ＢＩＯＳ内にマルウエア、例えばウイルス（なお、ウイルス本体はハードディスク（ＨＤＤ）内）が潜伏していた場合、ウイルスは、ＢＩＯＳの起動中に、ＥＦＬＡＧレジスタ内のトラップフラグ（ＴＦ：trap flag）をオンにしてプログラムの実行手順をシングルステップモードにすると共に、割込ベクタテーブル内のＩＮＴ１の内容を自己のウイルス本体の潜伏位置に設定して待機する。その後、ＣＰＵによって、ＢＩＯＳが立ち上がり、ＭＢＲに制御が移されて、分割ローダのロードが開始される。ウイルスは、シングルステップモード中の、ある時点でＭＢＲプログラムからＣＰＵの動作を奪い、これによって、ウイルスのコピー、データ改竄、破壊、流出等の各種の悪意行為が実行される可能性がある。そこで、スタック領域を割込ベクタテーブルに重畳し、さらにＴＦフラグをオンにしてスタック領域への直前の戻り情報の記録を行わせるようにすることで、ウイルスが動作すると、直ちにスタック領域の情報が更新され、かつこの更新内容は、割込ベクタテーブルの内容が更新されることになる。このスタック領域の情報の更新、すなわち割込ベクタテーブルの内容が書き換えられることで、ウイルス本体の潜伏位置情報が消去され、ウイルスは動きが完全に抑止されることとなる。このように、外部ブートによってウイルスの動きが抑止される。【００１８】
また、本発明に係る外部ブートデバイスは、前記ＭＢＲの起動動作に異常が発生したか否かを監視する監視手段と、前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出す再起動手段とを備えたことを特徴とするものである。【００１９】
また、本発明に係る外部ブートプログラムは、前記ＭＢＲの起動動作に異常が発生したか否かを監視する監視手段、前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出す再起動手段、として前記コンピュータを機能させるものである。【００２０】
また、本発明に係る外部ブート方法は、前記外部ブートデバイスの監視手段が、前記ＭＢＲの起動動作に異常が発生したか否かを監視し、前記外部ブートデバイスの再起動手段が、前記監視手段によって前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出すことを特徴とするものである。【００２１】
これらの発明によれば、前記外部ブートデバイスの監視手段によって、前記ＭＢＲの起動動作に異常が発生したか否かが監視される。そして、前記異常が検出された場合に、前記外部ブートデバイスの再起動手段によって、前記情報処理端末の起動メモリ領域に、前記ＭＢＲが読み出（ロード）される。従って、例えばＢＩＯＳの起動中に潜伏ウイルスが動作し、その結果、ＭＢＲの起動動作に異常が発生したような場合に、この異常が検出されると、ＢＩＳＯを再起動することなく、ＭＢＲを読み出して起動メモリ領域を書き直す（リセットする）ようにして、起動メモリ領域がクリアにされる。このように、マルウエアが検出される等の異常が検出されると、ＢＩＯＳを介さず情報処理装置が再起動されるので、再起動によってＢＩＯＳに関わるマルウエアが起動メモリ領域上から排除される。
【発明の効果】
【００２２】
本発明によれば、外部ブートによってマルウエアの動きを抑止することができる。【００２３】
また、本発明によれば、起動中にマルウエアに関わる異常を検出すると、ＢＩＯＳを介さない情報処理装置の再起動を実行することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態に係る外部ブートデバイスが適用されるネットワーク通信システムを示す概要図である。
【図２】図１に示す外部ブートデバイスのハードウエア構成の一例を示すブロック図である。
【図３】端末及び外部ブートデバイスのブートに関連する機能部を示すブロック図である。
【図４】端末のメモリマップ図である。
【図５】スタック領域を割込ベクタテーブルに重畳する方法を説明する図である。
【図６】端末のＣＰＵによって実行されるＢＩＯＳの起動処理の手順を説明するフローチャートである。
【図７】ＵＳＢメモリのＣＰＵによって実行されるローダの分散処理の手順を説明するフローチャートである。
【図８】端末のＣＰＵによって実行されるＭＢＲの実行処理の手順を説明するフローチャートである。
【図９】ＵＳＢメモリのＣＰＵによって実行される監視処理の手順を説明するフローチャートである。
【図１０】ＵＳＢメモリのＣＰＵによって実行される再起動処理の手順を説明するフローチャートである。
【図１１】端末のＣＰＵによって実行される再起動処理の手順を説明するフローチャートである。
【発明を実施するための形態】
【００２５】
図１は、本発明の一実施形態に係る外部ブートデバイスが適用されるネットワーク通信システムを示す概要図である。図２は、図１に示す外部ブートデバイスのハードウエア構成の一例を示すブロック図である。図３は、端末及び外部ブートデバイスのブートに関連する機能部を示すブロック図である。図４は、端末のメモリマップ図である。
【００２６】
図１に示すネットワーク通信システムは、例えばパーソナルコンピュータを内蔵する情報処理装置の一例である端末１と、この端末１に接続された外部ブートデバイスの一例であるＵＳＢ（Universal Serial Bus）メモリ２と、インターネット等のネットワーク３とを備えている。端末１はプロバイダ（ＩＳＰ）４を介してネットワーク３と接続されている。本実施形態では、端末１はそのままネットワーク３に接続され、また、ＵＳＢメモリ２が装着された状態では、後述するようにＵＳＢメモリ２を経由してネットワーク３と接続される構成を有する。ネットワーク３上には複数のＩＳＰ４が配設されており、各ＩＳＰ４には、１又は複数の端末１や各種の情報を提供する図略のＷｅｂサイトが接続されている。ＵＳＢメモリ２は、例えば、端末１からの操作を通して所定のサービスの提供を受ける権限を持つ会員として登録を受ける際に支給される。ＵＳＢメモリ２は、内部の記憶部に会員を識別する情報及びその他の情報が記録されている。ＵＳＢメモリ２の構成及び機能等に関しては後述する。
【００２７】
端末１は、コンピュータを有しており、図３に示すように、制御手段としてのＣＰＵ（Central Processing Unit）１０を有する。ＣＰＵ１０は、ＲＯＭ（Read Only Memory）１１とＲＡＭ（Random Access Memory）１２とに接続されている。ＲＯＭ１１には、データが書き換え可能なフラッシュＲＯＭを含む。本実施形態では、ＲＯＭ１１は、このフラッシュＲＯＭ、またＣＭＯＳ（Complementary MetalOxide Semiconductor）等を備え、フラッシュＲＯＭ１１０（図４参照）にＢＩＯＳ（Basic Input/Output system）が書き込まれている。ＢＩＯＳを書き換え可能にすることで、起動時におけるＭＢＲ(Master Boot Record)の記憶部に対する、読み出しの優先順位を設定可能にする態様としている。また、ＣＰＵ１０には、図３に示すように、操作者が必要な指令や情報を入力するテンキーやマウス等を備える操作部１３及び画像を表示する表示部１４が接続されている。表示部１４は、入力情報の確認のための表示や通信内容の表示のために用いられる。なお、本実施形態では、ＢＩＯＳは、外部ブートデバイスであるＵＳＢメモリ２が優先的に指定されるように設定されている。ＲＡＭ１２は、例えば起動時のワークエリアである起動メモリ領域１２０、通常処理を実行する場合のワークエリア、及び必要なプログラムやデータ類が格納されるハードディスク（ＨＤＤ）１２１等から構成されている。
【００２８】
また、端末１には、図４に示すように、チップセット１５が設けられている。チップセット１５は、図略のマザーボードを構成する主要部品で、ＣＰＵや各種メモリ、その他ハードディスク（ＨＤＤ１２１、図４参照）や図略のＣＤ−ＲＯＭ等、マザーボードに繋がっているあらゆる部品間のデータのやり取りをコントロールするものである。
【００２９】
本ネットワーク３には、ＩＳＰ４を介して、１又は所定数の会員サーバ５及び複数の取引先端末６が接続されている。会員サーバ５は、端末１を所有する乃至は操作を支配し得る会員に関する適宜な情報、例えば会員の氏名、名称、電子メールアドレス、住所等の会員情報等を会員単位で記憶するものである。取引先端末６は、クライアントである各端末１からの取引要求に対する処理、例えば電子決済による処理、取引情報を記憶しかつ情報管理を行うものである。会員サーバ５には、前記会員情報の他、必要に応じて端末１に提供可能な情報、例えば会員に提供するサービスを実行する上で必要な処理ソフトウエア、例えば所要の書類を作成するための書類作成プログラムとか、さらには大容量サーバに端末１毎の取引内容及び履歴情報が記憶（保管及び管理）されていてもよい。
【００３０】
なお、本発明におけるネットワーク通信システムは、以下の態様が一例として採用可能である。端末１は、専用のネットワークにのみ接続可能な専用端末としてもよいし、インターネットとの切り替えで他のネットワークにも接続可能な汎用端末のいずれでもよい。端末１内には、例えば汎用端末の場合、一般的な文書や図形の作成ソフトウエアを利用しての情報の作成、加工、記憶、更に通信用のソフトウエアを利用しての情報の送受信等の一般的な各処理を実行するプログラムファイル（汎用ＡＰ（application program）という）が格納されている。また、ＵＳＢメモリ２内には、特定のアプリケーションソフトウエアの実行に関連する処理を行うプログラムファイル（特定ＡＰという）が記憶されている。汎用ＡＰは、端末１内の元々のＭＢＲ、ローダによって読み出されるＯＳによって動作可能にされるものであり、特定ＡＰは、ＵＳＢメモリ２内のＭＢＲ、ローダ（または再起動プログラムによって起動されたＭＢＲ）によって読み出されるＯＳによって動作可能にされるものである。より具体的には、会員間である消費者、商店及び企業等の端末１には、特定ＡＰとして、商品やサービスの売買、見積もり乃至は請求、入出金に関する（いわゆる商取引に関する）各書類の作成と通信とを行うソフトウエア、及び必要に応じて所定の認証処理のソフトウエアが、ブート後にＵＳＢメモリ２からロードされる。すなわち、端末１は、特定ＡＰによって、一般的な商取引における決済、例えば業者店舗からの請求書の発行、受領や、購買者側から請求書発行元の契約金融機関の口座への入金（すなわち支払い）指示書、その受領書の発行の他、電子決済の如何を問わず種々の電子書面での送受信処理を可能とするものである。特定ＡＰは、各種書類をテキスト形式の、またバイナリー形式の電子ファイルとして作成可能である。電子ファイルは、例えば会員サーバ５を中継して（あるいは並行して）端末１間で授受される。各金融機関の端末１には、消費者や企業の端末１からの金融的な決済書面に従った決済指示処理（金融機関間での決済処理の指令等）を行う特定ＡＰもインストールされている。端末１には、登録会員毎に固有の情報が書き込まれたＵＳＢメモリ２が配布される。会員はサービスの提供を受ける場合、このＵＳＢメモリ２を端末１のＵＳＢポートに差し込み、少なくともＵＳＢの正当性の認証処理を、好ましくはさらに個人認証（ＵＳＢメモリ２の正当所持者であることの認証）処理を受けた場合を条件としている。
【００３１】
会員サーバ５は、各会員のファイル送受信履歴やそのファイル類等を管理用に記憶する記憶部を備えている。会員サーバ５は、認証機能を備えていてもよく、この場合、認証機能は、会員サーバ５と端末１との間で授受されるファイル、すなわちパケットを閲覧して、会員の正当性の有無の認証を行う態様としてもよい。
【００３２】
また、本ネットワーク通信システムは、他に種々の適用例が考えられる。例えば秘密情報を作成、保管管理する、例えば公的乃至は準公的（民間含む）な機関である団体組織（国、自治体、協会、組合等含む）外にある端末１との間における情報通信・管理体制に適用する例を挙げることができる。団体組織外にある端末との間における情報通信としては、例えば証明書の発行、申請書の発送などが想定される。
【００３３】
なお、ＴＣＰ／ＩＰ（transmission control protocol/internet protocol）規約に沿って形成されたパケットによって文書ファイルの送受信を行う場合、受信したパケットを元のファイルに戻したり、送信予定のファイルをパケットに置換して送信したりする。さらに、送信される各パケットのヘッダには、送信元である端末１のグローバルのＩＰアドレス、送信先である他の端末及び会員サーバのグローバルのＩＰアドレスが含まれる。
【００３４】
図２に示すＮＩＣ（Network Interface Card）２８にはルータが装備され、乃至ルータとシリアルに接続されている。このルータは、例えば、送信信号乃至は受信信号としての各パケットの所定位置に付加されている送信先を示すアドレス情報が、インターネット用の規約に基づくグローバルＩＰアドレスか、このグローバルＩＰアドレスの付し方とは異なる（グローバルＩＰアドレスとは識別可能な形態である）専用ネットワーク用の、例えばイーサネット（登録商標）用等に準じた所定のローカルＩＰアドレス（ＭＡＣアドレス）かを識別するためのアドレス情報（ルーティングテーブルやａｒｐ（Address Resolution Protocol）テーブル）の設定を行うものである。パケットは、テーブルと照合されて、アドレスの一致したルートへのみ送信され、これにより伝送路をインターネット経由か、専用ネットワークかにソフトウエア的に切り換えることができる。
【００３５】
図２において、ＵＳＢメモリ２は、略直方体形状の筐体内にマザーボード（図略）を備え、マザーボード上には各種の回路素子及び半導体素子が搭載されている。ハブ２０は、ＵＳＢメモリ２の入出力部に設けられ、端末１のＵＳＢポートを介して端末１と通信可能に接続するものである。ＵＳＢメモリ２は、所定数の、例えば３系統の信号ラインを有し、入出力部にはそれぞれＵＳＢコントローラ２１（２１１，２１２，２１３）が設けられている。ＵＳＢコントローラ２１は、入出力される信号のレベルや波形成形を行うものである。
【００３６】
ＵＳＢコントローラ２１１には、ＣＰＵ２２が接続されている、ＣＰＵ２２は、外部ブートを実行させるもので、そのための所定の処理プログラムを記憶するＲＯＭ２３及び処理内容を一時的に格納するＲＡＭ２４に接続されている。また、ＣＰＵ２２には、ＲＯＭ、本実施形態ではフラッシュＲＯＭ２５が接続されている。フラッシュＲＯＭ２５は、前述した特定ＡＰとしてのアプリケーションプログラム、周辺装置を動作させるドライバというプログラム及びＯＳを格納する各種ファイル記憶部２５１と、各種ファイル記憶部２５１を端末１にロードさせるためのプログラムであるローダを記憶するローダ記憶部２５２とを有する。
【００３７】
ＵＳＢコントローラ２１２には、ＲＯＭ、本実施形態ではフラッシュＲＯＭ２６が接続されている。フラッシュＲＯＭ２６は、ＭＢＲを記憶するＭＢＲ記憶部２６１を有する。
【００３８】
ＵＳＢコントローラ２１３には、ＣＰＵ２７が接続されている、ＣＰＵ２７は、ネットワーク３を介して他の端末１等と通信を行う場合の情報処理を実行するもので、そのための所定の処理プログラムを記憶するＲＯＭ２７１及び処理内容を一時的に格納するＲＡＭ２７２に接続されている。また、前述したように、ネットワーク３との接続を管理するＮＩＣ２８は、図略のルータを介してＩＳＰ４までの公衆通信回線と接続され、その網及びネットワーク３に対する通信制御を行うものである。ＣＰＵ２７は、フラッシュＲＯＭ２６と接続されており、ＵＳＢメモリ２が端末１に接続された状態において、ＭＢＲ記憶部２６１の内容を周期的に更新可能にしている。更新は、ＵＳＢメモリ２が端末１に接続される都度の１回（ブートの前後を問わない）でもよい。ＣＰＵ２７は、会員サーバ５に対してＭＢＲの更新要求を発信し、この更新要求を受けて会員サーバ５からＮＩＣ２８を介して新たなＭＢＲを受信すると、ＭＢＲ記憶部２６１のＭＢＲを、この受信内容に更新するようにしている。
【００３９】
ＭＢＲの更新態様としては、内容の変更の他、要求毎に暗号方法が変更される態様としてもよい。すなわち、会員サーバ５は、予め複数の暗号及び復号プログラムを有しており、要求毎に、所定のルールにより又は無作為に選定した暗号化プログラムで暗号化し、対応する復号化プログラムを同時にあるいは時間的に少しずらして送信することで、ＣＰＵ２７側で復号して、ＭＢＲ記憶部２６１に更新的に書き込むようにしてもよい。このように更新によってＭＢＲを高い頻度で変更することができる。
【００４０】
図３において、端末１のＣＰＵ１０は、ＲＯＭ１１及びＲＡＭ１２に記憶されたプログラムを実行することによって、ＢＩＯＳを起動させるＢＩＯＳ処理部１０１、ＭＢＲを起動させるＭＢＲ処理部１０２、ローダを起動させるローダ処理部１０３、起動中に異常が発生した場合に再ブートを行う再起動処理部１０４、ＵＳＢメモリ２との間で情報の授受を行う入出力処理部１０５、外部ブートによる起動後に特定ＡＰを用いて、また通常ブートによる起動後に汎用ＡＰを用いて文書作成その他種々の処理を実行する情報処理部１０６、及びＮＩＣやネットワークを介して他の端末１、会員サーバ５及び取引先端末６との間で情報の授受を行うネットワーク通信処理部１０７として機能する。
【００４１】
ＢＩＯＳ処理部１０１は、端末１の電源投入を受けて、メモリや周辺機器の状態をチェックする。ＢＩＯＳプログラムの最後の部分はＯＳ起動ルーチンになっており、このＢＩＯＳ起動ルーチンによって、ブート順、すなわち優先的に起動するように設定されている先頭位置に書き込まれているＭＢＲが読み込まれる。ＵＳＢポートにＵＳＢメモリ２が装着されている場合、優先順位に従ってＢＩＯＳ起動ルーチンによってＭＢＲのマスターブートプログラム（ブートストラップローダ）がＲＡＭ１２の起動時のワークエリアである、所定の記憶容量、ここではアドレスライン２０ビット仕様、すなわち約１ＭByteの起動メモリ領域に読み込まれる。なお、ＵＳＢポートにＵＳＢメモリ２が装着されていない場合には、ＢＩＯＳ処理部１０１によって、優先順位の降順に従って、例えばＨＤＤ１２１からＭＢＲのプログラムが読み出される。
【００４２】
ＢＩＯＳ処理部１０１は、ＵＳＢポートにＵＳＢメモリ２が装着されている場合、ＢＩＯＳ起動ルーチンによってＵＳＢメモリ２のＭＢＲ記憶部２６１からＭＢＲのマスターブートプログラム（ブートストラップローダ）をＲＡＭ１２の起動メモリ領域１２０に読み込む。そして、正常であれば、次いで、読み込まれたマスターブートプログラムに制御が渡される。
【００４３】
ＭＢＲ処理部１０２は、読み込まれたマスターブートプログラムによって、ローダ記憶部２５２のパーティションテーブルをチェックし、アクティブな基本パーティションを検索し、そのパーティションの先頭位置にあるパーティションブートセクタ（PBS）を読み込む処理を行う。パーティションブートセクタは、ＯＳによって予めフォーマットの際に作成されたもので、そのパーティションにインストールされたＯＳ等を起動するためのブートプログラム（イニシャルプログラムローダ：IPL）とそのパーティション情報とが格納されている。ＭＢＲ処理部１０２は、マスターブートプログラムによって、このＩＰＬを読み込み、以後、ＩＰＬに制御を渡す。ＩＰＬは、ローダ記憶部２５２の最初の基本パーティションの中から、ＯＳ等を起動するためのローダを探し、メモリに読み込み、ローダに制御を渡す。なお、ここでは、これら一連の処理をＭＢＲ処理部１０２が実行するものとする。
【００４４】
また、ローダは予め複数に分割される。そして、ＭＢＲ処理部１０２は、各分割ローダを起動メモリ領域１２０に分散配置（マッピング）させるべく、マッピング位置情報をＵＳＢメモリ２に逐次要求し、これに応じてマッピング位置情報を順次取得する。
【００４５】
また、ＭＢＲ処理部１０２は、マルウエアの動きを抑止するための処理を行う。図４において、マスターブートプログラムは、（ｉ）起動メモリ領域１２０内において、予めＢＩＯＳによって作成された割込ベクタテーブル１２０２の設定領域にスタック領域１２０３を重畳させ、（ｉｉ）チップセット１５内のＥＦＬＡＧＳ１５２内のトラップフラグ（ＴＦ）をセットするようにしている。
【００４６】
ローダ処理部１０３は、ローダによって、ＯＳ等の起動に必要なドライバ等のファイルを各種ファイル記憶部２５１からＲＡＭ１２の起動メモリ領域１２０にロードするものである。なお、ＯＳ等を起動するための準備を行った上で、ＯＳ等のカーネルを起動する。こうしてＯＳ等が起動することとなり、次いで、制御が移されたローダによって特定ＡＰがＲＡＭ１２に読み込まれる。さらに、読み込まれた特定ＡＰ内の通信制御プログラムによって、前述したルータ（図略）に対して、会員の端末１等の間での通信を許可するルーティング設定が施される。なお、この状態は、端末１にロードされた特定ＡＰにより、あるいはＵＳＢメモリ２のＣＰＵ２２によって、端末１にＵＳＢメモリ２が装着されているか否かを周期的にチェックし、装着が継続されている間、維持されるようにすることが好ましい。あるいは、端末１において、起動後にＵＳＢメモリ２が抜かれたことを示す信号が検出されるまで、装着が継続されていると扱ってもよい。
【００４７】
ところで、端末１は、ＢＩＯＳから立ち上がって起動している間に異常が検知されると、ＭＢＲ処理部１０２によって、マルウエアが存在する可能性が高いと見なして、起動動作を中止するようにしている。一方、このように起動を中止すれば、一律に端末１の立ち上げができず、特定ＡＰの使用環境を会員に提供できないといった問題がある。
【００４８】
そこで、再起動処理部１０４は、異常が発生した場合に、ＢＩＯＳを経ることなく、ＭＢＲ記憶部２６１からＭＢＲのマスターブートプログラムを直接読み出して再起動動作を実行させるようにしている。
【００４９】
この場合、ＭＢＲのマスターブートプログラムを上書きする態様でもよいが、異常発生を受けて、起動メモリ領域１２０、あるいは後述するＥＦＬＡＧＳ１５２（図４参照）を初期化した後、ＭＢＲのマスターブートプログラムを起動メモリ領域１２０に読み出すようにすることが好ましい。
【００５０】
入出力処理部１０５は、ＵＳＢメモリ２との間での情報の授受を処理するものである。
【００５１】
次に、図３において、ＣＰＵ２２は、ＲＯＭ２３に記憶されたプログラムを実行することによって、ローダの分散配置（マッピング）処理を行う分散処理部２２１、起動中に異常の発生を検出する監視部２２２、異常発生後において再起動を実行する再起動処理部２２３、ローダの端末１への読み出しを行うローダ処理部２２４、端末１との間で情報の授受を処理する入出力処理部２２５、及び外部ブートによる起動後に特定ＡＰを用いて作成されたファイル等をＮＩＣ２８、ネットワーク３を介して他の端末１、会員サーバ５及び取引先端末６との間で授受するネットワーク通信処理部２２６として機能する。
【００５２】
分散処理部２２１は、プログラムであるローダを所定の複数個に分割する処理、各分割ローダに対するマッピング情報（起動メモリ領域１２０上におけるマッピング位置情報ＤＩ及びマッピング順情報ＣＸ（ＣＸ＝１，２，…，分割数））を対応付けてＲＡＭ２４に記憶する処理、及び端末１からの読み出し要求を受けて出力する処理を行うものである。なお、ＲＡＭ２４に記憶される、各分割ローダとマッピング情報（起動メモリ領域１２０上におけるマッピング位置情報ＤＩ及びマッピング順情報ＣＸ）との対応付け情報は、後述の監視処理における照合元情報として用いられる。
【００５３】
監視部２２２は、分割ローダのマッピング毎にマッピング処理が適正か否かを監視する処理を行うもので、端末１からマッピング要求として送られてくる情報とＲＡＭ２４に記憶されている照合元情報との異同を比較することで判断している。正常と判断される間は、起動動作が継続され、一方、異常と判断されると、再起動に移行する。
【００５４】
再起動処理部２２３は、監視部２２２によって異常と判断され、又は端末１から再起動指示があると、ＭＢＲ記憶部２６１からＭＢＲのマスターブートプログラムを直接読み出して起動メモリ領域１２０に出力するものである。
【００５５】
ローダ処理部２２４は、ローダの分割情報に従って、ローダから対応する分割ローダ部分を端末１側に出力するものである。
【００５６】
ＲＯＭ２３は、各処理部２２１〜２２６での処理を実行させるための処理プログラムを記憶する処理プログラム記憶部２３１、前述した会員を識別するための情報を記憶する会員情報記憶部２３２を備えている。ＲＡＭ２４は、前述した照合元情報を記憶する照合元情報記憶部２４１を備えている。
【００５７】
このように、ＵＳＢメモリ２からのプログラムファイルの読み出し処理はＣＰＵ２２が担い、端末１側でのロード中の処理及びロード後の処理は、端末１のＣＰＵ１０が担うようにしている。
【００５８】
続いて、図４について説明する。チップセット１５は、ＣＰＵ１０、各種レジスタ、例えば、処理データを一時的に保管するための汎用レジスタ１５１、ＣＰＵ１０の演算状態を示す値であるステークスレジスタの一種であるＥＦＬＡＧＳ１５２、その他図略の各種のレジスタ類を備えている。また、図４に示すように、起動メモリ領域１２０は、ＵＳＢメモリ２から読み出されたＭＢＲのマスターブートプログラムの展開領域（以下、ＭＢＲ展開領域という）１２０１、割込ベクタテーブル（interrupt vector table）１２０２、スタック（stack）領域１２０３、及びローダ等を展開するプログラム展開領域１２０４を有する。
【００５９】
割込ベクタテーブル１２０２とは、割込が発生した場合に処理するプログラムの先頭のアドレスが格納されている対応表をいい、テーブルの内容によって割込に対応した処理が実行される。割込ベクタテーブル１２０２は、例えば上位、下位各１６ビットからなるベクタを複数有して構成されている。各ベクタは各処理プログラムに対応しており、例えば、ベクタ０は外部からの割込を行うためのＩＮＴ０であり、ベクタ１はＩＮＴ１であり、ベクタ２はＩＮＴ２であり、さらにベクタ６は無効オペコードである。ＩＮＴ命令のベクタ領域には、割込が発生した時に遷移先となるアドレス、すなわち実行するべきプログラムが書き込まれているアドレスが書き込まれている。また、ベクタ６には無効オペコードの処理を実行するためのアドレスが書き込まれており、このアドレス位置には、本実施形態においては、ＵＳＢメモリ２に再起動指示信号を出力するためのプログラムが書き込まれている。
【００６０】
スタック領域１２０３とは、割込処理等を行う場合に、ＣＰＵ１０のレジスタの内容を一時退避しておくために使用するメモリ領域で、複数の内容が記憶可能なスタック長を有している。各内容はここでは１６ビットで書き込み可能にされている。スタック領域１２０３は、初期状態ではサイズは０であり、メモリ上の固定の基点（ベースポインタＢＰ）と、書き込みに応じて（アドレスの小さい方に）延びた先の参照位置（スタックポインタＳＰ）とで規定される。スタック領域１２０３は、ＥＦＬＡＧＳ１５２のトラップフラグＴＦがセットされて、ＣＰＵ１０の動作がシングルステップモードに移行した場合に、割込直前の命令内容に関するＥＦＬＡＧ、プログラムの内容、そのアドレスを示す（ＥＦＬＡＧ，ＣＳ，ＩＰ）が１６ビットで書き込まれて一時退避されるようにするためのものである。なお、本実施形態では、ＥＦＬＡＧ，ＣＳ，ＩＰの書き込みは、蓄積されず、毎回、ベースポインタＢＰから行われるように設定されているものとする。詳細は後述する。
【００６１】
プログラム展開領域１２０４は、ローダがマッピング可能なメモリ領域をいう。すなわち、ＲＡＭ１２内の起動メモリ領域１２０であって、前記領域１２０１〜１２０３を除いた領域である。分割ローダは、マッピング位置情報ＤＩに従って、図４に示すように、例えばＲ１，Ｒ２，…，Ｒｎ，…，Ｒｃｘのように、分割数だけ分散配置（展開）される。なお、分割ローダに適宜数のダミーデータを加える態様としてもよい。この場合、分散処理部２２１は、ダミーデータを含めてマッピング位置情報ＤＩ、マッピング順情報ＣＸを設定すればよい。また、分割ローダは、例えば最終ビット位置に、次のマッピング位置情報ＤＩが書き込まれており、この情報ＤＩを順次参照することで、ローダ後に元のローダに合成される。この場合、ダミーデータには、その旨の情報が書き込まれておれば、合成時に省く処理が可能となる。
【００６２】
図５は、スタック領域１２０３を割込ベクタテーブル１２０２に重畳する方法を説明する図である。スタック領域１２０３には、割込直前の命令内容に関するＥＦＬＡＧ，ＣＳ，ＩＰがベースポインタＢＰから書き込まれる。そこで、このベースポインタＢＰの位置を、図の矢印で示すように、割込ベクタテーブル１２０２のベクタ２の上位ビットの位置に一致するように、スタック領域１２０３を位置設定する。従って、スタック領域１２０３へのＥＦＬＡＧ，ＣＳ，ＩＰの書き込みは、図５に示すように、割込ベクタテーブル１２０２のベクタ２の上位ビットにＦＬＡＧが、ベクタ１の下位ビットにＣＳが、ベクタ１の上位ビットにＩＰが書き込まれることになる。一方、ベクタ１は、外部割込先となるアドレスを示すものであるから、割込が発生してＣＰＵ１０がベクタ１を参照し、制御が、ベクタ１に書き込まれているアドレスのプログラムに移行すると、スタック領域１２０３にその直前の命令内容であるＥＦＬＡＧ，ＣＳ，ＩＰが退避して書き込まれる。すなわち、割込ベクタテーブル１２０２のベクタ１には、ＩＰ，ＣＳのアドレス情報が書き込まれることになる。ベクタ１には、その上位ビットにＩＰが、下位ビットにＣＳが書き込まれることになる。従って、そのアドレスは、具体的には、ＩＰ×１６＋ＣＳとなる。
【００６３】
すなわち、今、ＢＩＯＳにマルウエアが潜伏等（あるいはＢＩＯＳの立ち上げ中に外部から侵入）していたとして、ＢＩＯＳ起動時にマルウエアが動作して、ＥＦＬＡＧＳ１５２のフラグＴＦをセットし、割込ベクタテーブル１２０２のベクタ１にウイルス本体の存在するアドレスが書き込まれている場合を想定する。ＢＩＯＳ起動後、典型的にはＭＢＲ起動中に、ある命令が実行され、その後に、ＣＰＵ１０の制御がマルウエアに乗っ取られた（マルウエアによるデバッグ割込が発生した）と想定する。このとき、制御は、ベクタ１に書き込まれているアドレスに遷移し、マルウエアによる動作（マルウエアの複製、データ改竄や破壊等）が実行されることになる。一方、マルウエアの割込によって、スタック領域１２０３すなわち割込ベクタテーブル１２０２のベクタ１には、直前の命令内容を示す内の、情報ＩＰ，ＣＳが書き込まれることになる。従って、ベクタ１に元々書き込まれていたマルウエアの格納位置を示すアドレスは書き換えられ、消去されたことになる。すなわち、マルウエアは、ＢＩＯＳ起動中に仕掛けをした状態において、ＭＢＲ起動後に一度でも動作した途端、潜伏先のアドレスを失う結果となり、その後の動作が抑止されることになる。
【００６４】
ここで、ＭＢＲのマスターブートプログラムの一例について説明する。マスターブートプログラムは、
（１）割込ベクタテーブル１２０２のベクタ６のアドレスを再起動処理のプログラムが書き込まれたアドレスにセットする。
【００６５】
（２）スタック領域１２０３を割込ベクタテーブル１２０２のベクタ１とベクタ２の上位アドレスにセットする（重畳する）。
【００６６】
次いで、
（３）ＵＳＢメモリ２へ、次の分割ローダのデータ要求を出力する。
【００６７】
（４）ＵＳＢメモリ２から分割ローダを取得する。
【００６８】
（５）取得した分割ローダを起動メモリ領域１２０にマッピングする。
【００６９】
そして、ＬＯＯＰ命令によって、（３）〜（５）の処理が全ての分割ローダのロードについて終了するまで繰り返される。
【００７０】
ここで、（１）（２）の処理を行っておくことで、次に、マルウエアによるデバッグ例外が発生した時に、以下の処理が実行される。すなわち、マルウエアによるデバッグ例外が発生したとすると、ベクタ１のアドレスが、スタックされた情報に書き換えられるため、意図しないアドレス（＝ＩＰ×１６＋ＣＳ）がセットされる。そして、マルウエアの動作が終了して、制御が、書き換えられたベクタ１のアドレス（ＩＰ×１６＋ＣＳ）に遷移し、無効オペコードの例外を発生させる。そうすると、制御は、無効オペコード例外を規定するベクタ６へ遷移することとなる。従って、制御は、ベクタ６にセットされているアドレスの再起動処理プログラムへ遷移するので、再起動指示が発せられることとなる。このように、一旦マルウエアによるデバッグ例外が発生すると、マルウエアの所在を規定するアドレスが消滅することで動作が抑止される。また、この異常の検出によって、再起動が行われるので、マルウエア自体を消去することが可能となる。
【００７１】
続いて、マスターブートプログラムは、
（６）トラップフラグＴＦをセットする。より具体的には、チップセット１５のＥＦＬＡＧＳ１５２内のトラップフラグＴＦに、１をセットする。トラップフラグＴＦをセットすることで、次回アセンブラ命令実行時にデバッグ例外が発生する。
【００７２】
（７）遷移（ジャンプ）命令により、スタック領域１２０３に任意のアドレスをセットする。そして、そのアドレスＩＰ：ＣＳから制御をローダに移す。
【００７３】
このジャンプ命令とは、アドレスＩＰ（次回の実行予定アドレス）をセットする命令である。（６）でトラップフラグＴＦがセットされているため、本ジャンプ命令でスタック領域１２０３にスタックが積まれる。積まれる内容は、「ＩＰ」、「ＣＳ」及び「ＦＬＡＧＳ」である。積まれたＩＰ：ＣＳで示されるアドレスは、ベクタ１（デバッグ例外発生時のベクタ）になるため、セットされたＩＰ：ＣＳは、ベクタ１のアドレスとして処理が行われる。
【００７４】
続いて、図６〜図１１により、ＣＰＵ１０、ＣＰＵ２２におけるブート処理を説明する。図６は、端末１のＣＰＵ１０によって実行されるＢＩＯＳの起動処理の手順を説明するフローチャートである。まず、端末１の電源がオンされ（ステップＳ１）、すなわちマザーボード上のクロックジェネレータが電源供給を受けてクロックパルスを出力し始めると、メモリや周辺機器のデバイスのチェックが行われる（ステップＳ３）。次いで、ＵＳＢポートにＵＳＢメモリ２が装着されているか否かの判断が、例えば公知のハンドシェイク信号の授受を利用するなどして確認される。
【００７５】
なお、以降においては、端末１のＵＳＢポートにＵＳＢメモリ２が装着されているという前提で述べる。すなわち、ＵＳＢポートにＵＳＢメモリ２が装着されていると、優先順位に従い、ＢＩＯＳ起動ルーチンによってＭＢＲのマスターブートプログラムがＲＡＭ１２の起動メモリ領域１２０に読み込まれる（ステップＳ５）。
【００７６】
次いで、異常の有無が判断される（ステップＳ７）。異常とは、ＭＢＲのマスターブートプログラムの読み込み中でのマルウエア等が活動をいう。異常がなければ、ＭＢＲのマスターブートプログラムの読み出しが終了したか否かが判断され（ステップＳ９）、終了したのであれば、ＭＢＲのマスターブートプログラムに制御が移される（ステップＳ１１）。一方、ＭＢＲのマスターブートプログラムの読み込みが終了していないのであれば、ステップＳ５に戻って同様の処理が繰り返される。なお、ステップＳ７で、異常があると判断された場合、異常に応じた異常対応処理が実行される（ステップＳ１３）。
【００７７】
図７は、ＵＳＢメモリ２のＣＰＵ２２によって実行されるローダの分散処理の手順を説明するフローチャートである。まず、端末１のＵＳＢポートを介して電源供給を受けて、ＵＳＢメモリ２が起動したか否かが判断される（ステップ＃１）。この判断は、例えば図略のクロックジェネレータからのクロックパルスの発生を検出することで行う態様でもよい。
【００７８】
ＵＳＢメモリ２が起動したと判断されると、ローダの分割処理が実行される（ステップ＃３）。ローダの分散処理は、ＵＳＢメモリ２の会員情報記憶部２３２に書き込まれている会員情報を固有情報として利用して、プログラムであるローダを所要数に分割する処理、分割ローダの読み出し順であるマッピング順情報ＣＸとＲＡＭ１２の起動メモリ領域１２０上のアドレス（マッピング位置情報）ＤＩを設定する処理、及びこれらを対応付けて照合元情報記憶部２４１に記憶する処理である。なお、必要に応じて、予め準備されたダミーデータを途中に混在させるようにしてもよい。
【００７９】
このように、ＵＳＢメモリ２が端末１に装着された状態で端末１の電源が投入される毎に、ローダの分散処理内容を固有情報を利用して変動することで、固定式の場合に比して秘匿性を高めることが可能となる。なお、ローダの分散方法は、固有情報の他、起動時の日時情報とか起動回数等の各要因を含めた所定のルールに従って設定してもよい。あるいは、乱数発生器からの乱数等を利用して無作為に設定する方法でもよい。また、各分割ローダが起動メモリ領域１２０上で、いずれの一部においても重なることがないように、データ長を考慮してマッピング領域が設定される。
【００８０】
図８は、端末１のＣＰＵ１０によって実行されるＭＢＲの実行処理の手順を説明するフローチャートである。まず、割込ベクタテーブルのベクタ６に書き込まれている（遷移先を示す）アドレスが、「リセット処理」のプログラムが書き込まれたアドレスにセットされる（ステップＳ２１）。次いで、スタック領域１２０３の起動メモリ領域１２０上でのアドレス（ベースポインタＢＰ）がベクタ２の上位アドレスに一致するようにセットされる（ステップＳ２３）。
【００８１】
続いて、ＵＳＢメモリ２へデータ要求等が出力される（ステップＳ２５）。なお、分散２回目以降の各回において、直前の分散情報がデータ要求と共にＵＳＢメモリ２に戻される。そこで、ＵＳＢメモリ２側では、受信した分散情報と照合元情報記憶部２４１に記憶されている照合元情報との異同の判断を行い、不一致であれば、異常信号が端末１側に出力される。
【００８２】
ＣＰＵ１０は、ＵＳＢメモリ２から、この異常信号の入力を受け付けると（ステップＳ２７でＹ）、ローダの処理の実行を中止する（ステップＳ２９）。
【００８３】
一方、異常信号に代えて、ＵＳＢメモリ２から分割ローダ及び、そのマッピング位置情報ＤＩ及びマッピング順情報ＣＸ（初回であれば、ＣＸ＝１）が入力されると（ステップＳ３１）、分割ローダが起動メモリ領域１２０上のアドレスＤＩにロード（マッピング）される（ステップＳ３３）。分割ローダの１回のロード毎に、マッピング順情報ＣＸが分散処理時における分割値に達したか否かが判断され（ステップＳ３５）、分割値に達していなければ、ＬＯＯＰ命令を繰り返すべく、ステップＳ２５に戻って、同様に分割ローダの入力処理が繰り返される。一方、ＬＯＯＰ命令が終了したと判断された場合、トラップフラグＴＦがセットされる（ステップＳ３７）。次いで、ジャンプ命令によりスタック領域に任意のアドレスがセットされる（ステップＳ３９）。続いて、再起動要求が発生か否かの判断が行われる（ステップＳ４１）。再起動要求が発生していなければ、読み出されたローダへ制御が移される（ステップＳ４３）。一方、再起動要求が発生した場合には、再起動要求がＵＳＢメモリ２に出力される（ステップＳ４５）。
【００８４】
図９は、ＵＳＢメモリ２のＣＰＵ２２によって実行される監視処理の手順を説明するフローチャートである。まず、端末１からデータ要求、直前の分散情報が入力されたか否かが判断される（ステップ＃１１）。データ要求及び直前の分散情報が入力されなければ、本フローをスルーし、データ要求及び直前の分散情報が入力されると、直前の分散情報に対応した分散情報と照合元情報との異同が照合される（ステップ＃１３）。照合結果が一致であれば（ステップ＃１５でＹ）、次のマッピング位置情報ＤＩ、マッピング順情報ＣＸ及び対応する分割ローダが端末１に出力される（ステップ＃１７）。一方、照合結果が不一致であれば、異常信号が端末１に出力され（ステップ＃１９）、再起動処理が実行される（ステップ＃２１）。
【００８５】
なお、再起動処理とは、ＭＢＲ起動中に、分割ローダの実際のマッピング位置が照合元情報と一致しない状態が生じた場合、その原因として後述するようにマルウエアが関わっていると見なして、現在のＭＢＲの起動中の動作を中止し、ＢＩＯＳを経由することなく、直接ＭＢＲ記憶部２６１からＭＢＲのマスターブートプログラムを読み出して起動する処理のことである。
【００８６】
ある分割ローダの起動メモリ領域１２０へのマッピング処理において、マルウエアによるデバッグ割込が発生したとする。この場合、ＣＰＵ１０によって実行される命令の書き込まれているアドレスは、マルウエアの書き込まれているアドレスといえることから、このマルウエアが関連するアドレスは、分割ローダのマッピング位置情報ＤＩとは異なることになる。そうすると端末１から戻って来た位置情報ＤＩは、明らかに照合元情報とは一致しない。そこで、監視部２２２は、端末１から送信されてくる情報と照合元情報との不一致を検出すると、ＲＡＭ１２内にマルウエアが存在するとして、ＢＩＯＳを経由しないＭＢＲのマスターブートプログラムの起動を指示するようにした。
【００８７】
図１０は、ＵＳＢメモリ２のＣＰＵ２２によって実行される再起動処理の手順を説明するフローチャートである。まず、異常信号発生又は再起動指示の有無が判断される（ステップ＃３１）。いずれでもなければ、本フローをスルーし、一方、異常信号発生か再起動指示の一方が発生した場合、ＣＰＵ２２は、ＭＢＲ記憶部２６１からＭＢＲのマスターブートプログラムを読み出して、端末１のＲＡＭ１２に出力する（ステップ＃３３）。
【００８８】
図１１は、端末１のＣＰＵ１０によって実行される再起動処理の手順を説明するフローチャートである。ＭＢＲのマスターブートプログラムの再起動が開始されると、まず、起動メモリ領域１２０が初期化される（ステップＳ５１）。これにより、仮にマルウエアが存在していても、消去される。
【００８９】
次いで、その上に、ＭＢＲのマスターブートプログラムが書き込まれ（ステップＳ５３）、書込が終了すると、制御がＭＢＲに移され（ステップＳ５５）、図８に示すようなＭＢＲが実行される（ステップＳ５７）。
【００９０】
本発明は、以下の態様を採用することが可能である。
【００９１】
（１）本実施形態では、外部デバイスとしてＵＳＢを採用したが、これに限定されず、少なくとも、ＣＰＵ及びＲＯＭ、ＲＡＭを内蔵するデバイスであればよい。例えばＩＣカードでもよいし、携帯型の通信機器に内蔵された態様であってもよい。
【００９２】
（２）なお、再起動で読み出されるＭＢＲのマスターブートプログラムは、ＢＩＯＳ起動に起因して読み出される場合のプログラムと同一でもよいが、異なるものでもよい。例えば、ＭＢＲ記憶部２６１に加えて、再起動用ＭＢＲを記憶する記憶部を設ける態様としてもよい。そして、この再起動用ＭＢＲは、例えば、所定のルールに従って、分割ローダを作成するようなものでもよく、あるいは分割することなく一括でロードするものとしてもよい。
【００９３】
（３）また、本発明では、トラップフラグＴＦを利用したシングルステップモードにおいて、１回のＬＯＯＰ処理を行うものとしたが、ＬＯＯＰ処理は１回に限定されず、ローダのデータ長等を考慮して複数回に分けて実行されてもよい。また、スタック領域１２０３に書き込まれるＦＬＡＧ，ＣＳ，ＩＰのデータも、ＬＯＯＰ終了時点で更新される態様としたが、スタック領域１２０３の所定ビット箇所にこれらのデータが書き込まれるのであれば、ＬＯＯＰ命令以外の命令、例えばＲＥＰ（リピート）命令を用いた命令を使用してローダを起動メモリ領域１２０にロードする態様、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）チップを用いてローダを起動メモリ領域１２０にロードする態様でもよい。
【００９４】
（４）また、本実施形態では、ＤＩ，ＣＸを用いて各分割ローダをＲＡＭ１２上に分散配置するようにしたが、これに代えて、各分割ローダの配置順番を設定し、ＲＡＭ１２上の所定のアドレスから連続して読み込むようにしてもよい。このようにしても、各分割ローダの分割数、配置順が異なり、また、読み込み開始アドレスを適宜変更する等することで、別の態様による分割ローダの分散配置が可能となる。
【００９５】
以上のとおり、本発明は、ＣＰＵを備える情報処理装置に装着して前記情報処理装置をブートする外部ブートデバイスであって、前記情報処理装置のＢＩＯＳによって優先して起動するように設定された、ローダを読み出して前記情報処理装置の起動メモリ領域上にマッピングさせるためのＭＢＲであって、前記情報処理装置の起動メモリ領域に設定されている割込ベクタテーブルに対してスタック領域を所定の重畳関係を有して位置付けるプログラムを有するＭＢＲが記憶された記憶手段と、前記ＭＢＲの起動に先立って、前記ローダを予め設定された個数に分割すると共に各分割ローダの前記起動メモリ領域へのロードの際のマッピング情報を作成する分散処理手段とを備えることが好ましい。
【００９６】
この構成によれば、スタック領域を割込ベクタテーブルに重畳し、さらにＴＦフラグをオンにしてスタック領域への直前の戻り情報の記録を行わせるようにすることで、マルウエアが動作すると、直ちにスタック領域の情報が更新され、かつこの更新内容は、割込ベクタテーブルの内容が更新されることになる。このスタック領域の情報の更新、すなわち割込ベクタテーブルの内容が書き換えられることで、マルウエア本体の潜伏位置情報が消去され、マルウエアは動きが完全に抑止されることとなる。このように、外部ブートによってマルウエアの動きが抑止される。
【００９７】
また、前記外部ブートデバイスにおいて、前記所定の重畳関係は、前記スタック領域のベーススタック位置を前記ベクタテーブルのＩＮＴ２の上位ビットの位置に一致させることであることが好ましい。この構成によれば、スタック領域に書き込まれる情報ＣＳ，ＩＰ等が前記ベクタテーブルのＩＮＴ２及びＩＮＴ１に書き込まれることとなるので、仮にマルウエアによる割込が発生した場合を想定すると、マルウエアの所在情報が、上記書き込みによって失われることになり、マルウエアは動作不能に陥ることになる。
【００９８】
また、前記外部ブートデバイスにおいて、前記ＭＢＲは、前記分割ロードの実行前に、前記スタック領域の位置付けを行うことが好ましい。この構成によれば、ＭＢＲの起動開始時に、スタック領域の位置設定を行うようにしたので、マルウエアが動作することに応じて、以後の動きを不能にすることが可能となる。
【００９９】
また、前記外部ブートデバイスにおいて、前記分散処理手段は、前記ローダの前記起動メモリ領域へのロードを、所定回数ずつループ命令で実行することが好ましい。この構成によれば、ローダが分散配置されるので、書き込み位置が分散する分割ローダのマッピング動作途中で割り込んで制御を取ることが容易ではなくなる。
【０１００】
また、前記外部ブートデバイスにおいて、前記ＭＢＲは、最初の前記ループ命令の実行前に、前記スタック領域の位置付けを行うことが好ましい。この構成によれば、ＭＢＲの起動開始時に、スタック領域の位置設定を行うようにしたので、マルウエアが動作することに応じて、以後の動きを不能にすることが可能となる。
【０１０１】
また、前記外部ブートデバイスにおいて、前記分散処理手段は、前記起動メモリ領域内での前記マッピング情報をブート毎に異ならせることが好ましい。この構成によれば、分割ローダのマッピング位置が毎回変動することで、マルウエアの割込に判断要素を持たせることで、割込動作をしにくくすることが可能となる。
【０１０２】
また、前記外部ブートデバイスにおいて、固有情報が記憶された固有情報記憶手段を備え、前記分散処理手段は、前記マッピング情報を前記固有情報を用いて生成することが好ましい。この構成によれば、各外部ブートデバイスに応じた固有のマッピング内容が設定可能となる。
【０１０３】
また、前記外部ブートデバイスにおいて、前記ＭＢＲの起動動作に異常が発生したか否かを監視する監視手段と、前記異常が検出された場合に、前記情報処理端末の起動メモリ領域に、前記ＭＢＲを読み出す再起動手段とを備えたことが好ましい。この構成によれば、マルウエアが検出される等の異常が検出されると、ＢＩＯＳを介さず情報処理装置が再起動されるので、再起動によってＢＩＯＳに関わるマルウエアが起動メモリ領域上から排除される。
【０１０４】
また、前記外部ブートデバイスと、前記外部ブートデバイスを介して互いに通信可能にネットワークに接続された複数の前記情報処理端末とを有するネットワーク通信システムを構築することが好ましい。この構成によれば、外部ブートデバイス及びネットワークを介して情報処理端末間で、マルウエアの影響を受けない高セキュリティの下での情報通信が実現される。
【符号の説明】
【０１０５】
１  端末（情報処理装置）
１０，２２  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１０１  ＢＩＯＳ処理部
１０２  ＭＢＲ処理部
１０３  ローダ処理部
１０４  再起動処理部
１０５  入出力処理部
１１０  フラッシュＲＯＭ
１２  ＲＡＭ
１２０  起動メモリ領域
１２０１  ＭＢＲ展開領域
１２０２  割込ベクタテーブル
１２０３  スタック領域
１２０４  プログラム展開領域
１２１  ＨＤＤ
１５  チップセット
２  ＵＳＢメモリ（外部ブートデバイス）
２２１  分散処理部（分散処理手段）
２２２  監視部（監視手段）
２２３  再起動処理部（再起動手段）
２２４  ローダ処理部
２２５  入出力処理部
２３  ＲＯＭ
２３１  処理プログラム記憶部
２３２  会員情報記憶部
２４  ＲＡＭ
２４１  照合元情報記憶部
２５１  各種ファイル記憶部
２５２  ローダ記憶部
２６１  ＭＢＲ記憶部（記憶手段）
３  ネットワーク
【図１】
2011141997.tif 000003
【図２】
2011141997.tif 000004
【図３】
2011141997.tif 000005
【図４】
2011141997.tif 000006
【図５】
2011141997.tif 000007
【図６】
2011141997.tif 000008
【図７】
2011141997.tif 000009
【図８】
2011141997.tif 000010
【図９】
2011141997.tif 000011
【図１０】
2011141997.tif 000012
【図１１】
2011141997.tif 000013
【国際調査報告】
2011141997.tif 000014
2011141997.tif 000015
2011141997.tif 000016
2011141997.tif 000017