JP2004505343A - 動的に接続可能な実行可能イメージの真正性検証システム及び方法 - Google Patents

動的に接続可能な実行可能イメージの真正性検証システム及び方法 Download PDF

Info

Publication number
JP2004505343A
JP2004505343A JP2002514509A JP2002514509A JP2004505343A JP 2004505343 A JP2004505343 A JP 2004505343A JP 2002514509 A JP2002514509 A JP 2002514509A JP 2002514509 A JP2002514509 A JP 2002514509A JP 2004505343 A JP2004505343 A JP 2004505343A
Authority
JP
Japan
Prior art keywords
executable image
digital signature
pointer
executable
location
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
JP2002514509A
Other languages
English (en)
Other versions
JP4698925B2 (ja
Inventor
ボドロフ,ドミトリー
Original Assignee
マクロビジョン・コーポレーション
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 マクロビジョン・コーポレーション filed Critical マクロビジョン・コーポレーション
Publication of JP2004505343A publication Critical patent/JP2004505343A/ja
Application granted granted Critical
Publication of JP4698925B2 publication Critical patent/JP4698925B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本発明は、実行可能イメージの真正性を検証するシステム及び方法である。このシステムは、プログラムローダーによって用意された実行可能形式の部分を含まないデジタル署名の内容を使用して、実行可能形式に対する対照デジタル署名を判定するランタイム検証部を具備する。ランタイム検証部は、実行可能イメージのローディングに続いて、実行可能イメージが不適当に修正されていないことを検証するため真正デジタル署名を判定する。更に、ランタイム検証部は、実行可能イメージ内の各ポインタが不適当に指示先を書き換えられていないことを保証する。

Description

【0001】
〔発明の分野〕
本発明はコンピュータシステムに係る。特に、本発明は、動的にコネクト可能な実行可能イメージの真正性を検証するシステム及び方法に関する。
【0002】
〔関連技術の説明〕
新しいオブジェクトモデルは、ランタイム時にソフトウェアアプリケーションを動的に統合する。例えば、マイクロソフト社によりライセンスが供与されるウィンドウズ(登録商標)は、ソフトウェアアプリケーションの実行中にソフトウェアアプリケーションを動的リンクライブラリと動的に統合することができる。ユーザがソフトウェアアプリケーションの実行を要求した後、プログラムローダーは、プロセスイメージを作成するため、アプリケーションのディスクイメージをディスク記憶装置からメインメモリへコピーする。ディスクイメージは、ロードされる前の実行可能イメージを表し、プロセスイメージはメモリにロードされた後の実行可能イメージを表す。ディスクイメージとプロセスイメージの両方は、典型的に、ソフトウェアの中でランタイム時に動的リンクライブラリを参照するため用意されるべき部分を識別するフィクスアップ・セクションを含む。
【0003】
注意すべきことは、ローディング後に、プロセスイメージはディスクイメージと異なる点である。そのため、ディスクイメージに関して準備されているチェックサムは、たとえプロセスイメージが不正に改ざんされていなくても、プロセスイメージのチェックサムと一致しなくなる。
【0004】
したがって、動的ローディング環境においてソフトウェアアプリケーションの正体を検証し得るシステムが要望される。特に、このシステムは、別のデータオブジェクトへ動的にコネクトされたソフトウェアアプリケーションがソフトウェアアプリケーションの実行に続いて改ざんされたかどうかを判定できなければならない。
【0005】
〔発明の概要〕
本発明の一実施例は、実行可能イメージの真正性を判定するシステムである。このシステムは、一つ以上のポインタを有する実行可能イメージと、時間的に第1の点(第1の時点)で各ポインタ以外の実行可能イメージの選択された内容に基づいて対照デジタル署名を生成する機能を備えた検証部と、を具備し、検証部は、各ポインタ以外の実行可能イメージの選択された内容に基づいて第2の時点で真正デジタル署名を生成し、検証部は、対照デジタル署名が真正デジタル署名と一致するかどうかを判定する。
【0006】
本発明の他の実施例は、実行可能イメージの真正性を判定するシステムであり、このシステムは、一つ以上のポインタを有する実行可能イメージを具備し、実行可能イメージは、各ポインタが実行可能イメージ内のロケーションを参照するかどうかを指定する情報を含み、このシステムは、各ポインタが実行可能イメージ内の対応したロケーションを参照するかどうかを判定する機能を備えた検証部を具備する。
【0007】
本発明の更に別の実施例は、実行可能イメージの真正性を判定するシステムであり、このシステムは、第1の実行可能イメージと、第1の実行可能イメージ内のロケーションを参照するポインタを含む第2の実行可能イメージと、ポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する機能を備えた検証部と、を具備する。
【0008】
本発明の更に別の実施例は、実行可能イメージの真正性を判定する機能を備えたシステムであり、このシステムは、第1の実行可能イメージ、第2の実行可能イメージ、及び、検証部を具備し、第2の実行可能イメージは、第1の実行可能イメージの識別子及び一つ以上の外部ポインタを収容するインポートテーブルと、機械コード及び一つ以上のインポートポインタを収容するコードセクションとを含み、各外部ポインタは第1の実行可能イメージ内のロケーションを参照し、各インポートポインタはインポートテーブル内のロケーションを参照し、検証部は、実行可能イメージの選択された内容に基づいて対照デジタル署名を第1の時点で生成する機能を備え、各インポートポインタ及び各外部ポインタは選択された内容に含まれず、検証部は、一つ以上のポインタの各々を含まない実行可能イメージの選択された内容に基づいて第2の時点で真正デジタル署名を生成し、検証部は、対照デジタル署名が真正デジタル署名と一致するかどうかを判定し、検証部は、各インポートポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定し、検証部は、インポートポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する。
【0009】
〔発明の詳細な説明〕
以下の説明は、本発明のある特定の実施例を対象にしている。しかし、本発明は、特許請求の範囲に記載され、対象とされているように様々な異なる態様で実施され得る。
【0010】
・システム概要
図1は、コンピュータ90を示す上位レベルのブロック図である。コンピュータ90は、コンピュータ90で実行される一つ以上の実行可能イメージ100に関して真正性チェックを可能にする。
【0011】
コンピュータ90は、Pentium(登録商標)プロセッサ、Pentium (登録商標)Proプロセッサ、8051プロセッサ、MPS(登録商標)プロセッサ、Power PC(登録商標)プロセッサ、或いは、ALPHA(登録商標)プロセッサのような従来の汎用型の単一チップ若しくはマルチチップのマイクロプロセッサを利用する。
【0012】
コンピュータ90は、オペレーティングシステム95とメモリ108を具備する。オペレーティングシステムは、どのオペレーティングシステムのベンダーから供給されるものでもよく、例えば、UNIX(登録商標)、LINUX、ディスク・オペレーティング・システム(DOS)、OS/2、Windows(登録商標) 3.X、Windows(登録商標) 95、Windows(登録商標) 98、及び、Windows(登録商標) NTなどを含む。説明の便宜上、本発明の実施例は、Windows(登録商標) 95に関して記述される。
【0013】
コンピュータ90は、実行可能イメージ100をコンピュータ90へ供給する一つ以上の実行可能イメージ供給元107と通信する。図1に示されるように、典型的な実行可能イメージ供給元には、サーバ110、インターネット114、データベース118、ネットワーク122、ハードウェア装置128、リムーバル記憶装置130などが含まれる。
【0014】
実行可能イメージ100は、それ自体で、若しくは、他の実行可能イメージと共に、一つ以上のソフトウェア・アプリケーションを定義することができるデータオブジェクトである。ソフトウェア・アプリケーションには、例えば、ワード・プロセッサ、データベース、デジタル権利管理システム、個人ファイナンス・ユーティリティ、グラフィック・ツール、インターネット・ブラウザ、コンピュータゲーム、通信プログラム、認証プログラム、電子ウォレット、マルチメディア・レンダラ、契約マネージャ等が含まれる。更に、実行可能イメージ100は、他の実行可能イメージと動的に連結可能である。例えば、Windows(登録商標)95と共に使用するため開発された本発明の一実施例において、実行可能イメージは、動的リンクテーブル(DLL)である。
【0015】
インターネット114は、公衆インターネット、私設インターネット、セキュアインターネット、私設網、公衆網、付加価値網、イントラネット等のようなバリエーションがある。
【0016】
ネットワーク122は、任意のタイプの電子的に接続されたコンピュータのグループを含み、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)のようなネットワークを含む。更に、ネットワークへの接続は、例えば、遠隔モデム、イーサネット(登録商標)(IEEE 802.3)、トークンリング(IEEE 802.5)、ファイバ・ディストリビューテッド・データリンク・インタフェース(FDDI)、又は、非同期転送モード(ATM)等によって行われる。コンピューティング装置は、デスクトップ、サーバ、ポータブル、ハンドヘルド、セットトップ、若しくは、その他の望ましい構成の型である。ハードウェア装置126は、論理チップ、ROM、RAM、スマートカード、或いは、中央処理ユニットなどである。リムーバブル媒体記憶装置130は、フレキシブルディスク、コンパクトディスク、ハードディスク、テープドライブ、ROM、若しくは、その他の持続性の記憶媒体などでもよい。
【0017】
図2は、検証部204を示すブロック図である。本発明の一実施例において、検証部204は、実行可能イメージ100にフォーマットが類似している実行可能イメージである。本発明の更に別の実施例において、検証部204は、プログラムローダー208と一体化される。プログラムローダー208の一つの機能は、記憶装置105(図1)からメモリ108へ実行可能イメージ100をコピーし、実行可能イメージ100の実行前にコード及びデータポインタを適切なアドレスにバインドする。説明の便宜上、以下では、検証部204は、実行可能イメージ100及びプログラムローダー208とは異なる別個のアプリケーションである場合を考える。
【0018】
検証部204は、以下で詳述する選択された条件下で実行可能イメージ100の真正性を検証する。熟練した技術者によって認められるように、検証部204及びプログラムローダー208は、典型的に、別々にコンパイルされ、単一の実行可能プログラムにリンクされる様々なサブルーチン、プロシージャ、定義文、及び、マクロにより構成される。したがって、以下の記述は、これらの事項の機能性を説明する便宜のため使用される。
【0019】
検証部204及びプログラムローダー208(図1)は、C、C++、BASIC、Pascal、Java(登録商標)、及び、FORTRANのような任意のプログラミング言語で記述することができる。C、C++、BASIC、Pascal、Java(登録商標)、及び、FORTRANは、業界標準プログラミング言語であり、実行可能コードを作成するため、多数の市販コンパイラ及びインタープリターを使用することが可能である。
【0020】
図2は、実行可能イメージ200に接続された後の実行可能イメージ100の説明図である。尚、実行可能イメージ200は、実行可能イメージ100に関して既に説明したような同じデータオブジェクトのタイプにより構成され得る。検証部204の一つの機能は、実行可能イメージがメモリ108にロードされた後に、実行可能イメージ100及び実行可能イメージ200のような実行可能イメージの真正性を検証することである。
【0021】
実行可能イメージの真正性を検証するプロセス(処理)は、図5及び6を参照して詳細に説明される。簡単に説明すると、検証部204は、実行可能イメージ100がメモリ108にロードされる前に、実行可能イメージ100を解析し、実行可能イメージ100に関する対照デジタル署名を生成する。実行可能イメージ100がロードされた後、検証部204は、実行可能イメージ100が改ざんされていないことを保証するため、真正デジタル署名を生成する。更に、検証部204は、実行可能イメージ100とのバインディングが他の実行可能イメージへ不正に書き換えられていないことを保証するため、実行可能イメージ100と実行可能イメージ200の間のバインディングを調べる。
【0022】
図3は、動的リンクライブラリとして構築され、記憶装置105(図1)に格納された実行可能イメージ100の一実施例の内部構造を詳細に説明するブロック図である。
【0023】
実行可能イメージ100は、ヘッダセクション300、コードセクション304、データセクション308、インポートテーブル312、再配置(リロケーション)テーブル316、及び、エクスポートテーブル320を含む多数のセクションを収容する。尚、実行可能イメージ100は、後で詳述される多数のポインタを収容することに注意する必要がある。一般的に、ポインタは、メモリ108内のロケーションを、メモリ108(図1)に関して絶対的に、或いは、その他のロケーションに対して相対的に特定する参照情報(リファレンス)である。
【0024】
ヘッダセクション300は、実行可能イメージ100内の他のセクション及び/又はテーブルの相対ロケーションを特定する。コードセクション304は、実行可能イメージ300に対するコンパイルされた機械コードを含む。例えば、コードセクション304は、コンピュータ90(図1)のための機械命令を含む。図3に示されるように、コードセクション304は、実行可能イメージ100内、並びに、実行可能イメージ100以外の他のセクションを参照する命令を含む。ブロック320に示されるように、コードセクション304は、数値”2”をグローバル変数”i”に割当てるための命令を含む。しかし、記憶装置105(図1)に格納されている変数”i”の実際のアドレスは、メモリ108に規定されていない。なぜならば、実行可能イメージ100は、未だメモリ108(図1)にロードされていないからである。更に、コードセクション304は、巻数foo()を呼び出すための命令を含む。プロシージャfoo()への呼び出しは、インポートテーブル312内のロケーションを参照するインポートポインタを含む。
【0025】
データセクション308は、コードセクション304で特定されたグローバル変数を記憶するため使用される。インポートテーブル312は、実行可能テーブル100を別の実行可能テーブルへ接続する際にプログラムローダー208(図2)を補助するため、様々な情報の項目を含む。インポートテーブル312は、他の実行可能イメージによって保持されるプロシージャ毎にその実行可能イメージの名前のような識別子と、外部に保持されたプロシージャのアドレスを参照する一つ以上の外部ポインタと、を含む。インポートテーブル312は、記憶装置105(図1)に記憶されているので、未だプロシージャfoo()のメモリアドレスを参照しない。
【0026】
再配置テーブル316は、実行可能イメージ100のローディング後の「フィクシングアップ(用意)」を必要とするコードセクション304の各部分の位置を特定する。用語「フィクシングアップ」は、未解決のポインタが適当なデータロケーション及び/又はコードロケーションを参照するように、メモリの実行可能イメージ100を変更するプロセスを表すため使用されている。ポインタがプログラムローダー208によってフィクシングアップされると、ポインタは選択されたアドレスに「バインド(結合)」される。
【0027】
エクスポートテーブル320は、実行可能イメージ100によって公然と利用可能にされた各プロシージャを特定する。尚、実行可能イメージ100は、デバッグ情報、又は、ローディングプロセス及び/又はリンクプロセスを補助するため用いるその他のテーブル他の情報を含み得ることに注意する必要がある。
【0028】
検証部204(図2)は、記憶装置105に保存されている実行可能イメージ100に関して対照デジタル署名を決定する。この対照署名を生成する処理は、図6に関して詳述する。本発明の一実施例によれば、検証部204は、プログラムローダー208(図2)によってフィクシングアップを必要とするポインタを除く実行可能イメージ100の全体に関して対照デジタル署名を決定する。本発明の他の一実施例では、検証部204は、プログラムローダー208によってフィクシングアップを必要とするアドレスを除く実行可能イメージ100のコードセクション304及び/又はインポートテーブル312のような選択されたセクションに関して紹介デジタル署名を決定する。
【0029】
図4は、実行可能イメージ200に関して用意された(フィクシングアップされた)後の実行可能イメージ100を示すブロック図である。図4を参照することによってわかるように、変数”i”に対するデータポインタは、再配置テーブル316に収容されたフィクスアップ情報に従って、データセクション308のアドレスに結び付けられる。更に、インポートテーブル312のデータセクション308は、実行可能テーブル200のエクスポートテーブルに結び付けられる。第2の実行可能イメージ200のエクスポートテーブルの参照アドレスへのエクスポートポインタは、実行可能イメージ200内にあるプロシージャfoo()の実際のロケーションに結び付けられる。
【0030】
フィクシングアップされた後、検証部204(図2)は、実行可能イメージ100に関して様々な真正性検査を行う。これらの各真正性検査は、図5及び6を参照して以下で詳述される。簡単に説明すると、検証部204は以下の機能を実行する。
【0031】
第一に、検証部204は、対照デジタル署名を生成するため使用された同じアドレスに関して真正デジタル署名を決定する。真正デジタル署名が対照デジタル署名と異なる場合、検証部204(図2)は、実行可能イメージ100が不正に改ざんされたことを想定する。
【0032】
第二に、検証部204は、インポートテーブルによって参照されたアドレスが改ざんされていないことを保証するため、インポートテーブル312の各バインディングを調べる。インポートテーブル312が不正に変更された場合、選択された巻数へのプロシージャ呼び出しは、実行可能イメージ100の供給元によって予定されたルーチンとは別の信用できないルーチンへルート変更される場合がある。このような信用できないルーチンは、偶然に、若しくは、意図的に、間違ったデータ、又は、有害なデータを実行可能イメージ100へ戻す可能性がある。
【0033】
図5は、実行可能イメージ100の真正性を検証する処理を示すフローチャートである。ステップ600から始まり、検証部204(図2)は、実行可能モジュール100(図1)の真正を判定する要求を受信する。本発明の一実施例において、この要求はプログラムローダー208によって生成される。本発明の他の実施例では、この要求は、オペレーティングシステム95(図1)によって生成される。本発明の更に別の一実施例では、この要求は、コンピュータ90(図1)上で動く実行可能イメージ(図示せず)によって生成される。本発明の更に別の一実施例では、この要求は、検証部204内のルーチンによって生成される。
【0034】
ステップ604へ進み、検証部204(図2)は、実行可能イメージ100内の各ポインタを特定する。本発明の一実施例において、実行可能イメージ100内の選択されたセクションだけの真正性が決定されるべき場合、検証部204は、実行可能イメージ100の選択されたセクションに収まるポインタだけを特定する。例えば、検証部204は、コードセクション(図3)又はインポートテーブル(図3)に収まるポインタだけを特定するように構成することが可能である。
【0035】
本発明の一実施例において、検証部204は、これらの各ポインタ(図3)を特定するため、再配置テーブル316を準備する。図3を参照して説明したように、再配置テーブル316は、実行可能イメージ100のベースに関して相対的にアドレスのロケーションを特定する。再配置テーブル316を調べることによって、検証部204は、ローディング中にプログラムローダー208によって変更されるコードセクション304の部分を特定することが可能である。
【0036】
ステップ608へ進み、検証部204(図2)は、実行可能イメージ100(図1)に対する対照デジタル署名を生成する。ここで使用されるデジタル署名は、選択されたデータ集合の内容を特定する任意の方法論を包含するように規定される。最も簡単な形式では、デジタル署名は、署名されるべきデータから選択されたデータ集合の完全なコピーを含み得る。しかし、デジタル署名は、選択されたデータ集合に適用されたハッシング関数の結果でも構わない。更に、デジタル署名はデジタル証明書でもよい。熟練した技術者であれば、対照デジタル署名を生成するために多数の標準的なハッシュ関数の中の任意のハッシュ関数を使用可能であることが分かるであろう。
【0037】
更に、ステップ608に関して説明すると、本発明の一実施例によれば、検証部204は、プログラムローダー208(図2)によるフィクシングアップを必要とするアドレスを除く実行可能イメージ100の全体の内容に基づいて対照デジタル署名を決定する。本発明の他の実施例によれば、検証部204は、プログラムローダー208によるフィクシングアップを必要とするアドレスを除くコードセクション304及び/又はインポートテーブル312のような選択されたセクションの内容に基づいて対照デジタル署名を決定する。
【0038】
ステップ612へ進むと、検証部204(図2)は、後で取り出すため対照デジタル署名を記憶する。本発明の一実施例において、検証部204は、記憶装置105(図1)に対照デジタル署名を格納する。本発明の他の実施例において、検証部204は、リソーステーブル(図示せず)のような実行可能イメージ100の選択されたセクションに対照デジタル署名を格納する。本発明の更に別の実施例において、対照デジタル署名は実行可能イメージ100に付加される。本発明の更に別の実施例において、対照デジタル署名は、データベース、ウェブ・サーバ、若しくは、ネットワーク122(図1)に記憶される。本発明の更に別の実施例において、対照デジタル署名は、実行可能イメージ100がコンピュータ90へ供給される前に作成される。この実施例の場合、対照デジタル署名は、上述の何れの方法で生成してもよい。
【0039】
次に、ステップ614において、検証部204(図2)は、実行可能イメージ100がプログラムローダー208によってメモリ108(図2)にロードされる後若しくは前に、実行可能イメージ100の真正署名を決定する。このステップにおいて、検証部204は、ステップ608の間に検証部204によって適用されたハッシュ関数を再適用する。検証部204は、タイマーの満了、実行可能イメージ100の真正性セルフテストの終了、コンピュータ90(図1)のアイドル時間の終了、又は、実行可能イメージ100の要求時のような一つ以上の選択された条件の発生時に真正デジタル署名を決定するように構成することができる。
【0040】
判定ステップ618へ進み、検証部204(図2)は、(ステップ608で生成された)対照デジタル署名が(ステップ614で生成された)真正デジタル署名と一致するかどうかを判定する。対照デジタル署名が真正デジタル署名と一致しない場合、検証部204はステップ622へ進み、ステップ622において、検証部204はセキュリティ警報を開始する。ステップ622において、検証部204は、実行可能イメージ100のアンロード、記憶装置105(図1)からメモリ108(図1)への実行可能イメージ100の新しいコピーのロード、ネットワーク122からの実行可能イメージ100の新バージョンのロード、記憶装置105からの実行可能イメージ100の削除、コンピュータ90(図1)の場所にいるユーザに対する警告表示、ネットワーク122を介した遠隔コンピュータ(図示せず)へのエラーメッセージ送信、或いは、実行可能イメージ100によって実行された一つ以上の動作の取消などのような複数の機能を実行してもよい。
【0041】
再度、判定ステップ618について説明すると、検証部204(図2)が、対照デジタル署名は真正デジタル署名と一致していることを判定した場合、検証部204は終了ステップ624へ進む。実施例に応じて、検証部204(図2)は、選択された条件の発生時に真正デジタル署名を再決定するため、ステップ614へ戻る。
【0042】
図6は、図2に示された一方の実行可能イメージの真正性検査中に図2の検証部によって実行される別の処理を説明するフローチャートである。図6のフローチャートによって実行される処理は、図5のフローチャートに従って実行される処理とは異なり、単独で実行することも、図5で実行される処理と共に実行することも可能である。特に、図6には、実行可能イメージの各ポインタが適切なロケーションにバインドされていることを検証する処理が示されている。以下、実行可能イメージ100のコードセクション304のインポートポインタ、及び、インポートテーブル312のエクスポートポインタに関する真正性検査処理について説明する。
【0043】
ステップ700から始まり、検証部204(図2)は、要求元から、実行可能モジュール100(図1)の真正性を決定する要求を受信する。本発明の一実施例において、要求元はプログラムローダー208(図2)である。本発明の別の一実施例において、要求元はオペレーティングシステム(図1)である。本発明の更に別の実施例において、要求元はコンピュータ90(図1)で動く実行可能イメージ(図示せず)である。本発明の更に別の一実施例において、要求元は検証部204内のルーチンである。更に、要求は、一つ以上の選択された条件の出現時に、一つの要求元によって開始され得る。選択された条件には、タイマーの終了、コンピュータ90(図1)に関するアイドル時間の検出、及び/又は、銀行取引のような重要な動作の実行前などが含まれる。
【0044】
ステップ704へ進み、検証部204(図2)は、コードセクション304内の各インポートポインタを特定する。本発明の一実施例において、検証部204は、これらの各インポートテーブル(図3)を特定するため、再配置テーブル316を解析する。
【0045】
次に、ステップ708において、検証部204(図2)は、各インポートポインタがインポートテーブル312内のロケーションに結び付けられているかどうかを判定するため、コードセクション320の各インポートポインタを調べる。このステップで、本発明の一実施例において、検証部204は、インポートテーブル312の開始アドレス及び終了アドレスを決定するためヘッダ300を読み出す。
【0046】
各インポートテーブルがインポートテーブル312(図3)内のロケーションに結び付けられていない場合、検証部204(図2)は、ステップ714へ進み、検証部204はセキュリティ警報を開始する。ステップ714において、検証部204は、実行可能イメージ100のアンロード、記憶装置105(図1)からメモリ108(図1)への実行可能イメージ100の新しいコピーのロード、実行可能イメージ100の新しいコピーのロード、記憶装置105からの実行可能イメージ100の削除、コンピュータ90(図1)の場所にいるユーザに対する警告表示、ネットワーク122を介した遠隔コンピュータ(図示せず)へのエラーメッセージ送信、或いは、実行可能イメージ100によって実行された一つ以上の動作の取消などのような複数の機能を実行してもよい。処理フローは、終了ステップ715へ進み、終了する。
【0047】
再度、判定ステップ712について説明すると、検証部204(図2)が、コードセクション304内の各インポートポインタがインポートテーブル(図3)に結び付けられていると判定した場合、検証部204はステップ716へ進む。このステップ716において、検証部204は、インポートテーブル312内の各外部ポインタを特定する。
【0048】
ステップ720へ進み、検証部204(図2)は、インポートテーブル312(図2)内の外部ポインタの結合ロケーションを決定する。本発明の一実施例において、検証部204は、検証部204によって保持される外部ポインタテーブル(図示せず)に結合ロケーションを格納する。
【0049】
判定ステップ722へ進み、検証部204は、外部ポインタの結合ロケーションがインポートテーブル312(図2)によって特定された一方の実行可能イメージ内に存在するかどうかを判定する。説明の便宜上、インポートテーブル312によって特定された実行可能イメージは、一まとめにしてエクスポート用実行可能イメージと呼ぶ。
【0050】
本発明の一実施例において、検証部204は、メモリ108(図1)内のエクスポート用実行可能イメージのロケーションを決定するため、オペレーティングシステム(図1)を呼び出す。例えば、Windows(登録商標) 95は、実行可能イメージの名前が与えられた場合に、実行可能イメージのベースアドレスを返すGetModuleHandle()という名称のプロシージャ呼び出しを提供する。このベースアドレスを使用して、検証部204は、エクスポート用実行可能イメージのヘッダのロケーション、並びに、他のセクションのロケーションを特定することができる。
【0051】
更に、ステップ722について説明すると、検証部204が、各外部ポインタはエクスポート用実行可能イメージに結合されていない、と判定した場合、検証部204は、既に詳述したステップ714へ進む。しかし、検証部204が、各外部ポインタはエクスポート用実行可能イメージに結合されている、と判定した場合、検証部204は、終了ステップ715へ進み、終了する。
【0052】
有利的には、本発明は、実行可能イメージの静的検証、動的検証、及び、ランタイム検証が可能であり、実行可能イメージのソースコード又はオブジェクトコードに変更を加える必要が無い。本発明は、実行可能イメージが真正であり、ロード後に改ざんされていないことを保証する。対照デジタル署名が決定された後、検証部204は、次に、データオブジェクトが変更されていないことを保証するため、真正デジタル署名を生成可能である。更に、検証部204は、実行可能イメージ内の各ポインタが正確なロケーションに結合されているかどうかを判定可能である。
【0053】
例えば、コードセクション304のデータポインタに関して、検証部204は、データポインタがデータセクション308内のロケーションを参照することを保証するため、再配置テーブル316を検査可能である。更に、例えば、インポートテーブル312の外部ポインタに関して、検証部204は、外部ポインタがインポートテーブル312に名前が含まれている信頼できる実行可能イメージを参照することを保証可能である。実行可能イメージの名前はプログラムローダー208(図2)によって変更されないので、検証部204は、信頼できる実行可能イメージの名前が対照デジタル署名及び真正デジタル署名の使用によって変更されないことを保証可能である。
【0054】
上記の詳細な説明では、種々の実施例に適用されるような本発明の新規な特徴が図示され、記載され、指摘されているが、例示された装置又は方法の形式及び細部に関する様々な省略、置換、及び、変更は、本発明の精神から逸脱すること無く、当業者によってなされることが明らかである。本発明の範囲は、上記の説明ではなく、特許請求の範囲に記載された事項によって表される。特許請求の範囲に記載された事項の均等物の意味及び範囲に含まれる全ての変更は、本発明の範囲に包含される。
【図面の簡単な説明】
【図1】
一つ以上の供給元から実行可能イメージを受信するように適合した本発明のコンピュータを示す上位レベルのブロック図である。
【図2】
図1のコンピュータに搭載され、一つ以上の実行可能イメージの真正性を判定する機能を備えた検証部を示すブロック図である。
【図3】
図2の一方の実行可能イメージの内部構造を示すブロック図である。
【図4】
ローディング処理後にリンクされた図2の二つの実行可能イメージを示すブロック図である。
【図5】
図2に示された一方の実行可能イメージの真正性チェック中に図2の検証部によって実行される処理のフローチャートである。
【図6】
図2に示された一方の実行可能イメージの真正性チェック中に図2の検証部によって実行される別の処理のフローチャートである。

Claims (34)

  1. 実行可能イメージの真正性を判定するシステムであって、
    1個以上のポインタを含み得る実行可能イメージと、
    第1の時点に各ポインタ以外の実行可能イメージの選択された内容に基づいて対照デジタル署名を生成する機能を備えた検証部と、
    を具備し、
    検証部は、各ポインタ以外の実行可能イメージの選択された内容に基づいて第1の時点に真正デジタル署名を生成し、
    検証部は、対照デジタル署名が真正デジタル署名と一致するかどうかを判定する、
    システム。
  2. 対照デジタル署名は実行可能イメージ内に保持される、請求項1記載のシステム。
  3. 対照デジタル署名はネットワークに保持される、請求項1記載のシステム。
  4. 対照デジタル署名はデータベースに保持される、請求項1記載のシステム。
  5. 対照デジタル署名は検証部に保持される、請求項1記載のシステム。
  6. 第1の時点は実行可能イメージがプログラムローダーによって処理されるよりも前の時点であり、
    第2の時点は実行可能イメージがプログラムローダーによって処理されるよりも後の時点である、
    請求項1記載のシステム。
  7. 第1の時点は実行可能イメージがプログラムローダーによって処理されるよりも前の時点であり、
    第2の時点は実行可能イメージがプログラムローダーによって処理されるよりも前の時点である、
    請求項1記載のシステム。
  8. 第1の時点は実行可能イメージがプログラムローダーによって処理されるよりも後の時点であり、
    第2の時点は実行可能イメージがプログラムローダーによって処理されるよりも後の時点である、
    請求項1記載のシステム。
  9. 検証部は、対照デジタル署名が真正デジタル署名に一致しないと判定したときに警報を生成する、請求項1記載のシステム。
  10. 検証部は、対照デジタル署名が真正デジタル署名に一致しないと判定したときに実行可能イメージの供給元へ警報を生成する、請求項1記載のシステム。
  11. 検証部は、対照デジタル署名が真正デジタル署名に一致しないと判定したときに検証部の供給元へ警報を生成する、請求項1記載のシステム。
  12. 選択された内容は、コードセクションと、実行可能イメージ内のインポートテーブルを参照する一つ以上のポインタとにより構成される、請求項1記載のシステム。
  13. 選択された内容は、インポートテーブルと、他の実行可能イメージ内のアドレスを参照する一つ以上のポインタとにより構成される、請求項1記載のシステム。
  14. 実行可能イメージの真正性を判定するシステムであって、
    一つ以上のポインタを有する実行可能イメージが設けられ、
    実行可能イメージは、各ポインタが実行可能イメージ内のロケーションを参照するかどうかを指定する情報を含み、
    各ポインタが実行可能イメージ内の対応したロケーションを参照するかどうかを判定する機能を備えた検証部が更に設けられている、
    システム。
  15. ポインタは実行可能イメージ内のインポートテーブルを参照する、請求項14記載のシステム。
  16. 検証部は、ポインタが実行可能イメージ内のロケーションを参照しないことを判定したときに警報を生成する、請求項14記載のシステム。
  17. 検証部は、ポインタが実行可能イメージ内のロケーションを参照しないことを判定したときに実行可能イメージの供給元へ警報を生成する、請求項14記載のシステム。
  18. 実行可能イメージの真正性を判定するシステムであって、
    第1の実行可能イメージと、
    第1の実行可能イメージ内のロケーションを参照するポインタを含む第2の実行可能イメージと、
    ポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する機能を備えた検証部と、
    を具備するシステム。
  19. 検証部は、ポインタが第1の実行可能イメージ内のロケーションを参照しないことを判定したときに警報を生成する、請求項18記載のシステム。
  20. 検証部は、ポインタが第1の実行可能イメージ内のロケーションを参照しないことを判定したときに実行可能イメージの供給元へ警報を生成する、請求項18記載のシステム。
  21. 検証部は、
    オペレーティングシステムから第1の実行可能イメージのベースアドレスを要求し、
    第1の実行可能イメージの先頭に置かれ、第1の実行可能イメージの開始アドレス及び終了アドレスを指定する予め定義されたヘッダを読み、
    ポインタが予め定義されたヘッダによって指定されるような第1の実行可能イメージ内のロケーションを参照したかどうかを判定することにより、
    ポインタが第1の実行可能イメージ内のロケーションを参照したかどうかを判定する、
    請求項18記載のシステム。
  22. 実行可能イメージの真正性を判定する機能を備えたシステムであって、
    第1の実行可能イメージ、第2の実行可能イメージ、及び、検証部を具備し、
    第2の実行可能イメージは、第1の実行可能イメージの識別子及び一つ以上の外部ポインタを収容するインポートテーブルと、機械コード及び一つ以上のインポートポインタを収容するコードセクションとを含み、
    各外部ポインタは第1の実行可能イメージ内のロケーションを参照し、
    各インポートポインタはインポートテーブル内のロケーションを参照し、
    検証部は、実行可能イメージの選択された内容に基づいて対照デジタル署名を第1の時点で生成する機能を備え、
    各インポートポインタ及び各外部ポインタは選択された内容に含まれず、
    検証部は、一つ以上のポインタの各々を含まない実行可能イメージの選択された内容に基づいて第2の時点で真正デジタル署名を生成し、
    検証部は、対照デジタル署名が真正デジタル署名と一致するかどうかを判定し、
    検証部は、各インポートポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定し、
    検証部は、インポートポインタが第1の実行可能イメージ内のロケーションを参照するかどうかを判定する、
    システム。
  23. 実行可能イメージの真正性を判定する方法であって、
    実行可能イメージ内で、プログラムローダーによって変更された一つ以上のロケーションを特定する手順と、
    特定されたロケーションを含まない実行可能イメージの選択された内容に基づいて対照デジタル署名を生成する手順と、
    特定されたロケーションを含まない実行可能イメージの選択された内容に基づいて真正デジタル署名を生成する手順と、
    対照デジタル署名が対照デジタル署名に一致するかどうかを判定する手順と、
    を有する方法。
  24. 真正デジタル署名が対照デジタル署名に一致しないことが判定されたときに警報を生成する手順を更に有する請求項23記載の方法。
  25. 真正デジタル署名が対照デジタル署名に一致しないことが判定されたときに実行可能イメージの供給元への警報を生成する手順を更に有する請求項23記載の方法。
  26. 選択された内容は実行可能イメージの全体を含む、請求項23記載の方法。
  27. 選択された内容は機械コードのセクションを含む、請求項23記載の方法。
  28. 選択されたセクションは、実行可能イメージ内にあるインポートテーブルを含む、請求項23記載の方法。
  29. 実行可能イメージの真正性を判定する方法であって、
    メモリにロードされた実行可能イメージ内で、プログラムローダーによってメモリ内の選択されたアドレスに結合されたポインタをもつ一つ以上のロケーションを特定する手順と、
    特定されたロケーションの各ポインタが実行可能イメージによって指定された宛先を参照するかどうかを判定する手順と、
    を有する方法。
  30. 宛先は、実行可能イメージにあるインポートテーブル内のアドレスである、請求項29記載の方法。
  31. 宛先は、別の実行可能イメージにおけるアドレスである、請求項29記載の方法。
  32. 実行可能イメージの真正性を判定するシステムであって、
    メモリにロードされた実行可能イメージ内で、プログラムローダーによってメモリ内の選択されたアドレスに結合されたポインタをもつ一つ以上のロケーションを特定する手段と、
    特定されたロケーションの各ポインタが実行可能イメージによって指定された宛先を参照するかどうかを判定する手段と、
    を有するシステム。
  33. 宛先は、実行可能イメージにあるインポートテーブル内のアドレスである、請求項32記載のシステム。
  34. 宛先は、別の実行可能イメージにおけるアドレスである、請求項32記載の方法。
