JP2006202270A - 部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法 - Google Patents

部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法 Download PDF

Info

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
Application number
JP2005362049A
Other languages
English (en)
Other versions
JP2006202270A5 (ja
Inventor
Jonathan D Schwartz
ディー.シュワルツ ジョナサン
Philip Joseph Hallin
ジョーゼフ ハリン フィリップ
Yu Lin Sie
リン スエ イゥー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006202270A publication Critical patent/JP2006202270A/ja
Publication of JP2006202270A5 publication Critical patent/JP2006202270A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting 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

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が含まれる。
システム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に関連して以下で図示および説明する。)以下で説明するように、これは、不要/追加コードおよびリソース(たとえばページまたはスクリプト)をメモリ内に入れる必要なしに実施される。
ファイルシステム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はページ内/部分内要求に失敗し、変更/破損/改ざんされたコードはコードとしてメモリ内に入れられないため、その後実行されない。
上記に鑑み、実行可能ファイルの一部(たとえばページ)をストレージデバイスからメモリに入れるためにシステム100がページングおよび他のメモリコードローディングオペレーションを実施すると、システム100は入れられるそのコード部分のみのインテグリティーをチェックする。その結果、実行可能ファイルの追加/不要部分(たとえば実行可能ファイル全体)をロードすることなくこの部分のみが検証されるため、リソースまたは性能への影響が非常に少なくなる。
例示的手順
図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つまたは組み合わせに関して、いかなる依存関係または要件をも有するものと解釈されるべきでない。
本明細書に記載された方法およびシステムは、多数の他の汎用または特定用途向けのコンピューティングシステム、環境、または構成で動作可能である。使用に好適な可能性のある良く知られたコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、ラップトップ、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のオペレーションに(プラグインまたはその他として)直接アクセスする。したがって、特定の特徴およびオペレーションは、主張された主題を実施する例示的な形として開示されたものである。
部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するための例示的システムを示す図である。 部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するための例示的手順を示す図である。 部分ハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法が完全または部分的に実施可能な、好適なコンピューティング環境の一例を示す図である。

