JP2001051742A - Method and device for inspecting completeness of executable module and relative protection service provider module - Google Patents
Method and device for inspecting completeness of executable module and relative protection service provider moduleInfo
- Publication number
- JP2001051742A JP2001051742A JP2000208897A JP2000208897A JP2001051742A JP 2001051742 A JP2001051742 A JP 2001051742A JP 2000208897 A JP2000208897 A JP 2000208897A JP 2000208897 A JP2000208897 A JP 2000208897A JP 2001051742 A JP2001051742 A JP 2001051742A
- Authority
- JP
- Japan
- Prior art keywords
- module
- executable
- component
- protection service
- psp
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/52—Monitoring 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
- G06F21/54—Monitoring 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 by adding security routines or objects to programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、ディジタル情報に
対する変更の検出の分野に関し、具体的には、実行可能
モジュールと、それに関連する、実行可能モジュールに
保護サービス(protected service)機能を提供する保
護サービス・プロバイダ(protected service provide
r)(PSP)モジュールの完全性検査のための技法な
らびに、PSPモジュールの耐タンパ性(tamper-resis
tance)を強化するための技法に関する。FIELD OF THE INVENTION The present invention relates to the field of detecting changes to digital information and, more particularly, to an executable module and its associated protection for providing a protected service function to the executable module. Service provider (protected service provide
r) Techniques for checking the integrity of (PSP) modules and the tamper-resistance of PSP modules
tance) techniques.
【0002】[0002]
【従来の技術】あるデータを使用してある動作が実行さ
れ、そのデータおよび動作の一方または両方を秘密に保
たなければならない種類のコンピュータ・アプリケーシ
ョンが存在する。一般には、これは問題ではない。とい
うのは、ほとんどのユーザが、その所期の目的のために
アプリケーションを単純に使用し、それに含まれる秘密
を気にしないからである。しかし、一部のユーザ(すな
わち「ハッカー」)は、内部の秘密を暴くか、制限され
た動作または禁止された動作を実行する形でアプリケー
ションを変更するかのいずれかのために、アプリケーシ
ョンとその構成要素を覗こうとする場合がある。一般
に、ハッカーは、通常は、アプリケーションの動作を習
得するために、静的な逆アセンブルおよび分析か、対象
のアプリケーションの生のデバッギングのいずれかを使
用する。習得を終えると、ハッカーは、所期の目的に従
って動作を変更することができる。これに応答して、こ
れらのハッキングの試みを妨げるために、耐タンパ技法
がアプリケーションに適用されることがしばしばであ
る。2. Description of the Related Art There are computer applications of the type where certain operations are performed using certain data and one or both of the data and the operations must be kept secret. In general, this is not a problem. Most users simply use the application for its intended purpose and do not mind the secrets it contains. However, some users (i.e., "hackers") may not be able to use the application and its applications to either reveal internal secrets or modify the application in such a way as to perform restricted or prohibited actions. You may want to look into a component. In general, hackers typically use either static disassembly and analysis or raw debugging of the application of interest to learn the behavior of the application. Once mastered, hackers can change their behavior according to their intended purpose. In response, tamper-resistant techniques are often applied to applications to prevent these hacking attempts.
【0003】さまざまな手段を使用して、アプリケーシ
ョンとその構成要素を耐タンパ性にすることができる。
その1つが、アプリケーションとその2進情報のディジ
タル「指紋」または署名を作ることである。初期設定中
または実行時(またはその両方)に、アプリケーション
の現在の2進状態と比較してディジタル指紋を検査する
ことを介して、保護されたアプリケーションの変更を検
出することができる。そのような活動または変更が検出
される時には、保護されたアプリケーションは、それに
含まれる秘密が露出されない形で意図的に障害を発生す
ることができる。[0003] Various means can be used to make an application and its components tamper resistant.
One is to create a digital "fingerprint" or signature of the application and its binary information. During initialization and / or at run time, changes to the protected application can be detected via checking the digital fingerprint against the current binary state of the application. When such activity or change is detected, the protected application can intentionally fail in a manner that does not expose the secrets contained therein.
【0004】[0004]
【発明が解決しようとする課題】タンパリング活動を検
出するための信頼性のある手段は、しばしば実施が困難
であり、ハッカーの高度な知識が増えるにつれてさらに
複雑にならなければならない。本発明は、この必要を満
たすことを目的とする。Reliable means for detecting tampering activity are often difficult to implement and must become more complex as hackers' advanced knowledge increases. The present invention aims to satisfy this need.
【0005】[0005]
【課題を解決するための手段】手短に要約すると、第1
の態様では、実行可能モジュールおよび関連保護サービ
ス・プロバイダ(PSP)モジュールのうちの少なくと
も1つの完全性を監視するための方法が提供され、PS
Pモジュールは、実行可能モジュールに保護サービス機
能を提供する。この方法には、PSPモジュールおよび
実行可能モジュールのうちの少なくとも1つの完全性を
検査するための、PSPモジュールと別のモジュールを
構成する共生モジュールを提供するステップと、共生モ
ジュールをクロスチェック(cross-checking)するため
のコードをPSPモジュール内で提供するステップとが
含まれ、共生モジュールによる検査およびPSPモジュ
ールによるクロスチェックが、一緒に、実行可能モジュ
ールおよびPSPモジュールのうちの少なくとも1つの
完全性を監視する。SUMMARY OF THE INVENTION Briefly summarized, the first is
In an aspect, a method is provided for monitoring the integrity of at least one of an executable module and an associated protection service provider (PSP) module, the method comprising:
The P module provides a protection service function to the executable module. The method includes providing a symbiotic module that constitutes another module with the PSP module for checking the integrity of at least one of the PSP module and the executable module, and cross-checking the symbiotic module. providing code for checking within the PSP module, wherein the checking by the symbiotic module and the cross-checking by the PSP module together monitor the integrity of at least one of the executable module and the PSP module. I do.
【0006】もう1つの態様では、メモリにロードされ
た実行可能モジュールに保護サービス機能を提供するた
めの方法が提供され、保護サービス機能は、第1構成要
素および第2構成要素に再分割される。この方法には、
第1実行可能モジュール内で保護サービス機能の第1構
成要素を実施するステップと、第2実行可能モジュール
内で保護サービス機能の第2構成要素を実施するステッ
プとが含まれ、第1実行可能モジュールおよび第2実行
可能モジュールは、別の実行可能モジュールを構成す
る。In another aspect, a method is provided for providing a protected service function to an executable module loaded in a memory, wherein the protected service function is subdivided into a first component and a second component. . This method includes:
Implementing a first component of the protection service function in a first executable module, and implementing a second component of the protection service function in a second executable module, the first executable module comprising: And the second executable module constitute another executable module.
【0007】もう1つの態様では、呼出し元実行可能モ
ジュールに保護サービス機能を提供するための方法が提
供され、この方法には、第1構成要素が第1実行可能モ
ジュール内で実施され、第2構成要素が第2実行可能モ
ジュール内で実施され、第1実行可能モジュールおよび
第2実行可能モジュールが別々の実行可能モジュールで
ある、第1構成要素および第2構成要素に再分割された
保護サービス機能を提供するステップと、第1実行可能
モジュールを処理し、第2構成要素の完全性を検査する
ステップと、第2構成要素の完全性が検証された時に、
保護サービス機能の第2構成要素を実行するために第2
実行可能モジュールを開始するステップと、第2実行可
能モジュールの開始時に、第2実行可能モジュールから
第1構成要素の完全性を検査し、第1構成要素の完全性
が検証された時に、第2実行可能モジュールを処理し、
第1実行可能モジュールまたは呼出し元実行可能モジュ
ールのいずれかに結果を返すことによって、保護サービ
ス機能を完了するステップとが含まれる。In another aspect, a method is provided for providing a protection service function to a calling executable module, the method comprising a first component implemented in the first executable module and a second component provided in the first executable module. A protection service function subdivided into a first component and a second component, wherein the component is implemented in a second executable module and the first executable module and the second executable module are separate executable modules. And processing the first executable module to check the integrity of the second component; and, when the integrity of the second component is verified,
The second component to perform the second component of the protection service function
Starting the executable module; checking the integrity of the first component from the second executable module at the start of the second executable module; and checking the integrity of the first component when the integrity of the first component is verified. Process executable module,
Completing the protection service function by returning the result to either the first executable module or the calling executable module.
【0008】上で述べた方法に対応するシステムおよび
製造品も、本明細書に記載され、請求される。[0008] Systems and articles of manufacture corresponding to the above-described method are also described and claimed herein.
【0009】言い換えると、本明細書で提供されるの
は、たとえばオペレーティング・システム・ローダによ
るメモリへの実行可能モジュールのロードの後ならび
に、実行可能モジュールに関連するか保護サービス機能
を提供する保護サービス・プロバイダ(PSP)モジュ
ールの検査の後などの、アプリケーション・プログラム
の実行可能モジュールの完全性検査実行のためのさまざ
まな技法である。PSPモジュールを含むコードとは別
の実行可能モジュールを含む独立のモニタ実体が開示さ
れ、これによって、モニタ実体は、簡単に検出または無
効化することができなくなり、したがって、アプリケー
ション・モジュールに与えられる耐タンパ保護が高ま
る。モニタ実体(monitor entity)(本明細書では「共
生モジュール(symbiont module)」とも称する)は、
PSPモジュールと共に走行し、実行可能モジュールを
含むアプリケーションによるか、たとえば初期設定時
に、オペレーティング・システムによるかのいずれかで
起動することができる。したがって、下でさらに説明す
るように、モニタ実体は、さまざまな形で始動でき、オ
ペレーティング・システム内で独立に走行することがで
きる。In other words, provided herein is a protection service associated with an executable module or providing a protection service function after loading the executable module into memory, eg, by an operating system loader. -Various techniques for performing an integrity check of an executable module of an application program, such as after a check of a provider (PSP) module. Disclosed is a separate monitor entity that includes an executable module separate from the code that includes the PSP module, which prevents the monitor entity from being easily detected or disabled, and therefore provides the application module with a tolerance. Increased tamper protection. A monitor entity (also referred to herein as a "symbiont module")
It runs with the PSP module and can be invoked either by an application containing an executable module or, for example, at initialization, by an operating system. Thus, as described further below, the monitor entity can be started in various ways and run independently within the operating system.
【0010】[0010]
【発明の実施の形態】全般的に、本発明は、走行中にア
プリケーションまたは、より具体的にはアプリケーショ
ンの実行可能モジュールの有効性を検査するための、ア
プリケーションと共に走行する独立のソフトウェア「モ
ニタ」実体または共生モジュールの使用を提案する。ア
プリケーション自体の中で実施可能ではあるが、共生コ
ードは、システム内の独立のプロセスまたはスレッドと
して独立型にして、組み合わされるアプリケーションの
デバッグをより困難にすることができる。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Generally, the present invention is directed to a stand-alone software "monitor" that runs with an application to check the validity of the application, or more specifically, the executable modules of the application, while running. Suggest use of entity or symbiotic module. Although practicable within the application itself, symbiotic code can stand alone as a separate process or thread in the system, making debugging of the combined application more difficult.
【0011】機能強化された実施形態では、保護サービ
ス・プロバイダ(PSP)モジュールによって実行可能
モジュールに提供される保護サービス機能を、第1構成
要素と第2構成要素に再分割することができ、第1構成
要素をPSPモジュール内に残し、第2構成要素を共生
モジュール内で実施することができる。有利なことに、
この実施形態では、共生モジュールがPSPモジュール
の完全性検査を行い、PSPモジュールが共生モジュー
ルの完全性クロスチェックを行い、これによって、保護
サービス機能の有効性がさらに保証され、保護サービス
機能への許可されないアクセスがより困難になる。[0011] In an enhanced embodiment, the protection service function provided to the executable module by the protection service provider (PSP) module can be subdivided into a first component and a second component; One component can be left in the PSP module and the second component can be implemented in the symbiotic module. Advantageously,
In this embodiment, the symbiotic module performs an integrity check on the PSP module, and the PSP module performs an integrity cross-check on the symbiotic module, thereby further assuring the effectiveness of the protection service function and permitting the protection service function. Not accessible will be more difficult.
【0012】本明細書では、以下の用語を使用する。The following terms are used in this specification.
【0013】実行可能モジュール−−ディジタル情報の
集合であり、通常は、コンピュータのプロセッサによっ
て実行される命令とデータを含む。この情報の集合は、
しばしばハード・ドライブなどの媒体に「ファイル」と
して格納され、そこからメモリ(またはランダム・アク
セス・メモリ、RAM)にロードされ、実行される。実
行可能モジュールの例には、(一般的な命名規則を使用
する)「実行可能ファイル」(接尾部が.exeまた
は.comであるファイル)、動的リンク・ライブラリ
(接尾部が.dll)およびデバイス・ドライバ(接尾
部が、たとえば.vxd、.drv、.sysまたは.
mpd)が含まれるが、これに制限されない。Executable module--A collection of digital information that typically includes instructions and data that are executed by a computer processor. This set of information is
Often stored on a medium, such as a hard drive, as a "file" from which it is loaded into memory (or random access memory, RAM) and executed. Examples of executable modules include "executable files" (using common naming conventions) (files suffixed with .exe or .com), dynamically linked libraries (suffixed with .dll) and Device driver (suffixes are .vxd, .drv, .sys or .sys)
mpd), but is not limited thereto.
【0014】ディジタル署名−−ディジタル・データの
集合(実行可能モジュールの全体またはサブセクション
(subsection)など)のディジタル「指紋」。ディジタ
ル署名は、有用になるために、通常は以下の特性を有す
る。1)ディジタル・データの集合に対する簡潔で明確
に定義された反復可能な処理(通常は数学的処理)の適
用によって作成される。2)ディジタル署名は、ディジ
タル・データの集合のどの部分が変更された場合でも、
変化する確度が極端に高い。3)ディジタル署名が有効
であるためには、別のディジタル・データのシーケンス
と同一のディジタル署名をもたらすディジタル・データ
のシーケンスが発見される確度がほぼ0でなければなら
ない。4)ディジタル署名は、署名生成処理が普通に適
用されるディジタル・データの集合のサイズと比較した
時に、比較的小さいサイズを有する。署名生成処理は、
非常に基本的で破ることが簡単な方法(チェックサムな
ど)から、メッセージ・ダイジェスト5ハッシュ(MD
5)などの暗号的に強く安全な方法まで変化することが
できることに留意されたい。Digital Signature--A digital "fingerprint" of a collection of digital data (such as an entire executable module or a subsection). Digital signatures typically have the following properties to be useful: 1) Created by applying a simple, well-defined and repeatable process (usually a mathematical process) to a set of digital data. 2) Digital signatures are used for any part of a set of digital data that has changed.
The accuracy of change is extremely high. 3) For a digital signature to be valid, the probability of finding a sequence of digital data that yields the same digital signature as another sequence of digital data must be near zero. 4) Digital signatures have a relatively small size when compared to the size of the set of digital data to which the signature generation process normally applies. The signature generation process
From a very basic and easy-to-break method (such as checksums), the message digest 5 hash (MD
Note that even cryptographically strong and secure methods such as 5) can be varied.
【0015】共生モジュールまたはモニタ−−その機能
が、1つまたは複数の実行可能モジュールまたは実行可
能モジュールのサブセクション(subsection)を周期的
または継続的に検査して、そのモジュールまたはサブセ
クションがコンピュータ・メモリ(ランダム・アクセス
・メモリ)または他の位置に現れる際にそれらの完全性
を検証することである、独立の実行可能モジュールまた
は実行可能モジュールのサブセクション。任意選択とし
て、共生モジュールは、それが完全性を検査する他の実
行可能モジュールによって主に実行される計算に参加す
ることもでき(すなわち、共生モジュールは、機能なら
びに完全性検査を提供することができる)、これによっ
て、検査される実行可能モジュールに共生をより緊密に
結合することができる。共生実行可能モジュールとその
完全性検査は、2つのモードすなわち、独立の実行のス
レッドとして、または、それが検査する1つまたは複数
の実行可能モジュールから呼び出される機能として(こ
れによって、その実行のスレッド内で動作するようにな
る)実施することができる。後者の場合、共生との通信
は、当業者になんらかの他の形態の既知のシグナリング
機構(たとえば共用メモリ、セマフォ、ミューテックス
など)を介する。完全性検査は、実行可能モジュールま
たは実行可能モジュールのサブセットを構成するディジ
タル・データおよび命令からのディジタル署名の生成
と、その後の、その署名と、完全性が良好であることが
既知の同一の実行可能モジュールから生成された署名と
の比較を必要とする可能性がある。共生モジュールは、
実行可能モジュールまたはサブセクションの他の検査を
実行することもでき、また、オペレーティング・システ
ムに問い合わせるか、コンピュータ・システム内の活動
の属性を検査して、「ハッカー」が実行可能モジュール
内の命令またはデータの不法な観察、変更または不正使
用を試みている可能性があるかどうかを判定することが
できる。そのようなモニタでは、通常は、RAMに現れ
る実行可能モジュールのイメージを検査するが、モニタ
は、たとえばハード・ドライブまたはプロセッサ・キャ
ッシュなど、RAM以外の媒体に格納される実行可能モ
ジュールまたはサブセクションのイメージを検査できな
いわけではない。Symbiotic module or monitor--its function periodically or continuously checks one or more executable modules or subsections of an executable module, and the module or subsection A stand-alone executable module or sub-section of an executable module that is to verify their integrity as they appear in memory (random access memory) or other locations. Optionally, the symbiotic module may also participate in calculations performed primarily by other executable modules that check integrity (ie, the symbiotic module may provide functionality as well as integrity checking). Yes), which allows the symbiosis to be more tightly coupled to the executable module being tested. A symbiotic executable and its integrity check can be performed in two modes: as a thread of independent execution, or as a function called from one or more executables it examines, thereby providing a thread of execution. Work within) can be implemented. In the latter case, communication with the symbiosis is via some other form of signaling mechanism known to those skilled in the art (eg, shared memory, semaphores, mutexes, etc.). Integrity checking involves the generation of a digital signature from digital data and instructions that make up an executable module or a subset of an executable module, followed by the signature and the same execution known to be of good integrity. It may need to be compared with a signature generated from the enabled module. The symbiosis module is
Other checks of the executable module or subsection can also be performed, and the "hacker" can query the operating system or check the attributes of the activity in the computer system to determine if the instructions or A determination can be made as to whether an attempt has been made to illegally observe, alter, or misuse the data. Such monitors typically inspect the image of the executable module as it appears in RAM, but the monitor does not monitor executable modules or subsections stored on media other than RAM, such as a hard drive or processor cache. It doesn't mean you can't inspect the image.
【0016】保護サービス・プロバイダ−−秘密、機密
または独占的であり、公開されることを意図されていな
い命令またはデータを含む、実行可能モジュールまたは
実行可能モジュールのサブセクション。保護サービス・
プロバイダは、1つまたは複数の実行可能モジュールを
含むアプリケーションに保護サービス機能を提供する。Protected Service Provider--an executable module or subsection of an executable module that contains instructions or data that are confidential, confidential or proprietary and are not intended to be published. Protection services
The provider provides a protection service function to an application including one or more executable modules.
【0017】防衛処置(defensive action)−−完全性
検査によって、保護サービス・プロバイダの完全性が傷
つけられたか傷つけられようとしていることが明らかに
なった時に、保護サービス・プロバイダの作成者または
ユーザの自由裁量で行われる処置。これは、たとえば、
保護サービス・プロバイダのディジタル署名が変更され
た、デバッガが活動状態である、または、他の許可され
ないか疑わしい変更がシステムで行われたことを意味す
る場合がある。防衛処置には、保護サービス・プロバイ
ダの実行の停止、不法な活動が検出されたことのユーザ
への通知、不法な活動が検出されたことのログ記録、別
の位置への不法な活動の詳細を示す送信(可能であれ
ば)の送出、誤った結果を生じる(しかし実行を継続す
る)ようにするための保護サービス・プロバイダの命令
またはデータの変更、実行障害を引き起こすこと、コン
ピュータのリブート、コンピュータに電源を切るように
指示することの任意の組合せが含まれるが、これに制限
されない。Defensive action--when the integrity check reveals that the integrity of the protection service provider has been compromised or is about to be compromised, the creator or user of the protection service provider. Action taken at the discretion. This is, for example,
It may mean that the digital signature of the protection service provider has changed, that the debugger is active, or that other unauthorized or suspicious changes have been made in the system. Defense actions include suspension of protection service provider execution, notifying users that illegal activity has been detected, logging that illegal activity has been detected, and details of illegal activity at another location. Sending (if possible) transmissions, altering the instructions or data of the protection service provider to produce incorrect results (but continue execution), causing execution failures, rebooting the computer, Includes, but is not limited to, any combination of instructing the computer to turn off.
【0018】ここで図面を参照すると、図1は、本発明
の実施形態が動作することのできるコンピュータ・シス
テム100を示すブロック図である。この実施形態に
は、1つまたは複数のアプリケーション・プログラムが
含まれ、たとえば、そのうちの1つのアプリケーション
・プログラム200が、図2に示されている。別の種類
のアプリケーション・プログラム102が、オプティマ
イザ106を含むコンパイラ105である。コンパイラ
105およびオプティマイザ106は、ソース・プログ
ラム(アプリケーション・プログラム102など)を最
適化された実行可能コードに変換するように構成され
る。より一般的には、ソース・プログラムは、最適化さ
れた形態に変換され、その後、実行可能コードに変換さ
れる。この処理の一部として、コンパイラ105は、デ
ータ記憶装置118からRAM114などのメモリに実
行可能モジュールをロードするための省略時ロード・ア
ドレスを割り当てる。Referring now to the drawings, FIG. 1 is a block diagram illustrating a computer system 100 on which embodiments of the present invention may operate. This embodiment includes one or more application programs, for example, one of the application programs 200 is shown in FIG. Another type of application program 102 is a compiler 105 that includes an optimizer 106. The compiler 105 and the optimizer 106 are configured to convert a source program (such as the application program 102) into optimized executable code. More generally, the source program is converted into an optimized form and then into executable code. As part of this process, compiler 105 assigns a default load address for loading an executable module from data storage device 118 to a memory such as RAM 114.
【0019】コンパイラ105およびオプティマイザ1
06は、ハードウェア・ユニット112を含むコンピュ
ータ・プラットホーム104上で動作する。ハードウェ
ア・ユニット112には、1つまたは複数の中央処理装
置(CPU)116、ランダム・アクセス・メモリ(R
AM)114および入出力インターフェース(図示せ
ず)が含まれる。たとえば縮小命令セットなどのマイク
ロ命令コード110も、コンピュータ・プラットホーム
104上に含めることができる。データ記憶装置118
を含むさまざまな周辺構成要素を、コンピュータ・プラ
ットホーム104に接続することができる。リンクも、
コンピュータ・システム100を1つまたは複数の同様
のシステム(図示せず)に接続するために含めることが
できる。Compiler 105 and Optimizer 1
06 operates on a computer platform 104 that includes a hardware unit 112. The hardware unit 112 includes one or more central processing units (CPUs) 116, a random access memory (R)
AM) 114 and an input / output interface (not shown). Micro-instruction code 110, such as a reduced instruction set, for example, may also be included on computer platform 104. Data storage device 118
Can be connected to the computer platform 104. Links,
A computer system 100 may be included to connect to one or more similar systems (not shown).
【0020】オペレーティング・システム108は、コ
ンピュータ・システム100のさまざまな構成要素の動
作を調整する。このようなコンピュータ・システム10
0の例が、IBM RISC System/6000
(RISC System/6000は、IBM社の商
標である)である。しかし、以下で説明する概念を、独
立型システムであれネットワーク型システムであれ、異
なる種類のコンピュータ・システム100に適用可能で
あることは、当業者に容易に理解される。Operating system 108 coordinates the operation of various components of computer system 100. Such a computer system 10
0 is the IBM RISC System / 6000
(RISC System / 6000 is a trademark of IBM Corporation). However, those skilled in the art will readily appreciate that the concepts described below are applicable to different types of computer systems 100, whether stand-alone or networked.
【0021】前に述べたように、図2は、本発明の概念
を使用するためのアプリケーション・プログラムの1実
施形態を示す図である。アプリケーション・プログラム
200には、アプリケーション・グラフィカル・ユーザ
・インターフェース(GUI)201、第1のアプリケ
ーション動的リンク・ライブラリ(DLL)202およ
び第2のアプリケーションDLL203が含まれる。こ
の例では、アプリケーションDLL202および203
に、実行可能モジュールと、保護サービス・プロバイダ
210とのインターフェースならびに、モニタ/完全性
チェッカ204が含まれる。保護サービス・プロバイダ
210は、アプリケーションの一部を含むか、アプリケ
ーションにインターフェースすることができ、後者の場
合には、保護サービス・プロバイダに第2のアプリケー
ションを含めることができる。As previously mentioned, FIG. 2 is a diagram illustrating one embodiment of an application program for using the concepts of the present invention. The application program 200 includes an application graphical user interface (GUI) 201, a first application dynamic link library (DLL) 202, and a second application DLL 203. In this example, application DLLs 202 and 203
Includes an interface between the executable module and the protection service provider 210, as well as a monitor / integrity checker 204. The protected service provider 210 can include a portion of the application or interface with the application, and in the latter case, the protected service provider can include the second application.
【0022】保護サービス・プロバイダには、機密情報
を含めることができ、1実施形態では、保護サービス・
プロバイダが、本発明の原理による耐タンパ・コードを
実施する。アプリケーションDLL202および203
は、保護サービス・プロバイダ210とインターフェー
スするので、保護サービス・プロバイダをオープンする
際に、可能な不正使用のためにこれらのDLLのどちら
もが変更されないことを保証することが望ましい。した
がって、アプリケーションDLL202および203
は、保護サービス・プロバイダへのアクセスの前提条件
として検査を受けることができ、実行時に動的に周期的
に再検査を受けることができる。1例として、保護サー
ビス・プロバイダに、ディジタル・ビデオ・ディスク・
プレイヤ用のデスクランブラ・モジュールを含めること
ができ、この場合に、PSPモジュールによって提供さ
れる保護サービス機能に、デスクランブル機能が含まれ
るはずである。[0022] The protected service provider may include sensitive information, and in one embodiment, the protected service provider.
A provider implements tamper-resistant code according to the principles of the present invention. Application DLLs 202 and 203
Interfaces with the protection service provider 210, it is desirable to ensure that upon opening the protection service provider neither of these DLLs are modified due to possible misuse. Therefore, application DLLs 202 and 203
Can be checked as a prerequisite for access to the protection service provider and can be dynamically and periodically rechecked at runtime. As an example, a protection service provider may provide a digital video disk
A descrambler module for the player may be included, in which case the protection service function provided by the PSP module would include a descrambling function.
【0023】モニタ/完全性チェッカ204は、本明細
書では共生コードとも称するが、保護サービス・プロバ
イダまたはオペレーティング・システムによって起動さ
れ、オペレーティング・システム(OS)内で独立に走
行する、独立のモニタ・プログラムを含むことが好まし
い。モニタ実体は、さまざまな形で始動することができ
るが、その中には他の形より堅牢なものがある。The monitor / integrity checker 204, also referred to herein as symbiotic code, is activated by a protection service provider or operating system and runs independently within the operating system (OS). Preferably, it includes a program. A monitor entity can be activated in a variety of ways, some of which are more robust than others.
【0024】・アプリケーションは、スレッド(または
別のプロセス)をスポーン(spawn)して、モニタ実体
の独立の実行を開始することができる。たとえば、Wi
ndows(登録商標)オペレーティング・システムで
は、独立のスレッドまたはプロセス内でコード・シーケ
ンスの実行を開始する方法が複数存在する。しかし、こ
の手法では、モニタのコードは、実際には実行可能モジ
ュールと同時にメモリにロードされる。An application can spawn a thread (or another process) to initiate independent execution of a monitor entity. For example, Wi
In the Windows operating system, there are multiple ways to start executing a code sequence in a separate thread or process. However, in this approach, the code of the monitor is actually loaded into memory at the same time as the executable module.
【0025】・共生コードを、別にコンパイルされたプ
ログラム、デバイス・ドライバまたはサービスとして作
成することができる。このような実施形態では、共生コ
ードは、実際にはオペレーティング・システムによっ
て、たとえばブート時に始動される。ある意味では、共
生コードは、休止状態になり、保護サービス・プロバイ
ダを使用するアプリケーションの初期設定と実行開始を
待ち、その時点で、共生コードが機能を開始する。この
技法は、共生コードが、OSブート時にロードされるよ
うに導入された時に、アプリケーションの一部にみえる
ことが全くなく、それ自体がほとんど注目されないとい
う点でより強力である。アプリケーションと共生コード
の間の最初の通信は、デバイス・ドライバ入出力制御コ
マンド(IOCTL)、共用メモリ、名前付きパイプ、
ソケット通信APIを含むがこれらに制限されない複数
の形で行うことができる。The symbiotic code can be created as a separately compiled program, device driver or service. In such an embodiment, the symbiotic code is actually started by the operating system, for example, at boot time. In a sense, the symbiotic code goes dormant, waiting for the initialization and execution of the application using the protected service provider, at which point the symbiotic code begins functioning. This technique is more powerful in that when the symbiotic code is introduced to be loaded at OS boot time, it never appears to be part of the application and is itself of little interest. The initial communication between the application and the symbiotic code includes device driver input / output control commands (IOCTL), shared memory, named pipes,
It can be done in multiple ways, including but not limited to the socket communication API.
【0026】要約すると、アプリケーションDLL20
2および203は、保護サービス・プロバイダ210へ
の機能呼出しを行って、保護サービス機能にアクセスす
る。モニタ/完全性チェッカ204は、完全性検査機能
を、たとえば保護サービス・プロバイダ210ならびに
アプリケーションDLL202および203の両方に、
提供する。代替実施形態では、保護サービス・プロバイ
ダ210に、アプリケーションDLL202および20
3のための完全性チェッカならびにモニタ/完全性チェ
ッカ204に対する相互チェッカを含めることができ
る。プロセス間通信リンクも、本明細書の以下でさらに
説明する本発明のさまざまな実施形態で、保護サービス
・プロバイダ210とモニタ/完全性チェッカ204の
間に存在するはずである。In summary, application DLL 20
2 and 203 make function calls to the protected service provider 210 to access the protected service functions. The monitor / integrity checker 204 provides the integrity checking function to both the protection service provider 210 and the application DLLs 202 and 203, for example.
provide. In an alternative embodiment, protection service provider 210 provides application DLLs 202 and 20
3 as well as a cross checker for the monitor / integrity checker 204. An inter-process communication link may also exist between the protection service provider 210 and the monitor / integrity checker 204 in various embodiments of the present invention described further herein below.
【0027】さらに、モニタ/完全性チェッカ204
(1実施形態の)は、保護サービス・プロバイダが保護
サービス機能を提供する対象の特定のアプリケーション
の完全性検査専用である。この特定のアプリケーション
は、メモリ内にあり実行中の間に完全性検査を受ける。
前に述べたように、モニタ/完全性チェッカ204は、
アプリケーションと独立にスポーンすることができる
(たとえば、オペレーティング・システム・ブート時に
ロードされるデバイス・ドライバとして)。Further, the monitor / integrity checker 204
(In one embodiment) is dedicated to the integrity check of the specific application for which the protection service provider provides the protection service function. This particular application is in memory and undergoes an integrity check during execution.
As mentioned earlier, the monitor / integrity checker 204
Can spawn independently of the application (eg, as a device driver loaded at operating system boot time).
【0028】図3は、共生コード上のPSP主モジュー
ル(すなわちモニタ/完全性チェッカ204)によって
実行される完全性クロスチェックの流れ図実施形態を示
す図であり、図4は、PSPモジュール上の共生コード
によって実行される完全性検査の流れ図実施形態を示す
図である。この例では、共生コードが、PSPモジュー
ルを実行するスレッドとは別のスレッド上で実行中であ
ると仮定する。図3から始めると、PSP主モジュール
のルーチン動作フロー300内で実施することのでき
る、共生コードの完全性検査では、まず、共生スレッド
が実行中であるかどうかを判定する(310)。共生コ
ードは、有効であるために実行中でなければならないと
仮定し、共生スレッドが実行中でない場合には、防衛処
置を行う(320)。スレッドが実行中である場合に
は、PSPモジュールは、PSP主モジュールを検査す
るための共生コードに対する完全性検査を実行し、共生
コードが有効であるかどうかを判定する(340)。そ
うでない場合には、やはり防衛処置を行う(350)。
それ以外の場合には、共生コードが動作中であり、有効
であり、PSPは、主動作フローを継続する。FIG. 3 illustrates a flow diagram embodiment of an integrity cross-check performed by the PSP main module (ie, monitor / integrity checker 204) on the symbiotic code, and FIG. FIG. 4 illustrates a flow diagram embodiment of an integrity check performed by code. In this example, assume that the symbiotic code is running on a different thread than the thread executing the PSP module. Beginning with FIG. 3, the integrity check of symbiotic code, which can be performed within the routine operation flow 300 of the PSP main module, first determines whether a symbiotic thread is running (310). The symbiotic code assumes that it must be running to be valid and, if the symbiotic thread is not running, takes defensive action (320). If the thread is running, the PSP module performs an integrity check on the symbiotic code to check the PSP main module to determine if the symbiotic code is valid (340). If not, a defense is again taken (350).
Otherwise, the symbiotic code is running and valid, and the PSP continues the main operating flow.
【0029】図4からわかるように、本発明の1実施形
態では、共生コードは、バックグラウンド動作フローか
らの完全性検査355を実施する。この完全性検査は、
PSPモジュールとは別の、独立の実行のスレッドであ
る。共生コードは、共生コードを検査するコード自体を
含む、PSP主モジュールに対する完全性検査を実行す
る(365)。任意選択として、共生コードは、PSP
機能を使用しているアプリケーションxも検査すること
ができる。共生コードは、PSPモジュールが有効であ
るかどうかを判定し(375)、そうでない場合には、
防衛処置を実行する(385)。有効である場合には、
共生コードは、ある時間期間だけ待機(395)した後
に、PSP主モジュールの完全性検査をもう一度実行す
ることができる。As can be seen from FIG. 4, in one embodiment of the present invention, the symbiotic code performs an integrity check 355 from the background operational flow. This integrity check
A separate thread of execution, separate from the PSP module. The symbiotic code performs an integrity check on the PSP main module, including the code itself that checks the symbiotic code (365). Optionally, the symbiotic code is a PSP
The application x using the function can also be checked. The symbiotic code determines if the PSP module is valid (375), and if not,
Perform defense action (385). If it is valid,
After waiting (395) for a period of time, the symbiotic code can perform another integrity check of the PSP main module.
【0030】上で述べた監視手法に対する機能強化とし
て、本明細書では、1つまたは複数の保護サービス機能
の複数の独立の実行のスレッドの間での再分割という概
念を提示する。相互に独立なクロスチェック・モジュー
ルは、さらに耐タンパ性が高くなるはずである。したが
って、保護サービス機能を、複数の実行のスレッドに分
割することができ、実行のスレッドのそれぞれが、少な
くとも1つの他のモジュールの完全性検査を行うことが
でき、各モジュールにクリティカルなすなわち保護され
た機能の一部が含まれる。図5に、この概念を実施する
ための実施形態の1つを示す。As an enhancement to the above-described monitoring approach, the present specification presents the concept of subdivision between multiple independent threads of execution of one or more protection service functions. Cross-check modules that are independent of each other should be more tamper-resistant. Thus, the protection service function can be divided into a plurality of threads of execution, each of which can perform an integrity check on at least one other module, with each module being critical or protected. Some of the features included. FIG. 5 shows one embodiment for implementing this concept.
【0031】まず、保護サービス・プロバイダの主機能
が判定され(400)、1つまたは複数の保護サービス
機能が、複数の構成要素に再分割される(410)。た
とえば、保護サービス機能Aが、第1の構成要素A'と
第2の構成要素A"に再分割される。第1の構成要素A'
は、PSP主モジュール内で実施され(420)、第2
の構成要素A"は、PSPの共生コード内で実施される
(430)。完全性検査コードは、PSP主モジュール
内で、たとえば、第1の構成要素A'自体の中で、共生
コード内で実施される第2の構成要素A"の完全性を検
査するために実施される(440)。同様に、たとえば
第2の構成要素A"からの、PSP主モジュール内の第
1の構成要素A'の完全性検査を有する共生コードが、
実施される(450)。1実施形態では、その後、PS
P共生を、オペレーティング・システム・ブート時にロ
ードされるデバイス・ドライバとして導入することがで
きる(460)。First, the primary function of the protection service provider is determined (400) and one or more protection service functions are subdivided into multiple components (410). For example, the protection service function A is subdivided into a first component A 'and a second component A ". The first component A'
Is implemented in the PSP main module (420) and the second
Is implemented within the PSP symbiotic code (430). The integrity check code is implemented within the PSP main module, eg, within the first component A 'itself, within the symbiotic code. Implemented to check the integrity of the implemented second component A "(440). Similarly, the symbiotic code having the integrity check of the first component A ′ in the PSP main module, eg, from the second component A ″,
(450). In one embodiment, PS
P symbiosis can be implemented as a device driver that is loaded at operating system boot (460).
【0032】図6は、本発明の1態様に従って再分割さ
れた保護サービス機能の概念を示す絵図である。保護サ
ービス機能A、B、C、…、Fに関する呼出しが、めい
めいの保護サービス機能A、B、C、…、Fの第1構成
要素A'、B'、C'、…、F'が存在する主保護サービス
・プロバイダ・モジュール500に対して行われる。保
護サービス機能は、1実施形態では、第1構成要素か
ら、第2保護サービス・プロバイダ・モジュール510
内で実施される第2構成要素への機能呼出しを実施する
ことによって実行される。図からわかるように、第2保
護サービス・プロバイダ・モジュール510は、第2構
成要素A"、B"、C"、…、F"を実施する。第1構成要
素から第2構成要素への機能呼出しの配置と同一期間
に、第2構成要素が、第1構成要素の完全性検査を行
い、第1構成要素が、第2構成要素の完全性検査を行
う。破線によって示されているように、主保護サービス
・プロバイダ・モジュール500と第2保護サービス・
プロバイダ・モジュール510は、独立の実行可能モジ
ュールを構成することが好ましい。ここで使用される第
2保護サービス・プロバイダ・モジュール510には、
主保護サービス・プロバイダ・モジュール500に対す
る共生コードが含まれる。さらに、ここでは主保護サー
ビス・プロバイダ・モジュール500および第2保護サ
ービス・プロバイダ・モジュール510に関して説明す
るが、提示される概念は、当業者によって、3つ以上の
別々の実行可能モジュールの間で簡単に実施できる。FIG. 6 is a pictorial diagram illustrating the concept of a protected service function subdivided according to one aspect of the present invention. The call for the protection service functions A, B, C,... F has the first component A ′, B ′, C ′,..., F ′ of the respective protection service functions A, B, C,. The main protection service provider module 500 that performs The protection service function, in one embodiment, comprises a first protection component from a second protection service provider module 510.
By performing a function call to a second component implemented within. As can be seen, the second protected service provider module 510 implements the second components A ", B", C ", ..., F". During the same period as the placement of the function call from the first component to the second component, the second component performs an integrity check on the first component, and the first component checks the integrity of the second component. Perform an inspection. As indicated by the dashed line, the primary protection service provider module 500 and the second protection service
Provider module 510 preferably constitutes a separate executable module. The second protected service provider module 510 used here includes:
A symbiotic code for the primary protection service provider module 500 is included. In addition, although described herein with respect to the primary protection service provider module 500 and the second protection service provider module 510, the concepts presented are straightforward by those skilled in the art between three or more separate executable modules. Can be implemented.
【0033】図7は、本発明の原理に従って、組み合わ
された保護サービス機能再分割および完全性検査を実施
するための1実施形態を表す流れ図である。PSP主モ
ジュールは、保護サービス機能Aについて、アプリケー
ションxの実行可能モジュールによって呼び出される
(600)。PSP主モジュールは、機能Aの一部(す
なわち第1構成要素A')を実行すると同時に、共生モ
ジュールに存在する第2構成要素A"コードの完全性を
検査する(610)。処理によって、第2構成要素A"
コードの完全性が正しいかどうかが判定され(62
0)、正しくない場合には、防衛処置が行われる(63
0)。第2構成要素の完全性が正しいと仮定すると、保
護サービス機能Aの完了(すなわち第2構成要素A"の
実行)のために、共生モジュールへの呼出しが行われる
(明示的な呼出しか、共生が別の形で実行開始のシグナ
ルを受け取るのいずれか)(640)。FIG. 7 is a flowchart representing one embodiment for performing combined protection service function subdivision and integrity checking in accordance with the principles of the present invention. The PSP main module is called for the protection service function A by the executable module of the application x (600). The PSP main module performs a part of the function A (that is, the first component A ′) and, at the same time, checks the integrity of the second component A ″ code present in the symbiotic module (610). 2 component A "
It is determined whether the code integrity is correct (62
0) If not correct, defensive action is taken (63)
0). Assuming that the integrity of the second component is correct, a call is made to the symbiotic module for completion of protection service function A (ie, execution of second component A ") (only explicit calls, symbiotic Receives a signal to start execution in another way) (640).
【0034】呼び出された共生コードは、PSP主モジ
ュール内の第1構成要素A'の完全性を検査する(65
0)。処理によって、第1構成要素A'のコードの完全
性が正しいかどうかが判定され(660)、そうでない
場合には、やはり防衛処置が行われる(670)。第1
構成要素A'の完全性が正しい場合には、第2構成要素
A"のコードが実行され、結果がPSP主モジュールに
返される(680)。PSP主モジュールは、保護サー
ビス機能呼出しの結果をアプリケーションxに返す(6
90)。The called symbiotic code checks the integrity of the first component A 'in the PSP main module (65).
0). The process determines whether the code integrity of the first component A 'is correct (660), otherwise a defense action is also taken (670). First
If the integrity of component A 'is correct, the code of the second component A "is executed and the result is returned to the PSP main module (680). The PSP main module sends the result of the protection service function call to the application. x (6
90).
【0035】要約すると、当業者は、上の説明から、ア
プリケーションそのものに関するモニタ/完全性チェッ
カ(すなわち共生コード)の処置が、以下のいずれかま
たはすべてであることに気付くであろう。In summary, those skilled in the art will appreciate from the above description that the action of the monitor / integrity checker (ie, symbiotic code) on the application itself is any or all of the following:
【0036】・モニタは、アプリケーションそのものの
メモリ領域に対して周期的な署名分析を実行する。これ
は、ロードの前または実行中のいずれかの、アプリケー
ションの許可されない変更の検出を助ける。前者の検出
は、許可されない動作を実行するためにアプリケーショ
ンが静的に変更される(「永久的」記憶装置、通常はハ
ード・ドライブ内で)「ブラック・ボックス」攻撃を妨
げるのに役立つ。後者は、一部のデバッグ活動の検出に
役立つ(たとえば、アプリケーションにブレークポイン
トを設定すると、実際に、アプリケーションのメモリ・
イメージの2進署名が変化する)。The monitor performs a periodic signature analysis on the memory area of the application itself. This helps detect unauthorized changes in the application, either before loading or while running. The former detection helps prevent "black box" attacks where the application is statically modified to perform unauthorized operations ("permanent" storage, usually in a hard drive). The latter is useful for detecting some debugging activity (for example, setting a breakpoint in an application actually
The binary signature of the image changes).
【0037】・モニタは、アプリケーションの保護され
た計算の一部を実行する。したがって、モニタ実体を使
用不能にすると、アプリケーションが「破壊」され、正
しく機能しなくなる。The monitor performs some of the protected computations of the application. Thus, disabling the monitor entity will "break" the application and prevent it from functioning properly.
【0038】・アプリケーションまたはモニタあるいは
その両方は、可能な観察者を迷わせるために、不要であ
るか、その計算が回り道であるか追従が困難である、お
互いへの呼出しを含み、実行することができる。The application and / or the monitor include and execute calls to each other that are unnecessary, whose calculations are detours or difficult to follow, to distract possible observers. Can be.
【0039】・モニタは、アプリケーションからの呼出
しが、そのアプリケーションが存在しなければならない
か存在することが既知のアドレス範囲(メモリ内の)か
ら実際に来たものであることを検証し、その逆も行われ
る。The monitor verifies that the call from the application is actually from an address range (in memory) where the application must or must be present, and vice versa Is also performed.
【0040】・アプリケーションは、モニタ実体に対す
る完全性検査(ディジタル署名またはチェックサム)を
実行することもできる。The application can also perform an integrity check (digital signature or checksum) on the monitor entity.
【0041】・モニタは、許可されないデバッグ動作を
検出するために、アプリケーション自体とは別の、オペ
レーティング・システムの要素を検査する。The monitor examines an operating system element separate from the application itself to detect unauthorized debugging operations.
【0042】・モニタが、アプリケーション自体の正し
くない動作または署名の変化を検出した場合には、モニ
タは、望ましくない活動を終了させるために、アプリケ
ーションを使用不能にするか、正しくないデバッグ動作
を使用不能にするか、おそらくはリブートまたは他の形
でシステムを停止させるための独立の処置を行うことが
できる。または、モニタは、この動作が検出されたこと
をハッカーに表立って通知せずに、その計算を無効にす
ることができる。攻撃に対する応答は、発生ごとに変更
することができる、すなわち、その反応の予測不能性を
実現でき、これによって、アプリケーション/モニタ対
がさらにハッキングしにくくなる。If the monitor detects an incorrect operation of the application itself or a change in the signature, the monitor disables the application or uses an incorrect debug operation to end the unwanted activity. Independent actions can be taken to disable or possibly reboot or otherwise halt the system. Alternatively, the monitor can override the calculation without explicitly notifying the hacker that this action has been detected. The response to an attack can be changed from occurrence to occurrence, ie, the response can be unpredictable, which makes the application / monitor pair more difficult to hack.
【0043】・何らかの形のネットワーク接続が使用可
能な場合には、モニタは、検出された活動を外部の観察
者に報告することもできる。この技法は、アプリケーシ
ョンが、インターネット上のサーバからのデータ必要と
する(または、その機能が保護されたデータにアクセス
することである)場合に有用になる。この場合、不正な
活動の報告は、攻撃者がその後にサーバ・データにアク
セスできなくするのに使用することができる。If some form of network connection is available, the monitor can also report the detected activity to an external observer. This technique is useful when an application needs data from a server on the Internet (or its function is to access protected data). In this case, reporting of fraudulent activity can be used to prevent an attacker from subsequently accessing server data.
【0044】・アプリケーション全体が、複数の実行実
体(たとえば、デバイス・ドライバ、プロセス、スレッ
ド)からなるものとすることができることに留意された
い。同様に、モニタも、複数の実行実体からなるものと
することができる。鍵は、アプリケーションとモニタが
分離され、モニタがそのアプリケーション「専用」であ
ることである。Note that the entire application may consist of multiple execution entities (eg, device drivers, processes, threads). Similarly, the monitor may be composed of a plurality of execution entities. The key is that the application and monitor are separated and the monitor is "dedicated" to that application.
【0045】たとえば、本発明は、たとえばコンピュー
タ使用可能媒体を有する製造品(たとえば1つまたは複
数のコンピュータ・プログラム製品)に含めることがで
きる。この媒体は、その中に、たとえば、本発明の機能
を提供し、促進するためのコンピュータ可読プログラム
・コード手段を実施する。製造品は、コンピュータ・シ
ステムの一部として含めるか、別々に販売することがで
きる。For example, the invention may be included in an article of manufacture (eg, one or more computer program products) having, for example, computer usable media. The media embodies therein, for example, computer readable program code means for providing and promoting the features of the present invention. The article of manufacture can be included as part of a computer system or sold separately.
【0046】さらに、本発明の機能を実行するために機
械によって実行可能な少なくとも1つの命令のプログラ
ムを具体的に実施する、機械によって読み取ることので
きる少なくとも1つのプログラム記憶装置を提供するこ
とができる。Further, it is possible to provide at least one machine readable program storage device that specifically implements a program of at least one instruction executable by a machine to perform the functions of the present invention. .
【0047】本明細書の流れ図は、例として提供され
る。これらの図または本明細書に記載のステップ(また
は動作)に対する、本発明の主旨から逸脱しない変形形
態がありえる。たとえば、いくつかの場合に、ステップ
を異なる順序で実行することができ、ステップを追加、
削除または変更することができる。これらの変形形態の
すべてが、請求の範囲に記載の本発明の一部を構成する
とみなされる。The flow diagrams herein are provided as examples. There may be variations to these figures or to the steps (or operations) described herein that do not depart from the spirit of the invention. For example, in some cases, steps can be performed in a different order, adding steps,
Can be deleted or modified. All of these variations are considered a part of the claimed invention.
【0048】まとめとして、本発明の構成に関して以下
の事項を開示する。In summary, the following matters are disclosed regarding the configuration of the present invention.
【0049】(1)実行可能モジュールおよび関連する
保護サービス・プロバイダ(PSP)モジュールのうち
の少なくとも1つの完全性を監視するための方法であっ
て、前記PSPモジュールが、前記実行可能モジュール
に保護サービス機能を提供し、(i)前記PSPモジュ
ールおよび前記実行可能モジュールのうちの少なくとも
1つの完全性を検査するための、前記PSPモジュール
と別のモジュールを構成する共生モジュールを提供する
ステップと、(ii)前記PSPモジュール内で前記共
生モジュールをクロスチェックするためのコードを提供
するステップであって、前記共生モジュールによる検査
および前記PSPモジュールによるクロスチェックが、
一緒に、前記実行可能モジュールおよび前記PSPモジ
ュールのうちの少なくとも1つの完全性を監視する、前
記コードを提供するステップとを含む方法。 (2)前記PSPモジュールの前記保護サービス機能
が、第1構成要素および第2構成要素に分割され、前記
方法がさらに、前記保護サービス機能の前記第1構成要
素を前記PSPモジュール内で実施するステップと、前
記保護サービス機能の前記第2構成要素を前記共生モジ
ュール内で実施するステップとを含む、上記(1)に記
載の方法。 (3)前記共生モジュールの使用不能化が、前記PSP
モジュールによって前記実行可能モジュールに提供され
る前記保護サービス機能を使用不能にする、上記(2)
に記載の方法。 (4)前記保護サービス機能が、前記PSPモジュール
によって前記実行可能モジュールに提供される複数の機
能のうちの1つの機能を含み、前記方法がさらに、前記
複数の機能のうちの少なくともいくつかの機能のそれぞ
れを第1構成要素および第2構成要素に再分割するステ
ップと、前記少なくともいくつかの機能のそれぞれにつ
いて、前記第1構成要素を前記PSPモジュール内で実
施し、前記第2構成要素を前記共生モジュール内で実施
するステップとを含む、上記(1)に記載の方法。 (5)前記共生モジュールを提供する前記ステップが、
前記PSPモジュールのロードと独立に前記共生モジュ
ールをロードするステップを含む、上記(1)に記載の
方法。 (6)前記実行可能モジュールが、システム内で処理さ
れ、前記共生モジュールをロードする前記ステップが、
前記システムの初期設定時に前記共生モジュールをロー
ドするステップと、その後の、前記実行可能モジュール
によって要求される前記保護サービス機能と同一期間に
前記PSPモジュールをロードするステップとを含む、
上記(5)に記載の方法。 (7)前記PSPモジュールが、さらに、前記実行可能
モジュールの完全性を監視するためのコードを含む、上
記(1)に記載の方法。 (8)メモリにロードされた実行可能モジュールに保護
サービス機能を提供する方法であって、前記保護サービ
ス機能を第1構成要素および第2構成要素に再分割する
ステップと、前記保護サービス機能の前記第1構成要素
を第1実行可能モジュール内で実施するステップと、前
記保護サービス機能の前記第2構成要素を第2実行可能
モジュール内で実施するステップとを含み、前記第1実
行可能モジュールおよび前記第2実行可能モジュール
が、別々の実行可能モジュールを構成する方法。 (9)前記第1実行可能モジュールが、保護サービス・
プロバイダ・モジュールを含み、前記第2実行可能モジ
ュールが、共生モジュールを含み、前記共生モジュール
が、前記保護サービス・プロバイダ・モジュールのロー
ドと別にロードされる、上記(8)に記載の方法。 (10)前記共生モジュールの完全性を検査するための
コードを前記保護サービス・プロバイダ・モジュールに
統合化するステップと、前記保護サービス・プロバイダ
・モジュールの完全性を検査するためのコードを前記共
生モジュールに統合化するステップとをさらに含む、上
記(9)に記載の方法。 (11)オペレーティング・システムがブートされる時
にロードされるデバイス・ドライバとして前記共生モジ
ュールを導入するステップをさらに含み、前記オペレー
ティング・システムが、前記実行可能モジュールの実行
を監督する、上記(10)に記載の方法。 (12)前記第2実行可能モジュールが、前記第1実行
可能モジュールに結果を供給し、前記第1実行可能モジ
ュールが、前記実行可能モジュールに前記保護サービス
機能を提供する、上記(8)に記載の方法。 (13)呼出し元実行可能モジュールに保護サービス機
能を提供するための方法であって、第1構成要素および
第2構成要素に再分割された前記保護サービス機能を提
供するステップであって、前記第1構成要素が第1実行
可能モジュール内で実施され、前記第2構成要素が第2
実行可能モジュール内で実施され、前記第1実行可能モ
ジュールおよび前記第2実行可能モジュールが、別々の
実行可能モジュールである、前記提供するステップと、
前記第1実行可能モジュールを処理し、前記第2構成要
素の完全性を検査するステップと、前記第2構成要素の
完全性が検証された時に、前記保護サービス機能の前記
第2構成要素を実行するために前記第2実行可能モジュ
ールを開始するステップと、前記第2実行可能モジュー
ルを開始する時に、前記第2実行可能モジュールから前
記第1構成要素の完全性を検査し、前記第1構成要素の
完全性が検証された時に、前記第2実行可能モジュール
を処理し、前記第1実行可能モジュールまたは前記呼出
し元実行可能モジュールのいずれかに結果を返すことに
よって、前記保護サービス機能を完了するステップとを
含む方法。 (14)前記第2構成要素が前記完全性検査に失敗する
場合に、それに応答して防衛処置を行い、前記第1構成
要素が前記完全性検査に失敗する場合に、それに応答し
て防衛処置を行う、上記(13)に記載の方法。 (15)実行可能モジュールおよび関連する保護サービ
ス・プロバイダ(PSP)モジュールのうちの少なくと
も1つの完全性を監視するためのシステムであって、前
記PSPモジュールが、前記実行可能モジュールに保護
サービス機能を提供し、前記PSPモジュールおよび前
記実行可能モジュールのうちの少なくとも1つの完全性
を検査するための、前記PSPモジュールと別のモジュ
ールを構成する共生モジュールを提供するための手段
と、前記PSPモジュール内で前記共生モジュールをク
ロスチェックするためのコードを提供するための手段で
あって、前記共生モジュールによる検査および前記PS
Pモジュールによるクロスチェックが、一緒に、前記実
行可能モジュールおよび前記PSPモジュールのうちの
少なくとも1つの完全性を監視する、前記手段とを含む
システム。 (16)前記PSPモジュールの前記保護サービス機能
が、第1構成要素および第2構成要素に分割され、前記
システムがさらに、前記保護サービス機能の前記第1構
成要素を前記PSPモジュール内で実施するための手段
と、前記保護サービス機能の前記第2構成要素を前記共
生モジュール内で実施するための手段とを含む、上記
(15)に記載のシステム。 (17)前記共生モジュールの使用不能化の際に、前記
PSPモジュールによって前記実行可能モジュールに提
供される前記保護サービス機能を使用不能にするための
手段をさらに含む、上記(16)に記載のシステム。 (18)前記保護サービス機能が、前記PSPモジュー
ルによって前記実行可能モジュールに提供される複数の
機能のうちの1つの機能を含み、前記複数の機能のうち
の少なくともいくつかの機能のそれぞれが、第1構成要
素および第2構成要素に再分割され、前記システムがさ
らに、前記少なくともいくつかの機能のそれぞれについ
て、前記第1構成要素を前記PSPモジュール内で実施
し、前記第2構成要素を前記共生モジュール内で実施す
るための手段を含む、上記(15)に記載のシステム。 (19)前記共生モジュールを提供するための前記手段
が、前記PSPモジュールのロードと独立に前記共生モ
ジュールをロードするための手段を含む、上記(15)
に記載のシステム。 (20)前記実行可能モジュールが、オペレーティング
・システムによって監督され、前記共生モジュールをロ
ードするための前記手段が、前記オペレーティング・シ
ステムの初期設定時に前記共生モジュールをロードする
ための手段と、その後に、前記実行可能モジュールによ
って要求される前記保護サービス機能と同一期間に前記
PSPモジュールをロードするための手段とを含む、上
記(19)に記載のシステム。 (21)前記PSPモジュールが、さらに、前記実行可
能モジュールの完全性を監視するためのコードを含む、
上記(15)に記載のシステム。 (22)実行可能モジュールおよび関連する保護サービ
ス・プロバイダ(PSP)モジュールのうちの少なくと
も1つの完全性を検査するためのシステムであって、前
記PSPモジュールが、前記実行可能モジュールに保護
サービス機能を提供し、前記PSPモジュールおよび前
記実行可能モジュールのうちの少なくとも1つの完全性
を検査するための共生モジュールを実施するように適合
された計算ユニットであって、前記共生モジュールが、
前記PSPモジュールと別のモジュールを構成する、前
記計算ユニットを含み、前記計算ユニットが、さらに、
前記PSPモジュール内で前記共生モジュールをクロス
チェックするためのコードを実施するように適合され、
前記共生モジュールによる検査および前記PSPモジュ
ールによるクロスチェックが、一緒に、前記実行可能モ
ジュールおよび前記PSPモジュールのうちの少なくと
も1つの完全性を監視するシステム。 (23)メモリにロードされた呼出し元実行可能モジュ
ールに保護サービス機能を提供するための方法であっ
て、前記保護サービス機能が、第1構成要素および第2
構成要素に再分割され、前記保護サービス機能の前記第
1構成要素を第1実行可能モジュール内で実施するため
の手段と、前記保護サービス機能の前記第2構成要素を
第2実行可能モジュール内で実施するための手段であっ
て、前記第1実行可能モジュールおよび前記第2実行可
能モジュールが、別々の実行可能モジュールを構成す
る、前記実施するための手段とを含むシステム。 (24)前記第1実行可能モジュールが、保護サービス
・プロバイダ・モジュールを含み、前記第2実行可能モ
ジュールが、共生モジュールを含み、前記共生モジュー
ルが、前記保護サービス・プロバイダ・モジュールと別
にロードされる、上記(23)に記載のシステム。 (25)前記共生モジュールの完全性を検査するための
コードを前記保護サービス・プロバイダ・モジュールに
統合化するための手段と、前記保護サービス・プロバイ
ダ・モジュールの完全性を検査するためのコードを前記
共生モジュールに統合化するための手段とをさらに含
む、上記(24)に記載のシステム。 (26)オペレーティング・システムがブートされる時
にロードされるデバイス・ドライバとして前記共生モジ
ュールを導入するための手段をさらに含み、前記オペレ
ーティング・システムが、前記実行可能モジュールの実
行を監督する、上記(25)に記載のシステム。 (27)前記第2実行可能モジュールから前記第1実行
可能モジュールに結果を供給するための手段と、前記第
1実行可能モジュールから前記呼出し元実行可能モジュ
ールに前記保護サービス機能を提供するための手段とを
さらに含む、上記(23)に記載のシステム。 (28)メモリにロードされた実行可能モジュールに保
護サービス機能を提供するためのシステムであって、前
記保護サービス機能が、第1構成要素および第2構成要
素に再分割され、前記保護サービス機能の前記第1構成
要素を第1実行可能モジュール内で実施するように適合
された計算ユニットを含み、前記計算ユニットが、さら
に、前記保護サービス機能の前記第2構成要素を第2実
行可能モジュール内で実施するように適合され、前記第
1実行可能モジュールおよび前記第2実行可能モジュー
ルが、別の実行可能モジュールを構成するシステム。 (29)呼出し元実行可能モジュールに保護サービス機
能を提供するためのシステムであって、第1構成要素お
よび第2構成要素に再分割された前記保護サービス機能
を提供するための手段であって、前記第1構成要素が第
1実行可能モジュール内で実施され、前記第2構成要素
が第2実行可能モジュール内で実施され、前記第1実行
可能モジュールおよび前記第2実行可能モジュールが別
の実行可能モジュールである、前記提供するための手段
と、前記第1実行可能モジュールを処理し、前記第2構
成要素の完全性を検査するための手段と、前記第2構成
要素の完全性が検証された時に、前記保護サービス機能
の前記第2構成要素を実行するために、前記第2実行可
能モジュールを開始するための手段と、前記第2実行可
能モジュールの開始時に、前記第2実行可能モジュール
から前記第1構成要素の完全性を検査し、前記第1構成
要素の完全性が検証された時に、前記第2実行可能モジ
ュールを処理し、前記第1実行可能モジュールまたは前
記呼出し元実行可能モジュールのいずれかに結果を返す
ことによって、前記保護サービス機能を完了するための
手段とを含むシステム。 (30)さらに、前記第2構成要素が前記完全性検査に
失敗した場合に、防衛処置を行うための手段と、前記第
1構成要素が前記完全性検査に失敗した場合に、防衛処
置を行うための手段とをさらに含む、上記(29)に記
載のシステム。 (31)実行可能モジュールおよび関連する保護サービ
ス・プロバイダ(PSP)モジュールの完全性を監視す
る際に使用するためのコンピュータ可読プログラム・コ
ード手段をその中に有するコンピュータ使用可能媒体を
含むコンピュータ・プログラム製品であって、前記PS
Pモジュールが、前記実行可能モジュールに保護サービ
ス機能を提供し、前記コンピュータ・プログラム製品内
の前記コンピュータ可読プログラム・コード手段が、コ
ンピュータに、共生モジュールから前記PSPモジュー
ルおよび前記実行可能モジュールのうちの少なくとも1
つの完全性検査を行わせるためのコンピュータ可読プロ
グラム・コード手段であって、前記共生モジュールが、
前記PSPモジュールと別のモジュールを構成する、前
記コンピュータ可読プログラム・コード手段と、コンピ
ュータに、前記PSPモジュール内のコードから前記共
生モジュールのクロスチェックを行わせるためのコンピ
ュータ可読プログラム・コード手段であって、前記共生
モジュールによる検査および前記PSPモジュールによ
るクロスチェックが、一緒に、前記実行可能モジュール
および前記PSPモジュールのうちの少なくとも1つの
完全性を監視する、前記コンピュータ可読プログラム・
コード手段とを含む、前記コンピュータ使用可能媒体を
含む製造品。 (32)メモリにロードされた実行可能モジュールに保
護サービス機能を提供する際に使用するためのコンピュ
ータ可読プログラム・コード手段をその中に有するコン
ピュータ使用可能媒体を含むコンピュータ・プログラム
製品であって、前記保護サービス機能が、第1構成要素
および第2構成要素に再分割され、前記コンピュータ・
プログラム製品内の前記コンピュータ可読プログラム・
コード手段が、コンピュータに、第1実行可能モジュー
ル内で前記保護サービス機能の前記第1構成要素を実施
させるためのコンピュータ可読プログラム・コード手段
と、コンピュータに、第2実行可能モジュール内で前記
保護サービス機能の前記第2構成要素を実施させるため
のコンピュータ可読プログラム・コード手段とを含み、
前記第1実行可能モジュールおよび前記第2実行可能モ
ジュールが、別の実行可能モジュールを構成する、前記
コンピュータ・プログラム製品を含む製造品。 (33)呼出し元実行可能モジュールに保護サービス機
能を提供する際に使用するためのコンピュータ可読プロ
グラム・コード手段をその中に有するコンピュータ使用
可能媒体を含むコンピュータ・プログラム製品であっ
て、前記コンピュータ・プログラム製品内の前記コンピ
ュータ可読プログラム・コード手段が、コンピュータ
に、第1構成要素および第2構成要素に再分割された前
記保護サービス機能の提供を行わせるためのコンピュー
タ可読プログラム・コード手段であって、前記第1構成
要素が第1実行可能モジュール内で実施され、前記第2
構成要素が第2実行可能モジュール内で実施され、前記
第1実行可能モジュールおよび前記第2実行可能モジュ
ールが別の実行可能モジュールを構成する、前記コンピ
ュータ可読プログラム・コード手段と、コンピュータ
に、前記第1実行可能モジュールの処理と、前記第2構
成要素の完全性検査とを行わせるためのコンピュータ可
読プログラム・コード手段と、前記第2構成要素の完全
性が検証された時に、前記保護サービス機能の前記第2
構成要素を実行するために、コンピュータに前記第2実
行可能モジュールの開始を行わせるためのコンピュータ
可読プログラム・コード手段と、コンピュータに、前記
第2実行可能モジュールの開始時に、前記第2実行可能
モジュールから前記第1構成要素の完全性検査を行わ
せ、前記第1構成要素の完全性が検証された時に、前記
第2実行可能モジュールを処理し、結果を前記第1実行
可能モジュールまたは前記呼出し元実行可能モジュール
のいずれかに返すことによって、前記保護サービス機能
を完了させるための、コンピュータ可読プログラム・コ
ード手段とを含む、コンピュータ・プログラム製品を含
む製造品。(1) A method for monitoring the integrity of at least one of an executable module and an associated protection service provider (PSP) module, the PSP module providing a protection service to the executable module. Providing a function, and (i) providing a symbiotic module constituting another module with the PSP module for checking the integrity of at least one of the PSP module and the executable module; (ii) ) Providing code for cross-checking the symbiotic module within the PSP module, wherein the inspection by the symbiotic module and the cross-check by the PSP module include:
Monitoring the integrity of at least one of the executable module and the PSP module together, providing the code. (2) the protection service function of the PSP module is divided into a first component and a second component, and the method further implements the first component of the protection service function in the PSP module; And performing the second component of the protection service function in the symbiotic module. (3) The disabling of the symbiotic module is caused by the PSP
Disabling the protection service function provided by the module to the executable module (2).
The method described in. (4) the protection service function includes one of a plurality of functions provided to the executable module by the PSP module, and the method further includes at least some of the plurality of functions. Subdivided into a first component and a second component, and for each of the at least some of the functions, implementing the first component in the PSP module and replacing the second component with the Performing in a symbiotic module. (5) The step of providing the symbiotic module includes:
The method of (1) above, comprising loading the symbiotic module independently of loading the PSP module. (6) wherein the executable module is processed in a system, and the step of loading the symbiotic module comprises:
Loading the symbiotic module during initialization of the system, followed by loading the PSP module for the same period of time as the protection service function required by the executable module.
The method according to the above (5). (7) The method according to (1), wherein the PSP module further includes code for monitoring the integrity of the executable module. (8) A method for providing a protection service function to an executable module loaded in a memory, the method further comprising: subdividing the protection service function into a first component and a second component; Implementing a first component in a first executable module and implementing the second component of the protection service function in a second executable module, wherein the first executable module and the A method wherein the second executable module comprises separate executable modules. (9) The first executable module includes a protection service
The method of claim 8, including a provider module, wherein the second executable module includes a symbiotic module, and wherein the symbiotic module is loaded separately from loading the protected service provider module. (10) integrating code for checking the integrity of the symbiotic module into the protection service provider module; and copying the code for checking the integrity of the protection service provider module to the symbiosis module. (9). The method according to (9), further comprising: (11) The method according to (10), further comprising introducing the symbiotic module as a device driver loaded when an operating system is booted, wherein the operating system supervises execution of the executable module. The described method. (12) The above (8), wherein the second executable module supplies a result to the first executable module, and the first executable module provides the protection service function to the executable module. the method of. (13) A method for providing a protection service function to a caller executable module, the method comprising: providing the protection service function subdivided into a first component and a second component. One component is implemented in a first executable module and the second component is a second component.
The providing step being performed in an executable module, wherein the first executable module and the second executable module are separate executable modules;
Processing the first executable module to check the integrity of the second component; and executing the second component of the protection service function when the integrity of the second component is verified. Starting the second executable module to check the integrity of the first component from the second executable module when starting the second executable module; Completing the protection service function by processing the second executable module and returning a result to either the first executable module or the calling executable module when the integrity of the second executable module is verified. And a method comprising: (14) If the second component fails the integrity check, perform a defense action in response thereto, and if the first component fails the integrity check, perform a defense action in response thereto The method according to (13) above. (15) A system for monitoring the integrity of at least one of an executable module and an associated protection service provider (PSP) module, wherein the PSP module provides a protection service function to the executable module. Means for providing a symbiotic module that constitutes another module with the PSP module for checking the integrity of at least one of the PSP module and the executable module; and Means for providing code for cross-checking a symbiotic module, comprising: testing with the symbiotic module and the PS
Said means for cross checking by a P module together monitoring the integrity of at least one of said executable module and said PSP module. (16) The protection service function of the PSP module is divided into a first component and a second component, and the system further implements the first component of the protection service function in the PSP module. And a means for implementing the second component of the protection service function in the symbiotic module. (17) The system according to (16), further comprising: means for disabling the protection service function provided to the executable module by the PSP module when disabling the symbiotic module. . (18) The protection service function includes one of a plurality of functions provided to the executable module by the PSP module, and each of at least some of the plurality of functions is a second function. Subdivided into one component and a second component, wherein the system further implements the first component in the PSP module for each of the at least some of the functions and associates the second component with the symbiotic component. The system of claim 15, including means for implementing in a module. (19) The above (15), wherein the means for providing the symbiotic module includes means for loading the symbiotic module independently of loading the PSP module.
System. (20) the executable module is supervised by an operating system, and the means for loading the symbiotic module comprises: means for loading the symbiotic module during initialization of the operating system; Means for loading said PSP module at the same time as said protection service function required by said executable module. (21) the PSP module further includes code for monitoring the integrity of the executable module;
The system according to the above (15). (22) A system for checking the integrity of at least one of an executable module and an associated protection service provider (PSP) module, wherein the PSP module provides a protection service function to the executable module. And a computing unit adapted to implement a symbiotic module for checking the integrity of at least one of the PSP module and the executable module, wherein the symbiotic module comprises:
Including the computing unit, which constitutes another module from the PSP module, wherein the computing unit further comprises:
Adapted to implement code for cross-checking the symbiotic module within the PSP module;
A system wherein inspection by the symbiotic module and cross-check by the PSP module together monitor the integrity of at least one of the executable module and the PSP module. (23) A method for providing a protection service function to a caller executable module loaded in a memory, wherein the protection service function includes a first component and a second component.
Means for sub-dividing into components and implementing the first component of the protection service function in a first executable module, and the second component of the protection service function in a second executable module Means for implementing, said first executable module and said second executable module comprising separate executable modules; and a means for implementing. (24) The first executable module includes a protected service provider module, the second executable module includes a symbiotic module, and the symbiotic module is loaded separately from the protected service provider module. , The system according to (23). (25) means for integrating code for checking the integrity of the symbiotic module with the protection service provider module, and code for checking the integrity of the protection service provider module; Means for integrating into a symbiotic module. (26) The apparatus according to (25), further comprising means for installing the symbiotic module as a device driver loaded when an operating system is booted, wherein the operating system supervises execution of the executable module. ). (27) Means for providing a result from the second executable module to the first executable module, and means for providing the protection service function from the first executable module to the calling executable module. The system according to (23), further comprising: (28) A system for providing a protection service function to an executable module loaded in a memory, wherein the protection service function is subdivided into a first component and a second component. A computing unit adapted to implement the first component in a first executable module, the computing unit further comprising the second component of the protection service function in a second executable module. A system adapted to perform, wherein the first executable module and the second executable module constitute another executable module. (29) A system for providing a protection service function to a caller executable module, the means for providing the protection service function subdivided into a first component and a second component, The first component is implemented in a first executable module, the second component is implemented in a second executable module, and the first executable module and the second executable module are separate executable modules. A means for providing, a means for providing, a means for processing the first executable module and checking the integrity of the second component, and the integrity of the second component has been verified. Sometimes means for initiating the second executable module to execute the second component of the protection service function; and opening the second executable module. Checking the integrity of the first component from the second executable module and processing the second executable module when the integrity of the first component is verified; Means for completing the protection service function by returning a result to either a module or the calling executable module. (30) Further, means for performing a defense measure when the second component fails the integrity check, and performs a defense measure when the first component fails the integrity check. (29). The system according to (29), further comprising: (31) A computer program product including a computer usable medium having therein computer readable program code means for use in monitoring the integrity of an executable module and associated protected service provider (PSP) module. And the PS
A P module providing a protection service function to the executable module, and wherein the computer readable program code means in the computer program product provides a computer with at least one of the PSP module and the executable module from a symbiotic module 1
Computer readable program code means for performing two integrity checks, wherein said symbiotic module comprises:
Said computer readable program code means constituting a separate module from said PSP module, and computer readable program code means for causing a computer to cross check said symbiotic module from code in said PSP module, The computer readable program wherein inspection by the symbiotic module and cross-check by the PSP module together monitor the integrity of at least one of the executable module and the PSP module.
An article of manufacture comprising said computer usable medium, comprising: code means. (32) A computer program product comprising a computer usable medium having therein computer readable program code means for use in providing a protection service function to an executable module loaded in a memory, the computer program product comprising: The protection service function is subdivided into a first component and a second component;
The computer readable program in a program product;
Code means for causing a computer to perform the first component of the protection service function in a first executable module; and code processing means for causing the computer to execute the protection service in a second executable module. Computer readable program code means for causing said second component of function to be implemented;
An article of manufacture comprising the computer program product, wherein the first executable module and the second executable module constitute another executable module. (33) A computer program product comprising a computer usable medium having therein computer readable program code means for use in providing a protection service function to a caller executable module, said computer program product comprising: The computer readable program code means in the product is a computer readable program code means for causing a computer to provide the protection service function subdivided into a first component and a second component; The first component is implemented in a first executable module;
The computer readable program code means, wherein components are embodied in a second executable module, wherein the first executable module and the second executable module constitute another executable module; (I) computer-readable program code means for performing processing of an executable module and integrity checking of the second component; and, when the integrity of the second component is verified, The second
Computer readable program code means for causing a computer to initiate the second executable module to execute a component; and causing the computer to execute the second executable module upon initiation of the second executable module. To perform the integrity check of the first component, process the second executable module when the integrity of the first component is verified, and report the result to the first executable module or the caller. Computer readable program code means for completing the protection service function by returning to any of the executable modules.
【図1】本発明の原理による耐タンパ検査を使用するコ
ンピュータ・システム・ハードウェアの1実施形態のブ
ロック図である。FIG. 1 is a block diagram of one embodiment of computer system hardware that uses tamper-resistant testing in accordance with the principles of the present invention.
【図2】本発明の原理によるモニタ/完全性チェッカ2
04に両方がインターフェースされる、ディジタル・ビ
デオ・ディスク・プレイヤ用のデスクランブラなどの保
護サービス・プロバイダ210とインターフェースす
る、アプリケーションGUI201、アプリケーション
DLL202および203がアプリケーションに含まれ
る、システムの概要を示す図である。FIG. 2 shows a monitor / integrity checker 2 according to the principles of the present invention.
FIG. 4 shows a system overview in which the application includes an application GUI 201, application DLLs 202 and 203, interfacing with a protection service provider 210, such as a descrambler for a digital video disc player, both of which are interfaced to the system 04; is there.
【図3】本発明の原理による共生コードの完全性クロス
チェックのためにPSPモジュールによって実施される
コードの1実施形態の流れ図である。FIG. 3 is a flow diagram of one embodiment of a code implemented by a PSP module for integrity checking of symbiotic codes in accordance with the principles of the present invention.
【図4】本発明の原理に従って共生モジュールによって
PSPモジュールに対して実行される完全性検査の1実
施形態の流れ図である。FIG. 4 is a flowchart of one embodiment of an integrity check performed on a PSP module by a symbiotic module in accordance with the principles of the present invention.
【図5】本発明の原理による、PSPモジュールと共生
コードの間の保護サービス機能の共用と、PSPモジュ
ールと共生コードの間の完全性検査および完全性クロス
チェックの1実施形態の流れ図である。FIG. 5 is a flowchart of one embodiment of sharing a protection service function between a PSP module and a symbiotic code, and integrity checking and integrity cross-checking between the PSP module and the symbiotic code, in accordance with the principles of the present invention.
【図6】本発明の原理による、1実施形態で、保護サー
ビス・プロバイダ・モジュールおよび共生コード内の別
々の実行のスレッドで実施される、第1構成要素と第2
構成要素への保護サービス・プロバイダの分割を表す図
である。FIG. 6 illustrates, in one embodiment, a first component and a second component implemented in separate threads of execution within a protected service provider module and symbiotic code in accordance with the principles of the present invention.
FIG. 4 illustrates the division of a protection service provider into components.
【図7】本発明の原理による、保護サービス・プロバイ
ダ・モジュールと共生コードの間の保護サービス機能の
共用実施と、その間の完全性検査および完全性クロスチ
ェックのもう1つの実施形態の流れ図である。FIG. 7 is a flow diagram of another embodiment of a shared implementation of a protection service function between a protection service provider module and a symbiotic code, and integrity checking and integrity checking therebetween, in accordance with the principles of the present invention. .
100 コンピュータ・システム 102 アプリケーション・プログラム 104 コンピュータ・プラットホーム 105 コンパイラ 106 オプティマイザ 108 オペレーティング・システム 110 マイクロ命令コード 112 ハードウェア・ユニット 114 ランダム・アクセス・メモリ(RAM) 116 中央処理装置(CPU) 118 データ記憶装置 200 アプリケーション・プログラム 201 アプリケーション・グラフィカル・ユーザ・イ
ンターフェース(GUI) 202 アプリケーション動的リンク・ライブラリ(D
LL) 203 アプリケーションDLL 204 モニタ/完全性チェッカ 210 保護サービス・プロバイダ 500 主保護サービス・プロバイダ・モジュール 510 第2保護サービス・プロバイダ・モジュールREFERENCE SIGNS LIST 100 computer system 102 application program 104 computer platform 105 compiler 106 optimizer 108 operating system 110 micro-instruction code 112 hardware unit 114 random access memory (RAM) 116 central processing unit (CPU) 118 data storage device 200 Application program 201 Application graphical user interface (GUI) 202 Application dynamic link library (D
LL) 203 application DLL 204 monitor / integrity checker 210 protected service provider 500 primary protection service provider module 510 second protection service provider module
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・エドワード・フェトコビッチ アメリカ合衆国13760 ニューヨーク州エ ンディコット リバー・テラス427 アパ ートメント エフ−3 (72)発明者 ジョージ・ウィリアム・ウィルヘルム・ジ ュニア アメリカ合衆国13760−1611 ニューヨー ク州エンドウェル カタリナ・ブルバード 705 ──────────────────────────────────────────────────続 き Continued on the front page (72) Inventor John Edward Fetkovich USA 13760 Endicott, NY River Terrace 427 Apartment F-3 (72) Inventor George William Wilhelm Jr. United States 13760-1611 New York Endwell, Quarter Catalina Boulevard 705
Claims (33)
ービス・プロバイダ(PSP)モジュールのうちの少な
くとも1つの完全性を監視するための方法であって、前
記PSPモジュールが、前記実行可能モジュールに保護
サービス機能を提供し、 (i)前記PSPモジュールおよび前記実行可能モジュ
ールのうちの少なくとも1つの完全性を検査するため
の、前記PSPモジュールと別のモジュールを構成する
共生モジュールを提供するステップと、 (ii)前記PSPモジュール内で前記共生モジュール
をクロスチェックするためのコードを提供するステップ
であって、前記共生モジュールによる検査および前記P
SPモジュールによるクロスチェックが、一緒に、前記
実行可能モジュールおよび前記PSPモジュールのうち
の少なくとも1つの完全性を監視する、前記コードを提
供するステップとを含む方法。1. A method for monitoring the integrity of at least one of an executable module and an associated protection service provider (PSP) module, the PSP module providing a protection service function to the executable module. (I) providing a symbiotic module constituting another module with the PSP module for checking the integrity of the PSP module and at least one of the executable modules; and (ii) Providing code for cross-checking the symbiotic module within the PSP module;
Providing the code, wherein a cross check by an SP module together monitors the integrity of at least one of the executable module and the PSP module.
機能が、第1構成要素および第2構成要素に分割され、
前記方法がさらに、前記保護サービス機能の前記第1構
成要素を前記PSPモジュール内で実施するステップ
と、前記保護サービス機能の前記第2構成要素を前記共
生モジュール内で実施するステップとを含む、請求項1
に記載の方法。2. The protection service function of the PSP module is divided into a first component and a second component,
The method further comprises implementing the first component of the protection service function in the PSP module and implementing the second component of the protection service function in the symbiosis module. Item 1
The method described in.
PSPモジュールによって前記実行可能モジュールに提
供される前記保護サービス機能を使用不能にする、請求
項2に記載の方法。3. The method of claim 2, wherein disabling the symbiotic module disables the protection service function provided by the PSP module to the executable module.
ュールによって前記実行可能モジュールに提供される複
数の機能のうちの1つの機能を含み、前記方法がさら
に、前記複数の機能のうちの少なくともいくつかの機能
のそれぞれを第1構成要素および第2構成要素に再分割
するステップと、前記少なくともいくつかの機能のそれ
ぞれについて、前記第1構成要素を前記PSPモジュー
ル内で実施し、前記第2構成要素を前記共生モジュール
内で実施するステップとを含む、請求項1に記載の方
法。4. The method of claim 1, wherein the protection service function comprises one of a plurality of functions provided by the PSP module to the executable module, and the method further comprises at least some of the plurality of functions. Subdividing each of the functions into a first component and a second component; and for each of the at least some functions, implementing the first component in the PSP module; Performing in the symbiotic module.
プが、前記PSPモジュールのロードと独立に前記共生
モジュールをロードするステップを含む、請求項1に記
載の方法。5. The method of claim 1, wherein providing the symbiotic module comprises loading the symbiotic module independently of loading the PSP module.
処理され、前記共生モジュールをロードする前記ステッ
プが、前記システムの初期設定時に前記共生モジュール
をロードするステップと、その後の、前記実行可能モジ
ュールによって要求される前記保護サービス機能と同一
期間に前記PSPモジュールをロードするステップとを
含む、請求項5に記載の方法。6. The executable module is processed in a system, and the step of loading the symbiotic module comprises the steps of loading the symbiotic module at initialization of the system, followed by the executable module. Loading the PSP module during the same time period as the required protection service function.
行可能モジュールの完全性を監視するためのコードを含
む、請求項1に記載の方法。7. The method of claim 1, wherein said PSP module further comprises code for monitoring the integrity of said executable module.
に保護サービス機能を提供する方法であって、 前記保護サービス機能を第1構成要素および第2構成要
素に再分割するステップと、 前記保護サービス機能の前記第1構成要素を第1実行可
能モジュール内で実施するステップと、 前記保護サービス機能の前記第2構成要素を第2実行可
能モジュール内で実施するステップとを含み、前記第1
実行可能モジュールおよび前記第2実行可能モジュール
が、別々の実行可能モジュールを構成する方法。8. A method for providing a protection service function to an executable module loaded in a memory, the method further comprising: subdividing the protection service function into a first component and a second component; Implementing the first component of the protection service function in a second executable module, and implementing the second component of the protection service function in a second executable module.
A method wherein the executable module and the second executable module constitute separate executable modules.
ビス・プロバイダ・モジュールを含み、前記第2実行可
能モジュールが、共生モジュールを含み、前記共生モジ
ュールが、前記保護サービス・プロバイダ・モジュール
のロードと別にロードされる、請求項8に記載の方法。9. The first executable module includes a protected service provider module, the second executable module includes a symbiotic module, and the symbiotic module loads the protected service provider module. 9. The method of claim 8, wherein the method is separately loaded.
ためのコードを前記保護サービス・プロバイダ・モジュ
ールに統合化するステップと、前記保護サービス・プロ
バイダ・モジュールの完全性を検査するためのコードを
前記共生モジュールに統合化するステップとをさらに含
む、請求項9に記載の方法。10. Integrating code for checking the integrity of the symbiotic module with the protection service provider module, and providing code for checking the integrity of the protection service provider module to the protection service provider module. Integrating into a symbiotic module.
れる時にロードされるデバイス・ドライバとして前記共
生モジュールを導入するステップをさらに含み、前記オ
ペレーティング・システムが、前記実行可能モジュール
の実行を監督する、請求項10に記載の方法。11. The method of claim 10, further comprising: introducing the symbiotic module as a device driver that is loaded when an operating system is booted, wherein the operating system oversees execution of the executable module. The method described in.
1実行可能モジュールに結果を供給し、前記第1実行可
能モジュールが、前記実行可能モジュールに前記保護サ
ービス機能を提供する、請求項8に記載の方法。12. The method according to claim 8, wherein the second executable module supplies a result to the first executable module, and the first executable module provides the protection service function to the executable module. The described method.
ビス機能を提供するための方法であって、 第1構成要素および第2構成要素に再分割された前記保
護サービス機能を提供するステップであって、前記第1
構成要素が第1実行可能モジュール内で実施され、前記
第2構成要素が第2実行可能モジュール内で実施され、
前記第1実行可能モジュールおよび前記第2実行可能モ
ジュールが、別々の実行可能モジュールである、前記提
供するステップと、 前記第1実行可能モジュールを処理し、前記第2構成要
素の完全性を検査するステップと、 前記第2構成要素の完全性が検証された時に、前記保護
サービス機能の前記第2構成要素を実行するために前記
第2実行可能モジュールを開始するステップと、 前記第2実行可能モジュールを開始する時に、前記第2
実行可能モジュールから前記第1構成要素の完全性を検
査し、前記第1構成要素の完全性が検証された時に、前
記第2実行可能モジュールを処理し、前記第1実行可能
モジュールまたは前記呼出し元実行可能モジュールのい
ずれかに結果を返すことによって、前記保護サービス機
能を完了するステップとを含む方法。13. A method for providing a protection service function to a caller executable module, the method comprising: providing the protection service function subdivided into a first component and a second component. The first
The component is implemented in a first executable module, the second component is implemented in a second executable module,
The providing, wherein the first executable module and the second executable module are separate executable modules; processing the first executable module; and checking the integrity of the second component. Starting the second executable module to execute the second component of the protection service function when the integrity of the second component is verified; and the second executable module. At the start of the second
Checking the integrity of the first component from an executable module, and processing the second executable module when the integrity of the first component is verified, the first executable module or the caller Completing the protection service function by returning a result to any of the executable modules.
敗する場合に、それに応答して防衛処置を行い、前記第
1構成要素が前記完全性検査に失敗する場合に、それに
応答して防衛処置を行う、請求項13に記載の方法。14. If the second component fails the integrity check, take defense action in response thereto, and if the first component fails the integrity check, respond in response to the integrity check. 14. The method of claim 13, wherein a defensive action is performed.
サービス・プロバイダ(PSP)モジュールのうちの少
なくとも1つの完全性を監視するためのシステムであっ
て、前記PSPモジュールが、前記実行可能モジュール
に保護サービス機能を提供し、 前記PSPモジュールおよび前記実行可能モジュールの
うちの少なくとも1つの完全性を検査するための、前記
PSPモジュールと別のモジュールを構成する共生モジ
ュールを提供するための手段と、 前記PSPモジュール内で前記共生モジュールをクロス
チェックするためのコードを提供するための手段であっ
て、前記共生モジュールによる検査および前記PSPモ
ジュールによるクロスチェックが、一緒に、前記実行可
能モジュールおよび前記PSPモジュールのうちの少な
くとも1つの完全性を監視する、前記手段とを含むシス
テム。15. A system for monitoring the integrity of at least one of an executable module and an associated protection service provider (PSP) module, said PSP module providing a protection service function to said executable module. Means for providing a symbiotic module that constitutes another module with the PSP module for checking the integrity of at least one of the PSP module and the executable module; and within the PSP module. Means for providing a code for cross-checking said symbiotic module with the inspection by the symbiotic module and the cross-check by the PSP module together with at least one of the executable module and the PSP module. One of monitoring the integrity of a system comprising said means.
ス機能が、第1構成要素および第2構成要素に分割さ
れ、前記システムがさらに、前記保護サービス機能の前
記第1構成要素を前記PSPモジュール内で実施するた
めの手段と、前記保護サービス機能の前記第2構成要素
を前記共生モジュール内で実施するための手段とを含
む、請求項15に記載のシステム。16. The protection service function of the PSP module is divided into a first component and a second component, and the system further implements the first component of the protection service function in the PSP module. The system of claim 15, comprising: means for performing the second component of the protection service function within the symbiotic module.
に、前記PSPモジュールによって前記実行可能モジュ
ールに提供される前記保護サービス機能を使用不能にす
るための手段をさらに含む、請求項16に記載のシステ
ム。17. The apparatus of claim 16, further comprising: means for disabling the protection service function provided by the PSP module to the executable module upon disabling the symbiotic module. system.
ジュールによって前記実行可能モジュールに提供される
複数の機能のうちの1つの機能を含み、前記複数の機能
のうちの少なくともいくつかの機能のそれぞれが、第1
構成要素および第2構成要素に再分割され、前記システ
ムがさらに、前記少なくともいくつかの機能のそれぞれ
について、前記第1構成要素を前記PSPモジュール内
で実施し、前記第2構成要素を前記共生モジュール内で
実施するための手段を含む、請求項15に記載のシステ
ム。18. The protection service function includes one of a plurality of functions provided by the PSP module to the executable module, wherein each of at least some of the plurality of functions is provided. , First
Subdivided into a component and a second component, wherein the system further implements, for each of the at least some functions, the first component in the PSP module and the second component in the symbiotic module. 16. The system of claim 15, including means for implementing within.
記手段が、前記PSPモジュールのロードと独立に前記
共生モジュールをロードするための手段を含む、請求項
15に記載のシステム。19. The system of claim 15, wherein said means for providing a symbiotic module includes means for loading said symbiotic module independently of loading said PSP module.
ィング・システムによって監督され、前記共生モジュー
ルをロードするための前記手段が、前記オペレーティン
グ・システムの初期設定時に前記共生モジュールをロー
ドするための手段と、その後に、前記実行可能モジュー
ルによって要求される前記保護サービス機能と同一期間
に前記PSPモジュールをロードするための手段とを含
む、請求項19に記載のシステム。20. The executable module is supervised by an operating system, and the means for loading the symbiotic module comprises: means for loading the symbiotic module during initialization of the operating system; 20. The system of claim 19, further comprising: means for loading the PSP module at the same time as the protection service function required by the executable module.
実行可能モジュールの完全性を監視するためのコードを
含む、請求項15に記載のシステム。21. The system of claim 15, wherein said PSP module further comprises code for monitoring the integrity of said executable module.
サービス・プロバイダ(PSP)モジュールのうちの少
なくとも1つの完全性を検査するためのシステムであっ
て、前記PSPモジュールが、前記実行可能モジュール
に保護サービス機能を提供し、 前記PSPモジュールおよび前記実行可能モジュールの
うちの少なくとも1つの完全性を検査するための共生モ
ジュールを実施するように適合された計算ユニットであ
って、前記共生モジュールが、前記PSPモジュールと
別のモジュールを構成する、前記計算ユニットを含み、 前記計算ユニットが、さらに、前記PSPモジュール内
で前記共生モジュールをクロスチェックするためのコー
ドを実施するように適合され、前記共生モジュールによ
る検査および前記PSPモジュールによるクロスチェッ
クが、一緒に、前記実行可能モジュールおよび前記PS
Pモジュールのうちの少なくとも1つの完全性を監視す
るシステム。22. A system for checking the integrity of at least one of an executable module and an associated protection service provider (PSP) module, said PSP module providing a protection service function to said executable module. A computing unit adapted to implement a symbiotic module for checking the integrity of the PSP module and at least one of the executable modules, wherein the symbiotic module comprises: The computing unit comprising another module, wherein the computing unit is further adapted to implement code for cross-checking the symbiotic module within the PSP module; By PSP module Crosscheck, together, the executable modules and the PS
A system for monitoring the integrity of at least one of the P modules.
モジュールに保護サービス機能を提供するための方法で
あって、前記保護サービス機能が、第1構成要素および
第2構成要素に再分割され、 前記保護サービス機能の前記第1構成要素を第1実行可
能モジュール内で実施するための手段と、 前記保護サービス機能の前記第2構成要素を第2実行可
能モジュール内で実施するための手段であって、前記第
1実行可能モジュールおよび前記第2実行可能モジュー
ルが、別々の実行可能モジュールを構成する、前記実施
するための手段とを含むシステム。23. A method for providing a protection service function to a caller executable loaded into a memory, the protection service function being subdivided into a first component and a second component, Means for implementing the first component of the protection service function in a first executable module, and means for implementing the second component of the protection service function in a second executable module. The first executable module and the second executable module constitute separate executable modules, and the means for performing.
ービス・プロバイダ・モジュールを含み、前記第2実行
可能モジュールが、共生モジュールを含み、前記共生モ
ジュールが、前記保護サービス・プロバイダ・モジュー
ルと別にロードされる、請求項23に記載のシステム。24. The first executable module includes a protected service provider module, the second executable module includes a symbiotic module, and the symbiotic module is loaded separately from the protected service provider module. 24. The system of claim 23, wherein:
ためのコードを前記保護サービス・プロバイダ・モジュ
ールに統合化するための手段と、前記保護サービス・プ
ロバイダ・モジュールの完全性を検査するためのコード
を前記共生モジュールに統合化するための手段とをさら
に含む、請求項24に記載のシステム。25. Means for integrating code for checking the integrity of the symbiotic module with the protection service provider module, and code for checking the integrity of the protection service provider module. Means for integrating the Symbiotic module into the symbiotic module.
れる時にロードされるデバイス・ドライバとして前記共
生モジュールを導入するための手段をさらに含み、前記
オペレーティング・システムが、前記実行可能モジュー
ルの実行を監督する、請求項25に記載のシステム。26. The apparatus of claim 26, further comprising means for implementing said symbiotic module as a device driver loaded when an operating system is booted, wherein said operating system oversees execution of said executable module. Item 29. The system according to Item 25.
1実行可能モジュールに結果を供給するための手段と、
前記第1実行可能モジュールから前記呼出し元実行可能
モジュールに前記保護サービス機能を提供するための手
段とをさらに含む、請求項23に記載のシステム。27. A means for providing a result from said second executable module to said first executable module;
Means for providing the protection service function from the first executable module to the caller executable module.
ルに保護サービス機能を提供するためのシステムであっ
て、前記保護サービス機能が、第1構成要素および第2
構成要素に再分割され、 前記保護サービス機能の前記第1構成要素を第1実行可
能モジュール内で実施するように適合された計算ユニッ
トを含み、 前記計算ユニットが、さらに、前記保護サービス機能の
前記第2構成要素を第2実行可能モジュール内で実施す
るように適合され、前記第1実行可能モジュールおよび
前記第2実行可能モジュールが、別の実行可能モジュー
ルを構成するシステム。28. A system for providing a protection service function to an executable module loaded in a memory, wherein the protection service function comprises a first component and a second component.
A computing unit subdivided into components and adapted to implement the first component of the protection service function in a first executable module, wherein the computation unit further comprises: A system adapted to implement a second component in a second executable module, wherein the first executable module and the second executable module constitute another executable module.
ビス機能を提供するためのシステムであって、 第1構成要素および第2構成要素に再分割された前記保
護サービス機能を提供するための手段であって、前記第
1構成要素が第1実行可能モジュール内で実施され、前
記第2構成要素が第2実行可能モジュール内で実施さ
れ、前記第1実行可能モジュールおよび前記第2実行可
能モジュールが別の実行可能モジュールである、前記提
供するための手段と、 前記第1実行可能モジュールを処理し、前記第2構成要
素の完全性を検査するための手段と、 前記第2構成要素の完全性が検証された時に、前記保護
サービス機能の前記第2構成要素を実行するために、前
記第2実行可能モジュールを開始するための手段と、 前記第2実行可能モジュールの開始時に、前記第2実行
可能モジュールから前記第1構成要素の完全性を検査
し、前記第1構成要素の完全性が検証された時に、前記
第2実行可能モジュールを処理し、前記第1実行可能モ
ジュールまたは前記呼出し元実行可能モジュールのいず
れかに結果を返すことによって、前記保護サービス機能
を完了するための手段とを含むシステム。29. A system for providing a protection service function to a caller executable module, the means for providing the protection service function subdivided into a first component and a second component. Wherein the first component is implemented in a first executable module, the second component is implemented in a second executable module, and the first executable module and the second executable module are separate Means for providing, being an executable module; means for processing the first executable module, for verifying the integrity of the second component; and verifying the integrity of the second component. Means for initiating the second executable module to execute the second component of the protection service function when executed, the second executable module Checking the integrity of the first component from the second executable module at the start of the rule, and processing the second executable module when the integrity of the first component is verified, Means for completing the protection service function by returning a result to either a first executable module or the calling executable module.
検査に失敗した場合に、防衛処置を行うための手段と、
前記第1構成要素が前記完全性検査に失敗した場合に、
防衛処置を行うための手段とをさらに含む、請求項29
に記載のシステム。30. Means for taking defense action if the second component fails the integrity check;
If the first component fails the integrity check,
Means for performing a defense action.
System.
サービス・プロバイダ(PSP)モジュールの完全性を
監視する際に使用するためのコンピュータ可読プログラ
ム・コード手段をその中に有するコンピュータ使用可能
媒体を含むコンピュータ・プログラム製品であって、前
記PSPモジュールが、前記実行可能モジュールに保護
サービス機能を提供し、前記コンピュータ・プログラム
製品内の前記コンピュータ可読プログラム・コード手段
が、 コンピュータに、共生モジュールから前記PSPモジュ
ールおよび前記実行可能モジュールのうちの少なくとも
1つの完全性検査を行わせるためのコンピュータ可読プ
ログラム・コード手段であって、前記共生モジュール
が、前記PSPモジュールと別のモジュールを構成す
る、前記コンピュータ可読プログラム・コード手段と、 コンピュータに、前記PSPモジュール内のコードから
前記共生モジュールのクロスチェックを行わせるための
コンピュータ可読プログラム・コード手段であって、前
記共生モジュールによる検査および前記PSPモジュー
ルによるクロスチェックが、一緒に、前記実行可能モジ
ュールおよび前記PSPモジュールのうちの少なくとも
1つの完全性を監視する、前記コンピュータ可読プログ
ラム・コード手段とを含む、前記コンピュータ使用可能
媒体を含む製造品。31. A computer comprising a computer usable medium having computer readable program code means therein for use in monitoring the integrity of an executable module and an associated Protection Service Provider (PSP) module. A program product, wherein the PSP module provides a protection service function to the executable module, and wherein the computer readable program code means in the computer program product comprises: Computer readable program code means for performing an integrity check of at least one of the executable modules, wherein the symbiotic module constitutes a separate module from the PSP module. Computer readable program code means for causing a computer to cross-check the symbiotic module from code in the PSP module, the computer readable program code means comprising: An article of manufacture comprising the computer usable medium, the computer readable program code means including a cross check together for monitoring the integrity of at least one of the executable module and the PSP module.
ルに保護サービス機能を提供する際に使用するためのコ
ンピュータ可読プログラム・コード手段をその中に有す
るコンピュータ使用可能媒体を含むコンピュータ・プロ
グラム製品であって、前記保護サービス機能が、第1構
成要素および第2構成要素に再分割され、前記コンピュ
ータ・プログラム製品内の前記コンピュータ可読プログ
ラム・コード手段が、 コンピュータに、第1実行可能モジュール内で前記保護
サービス機能の前記第1構成要素を実施させるためのコ
ンピュータ可読プログラム・コード手段と、 コンピュータに、第2実行可能モジュール内で前記保護
サービス機能の前記第2構成要素を実施させるためのコ
ンピュータ可読プログラム・コード手段とを含み、前記
第1実行可能モジュールおよび前記第2実行可能モジュ
ールが、別の実行可能モジュールを構成する、前記コン
ピュータ・プログラム製品を含む製造品。32. A computer program product including a computer usable medium having therein computer readable program code means for use in providing a protection service function to an executable module loaded in a memory. The protection service function is subdivided into a first component and a second component, and the computer readable program code means in the computer program product causes a computer to execute the protection service in a first executable module. Computer readable program code means for causing the first component of the function to be implemented; and computer readable program code for causing a computer to implement the second component of the protection service function in a second executable module. Means, the first Row possible module and the second executable module constitutes an alternative executable module, article of manufacture containing the computer program product.
ビス機能を提供する際に使用するためのコンピュータ可
読プログラム・コード手段をその中に有するコンピュー
タ使用可能媒体を含むコンピュータ・プログラム製品で
あって、前記コンピュータ・プログラム製品内の前記コ
ンピュータ可読プログラム・コード手段が、 コンピュータに、第1構成要素および第2構成要素に再
分割された前記保護サービス機能の提供を行わせるため
のコンピュータ可読プログラム・コード手段であって、
前記第1構成要素が第1実行可能モジュール内で実施さ
れ、前記第2構成要素が第2実行可能モジュール内で実
施され、前記第1実行可能モジュールおよび前記第2実
行可能モジュールが別の実行可能モジュールを構成す
る、前記コンピュータ可読プログラム・コード手段と、 コンピュータに、前記第1実行可能モジュールの処理
と、前記第2構成要素の完全性検査とを行わせるための
コンピュータ可読プログラム・コード手段と、 前記第2構成要素の完全性が検証された時に、前記保護
サービス機能の前記第2構成要素を実行するために、コ
ンピュータに前記第2実行可能モジュールの開始を行わ
せるためのコンピュータ可読プログラム・コード手段
と、 コンピュータに、前記第2実行可能モジュールの開始時
に、前記第2実行可能モジュールから前記第1構成要素
の完全性検査を行わせ、前記第1構成要素の完全性が検
証された時に、前記第2実行可能モジュールを処理し、
結果を前記第1実行可能モジュールまたは前記呼出し元
実行可能モジュールのいずれかに返すことによって、前
記保護サービス機能を完了させるための、コンピュータ
可読プログラム・コード手段とを含む、コンピュータ・
プログラム製品を含む製造品。33. A computer program product comprising a computer usable medium having therein computer readable program code means for use in providing a protection service function to a calling executable module, the computer program product comprising: The computer readable program code means in the program product is a computer readable program code means for causing a computer to provide the protection service function subdivided into a first component and a second component. hand,
The first component is implemented in a first executable module, the second component is implemented in a second executable module, and the first executable module and the second executable module are separate executable modules. A computer readable program code means for configuring a module; a computer readable program code means for causing a computer to perform the processing of the first executable module and the integrity check of the second component; Computer readable program code for causing a computer to initiate the second executable module to execute the second component of the protection service function when the integrity of the second component is verified. Means, at the start of the second executable module, the computer, the second executable module. To perform the integrity check of the first component from Lumpur, when the integrity of the first component is verified, processing said second executable module,
Computer readable program code means for completing the protection service function by returning a result to either the first executable module or the calling executable module.
Manufactured goods, including program products.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/352285 | 1999-07-13 | ||
| US09/352,285 US6874087B1 (en) | 1999-07-13 | 1999-07-13 | Integrity checking an executable module and associated protected service provider module |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001051742A true JP2001051742A (en) | 2001-02-23 |
| JP3657179B2 JP3657179B2 (en) | 2005-06-08 |
Family
ID=23384525
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000208897A Expired - Fee Related JP3657179B2 (en) | 1999-07-13 | 2000-07-10 | Method and system for monitoring the integrity of executable modules and associated protection service provider modules |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6874087B1 (en) |
| JP (1) | JP3657179B2 (en) |
| KR (1) | KR100368947B1 (en) |
Cited By (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003271255A (en) * | 2002-03-12 | 2003-09-26 | Ntt Comware Corp | Execution program creation system, execution program sales method, program for execution program creation system, recording medium for execution program creation system |
| JP2003330560A (en) * | 2002-05-15 | 2003-11-21 | Microsoft Corp | Method and medium for software application protection using digital rights management (drm) system |
| JP2006106956A (en) * | 2004-10-01 | 2006-04-20 | Fujitsu Ltd | Software falsification detection device and falsification detection method |
| JP2008525892A (en) * | 2004-12-23 | 2008-07-17 | マイクロソフト コーポレーション | Method and system for locking the TPM always "on" using a monitor |
| JP2009512078A (en) * | 2005-10-19 | 2009-03-19 | インテル・コーポレーション | Inter-thread synchronous communication technology |
| WO2009118800A1 (en) * | 2008-03-28 | 2009-10-01 | パナソニック株式会社 | Software updating apparatus, software updating system, alteration verification method and alteration verification program |
| WO2009118801A1 (en) * | 2008-03-28 | 2009-10-01 | パナソニック株式会社 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
| JP2010152877A (en) * | 2008-11-26 | 2010-07-08 | Panasonic Corp | Software update system, management device, recording medium and integrated circuit |
| JP2011048850A (en) * | 2010-10-29 | 2011-03-10 | Fujitsu Ltd | Software tampering prevention device and software tampering prevention method |
| US8176564B2 (en) | 2004-11-15 | 2012-05-08 | Microsoft Corporation | Special PC mode entered upon detection of undesired state |
| US8336085B2 (en) | 2004-11-15 | 2012-12-18 | Microsoft Corporation | Tuning product policy using observed evidence of customer behavior |
| US8347078B2 (en) | 2004-10-18 | 2013-01-01 | Microsoft Corporation | Device certificate individualization |
| US8353046B2 (en) | 2005-06-08 | 2013-01-08 | Microsoft Corporation | System and method for delivery of a modular operating system |
| US8438645B2 (en) | 2005-04-27 | 2013-05-07 | Microsoft Corporation | Secure clock with grace periods |
| US8464348B2 (en) | 2004-11-15 | 2013-06-11 | Microsoft Corporation | Isolated computing environment anchored into CPU and motherboard |
| US9189605B2 (en) | 2005-04-22 | 2015-11-17 | Microsoft Technology Licensing, Llc | Protected computing environment |
| US9363481B2 (en) | 2005-04-22 | 2016-06-07 | Microsoft Technology Licensing, Llc | Protected media pipeline |
| US9436804B2 (en) | 2005-04-22 | 2016-09-06 | Microsoft Technology Licensing, Llc | Establishing a unique session key using a hardware functionality scan |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
| US6973577B1 (en) * | 2000-05-26 | 2005-12-06 | Mcafee, Inc. | System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state |
| US8001594B2 (en) * | 2001-07-30 | 2011-08-16 | Ipass, Inc. | Monitoring computer network security enforcement |
| IL160341A0 (en) * | 2001-08-13 | 2004-07-25 | Qualcomm Inc | Using permissions to allocate device resources to an application |
| US20030115479A1 (en) * | 2001-12-14 | 2003-06-19 | Jonathan Edwards | Method and system for detecting computer malwares by scan of process memory after process initialization |
| EP1338939A1 (en) * | 2002-02-22 | 2003-08-27 | Hewlett-Packard Company | State validation device for a computer |
| US7181603B2 (en) * | 2002-03-12 | 2007-02-20 | Intel Corporation | Method of secure function loading |
| US20050283826A1 (en) * | 2004-06-22 | 2005-12-22 | Sun Microsystems, Inc. | Systems and methods for performing secure communications between an authorized computing platform and a hardware component |
| JP4048382B1 (en) | 2006-09-01 | 2008-02-20 | 富士ゼロックス株式会社 | Information processing system and program |
| US20080184041A1 (en) * | 2007-01-31 | 2008-07-31 | Microsoft Corporation | Graph-Based Tamper Resistance Modeling For Software Protection |
| US20080295174A1 (en) * | 2007-03-05 | 2008-11-27 | Andrea Robinson Fahmy | Method and System for Preventing Unauthorized Access and Distribution of Digital Data |
| US8266691B2 (en) * | 2007-04-13 | 2012-09-11 | Microsoft Corporation | Renewable integrity rooted system |
| US8149085B2 (en) * | 2008-05-02 | 2012-04-03 | Research In Motion Limited | Coordinated security systems and methods for an electronic device |
| US10055251B1 (en) | 2009-04-22 | 2018-08-21 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for injecting code into embedded devices |
| US9392017B2 (en) * | 2010-04-22 | 2016-07-12 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for inhibiting attacks on embedded devices |
| US20130174214A1 (en) * | 2011-12-29 | 2013-07-04 | Imation Corp. | Management Tracking Agent for Removable Media |
| WO2013101894A2 (en) | 2011-12-29 | 2013-07-04 | Imation Corp. | Secure user authentication for bluetooth enabled computer storage devices |
| KR102132501B1 (en) | 2012-02-15 | 2020-07-09 | 더 트러스티이스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 | Methods, systems, and media for inhibiting attacks on embedded devices |
| CN103116714A (en) * | 2013-03-01 | 2013-05-22 | 中标软件有限公司 | Double-process protection method for executable files of Windows platform |
| US10657262B1 (en) | 2014-09-28 | 2020-05-19 | Red Balloon Security, Inc. | Method and apparatus for securing embedded device firmware |
| WO2016118216A2 (en) | 2014-11-06 | 2016-07-28 | Intertrust Technologies Corporation | Secure application distribution systems and methods |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5421006A (en) * | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
| US5440723A (en) | 1993-01-19 | 1995-08-08 | International Business Machines Corporation | Automatic immune system for computers and computer networks |
| US5398196A (en) | 1993-07-29 | 1995-03-14 | Chambers; David A. | Method and apparatus for detection of computer viruses |
| US5572590A (en) | 1994-04-12 | 1996-11-05 | International Business Machines Corporation | Discrimination of malicious changes to digital information using multiple signatures |
| US5765030A (en) | 1996-07-19 | 1998-06-09 | Symantec Corp | Processor emulator module having a variable pre-fetch queue size for program execution |
| US5696822A (en) | 1995-09-28 | 1997-12-09 | Symantec Corporation | Polymorphic virus detection module |
| US5826013A (en) | 1995-09-28 | 1998-10-20 | Symantec Corporation | Polymorphic virus detection module |
| JP3272283B2 (en) * | 1997-11-14 | 2002-04-08 | 富士通株式会社 | Electronic data storage device |
| 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 |
| US6363486B1 (en) * | 1998-06-05 | 2002-03-26 | Intel Corporation | Method of controlling usage of software components |
| US6105137A (en) * | 1998-07-02 | 2000-08-15 | Intel Corporation | Method and apparatus for integrity verification, authentication, and secure linkage of software modules |
| JP3056732B1 (en) | 1999-04-09 | 2000-06-26 | コナミ株式会社 | Computer system, computer program execution method, and computer program recording medium |
-
1999
- 1999-07-13 US US09/352,285 patent/US6874087B1/en not_active Expired - Fee Related
-
2000
- 2000-07-03 KR KR10-2000-0037776A patent/KR100368947B1/en not_active Expired - Fee Related
- 2000-07-10 JP JP2000208897A patent/JP3657179B2/en not_active Expired - Fee Related
Cited By (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003271255A (en) * | 2002-03-12 | 2003-09-26 | Ntt Comware Corp | Execution program creation system, execution program sales method, program for execution program creation system, recording medium for execution program creation system |
| US7680743B2 (en) | 2002-05-15 | 2010-03-16 | Microsoft Corporation | Software application protection by way of a digital rights management (DRM) system |
| JP2003330560A (en) * | 2002-05-15 | 2003-11-21 | Microsoft Corp | Method and medium for software application protection using digital rights management (drm) system |
| JP2006106956A (en) * | 2004-10-01 | 2006-04-20 | Fujitsu Ltd | Software falsification detection device and falsification detection method |
| US9336359B2 (en) | 2004-10-18 | 2016-05-10 | Microsoft Technology Licensing, Llc | Device certificate individualization |
| US8347078B2 (en) | 2004-10-18 | 2013-01-01 | Microsoft Corporation | Device certificate individualization |
| US8464348B2 (en) | 2004-11-15 | 2013-06-11 | Microsoft Corporation | Isolated computing environment anchored into CPU and motherboard |
| US9224168B2 (en) | 2004-11-15 | 2015-12-29 | Microsoft Technology Licensing, Llc | Tuning product policy using observed evidence of customer behavior |
| US8336085B2 (en) | 2004-11-15 | 2012-12-18 | Microsoft Corporation | Tuning product policy using observed evidence of customer behavior |
| US8176564B2 (en) | 2004-11-15 | 2012-05-08 | Microsoft Corporation | Special PC mode entered upon detection of undesired state |
| JP2008525892A (en) * | 2004-12-23 | 2008-07-17 | マイクロソフト コーポレーション | Method and system for locking the TPM always "on" using a monitor |
| US9436804B2 (en) | 2005-04-22 | 2016-09-06 | Microsoft Technology Licensing, Llc | Establishing a unique session key using a hardware functionality scan |
| US9363481B2 (en) | 2005-04-22 | 2016-06-07 | Microsoft Technology Licensing, Llc | Protected media pipeline |
| US9189605B2 (en) | 2005-04-22 | 2015-11-17 | Microsoft Technology Licensing, Llc | Protected computing environment |
| US8438645B2 (en) | 2005-04-27 | 2013-05-07 | Microsoft Corporation | Secure clock with grace periods |
| US8353046B2 (en) | 2005-06-08 | 2013-01-08 | Microsoft Corporation | System and method for delivery of a modular operating system |
| JP2009512078A (en) * | 2005-10-19 | 2009-03-19 | インテル・コーポレーション | Inter-thread synchronous communication technology |
| JP2012234561A (en) * | 2005-10-19 | 2012-11-29 | Intel Corp | Device, system and method for synchronous communication between threads |
| WO2009118801A1 (en) * | 2008-03-28 | 2009-10-01 | パナソニック株式会社 | Software updating apparatus, software updating system, invalidation method, and invalidation program |
| US8464347B2 (en) | 2008-03-28 | 2013-06-11 | Panasonic Corporation | Software updating apparatus, software updating system, alteration verification method and alteration verification program |
| US8600896B2 (en) | 2008-03-28 | 2013-12-03 | Panasonic Corporation | Software updating apparatus, software updating system, invalidation method, and invalidation program |
| WO2009118800A1 (en) * | 2008-03-28 | 2009-10-01 | パナソニック株式会社 | Software updating apparatus, software updating system, alteration verification method and alteration verification program |
| JPWO2009118800A1 (en) * | 2008-03-28 | 2011-07-21 | パナソニック株式会社 | Software update device, software update system, falsification verification method, and falsification verification program |
| JPWO2009118801A1 (en) * | 2008-03-28 | 2011-07-21 | パナソニック株式会社 | Software update device, software update system, invalidation method, and invalidation program |
| US9594909B2 (en) | 2008-03-28 | 2017-03-14 | Panasonic Corporation | Software updating apparatus, software updating system, invalidation method, and invalidation program |
| JP2010152877A (en) * | 2008-11-26 | 2010-07-08 | Panasonic Corp | Software update system, management device, recording medium and integrated circuit |
| JP2011048850A (en) * | 2010-10-29 | 2011-03-10 | Fujitsu Ltd | Software tampering prevention device and software tampering prevention method |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3657179B2 (en) | 2005-06-08 |
| US6874087B1 (en) | 2005-03-29 |
| KR100368947B1 (en) | 2003-01-24 |
| KR20010029880A (en) | 2001-04-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2001051742A (en) | Method and device for inspecting completeness of executable module and relative protection service provider module | |
| US8271803B2 (en) | Anti-debugging protection of binaries with proxy code execution | |
| JP4870937B2 (en) | Method and system for limiting software updates | |
| US8239947B1 (en) | Method using kernel mode assistance for the detection and removal of threats which are actively preventing detection and removal from a running system | |
| AU2002305490B2 (en) | Systems and methods for the prevention of unauthorized use and manipulation of digital content | |
| US20200327236A1 (en) | Using a Threat Model to Monitor Host Execution in a Virtualized Environment | |
| CN113569244B (en) | Memory malicious code detection method based on processor tracking | |
| US8499349B1 (en) | Detection and restoration of files patched by malware | |
| US20090007100A1 (en) | Suspending a Running Operating System to Enable Security Scanning | |
| US20070016914A1 (en) | Kernel validation layer | |
| US20160357958A1 (en) | Computer System Security | |
| US7665139B1 (en) | Method and apparatus to detect and prevent malicious changes to tokens | |
| US11163645B2 (en) | Apparatus and method of control flow integrity enforcement utilizing boundary checking | |
| US20110209219A1 (en) | Protecting User Mode Processes From Improper Tampering or Termination | |
| WO2012173906A2 (en) | Threat level assessment of applications | |
| US8910283B1 (en) | Firmware-level security agent supporting operating system-level security in computer system | |
| KR20060046261A (en) | Method and system for single reactivation of software product license | |
| KR20180032566A (en) | Systems and methods for tracking malicious behavior across multiple software entities | |
| US20190138715A1 (en) | Post sandbox methods and systems for detecting and blocking zero-day exploits via api call validation | |
| US8887302B2 (en) | System, method and computer program product for utilizing code stored in a protected area of memory for securing an associated system | |
| US7591010B2 (en) | Method and system for separating rules of a security policy from detection criteria | |
| US11055416B2 (en) | Detecting vulnerabilities in applications during execution | |
| AU2006235058B2 (en) | System and method for foreign code detection | |
| JP2025508439A (en) | Anti-ransomware using machine learning | |
| El-Harake et al. | Blocking advertisements on android devices using monitoring techniques |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040115 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040316 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040607 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040713 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040825 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20041013 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041116 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041209 |
|
| 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: 20050301 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050308 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090318 Year of fee payment: 4 |
|
| LAPS | Cancellation because of no payment of annual fees |