JP2002514509A 2000-07-25 2000-07-25 動的に接続可能な実行可能イメージの真正性検証システム及び方法 Expired - Lifetime JP4698925B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2000/020182 WO2002008873A1 (en) 2000-07-25 2000-07-25 System and method of verifying the authenticity of dynamically connectable executable images

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006339906A Division JP2007128537A (ja) 2006-12-18 2006-12-18 動的に接続可能な実行イメージの真正性検証システム及び方法

Publications (2)

Publication Number Publication Date
JP2004505343A true JP2004505343A (ja) 2004-02-19
JP4698925B2 JP4698925B2 (ja) 2011-06-08

Family

ID=21741611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002514509A Expired - Lifetime JP4698925B2 (ja) 2000-07-25 2000-07-25 動的に接続可能な実行可能イメージの真正性検証システム及び方法

Country Status (10)

Country Link
EP (1) EP1303802B1 (ja)
JP (1) JP4698925B2 (ja)
KR (1) KR100752067B1 (ja)
CN (2) CN100394385C (ja)
AU (2) AU6371500A (ja)
BR (1) BRPI0017287B1 (ja)
CA (1) CA2416304C (ja)
HK (2) HK1057115A1 (ja)
MX (1) MX237690B (ja)
WO (1) WO2002008873A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535972A (ja) * 2002-08-14 2005-11-24 メッセージラボズ リミテッド 実行可能コード内のウィルスをヒューリスティックに検出する方法とシステム
WO2011142095A1 (ja) * 2010-05-13 2011-11-17 パナソニック株式会社 情報処理装置および情報処理方法
JP2020160946A (ja) * 2019-03-27 2020-10-01 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037515B2 (en) 2003-10-29 2011-10-11 Qualcomm Incorporated Methods and apparatus for providing application credentials
CN1918556A (zh) 2004-02-05 2007-02-21 Kings情报通信 使用安全输入装置驱动器的计算机安全装置和方法
US7640592B2 (en) 2004-06-12 2009-12-29 Microsoft Corporation Installation setup
KR101156159B1 (ko) * 2004-06-29 2012-06-18 삼성전자주식회사 인터넷 멀티미디어 서브시스템에서 패킷 호 서비스에관련된 제어 메시지를 송수신하는 방법 및 장치
US8156488B2 (en) 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
CA2606981C (en) * 2005-05-05 2016-09-06 Certicom Corp. Retrofitting authentication onto firmware
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US8543841B2 (en) 2011-06-30 2013-09-24 Oracle International Corporation Secure hosted execution architecture
KR101630214B1 (ko) 2015-01-19 2016-06-14 김종근 전지의 기능검사용 클램핑 장치
EP3704611A4 (en) * 2017-11-03 2021-06-02 Nokia Technologies Oy TRUSTED COMPUTER PROCESS AND APPARATUS

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2102883A1 (en) * 1993-02-26 1994-08-27 James W. Arendt System and method for lazy loading of shared libraries
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
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
DE19840029C1 (de) * 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
JP4166437B2 (ja) * 2001-01-31 2008-10-15 株式会社日立製作所 真正性出力方法及びその実施装置並びにその処理プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005535972A (ja) * 2002-08-14 2005-11-24 メッセージラボズ リミテッド 実行可能コード内のウィルスをヒューリスティックに検出する方法とシステム
JP4705780B2 (ja) * 2002-08-14 2011-06-22 メッセージラブス リミテッド 実行可能コード内のウィルスをヒューリスティックに検出する方法とシステム
WO2011142095A1 (ja) * 2010-05-13 2011-11-17 パナソニック株式会社 情報処理装置および情報処理方法
US8522356B2 (en) 2010-05-13 2013-08-27 Panasonic Corporation Information processing apparatus and information processing method
JP5740573B2 (ja) * 2010-05-13 2015-06-24 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法
JP2020160946A (ja) * 2019-03-27 2020-10-01 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム
JP7262269B2 (ja) 2019-03-27 2023-04-21 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム

Also Published As

Publication number Publication date
JP4698925B2 (ja) 2011-06-08
HK1083653A1 (en) 2006-07-07
HK1057115A1 (en) 2004-03-12
AU2000263715B2 (en) 2004-11-04
AU6371500A (en) 2002-02-05
MXPA03000727A (es) 2004-03-26
CN1722091A (zh) 2006-01-18
MX237690B (es) 2006-06-12
CA2416304A1 (en) 2002-01-31
EP1303802A1 (en) 2003-04-23
KR100752067B1 (ko) 2007-08-28
CN100394385C (zh) 2008-06-11
EP1303802B1 (en) 2013-01-16
CN1454338A (zh) 2003-11-05
BRPI0017287B1 (pt) 2016-11-01
WO2002008873A1 (en) 2002-01-31
CA2416304C (en) 2010-11-30
BR0017287A (pt) 2003-06-24
CN1222854C (zh) 2005-10-12
KR20030045015A (ko) 2003-06-09

Similar Documents

Publication Publication Date Title
US6802006B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
US7650504B2 (en) System and method of verifying the authenticity of dynamically connectable executable images
US6910128B1 (en) Method and computer program product for processing signed applets
US7788637B2 (en) Operating system process identification
EP1577767B1 (en) Code rewriting
US8781971B2 (en) Method and apparatus for enforcing software licenses
US6922782B1 (en) Apparatus and method for ensuring data integrity of unauthenticated code
JP4263476B2 (ja) ハッシュによるアセンブリの完全性の確認のための方法、コンピュータ可読媒体及びプログラム
US6851108B1 (en) Verifying intermediate language code
US7225438B2 (en) Lazy compilation of template-generated classes in dynamic compilation execution environments
US20020093856A1 (en) File language verification
JPH0877117A (ja) デジタル署名を用いた進行オブジェクト指向型プログラムの有効利用方法および装置
JP2000517085A (ja) 安全な装置アドレス指定のための装置および方法
JP4698925B2 (ja) 動的に接続可能な実行可能イメージの真正性検証システム及び方法
KR20010034514A (ko) 원격 메소드를 식별하는 해시 판정 방법 및 시스템
JP2007128537A (ja) 動的に接続可能な実行イメージの真正性検証システム及び方法
EP2434399A1 (en) Inter-process interference elimination
RU2258252C2 (ru) Система и способ проверки подлинности динамически подключаемых исполняемых образов
KR100728517B1 (ko) 동적으로 연결 가능한 실행 가능 이미지들의 진정성을증명하는 시스템 및 방법
Gal et al. Integrated Java Bytecode Verification
Lam Thuan Thai
NATIONAL INST OF STANDARDS AND TECHNOLOGY GAITHERSBURG MD Ada Compiler Validation Summary Report: Certificate Number 891201S1. 10212 US Navy Ada/L, Version 2.0 (/OPTIMIZE Option) VAX 8550 and VAX 11/785 Hosts and AN/UYK-43 Target

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060627

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060926

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061003

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080519

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081216

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110302

R150 Certificate of patent or registration of utility model

Ref document number: 4698925

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

EXPY Cancellation because of completion of term