JP3949107B2 - 「変数」原理により不正使用に対してソフトウェアを保護する方法 - Google Patents
「変数」原理により不正使用に対してソフトウェアを保護する方法 Download PDFInfo
- Publication number
- JP3949107B2 JP3949107B2 JP2003517758A JP2003517758A JP3949107B2 JP 3949107 B2 JP3949107 B2 JP 3949107B2 JP 2003517758 A JP2003517758 A JP 2003517758A JP 2003517758 A JP2003517758 A JP 2003517758A JP 3949107 B2 JP3949107 B2 JP 3949107B2
- Authority
- JP
- Japan
- Prior art keywords
- execution
- protected software
- unit
- software
- during
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims description 273
- 238000000034 method Methods 0.000 claims description 182
- 230000008569 process Effects 0.000 claims description 132
- 230000001419 dependent effect Effects 0.000 claims description 99
- 230000008859 change Effects 0.000 claims description 92
- 238000005259 measurement Methods 0.000 claims description 72
- 238000001514 detection method Methods 0.000 claims description 67
- 230000001960 triggered effect Effects 0.000 claims description 36
- 238000010276 construction Methods 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 description 60
- 238000000926 separation method Methods 0.000 description 17
- 230000014509 gene expression Effects 0.000 description 11
- 230000006872 improvement Effects 0.000 description 10
- 239000000047 product Substances 0.000 description 9
- 238000012544 monitoring process Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000009469 supplementation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Storage Device Security (AREA)
Description
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− バルナラブル・ソフトウェアのソース中で、
> バルナラブル・ソフトウェアの実行中に該バルナラブル・ソフトウェアの状態を部分的に規定する少なくとも1つの変数、
> および、少なくとも1つの選択された変数を含む少なくとも1つの部分、
を選択することによって、
− バルナラブル・ソフトウェアのソースの少なくとも1つの選択された部分を変更することにより、バルナラブル・ソフトウェアのソースから被保護ソフトウェアのソースを生成すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがブランクユニットに存在することにより該ブランクユニットがユニットに変換されるような変更である)によって、
− および、被保護ソフトウェアのソースから被保護ソフトウェアの第1オブジェクトパートを生成すること(前記第1オブジェクトパートは、被保護ソフトウェアの実行中に第1実行パートが現れるようなオブジェクトパートであり、第1実行パートはデータ処理システムで実行され、その少なくとも一部分は少なくとも変数または変数の少なくともコピーがユニットに存在することを考慮する)によって、
作成すること、
を含み、
→ 被保護ソフトウェアが実行される使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分が要求するたびに、ユニット内に存在する変数または変数のコピーを使用することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ およびユニットの不存在時に、ユニットに存在する変数または変数のコピーを使用することを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、
> 被保護ソフトウェアの実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得することが可能な少なくとも1つのアルゴリズム処理、
> および、少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分、
を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、
> 被保護ソフトウェアの実行中に、第1実行パートがデータ処理システムで実行され、第2実行パートが、処理手段も含むユニットで実行され、
> 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パートによって実行され、
> 少なくとも1つの選択されたアルゴリズム処理が、被保護ソフトウェアの実行中に、第2実行パートによって、いくつかの別個のステップ、すなわち:
◇ 少なくとも1つの変数の扱いをユニットに任せること、
◇ ユニットで、少なくとも1つの前記変数に対してアルゴリズム処理の機能を実行すること、
◇ および場合によって、ユニットがデータ処理システムに少なくとも1つの結果変数の扱いを任せること、
が現れるように分割され、
> 少なくとも1つの選択されたアルゴリズム処理に対して、被保護ソフトウェアの実行中に、各ステップコマンドが、第1実行パートによって実行され、第2実行パートによるステップの実行をユニットでトリガするように、ステップコマンドが定義され、
> および、ステップコマンドのシーケンスが被保護ソフトウェアの実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、選択されたシーケンスに従ってステップコマンドが実行されるようなもの、
> および、被保護ソフトウェアの第2オブジェクトパートであり、ブランクユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、第1実行パートによりトリガされたステップが実行されるようなもの、
を生成することによって、
変更すること、
・ および、ユニットを取得する目的で、ブランクユニットに第2オブジェクトパートをアップロードすること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれるステップコマンドが要求するたびに、ユニットで対応するステップを実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおけるステップの実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
→ 保護フェーズの間に、
・− 処理手段も含むユニットで実行され得る基本関数のセット、、
− および、前記基本関数のセットに対する基本コマンドのセットであり、データ処理システムで実行され、ユニットにおける基本関数の実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ 前記セットの基本関数を実行することができるユニットにブランクユニットを変換することが可能な活用手段を構築すること(前記基本関数の実行はデータ処理システムにおける基本コマンドの実行によってトリガされる)、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、
> 被保護ソフトウェアの実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得することが可能な少なくとも1つのアルゴリズム処理、
> および、少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分、
を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、
> 被保護ソフトウェアの実行中に、第1実行パートがデータ処理システムで実行され、第2実行パートがユニットで実行され、
> 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パートによって実行され、
> 少なくとも1つの選択されたアルゴリズム処理が、被保護ソフトウェアの実行中に、該アルゴリズム処理が基本関数を使用して第2実行パートによって実行されるように分割され、
> 少なくとも1つの選択されたアルゴリズム処理について、被保護ソフトウェアの実行中に、各基本コマンドが、第1実行パートによって実行され、ユニットで、第2実行パートによる基本関数の実行をトリガするように、基本コマンドが被保護ソフトウェアのソースに統合され、
> および、基本コマンドのシーケンスが被保護ソフトウェアの実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパート、該第1オブジェクトパートは、被保護ソフトウェアの実行中に、選択されたシーケンスに従って基本コマンドが実行されるようなオブジェクトパートである、
> および活用手段を含む被保護ソフトウェアの第2オブジェクトパートであり、ブランクユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、第1実行パートによりトリガされた基本関数が実行されるようなもの、
を生成することによって、
変更すること、
・ および、ユニットを取得する目的で、ブランクユニットに第2オブジェクトパートをアップロードすること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれる基本コマンドが要求するたびに、ユニットで対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける基本関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
→ 保護フェーズの間に、
・− ユニットで実行され得る基本関数のセット、
− および、前記基本関数のセットに対する基本コマンドのセットであり、データ処理システムで実行され、ユニットにおける基本関数の実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ ユニットが前記セットの基本関数を実行することを可能にする活用手段を構築すること(前記基本関数の実行はデータ処理システムにおける基本コマンドの実行によってトリガされる)、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、被保護ソフトウェアの実行中にアルゴリズム処理の機能を実行する少なくとも1つのステップを選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、
> 少なくとも1つの選択されたステップが、被保護ソフトウェアの実行中に、該ステップが基本関数を使用して第2実行パートによって実行されるように分割され、
> 少なくとも1つの選択されたステップについて、被保護ソフトウェアの実行中に、各基本コマンドが、第1実行パートによって実行され、ユニットで、第2実行パートによる基本関数の実行をトリガするように、基本コマンドが被保護ソフトウェアのソースに統合され、
> および基本コマンドのシーケンスが被保護ソフトウェアの実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、選択されたシーケンスに従って基本コマンドが実行されるようなもの、
> および、活用手段も含む被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、第1実行パートによりトリガされた基本関数が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれる基本コマンドが要求するたびに、ユニットで対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける基本関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
→ 保護フェーズの間に、
・− ユニットで少なくとも部分的に監視され得る少なくとも1つのソフトウェア実行特性、
− 少なくとも1つのソフトウェア実行特性が遵守すべき少なくとも1つの基準、
− ユニットで実施され、少なくとも1つのソフトウェア実行特性が少なくとも1つの関連する基準を遵守していないことを検出することが可能な検出手段、
− および、ユニットで実施され、少なくとも1つの基準が遵守されていない時、データ処理システムに通知し、および/または、ソフトウェアの実行を変更することが可能な強制手段、
を定義すること、
・ ユニットが検出手段および強制手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 監視され得るソフトウェア実行特性のうちから、監視すべき少なくとも1つのソフトウェア実行特性を選択することによって、
− 少なくとも1つの選択されたソフトウェア実行特性が遵守すべき少なくとも1つの基準を選択することによって、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択されたソフトウェア実行特性が監視されるべき基本関数を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された実行特性が第2実行パートによって監視され、基準が遵守されていないことが、データ処理システムへの通知、および/または、被保護ソフトウェアの実行の変更につながるような変更である)によって、
− および、検出手段および強制手段も実施する活用手段を含む被保護ソフトウェアの第2オブジェクトパートを生成すること(前記第2オブジェクトパートは、ユニットへのアップロード後、被保護ソフトウェアの実行中に、少なくとも1つの第1ソフトウェア実行特性が監視され、基準が遵守されていないことが、データ処理システムへの通知、および/または、被保護ソフトウェアの実行の変更につながるようなオブジェクトパートである)によって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、
− 被保護ソフトウェアのすべての変更された部分のすべての監視されている実行特性に対応するすべての基準が遵守されている限り、被保護ソフトウェアの前記部分が名目通り作動し、結果として被保護ソフトウェアが名目通り作動することを可能にすること、
− および、被保護ソフトウェアの一部分の監視されている実行特性に対応する少なくとも1つの基準が遵守されていない場合、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
→ 保護フェーズの間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェアの機能の使用状況の計測変数、
− 遵守すべき基準として、各計測変数に関連する少なくとも1つのしきい値、
− および、少なくとも1つの計測変数を更新することが可能な有効化手段、
を定義すること、
・ ユニットが有効化手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の少なくとも1つの計測変数を選択することによって、
−> 計測変数を使用して使用が監視され得る被保護ソフトウェアの少なくとも1つの機能、
> 前記機能の使用状況を定量化するために使用される少なくとも1つの計測変数、
> 前記機能の使用限度に対応する選択された計測変数に関連する少なくとも1つのしきい値、
> および、前記機能の使用状況に依存する選択された計測変数の少なくとも1つの更新方法、
を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、計測変数が前記機能の使用状況に依存する第2実行パートによって実現され、少なくとも1つのしきい値超過が考慮されるような変更である)によって、
を変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、そして少なくとも1つの使用限度に対応する少なくとも1つのしきい値超過が検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
→ 保護フェーズの間に、
・− 少なくとも1つの計測変数について、いくつかの関連するしきい値、
− および、前記しきい値のそれぞれに対応する相異なる強制手段、
を定義すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、機能の相異なる使用限度に対応するいくつかのしきい値が関連づけられなければならない少なくとも1つの選択された計測変数を選択することによって、
− 選択された計測変数に関連する少なくとも2つのしきい値を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、種々のしきい値の超過が第2実行パートによって別様に考慮されるような変更である)によって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、
− 第1しきい値の超過が検出された場合、被保護ソフトウェアに対して、対応する機能をそれ以上使用しないように命じること、
− 第2しきい値の超過が検出された場合、被保護ソフトウェアの対応する機能、および/または、少なくとも一部分を無効にすること、
を含む。
→ 保護フェーズの間に、
・ 計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1つの追加使用を認めることが可能な補充手段を定義すること、
・ ユニットが補充手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの追加使用を認めることができなければならない機能の使用を制限することが可能な少なくとも1つの選択された計測変数を選択することによって、
− および、少なくとも1つの選択された部分を変更すること(この変更は、補充フェーズと呼ばれるフェーズの間、選択された計測変数に対応する少なくとも1つの機能の少なくとも1つの追加使用が認められるような変更である)によって、
変更すること、
を含み、
→ 補充フェーズの間に、
・機能の少なくとも1つの追加使用を可能にするために、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連するしきい値を再有効化すること、
を含む。
→ 保護フェーズの間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェア使用状況プロファイル、
− および、遵守すべき基準として、少なくとも1つのソフトウェア実行特徴、
を定義すること、
・ および、被保護ソフトウェアを、
− 少なくとも1つのソフトウェア使用状況プロファイルを監視することをソフトウェア実行特性として選択することによって、
− 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない少なくとも1つの実行特徴を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、第2実行パートがすべての選択された実行特徴を遵守しなければならないような変更である)によって、
変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、そして少なくとも1つの実行特徴が遵守されていないことが検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
→ 保護フェーズの間に、
・− ユニットで実行され得る命令のセット、
− 前記命令セットに対する命令コマンドのセットであり、データ処理システムで実行され、ユニットで命令の実行をトリガし得る前記命令コマンドのセット、
− 使用状況プロファイルとして、命令の連鎖、
− 実行特徴として、命令の実行に対して期待される連鎖、
− 検出手段として、命令の連鎖が期待されるものに対応しないことを検出することが可能な手段、
− および、強制手段として、命令の連鎖が期待されるものに対応しない場合にデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更することが可能な手段、
を定義すること、
・ ユニットが命令セットの命令を実行することも可能にする活用手段を構築すること(該命令の実行はデータ処理システムにおける命令コマンドの実行によりトリガされる)、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を、
> 基本関数を命令に変換することによって、
> 命令の少なくとも一部分がユニットにおけるそれらの実行中に遵守しなければならない連鎖を指定することによって、
> および、基本コマンドを、使用される命令に対応する命令コマンドに変換することによって、
変更することによって、
変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、ユニットで実行される命令の連鎖が期待されるものに対応しないことが検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
→ 保護フェーズの間に、
・− 命令セットとして、少なくとも一部分の命令がレジスタと連携し、結果を返す目的で少なくとも1つのオペランドを使用する命令セット、
− レジスタと連携する少なくとも一部分の命令について、
> 命令の機能を定義するパート、 > および、命令の実行に対する期待される連鎖を定義するパート、
(前記パートは、
◇ 命令の識別フィールド、
◇ および、命令の各オペランドごとに、
* フラグフィールド、
* および、オペランドの期待される識別フィールド、
に対応するビットフィールドを含むパート)、
− 活用手段に属し命令セットによって使用される各レジスタごとに、該レジスタ内にその結果を返した最後の命令の識別が自動的に記憶される生成識別フィールド、
− 検出手段として、命令の実行中に、各オペランドごとに、フラグフィールドが要求する時に、該オペランドによって使用されるレジスタに対応する生成識別フィールドと、該オペランドの出所の期待される識別フィールドとの等値性をチェックすることが可能な手段、
− および、強制手段として、チェックされた等値性の少なくとも1つが偽である場合に、命令の結果を変更することが可能な手段、
を定義すること、
を含む。
→ 保護フェーズの間に、
・− トリガコマンドとして、基本コマンドまたは命令コマンド、
− 従属関数として、基本関数または命令、
− オーダーとして、データ処理システムによってユニットへ送信される情報に少なくとも部分的に対応し、対応する従属関数の実行をトリガするようなトリガコマンドに対する少なくとも1つの引数、
− リネームされたオーダーを有するトリガコマンドを取得するように、オーダーをリネームすることが可能なオーダーをリネームする方法、
− および、使用フェーズの間にユニットで使用されるように設計され、リネームされたオーダーから実行すべき従属関数を復元することが可能な復元手段、
を定義すること、
・ ユニットが復元手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中でトリガコマンドを選択することによって、
− 対応する従属関数の識別を隠蔽するように、選択されたトリガコマンドのオーダーをリネームすることによって被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更することによって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、リネームされたオーダーを有するトリガコマンドが実行されるようなもの、
> および、復元手段も実施する活用手段を含む被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、その実行が第1実行パートによりトリガされる従属関数の識別が第2実行パートによって復元され、従属関数が第2実行パートによって実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれるリネームされたオーダーを有するトリガコマンドが要求するたびに、対応する従属関数の識別をユニットで復元し、該部分が正しく実行されることにより、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける従属関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
→ 保護フェーズの間に、
・ 少なくとも1つの従属関数について、アルゴリズム的に等価であるが、そのリネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群を定義すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、リネームされたオーダーを有する少なくとも1つのトリガコマンドを選択することによって、
− および、リネームされたオーダーを有する1つの選択されたトリガコマンドの少なくともリネームされたオーダーを、同じ群の従属関数をトリガする別のリネームされたオーダーと置換することにより、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更することによって、
変更すること、
を含む。
→ 保護フェーズの間に、少なくとも1つの従属関数について、アルゴリズム的に等価な従属関数群を、
− ユニットで実行すべき従属関数の機能パートを定義する情報にノイズフィールドを連結することによって、
− または、命令の識別フィールドおよびオペランドの期待される識別フィールドを使用することによって、
定義すること、
を含む。
→ 保護フェーズの間に、
・− オーダーをリネームする方法として、オーダーを暗号化する暗号化方法、
− および、復元手段として、リネームされたオーダーを復号化することによりユニットで実行すべき従属関数の識別を復元する復号化方法を実施する手段、
を定義すること、
を含む。
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択されたアルゴリズム処理で実行される少なくとも1つの条件分岐を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐の機能が、ユニットで、第2実行パートによって実行されるような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐の機能がユニットで実行されるようなもの、
> 被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された条件分岐の機能が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分が要求するたびに、ユニットで少なくとも1つの条件分岐の機能を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットで条件分岐の機能を実行することを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
− 被保護ソフトウェアのソース中で、少なくとも1つの選択された条件分岐系列を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐系列の全機能が、ユニットで、第2実行パートによって実行されるような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐系列の機能がユニットで実行されるようなもの、
> 被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された条件分岐系列の全機能が実行されるようなもの、
を生成することによって、
変更することを含む。
− データ処理システム3によって提供されるデータを受け取る。
− データをデータ処理システム3に返す。
− ユニットの電源が切れていても、データを少なくとも部分的に秘密に格納し、このデータの少なくとも一部を保持する。
− データに対してアルゴリズム処理を実行し、その結果の一部またはすべてを秘密にする。
− ソース表現
− オブジェクト表現
− 配布
− または動的表現
・ ソース表現2vs
・ オブジェクト表現2vo
・ 配布2vd。配布は、CDROMなどの物理配布媒体の形式またはネットワーク(GSMやインターネットなど)を介して配布されるファイルの形式をとることが多い。
・ または、一般に少なくとも1つのプロセッサ4を搭載する周知の種類のデータ処理システム3上でのバルナラブル・ソフトウェア2vの実行に相当する動的表現2ve。
・ データ処理システム3向けの第1ソースパートと、ユニット6向けの第2ソースパート(場合による)を含むソース表現2ps。両ソースパートの一部は、共通ファイルに含まれることが多い。
・ データ処理システム3向けの第1オブジェクトパート2posと、ユニット6向けの第2オブジェクトパート2pou(場合による)を含むオブジェクト表現2po。
・ 以下を含む配布2pd
− 第1オブジェクトパート2posを含む第1配布パート2pds。この第1配布パート2pdsはデータ処理システム3向けであり、CDROMなどの物理配布媒体の形式またはネットワーク(GSMやインターネットなど)を介して配布されるファイルの形式をとることが多い。
− および以下の形式の第2配布パート2pdu
> 少なくとも1つのブランクユニット60
> または、第2オブジェクトパート2pouの一部がアップロードされ、ユニット6を取得するために補足データをアップロードすることでユーザがカスタマイズを完了しなければならない、少なくとも1つの事前カスタマイズ済みユニット66。この補足データは、ネットワークを介したダウンロードなどによって取得される。
> または、第2オブジェクトパート2pouがアップロードされた少なくとも1つのユニット6
・ または、被保護ソフトウェア2pの実行に相当する動的表現2pe。この動的表現2peには、データ処理システム3で実行される第1実行パート2pesとユニット6で実行される第2実行パート2peuが含まれる。
・ 物理的に存在し、被保護ソフトウェア2pの第2実行パート2peuの実行に適している保護手段14を備えるユニット6は、常に存在するとみなされる。
・ 物理的には存在するが、被保護ソフトウェア2pの第2実行パート2peuの正しい実装に適していない(この実装を可能にしない)保護手段14を備えるユニット6は、被保護ソフトウェア2pが正しく機能する場合は存在するとみなされ、被保護ソフトウェア2pが正しく機能しない場合は存在しないとみなされる。
・ また、物理的に存在しないユニット6は、常に存在しないとみなされる。
・ 時刻t1において、データXが変数V1に代入される(V1←Xで表す)。
・ 時刻t2において、変数V1の値が変数Yに代入される(Y←V1で表す)。
・ 時刻t3において、変数V1の値が変数Zに代入される(Z←V1で表す)。
・ 時刻t1において、データ処理システム3から、ユニット6の記憶手段15に配置された変数v1へのデータXの転送をトリガする転送コマンドが実行される。この転送コマンドはOUT(v1,X)と表され、最終的にデータXが変数v1に代入される。
・ 時刻t2において、ユニット6に存在する変数v1の値を変数Yに代入するために、この値のデータ処理システム3への転送をトリガする転送コマンドが実行される。この転送コマンドはIN(v1)と表され、最終的に変数v1の値が変数Yに代入される。
・ 時刻t3において、ユニット6に存在する変数v1の値を変数Zに代入するために、この値のデータ処理システム3への転送をトリガする転送コマンドが実行される。この転送コマンドはIN(v1)と表され、最終的に変数v1の値が変数Zに代入される。
・ 時刻t1において、データXがデータ処理システム3に配置された変数V1に代入される。また、データ処理システム3から、ユニット6の記憶手段15に配置された変数v1へのデータXの転送をトリガする転送コマンドも実行される。この転送コマンドはOUT(v1,X)と表される。
・ 時刻t2において、変数V1の値が変数Yに代入される。
・ 時刻t3において、ユニット6に存在する変数v1の値を変数Zに代入するために、この値のデータ処理システム3への転送をトリガする転送コマンドが実行される。この転送コマンドはIN(v1)と表される。
・ 時刻t1において、転送コマンドOUT(v1,X)を実行しても、ユニット6が存在しないため、変数v1へのデータXの転送をトリガすることができない。
・ 時刻t2において、転送コマンドIN(v1)を実行しても、ユニット6が存在しないため、データ処理システム3への変数v1の値の転送をトリガすることができない。
・ 時刻t3において、転送コマンドIN(v1)を実行しても、ユニット6が存在しないため、データ処理システム3への変数v1の値の転送をトリガすることができない。
・ 被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択されたアルゴリズム処理の機能がユニット6で実行されることを考慮する。
・ 被保護2pの実行中、ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択されたアルゴリズム処理の少なくとも1つの機能を実行する。
・ 被保護ソフトウェア2pの実行中、選択された各アルゴリズム処理が、以下の複数の個別ステップに分割される。
− ステップ1:オペランドの扱いをユニット6に任せる。
− ステップ2:このオペランドを使用して、選択されたアルゴリズム処理の機能をユニット6で実行する。
− ステップ3:選択されたアルゴリズム処理の結果の扱いをユニット6がデータ処理システム3に任せる(場合による)。
・ ステップコマンドは、ステップの実行をトリガするものと定義される。
・ また、ステップコマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
・ 時刻t1において、ステップ1、すなわちステップコマンドCE1が実行される。このコマンドは、データ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンxおよびyそれぞれへのデータXおよびYの転送をトリガする。このステップコマンドCE1は、OUT(x,X)、OUT(y,Y)と表される。
・ 時刻t2において、ステップ2、すなわちステップコマンドCE2が実行される。このコマンドは、第2実行パート2peuによる関数fの実行をユニット6においてトリガする。この関数fのアルゴリズムは関数Fと同じであり、ステップコマンドCE2はTRIG(f)と表される。より正確には、ステップコマンドCE2を実行すると、記憶ゾーンxおよびyの内容を使用し結果をユニット6の記憶ゾーンzに返す関数fが実行される。
・ 時刻t3において、ステップ3、すなわちステップコマンドCE3が実行される。このコマンドは、ユニット6の記憶ゾーンzに含まれる関数fの結果を変数Zに代入するために、この結果のデータ処理システム3への転送をトリガする。ステップコマンドCE3は、IN(z)と表される。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。この場合、一部の転送ステップを削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から適切なステップコマンドシーケンスを選択することである。この点で、ステップの実行を一時的に分離するようなステップコマンドシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用するステップコマンドを含む(または含まない)コード部分をステップ間に挿入する。図52および図53は、このような実施形態の原則を示している。
・ 時刻t1において、ステップコマンドOUT(x,X),OUT(y,Y)を実行しても、ユニット6が存在しないため、記憶ゾーンxおよびyそれぞれへのデータXおよびYの転送をトリガすることができない。
・ 時刻t2において、ステップコマンドTRIG(f)を実行しても、ユニット6が存在しないため、関数fの実行をトリガすることができない。
・ 時刻t3において、ステップコマンドIN(z)を実行しても、ユニット6が存在しないため、関数fの結果の転送をトリガすることができない。
・ 基本関数セット。基本関数セットに含まれる基本関数は、ユニット6において第2実行パート2peuによって実行することが可能であり、場合によってはデータ処理システム3とユニット6との間でデータを転送することが可能である。
・ この基本関数セットに対する基本コマンドセット。この基本コマンドはデータ処理システム3で実行することが可能であり、それによってユニット6において対応する基本関数の実行がトリガされる。
・ 被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択されたアルゴリズム処理の機能がユニット6で実行されることを考慮する。
・ 被保護ソフトウェア2pの実行中、ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択されたアルゴリズム処理の少なくとも1つの機能を実行する。
・ 被保護ソフトウェア2pの実行中に、選択されたアルゴリズム処理それぞれが、基本関数を使用して第2実行パート2peuによって実行されるように、選択されたアルゴリズム処理それぞれが分割される。選択されたアルゴリズム処理それぞれが、基本関数fen(nの範囲は1〜N)に分割されることが好ましい。すなわち、以下の基本関数に分割される。
− 1つ以上のオペランドの扱いをユニット6に任せることができる1つ以上の基本関数(場合による)
− 一部がオペランドを使用し、組み合わされて、このオペランドを使用する選択されたアルゴリズム処理の機能を実行するような基本関数
− 選択されたアルゴリズム処理の結果の扱いをユニット6がデータ処理システム3に任せることを可能にする1つ以上の基本関数(場合による)
・ また、基本コマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
・ 時刻t1、t2において、基本コマンドCFE1、CFE2が実行される。このコマンドは、第2実行パート2peuによる対応する基本関数fe1、fe2の実行をユニット6においてトリガする。この基本関数は、データX、Yを、データ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンx、yへそれぞれ転送する。この基本コマンドCFE1、CFE2は、それぞれOUT(x,X)、OUT(y,Y)と表される。
・ 時刻t3〜tN−1において、基本コマンドCFE3〜CFEN−1が実行される。このコマンドは、第2実行パート2peuによる対応する基本関数fe3〜feN−1の実行をユニット6においてトリガする。この基本コマンドCFE3〜CFEN−1は、それぞれTRIG(fe3)〜TRIG(feN−1)と表される。組み合わされて実行される一連の基本関数fe3〜feN−1のアルゴリズムは、関数Fと同じである。より正確には、この基本コマンドを実行すると、記憶ゾーンx、yの内容を使用しユニット6の記憶ゾーンzに結果を返す基本関数fe3〜feN−1がユニット6で実行される。
・ 時刻tNにおいて、基本コマンドCFENが実行される。このコマンドは、第2実行パート2peuによる基本関数feNの実行をユニット6においてトリガする。この関数は、ユニット6の記憶ゾーンzに含まれるアルゴリズム処理の結果を変数Zに代入するために、この結果をデータ処理システム3へ転送する。この基本コマンドCFENは、IN(z)と表される。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。このような場合、転送に使用される基本コマンドの一部を削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から適切な基本コマンドシーケンスを選択することである。この点で、基本関数の実行を一時的に分離するような基本コマンドシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用する基本コマンドを含む(または含まない)コード部分を基本コマンド間に挿入する。図62および図63は、このような実施形態の原則を示している。
・ 少なくとも部分的にユニット6において監視することが可能な、少なくとも1つのソフトウェア実行特性
・ 少なくとも1つのソフトウェア実行特性について遵守すべき少なくとも1つの基準
・ 少なくとも1つのソフトウェア実行特性が少なくとも1つの関連基準を遵守していないことを検出できる、ユニット6に装備される検出手段17
・ 少なくとも1つの基準が遵守されていない場合に、データ処理システム3への通知、および/または、ソフトウェア実行の変更が可能な、ユニット6に装備される強制手段18
・ 監視することが可能なソフトウェア実行特性の中から、監視するソフトウェア実行特性を少なくとも1つ選択する。
・ 少なくとも1つの選択されたソフトウェア実行特性について、遵守すべき基準を少なくとも1つ選択する。
・ バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つのソフトウェア実行特性が監視されるアルゴリズム処理を少なくとも1つ選択する。
・ バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つの選択されたアルゴリズム処理を含む部分を少なくとも1つ選択する。
・ データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも部分的にユニット6において、少なくとも1つの選択されたソフトウェア実行特性を監視する必要があることを考慮する。
・ ユニット6で実行される第2実行パート2peuが、選択されたソフトウェア実行特性を少なくとも部分的に監視する。
・ 被保護ソフトウェア2pの変更された部分すべての、監視される実行特性すべてに対応する基準がすべて遵守されている限り、被保護ソフトウェア2pの変更された部分は名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ 被保護ソフトウェア2pの部分の監視される実行特性に対応する少なくとも1つの基準が遵守されていない場合、データ処理システム3はその旨を通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
・ 記憶手段15において、少なくとも1つのソフトウェア機能の使用状況を定量化するために使用される少なくとも1つの計測変数を記憶できること
・ 検出手段17において、各計測変数に関連付けられた少なくとも1つのしきい値を監視できること
・ 計測変数が関連付けられた機能の使用状況に応じて各計測変数を更新できる有効化手段
・ 計測変数を利用して使用状況を監視することが可能な、バルナラブル・ソフトウェア2vの少なくとも1つの機能
・ この機能の使用状況の定量化に使用される少なくとも1つの計測変数
・ この機能の使用限度に対応する計測変数に関連付けられた少なくとも1つのしきい値
・ この機能の使用状況に応じて計測変数を更新する少なくとも1つの方法
・ この機能の使用状況に応じて計測変数を有効化する。
・ 少なくとも1つのしきい値超過を考慮する。
・ 少なくとも1つの計測変数について、複数の関連しきい値
・ このしきい値それぞれに対応する各種強制手段
・ ソフトウェアの少なくとも1つの機能の使用状況を定量化するために使用され、この機能の各種使用限度に対応する複数のしきい値を関連付ける必要がある、少なくとも1つの計測変数
・ 計測変数に関連付けられた少なくとも2つのしきい値
・ この機能の使用状況に応じて計測変数を有効化する。
・ 様々なしきい値の超過を個別に考慮する。
・ 監視される少なくとも1つの使用状況プロファイル
・ 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない、少なくとも1つの実行特徴
・ 被保護ソフトウェア2pの変更された部分すべての実行特徴がすべて遵守されている限り、被保護ソフトウェア2pの変更された部分が名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ 被保護ソフトウェア2pの部分の少なくとも1つの実行特徴が遵守されていない場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
・ ユニット6で実行することが可能な命令を含む命令セット
・ この命令セットに対する命令コマンドセット。この命令コマンドは、データ処理システム3で実行することが可能である。この命令コマンドそれぞれをデータ処理システム3で実行すると、ユニット6において対応する命令の実行がトリガされる。
・ 命令連鎖が期待されたものではないことを検出できる検出手段17
・ 命令連鎖が期待されたものではない場合に、データ処理システム3にその旨を通知すること、および/または、ソフトウェア実行を変更することができる強制手段18
・ 第2実行パート2peuが、選択されたアルゴリズム処理の少なくとも機能を実行する。
・ 選択されたアルゴリズム処理が複数の命令に分割される。
・ ユニット6での実行中に少なくとも一部の命令が遵守しなければならない連鎖が指定される。
・ 被保護ソフトウェア2pの第1実行パート2pesが、ユニット6での命令の実行をトリガする命令コマンドを実行する。
・ ユニット6で実行される被保護ソフトウェア2pの変更された部分すべての命令連鎖が期待されたものである限り、被保護ソフトウェア2pの変更された部分が名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ ユニット6で実行される被保護ソフトウェア2pの部分の命令連鎖が期待されたものではない場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
・ 命令識別フィールドCII
・ 命令の各オペランドkについて、以下のフィールド(kの範囲は1〜Kであり、Kは命令のオペランド数を示す)
− オペランドkの出所(origin)を確認することが適切であるかどうかを示すフラグフィールドCDk
− オペランドkの内容を生成した命令の期待されるアイデンティティを示す、オペランドの期待される識別フィールドCIPk
・ 命令の実行結果を格納できる、当業者に周知の機能フィールドCFv
・ 機能フィールドCFvの内容を生成した命令のアイデンティティを記憶できる生成識別フィールドCIGv。この生成識別フィールドCIGvは、機能フィールドCFvを生成した命令識別フィールドCIIの内容で自動的に更新される。この生成識別フィールドCIGvは、命令によるアクセスも変更もできず、検出手段17でのみ使用される。
・ フラグフィールドCDkを読み取る。
・ フラグフィールドCDkが要求した場合、オペランドkで使用されるレジスタに対応する、期待される識別フィールドCIPkと生成識別フィールドCIGvの両方を読み取る。
・ 2つのフィールドCIPkとCIGvが等しいかどうかチェックする。
・ 等しくない場合、検出手段17は、命令の実行連鎖が遵守されていないとみなす。
・ 従属関数セット。従属関数セットに含まれる従属関数は、ユニット6において第2実行パート2peuによって実行することが可能であり、場合によってはデータ処理システム3とユニット6との間でデータを転送することができる。この従属関数セットは、有限または無限のいずれでもよい。
・ この従属関数に対するトリガコマンドセット。このトリガコマンドはデータ処理システム3で実行され、ユニット6において対応する従属関数の実行をトリガすることが可能である。
・ 対応する従属関数の実行をトリガするために、第1実行パート2pesによって第2実行パート2peuへ転送される情報に少なくとも部分的に対応する、各トリガコマンドのオーダー。このオーダーは、トリガコマンドの少なくとも1つの引数の形式を有する。
・ バルナラブル・ソフトウェア2vの変更中に使用される、オーダーリネーム方法。この方法では、対応する従属関数のアイデンティティを隠蔽することができる、リネームされたオーダーを持つトリガコマンドを取得するためにオーダーをリネームできる。
・ 使用フェーズにおいてユニット6で使用され、実行する従属関数を復元するために、リネームされたオーダーから元のオーダーを復元することができる復元手段20。
・ 少なくとも1つのオペランドを使用し、少なくとも1つの結果を返す、少なくとも1つのアルゴリズム処理
・ 少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの部分
・ 被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択されたアルゴリズム処理の機能がユニット6で実行されることを考慮する。
・ 被保護ソフトウェア2pの実行中、ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択されたアルゴリズム処理の機能を少なくとも実行する。
・ 被保護ソフトウェア2pの実行中に、従属関数を使用して第2実行パート2peuによって実行されるように、選択された各アルゴリズム処理が分割される。選択された各アルゴリズム処理が以下の従属関数fdn(nの範囲は1〜N)に分割されることが好ましい。
− 1つ以上のオペランドの扱いをユニット6に任せることができる1つ以上の従属関数(場合による)
− 一部がオペランドを使用し、組み合わされて、このオペランドを使用する選択されたアルゴリズム処理の機能を実行するような従属関数
− 選択されたアルゴリズム処理の結果の扱いをユニット6がデータ処理システム3に任せることを可能にする1つ以上の従属関数(場合による)
・ 被保護ソフトウェア2pの実行中、第2実行パート2peuが従属関数fdnを実行する。
・ 被保護ソフトウェア2pの実行中、リネームされたオーダーを持つトリガコマンドによって従属関数がトリガされる。
・ また、トリガコマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
・ 時刻t1、t2において、トリガコマンドCD1、CD2が実行される。このコマンドは、第2実行パート2peuによる対応する従属関数fd1、fd2の実行をユニット6においてトリガする。この従属関数は、データX、Yをデータ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンx、yへそれぞれ転送する。このトリガコマンドCD1、CD2はそれぞれ、OUT(x,X)、OUT(y,Y)と表される。
・ 時刻t3〜tN−1において、トリガコマンドCD3〜CDN−1が実行される。このコマンドは、第2実行パート2peuによる対応する従属関数fd3〜fdN−1の実行をユニット6においてトリガする。このトリガコマンドCD3〜CDN−1は、それぞれTRIG(fd3)〜TRIG(fdN−1)と表される。組み合わされて実行される一連の従属関数fd3〜fdN−1のアルゴリズムは、関数Fと同じである。より正確には、このトリガコマンドを実行すると、記憶ゾーンx、yの内容を使用しユニット6の記憶ゾーンzに結果を返す従属関数fd3〜fdN−1がユニット6で実行される。
・ 時刻tNにおいて、トリガコマンドCDNが実行される。このコマンドは、第2実行パート2peuによる従属関数fdNの実行をユニット6においてトリガする。この関数は、ユニット6の記憶ゾーンzに含まれるアルゴリズム処理の結果を変数Zに代入するために、この結果をデータ処理システム3へ転送する。このコマンドは、IN(z)と表される。
・ 時刻t1、t2において、リネームされたオーダーを持つトリガコマンドCDCR1、CDCR2が実行される。このコマンドは、リネームされたオーダーR(x)、R(y)とデータX、Yをユニット6へ転送する。これにより、復元手段20によるリネームされたオーダーの復元がユニット6においてトリガされ、オーダー(記憶ゾーンx、yのアイデンティティ)が復元される。次に、第2実行パート2peuによって対応する従属関数fd1、fd2が実行される。この従属関数は、データX、Yを、データ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンx、yへそれぞれ転送する。リネームされたオーダーを持つこのトリガコマンドCDCR1、CDCR2は、それぞれOUT(R(x),X)、OUT(R(y),Y)と表される。
・ 時刻t3〜tN−1において、リネームされたオーダーを持つトリガコマンドCDCR3〜CDCRN−1が実行される。このコマンドは、リネームされたオーダーR(fd3)〜R(fdN−1)をユニット6へ転送する。これにより、復元手段20によるオーダー(fd3〜fdN−1)の復元がユニット6においてトリガされる。次に、第2実行パート2peuによって従属関数fd3〜fdN−1が実行される。リネームされたオーダーを持つこのトリガコマンドCDCR3〜CDCRN−1は、それぞれTRIG(R(fd3))〜TRIG(R(fdN−1))と表される。
・ 時刻tNにおいて、リネームされたオーダーを持つトリガコマンドCDCRNが実行される。このコマンドは、リネームされたオーダーR(z)をユニット6へ転送する。これにより、復元手段20によるオーダー(記憶ゾーンzのアイデンティティ)の復元がユニット6においてトリガされる。次に、第2実行パート2peuによって従属関数fdNが実行される。この従属関数は、ユニット6の記憶ゾーンzに含まれるアルゴリズム処理の結果を変数Zに代入するために、この結果をデータ処理システム3へ転送する。リネームされたオーダーを持つこのトリガコマンドCDCRNは、IN(R(z))と表される。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。このような場合、転送に使用されるリネームされたオーダーを持つトリガコマンドの一部を削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から、リネームされたオーダーを持つトリガコマンドの適切なシーケンスを選択することである。この点で、従属関数の実行を一時的に分離するようなリネームされたオーダーを持つトリガコマンドのシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用する、リネームされたオーダーを持つトリガコマンドを含む(または含まない)コード部分をトリガコマンド間に挿入する。。図83および図84は、このような実施形態の原則を示している。
・ データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択された条件分岐BCの機能がユニット6で実行されることを考慮する。
・ ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択された条件分岐BCの少なくとも機能を実行し、第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の扱いをデータ処理システム(3)に任せる。
・ 時刻t1において、条件分岐コマンドCBC1が実行される。このコマンドは、アルゴリズムの面で条件分岐BCと同じであるリモート処理された条件分岐bcの第2実行パート2peuによるユニット6における実行をトリガする。この条件分岐コマンドCBC1は、TRIG(bc)と表される。
・ 時刻t2において、第1実行パート2pesが選択されたスポット、すなわちB1、B2、またはB3で実行を続行できるようにする情報がユニット6からデータ処理システム3へ転送される。
・ 時刻t1において、条件分岐コマンドCBC1を実行しても、ユニット6が存在しないため、リモート処理された条件分岐bcの実行をトリガすることができない。
・ 時刻t2において、ユニット6が存在しないため、第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の転送が失敗する。
・ バルナラブル・ソフトウェアという言葉を、これまで説明した保護原則との関連において脆弱であるソフトウェアという意味で理解する必要がある。したがって、保護原則がバルナラブル・ソフトウェアに既に適用されている場合、「バルナラブル・ソフトウェア」という表現を、「既に適用された保護原則によって保護されているソフトウェア」という意味で理解しなければならない。
・ 被保護ソフトウェアという言葉を、これまで説明した保護原則との関連において保護されているソフトウェアという意味で理解する必要がある。したがって、保護原則が既に適用されている場合、「被保護ソフトウェア」という表現を、「被保護ソフトウェアの新しいバージョン」という意味で理解しなければならない。
・ また、これまで説明した保護原則の実装を選択する場合、既に適用されている保護原則の実装の選択を考慮する必要がある。
・ まず、バルナラブル・ソフトウェア2vが被保護ソフトウェア2pになるように変更される、保護フェーズP
・ 次に、被保護ソフトウェア2pが使用される、使用フェーズU。この使用フェーズUでは、以下のようになる。
− ユニット6が存在する場合、データ処理システム3において第1実行パート2pesの部分が要求するたびに、要求された機能がユニット6で実行されるため、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
− ユニット6が存在しない場合、ユニット6における機能の実行を求める、第1実行パート2pesの部分による要求があっても、この要求を正しく遂行できないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
・ また場合によっては補充フェーズR。この補充フェーズRにおいては、特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装によって保護された機能の少なくとも1回の追加使用が認められる。
・ 以下が選択される。
− ユニット6の種類、すなわち特に記憶ユニットまたは処理/記憶ユニット。説明のための例として、ユニット6、チップカードリーダー8、およびリーダーに結合する(associated to)チップカード7を選択することができる。
− 転送手段12、13。この転送手段は、使用フェーズUにおいてデータ処理システム3とユニット6にそれぞれ装備され、データ処理システム3とユニット6との間でデータを転送する。
・ 本発明に従う保護プロセスが基本関数による保護原則を実装する場合、以下も定義される。
− ユニット6で実行することが可能な基本関数を含む基本関数セット
− この基本関数セット用の基本コマンドセット。この基本コマンドはデータ処理システム3で実行され、ユニット6において基本関数の実行をトリガすることが可能である。
・ 本発明に従う保護プロセスが検出および強制による保護原則を実装する場合、以下も定義される。
− ユニット6で少なくとも部分的に監視することが可能な、少なくとも1つのソフトウェア実行特性
− 少なくとも1つのソフトウェア実行特性について、遵守すべき少なくとも1つの基準
− ユニット6に実装され、少なくとも1つのソフトウェア実行特性が少なくとも1つの関連基準を遵守していないことを検出できる検出手段17
− ユニット6に実装され、少なくとも1つの基準が遵守されていない場合に、データ処理システム3にその旨を通知すること、および/または、ソフトウェアの実行を変更することができる強制手段18
・ 本発明に従う保護プロセスが、特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則を実装する場合、以下も定義される。
− 監視することが可能なソフトウェア実行特性としての、ソフトウェア機能の使用状況の計測変数
− 遵守すべき基準としての、各計測変数に関連付けられた少なくとも1つのしきい値
− 少なくとも1つの計測変数を更新できる有効化手段
・ 本発明に従う保護プロセスが、特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則の第1の好ましい変形実施形態を実装する場合、以下も定義される。
− 少なくとも1つの計測変数について、複数の関連しきい値
− このしきい値それぞれに対応する各種強制手段
・ 本発明に従う保護プロセスが、特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態を実装する場合、少なくとも1回の追加使用を、計測変数によって監視される少なくとも1つのソフトウェア機能に追加することができる補充手段も定義される。
・ 本発明に従う保護プロセスが、特性としてソフトウェア使用状況プロファイルを使用する、検出および強制による保護原則を実装する場合、以下も定義される。
− 監視することが可能なソフトウェア実行特性としての、ソフトウェア使用状況プロファイル
− 遵守すべき基準としての、ソフトウェア実行の少なくとも1つの特徴
・ 本発明に従う保護プロセスが、遵守すべき実行特徴として実行連鎖のモニタリングを使用する、検出および強制による保護原則を実装する場合、以下も定義される。
− ユニット6で実行することが可能な命令を含む命令セット
− この命令セット用の命令コマンドセット。この命令コマンドはデータ処理システム3で実行され、ユニット6において命令の実行をトリガすることが可能である。
− 使用状況プロファイルとしての、命令連鎖
− 実行特徴としての、命令実行の期待される連鎖
− 命令連鎖が期待されたものではないことを検出できる検出手段17
− 命令連鎖が期待されたものではない場合に、データ処理システム3にその旨を通知すること、および/または、被保護ソフトウェア2pの部分の機能を変更できる強制手段18
・ 本発明に従う保護プロセスが、遵守すべき実行特徴として実行連鎖のモニタリングを使用する、検出および強制による保護原則の好ましい変形実施形態を実装する場合、以下も定義される。
− レジスタとともに作用し、結果を返すために少なくとも1つのオペランドを使用する命令を少なくとも一部含む命令セット
− レジスタとともに作用する命令の少なくとも一部について、以下が定義される。
> 命令の機能を定義する部分PF
> 命令実行の期待される連鎖を定義し、以下のビットフィールドを含む部分
◇ 命令識別フィールドCII
◇ 命令の各オペランド用の以下のフィールド
* フラグフィールドCDk
* オペランドの期待される識別フィールドCIPk
− 活用手段に搭載され命令セットで使用される各レジスタについて、生成識別フィールドCIGv。このフィールドには、このレジスタに結果を返した最後の命令の識別が自動的に記憶される。
− 命令の実行中、各オペランドについて、フラグフィールドCDkが要求した場合に、このオペランドで使用されるレジスタに対応する生成識別フィールドCIGvが、このオペランドの出所(origin)の期待される識別フィールドCIPkと等しいかどうかをチェックできる検出手段17
− チェックされた同等性の少なくとも1つが偽である場合に、命令の結果を変更できる強制手段18
・ 本発明に従う保護プロセスがリネームによる保護原則を実装する場合、以下も定義される。
− トリガコマンドとしての、基本コマンドまたは命令コマンド
− 従属関数としての、基本関数または命令
− 対応する従属関数の実行をトリガするために、データ処理システム3によってユニット6へ転送される情報に少なくとも部分的に対応する、トリガコマンドの少なくとも1つの引数(オーダーとして)
− リネームされたオーダーを持つトリガコマンドを取得するために、オーダーをリネームすることができる、オーダーリネーム方法
− 使用フェーズUにおいてユニット6で使用され、実行すべき従属関数をリネームされたオーダーから復元することができる復元手段20
・ 本発明に従う保護プロセスがリネームによる保護原則の変形を実装する場合、少なくとも1つの従属関数について、アルゴリズムの面では同じであるが、リネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群も定義される。
・ 本発明に従う保護プロセスがリネームによる保護原則の変形の好ましい実施形態の1つを実装する場合、少なくとも1つの従属関数について、アルゴリズムが同じである従属関数群も、以下によって定義される。
− ユニット6で実行すべき従属関数の機能パートを定義する情報とノイズフィールドを連結することによって
− または、命令識別フィールドCIIと、オペランドの期待される識別フィールドCIPkを使用することによって
・ 本発明に従う保護プロセスがリネームによる保護原則の好ましい変形を実装する場合、以下も定義される。
− オーダーリネーム方法としての、オーダーを暗号化する暗号化方法
− リネームされたオーダーを復号化して、ユニット6で実行すべき従属関数のアイデンティティを復元する復号化方法を実装する復元手段20
・ 使用フェーズUにおいてデータ処理システム3とユニット6との間でデータを転送することができる転送手段12、13が構築される。
・ また、基本関数による保護原則も実装される場合、使用フェーズUにおけるユニット6による基本関数セットの基本関数の実行も可能にする活用手段が構築される。
・ また、検出および強制による保護原則も実装する場合、以下が構築される。
− 使用フェーズUにおいてユニット6による検出手段17と強制手段18の実装も可能にする活用手段
− 使用フェーズUにおいてユニット6による有効化手段の実装も可能にする活用手段(場合による)
− 使用フェーズUにおいてユニット6による補充手段の実装も可能にする活用手段(場合による)
− 使用フェーズUにおいてユニット6による命令セットの命令の実行も可能にする活用手段(場合による)
・ また、リネームによる保護原則も実装する場合、使用フェーズUにおいてユニット6による復元手段の実装も可能にする活用手段が構築される。
・ 保護すべきバルナラブル・ソフトウェア2vにおいて、以下の選択を補助するか、以下の選択を自動的に行う。
− ユニット6でリモート処理することが可能な変数
− 変更することが可能な部分
− ユニット6でリモート処理可能なステップに分割することが可能なアルゴリズム処理(一時的分離による保護原則も実装される場合)
− ユニット6でリモート処理可能な基本関数に分割することが可能なアルゴリズム処理(基本関数による保護原則も実装される場合)
− 監視すべき実行特性、および場合によっては、ユニット6でリモート処理可能な命令に分割することが可能なアルゴリズム処理(検出および強制による保護原則も実装される場合)
− ユニット6でリモート処理可能な従属関数に分割することが可能であり、トリガコマンドのオーダーをリネームできるようなアルゴリズム処理(リネームによる保護原則も実装される場合)
− ユニット6でリモート処理することが可能な機能を持つ条件分岐(条件分岐による保護原則も実装される場合)
・ また場合によっては、被保護ソフトウェアの生成を支援し、またはソフトウェア保護を自動化する。
・ バルナラブル・ソフトウェアのソース2vsにおいて以下を選択する。
− バルナラブル・ソフトウェア2vの実行中にその状態を部分的に定義する少なくとも1つの変数
− 少なくとも1つの選択された変数を含む少なくとも1つの部分
・ バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分を変更することで、バルナラブル・ソフトウェアのソース2vsから被保護ソフトウェアのソース2psを作成する。この変更の結果、被保護ソフトウェア2pの実行中、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーが、ユニット6に変換されるブランクユニット60に存在するようになる。
・ 被保護ソフトウェアのソース2psから被保護ソフトウェア2pの第1オブジェクトパート2posを作成する。この第1オブジェクトパート2posが作成された結果、データ処理システム(3)で実行される第1実行パート2pesが被保護ソフトウェア2pの実行中に現れ、第1実行パート2pesの少なくとも部分が、少なくとも変数または変数の少なくともコピーがユニット6に存在することを考慮するようになる。
・ 被保護ソフトウェアのソース2psにおいて以下を選択する。
− 被保護ソフトウェア2pの実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得できる少なくとも1つのアルゴリズム処理
− 少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、以下のようになる。
− 被保護ソフトウェア2pの実行中、第1実行パート2pesがデータ処理システム3で実行され、第2実行パート2peuが、処理手段16も備えるユニット6で実行される。
− 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パート2peuによって実行される。
− 被保護ソフトウェア2pの実行中、第2実行パート2peuによって実行される以下の複数の個別ステップが現れるように、少なくとも1つの選択されたアルゴリズム処理が分割される。
> 少なくとも1つの変数の扱いをユニット6に任せるステップ
> 少なくともこの変数に対するアルゴリズム処理の機能をユニット6で実行するステップ
> 少なくとも1つの結果変数の扱いをユニット6がデータ処理システム3に任せるステップ(場合による)
− 被保護ソフトウェア2pの実行中、各ステップコマンドが第1実行パート2pesによって実行され、第2実行パート2peuによるステップの実行をユニット6においてトリガするように、少なくとも1つの選択されたアルゴリズム処理についてステップコマンドが定義される。
− また、ステップコマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、選択されたシーケンスに従ってステップコマンドが実行されるようになる。
− 被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ブランクユニット60へのアップロード後、被保護ソフトウェア2pの実行中に、第2実行パート2peuが現れるようになる。この第2実行パート2peuによって、第1実行パート2pesによってトリガされたステップが実行される。
・ 被保護ソフトウェアのソース2psにおいて以下を選択する。
− 被保護ソフトウェア2pの実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得できる少なくとも1つのアルゴリズム処理
− 少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、以下のようになる。
− 被保護ソフトウェア2pの実行中、第1実行パート2pesがデータ処理システム3で実行され、第2実行パート2peuがユニット6で実行される。
− 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パート2peuによって実行される。
− 被保護ソフトウェア2pの実行中、少なくとも1つの選択されたアルゴリズム処理が第2実行パート2peuによって基本関数を使用して実行されるように、アルゴリズム処理が分割される。
− 被保護ソフトウェア2pの実行中、各基本コマンドが第1実行パート2pesによって実行され、第2実行パート2peuによる基本関数の実行をユニット6においてトリガするように、少なくとも1つの選択されたアルゴリズム処理について基本コマンドが被保護ソフトウェアのソース2psに統合される。
− また、基本コマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、選択されたシーケンスに従って基本コマンドが実行されるようになる。
− 活用手段を含む被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ブランクユニット60へのアップロード後、被保護ソフトウェア2pの実行中に、第2実行パート2peuが現れるようになる。この第2実行パート2peuによって、第1実行パート2pesによってトリガされた基本関数が実行される。
・ 被保護ソフトウェアのソース2psにおいて、被保護ソフトウェア2pの実行中にアルゴリズム処理の機能を実行するステップを少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、以下のようになる。
− 被保護ソフトウェア2pの実行中に、基本関数を使用して第2実行パート2peuによって実行されるように、少なくとも1つの選択されたステップが分割される。
− 被保護ソフトウェア2pの実行中、各基本コマンドが第1実行パート2pesによって実行され、第2実行パート2peuによる基本関数の実行をユニット6においてトリガするように、少なくとも1つの選択されたステップについて基本コマンドが被保護ソフトウェアのソース2psに統合される。
− また、基本コマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、選択されたシーケンスに従って基本コマンドが実行されるようになる。
− 活用手段も含む被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、第2実行パート2peuが現れるようになる。この第2実行パート2peuによって、第1実行パート2pesによってトリガされた基本関数が実行される。
・ 監視することが可能なソフトウェア実行特性の中から、監視すべきソフトウェア実行特性を少なくとも1つ選択する。
・ 少なくとも1つの選択されたソフトウェア実行特性について、遵守すべき基準を少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psにおいて、少なくとも1つの選択されたソフトウェア実行特性が監視される基本関数を選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、少なくとも1つの選択された実行特性が第2実行パート2peuによって監視されるようになる。また、基準が遵守されなかった場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pの実行が変更される。
・ 検出手段17と強制手段18も実装する活用手段を備える被保護ソフトウェア2pの第2オブジェクトパート2pouを作成する。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に少なくとも1つのソフトウェア実行特性が監視されるようになる。また、基準が遵守されなかった場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pの実行が変更される。
・ 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の計測変数を少なくとも1つ選択する。
・ 以下を選択する。
− 計測変数を利用して使用状況を監視することが可能な、被保護ソフトウェア2pの少なくとも1つの機能
− この機能の使用状況の定量化に使用される少なくとも1つの計測変数
− この機能の使用限度に対応する選択された計測変数に関連付けられた少なくとも1つのしきい値
− この機能の使用状況に応じて、選択された計測変数を更新する少なくとも1つの方法
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、この機能の使用状況に応じて計測変数が第2実行パート2peuによって有効化され、少なくとも1つのしきい値超過が考慮されるようになる。
・ 被保護ソフトウェアのソース2psにおいて、機能の各種使用限度に対応する複数のしきい値を関連付ける必要がある、計測変数を少なくとも1つ選択する。
・ 選択された計測変数に関連付けられたしきい値を少なくとも2つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、第2実行パート2peuが様々なしきい値の超過を個別に考慮するようになる。
・ 被保護ソフトウェアのソース2psにおいて、機能の使用を制限でき、少なくとも1回の追加使用を認めることができなければならない、選択された計測変数を少なくとも1つ選択する。
・ 少なくとも1つの選択された部分を変更する。この変更の結果、補充と呼ばれるフェーズにおいて、選択された計測変数に対応する少なくとも1つの機能の少なくとも1回の追加使用を認めることができるようになる。
・ 監視すべきソフトウェア実行特性として、ソフトウェア使用状況プロファイルを少なくとも1つ選択する。
・ 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない実行特徴を少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、第2実行パート2peuが選択された実行特徴をすべて遵守するようになる。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を以下の処理によって変更する。
− 基本関数を命令に変換する。
− ユニット6での実行中に命令の少なくとも一部が遵守しなければならない連鎖を指定する。
− 基本コマンドを、使用される命令に対応する命令コマンドに変換する。
・ 被保護ソフトウェアのソース2psにおいて、トリガコマンドを選択する。
・ 対応する従属関数のアイデンティティを隠蔽するために、選択されたトリガコマンドのオーダーをリネームすることで、被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、リネームされたオーダーを持つトリガコマンドが実行されるようになる。
− 復元手段20も実装する活用手段を備える被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、第1実行パート2pesによって実行がトリガされる従属関数のアイデンティティが第2実行パート2peuによって復元され、従属関数が第2実行パート2peuによって実行されるようになる。
・ 被保護ソフトウェアのソース2psにおいて、リネームされたオーダーを持つトリガコマンドを少なくとも1つ選択する。
・ リネームされたオーダーを持つ選択された1つのトリガコマンドの、リネームされたオーダーを少なくとも、リネームされた別のオーダーに置き換え、同じ群の従属関数をトリガすることで、被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。
・ 被保護ソフトウェアのソース2psにおいて、少なくとも1つの選択されたアルゴリズム処理で実行される条件分岐を少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、少なくとも1つの選択された条件分岐の機能が、第2実行パート2peuによってユニット6で実行されるようになる。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、少なくとも1つの選択された条件分岐の機能がユニット6で実行されるようになる。
− 被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、少なくとも1つの選択された条件分岐の機能を実行する第2実行パート2peuが現れるようになる。
・ 被保護ソフトウェアのソース2psにおいて、選択された条件分岐系列を少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、少なくとも1つの選択された条件分岐系列の全体的機能が第2実行パート2peuによってユニット6で実行されるようになる。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、少なくとも1つの選択された条件分岐系列の機能がユニット6で実行されるようになる。
− 被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、少なくとも1つの選択された条件分岐系列の全体的機能を実行する第2実行パート2peuが現れるようになる。
・ 被保護ソフトウェア2pの第2オブジェクトパート2pouが配分された複数の処理/記憶ユニットを一緒に使用するように改良できる。これにより、一緒に使用した場合は、被保護ソフトウェア2pの実行を可能にし、この処理/記憶ユニットの少なくとも1つが存在しない場合は、被保護ソフトウェア2pの使用を防止することができる。
・ 同様に、事前カスタマイズ段階S13の後、カスタマイズ段階S23において、事前カスタマイズ済みユニット66をユニット6に変換するために必要な第2オブジェクトパート2pouの一部を、カスタマイズユニット45で使用される処理/記憶ユニットに含めることで、この第2オブジェクトパート2pouの一部へのアクセスを制限することができる。当然ながら、この第2オブジェクトパート2pouの一部を複数の処理/記憶ユニットに配分することができる。これにより、この第2オブジェクトパート2pouの一部へのアクセスを、この処理/記憶ユニットを一緒に使用している場合のみ許可することができる。
Claims (24)
- 少なくとも記憶手段(15)を含む少なくとも1つのブランクユニット(60)を使用して、データ処理システム(3)上で作動するバルナラブル・ソフトウェア(2v)をその無許可使用に対して保護する方法であって、:
→ 保護フェーズ(P)の間に、
・ 被保護ソフトウェア(2p)を、
− バルナラブル・ソフトウェアのソース(2vs)中で、
> バルナラブル・ソフトウェア(2v)の実行中に該バルナラブル・ソフトウェアの状態を部分的に規定する少なくとも1つの変数、
> および、少なくとも1つの選択された変数を含む少なくとも1つの部分、
を選択することによって、
− 脆弱なソフトウェアのソース(2vs)の少なくとも1つの選択された部分を変更することにより、バルナラブル・ソフトウェアのソース(2vs)から被保護ソフトウェアのソース(2ps)を生成すること(この変更は、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがブランクユニット(60)に存在することにより該ブランクユニットがユニット(6)に変換されるような変更である)によって、
− および、被保護ソフトウェアのソース(2ps)から被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)を生成すること(前記第1オブジェクトパート(2pos)は、被保護ソフトウェア(2p)の実行中に第1実行パート(2pes)が現れるようなオブジェクトパートであり、第1実行パートは、データ処理システム(3)で実行され、その少なくとも一部分は少なくとも変数または変数の少なくともコピーがユニット(6)に存在することを考慮する)によって、
作成すること、
を含み、
→ 被保護ソフトウェア(2p)が実行される使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分が要求するたびに、ユニット(6)内に存在する変数または変数のコピーを使用することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)に存在する変数または変数のコピーを使用することを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む方法。 - → 保護フェーズ(P)の間に、
・ 被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、
> 被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得することが可能な少なくとも1つのアルゴリズム処理、
> および、少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分、
を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、
> 被保護ソフトウェア(2p)の実行中に、第1実行パート(2pes)がデータ処理システム(3)で実行され、第2実行パート(2peu)が、処理手段(16)も含むユニット(6)で実行され、
> 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パート(2peu)によって実行され、
> 少なくとも1つの選択されたアルゴリズム処理が、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)によって、いくつかの別個のステップ、すなわち:
◇ 少なくとも1つの変数の扱いをユニット(6)に任せること、
◇ ユニット(6)で、少なくとも1つの前記変数に対してアルゴリズム処理の機能を実行すること、
◇ および場合によって、ユニット(6)がデータ処理システム(3)に少なくとも1つの結果変数の扱いを任せること、
が現れるように分割され、
> 少なくとも1つの選択されたアルゴリズム処理に対して、被保護ソフトウェア(2p)の実行中に、各ステップコマンドが、第1実行パート(2pes)によって実行され、第2実行パート(2peu)によるステップの実行をユニット(6)でトリガするように、ステップコマンドが定義され、
> および、ステップコマンドのシーケンスが被保護ソフトウェア(2p)の実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、選択されたシーケンスに従ってステップコマンドが実行されるようなもの、
> および、被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ブランクユニット(60)へのアップロード後、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)が現れ、それによって、第1実行パート(2pes)によりトリガされたステップが実行されるようなもの、
を生成することによって、
変更すること、
・ および、ユニット(6)を取得する目的で、ブランクユニット(60)に第2オブジェクトパート(2pou)をアップロードすること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分に含まれるステップコマンドが要求するたびに、ユニット(6)で対応するステップを実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)におけるステップの実行をトリガすることを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む請求項1に記載の方法。 - → 保護フェーズ(P)の間に、
・ ・− 処理手段(16)も含むユニット(6)で実行され得る基本関数のセット、
− および、前記基本関数のセットに対する基本コマンドのセットであり、データ処理システム(3)で実行され、ユニット(6)における基本関数の実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ 前記セットの基本関数を実行することができるユニット(6)にブランクユニット(60)を変換することが可能な活用手段を構築すること(前記基本関数の実行はデータ処理システム(3)における基本コマンドの実行によってトリガされる)、
・ 被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、
> 被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得することが可能な少なくとも1つのアルゴリズム処理、
> および、少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分、
を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、
> 被保護ソフトウェア(2p)の実行中に、第1実行パート(2pes)がデータ処理システム(3)で実行され、第2実行パート(2peu)がユニット(6)で実行され、
> 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パート(2peu)によって実行され、
> 少なくとも1つの選択されたアルゴリズム処理が、被保護ソフトウェア(2p)の実行中に、該アルゴリズム処理が基本関数を使用して第2実行パート(2peu)によって実行されるように分割され、
> 少なくとも1つの選択されたアルゴリズム処理について、被保護ソフトウェア(2p)の実行中に、各基本コマンドが、第1実行パート(2pes)によって実行され、ユニット(6)で、第2実行パート(2peu)による基本関数の実行をトリガするように、基本コマンドが被保護ソフトウェアのソース(2ps)に統合され、
> および、基本コマンドのシーケンスが被保護ソフトウェア(2p)の実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、選択されたシーケンスに従って基本コマンドが実行されるようなもの、
> および、活用手段を含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ブランクユニット(60)へのアップロード後、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)が現れ、それによって、第1実行パート(2pes)によりトリガされた基本関数が実行されるようなもの、
を生成することによって、
変更すること、
・ および、ユニット(6)を取得する目的で、ブランクユニット(60)に第2オブジェクトパート(2pou)をアップロードすること、
を含み
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分に含まれる基本コマンドが要求するたびに、ユニット(6)で対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)における基本関数の実行をトリガすることを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む請求項1に記載の方法。 - → 保護フェーズ(P)の間に、
・− ユニット(6)で実行され得る基本関数のセット、
− および、前記基本関数のセットに対する基本コマンドのセットであり、データ処理システム(3)で実行され、ユニット(6)における基本関数の実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ ユニット(6)が前記セットの基本関数を実行することを可能にする活用手段を構築すること(前記基本関数の実行はデータ処理システム(3)における基本コマンドの実行によってトリガされる)、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、被保護ソフトウェア(2p)の実行中にアルゴリズム処理の機能を実行する少なくとも1つのステップを選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、
> 少なくとも1つの選択されたステップが、被保護ソフトウェア(2p)の実行中に、該ステップが基本関数を使用して第2実行パート(2peu)によって実行されるように分割され、
> 少なくとも1つの選択されたステップについて、被保護ソフトウェア(2p)の実行中に、各基本コマンドが、第1実行パート(2pes)によって実行され、ユニット(6)で、第2実行パート(2peu)による基本関数の実行をトリガするように、基本コマンドが被保護ソフトウェアのソース(2ps)に統合され、
> および、基本コマンドのシーケンスが被保護ソフトウェア(2p)の実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、選択されたシーケンスに従って基本コマンドが実行されるようなもの、
> および、活用手段も含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ユニット(6)へのアップロード後、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)が現れ、それによって、第1実行パート(2pes)によりトリガされた基本関数が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分に含まれる基本コマンドが要求するたびに、ユニット(6)で対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)における基本関数の実行をトリガすることを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む請求項2に記載の方法。 - → 保護フェーズ(P)の間に、
・− ユニット(6)で少なくとも部分的に監視され得る少なくとも1つのソフトウェア実行特性、
− 少なくとも1つのソフトウェア実行特性が遵守すべき少なくとも1つの基準、
− ユニット(6)で実施され、少なくとも1つのソフトウェア実行特性が少なくとも1つの関連する基準を遵守していないことを検出することが可能な検出手段(17)、
− および、ユニット(6)で実施され、少なくとも1つの基準が遵守されていない時、データ処理システム(3)に通知し、および/または、ソフトウェアの実行を変更することが可能な強制手段(18)、
を定義すること、
・ ユニット(6)が検出手段(17)および強制手段(18)を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェア(2p)を、
− 監視され得るソフトウェア実行特性のうちから、監視すべき少なくとも1つのソフトウェア実行特性を選択することによって、
− 少なくとも1つの選択されたソフトウェア実行特性が遵守すべき少なくとも1つの基準を選択することによって、
− 被保護ソフトウェアのソース(2ps)中で、少なくとも1つの選択されたソフトウェア実行特性が監視されるべき基本関数を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された実行特性が第2実行パート(2peu)によって監視され、基準が遵守されていないことが、データ処理システム(3)への通知、および/または、被保護ソフトウェア(2p)の実行の変更につながるような変更である)によって、
− および、検出手段(17)および強制手段(18)も実施する活用手段を含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)を生成すること(該第2オブジェクトパート(2pou)は、ユニット(6)へのアップロード後、被保護ソフトウェア(2p)の実行中に、少なくとも1つの第1ソフトウェア実行特性が監視され、基準が遵守されていないことが、データ処理システム(3)への通知、および/または、被保護ソフトウェア(2p)の実行の変更につながるようなオブジェクトパートである)によって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、
− 被保護ソフトウェア(2p)のすべての変更された部分のすべての監視されている実行特性に対応するすべての基準が遵守されている限り、被保護ソフトウェア(2p)の前記部分が名目通り作動し、結果として被保護ソフトウェア(2p)が名目通り作動することを可能にすること、
− および、被保護ソフトウェア(2p)の一部分の監視されている実行特性に対応する少なくとも1つの基準が遵守されていない場合、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
を含む請求項3または4に記載の方法。 - 被保護ソフトウェア(2p)の使用を制限するために、
→ 保護フェーズ(P)の間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェアの機能の使用状況の計測変数、
− 遵守すべき基準として、各計測変数に関連する少なくとも1つのしきい値、
− および、少なくとも1つの計測変数を更新することが可能な有効化手段、
を定義すること、
・ ユニット(6)が有効化手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェア(2p)を、
− 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の少なくとも1つの計測変数を選択することによって、
−> 計測変数を使用して使用が監視され得る被保護ソフトウェア(2p)の少なくとも1つの機能、
> 前記機能の使用状況を定量化するために使用される少なくとも1つの計測変数、
> 前記機能の使用限度に対応する選択された計測変数に関連する少なくとも1つのしきい値、
> および、前記機能の使用状況に依存する選択された計測変数の少なくとも1つの更新方法、
を選択することによって、
− および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、計測変数が前記機能の使用状況に依存する第2実行パート(2peu)によって実現され、少なくとも1つのしきい値超過が考慮されるような変更である)によって、
を変更すること、
を含み、
→ 使用フェーズ(U)の間に、ユニット(6)の存在時に、そして少なくとも1つの使用限度に対応する少なくとも1つのしきい値超過が検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
を含む請求項5に記載の方法。 - → 保護フェーズ(P)の間に、
・− 少なくとも1つの計測変数について、いくつかの関連するしきい値、
− および、前記しきい値のそれぞれに対応する相異なる強制手段、
を定義すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、機能の相異なる使用限度に対応するいくつかのしきい値が関連づけられなければならない少なくとも1つの選択された計測変数を選択することによって、
− 選択された計測変数に関連する少なくとも2つのしきい値を選択することによって、
− および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、種々のしきい値の超過が第2実行パート(2peu)によって別様に考慮されるような変更である)によって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、
− 第1しきい値の超過が検出された場合、被保護ソフトウェア(2p)に対して、対応する機能をそれ以上使用しないように命じること、
− 第2しきい値の超過が検出された場合、被保護ソフトウェア(2p)の対応する機能、および/または、少なくとも一部分を無効にすること、
を含む請求項6に記載の方法。 - → 保護フェーズ(P)の間に、
・ 計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1つの追加使用を認めることが可能な補充手段を定義すること、
・ ユニット(6)が補充手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、少なくとも1つの追加使用を認めることができなければならない機能の使用を制限することが可能な少なくとも1つの選択された計測変数を選択することによって、
− および、少なくとも1つの選択された部分を変更すること(この変更は、補充フェーズと呼ばれるフェーズの間、選択された計測変数に対応する少なくとも1つの機能の少なくとも1つの追加使用が認められるような変更である)によって、
変更すること、
を含み、
→ 補充フェーズの間に、
・機能の少なくとも1つの追加使用を可能にするために、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連するしきい値を再有効化すること、
を含む請求項6または7に記載の方法。 - → 保護フェーズ(P)の間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェア使用状況プロファイル、
− および、遵守すべき基準として、少なくとも1つのソフトウェア実行特徴、
を定義すること、
・ および、被保護ソフトウェア(2p)を、
− 少なくとも1つのソフトウェア使用状況プロファイルを監視することをソフトウェア実行特性として選択することによって、
− 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない少なくとも1つの実行特徴を選択することによって、
− および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)がすべての選択された実行特徴を遵守しなければならないような変更である)によって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、ユニット(6)の存在時に、そして少なくとも1つの実行特徴が遵守されていないことが検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
を含む請求項5に記載の方法。 - → 保護フェーズ(P)の間に、
・− ユニット(6)で実行され得る命令のセット、
− 前記命令のセットに対する命令コマンドのセットであり、データ処理システム(3)で実行され、ユニット(6)で命令の実行をトリガし得る前記命令コマンドのセット、
− 使用状況プロファイルとして、命令の連鎖、
− 実行特徴として、命令の実行に対して期待される連鎖、
− 検出手段(17)として、命令の連鎖が期待されるものに対応しないことを検出することが可能な手段、
− および、強制手段(18)として、命令の連鎖が期待されるものに対応しない場合にデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更することが可能な手段、
を定義すること、
・ ユニット(6)が命令セットの命令を実行することも可能にする活用手段を構築すること(該命令の実行はデータ処理システム(3)における命令コマンドの実行によりトリガされる)、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を、
> 基本関数を命令に変換することによって、
> 命令の少なくとも一部分がユニット(6)におけるそれらの実行中に遵守しなければならない連鎖を指定することによって、
> および、基本コマンドを、使用される命令に対応する命令コマンドに変換することによって、
変更することによって、
変更すること、
を含み
→ 使用フェーズ(U)の間に、ユニット(6)の存在時に、ユニット(6)で実行される命令の連鎖が期待されるものに対応しないことが検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
を含む請求項9に記載の方法。 - → 保護フェーズ(P)の間に、
・− 命令セットとして、少なくとも一部分の命令がレジスタと連携し、結果を返す目的で少なくとも1つのオペランドを使用する命令セット、
− レジスタと連携する少なくとも一部分の命令について、
> 命令の機能を定義するパート(PF)、
> および、命令の実行に対する期待される連鎖を定義するパート、
(前記パートは、
◇ 命令の識別フィールド(CII)、
◇ および、命令の各オペランドごとに、
* フラグフィールド(CDk)、
* および、オペランドの期待される識別フィールド(CIPk)、
に対応するビットフィールド
を含むパート)、
− 活用手段に属し命令セットによって使用される各レジスタごとに、該レジスタ内にその結果を返した最後の命令の識別が自動的に記憶される生成識別フィールド(CIGv)、
− 検出手段(17)として、命令の実行中に、各オペランドごとに、フラグフィールド(CDk)が要求する時に、該オペランドによって使用されるレジスタに対応する生成識別フィールド(CIPk)と、該オペランドの出所の期待される識別フィールド(CIPk)との等値性をチェックすることが可能な手段、
− および、強制手段(18)として、チェックされた等値性の少なくとも1つが偽である場合に、命令の結果を変更することが可能な手段、
を定義すること、
を含む請求項10に記載の方法。 - → 保護フェーズ(P)の間に、
・− トリガコマンドとして、基本コマンドまたは命令コマンド、
− 従属関数として、基本関数または命令、
− オーダーとして、データ処理システム(3)によってユニット(6)へ送信される情報に少なくとも部分的に対応し、対応する従属関数の実行をトリガするようなトリガコマンドに対する少なくとも1つの引数、
− リネームされたオーダーを有するトリガコマンドを取得するように、オーダーをリネームすることが可能なオーダーをリネームする方法、
− および、使用フェーズ(U)の間にユニット(6)で使用されるように設計され、リネームされたオーダーから実行すべき従属関数を復元することが可能な復元手段(20)、
を定義すること、
・ ユニット(6)が復元手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中でトリガコマンドを選択することによって、
− 対応する従属関数の識別を隠蔽するように、選択されたトリガコマンドのオーダーをリネームすることにより被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更することによって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、リネームされたオーダーを有するトリガコマンドが実行されるようなもの、
> および復元手段(20)も実施する活用手段を含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ユニット(6)へのアップロード後、被保護ソフトウェア(2p)の実行中に、その実行が第1実行パート(2pes)によりトリガされる従属関数の識別が第2実行パート(2peu)によって復元され、従属関数が第2実行パート(2peu)によって実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分に含まれるリネームされたオーダーを有するトリガコマンドが要求するたびに、対応する従属関数の識別とその実行とをユニット(6)で復元し、該部分が正しく実行されることにより、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)における従属関数の実行をトリガすることを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む請求項3、4または10に記載の方法。 - → 保護フェーズ(P)の間に、
・ 少なくとも1つの従属関数について、アルゴリズム的に等価であるが、そのリネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群を定義すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、リネームされたオーダーを有する少なくとも1つのトリガコマンドを選択することによって、
− および、リネームされたオーダーを有する1つの選択されたトリガコマンドの少なくともリネームされたオーダーを、同じ群の従属関数をトリガする別のリネームされたオーダーと置換することにより、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更することによって、
変更すること、
を含む請求項12に記載の方法。 - → 保護フェーズ(P)の間に、少なくとも1つの従属関数について、アルゴリズム的に等価な従属関数群を、
− ユニット(6)で実行すべき従属関数の機能パートを定義する情報にノイズフィールドを連結することによって、
− または、命令の識別フィールド(CII)およびオペランドの期待される識別フィールド(CIPk)を使用することによって、
定義すること、
を含む請求項13に記載の方法。 - → 保護フェーズ(P)の間に、
・− オーダーをリネームする方法として、オーダーを暗号化する暗号化方法、
− および、復元手段(20)として、リネームされたオーダーを復号化することによりユニット(6)で実行すべき従属関数の識別を復元する復号化方法を実施する手段、
を定義すること、
を含む請求項12、13または14に記載の方法。 - → 保護フェーズ(P)の間に、
・ 被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、少なくとも1つの選択されたアルゴリズム処理で実行される少なくとも1つの条件分岐を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された条件分岐の機能が、ユニット(6)で、第2実行パート(2peu)によって実行されるような変更である)によって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された条件分岐の機能がユニット(6)で実行されるようなもの、
> 被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ユニット(6)へのアップロード後、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)が現れ、それによって、少なくとも1つの選択された条件分岐の機能が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分が要求するたびに、ユニット(6)で少なくとも1つの条件分岐の機能を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)で条件分岐の機能を実行することを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む請求項2ないし15のいずれか1項に記載の方法。 - 保護フェーズ(P)の間に、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、少なくとも1つの選択された条件分岐系列を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること
(この変更は、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された条件分岐系列の全機能が、ユニット(6)で、第2実行パート(2peu)によって実行されるような変更である)によって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された条件分岐系列の機能がユニット(6)で実行されるようなもの、
> 被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ユニット(6)へのアップロード後、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)が現れ、それによって、少なくとも1つの選択された条件分岐系列の全機能が実行されるようなもの、
を生成することによって、
変更することを含む請求項16に記載の方法。 - 保護フェーズ(P)を、保護すべきソフトウェアに依存しない先行保護サブフェーズ(P1)および保護すべきソフトウェアに依存する後続保護サブフェーズ(P2)に分割することを含む請求項1ないし17のいずれか1項に記載の方法。
- 先行保護サブフェーズ(P1)の間に、すべての定義が実行される定義段階(S11)を挿入することを含む請求項18に記載の方法。
- 定義段階(S11)の後に、活用手段が構築される構築段階(S12)を挿入することを含む請求項19に記載の方法。
- 構築段階(S12)の後に、事前カスタマイズ済みユニット(66)を取得する目的で、活用手段の少なくとも一部分をブランクユニット(60)にアップロードすることを含む事前カスタマイズ段階(S13)を挿入することを含む請求項20に記載の方法。
- 先行保護サブフェーズ(P1)の間に、被保護ソフトウェアの生成を支援し、または、ソフトウェア保護を自動化することを可能にするツールが作成されるツール作成段階(S14)を挿入することを含む請求項19または20に記載の方法。
- 後続保護サブフェーズ(P2)を、
・ バルナラブル・ソフトウェア(2v)から被保護ソフトウェア(2p)が作成される作成段階(S21)、
・ 場合によって、被保護ソフトウェア(2p)が変更される変更段階(S22)、
・ および場合によって、
− 活用手段を場合によって含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)が、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つのブランクユニット(60)にアップロードされ、
− または、活用手段を場合によって含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)の一部分が、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つの事前カスタマイズ済みユニット(66)にアップロードされる、
カスタマイズ段階(S23)、
に分割することを含む請求項18および21に記載の方法。 - 作成段階(S21)の間に、および場合によって変更段階(S22)の間に、被保護ソフトウェアの生成を支援し、またはソフトウェア保護を自動化する少なくとも1つのツールを使用することを含む請求項22および23に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0110250A FR2828305B1 (fr) | 2001-07-31 | 2001-07-31 | Procede pour proteger un logiciel a l'aide d'un principe dit de "variable" contre son utilisation non autorisee |
PCT/FR2002/002338 WO2003012649A2 (fr) | 2001-07-31 | 2002-07-04 | Procede pour proteger un logiciel a l'aide de 'variables' contre son utilisation non autorisee |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004537806A JP2004537806A (ja) | 2004-12-16 |
JP3949107B2 true JP3949107B2 (ja) | 2007-07-25 |
Family
ID=8866125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003517758A Expired - Fee Related JP3949107B2 (ja) | 2001-07-31 | 2002-07-04 | 「変数」原理により不正使用に対してソフトウェアを保護する方法 |
Country Status (29)
Country | Link |
---|---|
EP (1) | EP1412861A2 (ja) |
JP (1) | JP3949107B2 (ja) |
KR (1) | KR100940347B1 (ja) |
CN (1) | CN1288525C (ja) |
AP (1) | AP2004002958A0 (ja) |
AU (1) | AU2002325998B2 (ja) |
BR (1) | BR0211374A (ja) |
CA (1) | CA2454090A1 (ja) |
CO (1) | CO5550508A2 (ja) |
CR (1) | CR7231A (ja) |
EA (1) | EA005465B1 (ja) |
EC (1) | ECSP044951A (ja) |
FR (1) | FR2828305B1 (ja) |
GE (1) | GEP20053647B (ja) |
HK (1) | HK1070155A1 (ja) |
HR (1) | HRP20040049A2 (ja) |
HU (1) | HUP0400228A2 (ja) |
IL (1) | IL159953A0 (ja) |
IS (1) | IS7121A (ja) |
MA (1) | MA26126A1 (ja) |
MX (1) | MXPA04000488A (ja) |
NO (1) | NO20040232L (ja) |
OA (1) | OA12699A (ja) |
PL (1) | PL367366A1 (ja) |
TN (1) | TNSN04012A1 (ja) |
UA (1) | UA77186C2 (ja) |
WO (1) | WO2003012649A2 (ja) |
YU (1) | YU5404A (ja) |
ZA (1) | ZA200400348B (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2852415B1 (fr) * | 2003-03-11 | 2005-06-24 | Actikey | Support de type cle, de controle de l'acces a des donnees et/ou a un logiciel et procede correspondant |
CN107194212B (zh) * | 2017-06-21 | 2020-04-17 | 株洲中车时代电气股份有限公司 | 一种显示器源代码中协议内容的保护方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2634917A1 (fr) * | 1988-08-01 | 1990-02-02 | Pionchon Philippe | Procede et dispositif de protection d'un logiciel, en particulier contre les copies non autorisees |
US5754646A (en) * | 1995-07-19 | 1998-05-19 | Cable Television Laboratories, Inc. | Method for protecting publicly distributed software |
AU7957998A (en) * | 1997-06-09 | 1999-01-25 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
JP2002518727A (ja) * | 1998-06-12 | 2002-06-25 | ジェムプリュス | ソフトウェア製品の実行の制御方法 |
-
2001
- 2001-07-31 FR FR0110250A patent/FR2828305B1/fr not_active Expired - Lifetime
-
2002
- 2002-04-07 UA UA2004010469A patent/UA77186C2/uk unknown
- 2002-07-04 CA CA002454090A patent/CA2454090A1/fr not_active Abandoned
- 2002-07-04 EP EP02760378A patent/EP1412861A2/fr not_active Withdrawn
- 2002-07-04 AU AU2002325998A patent/AU2002325998B2/en not_active Ceased
- 2002-07-04 IL IL15995302A patent/IL159953A0/xx unknown
- 2002-07-04 YU YU5404A patent/YU5404A/sh unknown
- 2002-07-04 BR BR0211374-0A patent/BR0211374A/pt not_active IP Right Cessation
- 2002-07-04 WO PCT/FR2002/002338 patent/WO2003012649A2/fr active Application Filing
- 2002-07-04 HU HU0400228A patent/HUP0400228A2/hu unknown
- 2002-07-04 AP APAP/P/2004/002958A patent/AP2004002958A0/en unknown
- 2002-07-04 KR KR1020047000804A patent/KR100940347B1/ko not_active IP Right Cessation
- 2002-07-04 GE GE5431A patent/GEP20053647B/en unknown
- 2002-07-04 MX MXPA04000488A patent/MXPA04000488A/es unknown
- 2002-07-04 EA EA200400057A patent/EA005465B1/ru not_active IP Right Cessation
- 2002-07-04 JP JP2003517758A patent/JP3949107B2/ja not_active Expired - Fee Related
- 2002-07-04 CN CNB028146840A patent/CN1288525C/zh not_active Expired - Fee Related
- 2002-07-04 PL PL02367366A patent/PL367366A1/xx not_active Application Discontinuation
- 2002-07-04 OA OA1200400013A patent/OA12699A/en unknown
-
2004
- 2004-01-16 ZA ZA2004/00348A patent/ZA200400348B/en unknown
- 2004-01-19 NO NO20040232A patent/NO20040232L/no not_active Application Discontinuation
- 2004-01-19 HR HR20040049A patent/HRP20040049A2/hr not_active Application Discontinuation
- 2004-01-19 CR CR7231A patent/CR7231A/es unknown
- 2004-01-19 TN TNP2004000012A patent/TNSN04012A1/fr unknown
- 2004-01-19 MA MA27492A patent/MA26126A1/fr unknown
- 2004-01-20 IS IS7121A patent/IS7121A/is unknown
- 2004-01-20 CO CO04003765A patent/CO5550508A2/es not_active Application Discontinuation
- 2004-01-20 EC EC2004004951A patent/ECSP044951A/es unknown
-
2005
- 2005-03-30 HK HK05102678A patent/HK1070155A1/xx unknown
Also Published As
Publication number | Publication date |
---|---|
HRP20040049A2 (en) | 2004-06-30 |
CA2454090A1 (fr) | 2003-02-13 |
IS7121A (is) | 2004-01-20 |
MA26126A1 (fr) | 2004-04-01 |
OA12699A (en) | 2006-06-23 |
EA005465B1 (ru) | 2005-02-24 |
TNSN04012A1 (fr) | 2006-06-01 |
FR2828305A1 (fr) | 2003-02-07 |
BR0211374A (pt) | 2004-07-20 |
HK1070155A1 (en) | 2005-06-10 |
FR2828305B1 (fr) | 2010-09-03 |
ECSP044951A (es) | 2004-04-28 |
UA77186C2 (en) | 2006-11-15 |
AU2002325998B2 (en) | 2008-10-30 |
ZA200400348B (en) | 2005-03-30 |
CN1535410A (zh) | 2004-10-06 |
HUP0400228A2 (en) | 2004-09-28 |
IL159953A0 (en) | 2004-06-20 |
WO2003012649A3 (fr) | 2003-12-24 |
JP2004537806A (ja) | 2004-12-16 |
GEP20053647B (en) | 2005-10-25 |
MXPA04000488A (es) | 2005-03-07 |
PL367366A1 (en) | 2005-02-21 |
CN1288525C (zh) | 2006-12-06 |
AP2004002958A0 (en) | 2004-03-31 |
WO2003012649A2 (fr) | 2003-02-13 |
NO20040232L (no) | 2004-03-30 |
CO5550508A2 (es) | 2005-08-31 |
EP1412861A2 (fr) | 2004-04-28 |
KR100940347B1 (ko) | 2010-02-04 |
KR20040027881A (ko) | 2004-04-01 |
EA200400057A1 (ru) | 2004-06-24 |
CR7231A (es) | 2005-07-21 |
YU5404A (sh) | 2006-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070294770A1 (en) | Method to Protect Software Against Unwanted Use with a Variable Principle | |
JP3949105B2 (ja) | 「リネーム」原理を使用してその無許可使用に対してソフトウェアを保護する方法 | |
JP3949108B2 (ja) | 「一時的分離」原理により不正使用に対してソフトウェアを保護する方法 | |
US20070136816A1 (en) | Method to protect software against unwanted use with a detection and coercion principle | |
JP3949107B2 (ja) | 「変数」原理により不正使用に対してソフトウェアを保護する方法 | |
JP3949103B2 (ja) | 「条件分岐」原理により不正使用に対してソフトウェアを保護する方法 | |
CN108021790B (zh) | 文件保护方法、装置、计算设备及计算机存储介质 | |
US20070283437A1 (en) | Method to Protect Software Against Unwanted Use with a "Temporal Dissociation" Principle | |
JP3949106B2 (ja) | 「基本関数」原理により不正使用に対してソフトウェアを保護する方法 | |
KR20200017120A (ko) | 코스 스프레잉을 이용한 코드 보호 방법 및 시스템 | |
JP3949104B2 (ja) | 「検出および強制」原理により不正使用に対してソフトウェアを保護する方法 | |
JP2009104589A (ja) | 情報処理装置及びその方法、プログラム、記録媒体 | |
US7343494B2 (en) | Method to protect software against unwanted use with a “renaming” principle | |
US7502940B2 (en) | Method to protect software against unwanted use with a “conditional branch” principle | |
US7434064B2 (en) | Method to protect software against unwanted use with a “elementary functions” principle | |
KR20200017121A (ko) | 원타임 코드를 이용한 코드 보호 방법 및 시스템 | |
KR20200017122A (ko) | 코드 체인 검증을 이용한 코드 보호 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050623 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060822 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20061122 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20061130 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070222 |
|
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: 20070320 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070417 |
|
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: 20100427 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110427 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120427 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120427 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130427 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140427 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |