JP2006202270A - 部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法 - Google Patents
部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2006202270A JP2006202270A JP2005362049A JP2005362049A JP2006202270A JP 2006202270 A JP2006202270 A JP 2006202270A JP 2005362049 A JP2005362049 A JP 2005362049A JP 2005362049 A JP2005362049 A JP 2005362049A JP 2006202270 A JP2006202270 A JP 2006202270A
- Authority
- JP
- Japan
- Prior art keywords
- hash
- executable file
- memory
- response
- partial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
【課題】実行可能ファイルのインテグリティーを検証するためのシステムおよび方法を提供する。
【解決手段】一態様では、複数の部分イメージハッシュが生成され、その組み合わせが実行可能ファイル全体のダイジェストを表す。コンピューティングデバイス上での実行可能ファイルのロードに続いて、実行のために実行可能ファイルの一部をメモリにページングする要求がインターセプトされる。要求のインターセプトに応答して、またその部分の実行のためのメモリへのページングに先立って、その部分の検証ハッシュが計算される。その検証ハッシュが、複数の部分イメージハッシュの部分ハッシュと比較され、その部分のコードインテグリティーが決定される。部分ハッシュは、その部分と同じコードセグメントを表す。
【選択図】図1
【解決手段】一態様では、複数の部分イメージハッシュが生成され、その組み合わせが実行可能ファイル全体のダイジェストを表す。コンピューティングデバイス上での実行可能ファイルのロードに続いて、実行のために実行可能ファイルの一部をメモリにページングする要求がインターセプトされる。要求のインターセプトに応答して、またその部分の実行のためのメモリへのページングに先立って、その部分の検証ハッシュが計算される。その検証ハッシュが、複数の部分イメージハッシュの部分ハッシュと比較され、その部分のコードインテグリティーが決定される。部分ハッシュは、その部分と同じコードセグメントを表す。
【選択図】図1
Description
本開示は、データの認証または検証に関する。
ユーザのコンピュータ上で実行される実行可能ファイルは、ウィルスまたはトロイの木馬を含む可能性がある。実行可能ファイルはバイナリイメージとも呼ばれ、たとえば、ポータブル実行可能プログラム(PE:Portable executable)、マクロ、Visual Basicスクリプト(VBS)のようなスクリプト、その他などの、任意の実行可能オブジェクトを含む。ウィルスとは、通常はユーザの意思に反して、およびユーザに知られずに、ディスク上のバイナリイメージを変更する、プログラムまたは1つのコードである。ウィルスはそれら自体を複製することも可能である。それ自体のコピーを何度も繰り返し作成できる単純なウィルスは、生成が比較的容易である。たとえこうした単純なウィルスであっても、すべての使用可能なメモリを即時に使用してシステムを停止させてしまうことが可能であるため、危険である。他の危険なタイプのウィルスは、複数のネットワークを横切ってそれら自体を送信し、セキュリティシステムを迂回することができる。ウィルスとは異なり、トロイの木馬はそれら自体を複製することはないが破壊的である可能性があり、しばしば害のないアプリケーションを装う。たとえばトロイの木馬は、無防備なユーザによって単独で起動される可能性がある。悪質なタイプのトロイの木馬は、ユーザのコンピュータからウィルスを取り除くと主張しながらユーザのコンピュータに導入するするプログラムである。したがって、実行可能ファイルをコンピュータ上で実行することはリスクとなる可能性がある。
たとえばウィルスまたはトロイの木馬によって破損された実行可能コードを識別する1つの方法には、コンピューティングデバイスに実行可能コードをインストールまたはダウンロードする際に、信頼できる暗号化ハッシュを使用することが含まれる。暗号化ハッシュまたは単に「ハッシュ」は、実行可能コードを要約された形、すなわちダイジェストにコンパイルする。信頼できるハッシュによって、ハッシュの作成時に良好なコード、すなわち破損していないコードであることを知ることができる。実行可能ファイル(すなわち、バイナリイメージ、実行可能コード、スクリプト、マクロなど)用の信頼できるハッシュを生成するためには、実行可能ファイルをある場所から別の場所へ転送する前に、データなどの関連するリソースを含む実行可能ファイル上でメッセージダイジェストまたはチェックサム計算を実行し第1の結果を得る。転送された実行可能ファイル上で同じ計算が実行され、第2の結果が得られる。第1の結果と第2の結果とを比較して、受け取った実行可能ファイルが最初に送られたものと同じデータであるかどうかが判別される。たとえば、前の計算結果と後の計算結果とが一致した場合、受け取ったデータは正確であると思われる。一致しない場合、受け取った実行可能ファイルは破損している。この方法では、完全なバイナリイメージハッシュを使用することで、破損したバイナリイメージをダウンロードまたはインストールする危険が効果的に低減される。
本発明の目的は、部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法を提供することである。
一態様では、複数の部分イメージハッシュが生成され、その組み合わせがバイナリイメージ全体のダイジェストを表す。コンピューティングデバイス上でのバイナリイメージのロードに続いて、実行のためにバイナリイメージの一部をメモリにページングする要求がインターセプトされる。要求のインターセプトに応答して、またその部分の実行のためのメモリへのページングに先立って、その部分の検証ハッシュが計算される。その検証ハッシュが、複数の部分イメージハッシュの部分ハッシュと比較され、その部分のコードのインテグリティーが決定される。部分ハッシュは、その部分と同じコードセグメントを表す。
図面では、構成要素の参照番号の左端の数字が、その構成要素が最初に現れた特定の図面を識別する。
実行可能コードの実行に先立ったいずれかの時点で、このコードの一部のみをメモリにマッピングすることは、処理およびメモリリソースを効率的に使用するために一般的に行われている。たとえばページングは、仮想メモリオペレーティングシステムが、いつでも、実行可能ファイル(たとえばPEファイル)の数バイトのみをコードとして、ストレージデバイスからメモリへロード/マップするために使用する技法である。たとえば、コンピュータプログラムが主メモリ内にないページを必要とする場合、オペレーティングシステムは必要なページをメモリにコピーする。他の例では、VBスクリプトエンジンなどのスクリプトエンジンは、スクリプトの一部(任意のページの概念またはページサイズの概念とは無関係の部分)をストレージデバイスからメモリへコードとしてマップすることができる。
様々なタイプおよび量の実行可能コードを実行のためにメモリにロードする際に使用される様々な技法に鑑みて、また考察のために、以下の「一部」という句は任意数のバイトを示し、そのバイト数は、実行される特定のコードのメモリへのローディングオペレーションに適している。たとえばページングオペレーションの場合、「一部」または「部分」という句は、ページ境界によって境界が画されたいくつかのバイト(1または複数ページ)を言い表す。他の例では、非ページングオペレーション(たとえば、スクリプトエンジンによって実行される実行可能コードのメモリローディングオペレーション)に関して、「一部」または「部分」という句は、後で実行するためにコード/スクリプトをメモリに移動する際に使用される特定の実施に適したバイト数を言い表す。実行可能コードを実行のためにメモリ内にロードする際にどの技法が使用されるかにかかわらず、こうした一部におけるバイト数は任意であり、一般に、完全な実行可能ファイル内のバイト数よりも少ないバイト数であって、通常は、実施されている特定の実行可能コードのローディングアーキテクチャに応じる。
メモリ内にロードするための実行可能コードの一部のバイトサイズが、通常は全実行可能ファイルサイズよりも小さい1つの理由は、特に実行可能ファイルのわずかな部分(たとえば1または複数ページ)のみの実行が予定されている場合、一般に、全実行可能ファイルをメモリにロードするために必要となるメモリおよび処理リソースがかなり高額なためである。たとえば、実行可能ファイルがデータストレージデバイス上にインストールされた後、イメージ全体(実行可能ファイル)の単一のハッシュが、そのイメージの第1の部分を実行のためにメモリにロードする直前に検証されるものであった場合、メモリおよびプロセッサリソースは効率良く利用されない。これは、全イメージハッシュを計算するには、実行可能ファイル全体をメモリにページングする必要があるためである。
こうしたプロセスは、通常のページングオペレーション環境の下では、その特定の時点でページングされることが殆どないコード、データ、および/またはリソースでのページングを必要とする。また、こうした部分のローディングオペレーションは、リソースおよび性能コストがかなり高額になる。これらの理由で、コードの一部を実行のためにメモリにマッピングして、その部分に関連付けられたコードが破損しているかどうかを判別する場合、全イメージハッシュの使用は実用的でない。したがって、実行可能コードのローディングアーキテクチャは、通常、全実行可能ファイルよりもかなり少ない部分を実行のためにメモリにロードする。これによって、そのメモリおよび処理リソースが効率良く使用されることが保証される。
上記に鑑みて、最後に全実行可能ファイルのハッシュインテグリティーチェックが実行された後にその一部が破損したとすると、実行可能ファイルの一部がメモリにページングされる際、仮に破損したコードが実行されるとしても、それまで既存のシステムは破損したコードを検出しない。この時点までに、破損したコードが、システムの1つまたは複数の部分のインテグリティーを損なっている可能性がある。言い換えれば、全イメージのインテグリティーチェックを実施する任意の既存システムは、チェック後にページが破損した場合に問題を引き起こす可能性がある。これらの理由から、依然として実行可能ファイルを実行するのは非常に危険である。
従来のコードインテグリティーインフラストラクチャとは対照的に、以下で説明する実行可能ファイルのインテグリティーを検証するためのシステムおよび方法は、破損したコードがシステム上にインストールされた後、コードを実行のためにメモリ内に移動する(ページングなど)直前に、部分ハッシュを使用して破損したコードを検出する。このシステムおよび方法は、従来のシステムの全イメージハッシュインフラストラクチャに依拠することなく、これを実現する。このため、このシステムおよび方法は、各実行可能ファイルについて複数のハッシュを生成する。各ハッシュが実行可能ファイルのそれぞれの部分を表すため、各ハッシュは実行可能ファイルの全バイトより少ないバイトのダイジェストである。この実施例では、たとえば各ハッシュは実行可能ファイルのそれぞれのページのダイジェスト、すなわちページごとのハッシュ(per−page hash)である。(1ページのバイト数は任意であり、個々の実装されたページングアーキテクチャに応じる。)他の実施例では、各ハッシュはページごとのハッシュではないが、実行可能ファイルの1ページより少ないかまたは多いページのダイジェストを表す。
このシステムおよび方法が実行可能ファイルの一部(たとえばページまたはその他)をストレージデバイスからメモリへロードする場合、システムおよび方法はその部分のみのインテグリティーをチェックする。これにより、実行可能ファイルの追加/不要部分(たとえば実行可能ファイル全体)をロードすることなくこの部分が検証されるため、リソースまたは性能への影響が非常に少なくなる。
部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法が、たとえばページ内(in−page)オペレーションの一部として、実行可能ファイルの破損部分がメモリにロードされようとしていることを識別した場合、その破損部分は実行のためにメモリにマッピングされない。一実施例では、ページングオペレーション中に実行可能ファイルの破損部分が識別された場合、対応するページ内オペレーションは失敗し、一部の実施例では例外の投入が生じることになる。この方式では、システムおよび方法はコードを実行する前にコードの破損ページを検出する。これによって、実行可能ファイルを実行する危険性が大幅に減少し、実行可能ファイルに関係するウィルス、トロイの木馬などに対する追加の保護が提供される。
部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法のこれらおよび他の態様について、以下でより詳細に説明する。
例示的システム
必須ではないが、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法について、パーソナルコンピュータなどのコンピューティングデバイスによって実行されているコンピュータ実行可能命令(プログラムモジュール)との一般的な状況で説明する。一般にプログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。このシステムおよび方法は前述の状況で説明されるが、以下で説明する動作およびオペレーションはハードウェアにおいても実施可能である。
必須ではないが、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法について、パーソナルコンピュータなどのコンピューティングデバイスによって実行されているコンピュータ実行可能命令(プログラムモジュール)との一般的な状況で説明する。一般にプログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。このシステムおよび方法は前述の状況で説明されるが、以下で説明する動作およびオペレーションはハードウェアにおいても実施可能である。
図1は、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するための例示的システム100を示す図である。この実施例では、システム100はクライアントコンピューティングデバイス102を含む。コンピューティングデバイス102は、パーソナルコンピュータ、ラップトップ、サーバ、Small Form Factorのモバイルコンピューティングデバイス(たとえば携帯電話、携帯情報端末、またはハンドヘルドコンピュータ)などの、任意のタイプのコンピューティングデバイスである。コンピューティングデバイス102は、プログラムモジュール104およびプログラムデータ106を含む。プログラムモジュール102は、たとえば、実行可能ファイルのそれぞれの部分について複数の暗号化ハッシュ(すなわち部分イメージハッシュ108)を生成するための1つまたは複数のコンピュータプログラムモジュールと、コードページング(または部分ローディング)オペレーション中に複数の暗号化ハッシュのうちのそれぞれで実行可能ファイルを検証するためのプログラムモジュールと、を含む。たとえば、部分ごとの実行可能ファイルハッシングモジュール110は、実行可能ファイルのそれぞれの部分について部分イメージハッシュ108を生成する。イメージ部分インテグリティー検証モジュール112は、この実施例ではファイルシステムプラグイン(たとえばフィルタドライバ)であり、コードページングオペレーション中に生成された暗号化ハッシュを使用して実行可能ファイルを検証する。例示のために、部分イメージハッシュ108を生成するための暗号化ハッシング用の実行可能ファイルは、「他のデータ」114のそれぞれの部分として示される。
考察および例示のために、部分ごとの実行可能ファイルハッシングモジュール110およびイメージ部分インテグリティー検証モジュール112は、単一のコンピューティングデバイス102上で実施されているものとして示されている。しかしながら、これらのプログラムモジュールは、コンピューティングデバイス102のプログラムモジュール104およびプログラムデータ106のすべてまたはサブセットを備えた異なるコンピューティングデバイス上で実施することが可能である。たとえば一実施例では、第1のコンピューティングデバイスは、第2のコンピューティングデバイス上へのインストールおよび/またはダウンロードのための、実行可能ファイルおよび対応する部分イメージハッシュ108を備えたパッケージを生成するために、実行可能ファイルハッシングモジュール110を実装する。第2のコンピューティングデバイスは、コードページング(または部分ローディング)オペレーション中に、複数の暗号化ハッシュのうちのそれぞれで実行可能ファイルを検証するために、イメージ部分インテグリティー検証モジュール112を実装する。
次に、システム100のオペレーションを、はじめに、部分ごとの実行可能ファイルハッシングモジュール110の例示的オペレーションについて、次に、イメージ部分インテグリティー検証モジュール112の例示的オペレーションについて、さらに詳細に説明する。
例示的な部分ごとの実行可能ファイル暗号化ハッシング
上記で示されたように、部分ごとの実行可能ファイルハッシングモジュール110は、実行可能ファイルのそれぞれの部分について部分イメージハッシュ108を生成する。部分イメージハッシュ108の各部分ハッシュ108は、(実行可能ファイル全体のサイズが部分サイズよりも少ないかまたは等しくない限り)実行可能ファイルのすべてよりも少ないバイトのダイジェストであるように実行可能ファイルのそれぞれの部分のハッシュを表す。たとえば一実施例では、各ハッシュ108はページごとのハッシュではないが、実行可能ファイルの1ページよりも少ないかまたは1ページよりも多いダイジェスト(すなわち、ページサイズ境界に基づいていないダイジェスト)を表す。この実施例では、および考察のために、各ハッシュ108は実行可能ファイルのそれぞれのページのダイジェスト、すなわちページごとのハッシュである。(1ページのバイト数は任意であり、特別に実施されたページングアーキテクチャに応じる。)複数の部分ハッシュ108を作成するために部分ごとの実行可能ファイルハッシングモジュール110によって実施される特定のハッシングアルゴリズムは任意であり、バイナリコードのハッシュを生成するために使用される任意のアルゴリズムとすることができる。こうしたアルゴリズムの例には、たとえばSHA−1およびMD5が含まれる。
上記で示されたように、部分ごとの実行可能ファイルハッシングモジュール110は、実行可能ファイルのそれぞれの部分について部分イメージハッシュ108を生成する。部分イメージハッシュ108の各部分ハッシュ108は、(実行可能ファイル全体のサイズが部分サイズよりも少ないかまたは等しくない限り)実行可能ファイルのすべてよりも少ないバイトのダイジェストであるように実行可能ファイルのそれぞれの部分のハッシュを表す。たとえば一実施例では、各ハッシュ108はページごとのハッシュではないが、実行可能ファイルの1ページよりも少ないかまたは1ページよりも多いダイジェスト(すなわち、ページサイズ境界に基づいていないダイジェスト)を表す。この実施例では、および考察のために、各ハッシュ108は実行可能ファイルのそれぞれのページのダイジェスト、すなわちページごとのハッシュである。(1ページのバイト数は任意であり、特別に実施されたページングアーキテクチャに応じる。)複数の部分ハッシュ108を作成するために部分ごとの実行可能ファイルハッシングモジュール110によって実施される特定のハッシングアルゴリズムは任意であり、バイナリコードのハッシュを生成するために使用される任意のアルゴリズムとすることができる。こうしたアルゴリズムの例には、たとえばSHA−1およびMD5が含まれる。
システム100は、多くの異なる方法で、実行可能ファイルをその対応する部分イメージハッシュ108に関連付けることができる。一実施例では、たとえばシステム100は、システムカタログ作成または更新アプリケーション(「他のプログラムモジュール」118を参照のこと)を利用して、その対応する部分イメージハッシュ108を備えた実行可能ファイルをシステムカタログ120にパッケージングする。こうしたパッケージングは、システムカタログ120作成オペレーションの一部として、またはシステムカタログ120更新プロセスの一部として、実行することができる。一実施例では、システムカタログ120は、同様に部分イメージハッシュ108を有するキャビネットファイル構造に基づくものである。システムカタログの使用は一般的であるが、従来のシステムカタログは、実行可能ファイルのいずれの部分イメージハッシュ108も含まない。むしろ、従来のシステムカタログが任意のタイプの実行可能ファイルハッシュを含む場合、実行可能ファイルハッシュは実行可能ファイル全体に対する単一の実行可能ファイルハッシュとなる。一実施例では、システムカタログ120は部分イメージハッシュ108および全実行可能ファイルハッシュを含み、全実行可能ファイルハッシュは、従来のコードインテグリティーインフラストラクチャとの後方互換性を備える。
他の実施例では、システム100は暗号化署名アプリケーション(「他のプログラムモジュール」118を参照)を利用して、その対応する部分イメージハッシュ108を備えた実行可能ファイルを自己署名ファイル122にパッケージングする。この実施例では、自己署名ファイルはPKCS#7データフォーマットであり、エンドユーザが関連する署名およびX.509証明書を最高証明機関まで追跡できるようにするものである。一実施例では、自己署名ファイル122は、部分イメージハッシュ108および全実行可能ファイルハッシュを含み、全実行可能ファイルハッシュは従来のコードインテグリティーインフラストラクチャとの後方互換性を備える。
例示的な実行可能ファイルインテグリティー検証
システム100が部分イメージハッシュ108を対応する実行可能ファイルにどのように関連付けるか(たとえば、実行可能ファイルを、システムカタログ120または自己署名ファイル122内の部分イメージハッシュ108に関連付ける)にかかわらず、こうした関連付けによってイメージ部分インテグリティー検証モジュール112は、コードローディングオペレーション中に、リソースおよび性能への最小限の影響で実行可能ファイルの検証を実行することができる。これは、実行可能ファイルの個々の部分がその後の実行のためにページング(または部分ローディング)オペレーション中にストレージデバイスからメモリへコピーされる際に、個々の部分に関連付けられた部分イメージハッシュ108のそれぞれが個々の部分を検証するために使用されるからである。(例示的なRAM、ROM、およびディスクドライブ、CD−ROM、DVDなどのストレージデバイスについて、図3に関連して以下で図示および説明する。)以下で説明するように、これは、不要/追加コードおよびリソース(たとえばページまたはスクリプト)をメモリ内に入れる必要なしに実施される。
システム100が部分イメージハッシュ108を対応する実行可能ファイルにどのように関連付けるか(たとえば、実行可能ファイルを、システムカタログ120または自己署名ファイル122内の部分イメージハッシュ108に関連付ける)にかかわらず、こうした関連付けによってイメージ部分インテグリティー検証モジュール112は、コードローディングオペレーション中に、リソースおよび性能への最小限の影響で実行可能ファイルの検証を実行することができる。これは、実行可能ファイルの個々の部分がその後の実行のためにページング(または部分ローディング)オペレーション中にストレージデバイスからメモリへコピーされる際に、個々の部分に関連付けられた部分イメージハッシュ108のそれぞれが個々の部分を検証するために使用されるからである。(例示的なRAM、ROM、およびディスクドライブ、CD−ROM、DVDなどのストレージデバイスについて、図3に関連して以下で図示および説明する。)以下で説明するように、これは、不要/追加コードおよびリソース(たとえばページまたはスクリプト)をメモリ内に入れる必要なしに実施される。
ファイルシステム116、メモリマネージャ124、およびイメージ部分インテグリティー検証モジュール112は、オペレーティングシステム(OS)のページング(または部分ローディング)オペレーション中に、実行のためにメモリ内に入れられる実行可能ファイルの部分を検証するために協働する。(一実施例では、メモリマネージャおよびファイルシステムは、オペレーティングシステムのそれぞれの部分として実施される。)このため、実行コード(「他のプログラムモジュール」118を参照)がその後の実行のためにストレージデバイス上に格納された実行可能ファイルの一部をロードしようとした場合、メモリマネージャ124は、セクション作成プロセスの一部として実行可能ファイルをオープンするためのオープン要求をファイルシステム116に送る。その後、メモリマネージャは、実行可能ファイルの1または複数ページを実行のためにメモリにページングまたはマッピングするために、1つまたは複数のページ内(または部分内(in−portion))要求をファイルシステム16に送る。考察のために、ページングオペレーション中、「部分内要求」はページ内要求である。他の実施例では、「部分内要求」は、ページ境界によっては境界が画されていないが、実施中のコードローディングアーキテクチャ(たとえばスクリプトエンジンローディングアーキテクチャなど)によって境界が画されている、何らかの他のバイト数に対する要求である。オープン、ページ内要求、および部分内要求は、「他のデータ」114のそれぞれの部分として示されている。
コードの実行に先立って、コードのこれら1つまたは複数の部分のインテグリティーを検証するために、実行可能ファイル部分インテグリティー検証モジュール112はこうした要求をインターセプトする。ファイルオープン(たとえば作成要求)の受信に応答して、実行可能ファイル部分インテグリティー検証モジュール112は、ターゲットがデータであるかコードであるかを判別するために、オープン要求によって識別されたデータ(ターゲット)のソースを評価する。通常、データはコードとしてマッピングされず、その逆もまた同様である。ターゲットがコードとしてマッピングされることになっている場合、実行可能ファイル部分インテグリティー検証モジュール112はターゲットに関連付けられた部分イメージハッシュ108の位置を特定し、そのハッシュをそれぞれメモリにマッピングする。一実施例では、これは、部分イメージハッシュがシステムカタログ120にパッケージされるか自己署名ファイル122にパッケージされるかを判別することによって実施される。これを実施するために、実行可能ファイル部分インテグリティー検証モジュール112は、最初に、部分イメージハッシュ108を作成するために、部分ごとの実行可能ファイルハッシングモジュール110によって使用されたものと同じアルゴリズムを使用して実行可能ファイルのヘッダのハッシュを計算する。計算されたハッシュは、それぞれの部分イメージハッシュ108と同じ構成可能バイトサイズである。例示のために、この計算されたハッシュは、「他のデータ」114内で「検証のために計算されたハッシュ」のそれぞれとして示される。
実行可能ファイル部分インテグリティー検証モジュール112は、この計算されたハッシュと、システムカタログ120に格納された部分イメージハッシュ108のそれぞれとを比較して、計算されたハッシュのすべてのビットと一致する関連付けられた部分イメージハッシュ108を備える実行可能ファイルを検索する。こうした一致ハッシュ108が見つかった場合、当該の実行可能ファイルは「カタログ署名済み」であるか、またはシステムカタログ120内に表示される。この場合、実行可能ファイル部分インテグリティー検証モジュール112は、実行可能ファイルに関連付けられたそれぞれの部分イメージハッシュ108をRAMに読み取る。ハッシュのリストが非実行可能データファイルからのデータであり、実行可能バイナリから読み取り/ページインされている情報ではない場合、このコピーオペレーションはインテグリティーチェック済みページング(または他のコード部分ローディング)オペレーションではないことに留意されたい。
当該の(ターゲットの)実行可能ファイルがカタログ署名済みでない場合、実行可能ファイル部分インテグリティー検証モジュール112は、当該実行可能ファイルがたとえば埋め込みPKCS#7署名済みコンテンツで自己署名されているかどうかを判別する。自己署名されている場合、検証フィルタ112は証明データを読み取り、その証明が最終的に周知の/信頼できる証明ルートセットのうちの1つまで追跡可能であることを検証し、その後(ターゲットの署名内に配置された)ページごとのハッシュ108の埋め込みリストをメモリにコピーする。一実施例では、自己署名済みファイルは、従来のコードインテグリティーチェックを実行するために実行可能ファイルの全ハッシュも含む。
実行可能ファイル部分インテグリティー検証モジュール112が、メモリマネージャ124によってファイルシステム116に送られる実行可能ファイル(以前のファイルオープン要求の対象であった実行可能ファイル)の1つまたは複数の部分に関する「部分内」要求をインターセプトすると、実行可能ファイル部分インテグリティー検証モジュール112は要求された1つまたは複数の部分の各部分のインテグリティーを検証する。より具体的に言えば、実行可能ファイル部分インテグリティー検証モジュール112は、ページ内/部分内要求によって識別された各ページ/部分についてハッシュを計算し、それぞれのハッシュと、その部分の以前に計算された対応する部分イメージハッシュ108とを比較する。(部分イメージハッシュ108は、前述のようにファイルオープン要求に応答してメモリにコピーされたものである。)
計算されたハッシュと格納されたハッシュが一致する場合、実行可能ファイル部分インテグリティー検証モジュール112は、ページ内/部分内オペレーションを完了させることが可能であり、その結果、要求された部分が実行のためにメモリにマッピングされる。計算されたハッシュと対応する部分イメージハッシュ108が一致しない場合、実行可能ファイル部分インテグリティー検証モジュール112はページ内/部分内要求に失敗し、変更/破損/改ざんされたコードはコードとしてメモリ内に入れられないため、その後実行されない。
計算されたハッシュと格納されたハッシュが一致する場合、実行可能ファイル部分インテグリティー検証モジュール112は、ページ内/部分内オペレーションを完了させることが可能であり、その結果、要求された部分が実行のためにメモリにマッピングされる。計算されたハッシュと対応する部分イメージハッシュ108が一致しない場合、実行可能ファイル部分インテグリティー検証モジュール112はページ内/部分内要求に失敗し、変更/破損/改ざんされたコードはコードとしてメモリ内に入れられないため、その後実行されない。
上記に鑑み、実行可能ファイルの一部(たとえばページ)をストレージデバイスからメモリに入れるためにシステム100がページングおよび他のメモリコードローディングオペレーションを実施すると、システム100は入れられるそのコード部分のみのインテグリティーをチェックする。その結果、実行可能ファイルの追加/不要部分(たとえば実行可能ファイル全体)をロードすることなくこの部分のみが検証されるため、リソースまたは性能への影響が非常に少なくなる。
例示的手順
図2は、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するための例示的手順200を示す図である。考察および例示のために、当該手順のオペレーションを図1の構成要素に関して説明する。構成要素の参照番号の左端の数字は、その構成要素が最初に現れた特定の図面を識別する。ブロック202で、部分ごとの実行可能ファイルハッシングモジュール110(図1)が実行可能ファイル用の部分イメージハッシュ108を生成する。ブロック204で、部分イメージハッシュ108が実行可能ファイルに関連付けられる。一実施例では、これは、実行可能ファイルおよび部分イメージハッシュ108をシステムカタログ120に封入することによって実施される。他の実施例では、これは、実行可能ファイルおよび部分イメージハッシュ108を自己署名ファイル122に封入することによって実施される。システムカタログ120および/または自己署名ファイル122を、異なるコンピューティングデバイス上にインストールまたはダウンロードすることができる。
図2は、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するための例示的手順200を示す図である。考察および例示のために、当該手順のオペレーションを図1の構成要素に関して説明する。構成要素の参照番号の左端の数字は、その構成要素が最初に現れた特定の図面を識別する。ブロック202で、部分ごとの実行可能ファイルハッシングモジュール110(図1)が実行可能ファイル用の部分イメージハッシュ108を生成する。ブロック204で、部分イメージハッシュ108が実行可能ファイルに関連付けられる。一実施例では、これは、実行可能ファイルおよび部分イメージハッシュ108をシステムカタログ120に封入することによって実施される。他の実施例では、これは、実行可能ファイルおよび部分イメージハッシュ108を自己署名ファイル122に封入することによって実施される。システムカタログ120および/または自己署名ファイル122を、異なるコンピューティングデバイス上にインストールまたはダウンロードすることができる。
ブロック206で、イメージ部分インテグリティー検証モジュール112(図1)が、メモリマネージャ124からファイルシステム116へのファイルオープン(セクション作成)要求をインターセプトする。ブロック208で、およびファイルオープン要求の受信に応答して、イメージ部分インテグリティー検証モジュール112が要求のターゲットデータソースを評価し、これがコード(実行可能ファイル)であるかデータ(実行可能ファイルではない)であるかを判別する。ターゲットが実行可能ファイルである場合、イメージ部分インテグリティー検証モジュール112はターゲットに関連付けられた各部分イメージハッシュ108の位置を特定し、即時アクセス(たとえば、1つまたは複数の部分イメージハッシュ108に関連付けられたページ内要求が受け取られた場合のアクセス)のためにそれらをメモリ内にコピーする。ブロック210で、メモリマネージャ124によってファイルシステム116に向けて送られたページ内または部分内要求のインターセプトに応答して、イメージ部分インテグリティー検証モジュール112は、インターセプトされた要求がターゲットとするコードのその部分について、ハッシュ(検証用に計算されたハッシュ)を計算する。コードのその部分は、その後その部分が破損していないと検証された場合に実行用にメモリ内に入れるために、ファイルシステムによってデータ格納場所から引き出されたものである。
このために、ブロック212で、イメージ部分インテグリティー検証モジュール112は計算されたハッシュと対応する1つの部分イメージハッシュ108とを比較し、インターセプトされた要求(ブロック210)を介して要求されたコードの部分のインテグリティーを検証する。ブロック214で、コードのその部分が破損していないと決定された(すなわち、計算されたハッシュが対応する1つの部分イメージハッシュ108と一致した)場合、イメージ部分インテグリティー検証モジュール112は、ページングオペレーション中にコードのその部分を後で実行するためにメモリにマッピングすることができる。そうではなく、ブロック216でコードのその部分が破損していると決定された(すなわち、計算されたハッシュが対応する1つの部分イメージハッシュ108と一致しない)場合、イメージ部分インテグリティー検証モジュール112はインターセプトされた要求に失敗し、コードのその部分は後で実行するためにメモリにマッピングされない。
例示的オペレーティング環境
図3は、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法が完全または部分的に実施可能な、好適なコンピューティング環境300の一例を示す図である。例示的コンピューティング環境300は、図1の例示的システムおよび図2の例示的オペレーション用に好適なコンピューティング環境の一例に過ぎず、本明細書に記載のシステムおよび方法の使用または機能の範囲に関して、どのような制限をも示唆することを意図するものではない。さらにコンピューティング環境300は、コンピューティング環境300内に図示された構成要素のいずれか1つまたは組み合わせに関して、いかなる依存関係または要件をも有するものと解釈されるべきでない。
図3は、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法が完全または部分的に実施可能な、好適なコンピューティング環境300の一例を示す図である。例示的コンピューティング環境300は、図1の例示的システムおよび図2の例示的オペレーション用に好適なコンピューティング環境の一例に過ぎず、本明細書に記載のシステムおよび方法の使用または機能の範囲に関して、どのような制限をも示唆することを意図するものではない。さらにコンピューティング環境300は、コンピューティング環境300内に図示された構成要素のいずれか1つまたは組み合わせに関して、いかなる依存関係または要件をも有するものと解釈されるべきでない。
本明細書に記載された方法およびシステムは、多数の他の汎用または特定用途向けのコンピューティングシステム、環境、または構成で動作可能である。使用に好適な可能性のある良く知られたコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、ラップトップ、Small Form Factorのモバイルコンピューティングデバイス(たとえば携帯電話、携帯情報端末、またはハンドヘルドコンピュータ)、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースシステム、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境、およびその他が含まれるが、これらに限定されるものではない。フレームワークのコンパクトまたはサブセットバージョンも、ハンドヘルドコンピュータ、または他のコンピューティングデバイスなどの限定されたリソースのクライアントで実施可能である。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境で実施される。分散コンピューティング環境では、プログラムモジュールをローカルおよびリモートの両方のメモリストレージデバイス内に配置することができる。
図3を参照すると、例示的システム300は、部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法が完全または部分的に実施可能な、好適なコンピューティング環境の一例を示す。システム300は、たとえば図1のクライアントコンピュータ102を実施するコンピュータ310の形の汎用コンピューティングデバイスを含む。コンピュータ310の構成要素は、処理ユニット320と、システムメモリ330と、システムメモリを含む様々なシステム構成要素を処理ユニット320に結合するシステムバス321とを含むことができるが、これらに限定されるものではない。システムバス321は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかとすることができる。こうしたアーキテクチャは、限定的ではなく一例として、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、拡張ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびメザニンバスとも呼ばれるPeripheral Component Interconnect(PCI)バスを含むことができる。
コンピュータ310は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ310がアクセス可能な任意の使用可能媒体とすることが可能であり、揮発性および不揮発性、取り外し可能および取り外し不能の、両方の媒体を含む。限定的ではなく一例として、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータなどの、情報を格納するための任意の方法または技術で実施された、揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含む。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を格納するために使用可能でありコンピュータ310がアクセス可能な任意の他の媒体が含まれるが、これらに限定されるものではない。
通信媒体は、通常、搬送波または他の移送機構などの変調データ信号内でコンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータを具体化し、さらに任意の情報送達媒体を含む。「変調データ信号」という用語は、信号内で情報を符号化するような方法でその特徴の1つまたは複数が設定または変更された信号を意味する。限定的ではなく一例として、通信媒体は、有線ネットワークまたはダイレクトワイヤード接続などの有線媒体と、音波、RF、赤外線、および他の無線媒体などの無線媒体とを含む。上記のうちいずれかの組み合わせも、コンピュータ読み取り可能媒体の範囲内にあるものとする。
システムメモリ330は、読み取り専用メモリ(ROM)331およびランダムアクセスメモリ(RAM)332などの、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ310内の要素間での情報転送を助ける基本ルーチンを含む基本入力/出力システム333(BIOS)は、通常、ROM331内に格納される。RAM332は、通常、処理ユニット320が即時アクセス可能であり、かつ/またはその上で現在動作中の、データおよび/またはプログラムモジュールを含む。限定的でなく一例として、図3はオペレーティングシステム334、アプリケーションプログラム335、他のプログラムモジュール336、およびプログラムデータ337を示す。
コンピュータ310は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。単なる一例として、図3は、取り外し不能、不揮発性磁気媒体からの読み取りまたはこれへの書き込みを行うハードディスクドライブ341と、取り外し可能、不揮発性磁気ディスク352からの読み取りまたはこれへの書き込みを行う磁気ディスクドライブ351と、CD ROMまたは他の光媒体などの取り外し可能、不揮発性光ディスク356からの読み取りまたはこれへの書き込みを行う光ディスクドライブ355とを示す。例示的オペレーティング環境で使用可能な他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、などが含まれるが、これらに限定されるものではない。ハードディスクドライブ341は、通常、インターフェース340などの取り外し不能メモリインターフェースを介してシステムバス321に接続され、磁気ディスクドライブ351および光ディスクドライブ355は、通常、インターフェース350などの取り外し可能メモリインターフェースによってシステムバス321に接続される。
上記で考察し図3に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、および他のデータのストレージをコンピュータ310に提供する。図3では、たとえばハードディスクドライブ341は、オペレーティングシステム344、アプリケーションプログラム345、他のプログラムモジュール346、およびプログラムデータ347を格納しているように図示される。これらの構成要素は、オペレーティングシステム334、アプリケーションプログラム335、他のプログラムモジュール336、およびプログラムデータ337と同じであるかまたは異なるかの、いずれでも可能であることに留意されたい。アプリケーションプログラム335は、たとえば図1のプログラムモジュール104を含む。プログラムデータ337は、たとえば図1のプログラムデータ106を含む。オペレーティングシステム344、アプリケーションプログラム345、他のプログラムモジュール346、およびプログラムデータ347には、これらが少なくとも異なるコピーであることを示すために、ここでは異なる番号が与えられている。
ユーザは、キーボード362、ならびに一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス361などの、入力デバイスを介してコンピュータ310にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、またはその他を含むことができる。これらおよび他の入力デバイスは、しばしばシステムバス321に結合されたユーザ入力インターフェース360を介して処理ユニット320に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの、他のインターフェースおよびバス構造によって接続することができる。
モニタ391または他のタイプのディスプレイデバイスも、ビデオインターフェース390などのインターフェースを介してシステムバス321に接続される。コンピュータは、モニタに加えて、出力周辺インターフェース395を介して接続可能なプリンタ396およびオーディオデバイス397などの他の周辺出力デバイスを含むこともできる。
コンピュータ310は、リモートコンピュータ380などの1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境内で動作する。一実施例では、リモートコンピュータ380は、図1の実行可能ファイルおよび部分イメージハッシュ108を、コードページングオペレーション中のイメージ部分インテグリティー検証モジュール112のローカル実施によって、その後の実行可能ファイル部分ごとにインストールまたはダウンロードする、コンピューティングデバイスを示す。リモートコンピュータ380は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることが可能であり、図3にはメモリストレージデバイス381のみが示されているが、その特定の実施に応じて、コンピュータ102に関して上記で述べた要素(たとえば、プログラムモジュール104およびプログラムデータ106など)のうちの多くまたはすべてを含むことができる。図3に示された論理接続はローカルエリアネットワーク(LAN)371およびワイドエリアネットワーク(WAN)373を含むが、他のネットワークを含むことも可能である。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般に見られる。
LANネットワーキング環境で使用される場合、コンピュータ310はネットワークインターフェースまたはアダプタ370を介してLAN371に接続される。WANネットワーキング環境で使用される場合、コンピュータ310は、通常、インターネットなどのWAN373を介して通信を確立するためのモデム372または他の手段を含む。モデム372は内蔵型または外付け型が可能であり、ユーザ入力インターフェース360または他の適切な機構を介してシステムバス321に接続することができる。ネットワーク環境では、コンピュータ310に関して示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに格納することができる。限定的でなく一例として、図3は、リモートアプリケーションプログラム385をメモリデバイス381上に常駐しているものとして示す。図示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用可能である。
むすび
部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法について、構造的特徴および/または方法論的オペレーションまたはアクションに特有の言葉で説明してきたが、添付の特許請求の範囲に定義された実施は、必ずしも記載された特定の特徴またはアクションに限定されるものでないことを理解されよう。たとえば、イメージ部分インテグリティー検証モジュール112はプラグインとしてファイルシステム116に組み込まれているものとして示されているが、プログラムモジュール112は、プラグインまたは他の方法でファイルシステム以外のプログラムモジュールに組み込むことも可能である。たとえば一実施例では、メモリマネージャ124がイメージ部分インテグリティー検証モジュール112のオペレーションに(プラグインまたはその他として)直接アクセスする。したがって、特定の特徴およびオペレーションは、主張された主題を実施する例示的な形として開示されたものである。
部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法について、構造的特徴および/または方法論的オペレーションまたはアクションに特有の言葉で説明してきたが、添付の特許請求の範囲に定義された実施は、必ずしも記載された特定の特徴またはアクションに限定されるものでないことを理解されよう。たとえば、イメージ部分インテグリティー検証モジュール112はプラグインとしてファイルシステム116に組み込まれているものとして示されているが、プログラムモジュール112は、プラグインまたは他の方法でファイルシステム以外のプログラムモジュールに組み込むことも可能である。たとえば一実施例では、メモリマネージャ124がイメージ部分インテグリティー検証モジュール112のオペレーションに(プラグインまたはその他として)直接アクセスする。したがって、特定の特徴およびオペレーションは、主張された主題を実施する例示的な形として開示されたものである。
Claims (20)
- 実行可能ファイルを表し、前記実行可能ファイルの全バイト数よりも小さい複数の部分イメージハッシュを生成するステップと、
前記実行可能ファイルのコンピューティングデバイス上へのロードの後に起こる、前記実行可能ファイルの一部を実行のためにメモリ内にページングするための要求をインターセプトするステップと、
前記部分を実行のためにメモリ内にページングする前に、前記要求のインターセプトに応答して、
前記部分の検証ハッシュを計算するステップと、
前記部分のコードインテグリティーを決定するために、前記検証ハッシュと前記複数の部分イメージハッシュのうちの前記部分と同じコードセグメントを表す部分ハッシュとを比較するステップと
を有することを特徴とするコンピュータで実行される方法。 - 前記複数の部分イメージハッシュは、前記実行可能ファイルの前記コンピューティングデバイス上へのロードの前に計算されることを特徴とする請求項1に記載の方法。
- 前記複数の部分イメージハッシュは、システムカタログまたは自己署名暗号化ファイルに格納されることを特徴とする請求項1に記載の方法。
- 前記検証ハッシュが前記部分ハッシュと一致することを決定するステップと、
前記決定に応答して、前記部分を実行のためにメモリ内にページングするステップと、
をさらに有することを特徴とする請求項1に記載の方法。 - 前記検証ハッシュが前記部分ハッシュと一致しないことを決定するステップと、
前記決定に応答して、前記部分を実行のためにメモリ内にページングするための前記要求を失敗にするステップと、
をさらに有することを特徴とする請求項1に記載の方法。 - 前記実行可能ファイルのコンピューティングデバイス上へのロードの後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトするステップと、
前記オープン要求のインターセプトに応答して、
前記実行可能ファイルのヘッダの識別ハッシュを計算するステップと、
前記複数の部分バイナリハッシュのうちの前記ヘッダと一致する第1のハッシュを識別するために、前記識別ハッシュとシステムカタログに格納された複数の部分実行可能ファイルハッシュのそれぞれとを比較するステップと、
前記実行可能ファイルの1つまたは複数の部分を実行のためのメモリ内へのページングに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記ハッシュの前記識別に応答して、前記実行可能ファイルの前記複数の部分イメージハッシュを前記システムカタログからメモリへコピーするステップと
をさらに有することを特徴とする請求項1に記載の方法。 - 前記実行可能ファイルのコンピューティングデバイス上へのロードの後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトするステップと、
前記オープン要求のインターセプトに応答して、および前記実行可能ファイルが自己署名暗号化ファイルであるとの決定に応答して、前記実行可能ファイルの1つまたは複数の部分を実行のためにメモリ内にページングするステップに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記複数の部分イメージハッシュを前記自己署名暗号化ファイルからメモリへコピーするステップと、
をさらに有することを特徴とする請求項1に記載の方法。 - 実行可能ファイルのダイジェストを表し、前記実行可能ファイルの全バイト数よりも少ない複数の部分イメージハッシュを生成すること、
前記実行可能ファイルをコンピューティングデバイス上にロードした後に、前記実行可能ファイルの一部を実行のためにメモリ内にページングするための要求をインターセプトすること、
前記部分を実行のためにメモリ内にページングする前に、前記要求のインターセプトに応答して、
前記部分の検証ハッシュを計算すること、および
前記部分のコードインテグリティーを決定するために、前記検証ハッシュと前記複数の部分イメージハッシュのうちの前記部分と同じコードセグメントを表す部分ハッシュとを比較することを
プロセッサに実行させるコンピュータプログラム命令を備えることを特徴とするコンピュータ読み取り可能媒体。 - 前記複数の部分イメージハッシュは、前記実行可能ファイルを前記コンピューティングデバイス上にロードする前に計算されることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
- 前記複数の部分イメージハッシュは、システムカタログまたは自己署名暗号化ファイルに格納されることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
- 前記検証ハッシュが前記部分ハッシュと一致することを決定すること、および
前記決定に応答して、前記部分を実行のためにメモリ内にページングすることを
プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。 - 前記検証ハッシュが前記部分ハッシュと一致しないことを決定すること、および
前記決定に応答して、前記部分を実行のためにメモリ内にページングするための前記要求を失敗にすることを
プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。 - 前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、
前記オープン要求のインターセプトに応答して、
前記実行可能ファイルのヘッダの識別ハッシュを計算すること、
前記複数の部分バイナリハッシュのうちの前記ヘッダと一致する第1のハッシュを識別するために、前記識別ハッシュとシステムカタログに格納された複数の部分実行可能ファイルハッシュのそれぞれとを比較すること、および
前記実行可能ファイルの1つまたは複数の部分を実行のためのメモリ内へのページングに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記ハッシュの位置特定に応答して、前記実行可能ファイルの前記複数の部分イメージハッシュを前記システムカタログからメモリへコピーすることを
プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。 - 前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、および
前記オープン要求のインターセプトに応答して、および前記実行可能ファイルが自己署名暗号化ファイルであるとの決定に応答して、前記実行可能ファイルの1つまたは複数の部分を実行のためにメモリ内にページングすることに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記複数の部分イメージハッシュを前記自己署名暗号化ファイルからメモリへコピーすることを
プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。 - プロセッサと、前記プロセッサに結合されたメモリとを備えたコンピューティングデバイスであって、前記メモリは、
実行可能ファイルのダイジェストを表し、前記実行可能ファイルの全バイト数よりも小さい複数の部分イメージハッシュを生成すること、
前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイルの一部を実行のためにメモリ内にページングするための要求をインターセプトすること、
前記部分を実行のためにメモリ内にページングする前に、前記要求のインターセプトに応答して、
前記部分の検証ハッシュを計算すること、および
前記部分のコードインテグリティーを決定するために、前記検証ハッシュと前記複数の部分イメージハッシュのうちの前記部分と同じコードセグメントを表す部分ハッシュとを比較することを
前記プロセッサに実行させるコンピュータプログラム命令を備えることを特徴とするコンピューティングデバイス。 - 前記複数の部分イメージハッシュは、システムカタログまたは自己署名暗号化ファイルに格納されることを特徴とする請求項15に記載のコンピューティングデバイス。
- 前記コンピュータプログラム命令は、
前記検証ハッシュが前記部分ハッシュと一致することを決定すること、および
前記決定に応答して、前記部分を実行のためにメモリ内にページングすること、
前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。 - 前記コンピュータプログラム命令は、
前記検証ハッシュが前記部分ハッシュと一致しないことを決定すること、および
前記決定に応答して、前記部分を実行のためにメモリ内にページングするための前記要求を失敗にすることを
前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。 - 前記コンピュータプログラム命令は、
前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、
前記オープン要求のインターセプトに応答して、
前記実行可能ファイルのヘッダの識別ハッシュを計算すること、
前記複数の部分バイナリハッシュのうちの前記ヘッダと一致する第1のハッシュを識別するために、前記識別ハッシュとシステムカタログに格納された複数の部分実行可能ファイルハッシュのそれぞれとを比較すること、および
前記実行可能ファイルの1つまたは複数の部分を実行のためのメモリ内へのページングに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記ハッシュの位置特定に応答して、前記実行可能ファイルの前記複数の部分イメージハッシュを前記システムカタログからメモリへコピーすることを
前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。 - 前記コンピュータプログラム命令は、
前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、および
前記オープン要求のインターセプトに応答して、および前記実行可能ファイルが自己署名暗号化ファイルであるとの決定に応答して、前記実行可能ファイルの1つまたは複数の部分を実行のためにメモリ内にページングすることに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記複数の部分イメージハッシュを前記自己署名暗号化ファイルからメモリへコピーすることを
前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/037,566 US7577848B2 (en) | 2005-01-18 | 2005-01-18 | Systems and methods for validating executable file integrity using partial image hashes |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006202270A true JP2006202270A (ja) | 2006-08-03 |
JP2006202270A5 JP2006202270A5 (ja) | 2009-03-12 |
Family
ID=36293551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005362049A Pending JP2006202270A (ja) | 2005-01-18 | 2005-12-15 | 部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7577848B2 (ja) |
EP (1) | EP1681609A1 (ja) |
JP (1) | JP2006202270A (ja) |
KR (1) | KR20060083850A (ja) |
CN (1) | CN1808326A (ja) |
AU (1) | AU2005234683A1 (ja) |
BR (1) | BRPI0506192A (ja) |
CA (1) | CA2530099A1 (ja) |
MX (1) | MXPA05013801A (ja) |
RU (1) | RU2005140018A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008056700A1 (fr) * | 2006-11-09 | 2008-05-15 | Panasonic Corporation | Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals |
JP2010102579A (ja) * | 2008-10-24 | 2010-05-06 | Hitachi Ltd | 情報処理装置、及びコンピュータプログラム |
JP2016009884A (ja) * | 2014-06-20 | 2016-01-18 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
US9753868B2 (en) | 2014-06-20 | 2017-09-05 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
US9753867B2 (en) | 2014-06-20 | 2017-09-05 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Families Citing this family (116)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7627761B2 (en) * | 2002-07-22 | 2009-12-01 | Xerox Corporation | System for authentication of JPEG image data |
US7552342B1 (en) * | 2005-02-16 | 2009-06-23 | Rennie Glen Software, Llc | Method and system for increasing the tamper resistance of a software application |
US7490352B2 (en) | 2005-04-07 | 2009-02-10 | Microsoft Corporation | Systems and methods for verifying trust of executable files |
US8060860B2 (en) * | 2005-04-22 | 2011-11-15 | Apple Inc. | Security methods and systems |
US7953980B2 (en) | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US7669242B2 (en) * | 2005-06-30 | 2010-02-23 | Intel Corporation | Agent presence monitor configured to execute in a secure environment |
US8839450B2 (en) | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
WO2007027427A2 (en) * | 2005-08-29 | 2007-03-08 | Wms Gaming Inc. | On-the-fly encryption on a gaming machine |
JP2007066271A (ja) * | 2005-09-02 | 2007-03-15 | Canon Inc | 情報処理装置及びその制御方法、データ処理装置、並びにプログラム |
JP4527640B2 (ja) * | 2005-09-15 | 2010-08-18 | 株式会社ソニー・コンピュータエンタテインメント | データ読出装置 |
US20070067590A1 (en) * | 2005-09-22 | 2007-03-22 | Uday Savagaonkar | Providing protected access to critical memory regions |
US8701091B1 (en) | 2005-12-15 | 2014-04-15 | Nvidia Corporation | Method and system for providing a generic console interface for a graphics application |
US20070157321A1 (en) * | 2006-01-04 | 2007-07-05 | Stephen Errico | Method to improve the integrity of internet programs, websites and software |
US7891012B1 (en) | 2006-03-01 | 2011-02-15 | Nvidia Corporation | Method and computer-usable medium for determining the authorization status of software |
US8452981B1 (en) * | 2006-03-01 | 2013-05-28 | Nvidia Corporation | Method for author verification and software authorization |
US7594136B2 (en) * | 2006-04-19 | 2009-09-22 | Microsoft Corporation | Paging-triggered corrupted file recovery |
US7730302B2 (en) * | 2006-05-05 | 2010-06-01 | Microsoft Corporation | Secure and modifiable configuration files used for remote sessions |
US7778800B2 (en) * | 2006-08-01 | 2010-08-17 | Nvidia Corporation | Method and system for calculating performance parameters for a processor |
US8436864B2 (en) * | 2006-08-01 | 2013-05-07 | Nvidia Corporation | Method and user interface for enhanced graphical operation organization |
US8963932B1 (en) | 2006-08-01 | 2015-02-24 | Nvidia Corporation | Method and apparatus for visualizing component workloads in a unified shader GPU architecture |
US8436870B1 (en) | 2006-08-01 | 2013-05-07 | Nvidia Corporation | User interface and method for graphical processing analysis |
US8607151B2 (en) * | 2006-08-01 | 2013-12-10 | Nvidia Corporation | Method and system for debugging a graphics pipeline subunit |
US8976008B2 (en) | 2006-08-24 | 2015-03-10 | Privacydatasystems, Llc | Cross-domain collaborative systems and methods |
US7802050B2 (en) * | 2006-09-29 | 2010-09-21 | Intel Corporation | Monitoring a target agent execution pattern on a VT-enabled system |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
GB0623933D0 (en) * | 2006-11-29 | 2007-01-10 | Ibm | Apparatus and method for synchronizing controller firmware download |
US8495383B2 (en) | 2006-12-14 | 2013-07-23 | Nokia Corporation | Method for the secure storing of program state data in an electronic device |
US20080163212A1 (en) * | 2006-12-29 | 2008-07-03 | Zimmer Vincent J | Paralleled management mode integrity checks |
US8375458B2 (en) * | 2007-01-05 | 2013-02-12 | Apple Inc. | System and method for authenticating code executing on computer system |
US8701187B2 (en) * | 2007-03-29 | 2014-04-15 | Intel Corporation | Runtime integrity chain verification |
US9092629B2 (en) * | 2007-04-16 | 2015-07-28 | The Directv Group, Inc. | Method and apparatus for authenticating a code image upon starting a device |
US8296738B1 (en) | 2007-08-13 | 2012-10-23 | Nvidia Corporation | Methods and systems for in-place shader debugging and performance tuning |
US9035957B1 (en) | 2007-08-15 | 2015-05-19 | Nvidia Corporation | Pipeline debug statistics system and method |
US8311058B2 (en) | 2008-05-10 | 2012-11-13 | Vantrix Corporation | Modular transcoding pipeline |
US8677241B2 (en) * | 2007-09-10 | 2014-03-18 | Vantrix Corporation | Method and system for multimedia messaging service (MMS) to video adaptation |
US8220051B2 (en) * | 2007-09-28 | 2012-07-10 | Vantrix Corporation | Generation and delivery of multimedia content-adaptation notifications |
US9424266B2 (en) | 2007-10-01 | 2016-08-23 | Microsoft Technology Licensing, Llc | Efficient file hash identifier computation |
GB0719250D0 (en) * | 2007-10-02 | 2007-11-14 | Iti Scotland Ltd | Anti-hack method |
US8375219B2 (en) * | 2007-10-24 | 2013-02-12 | Microsoft Corporation | Program and operation verification |
US20090113166A1 (en) * | 2007-10-31 | 2009-04-30 | Agere Systems Inc. | Hashing method for nand flash memory |
US7765500B2 (en) * | 2007-11-08 | 2010-07-27 | Nvidia Corporation | Automated generation of theoretical performance analysis based upon workload and design configuration |
US8171167B2 (en) * | 2007-11-13 | 2012-05-01 | Vantrix Corporation | Intelligent caching of media files |
US8099718B2 (en) * | 2007-11-13 | 2012-01-17 | Intel Corporation | Method and system for whitelisting software components |
US8601285B2 (en) | 2007-11-23 | 2013-12-03 | Nokia Corporation | Method for secure program code execution in an electronic device |
US20090193211A1 (en) * | 2008-01-24 | 2009-07-30 | Broadcom Corporation | Software authentication for computer systems |
JP4944812B2 (ja) * | 2008-02-20 | 2012-06-06 | 株式会社リコー | 情報処理システムと情報処理方法とプログラム |
US8448002B2 (en) * | 2008-04-10 | 2013-05-21 | Nvidia Corporation | Clock-gated series-coupled data processing modules |
US9081962B2 (en) | 2008-04-30 | 2015-07-14 | Graeme Harkness | Anti-tamper techniques |
US8087086B1 (en) * | 2008-06-30 | 2011-12-27 | Symantec Corporation | Method for mitigating false positive generation in antivirus software |
US8108686B2 (en) * | 2008-09-18 | 2012-01-31 | Oracle America, Inc. | Method and system for detecting modified pages |
US8364601B2 (en) * | 2008-12-31 | 2013-01-29 | Intel Corporation | Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain |
CN101859330B (zh) * | 2009-04-09 | 2012-11-21 | 辉达公司 | 验证集成电路效能模型的方法 |
US8839458B2 (en) * | 2009-05-12 | 2014-09-16 | Nokia Corporation | Method, apparatus, and computer program for providing application security |
US20110107325A1 (en) * | 2009-11-03 | 2011-05-05 | Jack Matthew | Early Detection of Errors in a Software Installation |
WO2011066644A1 (en) | 2009-12-01 | 2011-06-09 | Vantrix Corporation | System and methods for efficient media delivery using cache |
US10114678B2 (en) * | 2010-03-19 | 2018-10-30 | Micro Focus Software Inc. | Techniques for managing service definitions in an intelligent workload management system |
CN101901323B (zh) * | 2010-07-22 | 2015-04-22 | 湖北盛天网络技术股份有限公司 | 一种监控程序模块加载活动的系统过滤方法 |
US8745750B2 (en) | 2011-04-21 | 2014-06-03 | Microsoft Corporation | Origination verification using execution transparent marker context |
KR101320680B1 (ko) * | 2011-10-26 | 2013-11-21 | (주)유성글로벌 | 소프트웨어의 무결성 검사 장치 및 방법 |
US8584235B2 (en) | 2011-11-02 | 2013-11-12 | Bitdefender IPR Management Ltd. | Fuzzy whitelisting anti-malware systems and methods |
EP2626804B1 (en) * | 2012-02-09 | 2017-09-13 | Inside Secure | Method for managing memory space in a secure non-volatile memory of a secure element |
US8687902B2 (en) * | 2012-03-29 | 2014-04-01 | Intel Corporation | System, method, and computer program product for decompression of block compressed images |
US8973124B2 (en) | 2012-04-30 | 2015-03-03 | General Electric Company | Systems and methods for secure operation of an industrial controller |
US9046886B2 (en) | 2012-04-30 | 2015-06-02 | General Electric Company | System and method for logging security events for an industrial control system |
US8964973B2 (en) | 2012-04-30 | 2015-02-24 | General Electric Company | Systems and methods for controlling file execution for industrial control systems |
US8959362B2 (en) * | 2012-04-30 | 2015-02-17 | General Electric Company | Systems and methods for controlling file execution for industrial control systems |
US9323315B2 (en) | 2012-08-15 | 2016-04-26 | Nvidia Corporation | Method and system for automatic clock-gating of a clock grid at a clock source |
US9112922B2 (en) | 2012-08-28 | 2015-08-18 | Vantrix Corporation | Method and system for self-tuning cache management |
US8850371B2 (en) | 2012-09-14 | 2014-09-30 | Nvidia Corporation | Enhanced clock gating in retimed modules |
US9519568B2 (en) | 2012-12-31 | 2016-12-13 | Nvidia Corporation | System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application |
EP2793160A1 (en) | 2013-04-19 | 2014-10-22 | Thomson Licensing | Method and device for verification of an application |
US9792436B1 (en) * | 2013-04-29 | 2017-10-17 | Symantec Corporation | Techniques for remediating an infected file |
US9471456B2 (en) | 2013-05-15 | 2016-10-18 | Nvidia Corporation | Interleaved instruction debugger |
US9270467B1 (en) * | 2013-05-16 | 2016-02-23 | Symantec Corporation | Systems and methods for trust propagation of signed files across devices |
US9852290B1 (en) * | 2013-07-12 | 2017-12-26 | The Boeing Company | Systems and methods of analyzing a software component |
EP2840492A1 (en) * | 2013-08-23 | 2015-02-25 | British Telecommunications public limited company | Method and apparatus for modifying a computer program in a trusted manner |
JP6244759B2 (ja) * | 2013-09-10 | 2017-12-13 | 株式会社ソシオネクスト | セキュアブート方法、半導体装置、及び、セキュアブートプログラム |
US9479521B2 (en) | 2013-09-30 | 2016-10-25 | The Boeing Company | Software network behavior analysis and identification system |
US9836604B2 (en) | 2015-01-30 | 2017-12-05 | International Business Machines Corporation | File integrity preservation |
US9965639B2 (en) | 2015-07-17 | 2018-05-08 | International Business Machines Corporation | Source authentication of a software product |
US10922418B2 (en) | 2015-10-01 | 2021-02-16 | Twistlock, Ltd. | Runtime detection and mitigation of vulnerabilities in application software containers |
US10599833B2 (en) | 2015-10-01 | 2020-03-24 | Twistlock, Ltd. | Networking-based profiling of containers and security enforcement |
US10706145B2 (en) | 2015-10-01 | 2020-07-07 | Twistlock, Ltd. | Runtime detection of vulnerabilities in software containers |
US10586042B2 (en) | 2015-10-01 | 2020-03-10 | Twistlock, Ltd. | Profiling of container images and enforcing security policies respective thereof |
US10693899B2 (en) | 2015-10-01 | 2020-06-23 | Twistlock, Ltd. | Traffic enforcement in containerized environments |
US10943014B2 (en) | 2015-10-01 | 2021-03-09 | Twistlock, Ltd | Profiling of spawned processes in container images and enforcing security policies respective thereof |
US10664590B2 (en) | 2015-10-01 | 2020-05-26 | Twistlock, Ltd. | Filesystem action profiling of containers and security enforcement |
US10223534B2 (en) * | 2015-10-15 | 2019-03-05 | Twistlock, Ltd. | Static detection of vulnerabilities in base images of software containers |
US10567411B2 (en) | 2015-10-01 | 2020-02-18 | Twistlock, Ltd. | Dynamically adapted traffic inspection and filtering in containerized environments |
US10778446B2 (en) | 2015-10-15 | 2020-09-15 | Twistlock, Ltd. | Detection of vulnerable root certificates in software containers |
GB2545409B (en) * | 2015-12-10 | 2020-01-08 | Advanced Risc Mach Ltd | Wear levelling in non-volatile memories |
US10474823B2 (en) * | 2016-02-16 | 2019-11-12 | Atmel Corporation | Controlled secure code authentication |
US10616197B2 (en) | 2016-04-18 | 2020-04-07 | Atmel Corporation | Message authentication with secure code verification |
US11294991B2 (en) * | 2016-05-13 | 2022-04-05 | nChain Holdings Limited | Method and system for verifying ownership of a digital asset using a distributed hash table and a peer-to-peer distributed ledger |
KR20180002349A (ko) * | 2016-06-29 | 2018-01-08 | 에스프린팅솔루션 주식회사 | 화상 형성 장치에서 실행 파일의 위변조를 검증하는 방법 및 이를 이용하는 화상 형성 장치 |
KR102538096B1 (ko) * | 2016-09-13 | 2023-05-31 | 삼성전자주식회사 | 어플리케이션을 검증하는 디바이스 및 방법 |
JP6766598B2 (ja) * | 2016-10-31 | 2020-10-14 | セイコーエプソン株式会社 | 画像処理装置、画像処理方法および制御プログラム |
US10567399B2 (en) | 2017-03-28 | 2020-02-18 | Cisco Technology, Inc. | Fragmented malware hash lookup in cloud repository |
GB2562079B (en) * | 2017-05-04 | 2021-02-10 | Arm Ip Ltd | Continuous hash verification |
CN109710315B (zh) * | 2017-10-25 | 2022-05-10 | 阿里巴巴集团控股有限公司 | Bios刷写方法及bios镜像文件的处理方法 |
US11190357B2 (en) * | 2018-05-18 | 2021-11-30 | Avive Solutions, Inc. | Framework for ensuring software components are not corrupted |
WO2019241069A1 (en) * | 2018-06-12 | 2019-12-19 | Sylabs Inc. | System and method for providing a container environment in a single file |
CN110955916B (zh) * | 2018-09-26 | 2023-09-05 | 深信服科技股份有限公司 | 一种数据完整性保护方法、系统及相关设备 |
CN111310172B (zh) * | 2018-12-12 | 2022-03-11 | 北京忆芯科技有限公司 | 通过反汇编验证处理器执行轨迹的方法及控制部件 |
WO2020178812A1 (en) * | 2019-03-04 | 2020-09-10 | Saferide Technologies Ltd. | Executable memory page validation system and method |
TWI772648B (zh) * | 2019-06-03 | 2022-08-01 | 銓鴻資訊有限公司 | 基於集體驗證的部分資料驗證方法 |
KR102415005B1 (ko) * | 2019-08-21 | 2022-07-01 | 한국전자통신연구원 | 실행코드를 검증하는 하드웨어 보안모듈 및 그것을 갖는 디바이스 및 그것의 동작 방법 |
US11263109B2 (en) | 2020-04-16 | 2022-03-01 | Bank Of America Corporation | Virtual environment system for validating executable data using accelerated time-based process execution |
US11481484B2 (en) | 2020-04-16 | 2022-10-25 | Bank Of America Corporation | Virtual environment system for secure execution of program code using cryptographic hashes |
US11423160B2 (en) * | 2020-04-16 | 2022-08-23 | Bank Of America Corporation | System for analysis and authorization for use of executable environment data in a computing system using hash outputs |
US11528276B2 (en) | 2020-04-16 | 2022-12-13 | Bank Of America Corporation | System for prevention of unauthorized access using authorized environment hash outputs |
US11372982B2 (en) | 2020-07-02 | 2022-06-28 | Bank Of America Corporation | Centralized network environment for processing validated executable data based on authorized hash outputs |
US11895129B2 (en) * | 2021-06-29 | 2024-02-06 | Juniper Networks, Inc. | Detecting and blocking a malicious file early in transit on a network |
US20230125593A1 (en) * | 2021-10-27 | 2023-04-27 | Dell Products L.P. | Securing data storage by slicing swapped data portions into data fragments and applying a shuffle index |
US20230179607A1 (en) * | 2021-12-03 | 2023-06-08 | Juniper Networks, Inc. | Blocking or allowing a file stream associated with a file based on an initial portion of the file |
CN114567496B (zh) * | 2022-03-03 | 2024-02-20 | 浪潮云信息技术股份公司 | 一种进行云服务器镜像完整性校验的方法及系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5625693A (en) | 1995-07-07 | 1997-04-29 | Thomson Consumer Electronics, Inc. | Apparatus and method for authenticating transmitting applications in an interactive TV system |
US5892904A (en) | 1996-12-06 | 1999-04-06 | Microsoft Corporation | Code certification for network transmission |
US5757919A (en) | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
US7620811B2 (en) * | 2002-04-23 | 2009-11-17 | Panasonic Corporation | Server device and program management system |
US7784044B2 (en) * | 2002-12-02 | 2010-08-24 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US8332464B2 (en) * | 2002-12-13 | 2012-12-11 | Anxebusiness Corp. | System and method for remote network access |
US7565551B2 (en) | 2003-02-19 | 2009-07-21 | Microsoft Corporation | Enhancing software integrity through installation and verification |
US6961852B2 (en) * | 2003-06-19 | 2005-11-01 | International Business Machines Corporation | System and method for authenticating software using hidden intermediate keys |
US7103779B2 (en) * | 2003-09-18 | 2006-09-05 | Apple Computer, Inc. | Method and apparatus for incremental code signing |
US20050188214A1 (en) * | 2004-02-23 | 2005-08-25 | Worley John S. | Authenticatable software modules |
US7461259B2 (en) * | 2004-06-30 | 2008-12-02 | Nokia Corporation | Method and apparatus to provide secure mobile file system |
US7805765B2 (en) * | 2004-12-28 | 2010-09-28 | Lenovo (Singapore) Pte Ltd. | Execution validation using header containing validation data |
US7490352B2 (en) * | 2005-04-07 | 2009-02-10 | Microsoft Corporation | Systems and methods for verifying trust of executable files |
-
2005
- 2005-01-18 US US11/037,566 patent/US7577848B2/en not_active Expired - Fee Related
- 2005-11-18 AU AU2005234683A patent/AU2005234683A1/en not_active Abandoned
- 2005-11-29 BR BRPI0506192-0A patent/BRPI0506192A/pt not_active IP Right Cessation
- 2005-11-29 KR KR1020050114676A patent/KR20060083850A/ko not_active Application Discontinuation
- 2005-12-14 CA CA002530099A patent/CA2530099A1/en not_active Abandoned
- 2005-12-15 JP JP2005362049A patent/JP2006202270A/ja active Pending
- 2005-12-16 MX MXPA05013801A patent/MXPA05013801A/es not_active Application Discontinuation
- 2005-12-19 CN CNA2005101361455A patent/CN1808326A/zh active Pending
- 2005-12-20 RU RU2005140018/09A patent/RU2005140018A/ru not_active Application Discontinuation
- 2005-12-21 EP EP05112610A patent/EP1681609A1/en not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008056700A1 (fr) * | 2006-11-09 | 2008-05-15 | Panasonic Corporation | Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals |
US8453206B2 (en) | 2006-11-09 | 2013-05-28 | Panasonic Corporation | Detecting unauthorized tampering of a program |
JP2010102579A (ja) * | 2008-10-24 | 2010-05-06 | Hitachi Ltd | 情報処理装置、及びコンピュータプログラム |
JP2016009884A (ja) * | 2014-06-20 | 2016-01-18 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
US9753868B2 (en) | 2014-06-20 | 2017-09-05 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
US9753867B2 (en) | 2014-06-20 | 2017-09-05 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
US9779033B2 (en) | 2014-06-20 | 2017-10-03 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
AU2005234683A1 (en) | 2006-08-03 |
BRPI0506192A (pt) | 2006-09-19 |
US20060161761A1 (en) | 2006-07-20 |
MXPA05013801A (es) | 2007-11-14 |
EP1681609A1 (en) | 2006-07-19 |
KR20060083850A (ko) | 2006-07-21 |
CA2530099A1 (en) | 2006-07-18 |
RU2005140018A (ru) | 2007-07-20 |
CN1808326A (zh) | 2006-07-26 |
US7577848B2 (en) | 2009-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7577848B2 (en) | Systems and methods for validating executable file integrity using partial image hashes | |
US7490352B2 (en) | Systems and methods for verifying trust of executable files | |
US20060236122A1 (en) | Secure boot | |
US8595510B2 (en) | Methods, apparatus and systems to improve security in computer systems | |
US20170262656A1 (en) | Method and device for providing verifying application integrity | |
US20170270319A1 (en) | Method and device for providing verifying application integrity | |
JP5346608B2 (ja) | 情報処理装置およびファイル検証システム | |
US20170262657A1 (en) | Method and device for providing verifying application integrity | |
US20170262658A1 (en) | Method and device for providing verifying application integrity | |
JP2020119503A (ja) | ファイルのデジタル署名の検証における攻撃に対するレジリエンスのためのシステム及び方法 | |
JP2020113253A (ja) | ファイルのデジタル署名を検証するためのシステム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081203 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110614 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111115 |