IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アクロニス・インターナショナル・ゲーエムベーハーの特許一覧

特開2022-141590空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法
<>
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図1
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図2
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図3
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図4
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図5
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図6
  • 特開-空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022141590
(43)【公開日】2022-09-29
(54)【発明の名称】空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステムおよび方法
(51)【国際特許分類】
   G06F 21/56 20130101AFI20220921BHJP
【FI】
G06F21/56 320
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022029462
(22)【出願日】2022-02-28
(31)【優先権主張番号】17/201,282
(32)【優先日】2021-03-15
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
(71)【出願人】
【識別番号】313015247
【氏名又は名称】アクロニス・インターナショナル・ゲーエムベーハー
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】ウラジミール ストロゴフ
(72)【発明者】
【氏名】アナトリー ストゥパク
(72)【発明者】
【氏名】アンドレイ クラーガ
(72)【発明者】
【氏名】アレクセイ セルゲエフ
(72)【発明者】
【氏名】セルゲイ ベロウソフ
(72)【発明者】
【氏名】スタニスラフ プロタソフ
(57)【要約】      (修正有)
【課題】空のスパースファイルを使用してアーカイブスライスをマルウェアについて検査するシステム及び方法を提供する。
【解決手段】方法は、バックアップスライスと、仮想ボリュームとを生成することを含む。方法は、仮想ボリュームをディスクにマウントすることを含む。方法は、仮想ボリューム内に、空のスパースファイルを作成することを含む。方法は、それぞれの空のスパースファイルと、以前のバックアップスライス内の対応するファイルとの間の変更を検出し、それに応じて、それぞれの空のスパースファイルの代わりに、仮想ボリューム内のファイルの実際のコンテンツを格納することを含む。方法は、悪意のあるソフトウェアについて仮想ボリュームをスキャンすることと、検出時にバックアップアーカイブ内のバックアップスライスを置き換える修復されたスライスを生成することとを含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
マルウェアについてアーカイブスライスを検査するための方法であって、
第1の時点におけるデータ状態を反映するバックアップスライスであって、バックアップアーカイブに格納されるバックアップスライスを生成することと、
前記バックアップスライス内のファイルのリストおよび関連付けられたファイル情報を備えた仮想ボリュームであって、ファイルの前記リスト内で参照される前記ファイルを格納しない仮想ボリュームを生成することと、
前記仮想ボリュームをディスクにマウントすることと、
前記仮想ボリューム内に、前記ファイルの前記リスト内にある複数のファイル参照それぞれのプレースホルダである空のスパースファイルを作成することと、
各それぞれの空のスパースファイルについて、
前記それぞれの空のスパースファイルに関連付けられたファイル情報と、第2の時点における前記データ状態を反映する、別のバックアップスライス内の対応するファイルに関連付けられたファイル情報とを比較することと、
前記それぞれの空のスパースファイルと対応する前記ファイルとの間の変更を検出したことに応じて、
前記バックアップスライスから前記それぞれの空のスパースファイルに関連付けられたコンテンツを取得することと、
前記それぞれの空のスパースファイルの代わりに、前記コンテンツを前記仮想ボリュームに格納することと、
ウイルスおよび/または悪意のあるソフトウェアについて前記仮想ボリュームをスキャンすることと、
前記仮想ボリューム内の少なくとも1つのファイルがウイルスおよび/または悪意のあるソフトウェアに感染していることを検出したことに応じて、前記バックアップアーカイブ内の前記バックアップスライスを置き換える修復されたスライスを生成することとを含む方法。
【請求項2】
前記第1の時点が、前記第2の時点の後である、請求項1に記載の方法。
【請求項3】
前記仮想ボリュームが、仮想ボリュームドライバによって生成される、請求項1に記載の方法。
【請求項4】
関連付けられた前記ファイル情報が、
(1)前記リスト内の前記ファイルのうち、それぞれファイルのファイル番号、
(2)前記バックアップスライス内の前記それぞれのファイルの位置、
(3)前記それぞれのファイルのファイルサイズの少なくとも1つを含む、請求項1に記載の方法。
【請求項5】
前記修復されたスライスを生成することが、マウントされた前記仮想ボリュームから前記少なくとも1つのファイルを除去することを含む請求項1に記載の方法。
【請求項6】
前記修復されたスライスを生成することが、
前記バックアップスライスのコピーを生成することと、
前記ファイルの前記リスト内の、前記少なくとも1つのファイルを含まないすべての変更されていないファイルを、前記修復されたスライスである前記バックアップスライスの前記コピーに移すこととを含む請求項1に記載の方法。
【請求項7】
前記仮想ボリュームが、前記別のバックアップスライスに関連付けられた別の仮想ボリュームに続いて、または同時に、前記ディスクにマウントされる、請求項1に記載の方法。
【請求項8】
前記修復されたスライスを前記バックアップアーカイブに追加することをさらに含む請求項1に記載の方法。
【請求項9】
マルウェアについてアーカイブスライスを検査するためのシステムであって、
第1の時点におけるデータ状態を反映するバックアップスライスであって、バックアップアーカイブに格納されるバックアップスライスを生成し、
前記バックアップスライス内のファイルのリストおよび関連付けられたファイル情報を備えた仮想ボリュームであって、ファイルの前記リスト内で参照される前記ファイルを格納しない仮想ボリュームを生成し、
前記仮想ボリュームをディスクにマウントし、
前記仮想ボリューム内に、前記ファイルの前記リスト内にある複数のファイル参照それぞれのプレースホルダである空のスパースファイルを作成し、
各それぞれの空のスパースファイルについて、
前記それぞれの空のスパースファイルに関連付けられたファイル情報と、第2の時点における前記データ状態を反映する、別のバックアップスライス内の対応するファイルに関連付けられたファイル情報とを比較し、
前記それぞれの空のスパースファイルと対応する前記ファイルとの間の変更を検出したことに応じて、
前記バックアップスライスから前記それぞれの空のスパースファイルに関連付けられたコンテンツを取得し、
前記それぞれの空のスパースファイルの代わりに、前記仮想ボリュームに前記コンテンツを格納し、
ウイルスおよび/または悪意のあるソフトウェアについて前記仮想ボリュームをスキャンし、
前記仮想ボリューム内の少なくとも1つのファイルがウイルスおよび/または悪意のあるソフトウェアに感染していることを検出したことに応じて、前記バックアップアーカイブ内の前記バックアップスライスを置き換える修復されたスライスを生成するように構成されたハードウェアプロセッサ
を備えるシステム。
【請求項10】
前記第1の時点が、前記第2の時点の後である、請求項9に記載のシステム。
【請求項11】
前記仮想ボリュームが、仮想ボリュームドライバによって生成される、請求項9に記載のシステム。
【請求項12】
関連付けられた前記ファイル情報が、
(1)前記リスト内のそれぞれのファイルのファイル番号、
(2)前記バックアップスライス内の前記それぞれのファイルの位置、
(3)前記それぞれのファイルのファイルサイズの少なくとも1つを含む、請求項9に記載のシステム。
【請求項13】
前記ハードウェアプロセッサが、マウントされた前記仮想ボリュームから前記少なくとも1つのファイルを除去することによって前記修復されたスライスを生成するように構成されている、請求項9に記載のシステム。
【請求項14】
前記ハードウェアプロセッサが、
前記バックアップスライスのコピーを生成することと、
前記ファイルの前記リスト内の、前記少なくとも1つのファイルを含まないすべての変更されていないファイルを、前記修復されたスライスである前記バックアップスライスの前記コピーに移すこととによって前記修復されたスライスを生成するように構成されている、請求項9に記載のシステム。
【請求項15】
前記仮想ボリュームが、前記別のバックアップスライスに関連付けられた別の仮想ボリュームの後に、または前記別のバックアップスライスに関連付けられた別の仮想ボリュームと同時に前記ディスクにマウントされる、請求項9に記載のシステム。
【請求項16】
前記ハードウェアプロセッサが、前記修復されたスライスを前記バックアップアーカイブに追加するようにさらに構成される、請求項9に記載のシステム。
【請求項17】
マルウェアについてアーカイブスライスを検査するためのコンピュータ実行可能命令を格納する非一時的コンピュータ可読媒体であって、
第1の時点におけるデータ状態を反映するバックアップスライスであって、バックアップアーカイブに格納されるバックアップスライスを生成する命令と、
前記バックアップスライス内のファイルのリストおよび関連付けられたファイル情報を備えた仮想ボリュームであって、ファイルの前記リスト内で参照される前記ファイルを格納しない仮想ボリュームを生成する命令と、
前記仮想ボリュームをディスクにマウントする命令と、
前記仮想ボリューム内に、前記ファイルの前記リスト内にある複数のファイル参照それぞれのプレースホルダである空のスパースファイルを作成する命令と、
各それぞれの空のスパースファイルについて、
前記それぞれの空のスパースファイルに関連付けられた前記ファイル情報と、第2の時点におけるデータ状態を反映する、別のバックアップスライス内の対応するファイルに関連付けられたファイル情報とを比較する命令と、
前記それぞれの空のスパースファイルと前記対応するファイルとの間の変更を検出したことに応じて、
前記バックアップスライスから前記それぞれの空のスパースファイルに関連付けられたコンテンツを取得する命令と、
前記それぞれの空のスパースファイルの代わりに、前記コンテンツを前記仮想ボリュームに格納する命令と、
ウイルスおよび/または悪意のあるソフトウェアについて前記仮想ボリュームをスキャンする命令と、
前記仮想ボリューム内の少なくとも1つのファイルがウイルスおよび/または悪意のあるソフトウェアに感染していることを検出したことに応じて、前記バックアップアーカイブ内の前記バックアップスライスを置き換える修復されたスライスを生成する命令とを含むコンピュータ実行可能命令を格納する非一時的コンピュータ可読媒体。
【請求項18】
前記第1の時点が、前記第2の時点の後である、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記仮想ボリュームが、仮想ボリュームドライバによって生成される、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項20】
関連付けられた前記ファイル情報が、
(1)前記リスト内のそれぞれのファイルのファイル番号、
(2)前記バックアップスライス内の前記それぞれのファイルの位置、
(3)前記それぞれのファイルのファイルサイズの少なくとも1つを備える、請求項17に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、格納されたアーカイブにおけるウイルスおよびマルウェア検出の分野に関し、より具体的には、空のスパースファイルを使用してマルウェアについてアーカイブのスライスを検査することによってバックアップアーカイブをスキャンするシステムおよび方法に関する。
【背景技術】
【0002】
通常、リカバリのための、アーカイブのバックアップおよび保存は、スケジュールに従って定期的に実行される。バックアップが、悪意のあるソフトウェアで汚染される可能性がある場合が多いため、企業は、バックアップ前、バックアップ中、リストア前などのいずれかにマルウェアスキャンを実行する自動化ソフトウェアを有することが多い。新しい種類のマルウェアの出現により、アンチウイルスデータベースは頻繁に更新されるため、ウイルスおよびマルウェアスキャンは周期的かつ定期的に実行する必要がある。しかしながら、大規模なアーカイブのフルスキャンにはかなりの時間および計算リソースが必要であり、多くの場合、時間およびリソースを利用できないか、または効率的に使用できない。アーカイブがローカルに格納されておらず、クラウドストレージに格納されている場合、アーカイブのスキャンは特に重要になる。これは、クラウド内のアーカイブへのアクセス速度が、(使用されているネットワークもしくは通信チャネルの速度、および/またはチャネルにどの程度負荷がかかっているかに応じて)ローカルストレージデバイスへのアクセスよりも大幅に遅くなる可能性があるためである。さらに、ウイルスおよび/または悪意のあるファイルがアーカイブで発見されるような問題が発生した場合、アーカイブは損傷または感染しているとみなされ、システムリカバリ、またはファイルおよびデータの抽出における使用に完全には適していない可能性がある。
【0003】
従来、感染したデータのリストアを回避するために、新しいスライスがアーカイブに追加されたとき、および/またはデータをリストアする前に、データの保存中に、アーカイブはアンチウイルススキャナで周期的にスキャンされる。しかしながら、現在、アーカイブ内の任意の時点をスキャンするソリューションはない。ソリューションは、任意の時点ではなく、アーカイブ全体をスキャンすることを強制される。さらに、アーカイブ内の、現在損傷または感染しているデータを修復することはできない。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示の態様は、格納されたアーカイブにおけるウイルスおよびマルウェア検出の分野に関する。特に、本開示の態様は、アーカイブのスライスを検査することによってバックアップアーカイブをスキャンするための方法およびシステムを説明する。
【0005】
例示的な一態様において、本方法は、第1の時点におけるデータ状態を反映するバックアップスライスであって、バックアップアーカイブに格納されるバックアップスライスを生成することを含む。本方法は、バックアップスライス内のファイルのリストおよび関連付けられたファイル情報を備えた仮想ボリュームであって、ファイルのリスト内で参照されるファイルを格納しない仮想ボリュームを生成することを含む。本方法は、仮想ボリュームをディスクにマウントすることを含む。本方法は、仮想ボリューム内に、ファイルのリスト内にある複数のファイル参照それぞれのプレースホルダである空のスパースファイルを作成することを含む。本方法は、各それぞれの空のスパースファイルについて、それぞれの空のスパースファイルに関連付けられたファイル情報と、第2の時点におけるデータ状態を反映する、別のバックアップスライス内の対応するファイルに関連付けられたファイル情報とを比較することと、それぞれの空のスパースファイルと対応するファイルとの間の変更を検出したことに応じて、バックアップスライスからそれぞれの空のスパースファイルに関連付けられたコンテンツを取得することと、それぞれの空のスパースファイルの代わりに、コンテンツを仮想ボリュームに格納することとを含む。本方法は、ウイルスおよび/または悪意のあるソフトウェアについて仮想ボリュームをスキャンすることを含む。本方法は、仮想ボリューム内の少なくとも1つのファイルがウイルスおよび/または悪意のあるソフトウェアに感染していることを検出したことに応じて、バックアップアーカイブ内のバックアップスライスを置き換える修復されたスライスを生成することを含む。
【0006】
いくつかの態様では、第1の時点は第2の時点の後である。
【0007】
いくつかの態様では、仮想ボリュームは、仮想ボリュームドライバによって生成される。
【0008】
いくつかの態様では、関連付けられた前記ファイル情報は、(1)リスト内のファイルのうち、それぞれファイルのファイル番号、(2)バックアップスライス内のそれぞれのファイルの位置、(3)それぞれのファイルのファイルサイズの少なくとも1つを含む。
【0009】
いくつかの態様では、修復されたスライスを生成することは、マウントされた仮想ボリュームから少なくとも1つのファイルを除去することを含む。
【0010】
いくつかの態様では、修復されたスライスを生成することは、バックアップスライスのコピーを生成することと、ファイルのリスト内の、少なくとも1つのファイルを含まないすべての変更されていないファイルを修復されたスライスであるバックアップスライスのコピーに移すこととを含む。
【0011】
いくつかの態様では、仮想ボリュームは、別のバックアップスライスに関連付けられた別の仮想ボリュームに続いて、または同時に、ディスクにマウントされる。
【0012】
いくつかの態様では、修復されたスライスをバックアップアーカイブに追加する。
【0013】
上述した方法は、ハードウェアプロセッサを備えるシステムで実装されてもよいことに留意されたい。あるいは、本方法は、非一時的コンピュータ可読媒体のコンピュータが実行可能な命令を使用して実装されてもよい。
【0014】
例示的な態様の上記の簡略化された概要は、本開示の基本的な理解を提供するのに役立つ。本概要は、考えられるすべての態様の広範な概観ではなく、すべての態様の主要または重要な要素を特定することも、本開示のいずれかまたはすべての態様の範囲を描写することも意図されていない。その唯一の目的は、以下の本開示のより詳細な説明の前置きとして、簡略化された形態で1つ以上の態様を提示することである。上記を達成するために、本開示の1つ以上の態様は、請求項に記載され例示的に挙げられた特徴を含む。
【図面の簡単な説明】
【0015】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本開示の1つ以上の例示的な態様を示し、詳細な説明と共に、それら態様の原理および実装形態を説明するのに役立つ。
図1】アーカイブスライスを検査することによってバックアップアーカイブをスキャンするシステムのブロック図である。
図2】アーカイブスライスを検査することによってバックアップアーカイブのスキャンシーケンスを示すブロック図である。
図3】空のスパースファイルを使用して、マルウェアについてアーカイブスライスを検査するブロック図である。
図4】アーカイブスライスを検査することによってバックアップアーカイブをスキャンする方法のフロー図である。
図5】アーカイブスライスを検査することによってバックアップアーカイブをスキャンする方法を示すフローチャートである。
図6】空のスパースファイルを使用して、マルウェアについてアーカイブスライスを検査する方法を示すフローチャートである。
図7】例示的な態様による、開示されたシステムおよび方法を実装することができるコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0016】
例示的な態様は、本明細書では、マルウェアについてアーカイブスライスを検査するためのシステム、方法、およびコンピュータプログラム製品の文脈で説明される。当業者は、以下の説明が例示にすぎず、決して限定することを意図するものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者に容易に示唆されるであろう。ここで、添付の図面に示す例示的な態様の実装形態を詳細に参照する。図面および以下の説明を通して可能な範囲で同じ参照符号を使用して、同じまたは同様の項目を参照する。
【0017】
図1は、本開示の例示的な態様による、アーカイブスライスを検査することによってバックアップアーカイブをスキャンするシステム100のブロック図である。
【0018】
システム100は、コンピューティングデバイス102と、アーカイブスキャナ110と、ディスク120と、クラウドアーカイブ130とを備える。クライアントコンピューティングデバイス102は、ラップトップコンピュータ、タブレットコンピュータ、モバイルデバイスなどの任意の種類のモバイルコンピューティングデバイスであってもよい。コンピューティングデバイス102はまた、コンピューティングデバイス102に格納されたユーザデータのバックアップを実行するバックアップモジュール104を含み、ユーザデータは、コンピューティングデバイス102のディスクのバックアップイメージ全体、デバイス102にインストールされたソフトウェア、個人文書などのユーザアプリケーションデータなどを含んでもよい。
【0019】
バックアップモジュール104はまた、コンピューティングデバイス102にローカルに格納されていないデータを取得してもよい。例示的な態様では、バックアップモジュール104は、クラウドアーカイブ130、あるいはコンピューティングデバイス102に関連付けられた物理ディスクにあるローカルアーカイブとの間で、複数のバックアップスライス106のセットとしてユーザデータを格納および/または取得する。複数のバックアップスライス106は、クラウドアーカイブ130内のバックアップアーカイブ108にまとめて格納される。各バックアップスライスは、特定の時点における、コンピューティングデバイス102の、ユーザデータまたは物理ディスクのイメージである。時が経つにつれて、クラウドアーカイブ130は、異なるコンピューティングデバイスであって、各々が複数のバックアップスライスを有するコンピューティングデバイスのための多くのバックアップアーカイブ108を含む。
【0020】
バックアップモジュール104は、ネットワーク101(例えば、インターネット)を介してクラウドアーカイブ130と通信する。場合によっては、バックアップモジュール104がバックアップアーカイブ108からデータをリストアしようとする場合、スキャンが実行される。バックアップアーカイブ108のサイズが非常に大きくなった場合(例えば、500GBなどの所定の閾値を超える場合)、スキャンの実行を要求するにはかなりの時間とリソースがかかる可能性がある。アーカイブ108がローカルに格納される場合、バックアップモジュール104は、他の場所で必要とされる可能性がある、コンピューティングデバイス102の多くのリソースを占有する可能性がある。そのようなリソースには、ストレージスペース、メモリ(例えば、RAM)、および処理能力が含まれる場合がある。
【0021】
いくつかの例示的な態様によれば、ローカルおよび/またはクラウドプラットフォームにかかわらず、リソースの過剰な消費を回避するために、クラウドアーカイブ130は、アーカイブスキャナ110によって周期的にスキャンされる。アーカイブスキャナ110は、アーカイブマウントサービス112と、アーカイブAPI114と、アーカイブマウントドライバ116とを備える。いくつかの態様では、アーカイブスキャナ110は、ネットワーク101を介したサービスとして実行されているが、他の態様では、アーカイブスキャナ110は、コンピューティングデバイス102上で実行されていてもよい。さらに、アーカイブスキャナがクラウドアーカイブ130とは異なるサーバまたは同じサーバ上で動作することができる他の構成も考えられる。
【0022】
アーカイブスキャナ110は、クラウドアーカイブからデータが取得されるときに、コンピューティングデバイス102などのコンピューティングデバイスが誤って感染しないようにするために、バックアップアーカイブ108に対してアンチウイルスおよびマルウェアスキャンを実行する。アーカイブスキャナ110を実行しているデバイス(例えば、サーバ)は、物理ディスク120を有していてもよい。例示的な態様では、デバイスは、ホストマシンおよび仮想マシンを備えていてもよい。例示的な態様では、アーカイブスキャナ110は、バックアップアーカイブ108をスキャンする要求を受信する。アーカイブAPI114は、バックアップアーカイブ108に格納されたスライスから、新しいブロックおよび変更されたブロックを取得するために使用される。アーカイブマウントドライバ116は、バックアップアーカイブ108からのアーカイブスライスをマウントする要求を受信し、アーカイブスキャナ110が、アーカイブをディスクとして使用して動作することを可能にする。アーカイブマウントドライバ116は、アーカイブスライスを仮想ディスク122としてマウントしてもよい。いくつかの態様によれば、マウントされたスライス内のデータに対して変更が行われた場合には、アーカイブマウントドライバ116は、変更を保存する能力を与える。
【0023】
例示的な態様では、アーカイブスキャナ110は、最新のスライスの作成以降の、最新のスライス内のすべての変更されたブロックを検出する。続いて、アーカイブスキャナ110は、アーカイブAPI114を使用して、1つ以上のスライス内のファイルの、マウントされたディスクにおけるデータブロックとの対応関係を判定する。そのような判定は、ブロックマップを使用して行ってもよい。一度対応関係が作成されると、変更されたブロックと対応するマウントされた仮想ディスク122にあるファイルもまた、新しいファイルまたは変更されたファイルのいずれかであると推定される。したがって、仮想ディスク122にあるこれらの新しいファイルは、感染、ウイルス、および悪意のあるソフトウェアについてスキャンすることができる。アーカイブAPI114は、仮想ディスク122から感染および/または損傷したファイルおよびマルウェアを除去するためにアーカイブスキャナ110によってさらに呼び出されることができる。最後に、アーカイブスキャナ110は、クラウドアーカイブ130に格納された(またはコンピューティングデバイス102のローカルなストレージデバイスに格納された)バックアップアーカイブ108に、仮想ディスク122を新しい修復されたスライスとして保存することができる。いくつかの他の態様では、既存のスライスを除去し、新しい修復されたスライスと置き換えてもよい。
【0024】
ブロックマップを形成する態様は、特定のOSおよびファイルシステムに依存する。例えば、Windows NTFSでは、ファイルは、(MFTレコード内に格納された)マスタファイルテーブル(MFT)のレジデントファイルであるか、または、ボリュームストレージスペースに格納されたノンレジデントファイルである。一態様では、ノンレジデントファイルの割り当てられたブロックは、システム関数呼び出し、例えば、「FSCTL_GET_RETRIEVAL_POINTERS API」を使用して取得してもよい。MFTレジデントファイルブロックマップは、MFT割当て、および一般にMFTレコード番号である既知のファイル識別子の分析を使用して判定してもよい。MFTレコード番号によって、MFTレジデントファイルのブロックを検査することおよび認識することが可能になる。MFT割当ての分析は、例えばシステム関数「FSCTL_GET_RETRIEVAL_POINTERS」を使用して判定することもできるが、ファイルでもあるMFT全体が対象である。他のファイルシステムは、ファイルブロックマップを構築する独自の特別なアルゴリズムを必要とする可能性がある。
【0025】
アーカイブスキャナ110はまた、感染したスライスを発見するために、バックアップアーカイブ108内の1つ以上の古いスライスをスキャンするように構成されてもよい。そのような、感染したスライス、または別の方法で破損したスライスが特定されると、アーカイブスキャナ110は、感染したスライスおよび(時間的に)その後に取り込まれたスライスとを、感染しており、任意のコンピューティングデバイスのデータリカバリには適していないものとしてマークする。したがって、バックアップモジュール104は、感染したとマークされたスライスをリストアしようとするあらゆる試みもブロックするように構成される。さらに、これにより、アーカイブスキャナ110は、破損の時点を確立することができ、この破損の時点は、感染の種類および破損に関与していた可能性のある要因に関する更なる分析に使用することができる。いくつかの態様では、コンピューティングデバイス102の過去の属性を、クラウドアーカイブ130または他の場所に格納し、破損の時点と共に分析して、破損/感染の原因のセットを確立することができる。この分析は、将来の感染またはマルウェア攻撃を防ぐために使用できる。
【0026】
図2は、本開示の例示的な態様による、アーカイブスライスを検査することによってバックアップアーカイブをスキャンするシステムおよび方法のシーケンスを示すブロック図である。
【0027】
例示的な態様では、アーカイブマウントサービス112、アーカイブAPI114、クラウドアーカイブ130、およびローカルアーカイブ200は、ユーザメモリスペース(UM)に配置してもよく、一方、アーカイブマウントドライバ116は、カーネルメモリスペース(KM)に配置してもよい。クラウドアーカイブ130またはローカルアーカイブ200にアクセスするために、アーカイブスキャナ110は、アーカイブマウントサービス112にコンタクトする。アーカイブマウントサービス112は、マウントドライバ116を使用して、アーカイブをディスク(例えば、仮想ディスク)にマウントする。
【0028】
図2を参照すると、マウントドライバ116は、クラウドアーカイブ130内の複数のスライス(例えば、スライス202~206)のうちの第1のスライス202をディスク120にマウントする。この第1のスライスは、第1の時点における(例えば、コンピューティングデバイス102における)ユーザデータのイメージである。次に、アーカイブAPI114は、マウントされた第1のスライスのブロックを、複数のスライスのうちの第2のスライス204のブロックと比較することによって、マウントされた第1のスライスの変更されたブロックを検出する。この第2のスライスは、第1の時点の前にキャプチャされたユーザデータのイメージである。例えば、第1のスライス202は、時点tに作成されていてもよい。第2のスライス204は、時点t-1に作成されていてもよい。
【0029】
次に、アーカイブAPI114は、それぞれのスライスのそれぞれのマウントされたディスクのブロックを比較して、変更されたブロックを発見してもよい。変更されたブロックが発見されると、アーカイブマウントサービス112は、ディスクのファイルシステム上で、検出された変更されたブロックに対応するマウントされた第1のスライス内の少なくとも1つのファイルを特定する。次に、アーカイブスキャナ110は、ウイルスおよび悪意のあるソフトウェアについて少なくとも1つのファイルをスキャンする。少なくとも1つのファイルが感染したことを検出したことに応じて、アーカイブスキャナ110は、マウントされた第1のスライスから当該少なくとも1つのファイルを除いたユーザデータを備える修復されたスライスを生成する。この生成プロセスは、マウントされた第1のスライス202から当該少なくとも1つのファイルを除去することを含んでもよい。スライス202内に、スライス204に対して変更された複数のブロックが発見された場合、生成プロセスは、第2のスライス204のコピーを生成することと、第2のスライスのコピーに、感染したファイルを含まない、変更された複数のブロックに対応するすべてのファイルを移すこととを含む(ここで、第2のスライスのコピーは修復されたスライスである)。
【0030】
いくつかの態様では、アーカイブスキャナ110は、ウイルスおよび悪意のあるソフトウェアについて、バックアップアーカイブ内の複数のスライスのうちの第3のスライス206を任意にスキャンしてもよい。第3のスライス206は、第2のスライスの作成時点の前(すなわち、t-N)にキャプチャされたユーザデータのイメージであってもよい。第3のスライス206内の感染したファイルを検出したことに応じて、アーカイブスキャナ110は、第3のスライスの作成時点の後にキャプチャされた複数のスライスのサブセットを、データリカバリに適していないものとしてマークしてもよい。この特定の例では、第1のスライス202および第2のスライス204の両方がサブセットに含まれる。
【0031】
いくつかの態様では、アーカイブスキャナ110は、感染したファイルに対応する第3のスライス206のブロックを特定してもよい。アーカイブスキャナ110は、第2のスライス204および第1のスライス202をディスク120にマウントしてもよい。アーカイブスキャナ110は、当該ブロックを追跡し、感染したファイルが第2のスライスおよび第1のスライスのいずれかに存在するか否かを判定してもよい。例えば、感染したファイルは第2のスライス204に存在する場合があるが、ユーザが感染したファイルを第1のスライス202から手動で除去する場合がある。感染したファイルは第1のスライス202に存在しないので、第3のスライス206および第2のスライス204のみが修復される必要がある。これにより、バックアップアーカイブが、ユーザがバックアップすることができる、スライスのクリーンなセットを有することが保証される。
【0032】
いくつかの態様では、アーカイブが感染したスライスを含む場合、アーカイブスキャナ110は、これらのスライスを発見して、これらのスライスをスキャンすることによって、いつ感染が発生したか(スライス作成時点に基づいて)および感染源またはマルウェアを判定してもよい。
【0033】
図3は、空のスパースファイルを使用して、マルウェアについてアーカイブスライスを検査するブロック図300である。ブロック図300は、HSMアーカイブファイルシステムフィルタドライバ302および仮想ボリュームドライバ304を示す。クラウドに格納されたバックアップのアンチウイルススキャンは、通常、多くのハードウェアリソースを必要とする非常に時間のかかる手順である。これは、クラウドストレージが通常大量のデータを含み、クラウドへのアクセス速度がローカルストレージよりも著しく遅く、同時に、バックアップを非常に頻繁にスキャンしなければならないという事実に起因する。
【0034】
本開示の、上述した技術は、データがセクタごとにバックアップされるときにイメージアーカイブに適用可能である。しかしながら、ファイルのみのアーカイブおよび異なる性質のアーカイブ(例えば、データベース、電子メールアーカイブなど)があり、ブロックセクタレベルでそのようなオブジェクトを処理することは効果的ではない場合がある。現在、アーカイブ内の任意の時点のスキャンが可能で、最新のスライスを修正し、または古いスライスをリカバリに適さないものとしてマークすることができる。しかしながら、この機能はイメージアーカイブに限定され、ファイルアーカイブには適用されない。
【0035】
したがって、仮想ボリュームドライバ304およびHSMアーカイブファイルシステムフィルタドライバ302は、ファイルアーカイブの任意のスライス、およびスライスの任意のファイルへのアクセスを提供して、スライスをさらにスキャンし、悪意のある/感染したファイルを除去するために利用される。大まかな概要から、スライスは、仮想ボリュームドライバ304を使用して、空(例えば、ファイルなし)としてアーカイブ(クラウドまたはローカル)にマウントすることができる。より具体的には、マウントされたスライスには空のゼロデータファイル(ただし、適切な仮想サイズを有する)が読み込まれる。AVスキャンが実行され、特定のファイルに対して実行することができるとき、HSMフィルタドライバ302は、アクセス時にこのデータを取り込み、スキャンされたファイルに入れる。最新のスライスでは、感染したデータおよびマルウェアを除去することができ、リストア/リカバリの可能性に備え、最新のスライスを、修正されたデータを使用して再作成することができる。
【0036】
クラウドファイルアーカイブのスライスへのアクセスは、適切なAPI(例えば、API114)を使用して達成されることに留意されたい。マウントされた仮想ボリュームは、所与のボリュームに空のスパースファイルを備えるが、仮想ボリュームが基づくバックアップスライスの構造を再現し、バックアップスライス内のファイルに関する情報を含む。アーカイブAPI114は、アンチウイルスソフトウェアからのファイルを読み出す要求を追跡し、読み出し要求の場合にバックアップアーカイブからこのファイルのコンテンツを取得してもよい。ここから、アーカイブスキャナ110は、仮想ボリューム内の受信したファイルをスキャンし、感染したファイルを削除し、アーカイブの最後のスライスを再作成してもよい。
【0037】
前述したように、クラウドアーカイブ130およびローカルアーカイブ200は、ファイルを有するデータバックアップ(「バックアップアーカイブ」と互換的に使用される)を含む。ユーザは、所有するコンピューティングデバイスのバックアップを定期的に実行してもよく、すべての変更されたファイルがアーカイブに送信される。バックアップを実行する観点から、最初のバックアップはすべてのファイルのバックアップであり、その後のすべてのバックアップは増分である(新しいファイルおよび変更されたファイルのみがコピーされる)ことを理解されたい。各バックアップセッションにより、特定の時点におけるデータ状態を反映する別個のバックアップスライスが得られる。
【0038】
仮想ボリュームドライバ304は、バックアップスライスごとに空のボリュームを作成する。これらのボリュームは、後にマルウェアについてスキャンされる。そのようなボリュームは仮想であり、それぞれのバックアップスライス内のファイルのリスト、および関連するファイル情報(例えば、名前、番号、サイズ、位置、メタデータなど)以外のデータを含まない。実データは、実際には、バックアップアーカイブ内の実バックアップスライスに格納される。これにより、クラウド内のファイルバックアップアーカイブをスキャンすることができる。
【0039】
仮想ボリュームドライバ304は、実際のデータを含まないことにかかわらず物理スライスの構造を完全に表示する仮想ボリュームをマウントする。その後、階層フィルタドライバ、すなわちHSMアーカイブファイルシステムフィルタドライバ302は、バックアップスライス内の実際のファイルと一致する空のスパースファイルを作成する。ここで、ファイルシステム全体にアクセスする必要なく、特定のファイルにアクセスすることができる。
【0040】
ドライバ302は、ファイルのコンテンツへのアクセスを提供し、2つの異なるスライス内のファイル間の変更を比較し、そのような変更がある場合、クラウド内のアーカイブからファイルのコンテンツをダウンロードする。次に、ドライバ302は、このファイルに対応するプレースホルダ(例えば、空のスパースファイル)に、仮想ボリューム内のコンテンツを配置する。
【0041】
したがって、2つの連続するスライスの作成の間に変更されたファイルのセットのみが考慮される。最新のスライスでは、感染したデータおよびマルウェアを除去することができ、リストア/リカバリの可能性に備え、修正されたデータを使用して、新しいスライスを作成することができる(すなわち、修復されたスライス)。これらのシステムおよび方法は、仮想ボリューム内でファイルエンティティとして表すことができるデータベースまたは電子メールアーカイブなどの特定のオブジェクトを扱うのに役立つ。
【0042】
前述したように、アーカイブAPI114は、バックアップアーカイブ(クラウドおよび/またはローカル)へのアクセスを得るために使用することができる。アーカイブAPI114は、任意の種類のアーカイブおよびストレージに特有のものとすることができ、特定のアーカイブのコンテンツおよび構造を理解するために使用される(アーカイブのコンテンツおよび構造は、バックアップおよびストレージの、ソフトウェアおよびハードウェアのベンダに応じて異なる可能性があるため)。
【0043】
図4は、本開示の例示的な態様による、アーカイブスライスを検査することによってバックアップアーカイブをスキャンする方法400を示すフローチャートである。
【0044】
本方法は、402で開始し、404に進む。
【0045】
404において、アーカイブスキャナ110の構成要素は、アーカイブスライスを検査することによってバックアップアーカイブをスキャンする。アーカイブスキャナの構成要素は、例えば、仮想ディスクをマウントすることによって、バックアップアーカイブからの最新のスライスをディスクにマウントする。いくつかの態様では、仮想ディスクは、アーカイブスキャナ110を実行するサーバにマウントされてもよいが、本開示はその構成に限定されない。
【0046】
406において、アーカイブAPI114は、最新のスライスの作成以降の最新のスライス内のすべての変更されたブロックを検出するように要求される。例示的な態様では、API114は、変更されたブロックを判定するために、スライスがマウントされている仮想ディスクの基礎をなすブロックを検査する。他の態様では、変更されたブロックは、最新のスライスのブロックと、コンピューティングデバイスの以前のバックアップのために以前に作成されたスライスのブロックとを比較することによって検出される。あるスライスと、その次のスライスとの間で異なるブロックは、変更されたブロックのセットを備える。
【0047】
408において、アーカイブスキャナ110は、1つ以上のスライス内のファイルと、マウントされたディスクにあるデータブロックとの対応関係を判定する。いくつかの態様では、アーカイブスキャナ110は、マウントされている特定のバックアップスライスのブロックマップを確立し、または読み出し、ブロックマップは、どのブロックがどのファイルに対応するかを示す。
【0048】
410において、アーカイブスキャナ110は、ディスクのファイルシステムにおいて、変更されたデータブロックを特定することによって、変更されたファイルを判定する。変更されたデータブロックが特定されているので、そのブロックを使用して、変更されたデータブロックに対応するのがどのファイルかを特定することができる。
【0049】
412において、アーカイブスキャナ110は、ウイルスおよび悪意のあるソフトウェアについて、以前のバックアップスライスが完了してから変更された、ファイルシステムにあるファイルをスキャンする。
【0050】
414において、アーカイブスキャナ110は、仮想ディスクから感染および/または損傷したファイルおよびマルウェアを除去してもよい。次に、仮想ディスクを最新のスライスとして保存し、クラウドアーカイブ130内、またはローカルディスクにあるバックアップアーカイブ108に再挿入することができる。
【0051】
本方法は420で終了する。
【0052】
図5は、本開示の例示的な態様による、アーカイブスライスを検査することによってバックアップアーカイブをスキャンする別の方法500を示すフローチャートである。
【0053】
本方法は、502で開始し、504に進む。
【0054】
504において、アーカイブスキャナ110は、方法400で仮想ディスクにマウントされたバックアップイメージをスキャンする。例示的な態様では、バックアップイメージまたはアーカイブイメージは、参照される可能性があるので、仮想ディスクとしてマウントされてもよく、または他の態様では、スライスを物理ディスクにリストアしてもよい。
【0055】
506において、感染したファイルが特定され、マークされる。いくつかの態様では、ファイルは、ブロックマップまたは他の方法を使用して、方法400で特定された変更されたブロックに基づいて特定される。ブロックマップは、マウントされたイメージにおけるブロックとファイルとの対応関係を示す。したがって、変更されたブロックが特定されると、アーカイブスキャナ110は、変更されたファイルを特定することができる。
【0056】
508において、マウントされたバックアップイメージに存在するマルウェアは、仮想ディスクにあるファイルに対してウイルスおよびマルウェアのスキャンを実行することによって特定される。
【0057】
510において、感染したファイルおよびマルウェアは、アーカイブスキャナ110によってディスク(例えば、仮想ディスク)のファイルシステムから除去される。いくつかの態様では、感染したファイルおよび/またはマルウェアは、仮想ディスクまたは他の場所のいずれかに隔離される。感染したファイルを仮想ディスクにおける隔離場所に移動するには、隔離場所を備える修復されたスライスを作成する必要があることに留意されたい。
【0058】
512において、アーカイブスキャナ110によって、仮想ディスクを新しいスライスとしてエクスポートすることによって、感染したファイルおよびマルウェアを除外して新しいスライスが作成される。新しいスライスは、新しい仮想ディスク、もしくは仮想ディスク122などの別の位置、または図2に示すようにクラウドアーカイブ130(例えば、最新のスライス202)に格納される。
【0059】
514において、アーカイブスキャナは、バックアップアーカイブ(例えば、アーカイブ108)内の最新のスライスのトップに、新たに作成された修復されたスライスを追加する。いくつかの代替の態様では、新たに作成されたスライスは、最新のスライスまたは感染したスライスを置き換えてもよい。
【0060】
本方法は520で終了する。
【0061】
図6は、空のスパースファイルを使用してマルウェアについてアーカイブスライスを検査する方法600を示すフローチャートである。602において、第1の時点でのデータ状態を反映するバックアップスライスが生成され、バックアップスライスはバックアップアーカイブ(例えば、アーカイブ130および/またはアーカイブ200)に格納される。604において、仮想ボリュームドライバ304は、バックアップスライス内のファイルのリストおよび関連付けられたファイル情報を備える仮想ボリュームを生成し、仮想ボリュームは、ファイルのリストにおいて参照されるファイルを格納しない。606において、アーカイブマウントサービス112は、仮想ボリュームをディスク120にマウントする。608において、HSMアーカイブファイルシステムフィルタドライバ302は、仮想ボリューム内に、ファイルのリストにおけるファイル参照のプレースホルダである空のスパースファイル306を作成する。
【0062】
ファイルのリストにN個のファイルがあるとする。610において、アーカイブAPI114は、それぞれの空のスパースファイルを特定する。612において、アーカイブAPI114は、それぞれの空のスパースファイルと、別のバックアップスライス内の対応するファイルであって、第2の時点のデータ状態を反映するファイルとの間に変更がある場所を検出する。例えば、アーカイブAPI114は、それぞれの空のスパースファイルに関連付けられたファイル情報と、別のバックアップスライス内の対応するファイルに関連付けられたファイル情報とを比較してもよい(例えば、名前、サイズ、メタデータなどを比較する)。
【0063】
それぞれの空のスパースファイルと対応するファイルとの間の変更を検出したことに応じて、方法600は、614に進み、ドライバ302は、バックアップスライスから、それぞれの空のスパースファイルに関連付けられたコンテンツを取得する。616において、ドライバ302は、それぞれの空のスパースファイルの代わりにコンテンツを仮想ボリュームに格納する。
【0064】
次に、方法600は618に進み、アーカイブAPI114は、リストから、考慮すべき他の空のスパースファイルがあるか否かを判定する(すなわち、リスト内のすべてのファイルが変更についてチェックされる)。考慮すべきスパースファイルがまだ残っている場合、方法600は610に戻り、次のスパースファイルが特定される。そうでない場合、方法600は620に進み、アーカイブスキャナ110は、仮想ボリュームをウイルスおよび/または悪意のあるソフトウェアについてスキャンする。
【0065】
622において、アーカイブスキャナ110は、ウイルスおよび/または悪意のあるソフトウェアに感染した仮想ボリューム内に少なくとも1つのファイルがあるか否かを判定する。感染したファイルがない場合、方法600は626で終了する。しかしながら、仮想ボリューム内の少なくとも1つのファイルがウイルスおよび/または悪意のあるソフトウェアに感染していることを検出したことに応じて、624において、アーカイブスキャナ110は、バックアップアーカイブ内のバックアップスライスを置き換える、修復されたスライスを生成する。
【0066】
図7は、アーカイブスライスを検査することによってバックアップアーカイブをスキャンするシステムおよび方法の態様を、例示的な態様に従って実装する場合があるコンピュータシステム20を示すブロック図である。コンピュータシステム20は、前述したシステム100の任意の構成要素に対応することができることに留意されたい。コンピュータシステム20は、複数のコンピューティングデバイスの形態、または単一のコンピューティングデバイス、例えば、デスクトップコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、スマートフォン、タブレットコンピュータ、サーバ、メインフレーム、組み込みデバイス、および他の形態のコンピューティングデバイスの形態をとることができる。
【0067】
図示したように、コンピュータシステム20は、中央処理装置(CPU)21と、システムメモリ22と、中央処理装置21に関連付けられたメモリを含む様々なシステム構成要素を接続するシステムバス23とを含む。システムバス23は、バスメモリまたはバスメモリコントローラと、周辺バスと、任意の他のバスアーキテクチャと相互作用する場合があるローカルバスとを備えてもよい。バスの例は、PCI、ISA、PCI-EXpress、HyperTransport(商標)、InfiniBand(商標)、SerialATA、IC、および他の適切な相互接続を含んでいてもよい。中央処理装置21(プロセッサとも呼ばれる)は、単一または複数のコアを有する単一または複数のプロセッサセットを含むことができる。プロセッサ21は、本開示の技術を実装する1つ以上のコンピュータ実行可能コードを実行してもよい。システムメモリ22は、本明細書で使用されるデータおよび/またはプロセッサ21によって実行可能なコンピュータプログラムを格納するための任意のメモリであってもよい。システムメモリ22は、ランダムアクセスメモリ(RAM)25などの揮発性メモリ、および読み取り専用メモリ(ROM)24、フラッシュメモリなどの不揮発性メモリ、またはそれらの任意の組み合わせを含んでいてもよい。基本入出力システム(BIOS)26は、ROM24を使用してオペレーティングシステムをロードするときの手順など、コンピュータシステム20の要素間で情報を移すための基本手順を格納してもよい。
【0068】
コンピュータシステム20は、1つ以上の着脱式ストレージデバイス27、1つ以上の非着脱式ストレージデバイス28、またはこれらの組み合わせなどの1つ以上のストレージデバイスを含んでもよい。1つ以上の着脱式ストレージデバイス27および非着脱式ストレージデバイス28は、ストレージインターフェース32を介してシステムバス23に接続される。一態様において、ストレージデバイスおよび対応するコンピュータ可読ストレージ媒体は、コンピュータシステム20のコンピュータ命令、データ構造、プログラムモジュール、および他のデータを保存するための、電力に依存しないモジュールである。システムメモリ22、着脱式ストレージデバイス27、および非着脱式ストレージデバイス28は、様々なコンピュータ可読ストレージ媒体を使用してもよい。コンピュータ可読ストレージ媒体の例には、キャッシュ、SRAM、DRAM、ゼロコンデンサRAM、ツイントランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM、SONOS、PRAMなどのマシンメモリと、フラッシュメモリまたはソリッドステートドライブ(SSD)もしくはフラッシュドライブなどの他のメモリ技術と、磁気カセット、磁気テープ、およびハードディスクドライブまたはフロッピーディスクなどの磁気ディスクストレージと、コンパクトディスク(CD-ROM)またはデジタル多用途ディスク(DVD)などの光学ストレージと、所望のデータを格納するために使用してもよく、コンピュータシステム20によってアクセスすることができる任意の他の媒体とが含まれる。
【0069】
コンピュータシステム20の、システムメモリ22、着脱式ストレージデバイス27、および非着脱式ストレージデバイス28は、オペレーティングシステム35、追加プログラムアプリケーション37、他のプログラムモジュール38、およびプログラムデータ39を格納するために使用してもよい。コンピュータシステム20は、キーボード、マウス、スタイラス、ゲームコントローラ、音声入力デバイス、タッチ入力デバイス、またはプリンタもしくはスキャナなどの他の周辺機器などの入力装置40から、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB)、または他の周辺インターフェースなどの1つ以上のI/Oポートを介して、データを通信するための周辺機器インターフェース46を含んでもよい。1つ以上のモニタ、プロジェクタ、または統合ディスプレイなどのディスプレイデバイス47は、ビデオアダプタなどの出力インターフェース48を介してシステムバス23に接続してもよい。ディスプレイデバイス47に加えて、コンピュータシステム20は、スピーカおよび他の視聴覚デバイスなどの他の周辺出力デバイス(不図示)を備えてもよい。
【0070】
コンピュータシステム20は、1つ以上のリモートコンピュータ49へのネットワーク接続を使用して、ネットワーク環境で動作する場合がある。リモートコンピュータ(または複数のリモートコンピュータ)49は、コンピュータシステム20の性質を説明する際に上述した要素のほとんどもしくはすべてを備えるローカルコンピュータワークステーションまたはサーバであってもよい。ルータ、ネットワークステーション、ピアデバイス、または他のネットワークノードなどであるが、これらに限定されない他のデバイスもコンピュータネットワーク内に存在してもよい。コンピュータシステム20は、ローカルエリアコンピュータネットワーク(LAN)50、ワイドエリアコンピュータネットワーク(WAN)、イントラネット、およびインターネットなどの1つ以上のネットワークを介してリモートコンピュータ49と通信するための、1つ以上の、ネットワークインターフェース51またはネットワークアダプタを含んでもよい。ネットワークインターフェース51の例には、イーサネットインターフェース、フレームリレーインターフェース、SONETインターフェース、および無線インターフェースが含まれる場合がある。
【0071】
本開示の態様は、システム、方法、および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数のコンピュータ可読ストレージ媒体)を含んでもよい。
【0072】
コンピュータ可読ストレージ媒体は、コンピュータシステム20などのコンピューティングデバイスのプロセッサによってアクセスすることができる命令またはデータ構造の形態のプログラムコードを保持および格納することができるタンジブルデバイスとすることができる。コンピュータ可読ストレージ媒体は、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、またはそれらの任意の適切な組み合わせであってもよい。例として、そのようなコンピュータ可読ストレージ媒体は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、EEPROM、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、ハードディスク、ポータブルコンピュータディスケット、メモリスティック、またはフロッピーディスクを備えることができ、さらには命令が記録されたパンチカードもしくは溝内の隆起構造などの機械的にエンコードされたデバイスを備えることもできる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波路もしくは伝送媒体を伝搬する電磁波、または導線を介して伝送される電気信号などの一時的な信号自体と解釈されるべきではない。
【0073】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティングデバイスにダウンロードすることができ、あるいはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークを介して、外部コンピュータまたは外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを備えてもよい。各コンピューティングデバイス内のネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティングデバイス内のコンピュータ可読ストレージ媒体に保存するためにコンピュータ可読プログラム命令を転送する。
【0074】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブリ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはオブジェクト指向プログラミング言語および従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで記述された、ソースコードもしくはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータで完全に実行されてもよいし、スタンドアロンのソフトウェアパッケージとして、一部がユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモートコンピュータで実行されてもよいし、またはリモートコンピュータもしくはサーバで完全に実行されてもよい。後者のシナリオでは、リモートコンピュータは、LANもしくはWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続されてもよく、または外部コンピュータに(例えば、インターネットを介して)接続されてもよい。いくつかの態様では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行してもよい。
【0075】
様々な態様において、本開示に記載されたシステムおよび方法は、モジュールの言葉で対応することができる。本明細書で使用される「モジュール」という用語は、例えばアプリケーション固有の集積回路(ASIC)もしくはFPGAなどによるハードウェアを使用して、またはマイクロプロセッサシステムおよび命令セットであって(実行中に)マイクロプロセッサシステムを専用デバイスに変えるモジュールの機能を実装する命令セットなどのハードウェアとソフトウェアとの組み合わせとして実装される、現実世界のデバイス、構成要素、または構成要素の配置を指す。モジュールはまた、2つの組み合わせとして実装されてもよく、特定の機能はハードウェアのみによって容易にされ、他の機能はハードウェアとソフトウェアの組み合わせによって容易にされる。特定の実装形態では、モジュールの少なくとも一部、場合によっては全部を、コンピュータシステム(例えば、図6でより詳細に説明されているもの)のプロセッサにおいて実行する場合がある。したがって、各モジュールは、様々な適切な構成で実現されてもよく、本明細書に例示された特定の実装形態に限定されるべきではない。
【0076】
明確化のため、上記態様のすべてのルーチン機能が本明細書に開示されているわけではない。本開示の、いかなる実際の実装形態の開発においても、開発者の特定の目標を達成するために、実装形態に特有の多数の決定を行わなければならず、これらの特定の目標は、実装形態ごとおよび開発者ごとに異なることが理解されよう。そのような開発努力は複雑で時間がかかるかもしれないが、それでも、本開示の利益を有する当業者にとってはエンジニアリングのルーチン仕事であることが理解される。
【0077】
さらに、本明細書で使用される表現または用語は、限定ではなく説明を目的とするものであり、本明細書の用語または表現は、当業者の知識と組み合わせて、本明細書に提示される教示および案内に照らして当業者によって解釈されるべきであることを理解されたい。さらに、本明細書または請求項のいかなる用語も、そのように明示的に記載されていない限り、一般的でない意味、すなわち特別な意味とみなされることを意図しない。
【0078】
本明細書で開示される様々な態様は、例示として本明細書で参照される既知のモジュールに対する、現在知られている均等物および将来知られる均等物を包含する。さらに、態様および用途を図示し説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの変更形態が可能であることは、本開示の利益を有する当業者には明らかであろう。
図1
図2
図3
図4
図5
図6
図7
【外国語明細書】