以下に、本願の開示する情報処理装置及び情報処理装置制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理装置制御方法が限定されるものではない。
図1は、情報処理装置のハードウェア構成図である。本実施例に係る情報処理装置1は、CPU(Central Processing Unit)2、メモリ3、更新検出テーブル回路4、インタフェース5、ストレージ6、アドレスバス7及びデータバス8を有する。
メモリ3及び更新検出テーブル回路4は、アドレスバス7及びデータバス8を介してCPU2に接続している。また、ストレージ6は、インタフェース5、アドレスバス7及びデータバス8を介してCPU2に接続している。
インタフェース5は、アドレスバス7及びデータバス8とストレージ6とを接続するためのインタフェースである。
ストレージ6は、例えばハードディスクなどの副記憶装置である。ストレージ6には、OS(Operating System)が格納される。また、ストレージ6には、OSが提供するファイルシステムを利用する利用プログラムを含む各種プログラムが格納されている。ストレージ6には、利用プログラムとして、例えば、ウイルス検出ソフトが格納さている。また、ストレージ6には、CPU2により実行されたOS及び利用プログラムを含む各種プログラムによりデータの読み出し及び書き込みが行われる。例えば、ウイルス検出ソフトは、ストレージ6に格納されたデータを読み出し、ウイルスチェックを行う。
メモリ3は、例えばDRAM(Dynamic Random Access Memory)などの主記憶装置である。メモリ3には、CPU2により各種プログラムが展開され、プロセスが生成される。
CPU2は、ストレージ6からOSを読み出しメモリ3に展開して実行する。CPU2は、OSを実行することでデバイスドライバ及びファイルシステムを提供する。また、CPU2は、ストレージ6から利用プログラムを含む各種プログラムを読み出し実行する。
CPU2は、アドレスバス7を用いて利用するアドレスの送受信をメモリ3、更新検出テーブル回路4及びストレージ6との間で行う。また、CPU2は、データバス8を用いてファイルの送受信をメモリ3、更新検出テーブル回路4及びストレージ6との間で行う。例えば、CPU2は、メモリ3、更新検出テーブル回路4及びストレージ6に対して、アドレスバス7で送信したアドレスにデータバス8で送信してファイルのデータを書き込ませる。また、CPU2は、アドレスバス7で送信したアドレスに格納されるファイルをメモリ3、更新検出テーブル回路4及びストレージ6から読み出す。また、CPU2は、ストレージ6のファイルを更新した場合、更新検出テーブル回路4におけるファイルが更新されたか否かを表す更新属性のフラグをオンにする。更新属性のフラグがオンになっているファイルは、更新があったファイルとして認識される。このファイルが、「特定のデータ」の一例にあたる。
更新検出テーブル回路4は、ハードウェアで構成されるテーブルである。このように、更新検出テーブル回路4は、例えば、EEPROM(Electrically Erasable Programmable Read Only Memory)のようなメモリ素子である。
更新検出テーブル回路4は、ストレージ6に格納されたファイルが更新されたか否か、すなわち更新属性を有するか否かを表す更新情報を格納するテーブルである。具体的には、更新検出テーブル回路4は、各ファイルに対応する更新属性のフラグを有する。以下では、更新検出テーブル回路4における更新属性のフラグを、「更新属性フラグ」という。
更新検出テーブル回路4の更新属性フラグがオンであれば、そのファイルが更新されたことを表す。逆に、更新検出テーブル回路4の更新属性フラグがオフであれば、そのファイルに更新が無いことを表す。例えば、CPU2によって実行されるウイルス対策ソフトは、更新検出テーブル回路4に格納された更新情報を取得し、更新されたファイルをスキャンしてウイルスの検出を行う。
更新検出テーブル回路4は、ストレージ6のファイルの更新があった場合に、CPU2からの指示を受け更新されたファイルに対応する更新属性フラグをオンにする。また、更新検出テーブル回路4では、更新属性フラグがオンになった後に所定の時間が経過した場合、OSから独立して更新属性フラグがオフになる。この更新検出テーブル回路4における更新属性フラグのオンオフは、後で詳細に説明する。
図2は、情報処理装置で動作するソフトウェア及びファイルの状態を表す図である。ストレージ6には、ファイルテーブル61及びファイルのデータ62が格納される。ファイルテーブル61の情報及びデータ62の組み合わせが1つのファイルを指す。
ファイルテーブル61には、例えば、ファイル名及びデータ位置が格納される。また、ファイルテーブル61には、属性情報611が格納される。属性情報611は、対応するファイルの各種属性を表す情報である。具体的には、属性情報611は、図3に示すように各属性のフラグが割り当てられたビットの値によりファイルがそれぞれの属性を有するか否かを表す。図3は、属性情報の一例を表す図である。
図3に示すように、例えば、属性情報611は、読取専用か否かを表すフラグであるRo(Read Only)のフラグ、隠しファイルであるか否かを表すHd(Hidden)のフラグ及びアーカイブであるか否かを表すAc(Archive)のフラグを有する。また、本実施例では、更新されたファイルであるか否かを表す更新情報に対応するビットとして、ビット612が確保されている。ビット612には、属性情報611の空きビットを用いる。たとえば、属性情報611が8ビットの場合、読取専用属性には、ビット位置を16進数で表すと0x80が割り当てられている。また、隠しファイル属性には、0x20が割り当てられている。また、アーカイブ属性には、0x02が割り当てられている。そして、それ以外の場所は空きビットである。そこで、本実施例では、更新属性にあたるビット612として、0x01が割り当てられている。また、属性情報611のそれ以外の空きビットには、0がセットされる。
例えば、Roのフラグがオンであれば、ファイルは読取専用属性を有する。また、Hdのフラグがオンであれば、ファイルは隠しファイル属性を有する。また、Acのフラグがオンであれば、ファイルはアーカイブ属性を有する。更新属性のフラグについては、ビット612はリザーブされているだけであり、属性情報611上でのオンオフが禁止されており、フラグの値は属性情報611に格納されない。
また、ファイルテーブル61に格納されたファイル名に対応するデータ62は、ファイルテーブル61のデータ位置で示される位置に格納される。
更新検出テーブル回路4は、各ファイルに対応する更新属性フラグ41を有する。本実施例では、ファイルテーブル61と同じエントリ順序を有する。例えば、図2のようにファイルテーブル61のエントリが並んでいる場合、更新検出テーブル回路4の更新属性フラグ41のエントリは上から順に同じエントリとして点線で表されるように1対1で対応する。すなわち、ファイルテーブル61の上からn番目のエントリ番号をn番とすると、更新検出テーブル回路4の更新属性フラグ41のn番目のエントリ番号がn番となる。
さらに、図2に示すように、情報処理装置1では、OS92が動作し、そのOS92において、ファイルシステム93及びデバイスドライバ94が動作する。ここで、OS92、ファイルシステム93及びデバイスドライバ94は、CPU2によってメモリ3上に展開されプロセスを生成する。また、利用プログラム91もメモリ3上に展開され動作する。そして、利用プログラム91は、ファイルシステム93及びデバイスドライバ94を介して、ストレージ6に格納されたファイルテーブル61のデータ位置で示されるデータ62にアクセスする。ファイルシステム91は、実際にはデバイスドライバ94を介してファイルにアクセスするが、以下では説明の都合上、ファイルシステム91が直接ファイルにアクセスするように説明する。
ファイルシステム93は、特定のファイルのデータ62を更新した場合に、その特定のファイルのファイルテーブル61上のエントリに対応する更新検出テーブル回路4の更新属性フラグ41のエントリをオンにする。また、ファイルシステム93は、利用プログラム91であるウイルス検出ソフトから属性情報611の取得を受ける。そして、ファイルシステム93は、属性情報611を取得するとともに対応する更新属性フラグ41の値を取得する。その後、ファイルシステム93は、属性情報611のビット612に更新属性フラグ41の値を格納し、利用プログラム91であるウイルス検出ソフトに送信する。利用プログラム91であるウイルス検出ソフトは、取得した属性情報611に格納された更新属性フラグ41の値から更新されたファイルを特定し、特定したファイルについてウイルスチェックを行う。
また、ファイルシステム93は、利用プログラム91の指示を受けて、ファイル作成処理、ファイル削除処理、データ書込処理、データ読出処理、属性設定処理、属性更新処理、属性読取処理及びファイル更新時処理などを行う。この利用プログラム91、OS92、ファイルシステム93及びデバイスドライバ94を含む情報処理装置1のCPU2により実行される各種プログラムが、「所定のプログラム」の一例にあたる。
次に、図4を参照して、情報処理装置1が有する各機能の詳細について説明する。図4は、情報処理装置のブロック図である。
図4に示すように、情報処理装置1は、利用プログラム実行部101、データ読書処理部102、ファイル情報管理部103、属性読取部104及び更新情報管理部105を有する。データ読書処理部102、ファイル情報管理部103及び属性読取部104は、ファイルシステム93により実現される。
利用プログラム実行部101は、図1のCPU2及びメモリ3により実現される。具体的には、CPU2及びメモリ3により実行される図2の利用プログラム91の動作によりその機能が発揮される。
利用プログラム実行部101は、ファイル作成の指示をファイル情報管理部103へ指示する。その後、利用プログラム実行部101は、エラー応答又は処理完了の応答をファイル情報管理部103から受ける。
また、利用プログラム実行部101は、データ書込指示をデータ読書処理部102及びファイル情報管理部103へ出力する。さらにこの場合、利用プログラム実行部101は、データが更新されたファイルの更新属性フラグ41のオンをファイル情報管理部103へ指示する。その後、利用プログラム実行部101は、エラー応答又は処理完了の応答をデータ読書処理部102及びファイル情報管理部103から受ける。
また、利用プログラム実行部101は、データ読出の指示をデータ読書処理部102及びファイル情報管理部103へ出力する。その後、利用プログラム実行部101は、エラー応答又は読み出されたデータをデータ読書処理部102から受信する。
また、利用プログラム実行部101は、ファイル削除をデータ読書処理部102及びファイル情報管理部103に指示する。その後、利用プログラム実行部101は、データ読書処理部102及びファイル情報管理部103からエラー応答又は処理完了の応答を受ける。
また、利用プログラム実行部101は、属性設定の場合、属性を変更するファイルの情報を含む属性設定の指示をファイル情報管理部103へ出力する。その後、利用プログラム実行部101は、エラー応答又は処理完了の応答をファイル情報管理部103から受ける。
また、利用プログラム実行部101は、属性読取をファイル情報管理部103及び属性読取部104に指示する。その後、利用プログラム実行部101は、指定した属性の情報を属性読取部104から取得する。
ここで、利用プログラム実行部101の動作について、利用プログラム91であるウイルス検出ソフトを実行する場合を特に説明する。利用プログラム実行部101は、一定期間毎に全てのファイルに対してウイルスチェックを行う完全スキャンを実行する。例えば、利用プログラム実行部101は、1週間に1度完全スキャンを行う。具体的には、利用プログラム実行部101は、全てのファイルのデータ62の読み出しをデータ読書処理部102に指示する。そして、利用プログラム実行部101は、読み出された全てのファイルのデータ62をスキャンしウイルスの検出を実行する。
また、完全スキャンに加えて、利用プログラム実行部101は、完全スキャンの実行頻度よりも高い頻度となる所定期間毎に更新されたファイルのみをスキャンする差分スキャンを実行する。例えば、利用プログラム実行部101は、24時間ごとに差分スキャンを実行する。
具体的には、利用プログラム実行部101は、ファイルの更新属性の読み取りをファイル情報管理部103及び属性読取部104に指示する。その後、利用プログラム実行部101は、各ファイルの更新属性を属性読取部104から取得する。そして、利用プログラム実行部101は、各ファイルの更新属性から更新されたファイルを特定する。次に、利用プログラム実行部101は、特定したファイルのデータ62の読み出しをデータ読書処理部102及びファイル情報管理部103へ指示する。その後、利用プログラム実行部101は、更新されたファイルのデータ62をデータ読書処理部102から取得する。そして、利用プログラム実行部101は、更新されたファイルのデータ62のスキャンを行いウイルスの検出を実施する。この利用プログラム実行部101が、「処理実行部」の一例にあたる。
ここで、図5を参照して、完全スキャン及び差分スキャンの概要について説明する。図5は、差分スキャンの概要を説明するための図である。状態301が完全スキャン時の状態を表し、状態302が差分スキャン時の状態を表す。図5では、ウイルス対策ソフト200から各ファイルに延びている矢印がスキャンを行っていることを示す。
状態301に示すように、完全スキャンの場合、ウイルス対策ソフト200は、ストレージ6に格納された全てのファイルA〜Fのデータ62をスキャンする。ここでは、完全スキャン後、ファイルBが削除され、ファイルC及びEが更新され、ファイルGが新たに作成された場合で説明する。状態302における色がついているファイルが更新されたファイルである。ウイルス対策ソフト200は、差分スキャンの場合、更新されたファイルC及びE、並びに、新しく作成されたファイルGのデータ62のみをスキャンする。このように、差分スキャンでは、あらたに作成されたファイルを含む更新されたファイルのデータ62のみがスキャン対象となるので、情報処理装置1は、完全スキャンに比べて負荷を抑えつつ短時間でスキャンを行うことができる。この差分スキャンが、「所定の処理」の一例にあたる。
データ読書処理部102は、図1のCPU2及びメモリ3により実現される。具体的には、CPU2及びメモリ3により実行される図2のファイルシステム93の動作によりその機能が発揮される。
データ読書処理部102は、データ書込の指示を利用プログラム実行部101から受ける。さらに、データ読書処理部102は、データ書込を行うファイルのデータ62のデータ位置の情報をファイル情報管理部103から取得する。そして、データ読書処理部102は、ストレージ6の取得したデータ位置にあるデータ62に対してデータ書込を行う。その後、データ読書処理部102は、処理が完了した場合には処理完了の応答を利用プログラム実行部101へ送信する。また、処理が完了せずにエラーが発生した場合、データ読書処理部102は、エラー応答を利用プログラム実行部101へ送信する。
また、データ読書処理部102は、データ読出の指示を利用プログラム実行部101から受ける。さらに、データ読書処理部102は、データ読出を行うファイルのデータ62のデータ位置の情報をファイル情報管理部103から取得する。そして、データ読書処理部102は、指定されたファイルのデータ62をストレージ6の取得したデータ位置から読み出す。その後、データ読書処理部102は、読み出したデータ62を利用プログラム実行部101へ送信する。また、処理が完了せずにエラーが発生した場合、データ読書処理部102は、エラー応答を利用プログラム実行部101へ送信する。
また、データ読書処理部102は、ファイル削除の指示を利用プログラム実行部101から受ける。さらに、データ読書処理部102は、消去を行うファイルのデータ62のデータ位置の情報をファイル情報管理部103から取得する。そして、データ読書処理部102は、ストレージ6の取得したデータ位置に格納されたデータを消去する。その後、データ読書処理部102は、処理が完了した場合には処理完了の応答を利用プログラム実行部101へ送信する。また、処理が完了せずにエラーが発生した場合、データ読書処理部102は、エラー応答を利用プログラム実行部101へ送信する。
ファイル情報管理部103は、図1のCPU2及びメモリ3により実現される。具体的には、CPU2及びメモリ3により実行される図2のファイルシステム93及びデバイスドライバ94の動作によりその機能が発揮される。ファイル情報管理部103は、各ファイルの属性の設定及び変更を含むファイルテーブル61の管理を行う。以下にファイル情報管理部103の処理の詳細について説明する。
ファイル情報管理部103は、ファイルの識別情報を含む属性設定の指示を利用プログラム実行部101から受ける。ただし、更新属性フラグ41は、ファイルの更新時に自動的にオンされ、所定期間経過後自動的にオフされるものである。そのためファイル情報管理部103が受ける属性設定の指示の中には、更新属性フラグ41の明示的なオンオフの指定は含まれない。
その後、ファイル情報管理部103は、ファイルテーブル61の中から指定されたファイルの識別情報に対応するエントリ番号を特定する。そして、ファイル情報管理部103は、ファイルテーブル61上の特定したエントリにおける属性情報611の設定を行う。具体的には、ファイル情報管理部103は、属性情報611における指定された属性のフラグのオンオフを指定された値に設定する。その後、ファイル情報管理部103は、設定完了の応答を利用プログラム実行部101に出力する。
また、ファイル情報管理部103は、ファイルの作成の指示を利用プログラム実行部101から受ける。次に、ファイル情報管理部103は、ファイルテーブル61の中の空きエントリを特定する。そして、空きエントリがあれば、ファイル情報管理部103は、特定したエントリにファイルの識別子などを登録する。また、ファイル情報管理部103は、作成したファイルの更新属性以外の属性情報の設定を行う。さらにファイル情報管理部103は、新しくファイルを作成したエントリのエントリ番号、書込データの情報及びライトイネーブル(Write Enable)信号を更新情報管理部105の付加指示部151へ出力する。ここで、書込データは、更新属性フラグ41をオンにするデータであり、値が「1」すなわちHighの値を有するデータである。その後、ファイル情報管理部103は、設定完了の応答を利用プログラム実行部101に出力する。また、空きエントリが無い場合、ファイル情報管理部103は、エラーの応答を利用プログラム実行部101へ出力する。
また、ファイル情報管理部103は、データ書込の場合、ファイルの識別情報とともにデータ書込の指示を利用プログラム実行部101から受ける。そして、ファイル情報管理部103は、ファイルテーブル61の中から取得したファイルの識別情報に対応するエントリ番号を特定する。その後、ファイル情報管理部103は、特定したエントリ番号を有するエントリからデータ位置を取得し、データ読書処理部102へ出力する。次に、ファイル情報管理部103は、ファイルテーブル61の特定したエントリにおける更新日時などの情報を更新する。さらに、ファイル情報管理部103は、特定したエントリ番号、書込データの情報及びライトイネーブル信号を更新情報管理部105の付加指示部151へ出力する。
また、ファイル情報管理部103は、データ読出の場合、ファイルの識別情報とともにデータ読出の指示を利用プログラム実行部101から受ける。そして、ファイル情報管理部103は、ファイルテーブル61の中から取得したファイルの識別情報に対応するエントリ番号を特定する。その後、ファイル情報管理部103は、特定したエントリ番号を有するエントリからデータ位置を取得し、データ読書処理部102へ出力する。
また、ファイル情報管理部103は、ファイル削除の場合、ファイルの識別情報とともにファイル削除の指示を利用プログラム実行部101から受ける。そして、ファイル情報管理部103は、ファイルテーブル61の中から取得したファイルの識別情報に対応するエントリ番号を特定する。その後、ファイル情報管理部103は、特定したエントリ番号を有するエントリからデータ位置を取得し、データ読書処理部102へ出力する。さらに、ファイル情報管理部103は、特定したエントリ番号を有するエントリに格納された情報を削除する。その後、ファイル情報管理部103は、処理完了の応答を利用プログラム実行部101へ出力する。
さらに、ファイル情報管理部103は、属性読取の場合、ファイルの識別情報とともに属性読取の指示を利用プログラム実行部101から受ける。そして、ファイル情報管理部103は、ファイルテーブル61の中から取得したファイルの識別情報に対応するエントリ番号を特定する。その後、ファイル情報管理部103は、特定したエントリ番号を有するエントリからデータ位置を取得し、属性読取部104及び更新情報管理部105へ出力する。
属性読取部104は、図1のCPU2及びメモリ3により実現される。具体的には、CPU2及びメモリ3により実行される図2のファイルシステム93の動作によりその機能が発揮される。
属性読取部104は、属性読取の指示を利用プログラム実行部101から受ける。さらに、属性読取部104は、ファイル情報管理部103から属性を読み取るファイルのエントリ番号をファイル情報管理部103から取得する。
読み取る属性として更新属性以外が指定された場合、属性読取部104は、取得したエントリの属性情報611の中から、指定された属性のフラグの値を読み取る。そして、属性読取部104は、読み取った各属性のフラグの値を利用プログラム実行部101へ出力する。
これに対して、読み取る属性として更新属性が指定された場合、属性読取部104は、更新情報管理部105の更新検出テーブル154の取得したエントリに対応する更新属性フラグ41の値を取得する。次に、属性読取部104は、取得した更新属性フラグ41の値を特定したエントリの属性情報611のビット612に格納された更新属性のフラグを表す値とする。そして、属性読取部104は、更新属性のフラグを表す値を利用プログラム実行部101へ出力する。
更新情報管理部105は、更新検出テーブル回路4によって実現される。更新情報管理部105は、付加指示部151、リセット指示部152、テーブル管理部153及び更新検出テーブル154を有する。本実施例では、付加指示部151〜更新検出テーブル154は、ハードウェア回路である。
リセット指示部152は、所定の周期でテーブル管理部153に対して周期をずらした2つのリセット信号である第1リセット信号及び第2リセット信号を出力する。図6は、リセット指示部の模式的な回路図である。図6に示すように、リセット指示部152は、クロック生成部521、T型FF(Flip Flop)522、遅延付加部523、並びに、AND回路524及び525を有する。このリセット指示部152が、「削除指示部」の一例にあたる。
クロック生成部521は、周期的にクロックパルスを出力する。例えば、クロック生成部521は、情報処理装置1が有するRTC(Real Time Clock)素子からクロックを受信し、24時間毎にクロックパルスを発生する。ただし、クロックパルスの周期は完全スキャンの周期より短ければよく、ウイルススキャンの処理負荷とウイルス検出の確度とのバランスから決定されることが好ましい。クロックパルスの周期が短ければ、ウイルススキャンの頻度があがり、ウイルス検出の確度が向上するが、情報処理装置1の処理負荷が上昇する。クロック生成部521は、生成したクロックパルスをT型FF522及び遅延付加部523へ出力する。図6では、クロック生成部521が出力するクロックパルスを「CLK(Clock)」として表している。
T型FF522は、クロックパルスの入力をクロック生成部521から受ける。T型FF522は、互いに反転した2つの信号である第1タイミング信号及び第2タイミング信号を出力する。図6では、第1タイミング信号を「T−Q1」と表し、第2タイミング信号を「T−Q2」と表している。そして、T型FF522は、クロックパルスの立ち上がりのタイミングで第1タイミング信号及び第2タイミング信号を反転させる。すなわち、第1タイミング信号及び第2タイミング信号は24時間毎に反転する。T型FF522は、第1タイミング信号をAND回路524へ出力する。また、T型FF522は、第2タイミング信号をAND回路525へ出力する。
遅延付加部523は、信号遅延用の一般素子である。遅延付加部523は、クロックパルスの入力をクロック生成部521から受ける。そして、遅延付加部523は、入力されたクロックパルスに所定の遅延を与えて遅延クロックパルスを生成する。例えば、遅延付加部523は、クロックパルスに4分の1周期の遅延を与えて遅延クロックパルスを生成する。そして、遅延付加部523は、遅延クロックパルスをAND回路524及び525へ出力する。図6では、遅延クロックパルスを「DCLK」と表している。
AND回路524は、第1タイミング信号の入力をT型FF522から受ける。また、AND回路524は、遅延クロックパルスの入力を遅延付加部523から受ける。次に、AND回路524は、第1タイミング信号と遅延クロックパルスとの論理積を求める。そして、AND回路524は、求めた論理積の値を有する第1リセット信号をテーブル管理部153へ出力する。図6では、第1リセット信号は「RST1」と表されている。第1リセット信号は、クロックパルス信号の2倍のインターバルを有する。
AND回路525は、第2タイミング信号の入力をT型FF522から受ける。また、AND回路525は、遅延クロックパルスの入力を遅延付加部523から受ける。次に、AND回路525は、第2タイミング信号と遅延クロックパルスとの論理積を求める。そして、AND回路525は、求めた論理積の値を有する第2リセット信号をテーブル管理部153へ出力する。図6では、第2リセット信号は「RST2」と表されている。第2リセット信号は、クロックパルス信号の2倍のインターバルを有する。
ここで、第1タイミング信号及び第2タイミング信号は、クロックパルスのインターバルの2倍の周期をもつ、互いにパルスタイミングが半周期ずれた信号である。そして、第1タイミング信号と第2タイミング信号の周期は48時間である。さらに、遅延クロックパルスは、24時間毎に入力される。そこで、AND回路524が第1リセット信号を出力した後、24時間後にAND回路525が第2リセット信号を出力し、その24時間後にAND回路524が第1リセット信号を出力する処理が繰り返される。第1タイミング信号及び第2タイミング信号は、更新属性フラグ41のリセットのタイミングを与える信号である。
次に、図7を参照して、付加指示部151、テーブル管理部153及び更新検出テーブル154について説明する。図7は、付加指示部、テーブル管理部及び更新検出テーブルの模式的な回路図である。
付加指示部151は、更新属性を付加する指示、すなわち、更新属性フラグ41のオンの指示をテーブル管理部153へ出力する。図7に示すように、付加指示部151は、AND回路511を有する。
ここで、図8を参照して、付加指示部の入出力について説明する。図8は、付加指示部の入出力を説明するための図である。AND回路511は、Highの値を有する書込データ及び当該データの有効信号の入力をファイル情報管理部103から受ける。データの有効信号は、High/Lowが確定した書込データであることを保証する期間を示す信号である。本実施例では、次のように生成する。メモリアクセスにおいて一般的な信号であるバスクロック401と一般的なライトイネーブル信号402の論理積を求め、求めた信号を反転させることで、データの有効信号403が求められる。そして、AND回路511は、書込データ(WRITE DATA)404と算出したデータの有効信号403との論理積を求める。その後、AND回路511は、求めた論理積の値を有する設定信号405をテーブル管理部153へ出力する。図7及び8では、設定信号が「SET」として表されている。
テーブル管理部153は、付加指示部151から受信した更新属性フラグ41をオンする指示及びリセット指示部152から受信した第1リセット信号及び第2リセット信号を用いて、更新属性フラグ41の設定を行う。テーブル管理部153は、SR(Set Reset)ラッチ531及び532を有する。このテーブル管理部153が、「管理部」の一例にあたる。
SRラッチ531は、S(Set)の入力ポートに対して、設定信号の入力を付加指示部151から受ける。また、SRラッチ531は、R(Reset)の入力ポートに対して、第1リセット信号の入力をリセット指示部152から受ける。そして、SRラッチ531は、図9で示す真理値表にしたがい第1属性信号を出力する。図9は、SRラッチの真理値表の図である。
具体的には、設定信号及び第1リセット信号がLowであれば、SRラッチ531は出力中の第1属性信号を保持する。また、設定信号がLowであり第1リセット信号がHighであれば、SRラッチ531は第1属性信号としてLowの信号を出力する。また、設定信号がHighであり第1リセット信号がLowであれば、SRラッチ531は第1属性信号としてHighの信号を出力する。さらに、設定信号及び第1リセット信号がHighの場合、SRラッチ531は第1属性信号としてLowの信号を出力する。図6では、第1属性信号を「U1」で表している。
SRラッチ532は、Sの入力ポートに対して、設定信号の入力を付加指示部151から受ける。また、SRタッチ532は、Rの入力ポートに対して、第2リセット信号の入力をリセット指示部152から受ける。そして、SRラッチ532は、SRラッチ531と同様に図9で示す真理値表にしたがい第2属性信号を出力する。図6では、第2属性信号を「U2」で表している。
更新検出テーブル154は、更新属性フラグ41をファイルの数分有する。更新検出テーブル154は、ファイル情報管理部103から受信したエントリ番号に対応するファイルの更新属性フラグ41のオンオフを、テーブル管理部153から受信した第1属性信号及び第2属性信号を用いて設定し、設定値を属性読取部104へ出力する。
更新検出テーブル154は、アドレスデコーダ542及びOR回路541を有する。ここで、図7では、選択された状態のOR回路541のみを記載しているが、更新検出テーブル154は、ファイルの数分のOR回路541を有する。そして、ファイルの数分のOR回路541は、1つの回路で構成される。
アドレスデコーダ542は、エントリ番号の入力をファイル情報管理部103から受ける。そして、アドレスデコーダ542は、取得したエントリ番号をOR回路541を表すアドレスに変換する。その後、アドレスデコーダ542は、取得したアドレスで表されるOR回路541を選択する。
OR回路541の中で、アドレスデコーダ542により選択されたOR回路541が以下の処理を行う。OR回路541は、第1属性信号の入力をSRラッチ531から受ける。また、OR回路541は、第2属性信号の入力をSRラッチ532から受ける。そして、OR回路541は、第1属性信号及び第2属性信号の論理積を求め、求めた論理積の値を更新属性フラグ41の値として属性読取部104へ出力する。
ここで、AND回路511は、上述したように、書込データとデータ有効信号の論理積の値を設定信号として出力する。そこで、例えば、悪意のプログラムが更新属性フラグ41をオフにしようとした場合について考える。その場合、AND回路511は、更新属性フラグ41をオフにするためにLowの値を有する書込データの書き込みが指示される。書込データがLowの値を有する場合、AND回路511は、Lowの値を有する設定信号を出力する。しかし、SRラッチはSの入力ポートへの信号入力において、AND回路511の出力がHighからLowへ変化する動作は存在しない。すなわち、更新属性フラグ41は、ファイルシステム93を含むCPU2によって実行されるプログラムによってオフにされることはない。つまり、更新情報管理部105は、ファイルシステム93を含むCPU2によって実行されるプログラムによる属性情報の削除を抑制しているといえる。言い換えれば、更新情報管理部105は、更新属性フラグ41のオフをファイルシステム93、ひいてはOS92から独立して行うといえる。
次に、図10を参照して、更新検出テーブル154とスキャンとのタイミングについて説明する。図10は、更新検出テーブルとスキャンとの関係を表すタイミングチャートである。図10は、横軸で時間の経過を表している。図10の各グラフは、左端に示した種類の信号の変化を表す。以下においてスキャン動作の説明の対象とするファイルを対象ファイルという。また、ここでは24時間間隔で差分スキャンを行う場合で説明する。
クロックパルス(CLK)は、24時間毎に出力される。そして、遅延クロックパルス(DCKL)は、所定の遅延が与えられてパルスタイミングがずらされている。
第1タイミング信号(T−Q1)は、クロックパルスの立ち上がりから次の立ち上がりまでの2倍を1周期、すなわち48時間を1周期とするパルス信号である。また、第2タイミング信号(T−Q2)は、第1タイミング信号を反転させた信号である。
そして、第1リセット信号(RST1)は、第1タイミング信号がHighの期間において、遅延クロックパルスがHighになったタイミングでHighの値を持つ。また、第2リセット信号(RST2)は、第2タイミング信号がHighの期間において、遅延クロックパルスがHighになったタイミングでHighの値を持つ。すなわち、第1リセット信号及び第2リセット信号は、いずれもクロックパルスの2倍のインターバル、すなわち48時間のインターバルをもつ。また、第1リセット信号と第2リセット信号とは、図10に示すように第1及び第2タイミング信号の半周期分のずれ、すなわち24時間のずれを有する。
ここでは、設定信号(SET)が時刻T1及びT4のタイミングでSRラッチ531及び532に入力された場合で説明する。T1以前には設定信号が入力されておらず、タイミング201におけるスキャンでは、対象ファイルは更新されておらず、スキャンの対象にならない。
時刻T1で設定信号が入力されたため、それ以降第1属性信号(U1)及び第2属性信号(U2)は、Highの値を有する状態に遷移する。
そして、時刻T1の後、時刻T2で第2リセット信号はLowの値を有する状態に遷移する。これにより、SRラッチ532から出力される第2属性信号がLowの値を有する状態に遷移する。しかしこの状態では、第1リセット信号はLowの値のままなので、更新属性フラグ41であるOR回路541は、Highの値を出力し続ける。すなわち、対象ファイルの更新属性フラグ41がオンの状態が保持される。
そして、タイミング202では対象ファイルの更新属性フラグ41がオンになっているので、対象ファイルはスキャンの対象となり、ウイルスの検出が行われる。
次に、時刻T3で第1リセット信号はLowの値を有する状態に遷移する。これにより、SRラッチ531から出力される第1属性信号がLowの値を有する状態に遷移する。この場合、第2リセット信号もLowの値を有するので、更新属性フラグ41であるOR回路541は、時刻T3でLowの値に遷移する。すなわち、対象ファイルの更新属性フラグ41がオフの状態となる。
そして、タイミング203では対象ファイルの更新属性フラグ41がオフになっているので、対象ファイルはスキャンの対象から外れる。
また、時刻T4で設定信号が入力されたため、それ以降第1属性信号及び第2属性信号は、Highの値を有する状態に遷移する。
そして、時刻T4の後、第1リセット信号及び第2リセット信号のいずれもがLowの値となる以前のタイミング204では、対象ファイルの更新属性フラグ41がオンであるので、対象ファイルはスキャンの対象となり、ウイルスの検出が行われる。
次に、時刻T5で第1リセット信号はLowの値を有する状態に遷移する。これにより、SRラッチ531から出力される第1属性信号がLowの値を有する状態に遷移する。しかしこの状態では、第2リセット信号はLowの値のままなので、更新属性フラグ41であるOR回路541は、Highの値を出力し続ける。すなわち、対象ファイルの更新属性フラグ41がオンの状態が保持される。
そして、タイミング205では対象ファイルの更新属性フラグ41がオンになっているので、対象ファイルはスキャンの対象となり、ウイルスの検出が行われる。すなわち、この場合は、1回の更新に対して、2回のウイルススキャンが行われることになる。
その後、時刻T6で第2リセット信号はLowの値を有する状態に遷移する。これにより、SRラッチ532から出力される第2属性信号がLowの値を有する状態に遷移する。この場合、第1リセット信号もLowの値を有するので、更新属性フラグ41であるOR回路541は、時刻T6でLowの値に遷移する。すなわち、対象ファイルの更新属性フラグ41がオフの状態となる。これにより、それ以降のタイミング206で行われるスキャンでは、対象ファイルは、スキャン対象から外れる。
このように、更新属性フラグ41は、最低でも第1リセット信号と第2リセット信号との周期のずれの期間は更新属性フラグ41がオンの状態が保持される。本実施例では、更新属性フラグ41は、最低でも24時間はオンの状態が保持される。そこで、スキャンタイミングを第1リセット信号と第2リセット信号との周期のずれの期間より短くすることで、更新されたファイルのスキャンを確実に行うことができる。この更新属性フラグ41がオンの状態の継続期間が、「所定期間」の一例にあたる。
そして、第1リセット信号と第2リセット信号との周期のずれの期間は、第1及び第2タイミング信号の半周期の期間にあたる。また、第1及び第2タイミング信号の1周期は、クロックパルスの周期の2倍である。したがって、第1リセット信号と第2リセット信号との周期のずれの期間は、クロックパルスの周期にあたる。言い換えれば、クロックパルスの周期が、ファイルの更新情報を保持する期間を与える。そこで、スキャンタイミングは、クロックパルスの周期より短くすれば、ウイルス検出ソフトはファイルの更新を見逃すことなく、更新されたファイルのスキャンが確実に行われる。
さらに、図11A及び11Bを参照して、ウイルス検出ソフトによるスキャンタイミングの条件について説明する。図11Aは、更新属性フラグのオフのタイミングとスキャンタイミングが近接している場合のタイミングチャートである。また、図11Bは、更新属性フラグのオフのタイミングとスキャンタイミングが十分離れている場合のタイミングチャートである。図11A及び11Bは、横軸で時間の経過を表す。また、図11A及び11Bでは、第1及び第2属性信号を組み合わせて更新属性フラグ41のオンオフの状態を表している。
更新属性フラグ41がオフになるタイミングとスキャンのタイミングが近接する場合、ウイルス検出ソフトの動作期間によりチェック漏れが生じるおそれがある。例えば、図11Aに示すように、時刻T01でスキャンが開始されると対象ファイルの更新属性フラグ41はオンであるので、本来であればスキャン対象となることが好ましい。しかし、ウイルス検出ソフトの動作期間が時間TSであり、時刻T03で処理が終わるとすると、その間の時刻T02で、対象ファイルの更新属性フラグ41がオフになってしまう。ウイルス検出ソフトが、時刻T02までに対象ファイルの更新属性フラグ41の確認を終えていなければ、対象ファイルはスキャンの対象外になってしまう。
さらに、本実施例のように、更新属性フラグ41がオフになるタイミングが1日1回であり、スキャンのタイミングも1日1回の場合、毎回スキャン漏れのおそれが発生し、信頼性の高いウイルスの検出ができなくなる。
そこで、このリスクを回避するために、図11Bのようにウイルス対策ソフトの動作開始の時刻T11から動作終了の時刻T12までの期間TSの後に更新属性フラグ41のオフの時刻T13が来るように、スキャンのタイミングを設定すればよい。すなわち、更新属性フラグ41がオフになる時刻T13から期間TSよりも十分前にウイルス対策ソフトが起動されることが好ましい。これにより、ウイルス検出ソフトの動作期間内に更新属性フラグ41がオフにならないようにすることができ、スキャン漏れを低減することができる。
例えば、更新属性フラグ41がオフになる周期及びスキャンの周期が24時間毎であり、ウイルス対策ソフトの最大処理時間が4時間である場合について考える。この場合、更新属性フラグ41をオフにする時刻が0時とされたならば、ウイルス対策ソフトの起動時刻は、5時や18時に設定されることが好ましい。
また、更新情報管理部105の目的の1つは、更新属性フラグ41をオンにする書き込み操作、すなわちHighのデータの書き込み操作により更新検出テーブル154をHighの信号を保持する状態とすることである。また、更新情報管理部105の他の目的は、リセットの操作により更新検出テーブル154をLowの信号を保持する状態とすることである。一般的なメモリは、Lowのデータの書き込み操作により、Lowのデータを保持する状態に遷移するが、更新情報管理部105は、この機能を有さない。その代わりに、更新情報管理部105は、OSに依存しないリセット信号により、更新検出テーブル154をLowのデータを保持する状態に遷移させる。
ここで、SRラッチ531及び532において、Highのデータの書き込み操作とリセット操作のタイミングが重なった場合、更新検出テーブル154が保持する値が不安定になるおそれがある。具体的には以下のような理由による。すなわち、本実施例に係る更新情報管理部105は、SRラッチ531及び532の出力を用いて、Highのデータを保持する状態に遷移する。しかし、SRラッチ531及び532では、Sの入力ポートにHighの信号が入力されるタイミングとRの入力ポートにLowの信号が入力されるタイミングとが重なると、出力は不安定になり、Highのデータを出力しないという誤った状態が生じるおそれがある。
そこで、本実施例では、SRラッチ531とSRラッチ532という2系統を配置し、その論理和を更新検出テーブル154の出力とすることで、更新検出テーブル154が保持する値が不安定となる状態の発生を抑制する。すなわち、SRラッチ531及び532の一方が不安定であっても、他方は必ずHighの値を出力する。そのため、SRラッチ531の出力とSRラッチ532の出力との論理和を更新属性フラグ41の値とすることで、リセットのタイミングに依らず、設定信号がHighの場合には更新属性フラグ41がオンになる。
次に、図12を参照して、本実施例に係る情報システムによるファイル管理の流れについて説明する。図12は、ファイル管理の処理のフローチャートである。図12のファイル管理の処理は、CPU2及びメモリ3により実行されるファイルシステム93によって行われる。以下では、ファイルシステム93に対応する図4の各部を動作主体として説明する。
ファイル情報管理部103は、利用プログラム実行部101により指示された操作がファイル作成か否かを判定する(ステップS101)。操作がファイル作成の場合(ステップS101:肯定)、ファイル情報管理部103は、ストレージ6に格納されたファイルテーブル61における空きエントリの検出を行う(ステップS102)。
そして、ファイル情報管理部103は、ファイルテーブル61に空きエントリがあるか否かを判定する(ステップS103)。空きエントリがない場合(ステップS103:否定)、ファイル情報管理部103は、エラーを利用プログラム実行部101に出力し(ステップS104)、ステップS121へ進む。
これに対して、空きエントリがある場合(ステップS103:肯定)、ファイル情報管理部103は、指定されたファイルの識別情報をファイルテーブル61の空きエントリに設定する(ステップS105)。さらに、ファイル情報管理部103は、属性更新処理を行う(ステップS106)。その後、ファイル情報管理部103は、ステップS114へ進む。
一方、操作がファイル作成でない場合(ステップS101:否定)、ファイル情報管理部103は、利用プログラム実行部101から受信したファイルの識別情報に対応するエントリ番号のファイルテーブル61からの取得を実行する(ステップS107)。
そして、ファイル情報管理部103は、ファイルの識別情報に対応するエントリ番号を取得したか否かを判定する(ステップS108)。エントリ番号を取得できない場合(ステップS108:否定)、ファイル情報管理部103は、エラーを利用プログラム実行部101へ出力する(ステップS109)。その後、処理はステップS121へ進む。
これに対して、エントリ番号が取得できた場合(ステップS108:肯定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリからデータ位置を取得し、データ読書処理部102へ出力する。そして、データ読書処理部102及びファイル情報管理部103は、利用プログラム実行部101から指示された操作がファイル削除か否かを判定する(ステップS110)。指示された操作がファイル削除の場合(ステップS110:肯定)、データ読書処理部102及びファイル情報管理部103は、特定したエントリ番号を有するエントリを解放する(ステップS111)。具体的には、データ読書処理部102は、取得したエントリ番号を有するエントリに登録された情報を削除する。また、ファイル情報管理部103は、ストレージ6上の取得したデータ位置のデータ62を削除する。その後、データ読書処理部102及びファイル情報管理部103は、処理を終了する。
これに対して、指示された操作がファイル削除でない場合(ステップS110:否定)、データ読書処理部102及びファイル情報管理部103は、利用プログラム実行部101から指示された操作がデータ書込か否かを判定する(ステップS112)。指示された操作がデータ書込の場合(ステップS112:肯定)、データ読書処理部102は、ストレージ6上のファイル情報管理部103から通知されたデータ位置にデータ62を書き込む(ステップS113)。また、ファイル情報管理部103は、ファイル更新時処理を実行する(ステップS114)。その後処理は、ステップS121へ進む。
これに対して、指示された操作がデータ書込でない場合(ステップS112:否定)、データ読書処理部102は、利用プログラム実行部101から指示された操作がデータ読出か否かを判定する(ステップS115)。指示された操作がデータ読出の場合(ステップS115:肯定)、データ読書処理部102は、ストレージ6上のファイル情報管理部103から通知されたデータ位置からデータ62を読み出す(ステップS116)。その後、処理はステップS121へ進む。
これに対して、指示された操作がデータ読出でない場合(ステップS115:否定)、ファイル情報管理部103は、利用プログラム実行部101から指示された操作が属性設定か否かを判定する(ステップS117)。指示された操作が属性設定の場合(ステップS117:肯定)、ファイル情報管理部103は、属性更新処理を実行する(ステップS118)。その後、処理はステップS121へ進む。
これに対して、指示された操作がデータ属性設定でない場合(ステップS117:否定)、属性読取部104は、利用プログラム実行部101から指示された操作が属性取得であることを確認する(ステップS119)。そして、属性読取部104は、属性読取処理を実行する(ステップS120)。
その後、ファイル情報管理部103は、ファイルテーブル61の特定したエントリ番号を有するエントリのアクセス日時を現在の日時に更新する(ステップS121)。
次に、図13を参照して、ファイル更新時処理について説明する。図13は、ファイル更新時処理のフローチャートである。図13のフローチャートは、図12におけるステップS114において実行される処理の一例にあたる。
ファイル情報管理部103は、更新情報管理処理を実行する(ステップS201)。
その後、ファイル情報管理部103は、利用プログラム実行部101が指定した識別情報に対応するファイルテーブル61におけるエントリのアーカイブ属性をオンにする(ステップS202)。
次に、図14を参照して、属性読取処理について説明する。図14は、属性読取処理のフローチャートである。図14のフローチャートは、図12のステップS120において実行される処理の一例にあたる。
属性読取部104は、利用プログラム実行部101に指定された識別情報に対応するファイルテーブル61の属性情報を取得する(ステップS301)。
次に、属性読取部104は、更新情報管理処理を実行する(ステップS302)。そして、属性読取部104は、更新情報管理部105から更新属性フラグ41のオンオフの情報を取得する。
そして、属性読取部104は、更新情報管理部105から取得した更新属性フラグ41がオンか否かを判定する(ステップS303)。更新情報管理部105から取得した更新属性フラグ41がオンの場合(ステップS303:肯定)、属性読取部104は、ファイルテーブル61から取得した属性情報の更新属性フラグ41をオンに設定する(ステップS304)。
これに対して、更新情報管理部105から取得した更新属性フラグ41がオフの場合(ステップS303:否定)、属性読取部104は、ファイルテーブル61から取得した属性情報の更新属性フラグ41をオフに設定する(ステップS305)。
その後、属性読取部104は、属性情報を利用プログラム実行部101へ出力する(ステップS306)。
次に、図15を参照して、更新情報管理処理について説明する。図15は、更新情報管理処理のフローチャートである。図15のフローチャートは、図13のステップS201及び図14のステップS302において実行される処理の一例にあたる。ここで、図15の更新情報管理処理は、CPU2及びメモリ3によって実行される更新情報アクセス用のデバイスドライバ94及び更新検出テーブル回路4によって行われる。以下では、更新情報アクセス用のデバイスドライバ94及び更新情報管理部105にあたる回路に対応する図4の各部を動作主体として説明する。
更新検出テーブル154は、エントリ番号の入力をファイル情報管理部103から受ける。そして、更新検出テーブル154は、取得したエントリ番号を自身が有するOR回路541の何れかを表すアドレスに変換する(ステップS401)。
次に、ファイル情報管理部103及び属性読取部104は、属性の書込処理か否かを判定する(ステップS402)。
属性の書込処理の場合(ステップS402:肯定)、ファイル情報管理部103は、ライトイネーブル信号及び書込データを更新情報管理部105へ出力する。更新情報管理部105は、エントリ番号に対応するOR回路541の値をオンに設定する(ステップS403)。
これに対して、属性の読取処理の場合(ステップS402:否定)、属性読取部104は、更新属性フラグ41の値を更新検出テーブル154から取得する(ステップS404)。
次に、図16を参照して、属性更新処理について説明する。図16は、属性更新処理のフローチャートである。図16のフローチャートは、図12のステップS106及びS118において実行される処理の一例にあたる。
ファイル情報管理部103は、利用プログラム実行部101が指定した識別情報に対応するエントリ番号を取得する。そして、ファイル情報管理部103は、指定されたファイルが読取専用か否かを判定する(ステップS501)。指定されたファイルが読取専用でない場合(ステップS501:否定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリの読取専用属性のフラグをオフにする(ステップS502)。これに対して、指定されたファイルが読取専用の場合(ステップS501:肯定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリの読取専用属性のフラグをオンにする(ステップS503)。
次に、ファイル情報管理部103は、指定されたファイルが隠しファイルかを判定する(ステップS504)。指定されたファイルが隠しファイルでない場合(ステップS504:否定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリの隠しファイル属性のフラグをオフにする(ステップS505)。これに対して、指定されたファイルが隠しファイルの場合(ステップS504:肯定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリの隠しファイル属性のフラグをオンにする(ステップS506)。
次に、ファイル情報管理部103は、指定されたファイルがアーカイブかを判定する(ステップS507)。指定されたファイルがアーカイブでない場合(ステップS507:否定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリのアーカイブ属性のフラグをオフにする(ステップS508)。これに対して、指定されたファイルがアーカイブの場合(ステップS507:肯定)、ファイル情報管理部103は、取得したエントリ番号を有するエントリのアーカイブ属性のフラグをオンにする(ステップS509)。
次に、図17を参照して、更新情報管理部105による更新属性フラグ41の設定処理ついて説明する。図17は、更新情報管理部による更新属性フラグの設定処理のフローチャートである。ここでは、Highの信号の値を1とし、Lowの信号の値を0として説明する。
付加指示部151のAND回路511は、書込データが1であり、且つ、書き込み可能、すなわちデータ有効信号が入力されているか否かを判定する(ステップS601)。書込データが1であり、且つ、書き込み可能である場合(ステップS601:肯定)、AND回路511は、値が1の設定信号(SET)を、テーブル管理部153のSRラッチ531及び532へ出力する(ステップS602)。
これに対して、書込データが0、又は、書き込み禁止の場合(ステップS601:否定)、AND回路511は、値が0の設定信号(SET)を、テーブル管理部153のSRラッチ531及び532へ出力する(ステップS603)。
SRラッチ531は、設定信号(SET)の入力をAND回路511から受ける。また、SRラッチ531は、第1リセット信号(RST1)の入力をリセット指示部152から受ける。そして、設定信号(SET)及び第1リセット信号(RST1)を基に第1属性信号(U1)を生成する処理を実行し、生成した第1属性信号(U1)を更新検出テーブル154のOR回路541へ出力する(ステップS604)。ここで、図17における「ラッチ(S,R)」は、括弧内のSがSの入力ポートに入力される信号を表し、括弧内のRがRの入力ポートに入力される信号を表し、それらの信号を用いて出力を生成し、出力する処理を表す。
SRラッチ532は、設定信号(SET)の入力をAND回路511から受ける。また、SRラッチ532は、第2リセット信号(RST2)の入力をリセット指示部152から受ける。そして、設定信号(SET)及び第2リセット信号(RST2)を基に第2属性信号(U2)を生成する処理を実行し、生成した第2属性信号(U2)を更新検出テーブル154のOR回路541へ出力する(ステップS605)。
OR回路541は、第1属性信号(U1)及び第2属性信号(U2)のいずれもが0であるか否かを判定する(ステップS606)。第1属性信号(U1)及び第2属性信号(U2)のいずれかが1の場合(ステップS606:否定)、OR回路541は、更新属性フラグ41の値として1を出力し、更新属性フラグ41をオンにする(ステップS607)。
これに対して、第1属性信号(U1)及び第2属性信号(U2)のいずれも0の場合(ステップS606:肯定)、OR回路541は、更新属性フラグ41の値として0を出力し、更新属性フラグ41をオフにする(ステップS608)。
次に、図18を参照して、SRラッチ531及び532における出力決定処理について説明する。図18は、SRラッチにおける出力決定処理のフローチャートである。ここでは、SRラッチ531及び532を区別しないため、「SRラッチ530」と表す。また、ここでは、Sの入力ポートに入力された信号を「S」、Rの入力ポートに入力された信号を「R」とする。そして、SRラッチ530の出力を「Q」と表す。
SRラッチ530は、Rの入力ポートに「1」が入力されたか否かを判定する(ステップS701)。Rの入力ポートに「1」が入力されていない場合(ステップS701:否定)、SRラッチ530は、0を出力する(ステップS702)。
これに対して、Rの入力ポートに「1」が入力された場合(ステップS701:肯定)、SRラッチ530は、Sの入力ポートに「1」が入力されたか否かを判定する(ステップS703)。Sの入力ポートに「1」が入力されていない場合(ステップS703:否定)、SRラッチ530は、1を出力する(ステップS704)。
これに対して、Sの入力ポートに「1」が入力された場合(ステップS703:肯定)、SRラッチ530は、出力の値を保持する。
次に、図19を参照して、本実施例に係る情報処理装置を用いた場合のウイルス検出の効果について説明する。図19は、実施例1に係る情報処理装置を用いた場合のウイルス検出の効果を説明するための図である。
グラフ411は、週に1回の完全スキャンのみを行う場合のウイルス駆除の状態を表す。グラフ412は、更新属性フラグ41がオンの状態を24時間保証し、24時間毎に差分スキャンを行う場合の本実施例に係る情報処理装置を用いた場合のウイルス駆除の状態を表す。グラフ413は、更新属性フラグ41がオンの状態を48時間保証し、24時間毎に差分スキャンを行う場合の本実施例に係る情報処理装置を用いた場合のウイルス駆除の状態を表す。さらに、グラフ412及び413では、一点鎖線のタイミングでリセット信号が出力されるものとする。すなわち、グラフ412及び413では、ウイルス侵入後2つ目の一点鎖線で更新属性フラグ41がオフになる。
また、太線の縦軸がスキャンの実行を表す。また、黒丸が、各ウイルスに対応するパターンの入手タイミングを表す。また、ファイルが更新されたことにより、ウイルスが侵入したものとする。
また、グラフ411〜413ともに横軸で時間を表す。さらに、横軸のメモリは24時間単位で記載されている。また、グラフ411〜413のそれぞれの縦方向の各段は、上からウイルスVAの侵入状態、ウイルスVBの侵入状態、ウイルスVCの侵入状態及びウイルスVDの侵入状態を表す。無地の領域がウイルスに侵入されていない状態を示す。また、色がついている領域がウイルスに侵入されている状態を示す。グラフ411〜413のいずれも、ウイルスVA〜VDの侵入のタイミングは同じである。
完全スキャンのみを行う場合は、グラフ411のように、週に1回のタイミング421で全てのファイルがスキャンされる。この場合、情報処理装置1は、タイミング421以前にウイルスVA〜VDのパターンを入手しているので、ウイルスVA〜VDを全て駆除できる。ただし、ウイルスVA〜VDの侵入期間が長くなっている。
これに対して、24時間保証で差分スキャンを24時間ごとに行う場合、グラフ412に示すように、ウイルスVAが侵入した次のタイミング422のスキャンでウイルスVAは駆除される。ただし、次のスキャンのタイミング423まで更新属性フラグ41はオンの状態が維持される。そのため、タイミング423では、既にウイルスが駆除されたファイルに対して再度スキャンが行われる。また、ウイルスVBが侵入した後のタイミング424のスキャンでは、ウイルスVBのパターンが入手できていないため、ウイルスVBを駆除することは困難である。さらに、タイミング425では、既に一点鎖線を2本通過しており、更新属性フラグ41がオフになっている。そのため、タイミング425及び426では差分スキャンが行われず、ウイルスVBは駆除されない。ウイルスVBは、完全スキャンを待って駆除されることになる。また、ウイルスVCは、侵入直後のスキャン425によって駆除される。しかし、その後、1度スキャンしたファイルへのスキャンが発生する。また、ウイルスVDは、侵入直後のスキャンではパターンが入手されていないため駆除されず、完全スキャンで駆除されることになる。
一方、48時間保証で差分スキャンを24時間ごとに行う場合、グラフ413に示すように、ウイルスVA、VC及びVDについては、24時間保証の場合と同様である。これに対して、ウイルスVBについては、タイミング427の時点で更新属性フラグ41はオンの状態が維持されているので、スキャンが行われ駆除される。
このように、完全スキャンのみを行う場合に比べて、完全スキャンの間に差分スキャンを行うことで、迅速にウイルスを駆除でき、リスクを低減することができる。また、完全スキャンよりも差分スキャンは負荷も低く短時間で完了するので、情報処理装置1の他の処理への影響を抑えることができる。
また、更新属性フラグ41のオンの状態の継続期間を長くすることで、ウイルスの検出確率を向上させることができる。一方、更新属性フラグ41のオンの状態の継続期間を短くすることで、既にウイルスが駆除されたファイルに対する再度のスキャンを回避でき、処理負荷を低減することができる。このように、更新属性フラグ41のオンの状態の継続期間は、リスクと処理負荷とを考慮して決定することが好ましい。また、上述したように更新属性フラグ41のオンの状態の継続期間は、クロックパルスの周期により決定することができる。
なお、更新属性フラグ41のオンの状態の継続期間は、スキャンのタイミングと関係を持たないため、グラフ412及び413のウイルスVAに対するスキャンのように同じファイルを複数回スキャンする冗長性を有する。ここで、例えば、情報処理装置1の1日の更新ファイル数を939個とし、全体のファイル数を136577個として考えると、ストレージ6に格納されたファイル数に対する更新ファイルの比率は1日あたり0.7%である。この場合、差分スキャンにおけるスキャンするファイル数も0.7%となる。例えば、完全スキャンで2時間を要するファイル量の場合、1日の差分スキャンの時間は1分未満となる。したがって、スキャンする回数が2倍になっても、差分スキャンによる影響は少なく、スキャン時間を十分に短縮することができる。したがって、差分スキャンが上述した冗長性を有していてもスキャン時間は十分短縮される。
以上に説明したように、本実施例に係る情報処理装置では、ファイルが更新されたことを表す更新属性フラグがファイル更新時にオンにされ、ソフトウェアからの削除を抑制し、所定期間経過後にてオフされる。そして、更新属性フラグがオンのファイルに対してのみ処理が行われる。このように、更新属性フラグはソフトウェアによりオフされないので、更新されたファイルに対して確実に処理を実行することができる。
特にウイルススキャンの場合、ウイルスによる改ざんを受けることなく所定期間更新されたファイルであることを示し続けることができる。また、本実施例に係る情報処理装置は、更新属性フラグがオンのファイルに対して差分スキャンを行うことで、短時間で信頼性の高いウイルス検出を行うことができる。さらに、差分スキャンを完全スキャンの間に定期的に行うことで、確実且つ迅速にウイルスを駆除でき、リスクを低減することができる。