JP2004513412A - ハッシュによる結合 - Google Patents
ハッシュによる結合 Download PDFInfo
- Publication number
- JP2004513412A JP2004513412A JP2002506420A JP2002506420A JP2004513412A JP 2004513412 A JP2004513412 A JP 2004513412A JP 2002506420 A JP2002506420 A JP 2002506420A JP 2002506420 A JP2002506420 A JP 2002506420A JP 2004513412 A JP2004513412 A JP 2004513412A
- Authority
- JP
- Japan
- Prior art keywords
- assembly
- manifest
- hash
- information
- list
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000000429 assembly Methods 0.000 claims abstract description 31
- 230000000712 assembly Effects 0.000 claims abstract description 31
- 230000027455 binding Effects 0.000 claims description 10
- 238000012552 review Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000012790 confirmation Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000009870 specific binding Effects 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2145—Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Storage Device Security (AREA)
Abstract
Description
(技術分野)
本発明は、コンピュータシステムに関し、より詳細には、実行時にアプリケーションプログラムによって使用されるコンポーネントの完全性を確保するためのシステムおよび方法に関する。
【0002】
(背景技術)
過去には、アプリケーションプログラムは、単一の一体構造の2進ファイルから成っていた。コンパイラがアプリケーションプログラムを生成した後、アプリケーションプログラムは、次のバージョンが再コンパイルされて、発送されるまで変更されなかった。オペレーティングシステム、ハードウェア、および市場の需要の変化は、次のバージョンが実施され、再コンパイルされるのを待つことに依存していた。今日、アプリケーションプログラムは、いくつかのコンポーネントから成り、さらに、これらのコンポーネントの多くは、実行時にリンクされる。これらのコンポーネントには、動的にリンクされたライブラリ(DLL)、および様々なアプリケーションプログラムによって共用されるその他のファイルが含まれる。これらのDLLは、実行時にリンクされるべきアプリケーションコンポーネントの中のテーブル内にリストされる。オペレーティングシステムは、ローダ探索パス、アプリケーションディレクトリ、オペレーティングシステムディレクトリ、またはユーザ指定パスの中でダイナミックリンクライブラリの名前を探索し、実行のためにそのDLLコードをメモリ内にロードすることが可能になるようにする。これらのDLLは、異なるアプリケーションプログラムによって共用されることが可能であるため、1つのアプリケーションのためにDLLに変更を加えることにより、別のアプリケーションの動作を止める可能性がある。
【0003】
さらに、Microsoft(登録商標)Windows(登録商標)オペレーティングシステムなどのオペレーティングシステム上で実行される多くのアプリケーションプログラムは、共用のオペレーティングシステムコンポーネントを使用する。現行のMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムのプラットフォームでアドミニストレータおよび開発者が直面する主要な問題の1つは、展開されたアプリケーションプログラムの一部として実行されるまさにその一組のダイナミックリンクライブラリおよびその他のファイルを制御できないことである。1つのアプリケーションプログラムをインストールすることが、その他のアプリケーションプログラムが依存するファイルに上書きすることによって、それらのアプリケーションに影響を与えてしまうことは、極めてよく起きる。残念ながら、あるアプリケーションが依存するファイルが変更されたとき、それを検出するためにMicrosoft(登録商標)Windows(登録商標)オペレーティングシステムに組み込まれるサポートは、存在しない。
【0004】
現在、アプリケーションプログラムを構築して試験するために使用されたアセンブリを追跡する手立ては、存在しない。過去には、コンポーネントを変更しても、その変更が、アプリケーションプログラムの機能性に影響を与えない場合、アプリケーションプログラムを実行することができた。例えば、コンポーネントの発行元(publisher)が、コンポーネントの小さな誤りを訂正した場合でも、アプリケーションプログラムは、問題なく動作することができる。また、バージョンアップグレードが発行元によって行われた場合、アプリケーションプログラムは、そのコンポーネントに下位互換性がある場合、問題なくそのコンポーネントを実行することができる。しかし、発行元が、新しいバージョンが前のコンポーネントと下位互換性があると誤認していた場合、コンポーネントの発行元によるバージョンアップグレードからアプリケーションプログラムを保護する手立てはない。さらに、信頼できない第三者(untrusted third party)によってコンポーネントが変更された場合、コードを実行することにより、アプリケーションプログラムが動作している環境のソフトウェアおよびハードウェアが損傷する可能性がある。一部のコードは、コンポーネントの名前(例えば、fool.dll、kernel2.dll)でバージョン情報を含んでいる。アプリケーションプログラムは、それらのコンポーネントを名前で参照するので、名前の変更により、アプリケーションプログラムが動作を終了させられ、またはシステム上に常駐する古いバージョンのコンポーネントを使用させられる。
【0005】
したがって、当技術分野では、実行時中にアプリケーションプログラムによって使用されるコンポーネントの完全性を確保し、検証するための方法が必要とされると共に現在は不適切である。また、実行時にコンポーネントの完全性を検証するためのツールが求められている。
【0006】
(発明の開示)
本発明は、アプリケーションプログラムによって実行時中に使用されるコンポーネントまたはアセンブリ(例えば、メタデータを含むコンポーネント)のセキュリティを提供し、完全性を助長するシステムおよび方法に関する。本発明は、暗号技術を使用してコンポーネント間の関係を円滑にする。アドミニストレータおよび開発者は、このシステムおよび方法を利用して、一緒に試験されたまさにその一組のダイナミックリンクライブラリ(DLL)およびその他のファイルが、実際、展開された後に一緒に実行されるのを助けることができる。アセンブリは、アプリケーションプログラムによって記述されたバージョニング規則を実施するのに使用することができるバージョン情報を担持する(carry)。実行時に、アプリケーションプログラムによって要求されたバージョン番号が、実際に見出されるアセンブリのバージョン番号と比較される。バージョン番号を比較することに加えて、本発明は、暗号ハッシュに基づくより厳密な形態のバージョン検査も提供する。
【0007】
各アセンブリは、そのアセンブリを構成するファイルまたはモジュールのリストを含むマニフェスト(manifest)を備えることができる。各ファイルに関して記録された情報の一部は、マニフェストが構築された時点におけるそのファイルの内容のハッシュである。このハッシュは、ファイルの内容全体にわたって計算される。マニフェストを発行するコードは、通常、ハッシュを計算することに責任を負う可能性のあるコンパイラまたはポストリンクツールである。本発明は、セキュアハッシュ(secured hash)アルゴリズム(sha−1)、MD5などの様々なハッシュアルゴリズム、またはハッシュを計算する際に暗号法として許容できる任意の他のハッシュアルゴリズムを使用することが可能である。本発明の一態様では、マニフェストの作成者が、どのハッシュアルゴリズムが使用されるのを望むかを指定することができる。ファイルハッシュは、アセンブリがグローバルアセンブリキャッシュの中にインストールされたとき、またファイルがディスクからロードされるたびに毎回、確認することが可能である。
【0008】
前述したファイルハッシュは、展開可能なユニット(例えば、アセンブリ)の完全性を助長する。ただし、ほとんどのアプリケーションは、いくつかのアセンブリから成る。したがって、アプリケーション全体の完全性を保証するには、それぞれの個別のアセンブリが変更されていないことを確認するだけでなく、実行時にアプリケーションプログラムによって使用されるアセンブリのセットが、以前に一緒に構築されて試験されたものと同じセットであることを確認する必要がある。本発明の一態様では、別のアセンブリを参照するアセンブリが、参照される(参照の)アセンブリのマニフェストのハッシュを計算する。アセンブリマニフェストは、アセンブリが依存する、または参照する他のアセンブリに関する情報である依存関係情報を含むことが可能である。依存関係情報の一環として記憶される情報の一部は、参照される(参照の)アセンブリのマニフェストのハッシュである。参照されるアセンブリのマニフェストをハッシングするだけで十分である。というのは、そのマニフェストが、すべての構成ファイルのハッシュを含むからである。ファイルハッシュと同様に、参照されるアセンブリのマニフェスト上のハッシュも、そのマニフェストを発行するツールによって計算されることが可能である。
【0009】
本発明の一態様によれば、実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するための方法が提供される。アセンブリは、そのアセンブリを構成するモジュールのリストを含むマニフェストを備え、またマニフェストは、モジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュを備える。
【0010】
本発明の別の態様は、実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するための方法に関する。アセンブリは、そのアセンブリが依存する参照されるアセンブリのリストを含むマニフェストを備え、またマニフェストは、参照されるアセンブリのリストのうちの少なくとも1つの参照されるアセンブリのマニフェストのハッシュを備える。
【0011】
本発明のさらに別の態様では、実行時にアプリケーションプログラムによって使用されることが可能な少なくとも1つのコンピュータ実行可能コンポーネントを有するコンピュータ可読媒体が提供される。このコンピュータ可読媒体は、アセンブリを構成するモジュールのリスト、およびモジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュを含むマニフェストを有するアセンブリを含む。
【0012】
本発明の別の態様は、実行時にアプリケーションプログラムによって使用されることが可能な少なくとも1つのコンピュータ実行可能コンポーネントを有するコンピュータ可読媒体に関する。このコンピュータ可読媒体は、アセンブリが依存する少なくとも1つの参照されるアセンブリのリスト、およびその少なくとも1つの参照されるアセンブリのマニフェストの内容のハッシュを含むマニフェストを有するアセンブリを含む。
【0013】
本発明の別の態様によれば、実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムが提供される。このシステムは、アセンブリに関するマニフェストを提供するように適合された第1のコンポーネントを含む。マニフェストは、アセンブリを構成するモジュールのリストを有する。また、このシステムは、モジュールのリストのうちの少なくとも1つのモジュールのハッシュをマニフェストに提供するように適合された第2のコンポーネントも含む。
【0014】
本発明の代替の態様では、実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムが提供される。このシステムは、アセンブリに関するマニフェストを提供するように適合された第1のコンポーネントを含む。マニフェストは、少なくとも1つの参照されるアセンブリを含む。また、システムは、その少なくとも1つの参照されるアセンブリのマニフェストのハッシュをマニフェストに提供するように適合された第2のコンポーネントも含む。
【0015】
本発明の別の態様は、実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムに関する。このシステムは、関連するアセンブリのリストを有するマニフェストをアセンブリに関連させるための手段、ならびにマニフェストまたは少なくとも1つの関連するアセンブリのハッシュをマニフェストに提供するための手段を含む。
【0016】
以上の目的、および関連する目的を達するため、本発明は、以下に十分に説明し、特許請求の範囲で詳細に示す特徴を含む。以下の説明、および添付の図面は、本発明のある例としての実施形態を詳細に提示する。ただし、これらの実施形態は、本発明の原理を使用できる様々な仕方のいくつかだけを示すものであり、本発明は、すべてのそのような実施形態および均等形態を含むものとする。本発明のその他の目的、利点、および新しい特徴は、本発明の以下の詳細な説明を図面と併せて考慮したとき、明白となる。
【0017】
(発明を実施するための形態)
次に、本発明を図面を参照して説明する。図面では、全体にわたり、同様の要素を指すのに同様の参照番号を使用している。本発明は、実行時中にアプリケーションプログラムによって使用されるコンポーネントの完全性を助長するためのシステムおよび方法に関して説明する。これらのコンポーネントは、通常、ダイナミックリンクライブラリ(DLL)であるが、実行時にアプリケーションプログラムにリンクされる定義ファイル、宣言ファイル、および実行可能ファイルを含むことも可能である。本発明の少なくとも1つの態様によるアセンブリは、コンポーネントとして本明細書で定義される。コンポーネントは、アセンブリを定義するメタデータを含む。メタデータはアセンブリを構成するコンポーネントを記述し、またアセンブリが依存するアセンブリを記述する。本発明は、ハッシングなどの暗号技術を使用して、アプリケーションプログラムによって使用されるアセンブリの完全性を確実にする。さらに、本発明は、DLLの完全性を保証しながら、大きいDLLファイルをいくつかのより小さいファイルに分割する縮小を可能にする。
【0018】
図1は、本発明によるアセンブリの関係を示している。第1のアセンブリ10は、トップアセンブリ12(例えば、メタデータセクションまたはマニフェストを有するファイル)、およびモジュールまたはサブアセンブリ14を含む。アセンブリ10は、トップアセンブリ、およびアセンブリ10を構成する任意の数のモジュールを含むことが可能である。トップアセンブリは、メタデータセクションまたはマニフェストを含むアセンブリとして定義される。メタデータセクションまたはマニフェストは、アセンブリを定義する識別情報、他のアセンブリに対する依存関係を定義するアセンブリリファレンス、およびモジュールまたはサブアセンブリに対するリンクを定義するモジュールリファレンスを含むことが可能である。第1のアセンブリ10に関する情報を含むメタデータセクション16が、トップアセンブリ12の中で提供される。メタデータセクション16は、識別情報コンポーネント17、およびファイル検証ダイジェストコンポーネント18を含む。識別情報コンポーネント17は、第1のアセンブリ10に関する情報を含み、一方、ファイル検証ダイジェストコンポーネント18は、モジュール14に関する情報を含む。識別情報コンポーネント17は、簡単な名前、バージョン情報、オペレーティングシステム情報またはプロセッサ情報、発行元情報などの情報を、第1のアセンブリ10に関する多くの他のタイプの情報に加えて含むことが可能である。ファイル検証ダイジェストコンポーネント18は、モジュール14のハッシュを含むことが可能である。
【0019】
識別情報コンポーネント17の中の情報は、他者にとってアクセス可能であり、一方、ファイル検証ダイジェストコンポーネント18の中の情報は、他者にとってアクセス可能ではないが、アセンブリが変更されていないのを確認するため、実行時に先立って、または実行時に使用することが可能である。トップアセンブリダイジェスト19は、トップアセンブリ12の終りで提供することができる。トップアセンブリダイジェスト19は、トップアセンブリ12の内容のハッシュを含むことが可能である。トップアセンブリハッシュを使用して、トップアセンブリ12の内容が変更されていないのを確認することができ、一方、ファイル検証ダイジェストコンポーネント18の中のハッシュを使用して、モジュール14が変更されていないのを確認することができる。
【0020】
ほとんどのアプリケーションプログラムは、いくつかのアセンブリから成り、アセンブリのいくつかは、実行中、その他のアセンブリを参照することを理解されたい。したがって、図1は、第1のアセンブリ10に依存する第2のアセンブリ20が提供されていることも示している。第2のアセンブリ20に関する情報、ならびに第2のアセンブリ20が実行時中に参照する第1のアセンブリ10に関する情報を含むメタデータセクション22が、第2のアセンブリ20の中で提供される。メタデータセクション22は、識別情報コンポーネント24、およびリファレンス検証ダイジェストコンポーネント26を含む。識別情報コンポーネント24は、第2のアセンブリ24に関する情報を含み、一方、リファレンス検証ダイジェストコンポーネント26は、第1のアセンブリ10に関する情報を含む。識別情報コンポーネント24は、簡単な名前、バージョン情報、オペレーティングシステム情報またはプロセッサ情報、発行元情報などの情報を、第2のアセンブリ20に関する多くの他のタイプの情報に加えて含むことが可能である。リファレンス検証ダイジェストコンポーネント26は、第1のアセンブリ10のトップアセンブリ12のメタデータセクション16のハッシュを含むことが可能である。
【0021】
識別情報コンポーネント24の中の情報は、他者にとってアクセス可能であり、一方、ファイル検証ダイジェストコンポーネント26の中の情報は、他者にとってアクセス可能ではないが、実行時に先立って、または実行時に、第1のアセンブリ10および第2のアセンブリ20が変更されていないのを確認するために使用することができる。メタデータセクション16は、モジュール14のハッシュを含むため、モジュール14が変更されていないのを確認するのに第2のアセンブリ20のメタデータセクション22の中でハッシュを提供する必要はない。リファレンス検証ダイジェスト26は、オプションとして、トップアセンブリ12のハッシュ値を含むことが可能である。ただし、これは、必要ではない。というのは、トップアセンブリダイジェスト19の中のトップアセンブリハッシュを、実行時前に、または実行時に判定されたトップアセンブリ12の実際のハッシュ値と比較することができるからである。
【0022】
図2は、本発明によるアセンブリの構成をより詳細に示している。アセンブリ30は、トップアセンブリ40、第1のモジュール45、および第2のモジュール50から成る。トップアセンブリ40は、アセンブリマニフェストと呼ばれるメタデータセクション42を含む。アセンブリマニフェスト42は、次の情報を有する識別情報を含む。オリジネータ(originator)名情報、ロケール(locale)情報、メジャーバージョン情報、マイナーバージョン情報、改訂情報、構築情報、およびモジュール情報。その他の情報(例えば、オペレーティングシステム)も、識別マニフェストの中に入れることができる。モジュール情報は、アセンブリ30を構成するモジュールのリスト、および各モジュールのファイル内容のハッシュである。実行時に先立って、または実行時に、同一のハッシュアルゴリズムを使用して、アセンブリマニフェスト42の中のモジュールハッシュを第1のモジュール45および第2のモジュール50の実際のハッシュに照らして検査して、アセンブリ30の完全性を決定することができる。オプションとして、トップアセンブリ40が、ファイルの終りに位置するトップアセンブリハッシュ43を含む。トップアセンブリハッシュは、トップアセンブリ40の中で何らかの変更が行われたかどうかを判定するのに利用することができる。アセンブリ30が変更されている場合、アセンブリ30を呼び出すアプリケーションプログラムは、中止するのを選択することができる。本発明の代替の態様では、アプリケーションプログラムは、識別情報を検討することを選択して、その変更が信頼できるソースによって実行されたかどうかを判定することができる。次に、アプリケーションプログラムは、アセンブリ30の実行を中止するか、許可するかを選択することができる。
【0023】
図3は、本発明による別のアセンブリを参照するアセンブリの構成をより詳細に示している。アセンブリBとラベル付けされた参照を行うアセンブリ70が、アセンブリCとラベル付けされた第1の参照される(参照の)アセンブリ80、およびアセンブリDとラベル付けされた第2の参照される(参照の)アセンブリ90を参照する。参照を行うアセンブリ70は、図2で説明したトップアセンブリ40のモジュール情報と同様のモジュール情報を有するアセンブリマニフェスト72を含む。また、アセンブリマニフェスト72は、参照を行うアセンブリ70が実行中に依存するアセンブリのリストなどの依存関係情報も含む。また、依存関係情報は、それぞれの参照されるアセンブリのトップアセンブリマニフェストのハッシュも含む。オプションとして、依存関係情報は、トップアセンブリのハッシュを含む。第1の参照されるアセンブリ80は、識別情報と依存関係情報をともに含むアセンブリマニフェスト82、およびオプションのトップアセンブリダイジェスト83を有する。依存関係情報の存在により、第1の参照されるアセンブリ80も、少なくとも1つの他のアセンブリに依存することがアプリケーションプログラムに知らされる。第1の参照されるアセンブリ80は、モジュールを全く有さず、したがって、モジュール情報も、何らかのモジュールに関するハッシュも全く存在しない。第2の参照されるアセンブリ90は、モジュール情報を含むアセンブリマニフェスト94を有するが、依存関係情報は全く有さない。したがって、第2の参照されるアセンブリ90は、依存関係情報を全く有さないので、実行するのに他のアセンブリには全く依存しない。オプションのトップアセンブリダイジェスト95も、第2の参照されるアセンブリ90の終りで提供される。第2の参照されるアセンブリ90は、トップアセンブリ92、第1のモジュール96、および第2のモジュール98から成る。モジュール情報は、アセンブリ90のモジュールのリスト、および各モジュールの内容全体のハッシュを含む。アセンブリ70、80、および90の内容全体が、実行時にコンピュータシステムのキャッシュの中にロードされ、ハッシュが、実行時に、または実行時に先立って、マニフェストの中に記憶されたハッシュで確認されることが可能である。
【0024】
図4および以下の説明は、本発明を実施することができる適切なコンピュータ環境の簡単な一般的説明を提供することを目的とする。本発明は、パーソナルコンピュータ上またはサーバコンピュータ上で実行されるコンピュータプログラムのコンピュータ実行可能命令の一般的な文脈で説明するが、本発明は、他のプログラムモジュールとの組み合わせでも実施できることが、当業者には理解されよう。一般に、プログラムモジュールには、特定のタスクを行う、または特定の抽象データタイプを展開するルーチン、プログラム、コンポーネント、データ構造等が含まれる。さらに、本発明は、単一プロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ装置、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、その他を含む他のコンピュータシステム構成でも実施できることが、当業者には理解されよう。本発明の例示する実施形態は、通信網を介してリンクされた遠隔処理装置によってタスクが行われる分散コンピュータ環境でも実施することができる。ただし、本発明のいくつかの実施形態は、独立型コンピュータ上で実施することができる。分散コンピュータ環境では、プログラムモジュールは、ローカルのメモリ記憶デバイスと遠隔のメモリ記憶デバイスの両方の中に配置されていることが可能である。
【0025】
図4を参照すると、本発明を実施するための例としてのシステムは、処理装置121、システムメモリ122、ならびにシステムメモリを含む様々なシステムコンポーネントを処理装置121に結合するシステムバス123を含む従来のパーソナルコンピュータまたは従来のサーバコンピュータ120を含む。処理装置は、Intel x86、Pentium(登録商標)、ならびにIntel、およびCyrix、AMD、Nexgenを含む他社から互換性のあるマイクロプロセッサ、DigitalからのAlpha、MIPS Technology、NEC、IDT、SiemensからのMIPS、IBMおよびMotorolaからのPowerPCを含む様々な市販のプロセッサの任意のものとすることが可能である。デュアルマイクロプロセッサ、およびその他のマルチプロセッサアーキテクチャも、処理装置121として使用することができる。
【0026】
システムバスは、いくつかを挙げれば、PCI、VESA、Microchannel、ISA、およびEISAなどの様々な従来のバスアーキテクチャの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造の任意のものとすることが可能である。システムメモリは、読取り専用メモリ(ROM)124およびランダムアクセスメモリ(RAM)125を含む。始動時中などにコンピュータ120内部の要素間における情報の転送を助ける基本ルーチンを含む基本入力/出力システム(BIOS)が、ROM124の中に記憶されている。
【0027】
コンピュータ120は、ハードディスクドライブ127と、例えば、取外し可能なディスク129に対して読取りまたは書込みを行う磁気ディスクドライブ128と、例えば、CD−ROMディスク131を読み取るため、またはその他の光媒体に対して読取りまたは書込みを行うための光ディスクドライブ130とをさらに含む。ハードディスクドライブ127、磁気ディスクドライブ128、および光ディスクドライブ130がそれぞれ、ハードディスクドライブインターフェース132、磁気ディスクドライブインターフェース133、および光ドライブインターフェース134でシステムバス123に接続される。以上のドライブおよび関連するコンピュータ可読媒体は、サーバコンピュータ120に、データ、データ構造、コンピュータ実行可能命令等の不揮発性ストーレッジを提供する。以上のコンピュータ可読媒体の説明は、ハードディスク、取外し可能な磁気ディスク、およびCDについて述べているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、その他などのコンピュータによって読取り可能なその他のタイプの媒体も、例としての動作環境で使用できることが、当業者には理解されよう。
【0028】
オペレーティングシステム135、1つまたは複数のアプリケーションプログラム136、その他のプログラムモジュール137、およびプログラムデータ138を含むいくつかのプログラムモジュールをドライブおよびRAM125の中に記憶することができる。例示するコンピュータにおけるオペレーティングシステム135は、Microsoft Windows(登録商標) NT Serverオペレーティングシステム、ならびに前述したMicrosoft Transaction Server、Microsoft Windows(登録商標) 95、Microsoft Windows(登録商標) 98、またはMicrosoft Windows(登録商標) 2000とすることが可能である。
【0029】
ユーザは、キーボード140、またはマウス142などのポインティングデバイスを介してコンピュータ120にコマンドおよび情報を入力することができる。その他の入力デバイス(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれることが可能である。以上の入力デバイスおよびその他の入力デバイスは、しばしば、システムバスに結合されたシリアルポートインターフェース146を介して処理装置121に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などのその他のインターフェースで接続することも可能である。また、モニタ147、またはその他のタイプの表示デバイスも、ビデオアダプタ148などのインターフェースを介してシステムバス123に接続される。モニタに加えて、コンピュータは、通常、スピーカおよびプリンタなどのその他の周辺出力デバイス(図示せず)も含む。
【0030】
コンピュータ120は、遠隔サーバまたはクライアントコンピュータ149などの1つまたは複数の遠隔コンピュータに対する論理接続を使用するネットワーク化された環境で動作することが可能である。遠隔コンピュータ149は、ワークステーション、サーバコンピュータ、ルータ、ピア装置、またはその他の一般的なネットワークノードとすることが可能であり、通常、コンピュータ120に関連して説明した要素の多く、またはすべてを含む。ただし、メモリ記憶デバイス150だけを図4に示している。図4で描かれる論理接続は、ローカルエリアネットワーク(LAN)151およびワイドエリアネットワーク(WAN)152を含む。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
【0031】
LANネットワーキング環境で使用される場合、コンピュータ120は、ネットワークインターフェースまたはネットワークアダプタ153を介してローカルネットワーク151に接続される。WANネットワーキング環境で使用される場合、サーバコンピュータ120は、通常、モデム154を含むか、またはLAN上で通信サーバに接続されるか、またはインターネットなどのワイドエリアネットワーク152を介して通信を確立するための他の手段を有する。内部または外部にあることが可能なモデム154は、シリアルポートインターフェース146を介してシステムバス123に接続される。ネットワーク化された環境では、コンピュータ320に関連して描かれたプログラムモジュール、またはその部分が、遠隔メモリ記憶デバイスの中に記憶されることが可能である。図示したネットワーク接続は、例としてのものであり、コンピュータ間で通信リンクを確立する他の手段も使用できることが理解されよう。
【0032】
コンピュータプログラミング分野の技術者の慣行に従って、本発明を以下で、別段、明示しない限り、コンピュータ120によって行われる動作の作用および記号表現に関連して説明する。そのような作用および動作は、ときとして、コンピュータによって実行されるものとして述べられる。作用および記号で表現される動作には、電気信号表現の結果としての変換または縮小をもたらす、データビットを表す電気信号の処理装置121による操作、およびメモリシステム(システムメモリ122、ハードドライブ127、フロッピー(登録商標)ディスク129、およびCD−ROM131を含む)の中の記憶場所にデータビットを維持して、これにより、コンピュータシステムの動作を再構成すること、または別の仕方で変更すること、ならびに信号のその他の処理が含まれることが理解されよう。データビットが維持されるメモリ場所は、そのデータビットに対応する特定の電気特性、磁気特性、または光特性を有する物理的な場所である。
【0033】
図5は、本発明に関するより詳細な環境を示している。プロセッサ200が、バス225を介してメモリ媒体220に結合されている。また、プロセッサは、ネットワーク回線215を介してネットワーク210にも結合されている。ネットワーク210により、プロセッサが、他の遠隔コンピュータとの間でアセンブリおよびその他のコンポーネントの取得および送信を行うことが可能になる。メモリ媒体220は、メモリの残りの部分とは別個のキャッシュメモリ230を含む。キャッシュメモリ230は、アプリケーションプログラム232が実行される場所である。残りのメモリは、第2のキャッシュ、ROM、RAM、あるいは何らかの固定の媒体またはフロッピー(登録商標)ディスク媒体であるのが可能であることを理解されたい。ハッシングコンポーネント260が、アセンブリの開発段階中にアセンブリのバージョン情報およびハッシュを挿入するため、メモリ媒体220上に常駐する。ただし、ハッシングコンポーネント260は、アプリケーションプログラムおよびアセンブリの最初の展開および試験の最中にハッシュを挿入すること、または後の時点でアドミニストレータによって行われることが可能である。ハッシングコンポーネント260は、オペレーティングシステム275の一部として常駐するアプリケーションプログラムインターフェース(API)とすることが可能である。ただし、ハッシングコンポーネント260は、アプリケーションプログラム232の一部であることも可能である。さらに、ハッシングコンポーネント260は、いくつかの異なるコンポーネントから、例えば、ハッシュ機能およびバージョニング機能に関して別個のコンポーネントで構成することが可能である。
【0034】
アプリケーションプログラム232は、展開されて、キャッシュ230(例えば、ロードされたすべてのアセンブリを記憶するメモリ内のキャッシュ)の中にロードされる。アプリケーションプログラム232は、ローダ250と通信し、ローダ250が、実行時にアプリケーションプログラム232によって使用されるようにアプリケーションプログラム232によって指定されたアセンブリを探し出し、そのアセンブリをキャッシュ230の中にロードする。この例では、アセンブリAとラベル付けされた第1のアセンブリ234、およびアセンブリBとラベル付けされた第2のアセンブリ236が、キャッシュ230の中にロードされる。第2のアセンブリ236は、やはりキャッシュ230の中にロードされる第1のモジュール238および第2のモジュール240を含む。第1のアセンブリ234および第2のアセンブリ236は、オペレーティングシステムの一部である共用のアセンブリとして常駐することが可能であり、遠隔コンピュータ上にライブラリとして常駐することが可能であり、アプリケーションプログラム232の一部としてディレクトリの中に、または別のアプリケーションプログラムの中に常駐することが可能である。
【0035】
また、結合コンポーネント280も、メモリ媒体220の中に常駐する。結合コンポーネント280は、結合ポリシーを提供し、共用のアセンブリを扱うアプリケーションを管理するのに使用される。結合コンポーネント280は、アセンブリの元のバージョンに結合するか、アップグレードされたバージョンに結合するか、または標準化されたバージョンに結合するかの決定を行うことができる。例えば、第2のアセンブリ236が、第1のアセンブリ234の更新されたバージョンである場合、第1のアセンブリ234および第2のアセンブリ236が、同じアセンブリ名を有することが可能である。さらに、両方のアセンブリが、ローダ250によってキャッシュ230の中にロードされることが可能である。次に、結合コンポーネント280は、結合コンポーネント280の中で定義された結合ポリシーに基づき、アプリケーションプログラム232が、第1のアセンブリ234または第2のアセンブリ236に結合すべきか否かを判定することができる。結合コンポーネント280は、同じ名前を有するアセンブリが、システム内部で並んで常駐することを可能にし、またアプリケーションプログラム232、開発者、またはアドミニストレータに、適切な結合ポリシーがどのようなものであるかの決定を制御する能力を与える。
【0036】
確認コンポーネント270が、メモリ媒体220上に常駐する。確認コンポーネントは、アセンブリ内部のマニフェストを読み取るために起動され、アセンブリ、およびアセンブリのマニフェストをハッシングするのに使用されるハッシュアルゴリズムを呼び出す。次に、確認コンポーネント270は、マニフェストの中のハッシュをアセンブリに対してハッシュを実行することによって得られた実際のハッシュと比較する。次に確認コンポーネント270は、アセンブリで何らかの変更が行われているか否かをアプリケーションプログラム232に伝えることができる。次に、確認コンポーネント270は、中止するか否かを決定することができる。本発明の代替の態様では、確認コンポーネント270は、結合コンポーネント280によって設定された結合ポリシーに基づいてバージョン情報および発行元情報を検査することができる。このバージョン情報および発行元情報を使用して、ハッシュ確認に基づいて変更が発見されている場合でも、アプリケーションプログラムがそのアセンブリを実行すべきかどうかを判定することができる。本発明のさらに別の代替の態様では、確認コンポーネントが、アプリケーションプログラムの最初の展開および試験の最中に使用されるアセンブリのハッシュのテーブルを保持する。次に、確認コンポーネントは、アセンブリに対してハッシュを実行し、そのハッシュをテーブルの中にあるハッシュと比較することができる。確認コンポーネント270は、オペレーティングシステム275の一部として常駐するアプリケーションプログラムインターフェース(API)とすること、またはアプリケーションプログラム232の一部とすることも可能である。
【0037】
コンポーネントの以上の例は、例示する目的でだけ別個のものとして描いていることを理解されたい。様々なコンポーネントは、前述した機能性を維持しながらも、他のコンポーネントの中に組み込むことが可能なことを理解されたい。さらに、以上の説明は、どのようにコンポーネントが相互作用して本発明を実施することができるかの例であり、その他の例を使用して本発明を実施することも可能である。
【0038】
図6は、モジュールを有するアセンブリの完全性を確実にし、確認するための1つの特定の方法を示している。ステップ300で、少なくとも1つのモジュールを有するアセンブリが提供される。ステップ310で、識別情報およびモジュール情報を備えたアセンブリマニフェストを有するアセンブリのトップアセンブリが提供される。ステップ320でハッシングコンポーネント260を起動することにより、モジュール情報の中の少なくとも1つのモジュールのファイル内容全体のハッシュが提供される。この時点で、アプリケーションプログラム232、およびこのアプリケーションプログラムによって使用されるアセンブリを実行のためにキャッシュ230の中にロードすることが可能である。ステップ330で、モジュール情報の中の少なくとも1つのモジュールのハッシュ値が、その少なくとも1つのモジュールの実際のハッシュ値と比較される。ステップ340で、アセンブリの内容が変更されているかどうかの判定が行われる。アセンブリが変更されていない場合(いいえ)、そのアセンブリが、ステップ345で実行される。アセンブリが変更されている場合(はい)、通常、誤りが戻され、アプリケーションプログラムは、中止する。ステップ350で、結合コンポーネント280の中で定義された特定の結合ポリシーに基づき、識別情報を検査するオプションのステップが提供される。ステップ360で、変更が信頼できる発行元によって行われたかどうかの判定が、確認コンポーネント275によって行われる。発行元が、信頼できる場合(はい)、そのアセンブリが、ステップ365で実行される。発行元が、信頼できない場合(いいえ)、ステップ370で、アプリケーションプログラム232に誤りが戻され、アプリケーションプログラム232は、中止する。
【0039】
図7は、他のアセンブリによって参照されるアセンブリの完全性を確実にし、確認するための1つの特定の方法を示している。ステップ400で、少なくとも1つの他のアセンブリを参照するアセンブリが提供される。ステップ410で、識別情報および依存関係情報を有するアセンブリマニフェストがそのアセンブリに提供される。依存関係情報は、少なくとも1つの参照されるアセンブリのリストを含む。ステップ420で、ハッシングコンポーネント260を起動することにより、その少なくとも1つの参照されるアセンブリのマニフェストのハッシュが、依存関係情報の一部として提供される。この時点で、アプリケーションプログラム232、およびこのアプリケーションプログラムによって使用されるアセンブリが、実行のためにローダ250によってキャッシュ230の中にロードされることが可能になる。ステップ430で、依存関係情報の中の少なくとも1つの参照されるアセンブリのハッシュ値が、確認コンポーネント270を使用することによってその少なくとも1つの参照されるアセンブリのマニフェストの実際のハッシュ値と比較される。ステップ440で、何らかの参照されるアセンブリの内容が変更されているかどうかの判定が行われる。参照されるアセンブリのどれも変更されていない場合(いいえ)、その参照されるアセンブリが、ステップ445で実行される。参照されるアセンブリのどれかが変更されている場合(はい)、通常、誤りが戻され、アプリケーションプログラムが中止する。結合コンポーネント280の中で定義される特定の結合ポリシーに基づき、識別情報を検査するオプションのステップが、ステップ450で提供される。ステップ460で、変更が、信頼できる発行元によって行われているかどうかの判定が行われる。発行元が信頼できる場合(はい)、その参照されるアセンブリが、ステップ465で実行される。発行元が信頼できない場合(いいえ)、ステップ470で、アプリケーションプログラムに誤りが戻され、アプリケーションプログラムは、中止する。
【0040】
本発明をプログラミング方法、および/またはコンピュータアーキテクチャ、および特定の例に関して説明してきたが、本発明を実施するのに適した様々なプログラミング方法および/またはコンピュータアーキテクチャを使用することができ、それらの方法およびアーキテクチャも頭記の特許請求の範囲に含まれるものであることを理解されたい。
【0041】
本発明を本発明の好ましい態様に関して説明してきた。明らかに、以上の詳細な説明を読み、理解することで、他の人々は、修正形態および変更形態を思い付くであろう。本発明は、すべてのそのような修正形態、変更形態、およびそれらと等価の形態を含むと解釈されるものとする。
【0042】
(産業上の利用可能性)
本発明は、コンピュータおよびコンピュータソフトウェアの分野で産業上の利用可能性を有する。
【図面の簡単な説明】
【図1】
本発明の一態様による複数のモジュールを有するアセンブリを参照するアセンブリを示すブロック図である。
【図2】
本発明の一態様による複数のモジュールを有するアセンブリを詳細に示すブロック図である。
【図3】
本発明の一態様による複数のアセンブリを参照するアセンブリを詳細に示すブロック図である。
【図4】
本発明の環境によるコンピュータシステムを示すブロック図である。
【図5】
本発明による環境を詳細に示すブロック図である。
【図6】
本発明の一態様によるアセンブリの完全性を助長するための1つの特定の方法を示す流れ図である。
【図7】
本発明の一態様によるアセンブリの完全性を助長するための別の方法を示す流れ図である。
Claims (35)
- 実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するための方法であって、
アセンブリに該アセンブリを構成する複数のモジュールのリストを含むマニフェストを提供するステップと、
前記マニフェストに前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュを提供するステップと
を含むことを特徴とする方法。 - 前記マニフェストに前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュを提供するステップは、前記マニフェストに前記アセンブリを構成する複数のモジュールのリストの各モジュールのハッシュを提供するステップを含むことを特徴とする請求項1に記載の方法。
- 前記アセンブリのマニフェストの中で識別情報を提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
- 前記識別情報が、発行元情報およびバージョン情報を含むことを特徴とする請求項3に記載の方法。
- 前記アセンブリの終りで前記アセンブリの内容のハッシュを提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
- 前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容の実際のハッシュを決定し、前記実際のハッシュを前記アセンブリのマニフェストの中に常駐する前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュと比較することにより、前記アセンブリの内容が変更されているかどうかを判定するステップをさらに含むことを特徴とする請求項1に記載の方法。
- 前記アセンブリが変更されている場合、前記アセンブリの発行元が信頼できるかどうかを判定するステップをさらに含むことを特徴とする請求項6に記載の方法。
- 前記アセンブリが変更されている場合、前記アセンブリの発行元が信頼できるかどうかを判定するステップが、前記アセンブリのマニフェストの中に常駐するバージョン情報および発行元名情報をチェックするステップを含むことを特徴とする請求項7に記載の方法。
- 前記マニフェストに前記アセンブリが依存する少なくとも1つの他のアセンブリのマニフェストのハッシュを提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
- 実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するための方法であって、
少なくとも1つのアセンブリに、該アセンブリが依存する複数の参照のアセンブリのリストを含むマニフェストを提供するステップと、
前記複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリのマニフェストのハッシュを該マニフェストに提供するステップと
を含むことを特徴とする方法。 - 前記複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリのマニフェストのハッシュを該マニフェストに提供するステップは、前記複数の参照のアセンブリのリストの中の各々の参照のアセンブリのハッシュを提供するステップを含むことを特徴とする請求項10に記載の方法。
- 前記アセンブリの前記マニフェストの中で識別情報を提供するステップをさらに含むことを特徴とする請求項10に記載の方法。
- 前記識別情報が、発行元情報およびバージョン情報を含むことを特徴とする請求項12に記載の方法。
- 前記アセンブリの終りで前記アセンブリの内容のハッシュを提供するステップをさらに含むことを特徴とする請求項10に記載の方法。
- 前記複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリの内容の実際のハッシュを決定し、前記実際のハッシュと前記アセンブリのマニフェストの中に常駐する複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリの内容のハッシュとを比較することにより、前記少なくとも1つの参照のアセンブリの内容が変更されているかどうかを判定するステップをさらに含むことを特徴とする請求項10に記載の方法。
- 前記少なくとも1つの参照のアセンブリが変更されている場合、前記少なくとも1つの参照のアセンブリの発行元が信頼できるかどうかを判定するステップをさらに含むことを特徴とする請求項15に記載の方法。
- 前記少なくとも1つの参照のアセンブリが変更されている場合、前記少なくとも1つの参照されるアセンブリの発行元が信頼できるかどうかを判定する前記ステップが、前記少なくとも1つの参照されるアセンブリのマニフェストの中に常駐するバージョン情報および発行元名情報を検査するステップを含むことを特徴とする請求項16に記載の方法。
- 実行時にアプリケーションプログラムによって使用されることが可能な少なくとも1つのコンピュータ実行可能コンポーネントを有するコンピュータ可読媒体であって、
アセンブリを含んでおり、該アセンブリはマニフェストを含み、該マニフェストは前記アセンブリを構成する複数のモジュールのリストおよび前記複数のモジュールの中の少なくとも1つのアセンブリの内容のハッシュを含み、および前記複数のモジュールは前記アセンブリを構成することを特徴とするコンピュータ可読媒体。 - 前記マニフェストが、少なくとも1つの参照のアセンブリのリスト、および前記少なくとも1つの参照のアセンブリのマニフェストのハッシュを含むことを特徴とする請求項18に記載のコンピュータ可読媒体。
- 前記マニフェストが、識別情報およびバージョン情報を含むことを特徴とする請求項19に記載のコンピュータ可読媒体。
- 前記アセンブリが、ダイナミックリンクライブラリ(dynamically linked library)であることを特徴とする請求項19に記載のコンピュータ可読媒体。
- 実行時にアプリケーションプログラムによって使用されることが可能な少なくとも1つのコンピュータ実行可能コンポーネントを有するコンピュータ可読媒体であって、
アセンブリを含んでおり、該アセンブリはマニフェストを含み、該マニフェストは少なくとも1つの参照のアセンブリのリストおよび前記少なくとも1つの参照のアセンブリのマニフェストの内容のハッシュを含み、前記参照のアセンブリは前記アセンブリが参照することを特徴とするコンピュータ可読媒体。 - 実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムであって、
アセンブリを構成する複数のモジュールのリストを有する、前記アセンブリに関するマニフェストを提供するように適合された第1のコンポーネントと、
前記マニフェストに、前記複数のモジュールのリストのうちの少なくとも1つのモジュールのハッシュを提供するように適合された第2のコンポーネントと
を含むことを特徴とするシステム。 - 前記少なくとも1つのモジュールのハッシュを前記少なくとも1つのモジュールの実際のハッシュ値と比較するように適合された第3のコンポーネントをさらに含むことを特徴とする請求項23に記載のシステム。
- 前記マニフェストが、識別情報およびバージョン情報を含み、前記マニフェストの中の少なくとも1つのモジュールのハッシュと前記少なくとも1つのモジュールの実際のハッシュ値が異なる場合、前記第3のコンポーネントが、オリジネータ(originator)情報およびバージョン情報の検討に基づき、前記アセンブリが実行されるべきかどうかを判定するように適合されていることを特徴とする請求項24に記載のシステム。
- 同一の名前を有する別のアセンブリが、システム上に常駐する場合、アプリケーションプログラムが実行するアセンブリのバージョンを決定するための結合ポリシー情報を提供するように適合された結合コンポーネントをさらに含むことを特徴とする請求項23に記載のシステム。
- 実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムであって、
少なくとも1つの参照のアセンブリを有する、アセンブリに関するマニフェストを提供するように適合された第1のコンポーネントと、
前記マニフェストに、前記少なくとも1つの参照のアセンブリのハッシュを提供するように適合された第2のコンポーネントとを含むことを特徴とするシステム。 - 前記マニフェストの中の少なくとも1つの参照されるアセンブリのハッシュを前記少なくとも1つの参照のアセンブリの実際のハッシュ値と比較するように適合された第3のコンポーネントをさらに含むことを特徴とする請求項27に記載のシステム。
- 前記第3のコンポーネントに結合ポリシー情報を提供するように適合された結合コンポーネントをさらに含むことを特徴とする請求項27に記載のシステム。
- 実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムであって、
少なくとも1つの関連するアセンブリのリストを有するマニフェストをアセンブリに関連させるための手段と、
前記マニフェストに前記少なくとも1つの関連するアセンブリのハッシュを提供するための手段とを含むことを特徴とするシステム。 - 前記少なくとも1つの関連するアセンブリが、モジュールであることを特徴とする請求項30に記載のシステム。
- 前記少なくとも1つの関連するアセンブリが、参照のアセンブリであることを特徴とする請求項30に記載のシステム。
- 前記マニフェストの中の少なくとも1つの関連するアセンブリのハッシュ値を前記少なくとも1つの関連するアセンブリの実際のハッシュ値と比較するための手段をさらに含むことを特徴とする請求項30に記載のシステム。
- 結合ポリシーを確立するための手段をさらに含むことを特徴とする請求項30に記載のシステム。
- 前記アセンブリおよび前記少なくとも1つの関連するアセンブリの少なくともどちらかが、ダイナミックリンクライブラリであることを特徴とする請求項30に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/604,987 US7124408B1 (en) | 2000-06-28 | 2000-06-28 | Binding by hash |
PCT/US2001/040632 WO2002001351A2 (en) | 2000-06-28 | 2001-04-30 | Binding by hash |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004513412A true JP2004513412A (ja) | 2004-04-30 |
JP2004513412A5 JP2004513412A5 (ja) | 2008-02-21 |
JP4263476B2 JP4263476B2 (ja) | 2009-05-13 |
Family
ID=24421818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002506420A Expired - Fee Related JP4263476B2 (ja) | 2000-06-28 | 2001-04-30 | ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム |
Country Status (10)
Country | Link |
---|---|
US (1) | US7124408B1 (ja) |
EP (1) | EP1399808B1 (ja) |
JP (1) | JP4263476B2 (ja) |
CN (1) | CN1262919C (ja) |
AT (1) | ATE460702T1 (ja) |
AU (1) | AU2001259808A1 (ja) |
BR (1) | BR0112029A (ja) |
DE (1) | DE60141541D1 (ja) |
HK (1) | HK1064757A1 (ja) |
WO (1) | WO2002001351A2 (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006509297A (ja) * | 2002-12-10 | 2006-03-16 | カリンゴ・インコーポレーテッド | 文書セットのコンテンツ空間のナビゲーション |
JP2006164287A (ja) * | 2004-12-07 | 2006-06-22 | Microsoft Corp | 自己記述アーチファクトおよびアプリケーション抽象化 |
JP2006323675A (ja) * | 2005-05-19 | 2006-11-30 | Fujitsu Ltd | 情報処理装置、情報処理方法及びコンピュータプログラム |
JP2007318731A (ja) * | 2006-04-26 | 2007-12-06 | Ricoh Co Ltd | 複数のモジュール構成情報を管理できる画像形成装置 |
US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
JP2016197399A (ja) * | 2015-03-31 | 2016-11-24 | エーオー カスペルスキー ラボAO Kaspersky Lab | オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法 |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2001285161A1 (en) * | 2000-08-21 | 2002-03-04 | United States Postal Services | Delivery point validation system |
US8065394B2 (en) | 2001-08-20 | 2011-11-22 | Bally Gaming, Inc. | Local game-area network method |
US9555322B2 (en) | 2001-08-20 | 2017-01-31 | Bally Gaming, Inc. | Local game-area network method |
EP1343286A1 (en) * | 2002-03-04 | 2003-09-10 | BRITISH TELECOMMUNICATIONS public limited company | Lightweight authentication of information |
WO2003081440A1 (en) * | 2002-03-21 | 2003-10-02 | Snapp Robert F | Method and system for storing and retrieving data using hash-accessed multiple data stores |
US7664731B2 (en) * | 2002-03-21 | 2010-02-16 | United States Postal Service | Method and system for storing and retrieving data using hash-accessed multiple data stores |
US7159119B2 (en) * | 2002-09-06 | 2007-01-02 | United States Postal Service | Method and system for efficiently retrieving secured data by securely pre-processing provided access information |
US7895224B2 (en) | 2002-12-10 | 2011-02-22 | Caringo, Inc. | Navigation of the content space of a document set |
CN101405673B (zh) * | 2002-12-20 | 2011-12-14 | 高通股份有限公司 | 对设备上的组件进行自动处理的方法和装置 |
US7290250B2 (en) * | 2003-02-28 | 2007-10-30 | Bea Systems, Inc. | System and method for determining when an EJB compiler needs to be executed |
US9240888B2 (en) * | 2003-03-05 | 2016-01-19 | Bally Gaming, Inc. | Authentication system for gaming machines |
US8784195B1 (en) | 2003-03-05 | 2014-07-22 | Bally Gaming, Inc. | Authentication system for gaming machines |
DE10311249A1 (de) * | 2003-03-14 | 2004-09-23 | Robert Bosch Gmbh | Mikroprozessorsystem und Verfahren zum Erfassen des Austauschs von Bausteinen des Systems |
US7275244B1 (en) * | 2003-03-18 | 2007-09-25 | Microsoft Corporation | System and method for incrementally saving web files to a web server using file hash values |
US7065650B2 (en) * | 2004-05-10 | 2006-06-20 | Aladdin Knowledge Systems Ltd. | Method for indicating the integrity of a collection of digital objects |
EP1643336A1 (de) * | 2004-09-30 | 2006-04-05 | Siemens Aktiengesellschaft | Eindeutige Produktidentifikation |
US8627086B2 (en) * | 2004-10-11 | 2014-01-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Secure loading and storing of data in a data processing device |
EP1645931A1 (en) * | 2004-10-11 | 2006-04-12 | Telefonaktiebolaget LM Ericsson (publ) | Secure loading and storing of data in a data processing device |
RU2408071C2 (ru) * | 2004-10-11 | 2010-12-27 | Телефонактиеболагет Лм Эрикссон (Пабл) | Защищенные загрузка и хранение данных в устройстве обработки данных |
CN100489728C (zh) * | 2004-12-02 | 2009-05-20 | 联想(北京)有限公司 | 一种建立计算机中可信任运行环境的方法 |
EP1672486A1 (en) * | 2004-12-15 | 2006-06-21 | Sony Ericsson Mobile Communications AB | Method and device for permitting secure use of program modules |
US7664323B2 (en) * | 2005-01-28 | 2010-02-16 | Microsoft Corporation | Scalable hash-based character recognition |
US8060860B2 (en) * | 2005-04-22 | 2011-11-15 | Apple Inc. | Security methods and systems |
JP4397354B2 (ja) * | 2005-06-28 | 2010-01-13 | 富士通株式会社 | テスト記録方法、テスト記録装置、およびテスト記録プログラム |
US8838974B2 (en) | 2005-07-15 | 2014-09-16 | The Mathworks, Inc. | System and method for verifying the integrity of read-only components in deployed mixed-mode applications |
US8296758B2 (en) * | 2006-09-20 | 2012-10-23 | Sap Ag | Deployment and versioning of applications |
EP1918839A1 (de) * | 2006-11-03 | 2008-05-07 | Siemens Aktiengesellschaft | Modifizieren eines Softwarestands einer Steuergerätesoftware für ein Steuergerät und Erkennen einer solchen Modifikation |
US8006281B2 (en) * | 2006-12-21 | 2011-08-23 | Microsoft Corporation | Network accessible trusted code |
AU2008200752B2 (en) * | 2007-03-29 | 2010-10-28 | Aristocrat Technologies Australia Pty Limited | A storage method for a gaming machine |
US8555070B2 (en) * | 2007-04-10 | 2013-10-08 | Abbott Medical Optics Inc. | External interface access control for medical systems |
US8555410B2 (en) * | 2007-04-10 | 2013-10-08 | Abbott Medical Optics Inc. | External interface access control |
US8484752B2 (en) * | 2007-11-14 | 2013-07-09 | Caterpillar Inc. | Verifying authenticity of electronic control unit code |
US8321933B2 (en) * | 2007-11-14 | 2012-11-27 | Caterpillar Inc. | Securing electronic control unit code |
WO2009132261A1 (en) * | 2008-04-25 | 2009-10-29 | Vmware, Inc. | Updating a file using differences and file format therefor |
US8214646B2 (en) * | 2008-05-06 | 2012-07-03 | Research In Motion Limited | Bundle verification |
US20090327405A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Enhanced Client And Server Systems for Operating Collaboratively Within Shared Workspaces |
US8918873B1 (en) * | 2009-07-02 | 2014-12-23 | Symantec Corporation | Systems and methods for exonerating untrusted software components |
US8776097B2 (en) * | 2010-09-15 | 2014-07-08 | Myspace, Llc | Dynamic native binding for managed assemblies |
US9244673B2 (en) * | 2012-06-08 | 2016-01-26 | Apple Inc. | System and method for updating application archive files |
CN102867061B (zh) * | 2012-09-20 | 2015-08-19 | 北京奇虎科技有限公司 | 系统管理方法和装置 |
US9547657B2 (en) | 2014-02-18 | 2017-01-17 | Black Duck Software, Inc. | Methods and systems for efficient comparison of file sets |
US10256977B2 (en) | 2014-02-18 | 2019-04-09 | Synopsys, Inc. | Methods and systems for efficient representation of file sets |
US10318262B2 (en) | 2015-03-25 | 2019-06-11 | Microsoft Technology Licensing, Llc | Smart hashing to reduce server memory usage in a distributed system |
US9367686B1 (en) * | 2015-07-21 | 2016-06-14 | AO Kaspersky Lab | System and method for antivirus checking of native images of software assemblies |
CN105786498A (zh) * | 2016-02-25 | 2016-07-20 | 广州阿里巴巴文学信息技术有限公司 | 用于修改应用程序的方法、设备和电子设备 |
US10083029B2 (en) * | 2016-11-09 | 2018-09-25 | Red Hat, Inc. | Detect application defects by correlating contracts in application dependencies |
JP6759169B2 (ja) * | 2017-09-11 | 2020-09-23 | 株式会社東芝 | 情報処理装置、情報処理方法、および情報処理プログラム |
CN108959455B (zh) * | 2018-06-15 | 2020-12-04 | 未鲲(上海)科技服务有限公司 | 单页Web应用实现方法、装置、计算机设备和存储介质 |
JP7020384B2 (ja) * | 2018-11-29 | 2022-02-16 | 日本電信電話株式会社 | アプリケーション動作制御装置、アプリケーション動作制御方法、および、アプリケーション動作制御プログラム |
US11303628B2 (en) * | 2019-11-15 | 2022-04-12 | Sap Se | Software deployment certification |
US11321064B1 (en) | 2021-10-04 | 2022-05-03 | CTRL IQ, Inc. | Systems and methods for trusted and secure application deployment via collective signature verification of the application artifacts |
US20240111872A1 (en) * | 2022-09-30 | 2024-04-04 | General Electric Company | Devices, systems, and methods for securely loading embedded software using a manifest |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2093094C (en) * | 1992-04-06 | 2000-07-11 | Addison M. Fischer | Method and apparatus for creating, supporting, and using travelling programs |
EP0578207B1 (en) * | 1992-07-06 | 1999-12-01 | Microsoft Corporation | Method for naming and binding objects |
AU683038B2 (en) * | 1993-08-10 | 1997-10-30 | Addison M. Fischer | A method for operating computers and for processing information among computers |
US5701462A (en) | 1993-12-29 | 1997-12-23 | Microsoft Corporation | Distributed file system providing a unified name space with efficient name resolution |
US5694546A (en) * | 1994-05-31 | 1997-12-02 | Reisman; Richard R. | System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list |
US5689565A (en) | 1995-06-29 | 1997-11-18 | Microsoft Corporation | Cryptography system and method for providing cryptographic services for a computer application |
US5805899A (en) * | 1995-07-06 | 1998-09-08 | Sun Microsystems, Inc. | Method and apparatus for internal versioning of objects using a mapfile |
US5625693A (en) * | 1995-07-07 | 1997-04-29 | Thomson Consumer Electronics, Inc. | Apparatus and method for authenticating transmitting applications in an interactive TV system |
US5802368A (en) * | 1995-09-29 | 1998-09-01 | Informix Software, Inc. | Dynamic Library Task Switching |
US5692047A (en) * | 1995-12-08 | 1997-11-25 | Sun Microsystems, Inc. | System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources |
US5848274A (en) | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US5978484A (en) | 1996-04-25 | 1999-11-02 | Microsoft Corporation | System and method for safety distributing executable objects |
US6021491A (en) | 1996-11-27 | 2000-02-01 | Sun Microsystems, Inc. | Digital signatures for data streams and data archives |
US5958051A (en) * | 1996-11-27 | 1999-09-28 | Sun Microsystems, Inc. | Implementing digital signatures for data streams and data archives |
US5892904A (en) | 1996-12-06 | 1999-04-06 | Microsoft Corporation | Code certification for network transmission |
US6381741B1 (en) * | 1998-05-18 | 2002-04-30 | Liberate Technologies | Secure data downloading, recovery and upgrading |
US5974421A (en) | 1996-12-23 | 1999-10-26 | Microsoft Corporation | Cache-efficient object loader |
JP3662594B2 (ja) * | 1997-02-19 | 2005-06-22 | 三菱電機株式会社 | パーソナルコンピュータ組込み型数値制御装置 |
US6212673B1 (en) * | 1997-03-31 | 2001-04-03 | International Business Machines Corporation | Component-neutral builder interface |
US6149318A (en) * | 1997-04-15 | 2000-11-21 | Samuel C. Kendall | Link-time and run-time error detection, and program instrumentation |
US6182279B1 (en) * | 1997-08-12 | 2001-01-30 | International Business Machines Corporation | Method and apparatus for storing templates in a component system |
US6044467A (en) | 1997-12-11 | 2000-03-28 | Sun Microsystems, Inc. | Secure class resolution, loading and definition |
US5991399A (en) * | 1997-12-18 | 1999-11-23 | Intel Corporation | Method for securely distributing a conditional use private key to a trusted entity on a remote system |
RU2000115287A (ru) * | 1998-01-16 | 2002-07-27 | Медиадна | Система и способ для подтверждения подлинности равноправных компонентов |
US6374266B1 (en) * | 1998-07-28 | 2002-04-16 | Ralph Shnelvar | Method and apparatus for storing information in a data processing system |
US6463535B1 (en) * | 1998-10-05 | 2002-10-08 | Intel Corporation | System and method for verifying the integrity and authorization of software before execution in a local platform |
US6230184B1 (en) * | 1998-10-19 | 2001-05-08 | Sun Microsystems, Inc. | Method and apparatus for automatically optimizing execution of a computer program |
US6308320B1 (en) * | 1999-01-15 | 2001-10-23 | Hewlett-Packard Company | Method and apparatus for incremental selective compilation of intermediate code files during computer system compilation and linking |
US6324637B1 (en) * | 1999-08-13 | 2001-11-27 | Sun Microsystems, Inc. | Apparatus and method for loading objects from a primary memory hash index |
US6748538B1 (en) * | 1999-11-03 | 2004-06-08 | Intel Corporation | Integrity scanner |
-
2000
- 2000-06-28 US US09/604,987 patent/US7124408B1/en not_active Expired - Fee Related
-
2001
- 2001-04-30 EP EP01933377A patent/EP1399808B1/en not_active Expired - Lifetime
- 2001-04-30 CN CNB018138179A patent/CN1262919C/zh not_active Expired - Fee Related
- 2001-04-30 JP JP2002506420A patent/JP4263476B2/ja not_active Expired - Fee Related
- 2001-04-30 DE DE60141541T patent/DE60141541D1/de not_active Expired - Lifetime
- 2001-04-30 AT AT01933377T patent/ATE460702T1/de not_active IP Right Cessation
- 2001-04-30 BR BRPI0112029-8A patent/BR0112029A/pt not_active IP Right Cessation
- 2001-04-30 WO PCT/US2001/040632 patent/WO2002001351A2/en active Search and Examination
- 2001-04-30 AU AU2001259808A patent/AU2001259808A1/en not_active Abandoned
-
2004
- 2004-09-23 HK HK04107336.4A patent/HK1064757A1/xx not_active IP Right Cessation
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006509297A (ja) * | 2002-12-10 | 2006-03-16 | カリンゴ・インコーポレーテッド | 文書セットのコンテンツ空間のナビゲーション |
JP2006164287A (ja) * | 2004-12-07 | 2006-06-22 | Microsoft Corp | 自己記述アーチファクトおよびアプリケーション抽象化 |
JP2006323675A (ja) * | 2005-05-19 | 2006-11-30 | Fujitsu Ltd | 情報処理装置、情報処理方法及びコンピュータプログラム |
JP4698285B2 (ja) * | 2005-05-19 | 2011-06-08 | 富士通株式会社 | 情報処理装置、情報処理方法及びコンピュータプログラム |
US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
JP2007318731A (ja) * | 2006-04-26 | 2007-12-06 | Ricoh Co Ltd | 複数のモジュール構成情報を管理できる画像形成装置 |
US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
JP2016197399A (ja) * | 2015-03-31 | 2016-11-24 | エーオー カスペルスキー ラボAO Kaspersky Lab | オペレーティング・システム・リソースに対する機械語のネイティブイメージのアクセス制御のシステム及び方法 |
Also Published As
Publication number | Publication date |
---|---|
BR0112029A (pt) | 2006-05-02 |
ATE460702T1 (de) | 2010-03-15 |
EP1399808A2 (en) | 2004-03-24 |
WO2002001351A3 (en) | 2003-12-31 |
AU2001259808A1 (en) | 2002-01-08 |
DE60141541D1 (de) | 2010-04-22 |
EP1399808B1 (en) | 2010-03-10 |
JP4263476B2 (ja) | 2009-05-13 |
CN1262919C (zh) | 2006-07-05 |
CN1535417A (zh) | 2004-10-06 |
HK1064757A1 (en) | 2005-02-04 |
US7124408B1 (en) | 2006-10-17 |
WO2002001351A2 (en) | 2002-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4263476B2 (ja) | ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム | |
EP1577767B1 (en) | Code rewriting | |
US7117371B1 (en) | Shared names | |
CN102521081B (zh) | 修复遭破坏的软件 | |
US7055146B1 (en) | Method and system for dynamically inserting modifications for identified programs | |
US6802006B1 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
US7703083B2 (en) | Persisting and resolving application assembly binds | |
US6871344B2 (en) | Configurations for binding software assemblies to application programs | |
US7496757B2 (en) | Software verification system, method and computer program element | |
JP4828218B2 (ja) | 自己記述アーチファクトおよびアプリケーション抽象化 | |
US7684964B2 (en) | Model and system state synchronization | |
US20070289019A1 (en) | Methodology, system and computer readable medium for detecting and managing malware threats | |
US8181166B2 (en) | System and method for determining when an EJB compiler needs to be executed | |
US20110302565A1 (en) | Implicit workspace dependencies | |
MXPA05013801A (es) | Sistemas y metodos para validar integridad de archivo ejecutable utilizando criptografias de imagen parciales. | |
US7650504B2 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
US8185888B2 (en) | Software execution with minimal impact deployment | |
EP1303802B1 (en) | System and method of verifying the authenticity of dynamically connectable executable images | |
WO2002001551A1 (en) | Input device for voice recognition and articulation using keystroke data. | |
JP2007128537A (ja) | 動的に接続可能な実行イメージの真正性検証システム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20071122 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071226 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071227 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071227 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20071227 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20080125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080131 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080423 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080520 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080801 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20080909 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080925 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081216 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090115 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090212 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120220 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4263476 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120220 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130220 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140220 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |