(57)【要約】  本発明は、メモリ（３２、３４、３６）と処理デバイス（２４）とを有するコンピュータシステム（２０）を含む。処理デバイス（２４）は、コンピュータプログラムの１つまたは複数の命令の内容を変更し、命令内容変更の後、コンピュータプログラムをメモリ（３２、３４、３６）の中に格納する論理（５０）を含む。処理デバイス（２４）は、１つまたは複数の命令を、処理デバイス（２４）を使用して実行される前に、変更されていない内容に復元するのにさらに有効である。コンピュータプログラムの実行中における、異なるプログラムによる侵入が、実行のための異なるプログラムによる不適切な形態の命令のサブミットに基づき、コンピュータプログラムに関するこの変更／復元手続きを介して検出されることが可能である。
2007535067.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプログラムの１つまたは複数の命令の内容を変更すること（１２２、２２２）、
前記コンピュータプログラムを実行することであって、（１２８、２２８）、前記実行することは、前記１つまたは複数の命令の各々を、前記変更することの前の内容に復元すること、および前記復元することの後に、前記１つまたは複数の命令を実行することを含む、実行すること
異なるプログラムによる侵入の検出を可能にし（１３０、２３０）、前記侵入は、前記実行することの間に生じることを含む方法。
【請求項２】
前記実行すること（１２８）を、処理デバイス（２４）を使用して実行すること、および
前記変更すること（１２２）および前記復元すること（１２６）を、キー（５２ａ）に従って前記処理デバイス（２４）を使用して実行することを含む請求項１に記載の方法。
【請求項３】
命令アドレス指定に従って前記キー（５２ａ）を動的に変更することを含む請求項２に記載の方法。
【請求項４】
前記キー（５２ａ）を使用して排他論理和（５３）関数に基づいて前記命令を符号化することを含む請求項２に記載の方法。
【請求項５】
前記実行すること（２２８）を、処理デバイス（２４）を使用して実行することを含む方法であって、
前記変更すること（２２２）は、前記命令の各々に、前記処理デバイス（２４）に関して不適切なタイプの命令を入れ替えることを含み、前記復元すること（２２６）は、不適切なタイプの前記命令を、前記１つまたは複数の命令の各々に関して適切なタイプの命令で置き換えることを含む請求項１に記載の方法。
【請求項６】
不適切なタイプの前記命令は、予約済みの命令タイプまたは不正な命令タイプである請求項５に記載の方法。
【請求項７】
前記異なるプログラムが、実行のために不適切な形態の命令をサブミットすることを含む請求項１に記載の方法。
【請求項８】
処理デバイス（２４）は、前記変更すること（１２２、２２２）および前記実行すること（１２８、２２８）を実行し、前記検出は、不適切な形態の前記命令に関するプロセストラップを、前記処理デバイス（２４）を使用して実行すること（１３２、２３２）に基づく請求項７に記載の方法。
【請求項９】
前記コンピュータプログラムをメモリの中に、前記変更すること（１２２、２２２）の後に、前記実行すること（１２８、２２８）の前に格納すること（１２４、２２４）を含む請求項１に記載の方法。
【請求項１０】
前記変更すること（１２２、２２２）、前記格納すること（１２４、２２４）、および前記実行すること（１２８、２２８）は、プロセッサ（２２）を使用して実行され、前記メモリ（３６）は、前記プロセッサ（２２）に関するプログラム実行メモリである請求項９に記載の方法。
【請求項１１】
前記変更すること（１２２、２２２）および前記実行すること（１２８、２２８）は、処理デバイス（２４）によって実行され、前記変更すること（１２２、２２２）は、命令タイプを定義する前記１つまたは複数の命令の各命令の内容を変更することを含む請求項１に記載の方法。
【請求項１２】
前記変更すること（１２２、２２２）は、前記１つまたは複数の命令の各命令の内容を、第１の形態から第２の形態に変えることを含み、前記第１の形態は、処理デバイス（２４）に関する実行可能な命令群に属し、前記第２の形態の前記１つまたは複数の命令の少なくとも一部分は、前記実行可能な命令群に属さないか、または前記第１の形態とは異なる形で実行される請求項１に記載の方法。
【請求項１３】
コンピュータプログラムが格納されているデバイス（３２、３４、３６）を含む装置であって、
前記コンピュータプログラムは、プロセッサ（２２）を使用した前記コンピュータプログラムの実行中に、異なるプログラムによる侵入を検出するように、命令変換に従って変更された形態の内容を各々が有する、いくつかの命令を含み、前記変更された形態の前記命令は、前記プロセッサ（２２）による実行前に、前記命令変換を逆転させることにより、前記プロセッサ（２２）によって、変更されていない形態に復元されるために構成され、前記変更されていない形態の前記命令は各々、前記プロセッサに関する実行可能な命令群に属し、前記変更された形態の前記命令の少なくとも一部分は、前記プロセッサ（２２）に関する前記実行可能な命令群に属さず、前記命令変換および前記復元は、前記実行可能な命令群に属さない少なくとも１つの命令を、実行のために前記プロセッサ（２２）にサブミットするための、異なるプログラムによる侵入を示すように動作可能である装置。
【請求項１４】
前記デバイス（３２、３４、３６）は、前記変更された形態の前記命令を有する前記コンピュータプログラムを格納する不揮発性のファイルメモリ（３２）を含む請求項１３に記載の装置。
【請求項１５】
前記デバイス（３２、３４、３６）は、前記プロセッサ（２２）に動作上、結合されたプログラム実行メモリ（３６）を含む請求項１４に記載の装置。
【請求項１６】
前記変更された形態の前記命令は、キー（５２ａ）の関数として算出される請求項１３に記載の装置。
【請求項１７】
前記変更された形態の前記命令は、排他論理和（５３）関数に従って算出される請求項１６に記載の装置。
【請求項１８】
前記変更された形態の前記命令は、予約済みの命令タイプまたは不正な命令タイプを、前記実行可能な命令群の中に含まれる命令タイプの代わりに使用することによって与えられる請求項１３に記載の装置。
【請求項１９】
コンピュータプログラムの１つまたは複数の命令の内容を変更し、命令内容変更の後に前記コンピュータプログラムを格納するのに有効な命令変換論理（５０）を含む処理デバイス（２４）を含むコンピュータシステムであって、
前記処理デバイス（２４）は、前記命令変換論理（５０）に応答して、前記１つまたは複数の命令を、前記命令内容変更前の内容に復元する復号器（４２）をさらに含み、前記処理デバイス（２４）は、前記復号器（４２）による復元の後に、前記命令を実行し、異なるプログラムによる侵入を、前記処理デバイス（２４）による実行のための、前記異なるプログラムからの不適切な形態の命令のサブミットに基づいて示すのに有効であるシステム。
【請求項２０】
前記命令内容変更をともなう前記コンピュータプログラムを格納するのに有効なメモリ（３２、３４、３６）をさらに含む請求項１９に記載のシステム。
【請求項２１】
前記変換論理の少なくとも一部分は、１つまたは複数のレジスタ（５２）を含むハードウェアによって定義され、前記復号器（４２）は、前記１つまたは複数のレジスタ（５２）の中に格納された情報に応答して動作する請求項１９に記載のシステム。
【請求項２２】
前記情報は、前記復号器（４２）を使用して前記命令内容変更を復号化して、前記復元を実行するキー（５２ａ）を含む請求項２１に記載のシステム。
【請求項２３】
前記命令変換論理（５０）は、排他論理和（５３）関数を定義する請求項２２に記載のシステム。
【請求項２４】
前記変換論理（５０）の少なくとも一部分は、ソフトウェア命令またはファームウェア命令によって定義される請求項１９に記載のシステム。
【請求項２５】
前記異なるプログラムの前記不適切な形態の命令は、予約済みの命令フォーマットまたは無効な命令フォーマットに対応し、前記命令変換論理は、前記コンピュータプログラムの前記１つまたは複数の命令を、予約済みの命令タイプまたは無効な命令タイプと入れ替えて、前記命令内容変更をもたらすのに有効である請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、ただし、排他的にではなく、コンピュータシステムの侵入検出に関する。
【背景技術】
【０００２】
より高いネットワーク接続性のため、コンピュータシステムは、攻撃に対してますます脆弱になっている。それらの攻撃は、しばしば、オペレーティングシステムにおける、またはアプリケーションプログラムにおける欠陥を利用する。そのような侵入の一般的な目標は、システム上の従来のセキュリティ機構を崩し、侵入者の許可を超えた動作を実行することである。それらの動作には、保護されたデータ、もしくはプライベートデータを読み取ること、あるいはシステムまたはユーザファイルに、単に悪意のある損害を与えることを含めることができる。
【０００３】
従来、保護は、セキュリティを危うくするプログラムが、実行される前に、そのようなプログラムを検出することに基づいてきたが、最近の侵入者は、信頼されるプログラムが実行されている間に、攻撃することができる。このタイプの攻撃の一例は、検査されないバッファをオーバーフローさせることによって、悪意のあるコードの実行を開始する。このタイプの攻撃は、例えば、参照により全体が本明細書に組み込まれているＫｉｒｏｖｓｋｉおよびＤｒｉｎｉｃ他、Ｅｎａｂｌｉｎｇ  Ｔｒｕｓｔｅｄ  Ｓｏｆｔｗａｒｅ  Ｉｎｔｅｇｒｉｔｙ、ＳＩＧＰＬＡＮ  Ｎｏｔｉｃｅｓ、Ｖｏｌ．３７、Ｎｏ．１０、１０８〜１２０ページ（２００２年１０月）においてさらに説明されている。
【０００４】
この形態の侵入に対処しようとする１つの試みは、参照により全体が本明細書に組み込まれているＷｅｂサイト、ｗｗｗ．ｅｃｓｌ．ｃｓ．ｓｕｎｙｓｂ．ｅｄｕ／ｐａｉｄから入手可能なＰＡＩＤ：Ｐｒｏｇｒａｍ−ｓｙｍｍａｎｔｉｃｓ  Ａｗａｒｅ  Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎにおいて説明されるとおり、予期しないプログラム挙動がないか監視する。このアプローチの可能な欠点には、オペレーティングシステムを大幅に変更する必要性、および／または付随するランタイムオーバーヘッドの相当な増加が含まれる。リターンアドレスディフェンダ（ＲＡＤ）と呼ばれる別のスキームが、コンパイル時に実施され、一般に、ソースコードが利用可能なアプリケーションに限定される。このため、この技術分野におけるさらなる寄与の要求が、引き続き存在する。
【発明の開示】
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、独特の侵入検出技術である。他の諸実施形態には、コンピュータシステム侵入を検出する独特な方法、システム、デバイス、および装置が含まれる。
【０００６】
本発明のさらなる実施形態は、コンピュータプログラムの１つまたは複数の命令の内容を変更すること、ならびにコンピュータプログラムを実行する際に、その１つまたは複数の命令の各々を、その変更前における命令の内容に復元することを含む。コンピュータプログラムの実行中、異なるプログラムによる侵入が、不適切な形態である少なくとも１つの命令を実行のためにサブミットすることを介して検出されてもよい。例えば、その不適切な形態は、コンピュータプログラムを実行している１つまたは複数のプロセッサまたは処理デバイスに関して、予約済みの命令タイプまたは無効な命令タイプであってもよい。
【０００７】
本発明の別の実施形態は、いくつかの命令を含むコンピュータプログラムを格納するデバイスを含み、各命令は、プロセッサを使用したコンピュータプログラムの実行中に、異なるプログラムによる侵入を検出するように構成された命令変換に従って変更された形態の内容を有する。実行前、変更された形態の命令は、プロセッサによって、変換についての情報に基づき、変更されていない形態に復元されることが可能である。変更されていない形態の命令は各々、プロセッサに関する実行可能な命令群に属し、命令の変更された形態の少なくとも一部分は、プロセッサに関する実行可能な命令群に属さず、かつ／または予約済みのタイプまたは無効なタイプである。本明細書で使用される、「実行可能な命令」とは、処理デバイスによって実行されると、所望される動作を実行する命令フォーマットを指し、処理デバイスに関して予約済みのタイプまたは無効なタイプとして指定される、あらゆる命令を含むが、そのような命令には限定されない、処理デバイスによって不適切であるとして扱われるあらゆる命令フォーマットを除外する。
【０００８】
本発明のさらに別の実施形態は、コンピュータプログラムの１つまたは複数の命令の内容を変更し、そのような変更の後、そのコンピュータプログラムを格納する命令変換論理を有する処理デバイスを含む。処理デバイスは、その変換論理に応答して、その１つまたは複数の命令を、変更前の内容に復元する復号器をさらに含む。処理デバイスは、復号器による復元の後、それらの命令を実行して、処理デバイスによる実行のために、異なるプログラムから不適切な形態の命令がサブミットされたことに基づき、異なるプログラムによる侵入を示すのに有効である。本明細書で使用される、「論理」とは、組合せの演算および／または順次演算を広く含み、ハードウェアの形態、ソフトウェアの形態、ファームウェアの形態、または以上の形態の組合せであることが可能である。
【０００９】
さらに別の実施形態は、コンピュータプログラムの１つまたは複数の命令の内容を、変更されていない形態から変更された形態に変えて、異なるプログラムによる侵入を検出することを含む技術である。１つまたは複数の命令の各命令の変更された形態は、処理デバイスに関する実行可能な命令群に属し、その１つまたは複数の命令の少なくとも一部分の変更された形態は、その実行可能な命令群に属さない。代替的に、またはさらに、その１つまたは複数の命令の少なくとも一部分の変更された形態は、それらの命令の変更されていない形態に関連してコンピュータプログラムに意図されたとおりに実行されない。この技術は、変更された形態の１つまたは複数の命令の各々を、処理デバイスで実行する前に、変更されていない形態に復元することをさらに含む。この復元は、処理デバイスによって、コンピュータプログラムを実行する命令復号化の一環として実行されてもよい。
【００１０】
それでも、さらなる実施形態は、コンピュータプログラムの１つまたは複数の命令の内容を、変更されていない形態から変更された形態に変えて、侵入するプログラムの検出を容易にするよう、１つまたは複数のプロセッサに命令するプロセッサ実行可能情報を有するデバイスを含む。その１つまたは複数の命令の各命令の変更されていない形態は、１つまたは複数のプロセッサの実行可能な命令に属し、その１つまたは複数の命令の各命令の変更された形態は、コンピュータプログラムに意図されているとおりに実行されない。代替的に、またはさらに、その１つまたは複数の命令の各命令の変更された形態は、１つまたは複数のプロセッサに関する実行可能な命令群に属さず、例えば、予約済みの命令タイプまたは無効な命令タイプである。プロセッサ実行可能情報は、変更された形態のその１つまたは複数の命令を、実行前に、変更されていない形態に復元するよう、１つまたは複数のプロセッサに命令するのにさらに有効である。
【００１１】
本発明のさらなる実施形態、形態、態様、利益、利点、および特徴は、本明細書で提供される図および説明から明白となろう。
【発明を実施するための最良の形態】
【００１２】
本発明の諸原理の理解を促進する目的で、次に、図面に示される諸実施形態について言及が行われ、特定の言い回しを使用して、それらの実施形態が説明される。それでも、本発明の範囲の限定は、それによって意図されていないものと理解される。本発明が関係する技術分野の業者に、普通に思い浮かべられるような、説明される諸実施形態のあらゆる改変、およびさらなる変更、ならびに本明細書で説明される本発明の諸原理のあらゆるさらなる適用は、企図されている。
【００１３】
図１は、コンピュータシステム２０を示す。コンピュータシステム２０は、代替的に、処理デバイス２４と呼ばれる少なくとも１つのプロセッサ２２を含む。処理デバイス２４は、コンピュータバス２６に結合され、それに対応して、いくつかの異なるメモリデバイスに結合される。具体的には、不揮発性ファイルメモリ３２、取り外し可能なメモリデバイス３４、およびプログラム実行メモリ３６が、処理デバイス２４にバス２６を介して結合される。図示されるとおり、プログラム実行メモリ３６はまた、処理デバイス２４に対する、別の専用の接続も有する。また、バス２６は、適宜、インタフェースデバイス、ルータ、ハブ、ファイアウォールデバイス、または以上に類するものなどの、適切な機器（図示されない）によって、コンピュータネットワーク３８にも結合される。コンピュータネットワーク３８は、いくつかの例を挙げると、ローカルエリアネットワーク（ＬＡＮ）タイプ、ミューニシパル（メトロポリタン）エリアネットワーク（ＭＡＮ）タイプ、インターネットを含むワイドエリアネットワークタイプ、または以上の組合せであることが可能である。
【００１４】
処理デバイス２４は、以降、さらに説明される、命令復号器４２、復号化済み命令実行論理４４、および命令変換論理５０を含む。処理デバイス２４は、ＲＩＳＣ、ＣＩＳＣ、または他の任意の種類の、１つまたは複数のコントローラまたはプロセッサの形態であることが可能である。処理デバイス２４は、単一のユニットに一緒に組み込まれた１つまたは複数のコンポーネントから成ること、または互いに対して遠隔に配置され、ユニットの動作のために適切な形で一緒に結合された、１つまたは複数のユニットの形態で設けられることが可能である。さらに、処理デバイス２４は、電源供給装置、直接メモリアクセスコントローラ、入出力コントローラ、通信部、操作者入出力デバイス、ならびに当業者に思い浮かべられるような、以上に類するものなどの、所望されるサポートコンポーネントを含む。
【００１５】
命令復号器４２は、実行のためにサブミットされた命令に応答する、デバイス２４の処理論理の部分である。復号器４２は、多ビット命令フォーマットを、その命令に対応する所望される動作を実行するのに、復号化済み命令実行論理４４によって利用される様々な信号に、変換するように構成される。実行論理４４は、１つまたは複数の演算論理ユニット（ＡＬＵ）、通信論理ユニット、および／または様々な動作を実行するのに所望されるような他の実行論理もしくは実行論理ユニットを含んでもよいが、必ずしも含まない。複数の論理ユニットが存在する場合、それらのユニットは、当業者に思い浮かべられるような並列の形および／またはパイプラインの形で、所望される動作を実行するように構成されることが可能である。
【００１６】
不揮発性ファイルメモリ３２は、電磁ディスク形態、テープ形態、またはカートリッジ形態、フラッシュメモリなどの不揮発性メモリの電気的に再プログラミング可能なソリッドステートタイプ、あるいは当業者に思い浮かべられるような他の種類であることが可能である。取り外し可能なメモリデバイス３４は、例えば、フロッピーディスク形態、カートリッジ形態、またはテープ形態の取り外し可能な電磁記録媒体、ＣＤタイプまたはＤＶＤタイプなどの取り外し可能な光ディスク、スマートカードまたは取り外し可能なメモリカートリッジなどの電気的に再プログラミング可能なソリッドステートタイプの不揮発性メモリ、および／または当業者に思い浮かべられるような異なる種類であることが可能である。プログラム実行メモリ３６は、処理デバイス２４によって実行されることが意図されるコンピュータプログラムの命令が読み込まれるタイプである。プログラム実行メモリ３６は、通常、ランダムアクセスメモリ（ＲＡＭ）の種類の、ソリッドステートタイプの電子メモリである。代替的に、またはさらに、プログラム実行メモリ３６は、当業者に思い浮かべられるような、１つまたは複数の異なるタイプから成ることが可能である。異なる諸実施形態では、プログラム実行メモリ３６は、部分的に、または完全に、処理デバイス２４と一体化されることも、あるいはデバイス２４とは完全に別個であることも可能である。一形態では、メモリ３６には、連想キャッシュが含まれる。
【００１７】
コンピュータシステム２０の様々な動作上の態様が、次に説明される。コンピュータシステム２０は、コンパイラまたはインタプリタによる実行に適切なフォーマットに変更されているコンピュータプログラムを実行するように構成される。通常、バイナリフォーマットが、その目的で適切である。それらのコンピュータプログラムは、通常、ファイルメモリ３２または取り外し可能なメモリデバイス３４の中に最初、格納されている。しかし、実行前に、使用が意図されるコンピュータプログラムは、処理デバイス２４の指示で、プログラム実行メモリ３６の中に少なくとも部分的に読み込まれる。侵入プログラムを、コンピュータプログラムの実行中に検出するのに、デバイス２４は、デバイス２４独自の命令群を、命令変換論理５０でカスタマイズして、少なくともいくつかの命令を変更して、それらの命令が、それらの命令の、以前の変更されていない状態に復元されない限り、意図される形で実行されないようにする。
【００１８】
図２および図３をさらに参照して、コンピュータシステム２０を使用して侵入検出を実施する１つの形態が、手続き１２０に関連して説明される。手続き１２０は、動作１２２で始まる。動作１２２で、処理デバイス２４による実行が意図されるコンピュータプログラムが、選択され、そのプログラムに関する命令の少なくとも一部分が、変換される。この変換は、影響を受ける命令の内容を、変更されていない元の形態から、変更された形態に変更し、この変更は、少なくとも部分的に、処理デバイス２４の命令変換論理５０によって実行される。命令変換論理５０は、レジスタ５２を含み、レジスタ５２の１つまたは複数は、キー５２ａの形態の多ビット値に従って、命令変換を構成するのに使用される。キー５２ａは、レジスタ５２の１つまたは複数の中に格納されることが可能である。図２および図３に示されるとおり、１つの形態の命令変換は、「排他論理和（ＸＯＲ）」論理５３で実行され、論理５３は、キー５２ａのビットと、各命令の多ビット表現との間で、ビット単位の排他論理和の論理演算を実行する。論理５３による排他論理和変換のためにサブミットされた各命令は、「命令入力」５４として表され、排他論理和の結果、つまり、出力は、「命令出力」５６によって表される。排他論理和の論理関数は、バイナリのブール比較の一形態である。具体的には、排他論理和の関数は、キー５２ａの対応する位置からのバイナリ入力ビットと、比較される「命令入力」５４とが異なる（それぞれ、１と０、または０と１）場合、１のビットを出力し、それ以外の（キーと「入力命令」入力ビット位置が共に、０に等しいか、または共に、１に等しい）場合、０のビットを出力する。８ビット長の例として、１００１００１０というキー５２ａ値と、０１１０００１０という「命令入力」５４値に関して、「命令出力」５６値は、ＸＯＲ論理５３の排他論理和の演算により、１１１１００００である。当然、より多くのビット、またはより少ないビットが、当業者に思い浮かべられるように、命令、および対応するキーを定義する際に使用されることも可能である。通常、実行が意図されるプログラムの命令のすべてが、手続き１２０の動作１２２において、ＸＯＲ論理で変換される。
【００１９】
１つの好ましい形態では、キー５４ａの値は、静的であり、動作１２２における変換のためにサブミットされる各命令に関して同一に保たれる。より好ましい形態では、キーは、ときどき動的に変化する。このより好ましい形態の１つの限定的ではない実施例では、キーは、タイムシェアリングオペレーティングシステムが、いずれのプロセスを実行するためにスケジュールしたかに依存して、動的に変化する。さらにより好ましい形態では、キーは、実行のためにサブミットされる命令のアドレスと共に動的に変化する。このさらにより好ましい形態の限定的ではない一実施例では、現在、実行されている命令のアドレスが、動的キーとして利用される。また、変換論理５０は、制御／構成論理６０も含む。制御／構成論理６０は、各命令に関する変換動作１２２を導き、対応する情報および信号を適切に転送する。制御／構成論理６０は、レジスタ５２の少なくとも１つの中の情報に応答して、変換を有効／無効にし、どのようなキーソースが利用されるかを決定し、静的キーが利用されるか、または動的キーが利用されるかを決定し、命令のすべてが、変換されるか、または指定された部分だけが変換されるかを決定し、かつ／または論理５０の動作に関連して利用されるべき、他の構成、およびオプションの機能が存在するとすれば、どのような他の構成、およびオプションの機能が利用されるべきかを決定する。
【００２０】
変換に先立つ命令の元の内容は、通常、処理デバイス２４に関する実行可能な命令群に属することが理解されるべきである。しかし、ＸＯＲ論理５３を使用して変換が実行されると、命令は、通常、それらの命令の、元の変更されていない内容に復元されて戻らない限り、コンピュータプログラムに意図されているとおりに実行されない。実際、変換からもたらされる変更された命令内容は、通常、命令のすべてではないにしても、少なくとも一部を、処理デバイス２４に関して実行不可能で、かつ／または予約済みのタイプもしくは無効なタイプにする。動作１２２の実行は、変換プロセスについての十分な情報が、処理デバイス２４によって利用可能である／保持されているという条件付きで、元の変更されていない命令内容を復元するように逆転可能な変換プロセスの、デバイス２４による実施をもたらすことをさらに理解すべきである。
【００２１】
動作１２２から、手続き１２０は、動作１２４に進む。動作１２４で、論理５０を使用して変換されたコンピュータプログラムが、格納される。１つの好ましい実施形態では、動作１２２からの変更された命令内容を有するコンピュータプログラムは、動作１２４において不揮発性ファイルメモリ３２の中に格納される。より好ましい実施形態では、動作１２２からの変更された命令内容を有するコンピュータプログラムは、動作１２４において取り外し可能なメモリデバイス３４の中に格納される。さらにより好ましい実施形態では、動作１２２からもたらされる変更された命令内容を有するコンピュータプログラムは、動作１２４においてプログラム実行メモリ３６の中に少なくとも部分的に格納される。さらに他の好ましい実施形態では、変更されたコンピュータプログラムは、異なるメモリタイプ（図示されていない）の中に格納されることが可能であり、かつ／または複数のタイプのメモリの中に格納されることが可能である。不揮発性ファイルメモリ３２または取り外し可能なメモリデバイス３４の中に格納されている変換されたコンピュータプログラムは、図示される実施形態では、デバイス２４による実行のために、プログラミング可能な実行メモリ３６に、その後、少なくとも部分的に読み込まれることが理解されるべきである。
【００２２】
動作１２６に進み、コンピュータプログラムが、プログラム実行メモリ３６から実行されると、動作１２２において変更された命令の元の内容が、復元される。図３に関連して説明される命令変換論理５０の構成に関して、この復元は、排他論理和演算を繰り返すことにより、命令内容を、変換された形態から変更されていない形態に変換する。とりわけ、排他論理和演算は、同一のキー値が使用される場合、可逆である。前段で説明された８ビットの実施例の場合、キー値＝１００１００１０と変更された命令＝１１１１００００のビット単位の排他論理和は、結果＝０１１０００１０をもたらし、この結果は、元の変更されていない内容、つまり命令と同一である。動作１２６は、処理デバイス２４によって内部で、命令復号器４２を使用して実行される。
【００２３】
復元されると、命令は、復号器４２によって標準の形で復号化されることが可能であり、動作１２８において復号化済み命令実行論理４４を使用して実行される。変更されていなかった命令が存在する場合、そのような命令は、そのようなものとして認識され、復号器４２によって直接に復号化され、次いで、論理４４を使用して実行される。動作１２８から、手続き１２０は、不適切な命令実行が試みられたかどうかを試験する条件付き１３０に進む。条件付き１３０は、復号器４２、論理４４、および／または当業者に思い浮かべられるような、デバイス２４の他の論理を使用して実施されることが可能である。条件付き１３０の試験が、肯定的である場合、動作１３２は、その不適切な命令に応答してプロセストラップを実行する。通常、不適切な命令は、予約済みの形態または無効な形態であり、そのような形態は、処理デバイス２４に関する実行可能な命令タイプ群の中に入っていない。
【００２４】
動作１２２の変換は、動作１２６において逆転されるため、元のプログラムは、意図されるとおりに実行される。しかし、意図されるコンピュータプログラムの実行中に、スタックオーバランまたはバッファオーバラン、またはそれに類することを介して侵入する、または侵害する、異なるプログラムは、そのプログラムの命令の少なくとも一部が、復号化／復元動作１２６によって、不適切な命令がサブミットされるような形で変更される可能性が最も高く、そのため、動作１３２のトラップの実行によって示される。その不適切な命令は、通常、処理デバイス２４の実行可能な命令群の中に含まれない形態／内容であり、代わりに、処理デバイス２４に関して予約済みの、または無効なフォーマットである。手続き１２０は、動作１３２の後、停止し、戻る。その結果、処理デバイス２４は、所望されるような検査／走査／診断ルーチンを設けて、動作１３２のトラップが、なぜ生じたかをさらに解析し、それに応じて、異なるプログラムによる侵入を検出することができる。
【００２５】
他方、条件付き１３０の試験が、否定的であった場合、手続き１２０は、条件付き１４０に進み、条件付き１４０は、別の命令が、実行が意図されるコンピュータプログラムの一環として実行されるべきかどうかを試験する。条件付き１４０の試験が、肯定的であった場合、制御は、動作１２６に戻り、必要に応じて、次の命令を復元する。条件付き１４０の試験が、否定的であった場合、手続き１２０は、停止し、手続き１２０が、再び呼び出されるまで、通常の形で戻る。
【００２６】
図４を参照すると、別の実施形態が、コンピュータシステム２０を使用して実施されることが可能な侵入検出手続き２２０として示されている。手続き２２０は、動作２２２におけるコンピュータプログラムの指定から始まる。動作２２２に関して、プログラム命令が、置換によって、予約済みの、かつ／または無効な命令フォーマットに選択的に変換される。したがって、動作２２２のこの置換変換は、特定のフォーマットの命令が、変更された内容を有することをもたらす。そのような置換は、手続き２２０が、コンピュータシステム２０を使用して実施される際に、変換論理５０への代替として、または追加として処理デバイス２４によって定義される変換論理によって、１つまたは複数のレジスタ５２の中で与えられた情報に従って実行されることが可能である。一形態では、レジスタは、あるタイプの命令が、あるタイプの予約済みの命令フォーマットまたは無効な命令フォーマットと入れ替えられるべきことを各々が指定する、いくつかのビットを含む。他の、レジスタによって格納された情報は、適宜、この入れ替え機能を有効にし／無効にし、置換構成をカスタマイズし、かつ／または他のオプションを実施するのに使用されることが可能である。例えば、１つのオプションは、手続き１２０と２２０の間で、レジスタ５２の１つまたは複数のビットによって指定されるとおり選択を行うことであってもよい。代替的に、またはさらに、その２つの手続きを組み合わせて単一の混成保護スキームにするオプションが、レジスタ５２の指定された内容を介して選択されることが可能である。
【００２７】
動作２２２におけるプログラムの選択された命令の変換の後、プログラムは、動作２２４において、変更された命令内容と共にメモリの中に格納される。１つの好ましい実施形態では、変更された命令内容を有するコンピュータプログラムは、動作２２４において不揮発性ファイルメモリ３２の中に格納される。より好ましい形態の実施形態では、変更された命令内容を有するコンピュータプログラムは、動作２２４において取り外し可能なメモリデバイス３４の中に格納される。さらにより好ましい実施形態では、変更された命令内容を有するコンピュータプログラムは、動作２２４においてプログラム実行メモリ３６の中に少なくとも部分的に格納される。さらに他の好ましい諸実施形態では、変更されたコンピュータプログラムは、異なるメモリタイプ（図示されず）の中に格納されることが可能であり、かつ／または複数のタイプのメモリの中に格納されることが可能である。
手続き２２０は、動作２２４から動作２２６に進む。動作２２６において、元の命令内容が、コンピュータプログラムの実行中に逆置換動作を介して復元される。具体的には、１つまたは複数のレジスタ５２によって定義された置換のパターンが、処理デバイス２４によって、置換手続きを逆転させるのに利用されて、動作２２２において置換された、逆転された、つまり無効な命令フォーマットの代わりに、元の有効な命令がもたらされる。コンピュータシステム２０インプリメンテーションの場合、この逆置換手続きは、命令復号器４２によって実行される。そのような復元の後、各々の復元された命令が、復号器４２によって標準の形で復号化され、動作２２８において復号化済み命令実行論理４４によって実行される。動作２２２において変更されなかった命令に関して、復号器４２は、それらの命令をそのようなものとして認識し、それに応じて、それらの命令を、論理４４による処理のために直接に復号化する。
【００２８】
手続き２２０は、動作２２８から条件付き２３０に進む。条件付き２３０は、不適切な命令実行が、コンピュータプログラムの実行中に試みられたかどうかを試験する。条件付き２３０の試験が、肯定的であった場合、処理デバイス２４が、無効な命令の試みに関してプロセストラップを実行する動作２３２が、生じる。手続き１２０の動作１３２の場合と同様に、動作２３２は、適宜、さらなる診断および解析をトリガするのに利用されて、実行が意図されるコンピュータプログラムの実行中に、異なるプログラムによる侵入が生じたことを示す、または検出することが可能である。それに応じて、手続き２２０は、停止し、動作２３２から戻る。
【００２９】
条件付き２３０の試験が、否定的であった場合、手続き２２０は、条件付き２４０に進み、条件付き２４０は、別の命令が、サブミットされたコンピュータプログラムの一環として実行されるべきかどうかを試験する。条件付き２４０の試験が、肯定的であった場合、手続き２２０は、動作２２６にループして戻って、次のプログラム命令を実行し、予約済みの内容または無効な内容で置き換えられたそれらの命令を、必要に応じて、復元する。条件付き２４０の試験が、否定的であった場合、手続き２２０は、停止され、手続き２２０が、再び呼び出されるまで、呼び出し元に通常の形で戻る。
【００３０】
手続き１２０と手続き２２０は共に、標準のプロセッサ、または複数のプロセッサ構成の論理をそこそこに変更することにより、実施されることが可能であることが理解されるべきである。さらに、そのような論理は、ソフトウェア命令、ファームウェア命令、マイクロ命令、専用ハードウェア、または以上の組合せの形態で実施されることが可能である。手続き１２０と手続き２２０は共に、本発明のある実施形態に向けられ、その実施形態は、コンピュータプログラムの１つまたは複数の命令の内容を変更すること、その１つまたは複数の命令の各々を、その変更前の内容に復元すること、およびその１つまたは複数の命令を、復元後に実行することを含むことが理解されるべきである。この実施形態は、コンピュータプログラムの実行中における、異なるプログラムによる侵入の検出を、その異なるプログラムによる不適切な形態の少なくとも１つの命令のサブミットを介して可能にすることをさらに含むことが可能である。また、そのような諸実施形態の範囲内には、命令内容を、復元が可能であるような形で変更する、異なる対応も入る。それに応じて、それらの異なる対応が、前段で説明される技術への代替として、または追加として、侵入検出を可能にするのに使用されることが可能である。
【００３１】
さらに、それらの変形のいずれかに従って命令検出を実行する論理が、対応するプロセッサまたはプロセッサ群による後のアクセスのために、カートリッジ、ディスク、チップ、カード、テープ、または以上の組合せの形態の取り外し可能なメモリデバイス３４などの、デバイス上に格納された命令を介して実施されることが可能であることも企図される。また、取り外し可能なメモリデバイス３４は、適切な命令変換情報を使用して、処理デバイスによる実行中に復元が実行されて、異なるプログラムによる侵入からの保護がもたらされることが可能であるような形で、コンピュータプログラムの命令の１つまたは複数の内容が変更されたコンピュータプログラムを格納するのに利用されることも可能である。この状況の場合、命令変換情報は、キー、レジスタ値、またはそれに類するものの形態で、変更されたコンピュータプログラムと共に提供され、かつ／または適切な命令復元の後にプログラムを実行することが意図されるプロセッサによる使用のために別個に通信されることが可能である。代替的に、またはさらに、所与のタイプのプロセッサは、命令変更のパターンが、そのようなプロセッサによって自動的に認識されるような形で、内部で符号化されることが可能である。
【００３２】
本発明は、図面、および以上の説明で示され、詳細に説明されたが、図面および説明の性質は、例示的であり、限定的ではないものと考えられるべきであり、選択された諸実施形態だけが、図示され、説明されており、以上に説明される本発明の趣旨の範囲内に入り、かつ／または添付の特許請求の範囲によって定義されるすべての変更、改変、および均等物が、保護されるべきことが所望されるものと理解される。
【図面の簡単な説明】
【００３３】
【図１】コンピュータシステムの図である。
【図２】図１のコンピュータシステムの侵入を検出するための手続きの流れ図である。
【図３】図１のコンピュータシステムを使用した、図２の手続きに関する１つのタイプの命令変換論理の概略図である。
【図４】図２の手続きと組み合わせて、または図２の手続きなしに使用されることが可能な図１のコンピュータシステムの、侵入を検出するための代替の手続きの流れ図である。
【図１】
2007535067.tif 000003
【図２】
2007535067.tif 000004
【図３】
2007535067.tif 000005
【図４】
2007535067.tif 000006
【国際調査報告】
2007535067.tif 000007