Claims (20)

  1. 実行可能ファイルを表し、前記実行可能ファイルの全バイト数よりも小さい複数の部分イメージハッシュを生成するステップと、
    前記実行可能ファイルのコンピューティングデバイス上へのロードの後に起こる、前記実行可能ファイルの一部を実行のためにメモリ内にページングするための要求をインターセプトするステップと、
    前記部分を実行のためにメモリ内にページングする前に、前記要求のインターセプトに応答して、
    前記部分の検証ハッシュを計算するステップと、
    前記部分のコードインテグリティーを決定するために、前記検証ハッシュと前記複数の部分イメージハッシュのうちの前記部分と同じコードセグメントを表す部分ハッシュとを比較するステップと
    を有することを特徴とするコンピュータで実行される方法。
  2. 前記複数の部分イメージハッシュは、前記実行可能ファイルの前記コンピューティングデバイス上へのロードの前に計算されることを特徴とする請求項1に記載の方法。
  3. 前記複数の部分イメージハッシュは、システムカタログまたは自己署名暗号化ファイルに格納されることを特徴とする請求項1に記載の方法。
  4. 前記検証ハッシュが前記部分ハッシュと一致することを決定するステップと、
    前記決定に応答して、前記部分を実行のためにメモリ内にページングするステップと、
    をさらに有することを特徴とする請求項1に記載の方法。
  5. 前記検証ハッシュが前記部分ハッシュと一致しないことを決定するステップと、
    前記決定に応答して、前記部分を実行のためにメモリ内にページングするための前記要求を失敗にするステップと、
    をさらに有することを特徴とする請求項1に記載の方法。
  6. 前記実行可能ファイルのコンピューティングデバイス上へのロードの後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトするステップと、
    前記オープン要求のインターセプトに応答して、
    前記実行可能ファイルのヘッダの識別ハッシュを計算するステップと、
    前記複数の部分バイナリハッシュのうちの前記ヘッダと一致する第1のハッシュを識別するために、前記識別ハッシュとシステムカタログに格納された複数の部分実行可能ファイルハッシュのそれぞれとを比較するステップと、
    前記実行可能ファイルの1つまたは複数の部分を実行のためのメモリ内へのページングに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記ハッシュの前記識別に応答して、前記実行可能ファイルの前記複数の部分イメージハッシュを前記システムカタログからメモリへコピーするステップと
    をさらに有することを特徴とする請求項1に記載の方法。
  7. 前記実行可能ファイルのコンピューティングデバイス上へのロードの後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトするステップと、
    前記オープン要求のインターセプトに応答して、および前記実行可能ファイルが自己署名暗号化ファイルであるとの決定に応答して、前記実行可能ファイルの1つまたは複数の部分を実行のためにメモリ内にページングするステップに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記複数の部分イメージハッシュを前記自己署名暗号化ファイルからメモリへコピーするステップと、
    をさらに有することを特徴とする請求項1に記載の方法。
  8. 実行可能ファイルのダイジェストを表し、前記実行可能ファイルの全バイト数よりも少ない複数の部分イメージハッシュを生成すること、
    前記実行可能ファイルをコンピューティングデバイス上にロードした後に、前記実行可能ファイルの一部を実行のためにメモリ内にページングするための要求をインターセプトすること、
    前記部分を実行のためにメモリ内にページングする前に、前記要求のインターセプトに応答して、
    前記部分の検証ハッシュを計算すること、および
    前記部分のコードインテグリティーを決定するために、前記検証ハッシュと前記複数の部分イメージハッシュのうちの前記部分と同じコードセグメントを表す部分ハッシュとを比較することを
    プロセッサに実行させるコンピュータプログラム命令を備えることを特徴とするコンピュータ読み取り可能媒体。
  9. 前記複数の部分イメージハッシュは、前記実行可能ファイルを前記コンピューティングデバイス上にロードする前に計算されることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
  10. 前記複数の部分イメージハッシュは、システムカタログまたは自己署名暗号化ファイルに格納されることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
  11. 前記検証ハッシュが前記部分ハッシュと一致することを決定すること、および
    前記決定に応答して、前記部分を実行のためにメモリ内にページングすることを
    プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
  12. 前記検証ハッシュが前記部分ハッシュと一致しないことを決定すること、および
    前記決定に応答して、前記部分を実行のためにメモリ内にページングするための前記要求を失敗にすることを
    プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
  13. 前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、
    前記オープン要求のインターセプトに応答して、
    前記実行可能ファイルのヘッダの識別ハッシュを計算すること、
    前記複数の部分バイナリハッシュのうちの前記ヘッダと一致する第1のハッシュを識別するために、前記識別ハッシュとシステムカタログに格納された複数の部分実行可能ファイルハッシュのそれぞれとを比較すること、および
    前記実行可能ファイルの1つまたは複数の部分を実行のためのメモリ内へのページングに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記ハッシュの位置特定に応答して、前記実行可能ファイルの前記複数の部分イメージハッシュを前記システムカタログからメモリへコピーすることを
    プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
  14. 前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、および
    前記オープン要求のインターセプトに応答して、および前記実行可能ファイルが自己署名暗号化ファイルであるとの決定に応答して、前記実行可能ファイルの1つまたは複数の部分を実行のためにメモリ内にページングすることに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記複数の部分イメージハッシュを前記自己署名暗号化ファイルからメモリへコピーすることを
    プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能媒体。
  15. プロセッサと、前記プロセッサに結合されたメモリとを備えたコンピューティングデバイスであって、前記メモリは、
    実行可能ファイルのダイジェストを表し、前記実行可能ファイルの全バイト数よりも小さい複数の部分イメージハッシュを生成すること、
    前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイルの一部を実行のためにメモリ内にページングするための要求をインターセプトすること、
    前記部分を実行のためにメモリ内にページングする前に、前記要求のインターセプトに応答して、
    前記部分の検証ハッシュを計算すること、および
    前記部分のコードインテグリティーを決定するために、前記検証ハッシュと前記複数の部分イメージハッシュのうちの前記部分と同じコードセグメントを表す部分ハッシュとを比較することを
    前記プロセッサに実行させるコンピュータプログラム命令を備えることを特徴とするコンピューティングデバイス。
  16. 前記複数の部分イメージハッシュは、システムカタログまたは自己署名暗号化ファイルに格納されることを特徴とする請求項15に記載のコンピューティングデバイス。
  17. 前記コンピュータプログラム命令は、
    前記検証ハッシュが前記部分ハッシュと一致することを決定すること、および
    前記決定に応答して、前記部分を実行のためにメモリ内にページングすること、
    前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。
  18. 前記コンピュータプログラム命令は、
    前記検証ハッシュが前記部分ハッシュと一致しないことを決定すること、および
    前記決定に応答して、前記部分を実行のためにメモリ内にページングするための前記要求を失敗にすることを
    前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。
  19. 前記コンピュータプログラム命令は、
    前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、
    前記オープン要求のインターセプトに応答して、
    前記実行可能ファイルのヘッダの識別ハッシュを計算すること、
    前記複数の部分バイナリハッシュのうちの前記ヘッダと一致する第1のハッシュを識別するために、前記識別ハッシュとシステムカタログに格納された複数の部分実行可能ファイルハッシュのそれぞれとを比較すること、および
    前記実行可能ファイルの1つまたは複数の部分を実行のためのメモリ内へのページングに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記ハッシュの位置特定に応答して、前記実行可能ファイルの前記複数の部分イメージハッシュを前記システムカタログからメモリへコピーすることを
    前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。
  20. 前記コンピュータプログラム命令は、
    前記実行可能ファイルをコンピューティングデバイス上にロードした後に起こる、前記実行可能ファイル用のコードセグメントを作成するためのオープン要求をインターセプトすること、および
    前記オープン要求のインターセプトに応答して、および前記実行可能ファイルが自己署名暗号化ファイルであるとの決定に応答して、前記実行可能ファイルの1つまたは複数の部分を実行のためにメモリ内にページングすることに応答したその後の部分イメージハッシュコードインテグリティー検証オペレーションのために、前記複数の部分イメージハッシュを前記自己署名暗号化ファイルからメモリへコピーすることを
    前記プロセッサに実行させるコンピュータプログラム命令をさらに備えることを特徴とする請求項15に記載のコンピューティングデバイス。
JP2005362049A 2005-01-18 2005-12-15 部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法 Pending JP2006202270A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (7)

* Cited by examiner, † Cited by third party
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