(57)【要約】コンピュータシステム内に存在する暗号化されたコンピュータウイルスを駆除する方法が、暗号化データにおける少なくとも１個の最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、最も頻繁に発生する暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算し、且つ暗号化データをオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読する、ことを包含している。
2005527873.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム内に存在するコンピュータウイルスを検知し且つ駆除する方法において、
コンピュータシステムをコンピュータウイルスに関してスキャンし、
コンピュータシステムにおいて検知されたコンピュータウイルスを駆除するために暗号化データを解読すべきか否かを決定し、
暗号化データを解読すべきことが決定される場合に、暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、
最も頻繁に発生する暗号化バイトが暗号化データの他のバイトの中で統計的に支配的である支配的な暗号化バイトであることを確認し、
支配的な暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算し、
コンピュータウイルスによる暗号化の前にコンピュータシステム内に存在していたオリジナルデータへ暗号化データを回復させるために暗号化キーを使用して暗号化データを解読する、
ことを包含している方法。
【請求項２】
請求項１において、更に、コンピュータシステム内のコンピュータウイルスを検知し且つ駆除する付加的な処理を適用することを包含している方法。
【請求項３】
請求項２において、付加的な処理を適用する前記ステップが、回復されたオリジナルデータに対して付加的な処理を適用する方法。
【請求項４】
請求項２において、付加的な処理を適用する前記ステップが、前記スキャンステップがコンピュータウイルスを検知しない場合に適用される方法。
【請求項５】
請求項２において、付加的な処理を適用する前記ステップが、前記決定するステップが暗号化データを解読することが実施されるべきでないことを決定する場合に適用される方法。
【請求項６】
請求項２において、付加的な処理を適用する前記ステップが、前記確認するステップが最も頻繁に発生する暗号化バイトが支配的な暗号化バイトでないことを表わす場合に適用される方法。
【請求項７】
請求項１において、前記対応する予測されたオリジナルバイトが、オリジナルデータにおいて最も頻繁に発生することが予測されるオリジナルデータのバイトである方法。
【請求項８】
請求項７において、前記暗号化キーが、前記支配的な暗号化バイトと前記対応する予測されたオリジナルバイトとの間の既知の関係に基づいて決定され、その場合に前記既知の関係はコンピュータウイルスにより使用された暗号化方法により定義される方法。
【請求項９】
請求項８において、前記解読するステップが、前記暗号化キー及び暗号化データを前記暗号化方法のものと反対の解読方法に適用することにより実施される方法。
【請求項１０】
コンピュータシステムにおけるコンピュータウイルスを検知し且つ駆除するシステムにおいて、
コンピュータシステムをコンピュータウイルスについてスキャンすべく適用されているスキャニング装置、
コンピュータシステムにおける暗号化データの解読がコンピュータウイルスが検知された後に実施されるべきであるか否かを決定すべく適合されている解読制御装置、
暗号化データを解読すべきであることが決定される場合に暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析すべき適合されている暗号化バイト処理装置、
最も頻繁に発生する暗号化バイトが暗号化データにおいて統計的に支配的である支配的な暗号化バイトであるか否かを決定すべく適合されている支配的バイト制御器、
支配的暗号化バイト及びオリジナルデータの対応する予測されたオリジナルバイトに基づいて暗号化キーを計算すべく適合されている暗号化キー計算装置、
コンピュータウイルスによる暗号化の前にコンピュータシステム内に存在していたオリジナルデータへ暗号化データを回復させるために暗号化キーに基づいて暗号化データの各バイトを解読すべく適合されている解読装置、
を有しているシステム。
【請求項１１】
請求項１０において、更に、コンピュータウイルスを検知し且つ駆除するための付加的な処理を実施すべく適合されている付加的処理装置を有しているシステム。
【請求項１２】
請求項１１において、前記付加的処理装置が回復されたオリジナルデータに関して付加的な処理を実施するシステム。
【請求項１３】
請求項１１において、前記付加的処理装置が、コンピュータウイルスが前記スキャニング装置により検知されない場合に付加的な処理を実施するシステム。
【請求項１４】
請求項１１において、前記付加的処理装置が、前記解読制御装置が暗号化データの解読が実施されるべきでないことを表わす場合に前記付加的な処理を実施するシステム。
【請求項１５】
請求項１０において、前記付加的処理装置が、前記支配的バイト制御器が前記最も頻繁に発生する暗号化バイトが前記支配的暗号化バイトでないことを決定する場合に付加的な処理を実施するシステム。
【請求項１６】
請求項１０において、前記対応する予測されたオリジナルバイトが、コンピュータウイルスによる暗号化の前にコンピュータシステム内に存在していたオリジナルデータにおいて最も頻繁に発生することが予測されるオリジナルデータのバイトであるシステム。
【請求項１７】
請求項１０において、前記暗号化バイト解析装置が、暗号化データにおける少なくとも１個の最も頻繁に発生する暗号化バイトを決定するために暗号化データの各バイトの発生をカウントするシステム。
【請求項１８】
請求項１０において、前記暗号化キー計算装置が、既知の関係に従って前記支配的暗号化バイトを前記対応する予測されたオリジナルバイトと比較し且つ前記既知の関係を使用して暗号化キーを計算するシステム。
【請求項１９】
請求項１８において、前記既知の関係がデータを暗号化するためにコンピュータウイルスにより使用された暗号化方法に基づいているシステム。
【請求項２０】
請求項１０において、前記解読装置がデータを暗号化させるためにコンピュータウイルスにより使用された暗号化方法と反対の解読方法及び前記暗号化キーに基づいてオリジナルデータを回復させるために暗号化データの各バイトを解読するシステム。
【請求項２１】
コンピュータにより実行可能なコードを実現しておりコンピュータシステムにより読取り可能なプログラム格納媒体において、
コンピュータシステムをコンピュータウイルスについてスキャニングするコード、
コンピュータシステムにおいて検知されたコンピュータウイルスを駆除するために暗号化データを解読すべきか否かを決定するコード、
暗号化データを解読すべきであることが決定される場合に暗号化データにおいて少なくとも１個の最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析するコード、
最も頻繁に発生する暗号化バイトが暗号化データの他のバイトの中で統計的に支配的なものである支配的な暗号化バイトであることを確認するコード、
支配的な暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算するコード、
コンピュータウイルスによる暗号化の前にコンピュータシステム内に存在していたオリジナルデータへ暗号化データを回復させるために暗号化キーを使用して暗号化データを解読するコード、
を有しているプログラム格納媒体。
【請求項２２】
コンピュータウイルスに感染しているコンピュータシステムにおける暗号化データを解読する方法において、
暗号化データを解読すべきか否かを決定し、
暗号化データが解読されるべきであることが決定される場合に暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、
最も頻繁に発生する暗号化バイトが暗号化データの他のバイトの中で統計的に支配的なものである支配的な暗号化バイトであることを確認し、
支配的な暗号化バイト、オリジナルデータの対応する予測されたオリジナルバイト及びそれらの間の既知の関係に基づいて暗号化キーを計算し、
暗号化前にコンピュータシステム内に存在していたオリジナルデータへ暗号化データを回復させるために暗号化キーを使用して暗号化データを解読する、
ことを包含している方法。
【請求項２３】
コンピュータシステム内に存在する暗号化されているコンピュータウイルスを駆除する方法において、
暗号化データを解析して暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定し、
最も頻繁に発生する暗号化バイト及びオリジナルデータの対応する予測されたオリジナルバイトに基づいて暗号化キーを計算し、
暗号化データをオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読する、
ことを包含している方法。
【請求項２４】
請求項２３において、更に、最も頻繁に発生する暗号化バイトが支配的な暗号化バイトであることを確認することを包含しており、前記支配的な暗号化バイトが暗号化データの他のバイトの中で統計的に支配的である方法。
【請求項２５】
コンピュータシステムにおけるコンピュータウイルスを検知し且つ駆除するシステムにおいて、
暗号化データにおいて少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析すべき適合されている暗号化バイト処理装置、
最も頻繁に発生する暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算すべく適合されている暗号化キー計算装置、
暗号化データをオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読すべく適合されている解読装置、
を有しているシステム。
【請求項２６】
請求項２５において、更に、最も頻繁に発生する暗号化バイトが支配的な暗号化バイトであるか否かを決定すべく適合されている支配的バイト制御器を有しており、支配的な暗号化バイトは暗号化データにおいて統計的に支配的であるシステム。
【請求項２７】
コンピュータによって実行可能なコードを実現しておりコンピュータシステムにより読取可能なプログラム格納媒体において、
暗号化データにおいて少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析するコード、
最も頻繁に発生する暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算するコード、
暗号化データをオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読するコード、
を有しているプログラム格納媒体。
【請求項２８】
請求項２７において、更に、最も頻繁に発生する暗号化バイトが支配的な暗号化バイトであることを確認するコードを有しており、前記支配的な暗号化バイトが暗号化データの他のバイトの中で統計的に支配的なものであるプログラム格納媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアンチウイルス即ちウイルス対策システムに関するものであって、更に詳細には、ウイルス除去システムに関するものである。
【背景技術】
【０００２】
コンピュータウイルスは最近のコンピュータ技術における主要な問題である。例えば、コンピュータウイルスは、他のプログラム及び／又はオブジェクトへ取り付くことが可能であり、それ自身複製することが可能であり、及び／又はコンピュータシステムに関して要求されていないか又は害悪のある動作を実施する場合のあるプログラム（又は何等かの単位のコード、例えばコードブロック、コード要素又はコードセグメント等のコンピュータが応答する命令）である場合がある。以下においてはコンピュータウイルスに関して説明するが、本発明はコンピュータ資源の１つ又はそれ以上の部分を修正することが可能な任意のタイプの悪意的なコードに対して適用することが可能である。
【０００３】
アンチウイルス即ちウイルス対策システムは、好適には、ウイルスを見つけ出すか又は検知し、次いで影響を受けたファイル、メモリ、ブートセクター等を回復させる。検知及び回復を複雑なものとさせるためにウイルスが使用する技術のうちの１つは、アンチウイルスシステムがそれを解読し且つファイルを回復させることをより困難なものとさせるようにウイルス本体又は感染されるファイルの一部を暗号化させることである。このことは、ファイルを回復させるために、アンチウイルスシステムが感染プロセスを検知し且つ逆戻りさせることをより困難なものとさせる。
【０００４】
幾つかのウイルスにより実施される暗号化は、ウイルスコード又は被害を受けるファイルデータに関して実施される複雑な数学的又は論理的演算が関与する場合があり、それにより視覚的に読取不可能なウイルスコードが発生され、従って内部のウイルスコードを解析し且つ識別することが困難であり且つ時折不可能なものとなる。
【０００５】
更に、暗号化は１つの感染されたサンプルから別のものへ変化する場合がある何等かの数値的なキーに依存する場合があるので、ウイルス本体を識別するためにはパターンマッチングでは充分でない場合がある。アンチウイルスエンジンは、それが既知のウイルスのデータベースに対してそれをマッチさせるか又はその他の態様でそれを解析することが可能である前に、最初に、ウイルスを解読することが可能であるべきである。
【０００６】
その意図された目的を実施するために、ウイルス自身は、それを使用することが可能であるようにコード又はデータの暗号化したエリアを解読することが可能であるべきである。アンチウイルスシステムは、時折、解読を行うために使用されるウイルスコードの部分を解析することが可能である。アンチウイルスシステムは、ウイルス自身が暗号化したエリアを解読するために使用するのと同一の解読アルゴリズムを使用することが可能であり、従ってアンチウイルスシステムは継続してウイルスファイルを更に解析することが可能である。このことは、時折、ウイルスが行う可能性のある悪意のある作用を実際のコンピュータ上で実施させることを可能とするものではなく、例えば、アンチウイルスシステムにより模倣される「仮想マシン」上においてのみ行わせることを可能とする非常に安全な環境においてウイルス本体をエミュレートすることにより行うことが可能である。
【０００７】
暗号化技術は、オリジナルのコード又はデータを読取不可能な暗号化した状態へ変換させるために使用されるキー即ち鍵を使用する。このキーは、通常、何等かの整数又は実数であるが、キャラクターの何等かのストリングである場合もある。このキーはデータを暗号化するために使用され且つ暗号化されているデータを解読するためにウイルスによって使用される場合があり、そうでなければ、そのデータはウイルスにとって使用価値のないものである。
【０００８】
通常、ウイルスは感染されたファイル内のどこかにキーを格納する。このような場合には、アンチウイルスシステムは感染されているファイルからそれを検索し且つそれを使用してウイルスにより暗号化されたデータの必要な部分を解読することが可能である場合がある。
【０００９】
新たなタイプの破壊的なウイルスが常に出現している。例えば、Ｗｉｎ３２／Ｍａｇｉｓｔｒ．Ｂ．Ｗｏｒｍと呼ばれるウイルスが出現している。このウイルスは、比較的容易に検知可能なものであるが、除去することが困難な場合がある。このタイプのウイルスはホストファイルのエントリポイントコードの一部を暗号化させる。このタイプのウイルスを効果的に除去し且つコードを回復させるためには、このコードの解読を行うべきである。然しながら、このタイプのウイルスの場合には、暗号化用のキーは、幾つかのウイルスが行うように、ウイルス本体の内部に格納されるものではない。その代わりに、このタイプのウイルスに対する暗号化キーは、ウインドウズオペレーティングシステムにおけるマシンの名前を使用して計算される。感染されているファイルを別のマシンへコピーする場合に、感染されているマシンの名前が不知である場合にそのキーを検索し且つそのコードを解読することは非常に困難である。
【００１０】
従って、Ｗｉｎ３２／Ｍａｇｉｓｔｒ．Ｂウイルス等のウイルスは、例えば、異なる態様で暗号化技術を使用する。ウイルス自身の本体を暗号化すると共に、検知を複雑化させるために、ウイルスは、更に、オリジナルのファイルの一部を暗号化させて回復を複雑化させ、キーとしてコンピュータの名前を使用する場合がある。アンチウイルスシステムは、ファイルをその感染前の状態へ完全に回復させるためにオリジナルファイルのその部分を解読することが可能であるべきである。
【００１１】
より詳細に説明すると、上述したように、ウイルスは、時折、ファイルの暗号化した部分を暗号化するために使用したキーを同一の感染されたファイル内に格納する。然しながら、Ｗｉｎ３２／Ｍａｇｉｓｔｒ．Ｂウイルス等のウイルスは、例えば、暗号化キーをそのファイル内に格納するものではなく、その代わりに、例えば、暗号化キーとしてシステム自身からそれを検索する「コンピュータネーム」を使用する。このことはコンピュータの名前が変化しないことに依存しており、従って、それは与えられたマシンに対して一定であり、且つそのマシン上で感染したファイルにおけるデータを解読するために安全に使用することが可能である。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
問題であることは、アンチウイルスシステムがこのような感染されたファイルを回復（且つ従って一部を解読）することが必要である場合に、それも又キーを獲得し且つデータの暗号化された部分を回復するためにそれを解読することが可能であるようにファイルが感染されたマシンのコンピュータの名前をアクセスすることが必要であるということである。然しながら、キーを検索し且つそれを使用することは非常に危険であり且つ常に可能なものではない。何故ならば、アンチウイルスシステムがネットワーク上のファイルをスキャンする場合に、アンチウイルスシステムプログラム自身は感染されているワークステーションマシン自身の上ではなく異なるマシン（例えば、ネットワークサーバー）上に位置されている場合があるからである。従って、アンチウイルスシステムは感染されているマシンのコンピュータの名前を常に信頼性を持って検索することが可能なものではない。
【００１３】
別の問題は、感染されているファイルが感染されているマシンから取り出される場合（例えば、解析のためにアンチウイルスチームへ送られるか、又は感染されているマシンンに関するユーザによりコンピュータの名前が変更されている）、オリジナルのコンピュータの名前を決定することが不可能である場合があるということである。
【課題を解決するための手段】
【００１４】
コンピュータシステム内に存在する暗号化されているコンピュータウイルスを駆除する方法、システム及びコンピュータコードが開示され、且つ暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、最も頻繁に発生する暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算し、且つ暗号化データをオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読することを包含している。
【００１５】
コンピュータシステム内に存在するコンピュータウイルスを検知し且つ駆除する方法は、コンピュータシステムをコンピュータウイルスについてスキャンし、コンピュータシステムにおいて検知されたコンピュータウイルスを駆除するために暗号化データを解読すべきか否かを決定し、暗号化データを解読すべきことが決定される場合に暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、最も頻繁に発生する暗号化バイトが暗号化データの他のバイトの中で統計的に支配的なものである支配的な暗号化バイトであることを確認し、支配的な暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算し、且つコンピュータウイルスによる暗号化前のコンピュータシステム内に存在していたオリジナルデータへ暗号化データを回復させるために暗号化キーを使用して暗号化データを解読する、ことを包含している。
【００１６】
コンピュータシステムにおけるコンピュータウイルスを検知し且つ駆除するシステムは、コンピュータシステムをコンピュータウイルスについてスキャンすべく適合されているスキャニング装置、コンピュータウイルスが検知された後にコンピュータシステム内の暗号化データの解読を実施すべきか否かを決定すべく適合されている解読制御装置、暗号化データが解読されるべきであることが決定される場合に暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析すべき適合されている暗号化バイト処理装置、最も頻繁に発生する暗号化バイトが暗号化データにおける統計的に支配的なものである支配的な暗号化バイトであるか否かを決定すべき適合されている支配的バイト制御器、支配的な暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算すべく適合されている暗号化キー計算装置、及び暗号化データをコンピュータウイルスによる暗号化の前のコンピュータシステム内に存在していたオリジナルデータへ回復させるために暗号化キーに基づいて暗号化データの各バイトを解読すべく適合されている解読装置、を包含している。
【００１７】
コンピュータシステムにより実行可能な命令からなるプログラムを実現しコンピュータシステムにより読取可能なプログラム格納媒体が、コンピュータシステムをコンピュータウイルスについてスキャンし、コンピュータシステムにおいて検知されたコンピュータウイルスを駆除するために暗号化データを解読すべきか否かを決定し、暗号化データを解読すべきであることが決定される場合に暗号化データにおいて少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、最も頻繁に発生する暗号化バイトが暗号化データの他のバイトの中で統計的に支配的なものである支配的な暗号化バイトであることを確認し、支配的な暗号化バイト及びオリジナルデータの対応する予測されるオリジナルバイトに基づいて暗号化キーを計算し、且つ暗号化データをコンピュータウイルスによる暗号化前のコンピュータシステム内に存在していたオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読する、ことを包含している夫々の方法ステップを包含している。
【００１８】
コンピュータウイルスに感染しているコンピュータシステムにおいて暗号化データを解読する方法が、暗号化データを解読すべきか否かを決定し、暗号化データを解読すべきであることが決定される場合に暗号化データにおける少なくとも１つの最も頻繁に発生する暗号化バイトを決定するために暗号化データを解析し、最も頻繁に発生する暗号化バイトが暗号化データの他のバイトの中で統計的に支配的なものである支配的な暗号化バイトであることを確認し、支配的な暗号化バイトと、オリジナルデータの対応する予測されるオリジナルバイトと、それらの間の既知の関係とに基づいて暗号化キーを計算し、且つ暗号化データを暗号化前のコンピュータシステム内に存在していたオリジナルデータへ回復させるために暗号化キーを使用して暗号化データを解読する、ことを包含している。
【発明を実施するための最良の形態】
【００１９】
図面に例示した本発明の好適実施例を説明する場合に、説明の便宜上特定の用語を使用する。然しながら、本発明はそのように選択された特定の用語に制限されることを意図したものではなく、各特定の要素は同様の態様で動作する全ての技術的な均等物を包含することを理解すべきである。
【００２０】
本システムはウイルスに対してスキャニングし且つウイルスを検知することが可能であり、且つファイル、メモリ、ディスクブートセクター、その他のオブジェクト等において見つけた感染を回復させるためのメカニズム又は回復プロセスを包含している。
【００２１】
本システムは、好適には、コンピュータシステムのファイル、メモリ、ディスクブートセクター等をウイルスについてスキャンする。例えば、ファイル内のウイルスの存在を検知するために種々のスキャニング方法を使用することが可能である。本システムはシグナチャスキャニングを使用することが可能であり、その場合には、本システムはウイルスシグナチャ、即ちウイルスが感染したファイル内に残す独特の組の１６進数コードの存在に対してスキャンする。不知のウイルス、即ちウイルスシグナチャが未だに知られていないウイルスを検知するためにヒューリスティックスキャニングを使用することが可能である。ヒューリスティックスキャニングは、ウイルスのような挙動パターンを検知するために使用される人工知能技術に関連している。ファイル内にウイルスが存在するためにファイルの寸法が増加したか否かを決定するためにインテグリティチェッキングを使用することが可能である。更に、本システムは疑いのあるプログラムの挙動を検知するためにコール機能のようなあるプログラムの動作をモニタすることが可能である。更に、本システムは、ウイルスの存在を表わすシステムコールを検知し且つ停止させるためにプログラムシステムコールをモニタすることが可能である。幾つかのスキャニング及び検知技術について上に説明したが、本発明はこれらの技術を使用することに制限されるものではなく、ウイルス検知のための任意の技術を包含することを意図している。
【００２２】
ウイルスが検知されると、主要な懸念事項はウイルスを除去し且つそのウイルスにより為された損害を回復させることである。回復プロセスの目的は、ファイル、メモリ又はディスクブートセクター等のオブジェクトを可能な限り感染前の初期的な状態へ回復させ、従って実効的に感染されたものとして検知されたオブジェクトの感染を取除くことを試みることである。
【００２３】
回復プロセスは、本システムによりウイルスが識別されるか又は検知された後に稼動され、且つユーザは、感染されているオブジェクトをアンチウイルスシステムからの警告に対する応答としてか又はプロンプトを発生させることなしに自動的に全ての見つけられた感染されているオブジェクトを回復させるべくアンチウイルスシステムに命令を与えることにより感染されているオブジェクトを回復させることをアンチウイルスシステムに指示する。通常、このオプションはユーザ、又はシステムアドミニストレーターによって前もって選択される。
【００２４】
回復プロセスは、逐次的に実行することが可能な１組の命令から構成されている。これらの命令は、ファイルに対して種々の変更を行うことが可能であり、例えば、データのブロックをファイル内のある場所から別の場所へコピーすること、又は解読したデータを内部バッファからファイル内の種々の位置へコピーすること（例えば、ウイルスが回復プロセスにとって重要な何等かのデータを暗号化している場合）、又はウイルスコードを包含するファイルの部分をカットすること等である。
【００２５】
回復プロセス命令は、Ｃで書かれた１組の高速実行機能として実現することが可能であり、そのことは回復プロセス命令が複雑な回復プロセスを完了することを助ける。
【００２６】
上述した如く、ウイルスは、ウイルスシグナチャに基づいて検知することが可能である。この場合には、ウイルスシグナチャは各ウイルスに対して独特なものであるので、どの特定のウイルスが検知されたかを容易に識別することも可能である。ウイルスの識別が知られており、従ってそのウイルスが発生させる損害のタイプが知られているので回復プロセスは幾分簡単化される。そうでない場合には、ウイルスがどのような損害を発生させるかを決定するためにそのウイルスを解析することが必要な場合がある。
【００２７】
ウイルスは、しばしば、上述した如く、ウイルスの検知及び回復を複雑化させるために、ウイルス本体の一部及び感染されたファイルの一部を暗号化させる。例えば、Ｗｉｎ３２／Ｍａｇｉｓｔｒ．Ｂ．Ｗｏｒｍは感染されたファイルのエントリポイントコードを暗号化させ、従って感染されたファイルからウイルスを除去し且つそのウイルスによりファイルに対して行われた存在を回復することを複雑化させる。Ｗｉｎ３２／Ｍａｇｉｓｔｒ．Ｂ．Ｗｏｒｍウイルスは、更に、本システムにより検索することが可能な感染されているファイル内に暗号キーを格納するものではなく、その代わりに、暗号化キーを発生するためにコンピュータの名前を使用するという点において除去及び回復を複雑なものとさせる。このことは、例えば、ウイルス検知及び回復システムプログラムが感染されたコンピュータシステム以外のサーバー又はコンピュータ上で稼動される場合、又はウイルスがアンチウイルスチームによる解析のために送られる場合に問題を提起する。これらの両方の場合において、感染されたコンピュータのコンピュータネームはウイルス検知及び回復システムにとって使用可能なものでない場合がある。
【００２８】
アンチウイルスシステムは不知のキーにより暗号化された不知のデータが提起されるので上述した問題は解決することが不可能であるように見えるが、本システムは、非常に高い成功率で動作する確率的アルゴリズムを使用してキーを決定することが可能である。本システムは、アッセンブルしたオリジナルコードにおける幾つかのバイトの発生の確率に基づいて不知である暗号化キーを決定することが可能である。
【００２９】
該アルゴリズムは、あるシステムはウイルスにより使用されたキーを決定するために決定し且つ使用することが可能なある１つの又は複数個のフォームを具備するバイトを包含している場合があるという事実の知識に基づいている。例えば、インテルプロセッサ用の３２ビット実行可能コードは沢山の「ゼロ」（値ゼロのバイト）及び値２５５のバイトを包含している。例えば、これらの種類のバイトの百分率は非常に高い場合があり且つ全てのバイトの中で６０％を超える場合がある。更に、値ゼロのバイトは、しばしば、対となっておりそのことはこれらのバイトをより容易に検知することを可能とすることにより本システム及び方法を助ける場合もある。注意すべきことであるが、他のプロセッサの場合には、異なる値を有するバイトがウイルスにより感染されているオブジェクトのタイプに依存して最も一般的に発生するバイトの場合があり、且つ本発明はいずれか特定のプロセッサ又はオブジェクトと共に使用することに制限されるものではない。
【００３０】
本システム及び方法は、本明細書において、確率的暗号化キー推定と呼称されるシステムを使用することが可能である。ウイルスによりしばしば使用される暗号化方法は、一定のキーでデータの各バイトの論理的ＸＯＲ演算を実施することである。従って、この知識を使用して、暗号化前にゼロを包含していたバイトは暗号化後に使用したキーの値を包含している。
【００３１】
ゼロはオリジナルデータにおける最も頻繁に見られる値であるので、暗号化データにおいて、暗号化データにおける最も頻繁に見られる値はアンチウイルスシステムが探しているキーの値である。このことが真実であることの確率はゼロがオリジナルデータにおいて最も頻繁に使用されていることの確率と同一であり、そのことは非常に高い。事実上、本システムにおいては、オリジナルデータのバイトを識別するために確率的キー推定を使用する。その結果、既知の暗号化データを「既知」又はオリジナルデータの少なくとも予測されるバイトと比較することが可能であり、その場合に暗号化方法（オリジナルデータの不知の暗号化キーとの論理的ＸＯＲ演算）も既知である。従って、暗号化キーを決定することが可能であり、且つ決定されると、既知の暗号化方法に基づいて残りの暗号化データに対して適用しオリジナルデータを回復させることが可能である。
【００３２】
従って、本システムは暗号化データにおける各バイトの発生数をカウントし且つ最も頻繁に使用されるものを選択する。この例においては、これらキーである。
【００３３】
より詳細に説明すると、ＥＸＥエントリポイントコードを解析することにより、特にＥＸＥ３２ビット及びそれより高い場合に他のバイトにおけるよりもそのコードにおいてより多くの００（ゼロ）及びＦＦ（−１）バイトが存在していることが明らかとなる。何故ならば、数字はビット数と整合され且つ小さな数字はゼロ（正の数に対し）及び−１（負の数に対し）で詰められるからである。
【００３４】
暗号化のために使用された方法が既知である場合には、本システムはゼロ及び−１バイトの暗号化した値を計算し、次いでこれらの値を見つけ出すことが可能であり、且つそれにより、暗号化のために使用されたキーを計算することが可能である。
【００３５】
例えば、そのキーの値が２であり且つ暗号化方法がそのキーの値をコードにおける全てのバイトに対して加算することである場合には、ゼロであった全てのバイトは２であり（何故ならば０＋２＝２）且つ−１であった全てのバイトは１（何故ならば、−１＋２＝１）であることを意味する。このような暗号化においては、他のバイトよりもより多くの１及び２がある蓋然性が高い。従って、キーを見つけ出すことは比較的容易である。１及び２が支配的である場合には、そのキーは２であることが明らかである。何故ならば、１−Ｘ＝−１及び２−Ｘ＝０，Ｘ＝２だからである。従って、キーが見つけられる。
【００３６】
図１に示したように、開始（ステップＳ２）の後に、ＥＸＥエントリポイントが解読を必要とすることが決定される。この例においては、暗号化方法が既知であり、且つ暗号化キーは不知である（ステップＳ４）。ステップＳ６において、暗号化コードにおける最も支配的なバイトが見つけられる。次いで、支配的なバイトが他のバイトよりも統計的によりしばしば表われるか否かについての決定がなされる（ＥＸＥビットタイプ：１６，２，６４等に依存する）（ステップＳ８）。あるバイトが支配的であると仮定することが安全ではないことが統計的に決定される場合には（ステップＳ１０）、本プロセスは終了する（ステップＳ１６）。あるバイトが支配的なものであると仮定することが安全である場合には、それらが元々０及び−１であったと仮定して支配的なバイトに関しての逆暗号化方法が上述した如くに実施され（ステップＳ１２）且つそのキーが決定される。例えば、キーを決定するために、次式Ｆ（暗号化バイト、キー）＝解読されたバイト（０，−１）を使用することが可能である。次いで、そのキーを使用してコードを解読し（ステップＳ１４）且つ本プロセスが終了する（ステップＳ１６）。
【００３７】
ＸＯＲ演算が暗号化方法によって実施されるものと仮定することにより上に説明したが、本システム及び方法はそれに制限されるものではない。即ち、本システム及び方法は、暗号化方法を決定することが可能であり且つ解読を実施することが可能である任意のタイプのウイルスに対して使用することが可能である。例えば、正しい暗号化タイプ及び対応するキーが見つかるまで、種々のタイプの暗号化を仮定することが可能であり且つ本システムは各タイプの暗号化に対する有効な解読キーを決定するために使用することが可能である。更に、ゼロのバイト及び／又は２５５のバイトが支配的な場合である３２ビット実行可能コードに関して上に説明したが、本システムは、既知である任意のタイプの実行可能なコードに対して、又は充分なパーセントのバイトが特定の１つ又は複数個の既知の値であるものとして既知であることを決定することが可能である場合に実現することが可能である。
【００３８】
図１のフローチャートは、ファイル、メモリ、ディスクブートセクター等のオリジナルデータがゼロ及び−１の値のバイトによって支配されていることが既知であるという特定の場合において使用されるウイルスを駆除するために使用される方法を説明している。然しながら、本発明方法及びシステムはこのような状態に制限されるものではない。
【００３９】
図２は本発明に基づいてウイルスを検知し且つ駆除するより一般的な方法を例示している。ステップＳ２０において、コンピュータシステムはコンピュータウイルスの存在についてスキャンされる。ステップＳ２１において、ウイルスが検知された後に暗号化データが解読されるべきであることが決定される。データを解読することが必要である場合には（ステップＳ２１においてＮＯ）、更なる処理を実施することが可能である（ステップＳ２６）。そうでない場合にはステップＳ２２において、暗号化データにおける最も頻繁に発生する１つ又は複数個の暗号化バイトが決定される。ステップＳ２３において、最も頻繁に発生する１つ又は複数個の暗号化バイトが支配的な暗号化バイトであるか否かが決定され、その場合に、支配的な暗号化バイトは暗号化データの中における統計的に支配的なものである。１つ又は複数個の支配的な暗号化バイトが決定されない場合には、更なる処理を実施することが可能である（ステップＳ２６）。１つ又は複数個の支配的なバイト及びオリジナルデータの対応する予測される１つ又は複数個のオリジナルバイトに基づいて暗号化キーが計算される（ステップＳ２４）。次いで、既知の関係及び暗号化キーを使用して暗号化データの各バイトを解読するために暗号化キーを使用し、暗号化データをオリジナルデータへ回復させる（ステップＳ２５）。次いで、回復されたオリジナルデータは更なる処理のために使用することが可能である（ステップＳ２６）。
【００４０】
スキャニングステップ、ステップＳ２０において、上述したスキャニングステップのうちのいずれかを使用してコンピュータシステムのファイル、メモリ、ディスクブートセクターにおけるウイルスの存在を検知することが可能である。このスキャニングステップにおいてウイルスが検知されない場合には、付加的な処理を適用することが可能である（ステップＳ２６）。
【００４１】
決定ステップＳ２１において、暗号化データを解読すべきか否かの決定がなされる。例えば、ステップＳ２０においてウイルスが検知されるが、そのウイルスは回復するために解読をすることを必要とすることのない既知のウイルスである場合には、暗号化データの解読は必要ではない。解読が必要ではない場合には（ステップＳ２１においてＮＯ）、更なる処理を実施することが可能である（ステップＳ２６）。この更なる処理については以下に更に説明する。暗号化データの解読が所望される場合には（ステップＳ２１においてＹＥＳ）、暗号化データをステップＳ２２において解析する。
【００４２】
ステップＳ２２において、暗号化データを解析して暗号化データの最も頻繁に発生する１つ又は複数個のバイトを識別する。最も簡単には、このことは、暗号化データの各バイトの発生をカウントすることにより達成される。即ち、暗号化データにおける特定のバイトの各発生がカウントされる。次いで、暗号化データの最も頻繁に発生する１個又は複数個のバイトが決定される。
【００４３】
ステップＳ２３において、最も頻繁に発生する１個又は複数個の暗号化バイトが支配的な暗号化バイトであるか否かの決定がなされる。即ち、例えば、暗号化データの各バイトのカウントに基づいて、最も頻繁に発生する１個又は複数個の暗号化バイトが暗号化データを統計的に支配するために暗号化データの充分なるパーセントを画定するか否かが決定される。支配的な１つ又は複数個の暗号化バイトが見つからない場合には（ステップＳ２３においてＮＯ）、更なる処理を実施することが可能である（ステップＳ２６）。このような状態において、確率的暗号化キー推定は信頼性のある暗号化キーを与えるものでない場合がある。何故ならば、支配的な１個又は複数個の暗号化バイトが見つかっていないからである。支配的な１個又は複数個の暗号化キーが見つかる場合には（ステップＳ２３においてＹＥＳ）、支配的な１個又は複数個の暗号化バイトをオリジナルデータの対応する予測される１個又は複数個のオリジナルバイトと比較することが可能である（ステップＳ２４）。
【００４４】
ステップＳ２４において、支配的な１個又は複数個の暗号化バイトとオリジナルデータの対応する予測される１個又は複数個のオリジナルバイトとの間の既知の関係に基づいて暗号化キーが計算される。この既知の関係は、ウイルスによって使用された暗号化方法である場合がある。支配的な１個又は複数個の暗号化バイトがオリジナルデータの対応する予測される１個又は複数個のオリジナルバイトと比較される。オリジナルデータは、通常、コンピュータウイルスによる暗号化前のファイル、メモリ、ディスクブートセクター等に存在しているデータのことを意味している。例えば、図１に示した方法において、１及び２が支配的な暗号化バイトであると決定される。ゼロ及び−１はオリジナルデータの最も支配的なバイトであると予測されるので、０及び１は対応する予測されるオリジナルバイトである。上述したように、状態に依存して、オリジナルデータにおいて異なるバイトが最も頻繁に発生することが予測される場合がある。多くのウイルスにより使用される暗号化方法は、オリジナルデータの各バイトと一定のままである暗号化キーとの論理的ＸＯＲ演算である。従って、予測されるオリジナルバイト＋暗号化キー＝暗号化データの支配的な暗号化バイトである。１つを超える支配的な暗号化バイトが存在する場合には、１つを超える対応する予測されるオリジナルバイトが存在している。然しながら、暗号化キーは一定のままであり、暗号化キーは、データの各支配的な暗号化バイト及びオリジナルデータの各対応する予測されるオリジナルバイトに対して上の式を成立させる値である。例えば、図１を参照して上述したように、支配的な暗号化バイトは１及び２である。対応する予測されるオリジナルバイトは、夫々、−１及び０であるものと予測される。暗号キーは、次式、即ち−１＋Ｘ＝１及び０＋Ｘ＝２の両方を成立させる値である。従って、上述したごとく、暗号化キーは２である。注意すべきことであるが、対応する予測されるオリジナルキーがゼロである場合には、この計算ステップは特に簡単である。何故ならば、暗号化キーは支配的な暗号化バイトだからである。暗号化キーが計算されると、暗号化データを解読することが可能である（ステップＳ２６）。
【００４５】
ステップＳ２５において、暗号化キーが既知であり且つ暗号化方法も既に既知であるので、単純に暗号化方法を逆行させ且つ暗号化データ及び暗号化キーを適用してオリジナルデータを回復させることにより暗号化データを解読することが可能である。回復されたオリジナルデータは更なる処理のために使用することが可能である（ステップＳ２６）。
【００４６】
更なる処理（ステップＳ２６）は、ウイルスの検知及び回復に対して必要な何らかのその他の処理のことを意味している。例えば、スキャニングステップにおいてウイルスが検知されない場合には（Ｓ２０）、更なる処理は別のファイル、メモリ又はディスクブートセクターをスキャニングすることを意味する場合がある。一方、更なる処理は、異なるスキャニング方法を使用してその処理を再度開始することを意味する場合がある。データを解読することが必要でない場合には（ステップＳ２１においてＮＯ）、更なる処理は、データの一部のコピー、データの一部の除去等の上述した任意の回復処理とすることが可能である。暗号化データ内に支配的な暗号化バイトが存在しない場合には（ステップＳ２３においてＮＯ）、付加的な処理は本システムの確率的暗号化キー推定の利点なしでブルートフォース方法等の何等かのその他の解読システムの適用のことを意味することが可能である。ステップＳ２５におけるオリジナルデータを回復するために暗号化データを解読した後に付加的な処理が所望される場合には、更なる処理は、ウイルスを解析すること又は回復されたオリジナルデータに関して実施されるファイル、メモリ、ディスクブートセクター等からのウイルスの除去等のその他の回復処理のことを意味する場合がある。特定の付加的な処理ステップについて上に説明したが、本発明はそれに制限されるべきものではなく付加的な処理はコンピュータウイルスの検知及び回復のための任意の処理のことを意味することが可能であることを理解すべきである。
【００４７】
本明細書に記載した方法は、コンピュータウイルスを検知し且つ回復するシステムによって実現することが可能である。コンピュータウイルスを検知し且つ回復するためのシステムを図３を参照して更に説明する。
【００４８】
コンピュータウイルス又はその他の悪意的コードの存在に対してファイル、メモリ、ブートセクター等をスキャニングするためにスキャニング装置３０が設けられている。このスキャニング装置は本明細書において上述したスキャニング方法のいずれか又は全て、又は何等かのその他の所望のスキャニング方法を実現することが可能である。ウイルスが検知されない場合には、付加的な処理装置３６がコンピュータウイルスを検知し且つ回復するための付加的な処理を適用することが可能である。付加的な処理装置３６については以下において更に詳細に説明する。
【００４９】
解読制御装置３１がファイル、メモリ、ディスクブートセクター等において検知された暗号化データを解読すべきか否かを決定し、例えば、コンピュータウイルスがスキャニング装置３０により検知されるが、コンピュータウイルスを駆除するために解読が必要とされない場合がある。解読が必要とされない場合には、付加的な処理装置３６はファイル、メモリ、ディスクブートセクター等におけるデータに対して付加的な処理を与えるべく指示することが可能である。解読が必要である場合には、暗号化データは暗号化バイト処理装置３２により解析される。
【００５０】
暗号化バイト処理装置３２は暗号化データを解析してその暗号化データにおける最も頻繁に発生する１個又は複数個のバイトを決定する。最も簡単には、暗号化バイト処理装置３２は、単に、暗号化データの各特定のバイトの各発生を加算する。最も頻繁に発生する暗号化データの特定の１個又は複数個のバイトが暗号化データにおける最も頻繁に発生する１個又は複数個の暗号化バイトである。
【００５１】
支配的バイト制御器３３が、暗号化データにおける最も頻繁に発生する１個又は複数個の暗号化バイトが支配的な暗号化バイトであるか否かを確認する。即ち、支配的バイト制御器３３は、暗号化バイト処理装置３２によって提供される最も頻繁に発生する１個又は複数個の暗号化バイトが暗号化データにおいて統計的に支配的なものであるか否かを決定する。そうである場合には、支配的な１個又は複数個の暗号化バイトを暗号化キー計算装置３４においてオリジナルデータの対応する予測される１個又は複数個のオリジナルバイトと比較させることが可能である。支配的な１個又は複数個の暗号化バイトが統計的に支配的なものでない場合には、確率的暗号化キー推定は暗号化キーを与えるものでない場合がある。次いで、暗号化データは付加的処理装置３６において付加的な処理を実施することが可能である。
【００５２】
暗号化キー計算装置３４は、暗号化データの最も支配的な１個又は複数個の暗号化バイトとオリジナルデータの対応する予測される１個又は複数個のオリジナルバイトとの間の既知の関係に基づいて暗号化キーを計算する。その既知の関係はウイルスによって使用された暗号化方法である場合がある。上述したように、ウイルスは、しばしば、オリジナルデータの各バイトと暗号化データを発生するための暗号化キーとの論理的ＸＯＲ演算を使用する。従って、予測されるオリジナルの１個又は複数個のバイト＋暗号化キー＝支配的な１個又は複数個の暗号化バイトである。この既知の関係を使用して、暗号化キー計算装置３４は暗号化キーを決定する。何故ならば、オリジナルデータの対応する予測される１個又は複数個のオリジナルバイトが既知であり且つ暗号化データの支配的な１個又は複数個の暗号化バイトが既知であるからである。上述した如く、この関係は、１個を超える支配的な暗号化バイトが存在しており且つデータの１個を超える対応する予測されるオリジナルバイトが存在している場合に暗号化キーを決定する場合に同様に有用なものである。この場合には、暗号化キーは、単純に、暗号化データの各支配的な１個又は複数個の暗号化バイト及びそれに対応する予測されるオリジナルバイトに対してこの関係を成立させる値である。
【００５３】
暗号化キーが計算されると、解読装置３５が暗号化データを解読してコンピュータウイルスによる感染前にファイル、メモリ、ディスクブートセクター等に存在していたオリジナルデータを回復させる。この解読は暗号化キー及び既知の関係を使用して達成される。より詳細に説明すると、暗号化キーは、既知の関係によって表わされる暗号化方法の反対である解読方法において使用される。このように、データの各暗号化されたバイトは、コンピュータウイルスによる暗号化の前に存在していたオリジナルデータへ回復させることが可能である。回復されたオリジナルデータは付加的処理装置３６による更なる処理を実施することが可能である。
【００５４】
付加的処理装置３６は広範囲処理オプションを提供する。例えば、スキャニング装置３０によってウイルスが検知されない場合には、更なる処理は別のファイル、メモリ又はディスクブートセクターのセクションをスキャニングすることを包含することが可能である。ウイルスが発見されたが暗号化データの解読が解読制御器３１により決定された如く必要でない場合には、付加的処理は、典型的に、例えば、感染されたファイルからのデータのコピー又はカット等の上述した回復プロセスのうちのいずれかから構成される。暗号化データの支配的な１個又は複数個の暗号化バイトが支配的バイト制御器３３によって見つからなかった場合、即ち、暗号化データにおける最も頻繁に発生する１個又は複数個の暗号化バイトが暗号化データにおいて統計的に支配的なものでない場合には、付加的な処理はいずれかその他の解読方法を包含することが可能である。より詳細に説明すると、付加的な処理は、暗号化データを解読することが可能であるように暗号化キーを決定する別の方法を包含することが可能である。暗号化データが解読装置３５により解読された後に、回復されたオリジナルデータはその動作又は何等かのその他の回復処理について学習するためにウイルスの解析等の付加的な処理を実施することが可能である。これらの特定の付加的な処理技術について言及したが、本発明は、それに制限されるものではなく、コンピュータウイルスの検知及び駆除の助けとなる任意の処理に対して付加的な処理を適用することが可能である。
【００５５】
上述した方法及びシステムは、例えば、汎用デジタルコンピュータ、パソコン（ＰＣ）又はネットワークサーバー上で実現することが可能である。本システム及び方法を実現することが可能なコンピュータシステムの１例を図４に示してある。システム４００として大略言及するコンピュータシステムは、中央処理装置（ＣＰＵ）４０２、メモリ４０４、プリンタインターフェース４０６、ディスプレイユニット４０８、ＬＡＮ（ローカルエリアネットワーク）データ伝送制御機４１０、ＬＡＮインターフェース４１２、ネットワーク制御器４１４、内部バス４１６、それに対するリンク４２２を具備するデータベース４２０、及び例えばキーボード、マウス等の１個又はそれ以上の入力装置４１８を包含することが可能である。当然、コンピュータシステム４００内にその他のコンポーネントを包含させることが可能であり且つ幾つかのコンポーネントは存在しない場合がある。システム４００は、又、システム４００内に存在するコンピュータウイルスを検知し且つ駆除するためにコンピュータウイルスを検知し且つ駆除する本システム及び方法を適用することが可能なコンピュータシステムの１例を表わしている。
【００５６】
上述したように、アンチウイルスシステムはコンピュータウイルスに対してチェックされるマシン以外のマシン上で共通的に実現される。例えば、ネットワークサーバーが、ネットワークのワークステーションの全てについてウイルスの存在についてチェックするためにアンチウイルスプログラムをランすることが可能である。一方、ネットワーク上の各ステーションは、独立的に、局所的にアンチウイルスシステムをランすることが可能である。本発明の方法及びシステムは、又、ネットワーク又はネットワーク上の個別的なワークステーションの感染を回避するために電子メールメッセージ内に存在するウイルスを検知し且つ駆除するために電子メールサーバー上で実現することが可能である。本発明はこれらの状態の全てにおいて適用可能であることが意図されている。
【００５７】
注意すべきことであるが、本明細書において記載した暗号化データを解読するために使用される確率的キー推定方法は、使用可能な駆除処理を補充するために多くの現在存在するアンチウイルスシステムにおいて使用することが可能であり、又は本明細書において記載したように独立したアンチウイルスシステムにおいて実現することが可能である。図５は本発明の１実施例に基づくコンピュータシステムにおいて暗号化データを解読する方法を例示している。本方法を開始した後に（ステップＳ５０）、暗号化データの解読が所望されるか否かが決定される（ステップＳ５２）。ステップＳ５４において、暗号化データを解析して暗号化データの最も頻繁に発生する１個又は複数個の暗号化バイトを決定する。ステップＳ５６において、最も頻繁に発生する１個又は複数個の暗号化バイトが支配的な１個又は複数個の暗号化バイトを表わすものであることを確認する。ステップ５８において、支配的な１個又は複数個の暗号化バイト及びオリジナルデータの対応する予測される１個又は複数個のオリジナルバイトに基づいて暗号化キーが計算される。ステップＳ６０において、暗号化データが暗号化キーに基づいて解読される。
【００５８】
解読が所望されない場合には（ステップＳ５２においてＮＯ）、本方法は終了することが可能である（ステップＳ６２）。最も頻繁に発生する１個又は複数個の暗号化バイトが支配的な１個又は複数個の暗号化バイトではない場合には、本方法は終了することが可能である（ステップＳ６２）。この場合には、確率的キー推定は信頼性のある暗号化キーを与えるものでない場合があり、従って、暗号化データを解読するために使用することが不可能な場合がある。注意すべきことであるが、ステップＳ６２における「終了」という用語の使用に拘わらず、このことは暗号化データに関して更なる処理が行われるものでないことを必ずしも表わすものではなく、図５に示した方法に基づいてデータを解読する方法がこの場合におけるコンピュータウイルスにより暗号化データを解読するために所望されるものでないことを表わすに過ぎない。
【００５９】
ステップＳ５０−６２は図１に関して詳細に説明した方法のより一般的な実現例を表わしており且つ上述したステップＳ３１−３７と実質的に同様のものであり、従ってそれらについて更に詳細に説明することは割愛する。
【００６０】
本発明は１つ又はそれ以上の従来の汎用デジタルコンピュータ及び／又は本明細書の記載に基づいてプログラムされたサーバーを使用して実現することが可能である。本明細書の記載に基づいて当業者によって適宜のソフトウエアコーディングを容易に調整することが可能である。本発明は、又、応用特定集積回路を調整することにより又は従来のコンポーネントの適宜のネットワークを相互接続させることにより実現することも可能である。
【００６１】
本発明の多数の付加的な修正及び変形が上述した説明に鑑み可能なものである。従って、特許請求の範囲内において、本発明は本明細書において特に説明したもの以外に態様で実施することが可能である。
【図面の簡単な説明】
【００６２】
【図１】本発明の１実施例に基づくウイルスを駆除するシステムのフローチャート。
【図２】本発明の１実施例に基づくコンピュータウイルスを検知し且つ駆除する方法のフローチャート。
【図３】本発明の１実施例に基づいてコンピュータウイルスを検知し且つ駆除するシステムを例示したブロック図。
【図４】本発明の１実施例に基づくコンピュータウイルスを検知し且つ駆除する方法及びシステムを実現することが可能なコンピュータシステムのブロック図。
【図５】本発明の１実施例に基づくコンピュータシステムにおける暗号化データを解読する方法のフローチャート。
【符号の説明】
【００６３】
３０  スキャニング装置
３１  解読制御装置
３２  暗号化バイト処理装置
３３  支配的バイト制御器
３４  暗号化キー計算装置
３５  解読装置
３６  付加的処理装置
【図１】
2005527873.tif 000003
【図２】
2005527873.tif 000004
【図３】
2005527873.tif 000005
【図４】
2005527873.tif 000006
【図５】
2005527873.tif 000007
【国際調査報告】
2005527873.tif 000008
2005527873.tif 000009
2005527873.tif 000010