JP2007128537A - 動的に接続可能な実行イメージの真正性検証システム及び方法 - Google Patents
動的に接続可能な実行イメージの真正性検証システム及び方法 Download PDFInfo
- Publication number
- JP2007128537A JP2007128537A JP2006339906A JP2006339906A JP2007128537A JP 2007128537 A JP2007128537 A JP 2007128537A JP 2006339906 A JP2006339906 A JP 2006339906A JP 2006339906 A JP2006339906 A JP 2006339906A JP 2007128537 A JP2007128537 A JP 2007128537A
- Authority
- JP
- Japan
- Prior art keywords
- executable image
- pointer
- executable
- location
- image
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】 動的にコネクト可能な実行可能イメージの真正性を検証するシステム及び方法を提供することである。
【解決手段】 実行可能イメージの真正性を判定するシステムであって、一つ以上のポインタを有する実行可能イメージが設けられ、実行可能イメージは、各ポインタが実行可能イメージ内のロケーションを参照するかどうかを指定する情報を含み、各ポインタが実行可能イメージ内の対応したロケーションを参照するかどうかを判定する機能を備えた検証部が更に設けられている、システム。
【選択図】 図3
【解決手段】 実行可能イメージの真正性を判定するシステムであって、一つ以上のポインタを有する実行可能イメージが設けられ、実行可能イメージは、各ポインタが実行可能イメージ内のロケーションを参照するかどうかを指定する情報を含み、各ポインタが実行可能イメージ内の対応したロケーションを参照するかどうかを判定する機能を備えた検証部が更に設けられている、システム。
【選択図】 図3
Description
本発明はコンピュータシステムに係る。特に、本発明は、動的にコネクト可能な実行可能イメージの真正性を検証するシステム及び方法に関する。
新しいオブジェクトモデルは、ランタイム時にソフトウェアアプリケーションを動的に統合する。例えば、マイクロソフト社によりライセンスが供与されるウィンドウズ(登録商標)は、ソフトウェアアプリケーションの実行中にソフトウェアアプリケーションを動的リンクライブラリと動的に統合することができる。ユーザがソフトウェアアプリケーションの実行を要求した後、プログラムローダーは、プロセスイメージを作成するため、アプリケーションのディスクイメージをディスク記憶装置からメインメモリへコピーする。ディスクイメージは、ロードされる前の実行可能イメージを表し、プロセスイメージはメモリにロードされた後の実行可能イメージを表す。ディスクイメージとプロセスイメージの両方は、典型的に、ソフトウェアの中でランタイム時に動的リンクライブラリを参照するため用意されるべき部分を識別するフィクスアップ・セクションを含む。
注意すべきことは、ローディング後に、プロセスイメージはディスクイメージと異なる点である。そのため、ディスクイメージに関して準備されているチェックサムは、たとえプロセスイメージが不正に改ざんされていなくても、プロセスイメージのチェックサムと一致しなくなる。
したがって、動的ローディング環境においてソフトウェアアプリケーションの正体を検証し得るシステムが要望される。特に、このシステムは、別のデータオブジェクトへ動的にコネクトされたソフトウェアアプリケーションがソフトウェアアプリケーションの実行に続いて改ざんされたかどうかを判定できなければならない。
本発明の課題は、動的にコネクト可能な実行可能イメージの真正性を検証するシステム及び方法を提供することである。
本発明の一実施例は、実行可能イメージの真正性を判定するシステムである。このシステムは、一つ以上のポインタを有する実行可能イメージと、時間的に第1の点(第1の時点)で各ポインタ以外の実行可能イメージの選択された内容に基づいて対照デジタル署名を生成する機能を備えた検証部と、を具備し、検証部は、各ポインタ以外の実行可能イメージの選択された内容に基づいて第2の時点で真正デジタル署名を生成し、検証部は、対照デジタル署名が真正デジタル署名と一致するかどうかを判定する。
本発明の他の実施例は、実行可能イメージの真正性を判定するシステムであり、このシステムは、一つ以上のポインタを有する実行可能イメージを具備し、実行可能イメージは、各ポインタが実行可能イメージ内のロケーションを参照するかどうかを指定する情報を含み、このシステムは、各ポインタが実行可能イメージ内の対応したロケーションを参照するかどうかを判定する機能を備えた検証部を具備する。
本発明の更に別の実施例は、実行可能イメージの真正性を判定するシステムであり、このシステムは、第1の実行可能イメージと、第1の実行可能イメージ内のロケーションを参照するポインタを含む第2の実行可能イメージと、ポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する機能を備えた検証部と、を具備する。
本発明の更に別の実施例は、実行可能イメージの真正性を判定する機能を備えたシステムであり、このシステムは、第1の実行可能イメージ、第2の実行可能イメージ、及び、検証部を具備し、第2の実行可能イメージは、第1の実行可能イメージの識別子及び一つ以上の外部ポインタを収容するインポートテーブルと、機械コード及び一つ以上のインポートポインタを収容するコードセクションとを含み、各外部ポインタは第1の実行可能イメージ内のロケーションを参照し、各インポートポインタはインポートテーブル内のロケーションを参照し、検証部は、実行可能イメージの選択された内容に基づいて対照デジタル署名を第1の時点で生成する機能を備え、各インポートポインタ及び各外部ポインタは選択された内容に含まれず、検証部は、一つ以上のポインタの各々を含まない実行可能イメージの選択された内容に基づいて第2の時点で真正デジタル署名を生成し、検証部は、対照デジタル署名が真正デジタル署名と一致するかどうかを判定し、検証部は、各インポートポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定し、検証部は、インポートポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する。
本発明によると、動的にコネクト可能な実行可能イメージの真正性を検証するシステム及び方法を提供することが可能となる。
以下の説明は、本発明のある特定の実施例を対象にしている。しかし、本発明は、特許請求の範囲に記載され、対象とされているように様々な異なる態様で実施され得る。
・システム概要
図1は、コンピュータ90を示す上位レベルのブロック図である。コンピュータ90は、コンピュータ90で実行される一つ以上の実行可能イメージ100に関して真正性チェックを可能にする。
図1は、コンピュータ90を示す上位レベルのブロック図である。コンピュータ90は、コンピュータ90で実行される一つ以上の実行可能イメージ100に関して真正性チェックを可能にする。
コンピュータ90は、Pentium(登録商標)プロセッサ、Pentium (登録商標)Proプロセッサ、8051プロセッサ、MPS(登録商標)プロセッサ、Power PC(登録商標)プロセッサ、或いは、ALPHA(登録商標)プロセッサのような従来の汎用型の単一チップ若しくはマルチチップのマイクロプロセッサを利用する。
コンピュータ90は、オペレーティングシステム95とメモリ108を具備する。オペレーティングシステムは、どのオペレーティングシステムのベンダーから供給されるものでもよく、例えば、UNIX(登録商標)、LINUX、ディスク・オペレーティング・システム(DOS)、OS/2、Windows(登録商標) 3.X、Windows(登録商標) 95、Windows(登録商標) 98、及び、Windows(登録商標) NTなどを含む。説明の便宜上、本発明の実施例は、Windows(登録商標) 95に関して記述される。
コンピュータ90は、実行可能イメージ100をコンピュータ90へ供給する一つ以上の実行可能イメージ供給元107と通信する。図1に示されるように、典型的な実行可能イメージ供給元には、サーバ110、インターネット114、データベース118、ネットワーク122、ハードウェア装置128、リムーバル記憶装置130などが含まれる。
実行可能イメージ100は、それ自体で、若しくは、他の実行可能イメージと共に、一つ以上のソフトウェア・アプリケーションを定義することができるデータオブジェクトである。ソフトウェア・アプリケーションには、例えば、ワード・プロセッサ、データベース、デジタル権利管理システム、個人ファイナンス・ユーティリティ、グラフィック・ツール、インターネット・ブラウザ、コンピュータゲーム、通信プログラム、認証プログラム、電子ウォレット、マルチメディア・レンダラ、契約マネージャ等が含まれる。更に、実行可能イメージ100は、他の実行可能イメージと動的に連結可能である。例えば、Windows(登録商標)95と共に使用するため開発された本発明の一実施例において、実行可能イメージは、動的リンクテーブル(DLL)である。
インターネット114は、公衆インターネット、私設インターネット、セキュアインターネット、私設網、公衆網、付加価値網、イントラネット等のようなバリエーションがある。
ネットワーク122は、任意のタイプの電子的に接続されたコンピュータのグループを含み、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)のようなネットワークを含む。更に、ネットワークへの接続は、例えば、遠隔モデム、イーサネット(登録商標)(IEEE 802.3)、トークンリング(IEEE 802.5)、ファイバ・ディストリビューテッド・データリンク・インタフェース(FDDI)、又は、非同期転送モード(ATM)等によって行われる。コンピューティング装置は、デスクトップ、サーバ、ポータブル、ハンドヘルド、セットトップ、若しくは、その他の望ましい構成の型である。ハードウェア装置126は、論理チップ、ROM、RAM、スマートカード、或いは、中央処理ユニットなどである。リムーバブル媒体記憶装置130は、フレキシブルディスク、コンパクトディスク、ハードディスク、テープドライブ、ROM、若しくは、その他の持続性の記憶媒体などでもよい。
図2は、検証部204を示すブロック図である。本発明の一実施例において、検証部204は、実行可能イメージ100にフォーマットが類似している実行可能イメージである。本発明の更に別の実施例において、検証部204は、プログラムローダー208と一体化される。プログラムローダー208の一つの機能は、記憶装置105(図1)からメモリ108へ実行可能イメージ100をコピーし、実行可能イメージ100の実行前にコード及びデータポインタを適切なアドレスにバインドする。説明の便宜上、以下では、検証部204は、実行可能イメージ100及びプログラムローダー208とは異なる別個のアプリケーションである場合を考える。
検証部204は、以下で詳述する選択された条件下で実行可能イメージ100の真正性を検証する。熟練した技術者によって認められるように、検証部204及びプログラムローダー208は、典型的に、別々にコンパイルされ、単一の実行可能プログラムにリンクされる様々なサブルーチン、プロシージャ、定義文、及び、マクロにより構成される。したがって、以下の記述は、これらの事項の機能性を説明する便宜のため使用される。
検証部204及びプログラムローダー208(図1)は、C、C++、BASIC、Pascal、Java(登録商標)、及び、FORTRANのような任意のプログラミング言語で記述することができる。C、C++、BASIC、Pascal、Java(登録商標)、及び、FORTRANは、業界標準プログラミング言語であり、実行可能コードを作成するため、多数の市販コンパイラ及びインタープリターを使用することが可能である。
図2は、実行可能イメージ200に接続された後の実行可能イメージ100の説明図である。尚、実行可能イメージ200は、実行可能イメージ100に関して既に説明したような同じデータオブジェクトのタイプにより構成され得る。検証部204の一つの機能は、実行可能イメージがメモリ108にロードされた後に、実行可能イメージ100及び実行可能イメージ200のような実行可能イメージの真正性を検証することである。
実行可能イメージの真正性を検証するプロセス(処理)は、図5及び6を参照して詳細に説明される。簡単に説明すると、検証部204は、実行可能イメージ100がメモリ108にロードされる前に、実行可能イメージ100を解析し、実行可能イメージ100に関する対照デジタル署名を生成する。実行可能イメージ100がロードされた後、検証部204は、実行可能イメージ100が改ざんされていないことを保証するため、真正デジタル署名を生成する。更に、検証部204は、実行可能イメージ100とのバインディングが他の実行可能イメージへ不正に書き換えられていないことを保証するため、実行可能イメージ100と実行可能イメージ200の間のバインディングを調べる。
図3は、動的リンクライブラリとして構築され、記憶装置105(図1)に格納された実行可能イメージ100の一実施例の内部構造を詳細に説明するブロック図である。
実行可能イメージ100は、ヘッダセクション300、コードセクション304、データセクション308、インポートテーブル312、再配置(リロケーション)テーブル316、及び、エクスポートテーブル320を含む多数のセクションを収容する。尚、実行可能イメージ100は、後で詳述される多数のポインタを収容することに注意する必要がある。一般的に、ポインタは、メモリ108内のロケーションを、メモリ108(図1)に関して絶対的に、或いは、その他のロケーションに対して相対的に特定する参照情報(リファレンス)である。
ヘッダセクション300は、実行可能イメージ100内の他のセクション及び/又はテーブルの相対ロケーションを特定する。コードセクション304は、実行可能イメージ300に対するコンパイルされた機械コードを含む。例えば、コードセクション304は、コンピュータ90(図1)のための機械命令を含む。図3に示されるように、コードセクション304は、実行可能イメージ100内、並びに、実行可能イメージ100以外の他のセクションを参照する命令を含む。ブロック320に示されるように、コードセクション304は、数値”2”をグローバル変数”i”に割当てるための命令を含む。しかし、記憶装置105(図1)に格納されている変数”i”の実際のアドレスは、メモリ108に規定されていない。なぜならば、実行可能イメージ100は、未だメモリ108(図1)にロードされていないからである。更に、コードセクション304は、巻数foo()を呼び出すための命令を含む。プロシージャfoo()への呼び出しは、インポートテーブル312内のロケーションを参照するインポートポインタを含む。
データセクション308は、コードセクション304で特定されたグローバル変数を記憶するため使用される。インポートテーブル312は、実行可能テーブル100を別の実行可能テーブルへ接続する際にプログラムローダー208(図2)を補助するため、様々な情報の項目を含む。インポートテーブル312は、他の実行可能イメージによって保持されるプロシージャ毎にその実行可能イメージの名前のような識別子と、外部に保持されたプロシージャのアドレスを参照する一つ以上の外部ポインタと、を含む。インポートテーブル312は、記憶装置105(図1)に記憶されているので、未だプロシージャfoo()のメモリアドレスを参照しない。
再配置テーブル316は、実行可能イメージ100のローディング後の「フィクシングアップ(用意)」を必要とするコードセクション304の各部分の位置を特定する。用語「フィクシングアップ」は、未解決のポインタが適当なデータロケーション及び/又はコードロケーションを参照するように、メモリの実行可能イメージ100を変更するプロセスを表すため使用されている。ポインタがプログラムローダー208によってフィクシングアップされると、ポインタは選択されたアドレスに「バインド(結合)」される。
エクスポートテーブル320は、実行可能イメージ100によって公然と利用可能にされた各プロシージャを特定する。尚、実行可能イメージ100は、デバッグ情報、又は、ローディングプロセス及び/又はリンクプロセスを補助するため用いるその他のテーブル他の情報を含み得ることに注意する必要がある。
検証部204(図2)は、記憶装置105に保存されている実行可能イメージ100に関して対照デジタル署名を決定する。この対照署名を生成する処理は、図6に関して詳述する。本発明の一実施例によれば、検証部204は、プログラムローダー208(図2)によってフィクシングアップを必要とするポインタを除く実行可能イメージ100の全体に関して対照デジタル署名を決定する。本発明の他の一実施例では、検証部204は、プログラムローダー208によってフィクシングアップを必要とするアドレスを除く実行可能イメージ100のコードセクション304及び/又はインポートテーブル312のような選択されたセクションに関して紹介デジタル署名を決定する。
図4は、実行可能イメージ200に関して用意された(フィクシングアップされた)後の実行可能イメージ100を示すブロック図である。図4を参照することによってわかるように、変数”i”に対するデータポインタは、再配置テーブル316に収容されたフィクスアップ情報に従って、データセクション308のアドレスに結び付けられる。更に、インポートテーブル312のデータセクション308は、実行可能テーブル200のエクスポートテーブルに結び付けられる。第2の実行可能イメージ200のエクスポートテーブルの参照アドレスへのエクスポートポインタは、実行可能イメージ200内にあるプロシージャfoo()の実際のロケーションに結び付けられる。
フィクシングアップされた後、検証部204(図2)は、実行可能イメージ100に関して様々な真正性検査を行う。これらの各真正性検査は、図5及び6を参照して以下で詳述される。簡単に説明すると、検証部204は以下の機能を実行する。
第一に、検証部204は、対照デジタル署名を生成するため使用された同じアドレスに関して真正デジタル署名を決定する。真正デジタル署名が対照デジタル署名と異なる場合、検証部204(図2)は、実行可能イメージ100が不正に改ざんされたことを想定する。
第二に、検証部204は、インポートテーブルによって参照されたアドレスが改ざんされていないことを保証するため、インポートテーブル312の各バインディングを調べる。インポートテーブル312が不正に変更された場合、選択された巻数へのプロシージャ呼び出しは、実行可能イメージ100の供給元によって予定されたルーチンとは別の信用できないルーチンへルート変更される場合がある。このような信用できないルーチンは、偶然に、若しくは、意図的に、間違ったデータ、又は、有害なデータを実行可能イメージ100へ戻す可能性がある。
図5は、実行可能イメージ100の真正性を検証する処理を示すフローチャートである。ステップ600から始まり、検証部204(図2)は、実行可能モジュール100(図1)の真正を判定する要求を受信する。本発明の一実施例において、この要求はプログラムローダー208によって生成される。本発明の他の実施例では、この要求は、オペレーティングシステム95(図1)によって生成される。本発明の更に別の一実施例では、この要求は、コンピュータ90(図1)上で動く実行可能イメージ(図示せず)によって生成される。本発明の更に別の一実施例では、この要求は、検証部204内のルーチンによって生成される。
ステップ604へ進み、検証部204(図2)は、実行可能イメージ100内の各ポインタを特定する。本発明の一実施例において、実行可能イメージ100内の選択されたセクションだけの真正性が決定されるべき場合、検証部204は、実行可能イメージ100の選択されたセクションに収まるポインタだけを特定する。例えば、検証部204は、コードセクション(図3)又はインポートテーブル(図3)に収まるポインタだけを特定するように構成することが可能である。
本発明の一実施例において、検証部204は、これらの各ポインタ(図3)を特定するため、再配置テーブル316を準備する。図3を参照して説明したように、再配置テーブル316は、実行可能イメージ100のベースに関して相対的にアドレスのロケーションを特定する。再配置テーブル316を調べることによって、検証部204は、ローディング中にプログラムローダー208によって変更されるコードセクション304の部分を特定することが可能である。
ステップ608へ進み、検証部204(図2)は、実行可能イメージ100(図1)に対する対照デジタル署名を生成する。ここで使用されるデジタル署名は、選択されたデータ集合の内容を特定する任意の方法論を包含するように規定される。最も簡単な形式では、デジタル署名は、署名されるべきデータから選択されたデータ集合の完全なコピーを含み得る。しかし、デジタル署名は、選択されたデータ集合に適用されたハッシング関数の結果でも構わない。更に、デジタル署名はデジタル証明書でもよい。熟練した技術者であれば、対照デジタル署名を生成するために多数の標準的なハッシュ関数の中の任意のハッシュ関数を使用可能であることが分かるであろう。
更に、ステップ608に関して説明すると、本発明の一実施例によれば、検証部204は、プログラムローダー208(図2)によるフィクシングアップを必要とするアドレスを除く実行可能イメージ100の全体の内容に基づいて対照デジタル署名を決定する。本発明の他の実施例によれば、検証部204は、プログラムローダー208によるフィクシングアップを必要とするアドレスを除くコードセクション304及び/又はインポートテーブル312のような選択されたセクションの内容に基づいて対照デジタル署名を決定する。
ステップ612へ進むと、検証部204(図2)は、後で取り出すため対照デジタル署名を記憶する。本発明の一実施例において、検証部204は、記憶装置105(図1)に対照デジタル署名を格納する。本発明の他の実施例において、検証部204は、リソーステーブル(図示せず)のような実行可能イメージ100の選択されたセクションに対照デジタル署名を格納する。本発明の更に別の実施例において、対照デジタル署名は実行可能イメージ100に付加される。本発明の更に別の実施例において、対照デジタル署名は、データベース、ウェブ・サーバ、若しくは、ネットワーク122(図1)に記憶される。本発明の更に別の実施例において、対照デジタル署名は、実行可能イメージ100がコンピュータ90へ供給される前に作成される。この実施例の場合、対照デジタル署名は、上述の何れの方法で生成してもよい。
次に、ステップ614において、検証部204(図2)は、実行可能イメージ100がプログラムローダー208によってメモリ108(図2)にロードされる後若しくは前に、実行可能イメージ100の真正署名を決定する。このステップにおいて、検証部204は、ステップ608の間に検証部204によって適用されたハッシュ関数を再適用する。検証部204は、タイマーの満了、実行可能イメージ100の真正性セルフテストの終了、コンピュータ90(図1)のアイドル時間の終了、又は、実行可能イメージ100の要求時のような一つ以上の選択された条件の発生時に真正デジタル署名を決定するように構成することができる。
判定ステップ618へ進み、検証部204(図2)は、(ステップ608で生成された)対照デジタル署名が(ステップ614で生成された)真正デジタル署名と一致するかどうかを判定する。対照デジタル署名が真正デジタル署名と一致しない場合、検証部204はステップ622へ進み、ステップ622において、検証部204はセキュリティ警報を開始する。ステップ622において、検証部204は、実行可能イメージ100のアンロード、記憶装置105(図1)からメモリ108(図1)への実行可能イメージ100の新しいコピーのロード、ネットワーク122からの実行可能イメージ100の新バージョンのロード、記憶装置105からの実行可能イメージ100の削除、コンピュータ90(図1)の場所にいるユーザに対する警告表示、ネットワーク122を介した遠隔コンピュータ(図示せず)へのエラーメッセージ送信、或いは、実行可能イメージ100によって実行された一つ以上の動作の取消などのような複数の機能を実行してもよい。
再度、判定ステップ618について説明すると、検証部204(図2)が、対照デジタル署名は真正デジタル署名と一致していることを判定した場合、検証部204は終了ステップ624へ進む。実施例に応じて、検証部204(図2)は、選択された条件の発生時に真正デジタル署名を再決定するため、ステップ614へ戻る。
図6は、図2に示された一方の実行可能イメージの真正性検査中に図2の検証部によって実行される別の処理を説明するフローチャートである。図6のフローチャートによって実行される処理は、図5のフローチャートに従って実行される処理とは異なり、単独で実行することも、図5で実行される処理と共に実行することも可能である。特に、図6には、実行可能イメージの各ポインタが適切なロケーションにバインドされていることを検証する処理が示されている。以下、実行可能イメージ100のコードセクション304のインポートポインタ、及び、インポートテーブル312のエクスポートポインタに関する真正性検査処理について説明する。
ステップ700から始まり、検証部204(図2)は、要求元から、実行可能モジュール100(図1)の真正性を決定する要求を受信する。本発明の一実施例において、要求元はプログラムローダー208(図2)である。本発明の別の一実施例において、要求元はオペレーティングシステム(図1)である。本発明の更に別の実施例において、要求元はコンピュータ90(図1)で動く実行可能イメージ(図示せず)である。本発明の更に別の一実施例において、要求元は検証部204内のルーチンである。更に、要求は、一つ以上の選択された条件の出現時に、一つの要求元によって開始され得る。選択された条件には、タイマーの終了、コンピュータ90(図1)に関するアイドル時間の検出、及び/又は、銀行取引のような重要な動作の実行前などが含まれる。
ステップ704へ進み、検証部204(図2)は、コードセクション304内の各インポートポインタを特定する。本発明の一実施例において、検証部204は、これらの各インポートテーブル(図3)を特定するため、再配置テーブル316を解析する。
次に、ステップ708において、検証部204(図2)は、各インポートポインタがインポートテーブル312内のロケーションに結び付けられているかどうかを判定するため、コードセクション320の各インポートポインタを調べる。このステップで、本発明の一実施例において、検証部204は、インポートテーブル312の開始アドレス及び終了アドレスを決定するためヘッダ300を読み出す。
各インポートテーブルがインポートテーブル312(図3)内のロケーションに結び付けられていない場合、検証部204(図2)は、ステップ714へ進み、検証部204はセキュリティ警報を開始する。ステップ714において、検証部204は、実行可能イメージ100のアンロード、記憶装置105(図1)からメモリ108(図1)への実行可能イメージ100の新しいコピーのロード、実行可能イメージ100の新しいコピーのロード、記憶装置105からの実行可能イメージ100の削除、コンピュータ90(図1)の場所にいるユーザに対する警告表示、ネットワーク122を介した遠隔コンピュータ(図示せず)へのエラーメッセージ送信、或いは、実行可能イメージ100によって実行された一つ以上の動作の取消などのような複数の機能を実行してもよい。処理フローは、終了ステップ715へ進み、終了する。
再度、判定ステップ712について説明すると、検証部204(図2)が、コードセクション304内の各インポートポインタがインポートテーブル(図3)に結び付けられていると判定した場合、検証部204はステップ716へ進む。このステップ716において、検証部204は、インポートテーブル312内の各外部ポインタを特定する。
ステップ720へ進み、検証部204(図2)は、インポートテーブル312(図2)内の外部ポインタの結合ロケーションを決定する。本発明の一実施例において、検証部204は、検証部204によって保持される外部ポインタテーブル(図示せず)に結合ロケーションを格納する。
判定ステップ722へ進み、検証部204は、外部ポインタの結合ロケーションがインポートテーブル312(図2)によって特定された一方の実行可能イメージ内に存在するかどうかを判定する。説明の便宜上、インポートテーブル312によって特定された実行可能イメージは、一まとめにしてエクスポート用実行可能イメージと呼ぶ。
本発明の一実施例において、検証部204は、メモリ108(図1)内のエクスポート用実行可能イメージのロケーションを決定するため、オペレーティングシステム(図1)を呼び出す。例えば、Windows(登録商標) 95は、実行可能イメージの名前が与えられた場合に、実行可能イメージのベースアドレスを返すGetModuleHandle()という名称のプロシージャ呼び出しを提供する。このベースアドレスを使用して、検証部204は、エクスポート用実行可能イメージのヘッダのロケーション、並びに、他のセクションのロケーションを特定することができる。
更に、ステップ722について説明すると、検証部204が、各外部ポインタはエクスポート用実行可能イメージに結合されていない、と判定した場合、検証部204は、既に詳述したステップ714へ進む。しかし、検証部204が、各外部ポインタはエクスポート用実行可能イメージに結合されている、と判定した場合、検証部204は、終了ステップ715へ進み、終了する。
有利的には、本発明は、実行可能イメージの静的検証、動的検証、及び、ランタイム検証が可能であり、実行可能イメージのソースコード又はオブジェクトコードに変更を加える必要が無い。本発明は、実行可能イメージが真正であり、ロード後に改ざんされていないことを保証する。対照デジタル署名が決定された後、検証部204は、次に、データオブジェクトが変更されていないことを保証するため、真正デジタル署名を生成可能である。更に、検証部204は、実行可能イメージ内の各ポインタが正確なロケーションに結合されているかどうかを判定可能である。
例えば、コードセクション304のデータポインタに関して、検証部204は、データポインタがデータセクション308内のロケーションを参照することを保証するため、再配置テーブル316を検査可能である。更に、例えば、インポートテーブル312の外部ポインタに関して、検証部204は、外部ポインタがインポートテーブル312に名前が含まれている信頼できる実行可能イメージを参照することを保証可能である。実行可能イメージの名前はプログラムローダー208(図2)によって変更されないので、検証部204は、信頼できる実行可能イメージの名前が対照デジタル署名及び真正デジタル署名の使用によって変更されないことを保証可能である。
上記の詳細な説明では、種々の実施例に適用されるような本発明の新規な特徴が図示され、記載され、指摘されているが、例示された装置又は方法の形式及び細部に関する様々な省略、置換、及び、変更は、本発明の精神から逸脱すること無く、当業者によってなされることが明らかである。本発明の範囲は、上記の説明ではなく、特許請求の範囲に記載された事項によって表される。特許請求の範囲に記載された事項の均等物の意味及び範囲に含まれる全ての変更は、本発明の範囲に包含される。
90 コンピュータ
100 実行可能イメージ
105 記憶装置
108 メモリ
204 検証部
208 プログラムローダー
100 実行可能イメージ
105 記憶装置
108 メモリ
204 検証部
208 プログラムローダー
Claims (14)
- 実行可能イメージの真正性を判定するシステムであって、
一つ以上のポインタを有する実行可能イメージが設けられ、
実行可能イメージは、各ポインタが実行可能イメージ内のロケーションを参照するかどうかを指定する情報を含み、
各ポインタが実行可能イメージ内の対応したロケーションを参照するかどうかを判定する機能を備えた検証部が更に設けられている、
システム。 - ポインタは実行可能イメージ内のインポートテーブルを参照する、請求項1記載のシステム。
- 検証部は、ポインタが実行可能イメージ内のロケーションを参照しないことを判定したときに警報を生成する、請求項1記載のシステム。
- 検証部は、ポインタが実行可能イメージ内のロケーションを参照しないことを判定したときに実行可能イメージの供給元へ警報を生成する、請求項1記載のシステム。
- 実行可能イメージの真正性を判定するシステムであって、
第1の実行可能イメージと、
第1の実行可能イメージ内のロケーションを参照するポインタを含む第2の実行可能イメージと、
ポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する機能を備えた検証部と、
を具備するシステム。 - 検証部は、ポインタが第1の実行可能イメージ内のロケーションを参照しないことを判定したときに警報を生成する、請求項5記載のシステム。
- 検証部は、ポインタが第1の実行可能イメージ内のロケーションを参照しないことを判定したときに実行可能イメージの供給元へ警報を生成する、請求項5記載のシステム。
- 検証部は、
オペレーティングシステムから第1の実行可能イメージのベースアドレスを要求し、
第1の実行可能イメージの先頭に置かれ、第1の実行可能イメージの開始アドレス及び終了アドレスを指定する予め定義されたヘッダを読み、
ポインタが予め定義されたヘッダによって指定されるような第1の実行可能イメージ内のロケーションを参照したかどうかを判定することにより、
ポインタが第1の実行可能イメージ内のロケーションを参照したかどうかを判定する、
請求項5記載のシステム。 - 実行可能イメージの真正性を判定する方法であって、
メモリにロードされた実行可能イメージ内で、プログラムローダーによってメモリ内の選択されたアドレスに結合されたポインタをもつ一つ以上のロケーションを特定する手順と、
特定されたロケーションの各ポインタが実行可能イメージによって指定された宛先を参照するかどうかを判定する手順と、
を有する方法。 - 宛先は、実行可能イメージにあるインポートテーブル内のアドレスである、請求項9記載の方法。
- 宛先は、別の実行可能イメージにおけるアドレスである、請求項9記載の方法。
- 実行可能イメージの真正性を判定するシステムであって、
メモリにロードされた実行可能イメージ内で、プログラムローダーによってメモリ内の選択されたアドレスに結合されたポインタをもつ一つ以上のロケーションを特定する手段と、
特定されたロケーションの各ポインタが実行可能イメージによって指定された宛先を参照するかどうかを判定する手段と、
を有するシステム。 - 宛先は、実行可能イメージにあるインポートテーブル内のアドレスである、請求項12記載のシステム。
- 宛先は、別の実行可能イメージにおけるアドレスである、請求項12記載の方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006339906A JP2007128537A (ja) | 2006-12-18 | 2006-12-18 | 動的に接続可能な実行イメージの真正性検証システム及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006339906A JP2007128537A (ja) | 2006-12-18 | 2006-12-18 | 動的に接続可能な実行イメージの真正性検証システム及び方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002514509A Division JP4698925B2 (ja) | 2000-07-25 | 2000-07-25 | 動的に接続可能な実行可能イメージの真正性検証システム及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007128537A true JP2007128537A (ja) | 2007-05-24 |
Family
ID=38151073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006339906A Pending JP2007128537A (ja) | 2006-12-18 | 2006-12-18 | 動的に接続可能な実行イメージの真正性検証システム及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007128537A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009140485A (ja) * | 2007-11-13 | 2009-06-25 | Intel Corp | ソフトウェアコンポーネントをホワイトリストに登録する方法およびシステム |
JP2015532499A (ja) * | 2012-10-19 | 2015-11-09 | マカフィー, インコーポレイテッド | リアルタイムモジュールプロテクション |
-
2006
- 2006-12-18 JP JP2006339906A patent/JP2007128537A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009140485A (ja) * | 2007-11-13 | 2009-06-25 | Intel Corp | ソフトウェアコンポーネントをホワイトリストに登録する方法およびシステム |
JP2015532499A (ja) * | 2012-10-19 | 2015-11-09 | マカフィー, インコーポレイテッド | リアルタイムモジュールプロテクション |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6802006B1 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
US7650504B2 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
EP1577767B1 (en) | Code rewriting | |
US7117371B1 (en) | Shared names | |
US6910128B1 (en) | Method and computer program product for processing signed applets | |
JP4263476B2 (ja) | ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム | |
US7788637B2 (en) | Operating system process identification | |
US7506175B2 (en) | File language verification | |
AU2014348812A1 (en) | Improved control flow integrity system and method | |
JP4698925B2 (ja) | 動的に接続可能な実行可能イメージの真正性検証システム及び方法 | |
US7941792B2 (en) | System and method for compiling program code ahead of time | |
Bank | Java security | |
US20080163375A1 (en) | Embedding and patching integrity information in a program file having relocatable file sections | |
JP2007128537A (ja) | 動的に接続可能な実行イメージの真正性検証システム及び方法 | |
EP2434399A1 (en) | Inter-process interference elimination | |
US20100251236A1 (en) | In-Process Intermediary To Create Virtual Processes | |
KR100728517B1 (ko) | 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법 | |
RU2258252C2 (ru) | Система и способ проверки подлинности динамически подключаемых исполняемых образов | |
Gal et al. | Integrated Java Bytecode Verification | |
Lam | Thuan Thai |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090616 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090916 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100601 |