JP2004513412A - ハッシュによる結合 - Google Patents

ハッシュによる結合 Download PDF

Info

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
Application number
JP2002506420A
Other languages
English (en)
Other versions
JP4263476B2 (ja
JP2004513412A5 (ja
Inventor
スリバトサン パーササラシー
スティーブン ジェイ.プラットスクナー
クレイグ ティー.シンクレア
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 JP2004513412A publication Critical patent/JP2004513412A/ja
Publication of JP2004513412A5 publication Critical patent/JP2004513412A5/ja
Application granted granted Critical
Publication of JP4263476B2 publication Critical patent/JP4263476B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/51Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic 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

実行時中にアプリケーションプログラム(136、232)によって使用されるコンポーネントおよびアセンブリ(10、20、30、70、80、90)にセキュリティを提供するためのシステムおよび方法を提供する。アセンブリ(10、20、30、70、80、90)が、アプリケーションプログラム(136、232)によって記述されるバージョニング規則を実施するのに使用することができるバージョン情報を担持する。実行時に、アプリケーションプログラム(136、232)によって要求されたバージョン番号が、実際に見出されるアセンブリ(10、20、30、70、80、90)のバージョン番号と比較される。バージョン番号を比較することに加えて、本発明は、暗号ハッシュに基づいてより厳密な形態のバージョン検査を提供する。アセンブリ(10、20、30、70、80、90)が、そのアセンブリ(10、20、30、70、80、90)を構成するファイルのリストを含むモジュール情報を備える。各モジュール(14、45、50、96、98)に関して記録された情報の一部は、マニフェストが構築された時点におけるモジュールの内容のハッシュである。別のアセンブリ(80、90)を参照するアセンブリ(70)が、その参照されるアセンブリ(80、90)のマニフェスト(82、94)のハッシュを計算する。アセンブリマニフェスト(82、94)は、アセンブリが依存する、または参照する他のアセンブリに関する情報である依存関係情報を含むことが可能である。

Description

【0001】
(技術分野)
本発明は、コンピュータシステムに関し、より詳細には、実行時にアプリケーションプログラムによって使用されるコンポーネントの完全性を確保するためのシステムおよび方法に関する。
【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つのモジュールの内容のハッシュを提供するステップと
    を含むことを特徴とする方法。
  2. 前記マニフェストに前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュを提供するステップは、前記マニフェストに前記アセンブリを構成する複数のモジュールのリストの各モジュールのハッシュを提供するステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記アセンブリのマニフェストの中で識別情報を提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記識別情報が、発行元情報およびバージョン情報を含むことを特徴とする請求項3に記載の方法。
  5. 前記アセンブリの終りで前記アセンブリの内容のハッシュを提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容の実際のハッシュを決定し、前記実際のハッシュを前記アセンブリのマニフェストの中に常駐する前記複数のモジュールのリストのうちの少なくとも1つのモジュールの内容のハッシュと比較することにより、前記アセンブリの内容が変更されているかどうかを判定するステップをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記アセンブリが変更されている場合、前記アセンブリの発行元が信頼できるかどうかを判定するステップをさらに含むことを特徴とする請求項6に記載の方法。
  8. 前記アセンブリが変更されている場合、前記アセンブリの発行元が信頼できるかどうかを判定するステップが、前記アセンブリのマニフェストの中に常駐するバージョン情報および発行元名情報をチェックするステップを含むことを特徴とする請求項7に記載の方法。
  9. 前記マニフェストに前記アセンブリが依存する少なくとも1つの他のアセンブリのマニフェストのハッシュを提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
  10. 実行時中にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するための方法であって、
    少なくとも1つのアセンブリに、該アセンブリが依存する複数の参照のアセンブリのリストを含むマニフェストを提供するステップと、
    前記複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリのマニフェストのハッシュを該マニフェストに提供するステップと
    を含むことを特徴とする方法。
  11. 前記複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリのマニフェストのハッシュを該マニフェストに提供するステップは、前記複数の参照のアセンブリのリストの中の各々の参照のアセンブリのハッシュを提供するステップを含むことを特徴とする請求項10に記載の方法。
  12. 前記アセンブリの前記マニフェストの中で識別情報を提供するステップをさらに含むことを特徴とする請求項10に記載の方法。
  13. 前記識別情報が、発行元情報およびバージョン情報を含むことを特徴とする請求項12に記載の方法。
  14. 前記アセンブリの終りで前記アセンブリの内容のハッシュを提供するステップをさらに含むことを特徴とする請求項10に記載の方法。
  15. 前記複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリの内容の実際のハッシュを決定し、前記実際のハッシュと前記アセンブリのマニフェストの中に常駐する複数の参照のアセンブリのリストの中の少なくとも1つの参照のアセンブリの内容のハッシュとを比較することにより、前記少なくとも1つの参照のアセンブリの内容が変更されているかどうかを判定するステップをさらに含むことを特徴とする請求項10に記載の方法。
  16. 前記少なくとも1つの参照のアセンブリが変更されている場合、前記少なくとも1つの参照のアセンブリの発行元が信頼できるかどうかを判定するステップをさらに含むことを特徴とする請求項15に記載の方法。
  17. 前記少なくとも1つの参照のアセンブリが変更されている場合、前記少なくとも1つの参照されるアセンブリの発行元が信頼できるかどうかを判定する前記ステップが、前記少なくとも1つの参照されるアセンブリのマニフェストの中に常駐するバージョン情報および発行元名情報を検査するステップを含むことを特徴とする請求項16に記載の方法。
  18. 実行時にアプリケーションプログラムによって使用されることが可能な少なくとも1つのコンピュータ実行可能コンポーネントを有するコンピュータ可読媒体であって、
    アセンブリを含んでおり、該アセンブリはマニフェストを含み、該マニフェストは前記アセンブリを構成する複数のモジュールのリストおよび前記複数のモジュールの中の少なくとも1つのアセンブリの内容のハッシュを含み、および前記複数のモジュールは前記アセンブリを構成することを特徴とするコンピュータ可読媒体。
  19. 前記マニフェストが、少なくとも1つの参照のアセンブリのリスト、および前記少なくとも1つの参照のアセンブリのマニフェストのハッシュを含むことを特徴とする請求項18に記載のコンピュータ可読媒体。
  20. 前記マニフェストが、識別情報およびバージョン情報を含むことを特徴とする請求項19に記載のコンピュータ可読媒体。
  21. 前記アセンブリが、ダイナミックリンクライブラリ(dynamically linked library)であることを特徴とする請求項19に記載のコンピュータ可読媒体。
  22. 実行時にアプリケーションプログラムによって使用されることが可能な少なくとも1つのコンピュータ実行可能コンポーネントを有するコンピュータ可読媒体であって、
    アセンブリを含んでおり、該アセンブリはマニフェストを含み、該マニフェストは少なくとも1つの参照のアセンブリのリストおよび前記少なくとも1つの参照のアセンブリのマニフェストの内容のハッシュを含み、前記参照のアセンブリは前記アセンブリが参照することを特徴とするコンピュータ可読媒体。
  23. 実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムであって、
    アセンブリを構成する複数のモジュールのリストを有する、前記アセンブリに関するマニフェストを提供するように適合された第1のコンポーネントと、
    前記マニフェストに、前記複数のモジュールのリストのうちの少なくとも1つのモジュールのハッシュを提供するように適合された第2のコンポーネントと
    を含むことを特徴とするシステム。
  24. 前記少なくとも1つのモジュールのハッシュを前記少なくとも1つのモジュールの実際のハッシュ値と比較するように適合された第3のコンポーネントをさらに含むことを特徴とする請求項23に記載のシステム。
  25. 前記マニフェストが、識別情報およびバージョン情報を含み、前記マニフェストの中の少なくとも1つのモジュールのハッシュと前記少なくとも1つのモジュールの実際のハッシュ値が異なる場合、前記第3のコンポーネントが、オリジネータ(originator)情報およびバージョン情報の検討に基づき、前記アセンブリが実行されるべきかどうかを判定するように適合されていることを特徴とする請求項24に記載のシステム。
  26. 同一の名前を有する別のアセンブリが、システム上に常駐する場合、アプリケーションプログラムが実行するアセンブリのバージョンを決定するための結合ポリシー情報を提供するように適合された結合コンポーネントをさらに含むことを特徴とする請求項23に記載のシステム。
  27. 実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムであって、
    少なくとも1つの参照のアセンブリを有する、アセンブリに関するマニフェストを提供するように適合された第1のコンポーネントと、
    前記マニフェストに、前記少なくとも1つの参照のアセンブリのハッシュを提供するように適合された第2のコンポーネントとを含むことを特徴とするシステム。
  28. 前記マニフェストの中の少なくとも1つの参照されるアセンブリのハッシュを前記少なくとも1つの参照のアセンブリの実際のハッシュ値と比較するように適合された第3のコンポーネントをさらに含むことを特徴とする請求項27に記載のシステム。
  29. 前記第3のコンポーネントに結合ポリシー情報を提供するように適合された結合コンポーネントをさらに含むことを特徴とする請求項27に記載のシステム。
  30. 実行時にアプリケーションプログラムによって使用されることが可能なアセンブリの完全性を助長するためのシステムであって、
    少なくとも1つの関連するアセンブリのリストを有するマニフェストをアセンブリに関連させるための手段と、
    前記マニフェストに前記少なくとも1つの関連するアセンブリのハッシュを提供するための手段とを含むことを特徴とするシステム。
  31. 前記少なくとも1つの関連するアセンブリが、モジュールであることを特徴とする請求項30に記載のシステム。
  32. 前記少なくとも1つの関連するアセンブリが、参照のアセンブリであることを特徴とする請求項30に記載のシステム。
  33. 前記マニフェストの中の少なくとも1つの関連するアセンブリのハッシュ値を前記少なくとも1つの関連するアセンブリの実際のハッシュ値と比較するための手段をさらに含むことを特徴とする請求項30に記載のシステム。
  34. 結合ポリシーを確立するための手段をさらに含むことを特徴とする請求項30に記載のシステム。
  35. 前記アセンブリおよび前記少なくとも1つの関連するアセンブリの少なくともどちらかが、ダイナミックリンクライブラリであることを特徴とする請求項30に記載のシステム。
JP2002506420A 2000-06-28 2001-04-30 ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム Expired - Fee Related JP4263476B2 (ja)

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)

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

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

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

Cited By (10)

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