(57)【要約】【課題】セキュリティを損なわずに加速スキャン時間を可能にする装置、プログラム製品、および方法を提供すること。【解決手段】コンピュータ・システムは、最後のウィルス・スキャン以後に記憶装置のどのファイルまたは記憶域が変更されているかを確実に追跡できるセキュリティ・サブシステムを含む。その場合、信頼できる情報を使用して、ウィルスなどの望ましくないコードまたはデータならびに無効または損なわれたレジストリ項目に関するスキャンを加速することができる。ウィルスの場合、変更されているファイルまたは記憶域は、ウィルス定義のスーパーセットと照らし合わせてスキャンされる。変更のないファイルまたは記憶域は、ウィルス定義のサブセットと照らし合わせてスキャンされる。【選択図】        図１
2008507055.tif 000002
【特許請求の範囲】
【請求項１】
最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会するステップであって、前記セキュリティ・サブシステムが信頼できる変数を含み、前記判断が前記セキュリティ・サブシステムによる前記信頼できる変数への参照により信頼に資するものであるステップと、前記最後のスキャン以後に前記領域に書込みが行われたという前記照会による信頼できる判断に応答して、望ましくないコードの識別子について前記領域をスキャンするステップとを含む方法。
【請求項２】
最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会するステップであって、前記セキュリティ・サブシステムが信頼できる変数を含み、前記判断が前記セキュリティ・サブシステムによる前記信頼できる変数への参照により信頼に資するものであるステップと、望ましくないコードの前の識別子が前記最後のスキャンに含まれていたかどうかを判断するステップと、前記最後のスキャン以後に前記領域に書込みが行われていないという前記照会による判断に応答し、さらに前記前の識別子が前記最後のスキャンに含まれていたという判断に応答して、前記望ましくないコードの前記前の識別子に関する前記領域のスキャンを迂回するステップとを含む方法。
【請求項３】
最後のスキャン以後に記憶装置の第１の領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会するステップであって、前記セキュリティ・サブシステムがオペレーティング・システムから実行されているコードにとってアクセス不能であるメモリを含み、前記判断が前記セキュリティ・サブシステムによる前記アクセス不能メモリへの参照により信頼に資するものであるステップと、前記最後のスキャン以後に前記第１の領域に書込みが行われたという前記照会による信頼できる判断に応答して、望ましくないコードの既知の識別子について前記第１の領域をスキャンするステップと、前記望ましくないコードの前の識別子が前記最後のスキャンに含まれていたかどうかを判断するステップと、前記最後のスキャン以後に前記第１の領域に書込みが行われていないという前記照会による判断に応答し、さらに前記前の識別子が前記最後のスキャンに含まれていたという判断に応答して、前記望ましくないコードの前記前の識別子に関する前記第１の領域のスキャンを迂回するステップであって、前記スキャン迂回の結果として迂回領域が形成されるステップとを含む方法。
【請求項４】
前記前の識別子および前記既知の識別子は悪意あるコードの識別子であり、前記最後のスキャンは前記悪意あるコードに関する前のスキャンである、請求項３に記載の方法。
【請求項５】
前記識別子は、シグニチャ、コード・フラグメント、データ・フラグメント、ハッシュ、および前記オペレーティング・システムのレジストリ内のレジストリ項目からなるグループから選択される、請求項４に記載の方法。
【請求項６】
前記悪意あるコードに関する前記前のスキャンが実行された時間に関連し、前記アクセス不能メモリのために信頼される信頼できるスキャン・タイム・スタンプを前記セキュリティ・サブシステムから要求するステップと、新しい識別子日付に出現したことが分かっている前記悪意あるコードに関連する新しい識別子と照らし合わせて前記迂回領域をスキャンするステップであって、前記新しい識別子日付に関連する新しい識別子タイム・スタンプが前記信頼できるスキャン・タイム・スタンプより前であるという判断に応答して、前記迂回領域の前記スキャンが行われるステップとをさらに含む、請求項４に記載の方法。
【請求項７】
悪意あるコードについて記憶装置のスキャン領域内のファイルをスキャンするステップであって、前記記憶装置が第１の領域と前記スキャン領域とに細分され、前記第１の領域が通常読取り専用状態と書込み可能状態との間に安全に構成可能であり、前記構成がオペレーティング・システム下で実行されるコードにとってアクセス不能である安全なメモリを有するセキュリティ・システムの制御下にあるステップと、前記悪意あるコードがまったく検出されない少なくとも１つのファイルを正常にスキャンしたときに、前記第１の領域を前記書込み可能状態に構成するために前記セキュリティ・システムの第１のセキュリティ手段を起動し認証するステップであって、前記認証が前記安全なメモリから実行されるステップと、前記スキャン領域内の正常にスキャンされたファイルを前記第１の領域に書き込むステップと、前記正常にスキャンされたファイルの前記書込み後に前記第１の領域を前記読取り専用状態に構成するステップとを含む方法。
【請求項８】
前記正常にスキャンされたファイルの前記書込み後に前記正常にスキャンされたファイルを前記スキャン領域から削除するステップをさらに含む、請求項７に記載の方法。
【請求項９】
前記第１のセキュリティ手段に関する前記認証は、パスワード、デジタル署名、およびバイオメトリックからなるグループから選択された認証である、請求項８に記載の方法。
【請求項１０】
前記第１の領域および前記スキャン領域が論理的に細分される、請求項７に記載の方法。
【請求項１１】
前記第１の領域および前記スキャン領域が物理的に細分される、請求項７に記載の方法。
【請求項１２】
前記物理的に細分された領域はそれぞれ前記記憶装置上の連続する領域である、請求項１１に記載の方法。
【請求項１３】
前記第１のセキュリティ手段の前記認証が仮想計算機モニターの制御下で実行される、請求項７に記載の方法。
【請求項１４】
前記安全なメモリが前記オペレーティング・システムを実行するメイン・プロセッサにとってさらにアクセス不能であるようなハードウェアで前記セキュリティ・システムが実現され、前記ハードウェアが、記憶コントローラ、記憶装置ケーブル、および前記記憶装置からなるグループから選択された位置に物理的に位置する、請求項７に記載の方法。
【請求項１５】
プロセッサおよび前記プロセッサによってオペレーティング・システム下で実行されるコードを保管するためのメイン・メモリと、前記プロセッサによって前記オペレーティング・システム下で実行される前記コードにとってアクセス不能である安全なメモリを有するセキュリティ・システムと、前記プロセッサおよび前記セキュリティ・システムに動作可能に結合され、第１の領域と読取り／書込み領域とに細分される記憶装置であって、前記第１の領域が通常読取り専用状態と書込み可能状態との間に前記セキュリティ・システムの制御下で安全に構成可能である記憶装置とを含み、前記セキュリティ・システムが、前記記憶装置上での悪意あるコードに関する最後のスキャンの発生を識別する少なくとも１つの信頼できる変数を前記安全なメモリ内に維持し、前記信頼できる変数を参照し、関連結果を報告することにより、前記最後のスキャンに関連する状況に関する要求に応答し、前記セキュリティ・システムが、前記第１の領域を前記書込み可能状態に構成するための提供された要求に応答して認証手順を呼び出し、前記認証が前記安全なメモリから実行される装置。
【請求項１６】
前記認証は、パスワード、デジタル署名、およびバイオメトリックからなるグループから選択される、請求項１５に記載の装置。
【請求項１７】
前記第１の領域および前記読取り／書込み領域が論理的に細分される、請求項１５に記載の装置。
【請求項１８】
前記第１の領域および前記読取り／書込み領域が物理的に細分される、請求項１５に記載の装置。
【請求項１９】
前記物理的に細分された領域はそれぞれ前記記憶装置上の連続する領域である、請求項１８に記載の装置。
【請求項２０】
前記セキュリティ・システムは仮想計算機モニターとして実現される、請求項１５に記載の装置。
【請求項２１】
前記安全なメモリは前記プロセッサにとってさらにアクセス不能であるようなハードウェアで前記セキュリティ・システムが実現され、前記ハードウェアは、記憶コントローラ、記憶装置ケーブル、および前記記憶装置からなるグループから選択された位置に物理的に位置する、請求項１５に記載の装置。
【請求項２２】
記憶装置を第１の領域と読取り／書込み領域とに細分するステップであって、前記第１の領域が通常読取り専用アクセス・モードと書込み可能アクセス・モードとの間に安全に構成可能であり、前記アクセス・モードを前記第１の領域に構成しようとする試みに応答して、前記記憶装置がセキュリティ手段を課すステップと、アクセスされているデータが前記読取り／書込み領域から欠落している場合に前記第１の領域への読取りアクセスを指図し、アクセスされているデータが前記読取り／書込み領域内にある場合に前記読取り／書込み領域への読取りアクセスを指図し、前記読取り／書込み領域への書込みアクセスを指図することにより、前記記憶装置へのアクセスをキャッシュするステップと、悪意あるコードについて前記読取り／書込み領域内のファイルをスキャンするステップと、前記悪意あるコードがまったく検出されない少なくとも１つのファイルを正常にスキャンしたときに、前記第１の領域を前記書込み可能アクセス・モードに構成するために前記記憶装置上の第１のセキュリティ手段を起動するステップと、前記読取り／書込み領域内の正常にスキャンされたファイルを前記第１の領域に書き込むステップと、前記第１の領域を前記読取り専用アクセス・モードに構成するために前記記憶装置上の第２のセキュリティ手段を起動するステップと、前記正常にスキャンされたファイルを前記読取り／書込み領域から削除するステップとを含む方法。
【請求項２３】
前記書込み可能アクセス・モードは読取り／書込みモードである、請求項２２に記載の方法。
【請求項２４】
コンピュータ可読プログラム・コードがそこに保管されているコンピュータで使用可能な媒体を含む製品であって、前記製品内の前記コンピュータ可読プログラム・コードが、最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会し、前記最後のスキャン以後に前記領域に書込みが行われたという前記照会による信頼できる判断に応答して、望ましくないコードの識別子について前記領域をスキャンするために有効であり、前記コンピュータ可読プログラム・コードが、前記判断への信頼に資する安全な変数にアクセスすることができない製品。
【請求項２５】
コンピュータ可読プログラム・コードがそこに保管されているコンピュータで使用可能な媒体を含む製品であって、前記製品内の前記コンピュータ可読プログラム・コードが、最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会し、望ましくないコードの前の識別子が前記最後のスキャンに含まれていたかどうかを判断し、前記最後のスキャン以後に前記領域に書込みが行われていないという前記照会による判断に応答し、さらに前記前の識別子が前記最後のスキャンに含まれていたという判断に応答して、前記望ましくないコードの前記前の識別子に関する前記領域のスキャンを迂回するために有効であり、前記コンピュータ可読プログラム・コードが、前記信頼できる判断への信頼に資する安全な変数にアクセスすることができない製品。
【請求項２６】
コンピュータ可読プログラム・コードがそこに保管されているコンピュータで使用可能な媒体を含む製品であって、前記製品内の前記コンピュータ可読プログラム・コードが、最後のスキャン以後に記憶装置の第１の領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会し、前記最後のスキャン以後に前記第１の領域に書込みが行われたという前記照会による信頼できる判断に応答して、望ましくないコードの既知の識別子について前記第１の領域をスキャンし、前記望ましくないコードの前の識別子が前記最後のスキャンに含まれていたかどうかを判断し、前記最後のスキャン以後に前記第１の領域に書込みが行われていないという前記照会による判断に応答し、さらに前記前の識別子が前記最後のスキャンに含まれていたという判断に応答して、前記望ましくないコードの前記前の識別子に関する前記第１の領域のスキャンを迂回し、前記スキャン迂回の結果として迂回領域が形成されるために有効であり、前記コンピュータ可読プログラム・コードが、前記信頼できる判断への信頼に資する安全なメモリに直接アクセスすることができない製品。
【請求項２７】
前記前の識別子および前記既知の識別子は悪意あるコードの識別子であり、前記最後のスキャンは前記悪意あるコードに関する前のスキャンである、請求項２６に記載の製品。
【請求項２８】
前記識別子は、シグニチャ、コード・フラグメント、データ・フラグメント、ハッシュ、および前記オペレーティング・システムのレジストリ内のレジストリ項目からなるグループから選択される、請求項２７に記載の製品。
【請求項２９】
前記コードは、前記悪意あるコードに関する前記前のスキャンが実行された時間に関連し、前記アクセス不能メモリのために信頼される信頼できるスキャン・タイム・スタンプを前記セキュリティ・サブシステムから要求し、新しい識別子日付に出現したことが分かっている前記悪意あるコードに関連する新しい識別子と照らし合わせて前記迂回領域をスキャンし、前記新しい識別子日付に関連する新しい識別子タイム・スタンプが前記信頼できるスキャン・タイム・スタンプより前であるという判断に応答して、前記迂回領域の前記スキャンが行われるためにさらに有効である、請求項２７に記載の製品。
【請求項３０】
コンピュータ可読プログラム・コードがそこに保管されているコンピュータで使用可能な媒体を含む製品であって、前記製品内の前記コンピュータ可読プログラム・コードが、悪意あるコードについて記憶装置のスキャン領域内のファイルをスキャンし、前記記憶装置が第１の領域と前記スキャン領域とに細分され、前記第１の領域が通常読取り専用状態と書込み可能状態との間に安全に構成可能であり、前記構成がオペレーティング・システム下で実行されるコードにとってアクセス不能である安全なメモリを有するセキュリティ・システムの制御下にあり、前記悪意あるコードがまったく検出されない少なくとも１つのファイルを正常にスキャンしたときに、前記第１の領域を前記書込み可能状態に構成するために前記セキュリティ・システムの第１のセキュリティ手段を起動し認証し、前記認証が前記安全なメモリから実行され、前記スキャン領域内の正常にスキャンされたファイルを前記第１の領域に書き込み、前記コードが前記正常にスキャンされたファイルを書き込んだ後に前記第１の領域を前記読取り専用状態に構成するために有効である製品。
【請求項３１】
前記コードは、前記正常にスキャンされたファイルを書き込んだ後に前記正常にスキャンされたファイルを前記スキャン領域から削除するためにさらに有効である、請求項３０に記載の製品。
【請求項３２】
前記第１のセキュリティ手段に関する前記認証は、パスワード、デジタル署名、およびバイオメトリックからなるグループから選択された認証である、請求項３１に記載の製品。
【請求項３３】
前記第１の領域および前記スキャン領域が論理的に細分される、請求項３０に記載の製品。
【請求項３４】
前記第１の領域および前記スキャン領域が物理的に細分される、請求項３０に記載の製品。
【請求項３５】
前記物理的に細分された領域はそれぞれ前記記憶装置上の連続する領域である、請求項３４に記載の製品。
【請求項３６】
前記第１のセキュリティ手段の前記認証は仮想計算機モニターの制御下で実行される、請求項３０に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、望ましくないコードまたは悪意あるコードに関する加速スキャンを可能にする方法、プログラム製品（program  product）、コンピュータ・システム、およびその他の情報処理システムに関し、詳細には、最後のウィルス・スキャン以後に、どのファイルまたは記憶位置が変化したかを確実に追跡し、変化したファイルまたは変化していないが新しいウィルスに関するスキャンが行われていないファイルのみをスキャンすることにより、加速ウィルス・スキャンを可能にするコンピュータ・システムに関する。
【背景技術】
【０００２】
初期のコンピュータは「独立型（stand alone）」であり、他のコンピュータと通信することができなかったが、今日ではほとんどのコンピュータが、データの共用、電子メール、プログラムのダウンロード、動作の調整などを含む様々な目的のために他のコンピュータと通信することができる。この通信は、ローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）または広域ネットワーク（ＷＡＮ：Wide  Area  Network）にログオンすることによって達成される。この視野の拡大は明白な恩恵を有するが、特にウィルスによる弊害に対する暴露の増加という犠牲を払って手に入るものである。
【０００３】
ウィルスとは、その生物学上の相当物に類似して、通常、本来は健全な１つのコードまたはデータに感染するプログラミング・コードである。ウィルスは、感染したコンピュータを非効率的に動作させるかまたは完全に故障させるなどの望ましくない事象を引き起こす。多くのウィルスのもう１つの狡猾な特徴は、ネットワーク上の他のコンピュータに伝搬する能力である。
【０００４】
ファイル・インフェクタ（infector）、システム（またはブートレコード）・インフェクタ、ワーム、およびマクロ・ウィルスを含む、少なくとも４つの主要クラスのウィルスを検出することができる。ファイル・インフェクタはそれ自体をプログラム・ファイルに付加する。プログラムがロードされると、ウィルスもロードされ、ウィルスがその弊害を実行できるようにする。システム・インフェクタは、オペレーティング・システムのレジストリまたはハード・ディスク内のマスタ・ブート・レコードなどの特定のハードウェアに感染する。マスタ・ブート・レコード感染は、多くの場合、その後のリブート時にハード・ディスクを動作不能にし、コンピュータのブートを不可能にすることになる。ワーム・ウィルスは、メモリまたはネットワーク帯域幅を消費し、その結果、コンピュータを非応答性にする。マクロ・ウィルスは、最も一般的なウィルスの中に含まれ、ワード・プロセッサ・プログラムに感染する。
【０００５】
もう１つの一般的なタイプのウィルスは、ブラウザおよび電子メールにねらいを定めている。このようなウィルスの１つはサービス妨害（ＤｏＳ：Denial  of  Service）という攻撃を引き起こす。ＤｏＳウィルスは、Ｗｅｂサイトが訪問者を受け入れられないようにする。通常、このような攻撃は、多数の感染したコンピュータに強制的に（無意識に）Ｗｅｂサイトをヒットさせた結果として、Ｗｅｂサイトのバッファをオーバフローさせる。
【０００６】
ウィルスを阻止するために、アンチウィルス・プログラムが作成され、新しいウィルスに対して効果的になるように絶えず更新される。このようなアンチウィルス・プログラムは、物理媒体（ＣＤ−ＲＯＭなど）上で配布されるか、またはインターネットなどのネットワークからダウンロードされる。アンチウィルス・プログラムは、コンピュータ・システムの各記憶装置上のデータと、すべての既知のウィルス・タイプに関するすべての既知のウィルス紋（virus  signature）を含むウィルス定義ファイルとを比較する。このプロセスは「スキャン（scanning）」と呼ばれる。典型的には、更新の迅速配備を行うために、このような更新もダウンロードされる。
【０００７】
しかし、ウィルス・スキャンを完了するために必要な時間は、ますます受け入れがたいものになり、問題となっている。受け入れがたいスキャン時間の一因となる２つの要因は、スキャンされるデータの量と、識別子を含むウィルス定義ファイルのサイズである。これらの要因はいずれも、際限なく増大しているように思われる。デスクトップ・システムが１テラバイトに近いディスク容量を有することは、まもなく一般的なことになるであろう。ウィルスを作成するハッカーは、それを行う動機付けが増進しているように思われ、速度を増してそれを行っている。一方では、スキャン・プロセスに必要な時間はディスク・アクセス速度との関連の方が強いので、ハード・ディスクのスキャンに要する時間はプロセッサ処理速度が増加しても大幅に増加することはない。スキャン時間の増加によって引き起こされる問題は、時間とともにより深刻かつより目立つものになるであろう。これらの要因を考慮すると、単にウィルス・スキャンが最終的に完了までに２４時間を超える長い時間を要することになるという理由だけで、毎日のウィルス・スキャンが近い将来、不可能になることは予見できることである。さらに、ワークステーションは、スキャン・プロセスが行われている間、使用不能になる可能性がある。したがって、生産性は影響を受け、最終的なコスト分析により、その問題を矯正するためにシステム・コストの追加が正当化されることが明らかになるであろう。
【０００８】
もう１つの背景分野は、共通のハードウェア・プラットフォーム上に同時に存在する種々のオペレーティング・システムのために、または使用可能なハードウェア・リソースを完全に利用するために作成されたアプリケーションを実行する必要性から発生した仮想計算機および仮想計算機モニターを伴うものである。仮想計算機モニターは、１９６０年代後半以後に研究の主題となり、「仮想計算機モニター」（ＶＭＭ：Virtual  Machine  Monitor）として知られるようになった。当業者であれば、たとえば、１９７４年発行のＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、第７巻、第６号に掲載されたＲ．Ｐ．Ｇｏｌｄｂｅｒｇによる「Ｓｕｒｖｅｙ  ｏｆ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｒｅｓｅａｒｃｈ」を参照されたい。１９７０年代には、もう１つの例として、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ社がそのＶＭ／３７０システムに使用するために仮想計算機モニターを採用した。
【０００９】
仮想計算機モニターは、同文献で「ハイパーバイザ（hypervisor）」と呼ばれることもあり、ハードウェアの上で直接実行される１つの薄い（thin）ソフトウェアであり、その計算機のすべてのハードウェア・リソースを仮想化する。仮想計算機モニターのインターフェースはその計算機のハードウェア・インターフェースと同じであるので、オペレーティング・システムはＶＭＭの存在を判別することができない。その結果として、ハードウェア・インターフェースが基礎となるハードウェアとの１対１の互換性を有するときに、同じオペレーティング・システムが仮想計算機モニターの上またはロー・ハードウェア（raw hardware）の上のいずれかで実行することができる。その場合、オペレーティング・システムの複数インスタンスを実行するか、または複数リソースからなる小さいサブセットのみが必要である場合は単にオペレーティング・システム・カーネルのインスタンスを実行することが可能である。各インスタンスは仮想計算機と呼ばれる。複数の仮想計算機の全域でオペレーティング・システムを複製することができるか、あるいは、各仮想計算機ごとに明確に異なるオペレーティング・システムを使用することができる。いずれにしても、仮想計算機は完全に自律型であり、ハードウェア割込みなどのハードウェア・リソースへのアクセスのために仮想計算機モニターに依存する。
【００１０】
【非特許文献１】１９７４年発行のＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、第７巻、第６号に掲載されたＲ．Ｐ．Ｇｏｌｄｂｅｒｇによる「Ｓｕｒｖｅｙ  ｏｆ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｒｅｓｅａｒｃｈ」
【非特許文献２】１９８６年発行のＲａｙ  Ｄｕｎｃａｎによる「Ａｄｖａｎｃｅｄ  ＭＳ−ＤＯＳ：  Ｔｈｅ  Ｍｉｃｒｏｓｏｆｔ  ｇｕｉｄｅ  ｆｏｒ  Ａｓｓｅｍｂｌｙ  Ｌａｎｇｕａｇｅ  ａｎｄ  Ｃ  ｐｒｏｇｒａｍｍｅｒｓ」（ＩＳＢＭ０−９１４８４５−７７−２）
【非特許文献３】ｗｗｗ．ｔｒｕｓｔｅｄｃｏｍｐｕｔｉｎｇｇｒｏｕｐ．ｏｒｇの「ＴＣＧ  ＴＰＭ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２」
【発明の開示】
【発明が解決しようとする課題】
【００１１】
セキュリティを損なわずに加速スキャン時間を可能にする装置、プログラム製品、および方法が必要である。さらに、このような短縮スキャン時間を達成できるプラットフォームを提供する装置が必要である。さらに、この装置によって提供される安全なプラットフォームを使用して、より効率よく安全にスキャンを実行するプログラム製品および方法が必要である。
【００１２】
以下に示すように、開示されている諸実施形態は、上記の必要性を満足し、追加の目的を達成しようとするものである。本発明は、最後のウィルス・スキャン以後に記憶装置のどのファイルまたは記憶域が変更されたかを追跡することができる方法、プログラム製品、およびシステムを提供する。さらに、前のスキャンに関する変数を保管するための安全な領域が提供される。その後、その情報を使用して、スキャンしたファイルの数を削減するかまたはスキャンに使用した望ましくないコードの識別子の数を削減するかあるいはその両方を行うことにより、望ましくないコードまたはデータに関するスキャンを加速することができる。
【課題を解決するための手段】
【００１３】
前述の課題は、本発明の一実施形態により、プロセッサおよびプロセッサによって第１のオペレーティング・システム下で実行されるコードを保管するためのメイン・メモリと、第１のオペレーティング・システム下で実行されるコードにとってアクセス不能である安全なメモリを有するセキュリティ・システムと、第１の領域と読取り／書込み領域とに細分される記憶装置とを含むシステムによって対処される。第１の領域は、通常読取り専用状態（normal  read-only  state）と書込み可能状態（writeable  state）との間にセキュリティ・システムの制御下で安全に構成可能である。セキュリティ・システムは、少なくとも１つの信頼できる変数（trusted  variable）を安全なメモリ内に維持する。信頼できる変数は、記憶装置上での悪意あるコードに関する最後のスキャンの発生を識別し、信頼できる変数を参照し、関連結果を報告することにより、最後のスキャンに関連する状況に関する要求に応答する。加えて、セキュリティ・システムは、第１の領域を書込み可能状態に構成するための提供された要求に応答して、安全なメモリから認証手順を呼び出す。
【００１４】
前述の課題に対処する本発明の一実施形態により、最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会するステップを含む方法が提供される。セキュリティ・サブシステムは、オペレーティング・システムから実行されているコードにとってアクセス不能であるメモリを含む。この判断は、セキュリティ・サブシステムによるアクセス不能メモリへの参照により信頼に資するものである。この方法は、最後のスキャン以後にその領域に書込みが行われたという照会による信頼できる判断に応答して、望ましくないコードの識別子についてその領域をスキャンするステップをさらに含む。
【００１５】
本発明の一実施形態により、最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会するステップを含む方法が提供される。セキュリティ・サブシステムは、オペレーティング・システムから実行されているコードにとってアクセス不能であるメモリを含む。この判断は、セキュリティ・サブシステムによるアクセス不能メモリへの参照により信頼に資するものである。この方法は、望ましくないコードの前の識別子が最後のスキャンに含まれていたかどうかを判断するステップと、（１）最後のスキャン以後にその領域に書込みが行われていないという照会による判断に応答し、さらに（２）前の識別子が最後のスキャンに含まれていたという判断に応答して、望ましくないコードの前の識別子に関するその領域のスキャンを迂回するステップとをさらに含む。
【００１６】
本発明の一実施形態により、最後のスキャン以後に記憶装置の一領域に書込みが行われたかどうかを確実に判断するためにセキュリティ・サブシステムに照会するステップを含む方法が提供される。セキュリティ・サブシステムは、オペレーティング・システムから実行されているコードにとってアクセス不能であるメモリを含む。この判断は、セキュリティ・サブシステムによるアクセス不能メモリへの参照により信頼に資するものである。この方法は、最後のスキャン以後に第１の領域に書込みが行われたという前記照会による信頼できる判断に応答して、望ましくないコードの既知の識別子について第１の領域をスキャンするステップと、望ましくないコードの前の識別子が最後のスキャンに含まれていたかどうかを判断するステップと、（１）最後のスキャン以後に第１の領域に書込みが行われていないという前記照会による判断に応答し、さらに（２）前の識別子が最後のスキャンに含まれていたという判断に応答して、望ましくないコードの前の識別子に関する第１の領域のスキャンを迂回するステップとをさらに含む。
【００１７】
本発明の一実施形態では、悪意あるコードについて記憶装置の読取り／書込み領域内のファイルをスキャンするステップを含む方法が提供される。記憶装置は、第１の領域と読取り／書込み領域とに細分される。第１の領域は、通常読取り専用状態と書込み可能状態との間に安全に構成可能である。領域の構成は、オペレーティング・システム下で実行されるコードにとってアクセス不能である安全なメモリを有するセキュリティ・システムの制御下にある。この方法は、悪意あるコードがまったく検出されない少なくとも１つのファイルを正常にスキャンしたときに、第１の領域を書込み可能状態に構成するためにセキュリティ・システムの第１のセキュリティ手段（security  measure）を起動し認証するステップであって、その認証が安全なメモリから実行されるステップと、読取り／書込み領域内の正常にスキャンされたファイルを第１の領域に書き込むステップと、正常にスキャンされたファイルの書込み後に第１の領域を読取り専用状態に構成するステップとをさらに含む。
【００１８】
本発明の様々な実施形態は、本発明の諸実施形態のいずれかによるプロセスを実行するようコンピュータ（またはその他の電子装置）をプログラミングするために使用できる命令がそこに保管されている機械可読媒体を含むことができるコンピュータ・プログラム製品として提供することができる。
【００１９】
次に、添付図面に関連して、例証としてのみ、本発明を説明する。
【発明を実施するための最良の形態】
【００２０】
本発明の好ましい一実施形態が示されている添付図面に関連して、以下により詳細に本発明を説明するが、以下に示す説明の冒頭にあたり、当業者であれば、依然として本発明の好都合な結果を達成しながら本明細書に記載する本発明を変更できることを理解されたい。したがって、以下に示す説明は、本発明に対する制限としてではなく、当業者に向けられた広く教示的な開示として理解されたい。
【００２１】
次に、複数の図面全体を通して同様の番号が同様の要素またはステップを示す添付図面をより詳細に参照して、本発明の好ましい一実施形態を説明する。本明細書全体を通して「一実施形態」、「１つの実施形態」、または同様の言い回しに対する言及は、その実施形態に関して記載した特定の特徴、構造、または特性が本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体を通して「一実施形態では」、「１つの実施形態では」、および同様の言い回しの句が出現する場合、いずれも同じ実施形態に言及している可能性があるが、必ずそうであるわけではない。
【００２２】
図１は、ウィルスなどの悪意あるコードを含む望ましくないコードに関する加速スキャンを可能にするリソースを取り入れている本発明の好ましい一実施形態によるコンピュータ・システムのブロック図である。図１に描写されている例示的な実施形態は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社（ＩＢＭ）から販売されているＴｈｉｎｋＣｅｎｔｒｅまたはＴｈｉｎｋＰａｄシリーズのパーソナル・コンピュータのうちの１つなどのデスクトップ・コンピュータ・システム、またはＩｎｔｅｌｌｉｓｔａｔｉｏｎなどのワークステーション・コンピュータにすることができるが、以下の説明から明らかになるように、本発明は、任意のデータ処理システムにおけるウィルス・スキャンなどの効力およびセキュリティの増加に適用可能である（ＴｈｉｎｋＣｅｎｔｒｅ、ＴｈｉｎｋＰａｄ、およびＩｎｔｅｌｌｉｓｔａｔｉｏｎはインターナショナル・ビジネス・マシーンズ社の商標である）。
【００２３】
図１に図示されている通り、コンピュータ・システム１００は少なくとも１つのシステム・プロセッサ４２を含み、このシステム・プロセッサ４２はプロセッサ・バス４４によって読取り専用メモリ（ＲＯＭ：Read-Only  Memory）４０およびシステム・メモリ４６に結合されている。システム・プロセッサ４２は、ＩＢＭ社によって生産されたＰｏｗｅｒＰＣ（商標）系列のプロセッサのうちの１つを含むことができ、電源投入時にＲＯＭ４０内に保管されているブート・コード４１を実行し、その後、システム・メモリ４６に保管されているオペレーティング・システムおよびアプリケーション・ソフトウェアの制御下でデータを処理する汎用プロセッサである。システム・プロセッサ４２は、プロセッサ・バス４４およびホスト・ブリッジ４８を介して周辺装置相互接続（ＰＣＩ：Peripheral  Component  Interconnect）ローカル・バス５０に結合されている。
【００２４】
ＰＣＩローカル・バス５０は、アダプタおよびブリッジを含む複数の装置の接続をサポートする。このような装置の中には、コンピュータ・システム１００とＬＡＮ１０とのインターフェースとなるネットワーク・アダプタ６６と、コンピュータ・システム１００とディスプレイ６９とのインターフェースとなるグラフィックス・アダプタ６８が含まれる。ＰＣＩローカル・バス５０上の通信はローカルＰＣＩコントローラ５２によって支配され、次にこのローカルＰＣＩコントローラ５２はメモリ・バス５４を介して不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ：non-volatile  random  access  memory）５６に結合されている。ローカルＰＣＩコントローラ５２は、第２のホスト・ブリッジ６０を介して追加のバスおよび装置に結合することができる。ＥＩＤＥディスク・コントローラ７２は、プロセッサ４２を含む任意のその他のシステム・コンポーネントによってディスク・ドライブ２００との間で行われるアクセスまたは参照を支配する。
【００２５】
コンピュータ・システム１００は産業標準構成（ＩＳＡ：Industry  Standard  Architecture）バス６２をさらに含み、このＩＳＡバス６２はＩＳＡブリッジ６４を介してＰＣＩローカル・バス５０に結合されている。ＩＳＡバス６２には入出力（Ｉ／Ｏ：input/output）コントローラ７０が結合され、この入出力コントローラ７０は、コンピュータ・システム１００と、キーボードおよびマウスなどの付加周辺装置との間の通信を制御する。加えて、入出力コントローラ７０は、シリアル・ポートおよびパラレル・ポートを介してコンピュータ・システム１００による外部通信をサポートする。
【００２６】
当業者には、オペレーティング・システムおよびファイル・システム全般に関する実用的な知識がある。ＦＡＴファイル・システムについては、ＦＡＴファイル・システムの構造を記載している１９８６年発行のＲａｙ  Ｄｕｎｃａｎによる「Ａｄｖａｎｃｅｄ  ＭＳ−ＤＯＳ：  Ｔｈｅ  Ｍｉｃｒｏｓｏｆｔ  ｇｕｉｄｅ  ｆｏｒ  Ａｓｓｅｍｂｌｙ  Ｌａｎｇｕａｇｅ  ａｎｄ  Ｃ  ｐｒｏｇｒａｍｍｅｒｓ」（ＩＳＢＭ０−９１４８４５−７７−２）の第８章が参照により本明細書に組み込まれる。好ましい実施形態ではＦＡＴファイル・システムが使用されているが、本発明の精神および範囲を逸脱せずに、その他のファイル・システムを使用することができる。
【００２７】
本明細書で使用されるクラスタは、ディスク・ドライブ２００上のデータにアクセスするためにオペレーティング・システムのファイル・システム・ドライバによって使用される論理装置である。各論理クラスタは、通常連続する複数の物理セクタを含む。各ＦＡＴパーティションは、１つのファイル・ディレクトリと、ファイル・アロケーション・テーブルの２つのコピーと、１つのデータ領域とを含むものと推定される。ファイルのディレクトリは、各ファイルの名前と、開始クラスタ、関連日付などを含むその属性とを含む。ファイル・アロケーション・テーブルは、各ファイルを含むクラスタのリンク・リストを含む。
【００２８】
システム・メモリ４６から実行されるオペレーティング・システムは、事前割振りクラスタ内に直接、コンピュータ・ファイルを保管するか、またはファイルが大きすぎて単一クラスタ内に収まらないときには、ファイルを複数フラグメントに分割し、これらのフラグメントをハード・ディスク２００上の個別クラスタ内に保管することにより、コンピュータ・ファイルを保管する。ＦＡＴファイル・システムにより、オペレーティング・システムは、ファイルの各フラグメントの位置およびシーケンスを追跡することができ、オペレーティング・システムは、どのクラスタが割り当てられておらず、新しいファイルに使用可能であるかを識別することもできる。コンピュータ１００がファイルを参照する場合、ＦＡＴファイル・システムは、ファイル・システム・ドライバによって組み立てられた１つのユニット内にファイルの各フラグメントを再組み立てするための基準として機能する。
【００２９】
ほとんどのユーザの場合、コンピュータ・システム内に保管されたデータの大部分が時間の経過につれて変化しないことが発見されている。ウィルス・スキャンなど、望ましくないコードまたは悪意あるコードに関するスキャンは、典型的には、週単位で実行されている。このスキャンは、頻繁に更新されるウィルス定義ファイルに関して実行される。しかし、時間の経過につれて、ウィルス定義ファイル自体が主として、ウィルス紋、コード・フラグメント、データ・フラグメント、ハッシュなどの変化していないウィルス識別子から構成される。したがって、すでに発見されているように、スキャン活動の大部分は、変化していないデータと照らし合わせて変化していない識別子がスキャンされるものである。本発明の様々な態様および実施形態は、通常はデータの大部分がそうであるが、どのデータが最後の正常スキャン以後に変化していないデータであるかをスキャン・アプリケーションが安全に判断することができるプラットフォームを提供し、識別子の大部分である変化していない識別子のスキャンを迂回することにより、ウィルスなどの望ましくないコードについてコンピュータ・システムをスキャンするために必要な時間の量を削減することを目指している。
【００３０】
図２は、保護領域２０２と、読取り／書込み領域２０４と、本発明の好ましい一実施形態によりデータ参照の安全な追跡および安全なデータ保護を可能にするように適合された統合ドライブ・エレクトロニクス（integrated  drive  electronics）２０１とを有するディスク・ドライブ２００の簡易概略側面図である。他の実施形態では、ディスク・ドライブ２００が従来のディスク・ドライブであり、安全な追跡および安全なデータ保護の機能がシステム内の他の場所に設けられることが示されるであろう。しかし、図２に図示されている好ましい実施形態では、コンピュータ・システム内に蓄積されたデータの大部分が最後のウィルス・スキャンに関して変化していないので、個別ディスクまたはプラッタ（platter）２０２の大部分は、悪意あるコードについて正常にスキャンされた変化していないデータ用に予約されている。ディスク・ドライブ・プラッタ２０４の個別ディスクは、最後の正常スキャン以後に書き込まれたデータ用に予約されている。ドライブ２００の内部では、統合ドライブ・エレクトロニクス２０１は、プラッタ２０４上の新たに書き込まれたファイルのキャッシュを維持し、通常動作中、保護プラッタ２０２を読取り専用アクセス・モードに保持する。ドライブ２００の外部では、統合ドライブ・エレクトロニクス２０１は、ディスク・ドライブ全体が書込み可能であると思われるファイル・システム・ドライバへの従来のインターフェースを提示する。この構成は、（１）オペレーティング・システムから実行される悪意あるコードが保護データ領域２０２を変更することができず、（２）ファイルの日付および属性データを信頼することができるプラットフォームを提供する。追加の実現詳細については、説明が続くにつれて提供されるはずである。
【００３１】
ディスク・ドライブ２００に関して本明細書に記載されていない実現詳細は、従来のものであると見なされる。大体は、ハード・ディスクの構造に関する詳細は、このような詳細が本発明を完全に理解するために不要である程度に省略されている。
【００３２】
図３は、本発明の好ましい実施形態で使用されるディスク・ドライブ２００の統合ドライブ・エレクトロニクス２０１の拡大ブロック図であり、統合ドライブ・エレクトロニクスの周辺のその他のハードウェアを含んでいる。ハード・ディスク２００の統合ドライブ・エレクトロニクス２０１は、コネクタ３０７および３０６を介してケーブル３０８によりシステム１００に結合する。コネクタ３０６はハード・ディスク２００と一体化しており、コネクタ３０７はケーブル３０８の一部を形成する。インターフェース３０４は、低レベルの接続インターフェースを処理し、ＡＴＡ規格に適合する標準的なチップとして実現され、一般にディスク・コントローラ７２などのＥＩＤＥコントローラとのインターフェースを取るためにハード・ディスク上で検出される。好ましい実施形態ではＩＤＥドライブが使用されているが、本発明の範囲を逸脱せずに、ＳＣＳＩドライブおよびその他の記憶装置を使用することができる。コントローラ３０１は、この実施形態のセキュリティおよび保護機能を処理し、本明細書に記載し、流れ図に関連して記載する通りに機能する。コントローラ３０１は、Ｈ８などのマイクロコントローラとして実現することができ、安全なメモリ３０２に結合されている。安全なメモリ３０２はコントローラ３０１のみによってアドレス可能であり、したがって、システム・メモリ４６からシステム・プロセッサ４２によって実行されるオペレーティング・システム下で実行されるウィルスは安全なメモリ３０２にアクセスすることができない。入出力コマンドにより、コントローラ３０１は安全メモリ３０２の不揮発性部分にウィルス・スキャン固有の変数を保管する。さらに、コントローラ３０１は、安全なメモリ３０２から認証コードを実行して、好ましい実施形態のセキュリティおよび保護機能の使用を要求するアンチウィルス・スキャン・ソフトウェア・アプリケーションに認証サービスを提供する。不揮発性部分に加えて、安全なメモリ３０２は、不揮発性部分より高速でそこから認証コードを実行するため、ならびに一時変数などを保管するためのランダム・アクセス・メモリ部分を含む。たとえば、流れ図の説明で参照するように、読取り専用アクセス・モードから読取り／書込みアクセス・モードに保護領域２０２を変更するために、コントローラ３０１によって認証が要求される。
【００３３】
一実施形態では、流れ図に示されているような所定の安全な動作およびサービスを認証するために、コントローラ３０１および安全なメモリ３０２によってデジタル署名方式が実現される。安全な動作またはサービスは、たとえば、ウィルス・スキャナなどのアプリケーションによって要求される。このアプリケーションは秘密鍵と公開鍵を有するものと推定され、コントローラ３０１はアプリケーションの公開鍵情報に内々に関与しているものと推定される。この方式により、アプリケーションは、コントローラ３０１から認証を要求する安全なサービスを要求する。これに応答して、コントローラ３０１は、ワンタイム（使い捨て）乱数Ｎ１を生成し、アプリケーションにＮ１を伝達する。これに応答して、アプリケーションは、ハッシュ・メッセージ認証コード（ＨＭＡＣ：Hashed  Message  Authentication  Code）機能を使用してＮ１とアプリケーションの秘密鍵とを組み合わせ、対応するワンタイム・パスワードＰ１を生成することにより、デジタル署名を行う。ＳＨＡ−１は、安全なハッシュ方法として使用され、辞書攻撃に対する免疫があると現在、考えられている。次にアプリケーションはコントローラ３０１にＰ１を伝達する。これに応答して、コントローラ３０１は、所定かつ合意に達したＳＨＡ−１  ＨＭＡＣおよびアプリケーションの公開鍵の知識があれば、Ｐ１を暗号化解除し、パスワードＰ１の認証性を検証する。検証された場合、アプリケーションは、要求されている安全なリソースへのアクセスが可能になる。
【００３４】
その他の認証技法を使用することもできる。一実施形態では、ハードウェア支援デジタル署名技法が使用される。公開鍵は、ディスク・ドライブ２００上（または他の諸実施形態に記載されているように他の位置）のコントローラ３０１に知られることになり、秘密鍵はＴＣＧ  ＴＰＭまたはスマート・カード内などの何らかの場所を安全に保持するであろう。ＴＰＭの詳細に関心のある読者のために、インターネット上のｗｗｗ．ｔｒｕｓｔｅｄｃｏｍｐｕｔｉｎｇｇｒｏｕｐ．ｏｒｇで「ＴＣＧ  ＴＰＭ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２」を見つけることができる。その場合、ＴＰＭまたはスマート・カードに対する認証は、網膜眼球スキャン（retinal  eye  scan）または指紋認識サブシステムなどの安全な経路またはバイオメトリックを介して行われ、その結果、必要な許可を生成することができるであろう。
【００３５】
同様に、コントローラ３０１の機能が仮想計算機モニターに組み込まれている図１３に図示されている仮想計算機モニター実施形態の場合、仮想計算機モニターにキーボードおよび画面（図１３には図示せず）を制御させ、パスワード認証を可能にするアプリケーションを直接実行させるか、またはこのようなアプリケーションが実行される安全な仮想計算機を提供させることにより、認証を行うことができるであろう。この場合も、このパスワードは、ハードウェア・コントローラに直接渡されない可能性があり、むしろ、辞書攻撃に対する追加の保護を提供するために乱数とともに使用される可能性がある。
【００３６】
一実施形態では、認証媒体から認証検査を可能にするハードウェアへの直接経路は、ウィルスに対する免疫がある、直線的なパスワード（straight  password）を入力するための安全な「信頼できる経路（trusted  path）」を提供できるであろう。この実施形態では、ウィルスはボタンを物理的に「押す（push）」手段を備えていないので、パスワードの代わりに、ボタン程度に単純なものを使用することができるであろう。
【００３７】
単純性が望ましい一実施形態では、単純なパスワードを使用することができ、そのようなパスワードが役に立つであろう。しかし、直線的なパスワード程度に単純な方式は、このような認証を聴取する特別に設計されたウィルスまたはトロイによって破られる可能性がある。それにもかかわらず、直線的なパスワードは、最低レベルのセキュリティを提供し、リスクを最小限にするためにウィルス・スキャンの直後に実行することができる。
【００３８】
このプラットフォームは、認証コードの実行という形での安全なメモリへの参照によるか、安全なメモリ３０２に保管されているタイム・スタンプ、ファイル、またはクラスタ属性などの保管変数への参照により、悪意あるコードから手の届かない安全なメモリ３０２への参照により信頼に資するものである。
【００３９】
安全なメモリが使用不能である代替一実施形態では、タイム・スタンプなどの信頼できる変数が暗号化された形で安全ではないメモリ（insecure  memory）（図示せず）に保管される。この手法は、本当にアクセス不能であるメモリの使用ほど安全ではない可能性があるが、最低レベルの機能性を提供する。信頼できる変数をあてにするスキャン・プログラムは、この実施形態の安全ではないメモリにアクセスし、信頼できる変数を入手し、標準的な暗号化解除技法を使用してその認証性を判断することができる。この暗号方式がセキュリティを提供する限り、変数の内容は悪意あるコードにとって使用不能である。悪意あるコードがこの実施形態の安全ではないメモリに保管されている信頼できる変数を蹂躙する場合、標準的な暗号化解除技法により、このような蹂躙の検出が可能になる。信頼できる変数を暗号化解除したときにスキャン・プログラムによって不正行為が検出された場合、本明細書に記載する加速技法は迂回され、ディスク・ドライブに保管されたすべてのファイルについて悪意あるコードに関するスキャンが実行される。
【００４０】
次に、図３に図示されている実施形態の説明に戻ると、コントローラ３０１は、コントローラ３０１がないときにＡＴＡインターフェース３０４が行うと思われるものと同じ方法で低レベル回路３０５へのインターフェースを取る。低レベル・ドライブ回路３０５は、スピンドル・モータの始動および回転速度、アクチュエータの運動、エラー訂正、ヘッド電流およびビット・コード化プロトコルを含む保護プラッタ２０２および読取り／書込みプラッタ２０４に対する読取りおよび書込み電流を含む、低レベル・ディスク・ドライブ機能を制御する。
【００４１】
一実施形態では、安全なメモリ３０２の不揮発性部分またはその下位部分は、ハード・ディスクそのものの上の保護セクタまたはトラックとして実現することができる。
【００４２】
図４は、保護領域および読取り／書込み領域に関する代替レイアウトを有する本発明の一実施形態による個別ディスク・ドライブ・プラッタの平面図である。図４に図示されている実施形態では、保護領域および読取り／書込み領域を個別プラッタとして分割するのではなく、個別ディスクのいずれか１つまたはすべてのディスクの表面を保護領域４０２および読取り／書込み領域４０４に分割することができる。最後の正常スキャン以後に書き込まれたファイルは外部読取り／書込みトラック４０４にキャッシュされる。最後のスキャンで正常にスキャンされたファイルは内部保護トラック４０２内に維持される。
【００４３】
図５は、保護領域および読取り／書込み領域に関する代替レイアウトを有する本発明の一実施形態による個別ディスク・ドライブ・プラッタの平面図である。図５に図示されている実施形態では、保護領域および読取り／書込み領域を個別プラッタまたは個別トラックとして分割するのではなく、安全なメモリ３０２内にテーブルを維持することにより、コントローラ３０１によって保護領域５０２および読取り／書込み領域５０４を論理的に追跡する（説明する）ことができる。したがって、保護領域と読取り／書込み領域との分割は、他の実施形態のように物理的である必要も連続している必要もない。コントローラ３０１によって追跡される領域は、クラスタ（論理）またはセクタ（物理）あるいはクラスタ・グループまたはセクタ・グループあるいは個別トラックにすることもできる。しかし、ディスク上のディレクトリがクラスタとして維持され、領域を追跡するために使用されるテーブルの不揮発性部分は、通常は安全なメモリ３０２内に実現されるものであるが、ハード・ディスク自体の上のディレクトリに含めることができるので、クラスタの追跡は最も都合の良いものである。他の実施形態と同様に、どのファイルが変化しているかに関する判断は、メイン・プロセッサ４２の制御下でオペレーティング・システムから実行されるウィルスによってアクセス不能である安全なメモリ３０２内に維持されるテーブルへの参照により信頼に資するものである。
【００４４】
コントローラ３０１および安全なメモリ３０２は、事実上、アンチウィルス・スキャンの効率を改善するためにアンチウィルス・スキャン・アプリケーションがアンチウィルス・パラメータを確実に決定できるセキュリティ・サブシステム・プラットフォームを形成する。アンチウィルス・プログラムはクラスタではなくファイルのレベルで機能し、オペレーティング・システムのファイル・システム・ドライバは本質的にファイルではなくクラスタを書き込むので、コントローラ３０１は、クラスタと、最後の正常スキャン以後に書き込まれたクラスタ用のファイル名とを相関させる。これは、ステージング読取り／書込み領域２０４内にキャッシュされるファイルについて対応するファイル名を入手するためにファイル・システム・ドライバによって書き込まれる各クラスタごとにハード・ディスク・パーティション上のディレクトリおよびファイル・アロケーション・テーブルを参照することによって実行される。以下に詳述するように、読取り／書込み領域２０４内に保管されたこれらのファイルは、悪意あるコードについて正常にスキャンされると、最終的に保護領域の一部分に移動または変換されることになる。
【００４５】
一実施形態では、キャッシングに代わるものとして、ディスク全体が読取り／書込みモードで存続することができる。この実施形態では、コントローラ３０１および安全なメモリ３０２は、安全なメモリ３０２に書き込まれたクラスタのリストを維持することにより、最後のウィルス・スキャン以後にハード・ディスクのどの領域が変化したかを安全に追跡するように動作する。最後のウィルス・スキャン以後に変化したファイルのリストは、上述の通り、ディレクトリからアンチウィルス・ソフトウェアのために導き出すことができる。この実施形態は、保護領域を有するキャッシュ付き実施形態に関してレベルを低下させたセキュリティを提供する。
【００４６】
図６は、保護領域に対する変更が行われない通常モードで動作している間に読取り／書込み領域内のデータをキャッシュするロジックの流れ図である。図６に図示されているロジックは図３のコントローラ３０１で実現される。キャッシング・プロセスは、６０２でハード・ディスクへの参照がオペレーティング・システムのファイル・システム・ドライバから受信されたときに始まる。６０４でその参照が書込み参照であるか読取り参照であるかを判断するために第１の照会が行われる。６０４でその参照が書込み参照であるという判断が行われた場合、６０６でデータが読取り／書込み領域２０４に書き込まれる。６０４でその参照が読取り参照である場合、６０８でデータが読取り／書込み領域２０４内に存在するかどうかに関する第２の判断が行われる。６０８でデータが読取り／書込み領域内に存在すると判断された場合、６１０でデータが読取り／書込み領域２０４から読み取られる。さもなければ、６０８でデータが読取り／書込み領域２０４内に存在しないと判断された場合、データは保護領域２０２から読み取られる。
【００４７】
図７は、本発明の一実施形態により、最後のウィルス・スキャン以後に書き込まれたすべてのファイルをスキャンするためのロジックを描写する流れ図である。図７の点線の右側に示されているプロセスは、読取り／書込み領域２０４内のファイルをスキャンするプロセス中にアンチウィルス・ソフトウェアによって実行される。点線の左側に示されているプロセスは、アンチウィルス・ソフトウェア・アプリケーションによって行われたアクションに応答してハード・ディスク２００の統合ドライブ・エレクトロニクス２０１のコントローラ３０１によって実行される。同じ規則が図８および図９に使用され、すなわち、右側にアプリケーションのアクションが示され、左側にコントローラ３０１の応答が示されている。７０１でアンチウィルス・ソフトウェアがまず、最後のウィルス・スキャン以後に書き込まれたファイルのディレクトリを要求する。これに応答して、７０２でコントローラ３０１が読取り／書込み領域２０４内のファイルのディレクトリを送信する。次に７０４でアンチウィルス・ソフトウェアはすべての既知のウィルス識別子と照らし合わせてウィルスについて各ファイルをスキャンする。悪意あるコードの識別子またはシグニチャは通常、ハッシュの形を取るが、コード・フラグメント、データ・フラグメント、およびオペレーティング・システムのレジストリをスキャンするためのレジストリ項目を含むその他の形を取ることもできる。読取り／書込み領域２０４内でウィルスが検出された場合、７０６で修正アクションが行われる。ウィルス・スキャンの正常完了後、７０７でアンチウィルス・ソフトウェアは読取り／書込み領域２０４内のファイルについて新しい正常ウィルス・スキャン完了日付を安全にログ記録する。新しい正常ウィルス・スキャン完了日付を安全にログ記録するための要求は安全なメモリ３０２への書込みを伴うので、７０８でコントローラ３０１は最初に認証手順によってこのような要求に応答する。認証手順７０８は、本明細書で前に述べた認証手順のいずれかにすることができる。７０８で認証が成功した場合、７０９でコントローラ３０１は読取り／書込み領域２０４について安全なメモリ３０２にタイム・スタンプを書き込む。このタイム・スタンプは、最後の正常ウィルス・スキャンが完了した時間を表し、後続スキャン時に追加スキャンを最小限にするために後で使用される。次に、７１０でアンチウィルス・ソフトウェアは正常にスキャンされたファイルのキャッシュ・フラッシュを要求する。要求７１０に応答して、７１２でコントローラ３０１は認証ルーチンを実行する。７１２で認証が成功した場合、７１３で保護領域２０２のアクセス・モードが読取り／書込みモードに変更され、７１４で読取り／書込み領域２０４からのファイルが保護領域に移動される。移動プロセスの一部として、スキャンされたファイルを保護領域２０２に正常に書き込んだ後、正常にスキャンされたファイルが読取り／書込み領域２０４から削除される。次に、７１５で保護領域２０２のアクセス・モードが読取り専用アクセス・モードに変更され、アンチウィルス・ソフトウェアに確認（acknowledge）が返される。したがって、最後のスキャン以後に変化したファイルのみ���いう少数のファイルに対して、すべての識別子という多数の識別子がスキャンされる。
【００４８】
図８は、本発明の一実施形態により、保護領域内の変化していないファイルをスキャンするためのロジックを描写する流れ図である。８０２でアンチウィルス・ソフトウェアがまず、最後のウィルス・スキャン以後に書込みが行われていないファイルのディレクトリを要求する。これに応答して、８０４でコントローラ３０１が保護領域２０２内のファイルのディレクトリを返す。これらのファイルは、前のスキャンに含まれていた識別子と照らし合わせてスキャンする必要はない。したがって、８０６でアンチウィルス・ソフトウェアは、前のスキャンに含まれておらず、新たに導入された識別子のみと照らし合わせて保護領域２０２内のファイルのすべてをスキャンする。これらの新しい識別子は、典型的には、週単位でインターネットからダウンロードされ、ウィルス定義ファイル内の識別子セットのうちの少数を表す。たとえば、ウィルスが検出された場合のように、８０８で修正アクションが必要である場合、修正アクション８０８は、通常動作モード下で読取り専用モードに設定されている保護領域２０２上のデータに関して行う必要がある。したがって、修正アクション８０８を行うために、保護領域２０２を書込み可能モードに変更することが必要である。したがって、８０８で修正アクションが必要である場合、８１２でアンチウィルス・ソフトウェアはアクセス・モード変更動作を認証し、８１２で認証が成功した場合、８１３で保護領域２０２が読取り／書込みモードに変更される。次に、８１４でコントローラ３０１は保護領域２０２内で修正アクション８０８を実行することを許可する。この修正アクションに続いて、８１５でコントローラ３０１は保護領域２０２のアクセス・モードを読取り専用アクセス・モードに戻す。ウィルス・スキャンが完了し成功すると、８１８でアンチウィルス・ソフトウェアは、セキュリティ・サブシステムからこのようなログを要求することにより、保護領域２０２に関する新しい正常完了日付を安全にログ記録する。このような要求を受信すると、８１９でコントローラ３０１は認証ルーチンを呼び出し、成功である場合、８２０で保護領域２０２について安全なメモリ３０２に正常スキャン完了タイム・スタンプを書き込む。最後のスキャン日付以後にどの識別子が新たに導入されたかを判断する際に８０６でスキャン中に参照されるのはこのタイム・スタンプである。タイム・スタンプは、コントローラ３０１のみによってアクセス可能であり、システム・プロセッサ４２によってオペレーティング・システム下で実行される悪意あるコードによってアクセス不能である安全なメモリ３０２に保管されるので、この判断は信頼することができる。タイム・スタンプが安全なメモリ３０２に正常に書き込まれた後、アンチウィルス・ソフトウェアに確認が返される。したがって、（タイム・スタンプによって検証された）最後のスキャン以後に新たにダウンロードされた識別子のみという少数の識別子は、保護領域２０２内に存在する変化していないファイルという大多数のファイルに対してスキャンされる。
【００４９】
図９は、本発明の一実施形態により、保護領域内の変化していないファイルのサブセットをスキャンするためのロジックを描写する流れ図である。この実施形態は、図８のものに類似しており、新しい識別子がダウンロードされたときに保護領域内のすべてのファイルより少ないファイルのスキャンを可能にする。これは、９０６で保護領域２０２内のどのファイルが、あるウィルスが出現したことが分かった日付より新しいかを識別することによって実施される。したがって、識別子は、インターネットからダウンロードされたときに、適用可能であれば、このような最初に分かった日付情報を含むことになるであろう。保護領域は通常動作中に読取り専用アクセス・モードに維持され、認証された手順のみにより変更できるので、保護領域２０２内のファイルの日付は信頼することができる。次に、アンチウィルス・ソフトウェアは、ウィルスの最初に分かった日付とファイルの変更日付とを比較し、ウィルスの最初に分かった日付後に作成または変更されたファイルのみをスキャンすることができる。
【００５０】
図７、図８、および図９の諸実施形態の場合、オペレーティング・システムから実行されるコードは保護領域２０２への読取りアクセスを行えるが、保護領域２０２は通常、書込みのためにアクセス可能ではないので、保護領域２０２をセキュリティ・サブシステムの一部と見なすことは、本明細書に記載した発明の概念と相反するものではない。これらの領域は、アンチウィルス・スキャンが完了し、いかなる既知のウィルスもシステム内で活発に実行されていないとアンチウィルス・ソフトウェアが判断した直後の書込みのためにのみ使用可能である。したがって、図９に示す例の場合、９０６のファイル日付の識別は、日付を判断するためにアンチウィルス・ソフトウェアによって保護領域２０２を直接読み取ることにより実行することができる。保護領域２０２への書込みアクセスは通常、オペレーティング・システムから実行されるコードに対して許可されないので、これらの日付は信頼することができる。
【００５１】
図１０は、それぞれの領域内でウィルス・スキャンを正常実行するたびに、その後、安全なメモリ３０２にタイム・スタンプが保管される本発明の好ましい実施形態による読取り／書込み領域および保護領域のそれぞれに１つずつのタイム・スタンプ項目の表１００２である。領域０は保護領域２０２に対応する。領域１は読取り／書込み領域２０４に対応する。これらのタイム・スタンプは、それぞれの領域内のスキャンのためにどの識別子を使用すべきかをアンチウィルス・ソフトウェアが安全に判断できるように維持される。読取り／書込み領域２０４内に保管されたファイルの日付は信頼することができないことに留意されたい。したがって、読取り／書込み領域２０４に対応するタイム・スタンプは、キャッシュされたステージング領域が保護領域２０２にフラッシュされた最後の時間を表している。図７に図示されている通り、読取り／書込み領域２０４内に保管されたすべてのファイルはすべての既知の識別子と照らし合わせてスキャンされる。
【００５２】
図１１は、コントローラと安全なメモリがハード・ディスク２００自体の中ではなくディスク・コントローラ７２内に位置する本発明による一実施形態のブロック図である。したがって、この実施形態では、ディスク・ドライブ２００は完全に従来の構造のものである。保護領域２０２および読取り／書込み領域２０４は、この実施形態ではコントローラ１１０１によって論理的に維持される。この実施形態のコントローラ１１０１は、領域２０２および２０４の維持に関してならびにアンチウィルス・ソフトウェアの要求および照会に応答する際に、上述した諸実施形態内のコントローラ３０１に従って機能する。さもなければ、コントローラ１１０１用の入出力インターフェースおよびプロトコルは、その位置のために、上述のコントローラ３０１とは異なっている。安全なメモリ１１０２は、オペレーティング・システム下で実行されるコードにとってアクセス不能であり、したがって、上述の諸実施形態の安全なメモリ３０２と同様に、図１１の実施形態に対する信頼に資するものである。
【００５３】
図１２は、コントローラ１２０１と安全なメモリ１２０２がＩＤＥケーブル３０８内に組み込まれている本発明による一実施形態のブロック図である。したがって、セキュリティ・サブシステムは、本発明から逸脱せずに、システム全体にわたって位置することができる。実際に、セキュリティ・サブシステムのコントローラおよび安全なメモリのコンポーネントは、同じサブアセンブリ上に位置する必要はない。
【００５４】
図１３は、ハードウェアで実現されるコントローラの代わりに安全なメモリとその他の保護機能を実現するために仮想計算機モニターが使用される本発明の一実施形態により仮想化ソフトウェアを実行するコンピュータ・システム内の抽象化層を示すシステム仮想化層図である。この実施形態によれば、特殊ハードウェアは不要である。抽象化の最低レベルにはハードウェア層１３００があり、これはコンピュータ・システムの物理的ハードウェア層である。仮想計算機モニター層１３０２は、ハードウェア層１３００の上に位置する中間層であり、コンピュータ・システム上で実行されるソフトウェアによるシステム・メモリ４６およびディスク・コントローラ７２へのすべてのアクセス試行を阻止する。上述の諸実施形態のいずれかにより、コントローラ３０１の諸機能が仮想計算機モニター自体の一部として実行されるのは、仮想計算機モニター層１３０２の内部である。このため、コンピュータ・システムは、仮想計算機モニターが提供するすべてのセキュリティおよび分離機能を利用する。抽象化の最高レベルには、最終的にオペレーティング・システムおよびソフトウェア・アプリケーションを実行する仮想計算機１３０４および１３０６が存在する。仮想計算機は、他の仮想計算機の存在を把握しないように構成される。同様に、システム・メモリ４６は、いずれかのオペレーティング・システムから実行されるコードによって直接アクセス可能ではない安全なメモリを割り振るように仮想計算機モニター１３０２によって仮想化され、この仮想の安全なメモリは、システムの電源が投入されている間、安全なメモリ３０２に類似して機能する。したがって、たとえば、仮想計算機１のＯＳ−１  １３０４から実行されるウィルスは、認証手順の改ざんまたは信頼できる変数へのアクセスを行えなくなる。計算機の電源が切断されている間、暗号化データを安全ではない不揮発性メモリに保存し復元する既知の方法のいずれかを使用して、安全な変数、認証コードなどを任意の不揮発性メモリに安全に保管しなければならない。したがって、本明細書に記載した諸実施形態はハードウェア実現例に限定されない。
【００５５】
図１４は、読取り／書込み領域から保護領域へのファイルの移動が物理的ではなく論理的に実行される本発明の一実施形態により、最後のウィルス・スキャン以後に書き込まれたすべてのファイルをスキャンするためのロジックを描写する流れ図である。この実施形態は好ましくは、図５に図示されているように論理的に構成された保護領域および読取り／書込み領域によって実現される。読取り／書込み領域内にデータをキャッシュし、そのキャッシュを保護領域にフラッシュするのではなく、この実施形態では、必要に応じて、保護領域を読取り／書込み領域に、読取り／書込み領域を保護領域に、安全に変換する。以下に注記した場合を除き、図１４に図示されているプロセスは図７に図示されているプロセスに類似している。アンチウィルス・ソフトウェアはまず、最後のウィルス・スキャン以後に書き込まれたファイルのディレクトリを要求する。これに応答して、１４０２でコントローラ３０１は変化したファイルのディレクトリを送信する。これは、図５に図示されているように読取り／書込み領域５０４内のファイルのディレクトリになる。この実施形態では、アンチウィルス・ソフトウェアは、ファイルが読取り／書込み領域から保護領域に論理的にまたは物理的に移動されたかどうかに関する具体的な知識を持つ必要はない。要求１４１０は、正常にスキャンされたファイルのキャッシュ・フラッシュまたは変換に関するものにすることができる。要求１４１０に応答して、コントローラ３０１は認証ルーチンを実行する。認証が成功した場合、１４１４で読取り／書込み領域５０４内の正常にスキャンされたファイルが論理的な保護領域５０２に変換されるかまたは付加される。次に、アンチウィルス・ソフトウェアに確認が返される。２つの領域間のディスク空間の割振りは動的なものであり、したがって、いずれか一方の領域が空間を使い果たす可能性は低い。新しいファイルが保護領域５０２に追加されると、それぞれの記憶位置は、「論理的」保護領域５０２を定義するテーブルに追加される。保護領域５０２の無限の成長を防止するために、保護領域に新たに追加されたファイルの前のコピー（すなわち、保護領域内に現在存在するコピー）は、論理的保護領域から削除し、論理的「読取り／書込み」領域に追加し、任意選択で空または消去済みとしてマークを付けることができる。このプロセスを使用すると、図７に図示されているプロセスのように、最後のスキャン以後に変化したファイルのみという少数のファイルに対して、すべての識別子という多数の識別子がスキャンされる。
【００５６】
図１４に図示されている実施形態は、図１３に関して記載した通り、仮想計算機マネージャとして実現することができる。
【００５７】
スキャンすべき領域が最初に読取り専用状態になった後で保護領域への書込みまたは変換が行われるその他の実施形態も可能である。代わって、スキャンされたときに、ファイルがスキャンされたときからファイルが書き込まれるかまたは変換されるまでの間に実行されるウィルスからの攻撃をファイルが受けないように、スキャンすべき領域を最初に読取り専用ステージング領域に移動することができる。しかし、この代替実施形態は、提示されている他の諸実施形態より多くのディスク空間を占有する。本発明の一実施形態は、本発明の諸実施形態のいずれかによるプロセスを実行するようコンピュータ（またはその他の電子装置）をプログラミングするために使用できる命令がそこに保管されている機械可読媒体を含むことができるコンピュータ・プログラム製品として提供することができる。この機械可読媒体としては、フレキシブル・ディスケット、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光学カード、あるいは電子命令を保管するために適したその他のタイプの媒体／機械可読媒体を含むことができるが、これらに限定されない。その上、本発明の一実施形態はコンピュータ・プログラム製品としてダウンロードすることもでき、そのプログラムは通信リンク（たとえば、モデムまたはネットワーク接続）を介して搬送波またはその他の伝搬媒体に実施された電子信号としてリモート・コンピュータから要求側コンピュータに転送することができる。
【００５８】
本明細書に示されている諸ステップの順序は、例示のみを目的としており、本明細書に記載した発明の概念を実現する際に異なる順序のステップを使用して可能になるその他の諸実施形態に関して制限的なものと解釈してはならない。特許請求の範囲における諸ステップの順序付けは、明瞭さを改善するためのものであり、任意の特定の順序のステップを実行することを示すものではない。
【００５９】
図面および明細書には本発明の好ましい一実施形態が示されており、具体的な用語が使用されているが、このように示されている説明では、制限のためではなく、総称的かつ記述的な意味でのみ用語を使用する。
【図面の簡単な説明】
【００６０】
【図１】悪意あるコードに関する加速スキャンを可能にするリソースを取り入れている本発明の好ましい一実施形態によるコンピュータ・システムのブロック図である。
【図２】保護領域と、読取り／書込み領域と、本発明の好ましい一実施形態によりデータ参照の安全な追跡および安全なデータ保護を可能にするように適合された統合ドライブ・エレクトロニクスとを有するディスク・ドライブの簡易概略側面図である。
【図３】本発明の好ましい実施形態で使用されるディスク・ドライブの統合ドライブ・エレクトロニクスの拡大ブロック図であり、統合ドライブ・エレクトロニクスの周辺のその他のハードウェアを含む図である。
【図４】保護領域および読取り／書込み領域に関する代替レイアウトを有する本発明の一実施形態による個別ディスク・ドライブ・プラッタの平面図である。
【図５】保護領域および読取り／書込み領域に関する代替レイアウトを有する本発明の一実施形態による個別ディスク・ドライブ・プラッタの平面図である。
【図６】保護領域に対する変更が行われない通常モードで動作している間に読取り／書込み領域内のデータをキャッシュするロジックの流れ図である。
【図７】本発明の一実施形態により、最後のウィルス・スキャン以後に書き込まれたすべてのファイルをスキャンするためのロジックを描写する流れ図である。
【図８】本発明の一実施形態により、保護領域内の変化していないファイルをスキャンするためのロジックを描写する流れ図である。
【図９】本発明の一実施形態により、保護領域内の変化していないファイルのサブセットをスキャンするためのロジックを描写する流れ図である。
【図１０】それぞれの領域内でウィルス・スキャンを正常実行するたびに、その後、安全なメモリにタイム・スタンプが保管される本発明の好ましい実施形態による読取り／書込み領域および保護領域のそれぞれに１つずつのタイム・スタンプ項目の図表である。
【図１１】コントローラと安全なメモリがディスク・コントローラ内に位置する本発明による一実施形態のブロック図である。
【図１２】コントローラと安全なメモリがＩＤＥケーブル内に位置する本発明による一実施形態のブロック図である。
【図１３】ハードウェアで実現されるコントローラの代わりに安全なメモリとその他の保護機能を実現するために仮想計算機モニターが使用される本発明の一実施形態により仮想化ソフトウェアを実行するコンピュータ・システム内の抽象化層を示すシステム仮想化層図である。
【図１４】読取り／書込み領域から保護領域へのファイルの移動が物理的ではなく論理的に実行される本発明の一実施形態により、最後のウィルス・スキャン以後に書き込まれたすべてのファイルをスキャンするためのロジックを描写する流れ図である。
【図１】
2008507055.tif 000003
【図２】
2008507055.tif 000004
【図３】
2008507055.tif 000005
【図４】
2008507055.tif 000006
【図５】
2008507055.tif 000007
【図６】
2008507055.tif 000008
【図７】
2008507055.tif 000009
【図８】
2008507055.tif 000010
【図９】
2008507055.tif 000011
【図１０】
2008507055.tif 000012
【図１１】
2008507055.tif 000013
【図１２】
2008507055.tif 000014
【図１３】
2008507055.tif 000015
【図１４】
2008507055.tif 000016
【国際調査報告】
2008507055.tif 000017
2008507055.tif 000018
2008507055.tif 000019
2008507055.tif 000020
2008507055.tif 000021