JP2004537806A - 「変数」原理により不正使用に対してソフトウェアを保護する方法 - Google Patents

「変数」原理により不正使用に対してソフトウェアを保護する方法 Download PDF

Info

Publication number
JP2004537806A
JP2004537806A JP2003517758A JP2003517758A JP2004537806A JP 2004537806 A JP2004537806 A JP 2004537806A JP 2003517758 A JP2003517758 A JP 2003517758A JP 2003517758 A JP2003517758 A JP 2003517758A JP 2004537806 A JP2004537806 A JP 2004537806A
Authority
JP
Japan
Prior art keywords
execution
unit
protected software
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.)
Granted
Application number
JP2003517758A
Other languages
English (en)
Other versions
JP3949107B2 (ja
Inventor
ジァーン−クリストフ キュノドゥ,
ギレ スグロ,
Original Assignee
バリディ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by バリディ filed Critical バリディ
Publication of JP2004537806A publication Critical patent/JP2004537806A/ja
Application granted granted Critical
Publication of JP3949107B2 publication Critical patent/JP3949107B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)

Abstract

本発明は、少なくとも1つのユニットにより、バルナラブル・ソフトウェアをその無許可使用に対して保護する方法に関する。当該バルナラブル・ソフトウェアはデータ処理システム上で動作する。本方法は、バルナラブル・ソフトウェアのソース中で少なくとも1つの変数を選択することによって、バルナラブル・ソフトウェアのソースを変更することにより被保護ソフトウェアのソースを生成することによって、被保護ソフトウェアを生成するので、選択された変数がユニットに存在する。

Description

【0001】
本発明は、広義にはデータ処理システムの技術分野に関し、特に、無許可使用に対して前記データ処理システム上で実行されるソフトウェアを保護する手段を目的とする。
【0002】
本発明の主題は、特に、記憶ユニットまたは処理/記憶ユニットを使用して無許可使用に対してソフトウェアを保護する手段を目的とする。このようなユニットは、USBポート上のチップカードまたは実体キーによって一般的に実現されている。
【0003】
上記の技術分野において、主要な問題は、許諾権に対する支払をしていないユーザによるソフトウェアの無許可使用に関するものである。このソフトウェアの不法使用は、ソフトウェア編集者、ソフトウェア販売者、および/または、そのようなソフトウェアを製品にまとめるいかなる者にとっても明らかな損失を引き起こす。このような不法コピーを防止するため、最新の技術では、ソフトウェアを保護するために種々の解決法が提案されている。
【0004】
例えば、保護キーまたは「ドングル」と称する物理コンポーネントのような、ハードウェア保護システムを利用する保護の解決法が知られている。このような保護キーは、キーの存在時にのみソフトウェアが実行されることを保証しなければならない。しかし、この解決法は、回避しやすいという不都合を生じるので有効でない。悪意者あるいはハッカーが、逆アセンブラのような特殊ツールの助けを借りて、保護キーの制御命令を削除する可能性がある。その場合、ソフトウェアの改変バージョンに対応する不法コピーを保護なしで実行可能にすることが可能となる。さらに、同一システムに2個より多くの保護キーを接続することが困難であるため、この解決法をすべてのソフトウェアに一般化することはできない。
【0005】
本発明の主題は、正確には、特別の記憶ユニットまたは処理/記憶ユニットを使用して、ソフトウェアが完全に機能するためにこのようなユニットの存在が必要であるようにして、無許可使用に対してソフトウェアを保護するプロセスを提案することにより、上記の問題点に対する解決法を見出すことを目的とする。
【0006】
このような目標を達成するため、本発明の主題は、少なくとも記憶手段を含む少なくとも1つのブランクユニットを使用して、ソースから生成されてデータ処理システム上で作動するバルナラブル・ソフトウェアをその無許可使用に対して保護することに関する。本発明によるプロセスは、:
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− バルナラブル・ソフトウェアのソース中で、
> バルナラブル・ソフトウェアの実行中に該バルナラブル・ソフトウェアの状態を部分的に規定する少なくとも1つの変数、
> および、少なくとも1つの選択された変数を含む少なくとも1つの部分、
を選択することによって、
− バルナラブル・ソフトウェアのソースの少なくとも1つの選択された部分を変更することにより、バルナラブル・ソフトウェアのソースから被保護ソフトウェアのソースを生成すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがブランクユニットに存在することにより該ブランクユニットがユニットに変換されるような変更である)によって、
− および、被保護ソフトウェアのソースから被保護ソフトウェアの第1オブジェクトパートを生成すること(前記第1オブジェクトパートは、被保護ソフトウェアの実行中に第1実行パートが現れるようなオブジェクトパートであり、第1実行パートはデータ処理システムで実行され、その少なくとも一部分は少なくとも変数または変数の少なくともコピーがユニットに存在することを考慮する)によって、
作成すること、
を含み、
→ 被保護ソフトウェアが実行される使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分が要求するたびに、ユニット内に存在する変数または変数のコピーを使用することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ およびユニットの不存在時に、ユニットに存在する変数または変数のコピーを使用することを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0007】
好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、
> 被保護ソフトウェアの実行中に、少なくとも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実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0008】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 処理手段も含むユニットで実行され得る基本関数のセット、、
− および、前記基本関数のセットに対する基本コマンドのセットであり、データ処理システムで実行され、ユニットにおける基本関数の実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ 前記セットの基本関数を実行することができるユニットにブランクユニットを変換することが可能な活用手段を構築すること(前記基本関数の実行はデータ処理システムにおける基本コマンドの実行によってトリガされる)、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、
> 被保護ソフトウェアの実行中に、少なくとも1つの選択された変数を使用し、少なくとも1つの結果変数を取得することが可能な少なくとも1つのアルゴリズム処理、
> および、少なくとも1つの選択されたアルゴリズム処理を含む少なくとも1つの部分、
を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、
> 被保護ソフトウェアの実行中に、第1実行パートがデータ処理システムで実行され、第2実行パートがユニットで実行され、
> 少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パートによって実行され、
> 少なくとも1つの選択されたアルゴリズム処理が、被保護ソフトウェアの実行中に、該アルゴリズム処理が基本関数を使用して第2実行パートによって実行されるように分割され、
> 少なくとも1つの選択されたアルゴリズム処理について、被保護ソフトウェアの実行中に、各基本コマンドが、第1実行パートによって実行され、ユニットで、第2実行パートによる基本関数の実行をトリガするように、基本コマンドが被保護ソフトウェアのソースに統合され、
> および、基本コマンドのシーケンスが被保護ソフトウェアの実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパート、該第1オブジェクトパートは、被保護ソフトウェアの実行中に、選択されたシーケンスに従って基本コマンドが実行されるようなオブジェクトパートである、
> および活用手段を含む被保護ソフトウェアの第2オブジェクトパートであり、ブランクユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、第1実行パートによりトリガされた基本関数が実行されるようなもの、
を生成することによって、
変更すること、
・ および、ユニットを取得する目的で、ブランクユニットに第2オブジェクトパートをアップロードすること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれる基本コマンドが要求するたびに、ユニットで対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける基本関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0009】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− ユニットで実行され得る基本関数のセット、
− および、前記基本関数のセットに対する基本コマンドのセットであり、データ処理システムで実行され、ユニットにおける基本関数の実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ ユニットが前記セットの基本関数を実行することを可能にする活用手段を構築すること(前記基本関数の実行はデータ処理システムにおける基本コマンドの実行によってトリガされる)、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、被保護ソフトウェアの実行中にアルゴリズム処理の機能を実行する少なくとも1つのステップを選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、
> 少なくとも1つの選択されたステップが、被保護ソフトウェアの実行中に、該ステップが基本関数を使用して第2実行パートによって実行されるように分割され、
> 少なくとも1つの選択されたステップについて、被保護ソフトウェアの実行中に、各基本コマンドが、第1実行パートによって実行され、ユニットで、第2実行パートによる基本関数の実行をトリガするように、基本コマンドが被保護ソフトウェアのソースに統合され、
> および基本コマンドのシーケンスが被保護ソフトウェアの実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、選択されたシーケンスに従って基本コマンドが実行されるようなもの、
> および、活用手段も含む被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、第1実行パートによりトリガされた基本関数が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれる基本コマンドが要求するたびに、ユニットで対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける基本関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0010】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− ユニットで少なくとも部分的に監視され得る少なくとも1つのソフトウェア実行特性、
− 少なくとも1つのソフトウェア実行特性が遵守すべき少なくとも1つの基準、
− ユニットで実施され、少なくとも1つのソフトウェア実行特性が少なくとも1つの関連する基準を遵守していないことを検出することが可能な検出手段、
− および、ユニットで実施され、少なくとも1つの基準が遵守されていない時、データ処理システムに通知し、および/または、ソフトウェアの実行を変更することが可能な強制手段、
を定義すること、
・ ユニットが検出手段および強制手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 監視され得るソフトウェア実行特性のうちから、監視すべき少なくとも1つのソフトウェア実行特性を選択することによって、
− 少なくとも1つの選択されたソフトウェア実行特性が遵守すべき少なくとも1つの基準を選択することによって、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択されたソフトウェア実行特性が監視されるべき基本関数を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された実行特性が第2実行パートによって監視され、基準が遵守されていないことが、データ処理システムへの通知、および/または、被保護ソフトウェアの実行の変更につながるような変更である)によって、
− および、検出手段および強制手段も実施する活用手段を含む被保護ソフトウェアの第2オブジェクトパートを生成すること(前記第2オブジェクトパートは、ユニットへのアップロード後、被保護ソフトウェアの実行中に、少なくとも1つの第1ソフトウェア実行特性が監視され、基準が遵守されていないことが、データ処理システムへの通知、および/または、被保護ソフトウェアの実行の変更につながるようなオブジェクトパートである)によって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、
− 被保護ソフトウェアのすべての変更された部分のすべての監視されている実行特性に対応するすべての基準が遵守されている限り、被保護ソフトウェアの前記部分が名目通り作動し、結果として被保護ソフトウェアが名目通り作動することを可能にすること、
− および、被保護ソフトウェアの一部分の監視されている実行特性に対応する少なくとも1つの基準が遵守されていない場合、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0011】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェアの機能の使用状況の計測変数、
− 遵守すべき基準として、各計測変数に関連する少なくとも1つのしきい値、
− および、少なくとも1つの計測変数を更新することが可能な有効化手段、
を定義すること、
・ ユニットが有効化手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の少なくとも1つの計測変数を選択することによって、
−> 計測変数を使用して使用が監視され得る被保護ソフトウェアの少なくとも1つの機能、
> 前記機能の使用状況を定量化するために使用される少なくとも1つの計測変数、
> 前記機能の使用限度に対応する選択された計測変数に関連する少なくとも1つのしきい値、
> および、前記機能の使用状況に依存する選択された計測変数の少なくとも1つの更新方法、
を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、計測変数が前記機能の使用状況に依存する第2実行パートによって実現され、少なくとも1つのしきい値超過が考慮されるような変更である)によって、
を変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、そして少なくとも1つの使用限度に対応する少なくとも1つのしきい値超過が検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0012】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 少なくとも1つの計測変数について、いくつかの関連するしきい値、
− および、前記しきい値のそれぞれに対応する相異なる強制手段、
を定義すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、機能の相異なる使用限度に対応するいくつかのしきい値が関連づけられなければならない少なくとも1つの選択された計測変数を選択することによって、
− 選択された計測変数に関連する少なくとも2つのしきい値を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、種々のしきい値の超過が第2実行パートによって別様に考慮されるような変更である)によって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、
− 第1しきい値の超過が検出された場合、被保護ソフトウェアに対して、対応する機能をそれ以上使用しないように命じること、
− 第2しきい値の超過が検出された場合、被保護ソフトウェアの対応する機能、および/または、少なくとも一部分を無効にすること、
を含む。
【0013】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1つの追加使用を認めることが可能な補充手段を定義すること、
・ ユニットが補充手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの追加使用を認めることができなければならない機能の使用を制限することが可能な少なくとも1つの選択された計測変数を選択することによって、
− および、少なくとも1つの選択された部分を変更すること(この変更は、補充フェーズと呼ばれるフェーズの間、選択された計測変数に対応する少なくとも1つの機能の少なくとも1つの追加使用が認められるような変更である)によって、
変更すること、
を含み、
→ 補充フェーズの間に、
・機能の少なくとも1つの追加使用を可能にするために、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連するしきい値を再有効化すること、
を含む。
【0014】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェア使用状況プロファイル、
− および、遵守すべき基準として、少なくとも1つのソフトウェア実行特徴、
を定義すること、
・ および、被保護ソフトウェアを、
− 少なくとも1つのソフトウェア使用状況プロファイルを監視することをソフトウェア実行特性として選択することによって、
− 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない少なくとも1つの実行特徴を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、第2実行パートがすべての選択された実行特徴を遵守しなければならないような変更である)によって、
変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、そして少なくとも1つの実行特徴が遵守されていないことが検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0015】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− ユニットで実行され得る命令のセット、
− 前記命令セットに対する命令コマンドのセットであり、データ処理システムで実行され、ユニットで命令の実行をトリガし得る前記命令コマンドのセット、
− 使用状況プロファイルとして、命令の連鎖、
− 実行特徴として、命令の実行に対して期待される連鎖、
− 検出手段として、命令の連鎖が期待されるものに対応しないことを検出することが可能な手段、
− および、強制手段として、命令の連鎖が期待されるものに対応しない場合にデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更することが可能な手段、
を定義すること、
・ ユニットが命令セットの命令を実行することも可能にする活用手段を構築すること(該命令の実行はデータ処理システムにおける命令コマンドの実行によりトリガされる)、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を、
> 基本関数を命令に変換することによって、
> 命令の少なくとも一部分がユニットにおけるそれらの実行中に遵守しなければならない連鎖を指定することによって、
> および、基本コマンドを、使用される命令に対応する命令コマンドに変換することによって、
変更することによって、
変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、ユニットで実行される命令の連鎖が期待されるものに対応しないことが検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0016】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 命令セットとして、少なくとも一部分の命令がレジスタと連携し、結果を返す目的で少なくとも1つのオペランドを使用する命令セット、
− レジスタと連携する少なくとも一部分の命令について、
> 命令の機能を定義するパート、
> および、命令の実行に対する期待される連鎖を定義するパート、
(前記パートは、
◇ 命令の識別フィールド、
◇ および、命令の各オペランドごとに、
* フラグフィールド、
* および、オペランドの期待される識別フィールド、
に対応するビットフィールドを含むパート)、
− 活用手段に属し命令セットによって使用される各レジスタごとに、該レジスタ内にその結果を返した最後の命令の識別が自動的に記憶される生成識別フィールド、
− 検出手段として、命令の実行中に、各オペランドごとに、フラグフィールドが要求する時に、該オペランドによって使用されるレジスタに対応する生成識別フィールドと、該オペランドの出所の期待される識別フィールドとの等値性をチェックすることが可能な手段、
− および、強制手段として、チェックされた等値性の少なくとも1つが偽である場合に、命令の結果を変更することが可能な手段、
を定義すること、
を含む。
【0017】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− トリガコマンドとして、基本コマンドまたは命令コマンド、
− 従属関数として、基本関数または命令、
− オーダーとして、データ処理システムによってユニットへ送信される情報に少なくとも部分的に対応し、対応する従属関数の実行をトリガするようなトリガコマンドに対する少なくとも1つの引数、
− リネームされたオーダーを有するトリガコマンドを取得するように、オーダーをリネームすることが可能なオーダーをリネームする方法、
− および、使用フェーズの間にユニットで使用されるように設計され、リネームされたオーダーから実行すべき従属関数を復元することが可能な復元手段、
を定義すること、
・ ユニットが復元手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中でトリガコマンドを選択することによって、
− 対応する従属関数の識別を隠蔽するように、選択されたトリガコマンドのオーダーをリネームすることによって被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更することによって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、リネームされたオーダーを有するトリガコマンドが実行されるようなもの、
> および、復元手段も実施する活用手段を含む被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、その実行が第1実行パートによりトリガされる従属関数の識別が第2実行パートによって復元され、従属関数が第2実行パートによって実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれるリネームされたオーダーを有するトリガコマンドが要求するたびに、対応する従属関数の識別をユニットで復元し、該部分が正しく実行されることにより、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける従属関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0018】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 少なくとも1つの従属関数について、アルゴリズム的に等価であるが、そのリネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群を定義すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、リネームされたオーダーを有する少なくとも1つのトリガコマンドを選択することによって、
− および、リネームされたオーダーを有する1つの選択されたトリガコマンドの少なくともリネームされたオーダーを、同じ群の従属関数をトリガする別のリネームされたオーダーと置換することにより、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更することによって、
変更すること、
を含む。
【0019】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、少なくとも1つの従属関数について、アルゴリズム的に等価な従属関数群を、
− ユニットで実行すべき従属関数の機能パートを定義する情報にノイズフィールドを連結することによって、
− または、命令の識別フィールドおよびオペランドの期待される識別フィールドを使用することによって、
定義すること、
を含む。
【0020】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− オーダーをリネームする方法として、オーダーを暗号化する暗号化方法、
− および、復元手段として、リネームされたオーダーを復号化することによりユニットで実行すべき従属関数の識別を復元する復号化方法を実施する手段、
を定義すること、
を含む。
【0021】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択されたアルゴリズム処理で実行される少なくとも1つの条件分岐を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐の機能が、ユニットで、第2実行パートによって実行されるような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐の機能がユニットで実行されるようなもの、
> 被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された条件分岐の機能が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分が要求するたびに、ユニットで少なくとも1つの条件分岐の機能を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットで条件分岐の機能を実行することを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0022】
変形実施形態によれば、本発明によるプロセスは、保護フェーズの間に、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択された条件分岐系列を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐系列の全機能が、ユニットで、第2実行パートによって実行されるような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐系列の機能がユニットで実行されるようなもの、
> 被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された条件分岐系列の全機能が実行されるようなもの、
を生成することによって、
変更することを含む。
【0023】
このように、本発明によるプロセスは、実行されるソフトウェアの一部を含むという特性を示す記憶ユニットを使用することによってソフトウェアの使用を保護することを可能にする。したがって、記憶ユニットなしに作動を試みるソフトウェアのいかなる派生バージョンも、実行中に記憶ユニットに含まれるソフトウェアのその部分を再作成することを要求し、さもなければソフトウェアの該派生バージョンは完全に機能しない。
【0024】
本発明の主題の限定されない例、実施形態、および実装を示す、添付図面を参照した以下の説明において、その他の様々な特性が明らかとなる。
【0025】
以降の説明では、以下の定義を使用する。
【0026】
・ データ処理システム3とは、プログラムを実行できるシステムである。
【0027】
・ 記憶ユニットとは、データ処理システム3によって提供されるデータを受け取り、データ処理システム3の要求時にそのデータを格納および復元できるユニットである。
【0028】
・ 処理/記憶ユニットとは、以下を実行できるユニットである。
− データ処理システム3によって提供されるデータを受け取る。
− データをデータ処理システム3に返す。
− ユニットの電源が切れていても、データを少なくとも部分的に秘密に格納し、このデータの少なくとも一部を保持する。
− データに対してアルゴリズム処理を実行し、その結果の一部またはすべてを秘密にする。
【0029】
・ ユニット6とは、本発明に従うプロセスを実装する記憶ユニットまたは処理/記憶ユニットである。
【0030】
・ ブランクユニット60とは、本発明に従うプロセスを実装しないが、データを受け取り、ユニット6に変換できるユニットである。
【0031】
・ ブランクユニット60は、本発明に従うプロセスによって保護されたソフトウェアの実行中にユニット6になり、実行後に再びブランクユニット60になることができる。
【0032】
・ 事前カスタマイズ済みユニット66とは、データの一部を受け取っているため、補足データを受け取った後にユニット6に変換できるブランクユニット60である。
【0033】
・ 情報をブランクユニット60または事前カスタマイズ済みユニット66へアップロードすることは、情報をブランクユニット60または事前カスタマイズ済みユニット66へ転送し、転送された情報を格納することに相当する。この転送には、情報形式の変更を含むことができる。
【0034】
・ データ処理システム3に含まれている変数、関数、またはデータを示す場合は大文字を使用し、ユニット6に含まれている変数、関数、またはデータを示す場合は小文字を使用する。
【0035】
・ 「被保護ソフトウェア」とは、本発明に従うプロセスによって実装された保護原則の少なくとも1つによって保護されているソフトウェアである。
【0036】
・ 「バルナラブル・ソフトウェア」とは、本発明に従うプロセスによって実装された保護原則のいずれによっても保護されていないソフトウェアである。
【0037】
・ バルナラブル・ソフトウェアと被保護ソフトウェアの違いが重要ではない場合は、「ソフトウェア」という言葉を使用する。
【0038】
・ ソフトウェアは、そのライフサイクルにおける検討時点(instant considered)に応じて以下の各種表現を持つ。
− ソース表現
− オブジェクト表現
− 配布
− または動的表現
【0039】
・ ソフトウェアのソース表現とは、変換後にオブジェクト表現となる表現である。ソース表現には、概念的な抽象レベルから、データ処理システムまたは処理/記憶ユニットによって直接実行可能なレベルに至るまで、様々なレベルがあり得る。
【0040】
・ ソフトウェアのオブジェクト表現は、配布への転送とデータ処理システムまたは処理/記憶ユニットへのアップロードの後で、実行できる表現のレベルに相当する。例えば、オブジェクト表現はバイナリコードや解釈されたコードなどであり得る。
【0041】
・ 配布とはオブジェクト表現を含む物理サポートまたは仮想サポートであり、ソフトウェアを使用するかどうかはユーザに任せなければならない。
【0042】
・ 動的表現は、ソフトウェアの配布からのソフトウェアの実行に相当する。
【0043】
・ ソフトウェアの部分とはソフトウェアの一部であり、例えば、1つ以上の連続した命令または連続していない命令、および/または、1つ以上の連続した機能ブロックまたは連続していない機能ブロック、および/または、1つ以上の関数、および/または、1つ以上のサブプログラム、および/または、1つ以上のモジュールであり得る。また、ソフトウェアの部分がソフトウェアすべてに相当することもある。
【0044】
図10および図11はそれぞれ、一般的な意味でのバルナラブル・ソフトウェア2vの様々な表現と、本発明に従うプロセスに従って保護された被保護ソフトウェア2pの様々な表現を示している。
【0045】
図10は、ライフサイクルにおいて現れるバルナラブル・ソフトウェア2vの様々な表現を示している。バルナラブル・ソフトウェア2vは、以下のいずれの表現でも現れることがある。
・ ソース表現2vs
・ オブジェクト表現2vo
・ 配布2vd。配布は、CDROMなどの物理配布媒体の形式またはネットワーク(GSMやインターネットなど)を介して配布されるファイルの形式をとることが多い。
・ または、一般に少なくとも1つのプロセッサ4を搭載する周知の種類のデータ処理システム3上でのバルナラブル・ソフトウェア2vの実行に相当する動的表現2ve。
【0046】
図11は、ライフサイクルにおいて現れる被保護ソフトウェア2pの様々な表現を示している。被保護ソフトウェア2pは、以下のいずれの表現でも現れることがある。
・ データ処理システム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が含まれる。
【0047】
被保護ソフトウェア2pの様々な表現間の違いが重要でない場合は、「被保護ソフトウェアの第1部分」および「被保護ソフトウェアの第2部分」という言葉を使用するものとする。
【0048】
図11の動的表現に従う本発明に従うプロセスの実装では、リンク5によってユニット6に接続されたデータ処理システム3を備える装置1pを使用する。データ処理システム3はどのような種類でもよいが、一般には少なくとも1つのプロセッサ4を搭載している。データ処理システム3は、コンピュータ、あるいは各種の機械、機器、固定または移動製品、または一般的な意味での車両などの一部であり得る。リンク5は、シリアルリンク、USBバス、無線リンク、光リンク、ネットワークリンク、データ処理システム3の回路への直接的電気接続など、どの方法でも実現できる。ユニット6は、データ処理システム3のプロセッサ4と同一の集積回路内に物理的に配置できることに注意すべきである。この場合、ユニット6はデータ処理システム3のプロセッサ4との関連からコプロセッサとみなすことができ、リンク5は集積回路内にある。
【0049】
図20〜22は、本発明に従う保護プロセスの実装を可能にする装置1pの様々な実施形態を具体的に、しかも限定しないで示している。
【0050】
図20に示した実施形態では、保護装置1pには、データ処理システム3としてのコンピュータと、ユニット6としてのチップカード7およびそのインタフェース8(一般にカードリーダーと呼ばれる)が含まれる。コンピュータ3は、リンク5によってユニット6に接続される。被保護ソフトウェア2pの実行中、被保護ソフトウェア2pが完全に機能するには、コンピュータ3で実行される第1実行パート2pesとチップカード7およびそのインタフェース8で実行される第2実行パート2peuの両方が機能しなければならない。
【0051】
図21に示した実施形態では、保護装置1pを装備する一般的な意味での製品9には、このような製品9が担う機能に適合する各種コンポーネント10が含まれる。保護装置1pには、一方で製品9に組み込まれたデータ処理システム3と、他方で製品9に関連するユニット6が含まれる。製品9が完全に機能するには、被保護ソフトウェア2pが完全に機能しなければならない。このため、被保護ソフトウェア2pの実行中には、データ処理システム3で実行される第1実行パート2pesとユニット6で実行される第2実行パート2peuの両方が機能しなければならない。したがって、被保護ソフトウェア2pによって、製品9またはその機能のいずれかの無許可の使用を間接的に防止することができる。製品9は、設備、システム、機械、玩具、屋内電気器具、電話などであり得る。
【0052】
図22に示した実施形態では、保護装置1pには、複数台のコンピュータと通信ネットワークの一部が含まれる。データ処理システム3は、第2コンピュータによって構成されるユニット6にネットワーク型リンク5によって接続された第1コンピュータである。本発明の実装では、被保護ソフトウェア2pに対するライセンスサーバとして第2コンピュータ6が使用される。被保護ソフトウェア2pの実行中、被保護ソフトウェア2pが完全に機能するには、第1コンピュータ3で実行される第1実行パート2pesと第2コンピュータ6で実行される第2実行パート2peuの両方が機能しなければならない。
【0053】
図30は、本発明に従う保護プロセスを明確に示している。バルナラブル・ソフトウェア2vがデータ処理システム3で完全に実行されていると想定されていることに注意すべきである。一方、被保護ソフトウェア2pの実装では、ユニット6の一部である転送手段13がリンク5によってデータ処理システム3に装備された転送手段12と接続されているため、被保護ソフトウェア2pの第1実行パート2pesと第2実行パート2peuとの間の通信を確立することができる。
【0054】
転送手段12、13がソフトウェア、および/または、ハードウェアの性質を持ち、データ処理システム3とユニット6との間のデータ通信を実現(および場合によっては最適化)できることに注意する必要がある。この転送手段12、13は、好ましくは使用されるリンク5の種類に依存しない被保護ソフトウェア2pを自由に使用できるように構成されている。この転送手段12、13は本発明の主題ではなく、当業者にとって周知であるため、これ以上詳しく説明しない。被保護ソフトウェア2pの第1部分には、コマンドが含まれる。被保護ソフトウェア2pの実行中、第1実行パート2pesによってこのコマンドを実行することで、第1実行パート2pesと第2実行パート2peuとの間の通信が可能になる。以降の説明では、このコマンドをIN、OUT、またはTRIGと表す。
【0055】
図31に示したように、被保護ソフトウェア2pの第2実行パート2peuの実装を可能にするために、ユニット6に保護手段14が装備されている。ユニット6が記憶ユニットである場合は、保護手段14に記憶手段15が含まれる。ユニット6が処理/記憶ユニットである場合は、保護手段14に記憶手段15と処理手段16が含まれる。
【0056】
以降の説明を平易にするために、被保護ソフトウェア2pの実行中における、ユニット6の有無について検討することにする。実際に、被保護ソフトウェア2pの第2実行パート2peuの実行に適していない保護手段14を備えるユニット6も、被保護ソフトウェア2pが正しく実行されない場合は常に存在しないとみなされる。ユニットの有無について、以下のことが該当する。
・ 物理的に存在し、被保護ソフトウェア2pの第2実行パート2peuの実行に適している保護手段14を備えるユニット6は、常に存在するとみなされる。
・ 物理的には存在するが、被保護ソフトウェア2pの第2実行パート2peuの正しい実装に適していない(この実装を可能にしない)保護手段14を備えるユニット6は、被保護ソフトウェア2pが正しく機能する場合は存在するとみなされ、被保護ソフトウェア2pが正しく機能しない場合は存在しないとみなされる。
・ また、物理的に存在しないユニット6は、常に存在しないとみなされる。
【0057】
ユニット6がチップカード7とそのインタフェース8から構成されている場合、転送手段13は2つの部分に分割される。一方はインタフェース8上の部分であり、他方はチップカード7上の部分である。この実施形態では、チップカード7が存在しないことは、ユニット6が存在しないことと同じであるとみなされる。すなわち、チップカード7、および/または、そのインタフェース8が存在しない場合、保護手段14はアクセス不能であり、保護されたソフトウェア2pの第2実行パート2peuを実行できないため、被保護ソフトウェア2pは完全には機能しない。
【0058】
本発明に従う保護プロセスの目的は、《変数》と呼ばれる保護原則を実装することである。この実装について、図40〜43を参照しながら説明する。
【0059】
変数による保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つの変数が選択され、その変数がバルナラブル・ソフトウェア2vの実行中にその状態を部分的に定義する。「ソフトウェアの状態」という言葉は、ソフトウェアの完全な実行に必要な、所定の時点における一連の情報を意味する。したがって、選択された変数が存在しないと、ソフトウェアの完全な実行が損なわれる。また、少なくとも1つの選択された変数を含む、バルナラブル・ソフトウェアのソース2vsの部分も少なくとも1つ選択される。
【0060】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニット6に存在することを考慮するようになる。変数による保護原則の実装では、ユニット6に少なくとも記憶手段15が装備される。
【0061】
図40は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3におけるバルナラブル・ソフトウェア2vの実行中に、以下のようになる。
・ 時刻tにおいて、データXが変数Vに代入される(V←Xで表す)。
・ 時刻tにおいて、変数Vの値が変数Yに代入される(Y←Vで表す)。
・ 時刻tにおいて、変数Vの値が変数Zに代入される(Z←Vで表す)。
【0062】
図41は、変数がユニット6に存在する、本発明の実装の第1形態の例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻tにおいて、データ処理システム3から、ユニット6の記憶手段15に配置された変数vへのデータXの転送をトリガする転送コマンドが実行される。この転送コマンドはOUT(v,X)と表され、最終的にデータXが変数vに代入される。
・ 時刻tにおいて、ユニット6に存在する変数vの値を変数Yに代入するために、この値のデータ処理システム3への転送をトリガする転送コマンドが実行される。この転送コマンドはIN(v)と表され、最終的に変数vの値が変数Yに代入される。
・ 時刻tにおいて、ユニット6に存在する変数vの値を変数Zに代入するために、この値のデータ処理システム3への転送をトリガする転送コマンドが実行される。この転送コマンドはIN(v)と表され、最終的に変数vの値が変数Zに代入される。
【0063】
被保護ソフトウェア2pの実行中、少なくとも1つの変数がユニット6に存在することに注意すべきである。このため、被保護ソフトウェア2pの第1実行パート2pesの部分が要求した場合、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesで使用するために、ユニット6に存在するこの変数の値がデータ処理システム3へ転送される。これにより、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0064】
図42は、変数のコピーがユニット6に存在する、本発明の実装の第2形態の例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻tにおいて、データXがデータ処理システム3に配置された変数Vに代入される。また、データ処理システム3から、ユニット6の記憶手段15に配置された変数vへのデータXの転送をトリガする転送コマンドも実行される。この転送コマンドはOUT(v,X)と表される。
・ 時刻tにおいて、変数Vの値が変数Yに代入される。
・ 時刻tにおいて、ユニット6に存在する変数vの値を変数Zに代入するために、この値のデータ処理システム3への転送をトリガする転送コマンドが実行される。この転送コマンドはIN(v)と表される。
【0065】
被保護ソフトウェア2pの実行中、変数のコピーの少なくとも1つがユニット6に存在することに注意すべきである。このため、被保護ソフトウェア2pの第1実行パート2pesの部分が要求した場合、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesで使用するために、ユニット6に存在する変数のこのコピーの値がデータ処理システム3へ転送される。このため、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0066】
図43は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、以下のようになる。
・ 時刻tにおいて、転送コマンドOUT(v,X)を実行しても、ユニット6が存在しないため、変数vへのデータXの転送をトリガすることができない。
・ 時刻tにおいて、転送コマンドIN(v)を実行しても、ユニット6が存在しないため、データ処理システム3への変数vの値の転送をトリガすることができない。
・ 時刻tにおいて、転送コマンドIN(v)を実行しても、ユニット6が存在しないため、データ処理システム3への変数vの値の転送をトリガすることができない。
【0067】
したがって、ユニット6が存在しない場合、ユニット6に存在する変数または変数のコピーの使用を求める、第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0068】
前述の例で示したデータ処理システム3とユニット6との間のデータ転送では、単純な代入のみ使用されるが、単純な代入を別の演算と組み合わせてOUT(v,2*X+3)やZ←(5*v+v)などの複雑な演算を得る方法を当業者が知ることができることに注意すべきである。
【0069】
本発明の別の好都合な特性に従う保護プロセスの目的は、「一時的分離」と呼ばれる保護原則を実装することである。この実装について、図50〜54を参照しながら説明する。
【0070】
一時的分離による保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つのオペランドを使用し少なくとも1つの結果を返すアルゴリズム処理が少なくとも1つ選択される。また、少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの部分が少なくとも1つ選択される。
【0071】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、特に以下のようになる。
・ 被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択されたアルゴリズム処理の機能がユニット6で実行されることを考慮する。
・ 被保護2pの実行中、ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択されたアルゴリズム処理の少なくとも1つの機能を実行する。
・ 被保護ソフトウェア2pの実行中、選択された各アルゴリズム処理が、以下の複数の個別ステップに分割される。
− ステップ1:オペランドの扱いをユニット6に任せる。
− ステップ2:このオペランドを使用して、選択されたアルゴリズム処理の機能をユニット6で実行する。
− ステップ3:選択されたアルゴリズム処理の結果の扱いをユニット6がデータ処理システム3に任せる(場合による)。
・ ステップコマンドは、ステップの実行をトリガするものと定義される。
・ また、ステップコマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
【0072】
データ処理システム3で実行される、被保護ソフトウェア2pの第1実行パート2pesがステップコマンドを実行する。ステップコマンドは、第2実行パート2peuによる、以前に定義されたステップそれぞれの実行をユニット6においてトリガする。一時的分離による保護原則の実装では、ユニット6に記憶手段15と処理手段16が装備される。
【0073】
図50は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3でのバルナラブル・ソフトウェア2vの実行中、所定の時刻に計算Z←F(X,Y)が実行される。この計算は、オペランドXおよびYを使用する関数Fによって表されるアルゴリズム処理の結果を変数Zに代入することに相当する。
【0074】
図51は、図50で選択されたアルゴリズム処理がユニット6でリモート処理される、本発明の実装例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻tにおいて、ステップ1、すなわちステップコマンドCEが実行される。このコマンドは、データ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンxおよびyそれぞれへのデータXおよびYの転送をトリガする。このステップコマンドCEは、OUT(x,X)、OUT(y,Y)と表される。
・ 時刻tにおいて、ステップ2、すなわちステップコマンドCEが実行される。このコマンドは、第2実行パート2peuによる関数fの実行をユニット6においてトリガする。この関数fのアルゴリズムは関数Fと同じであり、ステップコマンドCEはTRIG(f)と表される。より正確には、ステップコマンドCEを実行すると、記憶ゾーンxおよびyの内容を使用し結果をユニット6の記憶ゾーンzに返す関数fが実行される。
・ 時刻tにおいて、ステップ3、すなわちステップコマンドCEが実行される。このコマンドは、ユニット6の記憶ゾーンzに含まれる関数fの結果を変数Zに代入するために、この結果のデータ処理システム3への転送をトリガする。ステップコマンドCEは、IN(z)と表される。
【0075】
この例では、ステップ1〜3が連続して実行される。ただし、以下の2つの改良を施すことができることに注意すべきである。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。この場合、一部の転送ステップを削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から適切なステップコマンドシーケンスを選択することである。この点で、ステップの実行を一時的に分離するようなステップコマンドシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用するステップコマンドを含む(または含まない)コード部分をステップ間に挿入する。図52および図53は、このような実施形態の原則を示している。
【0076】
図52は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、バルナラブル・ソフトウェア2vの実行中、データ処理システム3で2つのアルゴリズム処理が実行され、ZおよびZ’が決定される。この処理は、Z←F(X,Y)およびZ’←F’(X’,Y’)と表される。
【0077】
図53は、図52で選択された2つのアルゴリズム処理がユニット6でリモート処理される、本発明に従うプロセスの実装例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、上述のように、ステップコマンドCE、CE、CEを実行することは、Zを決定することに相当し、ステップコマンドCE’、CE’、CE’を実行することは、Z’を決定することに相当する。図に示したように、ステップコマンドCE’〜CE’とその他のコード部分が挿入されているため、ステップコマンドCE〜CEは連続的には実行されない。つまり、この例では、CE、挿入されたコード部分、CE、挿入されたコード部分、CE’、挿入されたコード部分、CE’、挿入されたコード部分、CE’、挿入されたコード部分、CEというシーケンスが実行される。
【0078】
被保護ソフトウェア2pの実行中、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesの部分に含まれるステップコマンドが要求するたびに、対応するステップがユニット6で実行されることに注意すべきである。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0079】
図54は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、以下のようになる。
・ 時刻tにおいて、ステップコマンドOUT(x,X),OUT(y,Y)を実行しても、ユニット6が存在しないため、記憶ゾーンxおよびyそれぞれへのデータXおよびYの転送をトリガすることができない。
・ 時刻tにおいて、ステップコマンドTRIG(f)を実行しても、ユニット6が存在しないため、関数fの実行をトリガすることができない。
・ 時刻tにおいて、ステップコマンドIN(z)を実行しても、ユニット6が存在しないため、関数fの結果の転送をトリガすることができない。
【0080】
したがって、ユニット6が存在しない場合、ユニット6におけるステップの実行のトリガを求める、第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0081】
本発明の別の好都合な特性に従う保護プロセスの目的は、《基本関数》と呼ばれる保護原則を実装することである。この実装について、図60〜64を参照しながら説明する。
【0082】
基本関数による保護原則の実装では、以下が定義される。
・ 基本関数セット。基本関数セットに含まれる基本関数は、ユニット6において第2実行パート2peuによって実行することが可能であり、場合によってはデータ処理システム3とユニット6との間でデータを転送することが可能である。
・ この基本関数セットに対する基本コマンドセット。この基本コマンドはデータ処理システム3で実行することが可能であり、それによってユニット6において対応する基本関数の実行がトリガされる。
【0083】
基本関数による保護原則の実装では、記憶手段15と処理手段16を備えるブランクユニット60を、基本関数を実行できるユニット6へ変換できる活用手段も構築される。この基本関数の実行は、データ処理システム3における基本コマンドの実行によってトリガされる。
【0084】
基本関数による保護原則の実装では、少なくとも1つのオペランドを使用し少なくとも1つの結果を返す少なくとも1つのアルゴリズム処理も、バルナラブル・ソフトウェアのソース2vsにおいて選択される。また、少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの部分も少なくとも1つ選択される。
【0085】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、以下のようになる。
・ 被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択されたアルゴリズム処理の機能がユニット6で実行されることを考慮する。
・ 被保護ソフトウェア2pの実行中、ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択されたアルゴリズム処理の少なくとも1つの機能を実行する。
・ 被保護ソフトウェア2pの実行中に、選択されたアルゴリズム処理それぞれが、基本関数を使用して第2実行パート2peuによって実行されるように、選択されたアルゴリズム処理それぞれが分割される。選択されたアルゴリズム処理それぞれが、基本関数fe(nの範囲は1〜N)に分割されることが好ましい。すなわち、以下の基本関数に分割される。
− 1つ以上のオペランドの扱いをユニット6に任せることができる1つ以上の基本関数(場合による)
− 一部がオペランドを使用し、組み合わされて、このオペランドを使用する選択されたアルゴリズム処理の機能を実行するような基本関数
− 選択されたアルゴリズム処理の結果の扱いをユニット6がデータ処理システム3に任せることを可能にする1つ以上の基本関数(場合による)
・ また、基本コマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
【0086】
データ処理システム3で実行される、被保護ソフトウェア2pの第1実行パート2pesが基本コマンドCEF(nの範囲は1〜N)を実行する。このコマンドは、以前に定義された基本関数feそれぞれの、第2実行パート2peuによる実行をユニット6においてトリガする。
【0087】
図60は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3におけるバルナラブル・ソフトウェア2vの実行中、所定の時刻に計算Z←(X,Y)が実行される。この計算は、オペランドXおよびYを使用する関数Fによって表されるアルゴリズム処理の結果を変数Zに代入することに相当する。
【0088】
図61は、図60で選択されたアルゴリズム処理がユニット6でリモート処理される、本発明の実装例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻t、tにおいて、基本コマンドCFE、CFEが実行される。このコマンドは、第2実行パート2peuによる対応する基本関数fe、feの実行をユニット6においてトリガする。この基本関数は、データX、Yを、データ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンx、yへそれぞれ転送する。この基本コマンドCFE、CFEは、それぞれOUT(x,X)、OUT(y,Y)と表される。
・ 時刻t〜tN−1において、基本コマンドCFE〜CFEN−1が実行される。このコマンドは、第2実行パート2peuによる対応する基本関数fe〜feN−1の実行をユニット6においてトリガする。この基本コマンドCFE〜CFEN−1は、それぞれTRIG(fe)〜TRIG(feN−1)と表される。組み合わされて実行される一連の基本関数fe〜feN−1のアルゴリズムは、関数Fと同じである。より正確には、この基本コマンドを実行すると、記憶ゾーンx、yの内容を使用しユニット6の記憶ゾーンzに結果を返す基本関数fe〜feN−1がユニット6で実行される。
・ 時刻tにおいて、基本コマンドCFEが実行される。このコマンドは、第2実行パート2peuによる基本関数feの実行をユニット6においてトリガする。この関数は、ユニット6の記憶ゾーンzに含まれるアルゴリズム処理の結果を変数Zに代入するために、この結果をデータ処理システム3へ転送する。この基本コマンドCFEは、IN(z)と表される。
【0089】
この例では、基本コマンド1〜Nが連続して実行される。ただし、以下の2つの改良を施すことができることに注意すべきである。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。このような場合、転送に使用される基本コマンドの一部を削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から適切な基本コマンドシーケンスを選択することである。この点で、基本関数の実行を一時的に分離するような基本コマンドシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用する基本コマンドを含む(または含まない)コード部分を基本コマンド間に挿入する。図62および図63は、このような実施形態の原則を示している。
【0090】
図62は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、バルナラブル・ソフトウェア2vの実行中、データ処理システム3で2つのアルゴリズム処理が実行され、ZおよびZ’が決定される。この処理は、Z←F(X,Y)およびZ’←F’(X’,Y’)と表される。
【0091】
図63は、図62で選択された2つのアルゴリズム処理がユニット6でリモート処理される、本発明に従うプロセスの実装例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、上述のように、基本コマンドCFE〜CFEを実行することは、Zを決定することに相当し、基本コマンドCFE’〜CFE’を実行することは、Z’を決定することに相当する。図に示したように、基本コマンドCFE’〜CFE’とその他のコード部分が挿入されているため、基本コマンドCFE〜CFEは連続的には実行されない。つまり、この例では、CFE、挿入されたコード部分、CFE’、CFE、挿入されたコード部分、CFE’、CFE’、挿入されたコード部分、CFE’、CFE、CFE、...、CFE、CFE’というシーケンスが実行される。
【0092】
被保護ソフトウェア2pの実行中、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesの部分に含まれる基本コマンドが要求するたびに、対応する基本関数がユニット6で実行されることに注意すべきである。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0093】
図64は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中、各時刻に基本コマンドを実行しても、ユニット6が存在しないため、対応する基本関数の実行をトリガすることができない。このため、変数Zに代入する値を正しく決定することができない。
【0094】
したがって、ユニット6が存在しない場合、ユニット6における基本関数の実行のトリガを求める、被保護ソフトウェア2pの第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0095】
本発明の別の好都合な特性に従う保護プロセスの目的は、《検出および強制》と呼ばれる保護原則を実装することである。この実装について、図70〜74を参照しながら説明する。
【0096】
検出および強制による保護原則の実装では、以下が定義される。
・ 少なくとも部分的にユニット6において監視することが可能な、少なくとも1つのソフトウェア実行特性
・ 少なくとも1つのソフトウェア実行特性について遵守すべき少なくとも1つの基準
・ 少なくとも1つのソフトウェア実行特性が少なくとも1つの関連基準を遵守していないことを検出できる、ユニット6に装備される検出手段17
・ 少なくとも1つの基準が遵守されていない場合に、データ処理システム3への通知、および/または、ソフトウェア実行の変更が可能な、ユニット6に装備される強制手段18
【0097】
検出および強制による保護原則の実装では、記憶手段15と処理手段16を備えるブランクユニット60を、少なくとも検出手段17と強制手段18を備えるユニット6へ変換できる活用手段も構築される。
【0098】
図70は、検出および強制によるこの保護原則の実装に必要な手段を示している。ユニット6には検出手段17と、処理手段16に属する強制手段18が装備されている。基準が遵守されなかった場合、強制手段18はその旨を検出手段17から通知される。
【0099】
より正確には、検出手段17は転送手段13、および/または、記憶手段15、および/または、処理手段16から送られる情報を使用して、1つ以上のソフトウェア実行特性を監視する。各ソフトウェア実行特性について、遵守すべき基準が少なくとも1つ設定される。
【0100】
少なくとも1つのソフトウェア実行特性が少なくとも1つの基準を遵守していないことを検出した場合、検出手段17はその旨を強制手段18に通知する。この強制手段18は、ユニット6の状態を適切な方法で変更できるように構成されている。
【0101】
検出および強制による保護原則の実装では、以下も選択される。
・ 監視することが可能なソフトウェア実行特性の中から、監視するソフトウェア実行特性を少なくとも1つ選択する。
・ 少なくとも1つの選択されたソフトウェア実行特性について、遵守すべき基準を少なくとも1つ選択する。
・ バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つのソフトウェア実行特性が監視されるアルゴリズム処理を少なくとも1つ選択する。
・ バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つの選択されたアルゴリズム処理を含む部分を少なくとも1つ選択する。
【0102】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、被保護ソフトウェア2pの実行中に、特に以下のようになる。
・ データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも部分的にユニット6において、少なくとも1つの選択されたソフトウェア実行特性を監視する必要があることを考慮する。
・ ユニット6で実行される第2実行パート2peuが、選択されたソフトウェア実行特性を少なくとも部分的に監視する。
【0103】
検出および強制によるこの保護原則によって保護された被保護ソフトウェア2pの実行中に、ユニット6が存在すれば、以下のようになる。
・ 被保護ソフトウェア2pの変更された部分すべての、監視される実行特性すべてに対応する基準がすべて遵守されている限り、被保護ソフトウェア2pの変更された部分は名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ 被保護ソフトウェア2pの部分の監視される実行特性に対応する少なくとも1つの基準が遵守されていない場合、データ処理システム3はその旨を通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0104】
当然ながら、ユニット6が存在しなければ、ユニット6の使用を求める、被保護ソフトウェア2pの第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0105】
検出および強制による保護原則の実装では、2つの種類のソフトウェア実行特性が優先的に使用される。
【0106】
第1の種類のソフトウェア実行特性はソフトウェア実行の計測変数に対応し、第2の種類のソフトウェア実行特性はソフトウェア使用状況プロファイルに対応する。これら2つの種類の特性は、個別に使用することも、組み合わせて使用することもできる。
【0107】
実行特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則の実装では、以下が定義される。
・ 記憶手段15において、少なくとも1つのソフトウェア機能の使用状況を定量化するために使用される少なくとも1つの計測変数を記憶できること
・ 検出手段17において、各計測変数に関連付けられた少なくとも1つのしきい値を監視できること
・ 計測変数が関連付けられた機能の使用状況に応じて各計測変数を更新できる有効化手段
【0108】
検出手段17と強制手段18に加えて、有効化手段を備える活用手段も構築される。
【0109】
また、バルナラブル・ソフトウェアのソース2vsにおいて、以下も選択される。
・ 計測変数を利用して使用状況を監視することが可能な、バルナラブル・ソフトウェア2vの少なくとも1つの機能
・ この機能の使用状況の定量化に使用される少なくとも1つの計測変数
・ この機能の使用限度に対応する計測変数に関連付けられた少なくとも1つのしきい値
・ この機能の使用状況に応じて計測変数を更新する少なくとも1つの方法
【0110】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に、第2実行パート2peuが以下を行うようになる。
・ この機能の使用状況に応じて計測変数を有効化する。
・ 少なくとも1つのしきい値超過を考慮する。
【0111】
すなわち、被保護ソフトウェア2pの実行中、この機能の使用状況に応じてこの計測変数が更新され、しきい値が超えられた場合、検出手段17がその旨を強制手段18に通知する。強制手段18は、データ処理システム3へ通知するか、および/または、処理手段16によって実行される処理を変更するかを適宜判断する。変更する場合、被保護ソフトウェア2pの部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0112】
特性として計測変数を使用する、検出および強制による保護原則の第1の好ましい変形実施形態の実装では、以下が定義される。
・ 少なくとも1つの計測変数について、複数の関連しきい値
・ このしきい値それぞれに対応する各種強制手段
【0113】
また、バルナラブル・ソフトウェアのソース2vsにおいて、以下も選択される。
・ ソフトウェアの少なくとも1つの機能の使用状況を定量化するために使用され、この機能の各種使用限度に対応する複数のしきい値を関連付ける必要がある、少なくとも1つの計測変数
・ 計測変数に関連付けられた少なくとも2つのしきい値
【0114】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に、第2実行パート2peuが以下を行うようになる。
・ この機能の使用状況に応じて計測変数を有効化する。
・ 様々なしきい値の超過を個別に考慮する。
【0115】
すなわち、一般に、被保護ソフトウェア2pの実行中、第1しきい値が超えられた場合、ユニット6がその旨をデータ処理システム3に通知し、データ処理システム3が被保護ソフトウェア2pにこの機能を使用しないように命じる。被保護ソフトウェア2pがこの機能の使用を続けた場合、第2しきい値が超えられる可能性がある。第2しきい値が超えられた場合、強制手段18は、選択された機能、および/または、被保護ソフトウェア2pを無効にすることができる。
【0116】
特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装では、計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1回の追加使用を認めることができる補充手段が定義される。
【0117】
また、検出手段17、強制手段18、および有効化手段に加えて補充手段を備える活用手段も構築される。
【0118】
さらに、バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1回の追加使用を認められなければならない、ソフトウェアの少なくとも1つの機能の使用を制限するために使用される計測変数が少なくとも1つ選択される。
【0119】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、補充と呼ばれるフェーズにおいて、選択された計測変数に対応する少なくとも1つの機能の少なくとも1回の追加使用を認めることができるようになる。
【0120】
対応する機能の少なくとも1回の追加使用を認めるために、補充のフェーズにおいて、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連しきい値が再び有効化される。すなわち、補充のフェーズにおいて、被保護ソフトウェア2pの少なくとも1つの機能の追加使用を認めることができる。
【0121】
特性としてソフトウェア使用状況プロファイルを使用する、検出および強制による保護原則の実装では、この使用状況プロファイルについて遵守すべき基準として、少なくとも1つのソフトウェア実行特徴が定義される。
【0122】
また、バルナラブル・ソフトウェアのソース2vsにおいて以下も選択される。
・ 監視される少なくとも1つの使用状況プロファイル
・ 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない、少なくとも1つの実行特徴
【0123】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に、第2実行パート2peuが選択された実行特徴すべてを遵守するようになる。すなわち、ユニット6自体が第2実行パート2peuの実行のされ方を監視して、少なくとも1つの実行特徴が遵守されていない場合は、データ処理システム3にその旨を通知すること、および/または、被保護ソフトウェア2pの機能を変更することができる。
【0124】
この原則によって保護された被保護ソフトウェア2pの実行中に、ユニット6が存在すれば、以下のようになる。
・ 被保護ソフトウェア2pの変更された部分すべての実行特徴がすべて遵守されている限り、被保護ソフトウェア2pの変更された部分が名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ 被保護ソフトウェア2pの部分の少なくとも1つの実行特徴が遵守されていない場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0125】
様々な実行特徴のモニタリングを検討することができる。例えば、マーカーを含む命令の有無や、命令の少なくとも1つの部分の実行連鎖のモニタリングが可能である。
【0126】
遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを使用する、検出および強制による保護原則の実装では、以下が定義される。
・ ユニット6で実行することが可能な命令を含む命令セット
・ この命令セットに対する命令コマンドセット。この命令コマンドは、データ処理システム3で実行することが可能である。この命令コマンドそれぞれをデータ処理システム3で実行すると、ユニット6において対応する命令の実行がトリガされる。
・ 命令連鎖が期待されたものではないことを検出できる検出手段17
・ 命令連鎖が期待されたものではない場合に、データ処理システム3にその旨を通知すること、および/または、ソフトウェア実行を変更することができる強制手段18
【0127】
また、ユニット6による命令セットの命令の実行も可能にする活用手段も構築される。この命令の実行は、データ処理システム3における命令コマンドの実行によってトリガされる。
【0128】
さらに、バルナラブル・ソフトウェアのソース2vsにおいて、ユニット6でリモート処理しなければならず、命令の少なくとも1つの部分の連鎖を監視する必要がある、少なくとも1つのアルゴリズム処理も選択される。
【0129】
次に、バルナラブル・ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に以下の処理が行われるようになる。
・ 第2実行パート2peuが、選択されたアルゴリズム処理の少なくとも機能を実行する。
・ 選択されたアルゴリズム処理が複数の命令に分割される。
・ ユニット6での実行中に少なくとも一部の命令が遵守しなければならない連鎖が指定される。
・ 被保護ソフトウェア2pの第1実行パート2pesが、ユニット6での命令の実行をトリガする命令コマンドを実行する。
【0130】
この原則によって被保護ソフトウェア2pの実行中に、ユニット6が存在すれば、以下のようになる。
・ ユニット6で実行される被保護ソフトウェア2pの変更された部分すべての命令連鎖が期待されたものである限り、被保護ソフトウェア2pの変更された部分が名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ ユニット6で実行される被保護ソフトウェア2pの部分の命令連鎖が期待されたものではない場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0131】
図71は、遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを利用する、検出および強制による保護原則の実装における、期待される連鎖が遵守される場合の例を示している。
【0132】
データ処理システム3で実行される被保護ソフトウェア2pの第1実行パート2pesが、ユニット6において命令セットに属する命令iの実行をトリガする命令コマンドCIを実行する。この命令セットでは、少なくとも一部の命令それぞれに、命令の機能を定義する部分と、命令の実行連鎖が期待されたものであることを確認できる部分が含まれる。この例では、命令コマンドCIはTRIG(i)と表され、命令実行の期待される連鎖はi、in+1、およびin+2である。ユニット6で命令iを実行すれば結果aがもたらされ、命令in+1を実行すれば結果bがもたらされる。命令n+2では、命令iおよびin+1の結果aおよびbがオペランドとして使用される。命令n+2の実行結果はcである。
【0133】
ユニット6で実行されるこの命令連鎖が期待されたものであるため、被保護ソフトウェア2pは正常に、すなわち名目通り機能するようになる。
【0134】
図72は、遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを利用する、検出および強制による保護原則の実装における、期待される連鎖が遵守されない場合の例を示している。
【0135】
この例でも、命令実行の期待される連鎖はi、in+1、およびin+2である。しかし、命令iを命令i’に置き換えることで実行連鎖が変更されるため、実際に実行される連鎖はi’、in+1、およびin+2となる。命令i’を実行すれば、結果a、すなわち命令iを実行した場合と同じ結果がもたらされる。しかし、命令i’が、命令in+2のオペランドとして使用される結果aを生成するための期待される命令ではないことを、検出手段17が遅くとも命令in+2の実行中に検出する。検出手段17はその旨を強制手段18に通知し、強制手段18が命令in+2の機能を変更する。この変更により、命令in+2の実行結果c’はcと異なってもよい。当然ながら、命令i’の実行結果a’が命令iの結果aと異なる場合、命令in+2の結果もまたcと異なってもよいことは明らかである。
【0136】
したがって、ユニット6で実行される命令の実行連鎖が期待されたものでなければ、被保護ソフトウェア2pの機能の変更することができる。
【0137】
図73および図74は、遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを利用する、検出および強制による保護原則の好ましい変形実施形態を示している。この好ましい変形では、レジスタとともに作用し、結果を返すことを目的として少なくとも1つのオペランドを使用する命令を少なくともいくつか含む命令セットが定義される。
【0138】
図73に示したように、レジスタとともに作用する少なくとも一部の命令について、命令の機能を定義する部分PFと、命令実行の期待される連鎖を定義する部分PEが定義される。部分PFは、当業者に周知の演算コードに相当する。期待される連鎖を定義する部分PEには、以下のビットフィールドが含まれる。
・ 命令識別フィールドCII
・ 命令の各オペランドkについて、以下のフィールド(kの範囲は1〜Kであり、Kは命令のオペランド数を示す)
− オペランドkの出所(origin)を確認することが適切であるかどうかを示すフラグフィールドCD
− オペランドkの内容を生成した命令の期待されるアイデンティティを示す、オペランドの期待される識別フィールドCIP
【0139】
図74に示したように、命令セットには、処理手段16に属するV個のレジスタが含まれる。各レジスタにはRという名前が付けられる(vの範囲は1〜V)。各レジスタRについて、以下の2つのフィールドが定義される。
・ 命令の実行結果を格納できる、当業者に周知の機能フィールドCF
・ 機能フィールドCFの内容を生成した命令のアイデンティティを記憶できる生成識別フィールドCIG。この生成識別フィールドCIGは、機能フィールドCFを生成した命令識別フィールドCIIの内容で自動的に更新される。この生成識別フィールドCIGは、命令によるアクセスも変更もできず、検出手段17でのみ使用される。
【0140】
命令の実行中、検出手段17は各オペランドkについて以下の処理を実行する。
・ フラグフィールドCDを読み取る。
・ フラグフィールドCDが要求した場合、オペランドkで使用されるレジスタに対応する、期待される識別フィールドCIPと生成識別フィールドCIGの両方を読み取る。
・ 2つのフィールドCIPとCIGが等しいかどうかチェックする。
・ 等しくない場合、検出手段17は、命令の実行連鎖が遵守されていないとみなす。
【0141】
命令連鎖が遵守されていないことを検出手段17から通知されると、強制手段18は命令結果を変更することができる。現在実行されている命令の機能パートPFまたは以降の命令の機能パートPFを変更することで、好ましい実施形態が実行される。
【0142】
本発明の別の好都合な特性に従う保護プロセスの目的は、《リネーム》と呼ばれる保護原則を実装することである。この実装について、図80〜85を参照しながら説明する。
【0143】
リネームによる保護原則の実装では、以下が定義される。
・ 従属関数セット。従属関数セットに含まれる従属関数は、ユニット6において第2実行パート2peuによって実行することが可能であり、場合によってはデータ処理システム3とユニット6との間でデータを転送することができる。この従属関数セットは、有限または無限のいずれでもよい。
・ この従属関数に対するトリガコマンドセット。このトリガコマンドはデータ処理システム3で実行され、ユニット6において対応する従属関数の実行をトリガすることが可能である。
・ 対応する従属関数の実行をトリガするために、第1実行パート2pesによって第2実行パート2peuへ転送される情報に少なくとも部分的に対応する、各トリガコマンドのオーダー。このオーダーは、トリガコマンドの少なくとも1つの引数の形式を有する。
・ バルナラブル・ソフトウェア2vの変更中に使用される、オーダーリネーム方法。この方法では、対応する従属関数のアイデンティティを隠蔽することができる、リネームされたオーダーを持つトリガコマンドを取得するためにオーダーをリネームできる。
・ 使用フェーズにおいてユニット6で使用され、実行する従属関数を復元するために、リネームされたオーダーから元のオーダーを復元することができる復元手段20。
【0144】
リネームによる保護原則の実装では、記憶手段15と処理手段16を備えるブランクユニット60を、少なくとも復元手段20を備えるユニット6に変換できる活用手段も構築される。
【0145】
リネームによる保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて、以下も選択される。
・ 少なくとも1つのオペランドを使用し、少なくとも1つの結果を返す、少なくとも1つのアルゴリズム処理
・ 少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの部分
【0146】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、特に以下のようになる。
・ 被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択されたアルゴリズム処理の機能がユニット6で実行されることを考慮する。
・ 被保護ソフトウェア2pの実行中、ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択されたアルゴリズム処理の機能を少なくとも実行する。
・ 被保護ソフトウェア2pの実行中に、従属関数を使用して第2実行パート2peuによって実行されるように、選択された各アルゴリズム処理が分割される。選択された各アルゴリズム処理が以下の従属関数fd(nの範囲は1〜N)に分割されることが好ましい。
− 1つ以上のオペランドの扱いをユニット6に任せることができる1つ以上の従属関数(場合による)
− 一部がオペランドを使用し、組み合わされて、このオペランドを使用する選択されたアルゴリズム処理の機能を実行するような従属関数
− 選択されたアルゴリズム処理の結果の扱いをユニット6がデータ処理システム3に任せることを可能にする1つ以上の従属関数(場合による)
・ 被保護ソフトウェア2pの実行中、第2実行パート2peuが従属関数fdを実行する。
・ 被保護ソフトウェア2pの実行中、リネームされたオーダーを持つトリガコマンドによって従属関数がトリガされる。
・ また、トリガコマンドのシーケンスが、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から選択される。
【0147】
データ処理システム3で実行される被保護ソフトウェア2pの第1実行パート2pesが、リネームされたオーダーを持つトリガコマンドを実行する。このコマンドは、リネームされたオーダーをユニット6へ転送し、復元手段20によるそのオーダーの復元をユニット6においてトリガし、次に、第2実行パート2peuによる、以前に定義された各従属関数fdの実行をトリガする。
【0148】
すなわち、リネームによる保護原則は、リネームされたオーダーを持つトリガコマンドを取得するために、トリガコマンドのオーダーをリネームすることで実行される。リネームされたオーダーを持つトリガコマンドをデータ処理システム3で実行すると、ユニット6において従属関数の実行がトリガされる。この従属関数は、リネームされていないオーダーを持つトリガコマンドによってトリガされたであろう従属関数であるが、被保護ソフトウェア2pを調べても実行される従属関数のアイデンティティを特定できない。
【0149】
図80は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3でのバルナラブル・ソフトウェア2vの実行中、所定の時刻に計算Z←F(X,Y)が実行される。この計算は、オペランドXおよびYを使用する関数Fによって表されるアルゴリズム処理の結果を変数Zに代入することに相当する。
【0150】
図81および図82は、本発明の実装例を示している。
【0151】
図81は、本発明の部分的実装を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻t、tにおいて、トリガコマンドCD、CDが実行される。このコマンドは、第2実行パート2peuによる対応する従属関数fd、fdの実行をユニット6においてトリガする。この従属関数は、データX、Yをデータ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンx、yへそれぞれ転送する。このトリガコマンドCD、CDはそれぞれ、OUT(x,X)、OUT(y,Y)と表される。
・ 時刻t〜tN−1において、トリガコマンドCD〜CDN−1が実行される。このコマンドは、第2実行パート2peuによる対応する従属関数fd〜fdN−1の実行をユニット6においてトリガする。このトリガコマンドCD〜CDN−1は、それぞれTRIG(fd)〜TRIG(fdN−1)と表される。組み合わされて実行される一連の従属関数fd〜fdN−1のアルゴリズムは、関数Fと同じである。より正確には、このトリガコマンドを実行すると、記憶ゾーンx、yの内容を使用しユニット6の記憶ゾーンzに結果を返す従属関数fd〜fdN−1がユニット6で実行される。
・ 時刻tにおいて、トリガコマンドCDが実行される。このコマンドは、第2実行パート2peuによる従属関数fdの実行をユニット6においてトリガする。この関数は、ユニット6の記憶ゾーンzに含まれるアルゴリズム処理の結果を変数Zに代入するために、この結果をデータ処理システム3へ転送する。このコマンドは、IN(z)と表される。
【0152】
この例では、本発明を完全に実装するために、トリガコマンドOUTの第1引数とトリガコマンドTRIGおよびINの引数がオーダーとして選択される。このように選択されたオーダーは、オーダーリネーム方法によってリネームされる。この方法では、R(x)、R(y)、R(fd)...、R(fdN−1)、R(z)をそれぞれ取得するために、トリガコマンドCD〜CDN−1のオーダー(x、y、fd、fdN−1、z)がリネームされる。
【0153】
図82は、本発明の完全な実装を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻t、tにおいて、リネームされたオーダーを持つトリガコマンドCDCR、CDCRが実行される。このコマンドは、リネームされたオーダーR(x)、R(y)とデータX、Yをユニット6へ転送する。これにより、復元手段20によるリネームされたオーダーの復元がユニット6においてトリガされ、オーダー(記憶ゾーンx、yのアイデンティティ)が復元される。次に、第2実行パート2peuによって対応する従属関数fd、fdが実行される。この従属関数は、データX、Yを、データ処理システム3から、ユニット6の記憶手段15に配置された記憶ゾーンx、yへそれぞれ転送する。リネームされたオーダーを持つこのトリガコマンドCDCR、CDCRは、それぞれOUT(R(x),X)、OUT(R(y),Y)と表される。
・ 時刻t〜tN−1において、リネームされたオーダーを持つトリガコマンドCDCR〜CDCRN−1が実行される。このコマンドは、リネームされたオーダーR(fd)〜R(fdN−1)をユニット6へ転送する。これにより、復元手段20によるオーダー(fd〜fdN−1)の復元がユニット6においてトリガされる。次に、第2実行パート2peuによって従属関数fd〜fdN−1が実行される。リネームされたオーダーを持つこのトリガコマンドCDCR〜CDCRN−1は、それぞれTRIG(R(fd))〜TRIG(R(fdN−1))と表される。
・ 時刻tにおいて、リネームされたオーダーを持つトリガコマンドCDCRが実行される。このコマンドは、リネームされたオーダーR(z)をユニット6へ転送する。これにより、復元手段20によるオーダー(記憶ゾーンzのアイデンティティ)の復元がユニット6においてトリガされる。次に、第2実行パート2peuによって従属関数fdが実行される。この従属関数は、ユニット6の記憶ゾーンzに含まれるアルゴリズム処理の結果を変数Zに代入するために、この結果をデータ処理システム3へ転送する。リネームされたオーダーを持つこのトリガコマンドCDCRNは、IN(R(z))と表される。
【0154】
この例では、リネームされたオーダーを持つトリガコマンド1〜Nが連続して実行される。ただし、以下の2つの改良を施すことができることに注意すべきである。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。このような場合、転送に使用されるリネームされたオーダーを持つトリガコマンドの一部を削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から、リネームされたオーダーを持つトリガコマンドの適切なシーケンスを選択することである。この点で、従属関数の実行を一時的に分離するようなリネームされたオーダーを持つトリガコマンドのシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用する、リネームされたオーダーを持つトリガコマンドを含む(または含まない)コード部分をトリガコマンド間に挿入する。。図83および図84は、このような実施形態の原則を示している。
【0155】
図83は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、バルナラブル・ソフトウェア2vの実行中、データ処理システム3で2つのアルゴリズム処理が実行され、ZおよびZ’が決定される。この処理は、Z←F(X,Y)およびZ’←F’(X’,Y’)と表される。
【0156】
図84は、図83で選択された2つのアルゴリズム処理がユニット6でリモート処理される、本発明に従うプロセスの実装例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、上述のように、リネームされたオーダーを持つトリガコマンドCDCR〜CDCRを実行することは、Zを決定することに相当し、リネームされたオーダーを持つトリガコマンドCDCR’〜CDCR’を実行することは、Z’を決定することに相当する。図に示したように、リネームされたオーダーを持つトリガコマンドCDCR’〜CDCR’とその他のコード部分が挿入されているため、リネームされたオーダーを持つトリガコマンドCDCR〜CDCRは連続的には実行されない。つまり、この例では、CDCR、挿入されたコード部分、CDCR’、CDCR、挿入されたコード部分、CDCR’、CDCR’、挿入されたコード部分、CDCR’、CDCR、CDCR、...、CDCR、CDCR’というシーケンスが実行される。
【0157】
次のことに注意すべきである。すなわち、被保護ソフトウェア2pの第1実行パート2pesの部分の実行中、データ処理システム3で実行される、リネームされたオーダーを持つトリガコマンドは、対応する従属関数のアイデンティティの復元をユニット6においてトリガし、次にこの従属関数の実行をトリガする。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0158】
図85は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中、リネームされたオーダーを持つトリガコマンドを各時刻に実行しても、ユニット6が存在しないため、オーダーの復元も対応する従属関数の実行もトリガすることができない。このため、変数Zに代入する値を正しく決定することができない。
【0159】
したがって、ユニット6が存在しない場合、オーダーの復元とユニット6における従属関数の実行のトリガを求める、被保護ソフトウェア2pの第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0160】
リネームによるこの保護原則では、被保護ソフトウェア2pにおいて、リネームされたオーダーを持つトリガコマンドを調べても、ユニット6で実行する必要がある従属関数のアイデンティティを特定することはできない。オーダーのリネームは、バルナラブル・ソフトウェア2vを被保護ソフトウェア2pに変更する際に実行されることに注意すべきである。
【0161】
リネームによる保護原則の変形では、少なくとも1つの従属関数について、アルゴリズムの面では同じであるが、リネームされたオーダー持つ異なるトリガコマンドによってトリガされる従属関数群が定義される。この変形では、従属関数を使用する少なくとも1つのアルゴリズム処理が従属関数に分割される。同じ従属関数が複数回出現するのではなく、これらの従属関数の少なくとも1つは、同じ群の従属関数に置き換えられる。これを実現するために、リネームされたオーダーを持つトリガコマンドが、同じ群の従属関数への従属関数の置き換えを考慮するように変更される。すなわち、同じ群の2つの従属関数が異なるオーダーを持ち、その結果、リネームされたオーダーを持つ異なるトリガコマンドを持つ。また、被保護ソフトウェア2pを調べても、呼び出される従属関数のアルゴリズムが同じであることを発見することはできない。
【0162】
リネームによる保護原則の第1の好ましい変形実施形態では、少なくとも1つの従属関数について、アルゴリズムが同じである従属関数群が定義される。この定義は、ユニット6で実行される従属関数の機能パートを定義する情報とノイズフィールドを連結することで行われる。
【0163】
リネームによる保護原則の第2の好ましい変形実施形態では、少なくとも1つの従属関数について、識別フィールドを使用することで、アルゴリズムが同じである従属関数群が定義される。
【0164】
リネームによる保護原則の好ましい変形実施形態では、オーダーリネーム方法として、オーダーを暗号化してリネームされたオーダーに変換できる暗号化方法が定義される。オーダーのリネームは保護フェーズPにおいて実行されることを忘れてはならない。この好ましい変形では、復元手段20は、リネームされたオーダーを復号化し、ユニット6で実行される従属関数のアイデンティティを復元することができる復号化方法を実装する手段である。この復元手段はユニット6に実装され、ソフトウェアまたはハードウェアの性質を持つことができる。この復元手段20は、従属関数の実行をユニット6においてトリガする目的で、リネームされたオーダーを持つトリガコマンドがデータ処理システム3で実行されるたびに、使用フェーズUにおいて必要とされる。
【0165】
本発明の別の好都合な特性に従う保護プロセスの目的は、《条件分岐》と呼ばれる保護原則を実装することである。この実装について、図90〜92を参照しながら説明する。
【0166】
条件分岐による保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて少なくとも1つの条件分岐BCが選択される。また、少なくとも1つの選択された条件分岐BCを含む、バルナラブル・ソフトウェアのソース2vsの部分が少なくとも1つ選択される。
【0167】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、被保護ソフトウェア2pの実行中、特に以下のようになる。
・ データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択された条件分岐BCの機能がユニット6で実行されることを考慮する。
・ ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択された条件分岐BCの少なくとも機能を実行し、第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の扱いをデータ処理システム(3)に任せる。
【0168】
データ処理システム3で実行される被保護ソフトウェア2pの第1実行パート2pesが、条件分岐コマンドを実行する。このコマンドは、第2実行パート2peuによるリモート処理された条件分岐bcの実行をユニット6においてトリガする。この条件分岐の機能は、選択された条件分岐BCの機能と同じである。条件分岐による保護原則の実装では、ユニット6に記憶手段15と処理手段16が装備される。
【0169】
図90は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3におけるバルナラブル・ソフトウェア2vの実行中、特定の時刻にバルナラブル・ソフトウェア2vの実行を続行するスポット、すなわち3つのスポットB、B、またはBのいずれか1つを条件分岐BCがバルナラブル・ソフトウェア2vに指示する。すなわち、条件分岐BCは、B、B、またはBのいずれのスポットでソフトウェアの実行を続行するかを判断する。
【0170】
図91は、ユニット6でリモート処理するように選択された条件分岐が条件分岐BCであるような、本発明の実装例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中に、ユニット6が存在すれば、以下のようになる。
・ 時刻tにおいて、条件分岐コマンドCBCが実行される。このコマンドは、アルゴリズムの面で条件分岐BCと同じであるリモート処理された条件分岐bcの第2実行パート2peuによるユニット6における実行をトリガする。この条件分岐コマンドCBCは、TRIG(bc)と表される。
・ 時刻tにおいて、第1実行パート2pesが選択されたスポット、すなわちB、B、またはBで実行を続行できるようにする情報がユニット6からデータ処理システム3へ転送される。
【0171】
次のことに注意すべきである。すなわち、被保護ソフトウェア2pの第1実行パート2pesの部分の実行中、データ処理システム3で実行される条件分岐コマンドは、対応するリモート処理された条件分岐の実行をユニット6においてトリガする。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0172】
図92は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中、以下のようになる。
・ 時刻tにおいて、条件分岐コマンドCBCを実行しても、ユニット6が存在しないため、リモート処理された条件分岐bcの実行をトリガすることができない。
・ 時刻tにおいて、ユニット6が存在しないため、第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の転送が失敗する。
【0173】
このため、ユニット6が存在しない場合、ユニット6におけるリモート処理された条件分岐の実行のトリガを求める、第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0174】
図90〜92を参照したこれまでの説明では、本発明の主題の目的は、条件分岐をユニット6においてリモート処理することである。当然ながら、リモート処理された条件分岐のすべての機能に相当する全体的機能を持つ条件分岐系列をユニット6でリモート処理すれば、本発明の好ましい実施形態を実行することができる。このリモート処理された条件分岐系列の全体的機能を実行すれば、被保護ソフトウェア2pの第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の扱いをデータ処理システム3に任せることができる。
【0175】
図40〜92を参照したこれまでの説明では、6つの異なるソフトウェア保護原則を互いに無関係なものとして示してきた。本発明に従う保護プロセスは、変数による保護原則を使用して、また場合によってはこの原則を1つ以上の別の保護原則と組み合わせることで実装される。変数による保護原則を、別の少なくとも1つの保護原則を実装することで補完する場合、変数による保護原則を一時的分離による保護原則、および/または、基本関数による保護原則によって補完すれば好都合である。
【0176】
また、一時的分離による保護原則も実装する場合、この保護原則を基本関数による保護原則、および/または、条件分岐による保護原則によって補完することができる。
【0177】
また、基本関数による保護原則も実装する場合、この保護原則を検出および強制による保護原則、および/または、リネームによる保護原則、および/または、条件分岐による保護原則によって補完することができる。
【0178】
また、検出および強制による保護原則も実装する場合、この保護原則をリネームによる保護原則、および/または、条件分岐による保護原則によって補完することができる。
【0179】
また、リネームによる保護原則も実装する場合、この原則を条件分岐による保護原則によって補完することができる。
【0180】
好ましい変形実施形態では、変数による保護原則は一時的分離による保護原則によって補完され、一時的分離による保護原則は基本関数による保護原則によって補完され、基本関数による保護原則は検出および強制による保護原則によって補完され、検出および強制による保護原則はリネームによる保護原則によって補完され、リネームによる保護原則は条件分岐による保護原則によって補完される。
【0181】
変数による保護原則を補完するために別の保護原則を適用する場合、保護原則を組み合わせた実装を考慮して、これまでの説明に以下の変更点を加える必要がある。
・ バルナラブル・ソフトウェアという言葉を、これまで説明した保護原則との関連において脆弱であるソフトウェアという意味で理解する必要がある。したがって、保護原則がバルナラブル・ソフトウェアに既に適用されている場合、「バルナラブル・ソフトウェア」という表現を、「既に適用された保護原則によって保護されているソフトウェア」という意味で理解しなければならない。
・ 被保護ソフトウェアという言葉を、これまで説明した保護原則との関連において保護されているソフトウェアという意味で理解する必要がある。したがって、保護原則が既に適用されている場合、「被保護ソフトウェア」という表現を、「被保護ソフトウェアの新しいバージョン」という意味で理解しなければならない。
・ また、これまで説明した保護原則の実装を選択する場合、既に適用されている保護原則の実装の選択を考慮する必要がある。
【0182】
以下の説明において、本発明に従う保護プロセスの実装がさらに明確に理解される。本発明に従うこの保護プロセスは、より正確には図100に示したように以下から構成される。
・ まず、バルナラブル・ソフトウェア2vが被保護ソフトウェア2pになるように変更される、保護フェーズP
・ 次に、被保護ソフトウェア2pが使用される、使用フェーズU。この使用フェーズUでは、以下のようになる。
− ユニット6が存在する場合、データ処理システム3において第1実行パート2pesの部分が要求するたびに、要求された機能がユニット6で実行されるため、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
− ユニット6が存在しない場合、ユニット6における機能の実行を求める、第1実行パート2pesの部分による要求があっても、この要求を正しく遂行できないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
・ また場合によっては補充フェーズR。この補充フェーズRにおいては、特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装によって保護された機能の少なくとも1回の追加使用が認められる。
【0183】
保護フェーズPは、2つの保護サブフェーズPおよびPに分割することができる。第1の保護サブフェーズは先行保護サブフェーズPと呼ばれ、保護すべきバルナラブル・ソフトウェア2vに依存しない。第2の保護サブフェーズは後続保護サブフェーズPと呼ばれ、保護すべきバルナラブル・ソフトウェア2vに依存する。先行保護サブフェーズPと後続保護サブフェーズPは、2人の異なる人物または2つの異なるチームによって好都合に実行できることに注意すべきである。例えば、ソフトウェア保護システムを開発する1人の人物または1つの会社が先行保護サブフェーズPを実行し、保護を必要とするソフトウェアを開発する1人の人物または1つの会社が後続保護サブフェーズPを実行することができる。当然ながら、先行保護サブフェーズPと後続保護サブフェーズPを同じ人物またはチームが実行することもできる。
【0184】
先行保護サブフェーズPは、複数の段階S11,...,S1iから構成される。この各段階について、様々なタスクとジョブが実行される。
【0185】
この先行保護サブフェーズPの第1段階は、「定義段階S11」と呼ばれる。この定義段階S11では、以下が行われる。
・ 以下が選択される。
− ユニット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
◇ 命令の各オペランド用の以下のフィールド
* フラグフィールドCD
* オペランドの期待される識別フィールドCIP
− 活用手段に搭載され命令セットで使用される各レジスタについて、生成識別フィールドCIG。このフィールドには、このレジスタに結果を返した最後の命令の識別が自動的に記憶される。
− 命令の実行中、各オペランドについて、フラグフィールドCDが要求した場合に、このオペランドで使用されるレジスタに対応する生成識別フィールドCIGが、このオペランドの出所(origin)の期待される識別フィールドCIPと等しいかどうかをチェックできる検出手段17
− チェックされた同等性の少なくとも1つが偽である場合に、命令の結果を変更できる強制手段18
・ 本発明に従う保護プロセスがリネームによる保護原則を実装する場合、以下も定義される。
− トリガコマンドとしての、基本コマンドまたは命令コマンド
− 従属関数としての、基本関数または命令
− 対応する従属関数の実行をトリガするために、データ処理システム3によってユニット6へ転送される情報に少なくとも部分的に対応する、トリガコマンドの少なくとも1つの引数(オーダーとして)
− リネームされたオーダーを持つトリガコマンドを取得するために、オーダーをリネームすることができる、オーダーリネーム方法
− 使用フェーズUにおいてユニット6で使用され、実行すべき従属関数をリネームされたオーダーから復元することができる復元手段20
・ 本発明に従う保護プロセスがリネームによる保護原則の変形を実装する場合、少なくとも1つの従属関数について、アルゴリズムの面では同じであるが、リネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群も定義される。
・ 本発明に従う保護プロセスがリネームによる保護原則の変形の好ましい実施形態の1つを実装する場合、少なくとも1つの従属関数について、アルゴリズムが同じである従属関数群も、以下によって定義される。
− ユニット6で実行すべき従属関数の機能パートを定義する情報とノイズフィールドを連結することによって
− または、命令識別フィールドCIIと、オペランドの期待される識別フィールドCIPを使用することによって
・ 本発明に従う保護プロセスがリネームによる保護原則の好ましい変形を実装する場合、以下も定義される。
− オーダーリネーム方法としての、オーダーを暗号化する暗号化方法
− リネームされたオーダーを復号化して、ユニット6で実行すべき従属関数のアイデンティティを復元する復号化方法を実装する復元手段20
【0186】
先行保護サブフェーズPにおいて、定義段階S11の後に「構築段階S12」と呼ばれる段階が続く。この構築段階S12において、転送手段12、13が構築され、また場合によっては定義段階S11の定義に対応する活用手段も構築される。
【0187】
したがって、この構築段階S12において以下が実行される。
・ 使用フェーズUにおいてデータ処理システム3とユニット6との間でデータを転送することができる転送手段12、13が構築される。
・ また、基本関数による保護原則も実装される場合、使用フェーズUにおけるユニット6による基本関数セットの基本関数の実行も可能にする活用手段が構築される。
・ また、検出および強制による保護原則も実装する場合、以下が構築される。
− 使用フェーズUにおいてユニット6による検出手段17と強制手段18の実装も可能にする活用手段
− 使用フェーズUにおいてユニット6による有効化手段の実装も可能にする活用手段(場合による)
− 使用フェーズUにおいてユニット6による補充手段の実装も可能にする活用手段(場合による)
− 使用フェーズUにおいてユニット6による命令セットの命令の実行も可能にする活用手段(場合による)
・ また、リネームによる保護原則も実装する場合、使用フェーズUにおいてユニット6による復元手段の実装も可能にする活用手段が構築される。
【0188】
活用手段の構築は通常、プログラム開発ユニットによって行われ、定義段階S11で挿入された(intervened)定義が考慮される。このようなユニットについて、図110を参照しながら説明する。
【0189】
先行保護サブフェーズPにおいて、構築段階S12の後に「事前カスタマイズ段階S13」と呼ばれる段階が続くことがある。この事前カスタマイズ段階S13において、少なくとも1つの事前カスタマイズ済みユニット66を取得するために、転送手段13、および/または、活用手段の少なくとも一部が少なくとも1つのブランクユニット60にアップロードされる。活用手段の一部が事前カスタマイズ済みユニット66に一度転送されると、この事前カスタマイズ済みユニット66の外部からその部分に直接アクセスできなくなることに注意すべきである。ブランクユニット60への活用手段の転送は、適合する事前カスタマイズユニットによって行うことができる。事前カスタマイズユニットについて、図120を参照しながら説明する。事前カスタマイズ済みユニット66がチップカード7とそのリーダー8から構成されている場合、事前カスタマイズはチップカード7だけにかかわる。
【0190】
先行保護サブフェーズPにおいて、定義段階S11の後、および場合によっては構築段階S12の後に、「ツール作成段階S14」と呼ばれる段階が続くことがある。このツール作成段階S14において、被保護ソフトウェアの生成を支援することやソフトウェア保護を自動化することを可能にするツールが作成される。このようなツールによって、以下が可能になる。
・ 保護すべきバルナラブル・ソフトウェア2vにおいて、以下の選択を補助するか、以下の選択を自動的に行う。
− ユニット6でリモート処理することが可能な変数
− 変更することが可能な部分
− ユニット6でリモート処理可能なステップに分割することが可能なアルゴリズム処理(一時的分離による保護原則も実装される場合)
− ユニット6でリモート処理可能な基本関数に分割することが可能なアルゴリズム処理(基本関数による保護原則も実装される場合)
− 監視すべき実行特性、および場合によっては、ユニット6でリモート処理可能な命令に分割することが可能なアルゴリズム処理(検出および強制による保護原則も実装される場合)
− ユニット6でリモート処理可能な従属関数に分割することが可能であり、トリガコマンドのオーダーをリネームできるようなアルゴリズム処理(リネームによる保護原則も実装される場合)
− ユニット6でリモート処理することが可能な機能を持つ条件分岐(条件分岐による保護原則も実装される場合)
・ また場合によっては、被保護ソフトウェアの生成を支援し、またはソフトウェア保護を自動化する。
【0191】
このような各種ツールは、個別に実行することも組み合わせて実行することもできる。各ツールは、プリプロセッサ、アセンブラ、コンパイラなど様々な形態をとることができる。
【0192】
先行保護サブフェーズPの後に、保護すべきバルナラブル・ソフトウェア2vに依存する後続保護サブフェーズPが続く。この後続保護サブフェーズPも複数の段階から構成される。変数による保護原則の実装に対応する第1段階は、「作成段階S21」と呼ばれる。この作成段階S21では、定義段階S11で行われた選択が使用される。この選択と、ツール作成段階S14で構築されたツール(場合による)を利用して以下の処理を実行することで、被保護ソフトウェア2pが作成される。
・ バルナラブル・ソフトウェアのソース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に存在することを考慮するようになる。
【0193】
当然ながら、バルナラブル・ソフトウェア2vを前もって実現しなくても、本発明に従う変数による保護原則を新しいソフトウェアの開発中に直接適用することができる。このような方法で、被保護ソフトウェア2pが直接得られる。
【0194】
後続保護サブフェーズPにおいて、変数による保護原則に加えて少なくとも1つの別の保護原則が適用される場合、「変更段階S22」が実行される。この変更段階S22では、定義段階S11で挿入された(intervened)定義が使用される。これまで定義してきた構成(arrangements)の1つに従う保護原則の実装を可能にするように、この定義とツール作成段階S14で構築されたツール(場合による)を利用して、被保護ソフトウェア2pが変更される。
【0195】
一時的分離による保護原則を実装する場合、以下の処理によって、被保護ソフトウェア2pが変更される。
・ 被保護ソフトウェアのソース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によってトリガされたステップが実行される。
【0196】
基本関数による保護原則が実装されているが、一時的分離による保護原則が実装されていない場合、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース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によってトリガされた基本関数が実行される。
【0197】
一時的分離による保護原則と基本関数による保護原則が両方とも実装されている場合、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース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によってトリガされた基本関数が実行される。
【0198】
検出および強制による保護原則が実装されている場合、被保護ソフトウェア2pが以下の処理によって変更される。
・ 監視することが可能なソフトウェア実行特性の中から、監視すべきソフトウェア実行特性を少なくとも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の実行が変更される。
【0199】
特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の計測変数を少なくとも1つ選択する。
・ 以下を選択する。
− 計測変数を利用して使用状況を監視することが可能な、被保護ソフトウェア2pの少なくとも1つの機能
− この機能の使用状況の定量化に使用される少なくとも1つの計測変数
− この機能の使用限度に対応する選択された計測変数に関連付けられた少なくとも1つのしきい値
− この機能の使用状況に応じて、選択された計測変数を更新する少なくとも1つの方法
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、この機能の使用状況に応じて計測変数が第2実行パート2peuによって有効化され、少なくとも1つのしきい値超過が考慮されるようになる。
【0200】
特性として計測変数を使用する、検出および強制による保護原則の第1の好ましい変形実施形態の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、機能の各種使用限度に対応する複数のしきい値を関連付ける必要がある、計測変数を少なくとも1つ選択する。
・ 選択された計測変数に関連付けられたしきい値を少なくとも2つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、第2実行パート2peuが様々なしきい値の超過を個別に考慮するようになる。
【0201】
特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、機能の使用を制限でき、少なくとも1回の追加使用を認めることができなければならない、選択された計測変数を少なくとも1つ選択する。
・ 少なくとも1つの選択された部分を変更する。この変更の結果、補充と呼ばれるフェーズにおいて、選択された計測変数に対応する少なくとも1つの機能の少なくとも1回の追加使用を認めることができるようになる。
【0202】
特性としてソフトウェア使用状況プロファイルを使用する、検出および強制による保護原則の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 監視すべきソフトウェア実行特性として、ソフトウェア使用状況プロファイルを少なくとも1つ選択する。
・ 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない実行特徴を少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、第2実行パート2peuが選択された実行特徴をすべて遵守するようになる。
【0203】
遵守すべき実行特徴として実行連鎖のモニタリングを使用する、検出および強制による保護原則の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を以下の処理によって変更する。
− 基本関数を命令に変換する。
− ユニット6での実行中に命令の少なくとも一部が遵守しなければならない連鎖を指定する。
− 基本コマンドを、使用される命令に対応する命令コマンドに変換する。
【0204】
リネームによる保護原則を実装する場合、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、トリガコマンドを選択する。
・ 対応する従属関数のアイデンティティを隠蔽するために、選択されたトリガコマンドのオーダーをリネームすることで、被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、リネームされたオーダーを持つトリガコマンドが実行されるようになる。
− 復元手段20も実装する活用手段を備える被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、第1実行パート2pesによって実行がトリガされる従属関数のアイデンティティが第2実行パート2peuによって復元され、従属関数が第2実行パート2peuによって実行されるようになる。
【0205】
リネームによる保護原則の変形の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、リネームされたオーダーを持つトリガコマンドを少なくとも1つ選択する。
・ リネームされたオーダーを持つ選択された1つのトリガコマンドの、リネームされたオーダーを少なくとも、リネームされた別のオーダーに置き換え、同じ群の従属関数をトリガすることで、被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。
【0206】
条件分岐による保護原則を実装する場合、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース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が現れるようになる。
【0207】
条件分岐による保護原則の好ましい実施形態の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース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が現れるようになる。
【0208】
当然ながら、中間的な保護されたソフトウェアを前もって実行しなくても、本発明に従う保護原則を新しいソフトウェアの開発中に直接適用することができる。このような方法で、作成段階S21と変更段階S22を同時に実行して、被保護ソフトウェア2pを直接得ることができる。
【0209】
後続保護サブフェーズPにおいて、変数による保護原則に加えて少なくとも1つの別の保護原則を使用する場合、被保護ソフトウェア2pの作成段階S21の後に、また場合によっては変更段階S22の後に「カスタマイズ段階S23」と呼ばれる段階が続く。このカスタマイズ段階S23において、少なくとも1つのユニット6を取得するために、活用手段を含む場合がある第2オブジェクトパート2pouが少なくとも1つのブランクユニット60にアップロードされるか、または、少なくとも1つのユニット6を取得するために、活用手段を含む場合がある第2オブジェクトパート2pouの一部が少なくとも1つの事前カスタマイズ済みユニット66にアップロードされる。このカスタマイズ情報のアップロードによって、少なくとも1つのユニット6を作動させることができる。この情報の一部がユニット6に一度転送されると、このユニット6の外部からその部分に直接アクセスできなくなることに注意すべきである。ブランクユニット60または事前カスタマイズ済みユニット66へのカスタマイズ情報の転送は、適合するカスタマイズユニットによって行うことができる。カスタマイズユニットについては、図150を参照しながら説明する。ユニット6がチップカード7とそのリーダー8から構成されている場合、カスタマイズはチップカード7だけにかかわる。
【0210】
保護フェーズPの実装における様々な技術手段について、図110、120、130、140、および150を参照しながらより詳しく説明する。
【0211】
図110は、構築段階S12を実装できるシステム25の実施形態を示している。この
構築段階S12では、定義段階S11で挿入された(intervened)定義が考慮され、転送手段12、13、および場合によってはユニット6用の活用手段が構築される。このようなシステム25には、システムユニット、画面、周辺機器(キーボードやマウスなど)から構成され、ファイルエディタ、アセンブラ、プリプロセッサ、コンパイラ、インタプリタ、デバッガ、リンクエディタなどのプログラムを含むコンピュータの形態を一般にとる、プログラム開発ユニットまたはワークステーションが含まれる。
【0212】
図120は、事前カスタマイズユニット30の実施形態を示している。事前カスタマイズユニット30は、事前カスタマイズ済みユニット66を取得するために、転送手段13、および/または、活用手段を少なくとも部分的に、少なくとも1つのブランクユニット60へアップロードすることができる。この事前カスタマイズユニット30には、転送手段13、および/または、活用手段がアップロードされた事前カスタマイズ済みユニット66を取得するために、ブランクユニット60を電気的に予めカスタマイズできる読み取り/書き込み手段31が含まれている。また、例えばプリンタの形態をとることができる、ブランクユニット60の物理カスタマイズ手段32を事前カスタマイズユニット30に含めることもできる。ユニット6がチップカード7とそのリーダー8から構成されている場合、事前カスタマイズは一般に、チップカード7だけにかかわる。
【0213】
図130は、被保護ソフトウェアの生成を支援することやソフトウェア保護を自動化することを可能にするツールの作成を実行できるシステム35の実施形態を示している。このようなシステム35には、システムユニット、画面、周辺機器(キーボードやマウスなど)から構成され、ファイルエディタ、アセンブラ、プリプロセッサ、コンパイラ、インタプリタ、デバッガ、リンクエディタなどのプログラムを含むコンピュータの形態を一般にとる、プログラム開発ユニットまたはワークステーションが含まれる。
【0214】
図140は、被保護ソフトウェア2pを直接作成することや、被保護ソフトウェア2pの取得を目的としてバルナラブル・ソフトウェア2vを変更することを可能にするシステム40の実施形態を示している。このようなシステム40には、システムユニット、画面、周辺機器(キーボードやマウスなど)から構成され、ファイルエディタ、アセンブラ、プリプロセッサ、コンパイラ、インタプリタ、デバッガ、リンクエディタなどのプログラムと、被保護ソフトウェアの生成を支援することやソフトウェア保護を自動化することを可能にするツールを含むコンピュータの形態を一般にとる、プログラム開発ユニットまたはワークステーションが含まれる。
【0215】
図150は、カスタマイズユニット45の実施形態を示している。このカスタマイズユニット45は、少なくとも1つのユニット6を取得するために第2オブジェクトパート2pouを少なくとも1つのブランクユニット60へアップロードすることや、少なくとも1つのユニット6を取得するために第2オブジェクトパート2pouの一部を少なくとも1つの事前カスタマイズ済みユニット66へアップロードすることができる。このカスタマイズユニット45には、少なくとも1つのユニット6を取得するために、少なくとも1つのブランクユニット60または少なくとも1つの事前カスタマイズ済みユニット66を電気的にカスタマイズできる読み取り/書き込み手段46が含まれる。このカスタマイズの終了時、ユニット6には被保護ソフトウェア2pの実行に必要な情報が含まれる。また、カスタマイズユニット45には、例えばプリンタの形態をとることができる、少なくとも1つのユニット6用の物理カスタマイズ手段47を含めることもできる。ユニット6がチップカード7とそのリーダー8から構成される場合、カスタマイズは一般に、チップカード7だけにかかわる。
【0216】
本発明に従う保護プロセスに以下の改良を施すことができる。
・ 被保護ソフトウェア2pの第2オブジェクトパート2pouが配分された複数の処理/記憶ユニットを一緒に使用するように改良できる。これにより、一緒に使用した場合は、被保護ソフトウェア2pの実行を可能にし、この処理/記憶ユニットの少なくとも1つが存在しない場合は、被保護ソフトウェア2pの使用を防止することができる。
・ 同様に、事前カスタマイズ段階S13の後、カスタマイズ段階S23において、事前カスタマイズ済みユニット66をユニット6に変換するために必要な第2オブジェクトパート2pouの一部を、カスタマイズユニット45で使用される処理/記憶ユニットに含めることで、この第2オブジェクトパート2pouの一部へのアクセスを制限することができる。当然ながら、この第2オブジェクトパート2pouの一部を複数の処理/記憶ユニットに配分することができる。これにより、この第2オブジェクトパート2pouの一部へのアクセスを、この処理/記憶ユニットを一緒に使用している場合のみ許可することができる。
【図面の簡単な説明】
【0217】
【図10】本発明に従うプロセスによってそれぞれ保護されない、および保護されるソフトウェアの様々な表現を示す機能ブロック図である。
【図11】本発明に従うプロセスによってそれぞれ保護されない、および保護されるソフトウェアの様々な表現を示す機能ブロック図である。
【図20】本発明に従うプロセスを実装する装置の様々な実施形態を例として示している。
【図21】本発明に従うプロセスを実装する装置の様々な実施形態を例として示している。
【図22】本発明に従うプロセスを実装する装置の様々な実施形態を例として示している。
【図30】本発明に従うプロセスの一般原則を明確に示す機能ブロック図である。
【図31】本発明に従うプロセスの一般原則を明確に示す機能ブロック図である。
【図40】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図41】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図42】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図43】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図50】一時的分離による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図51】一時的分離による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図52】一時的分離による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図53】一時的分離による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図54】一時的分離による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図60】基本関数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図61】基本関数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図62】基本関数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図63】基本関数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図64】基本関数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図70】検出および強制による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図71】検出および強制による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図72】検出および強制による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図73】検出および強制による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図74】検出および強制による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図80】リネームによる保護原則を実装する本発明に従う保護プロセスを示す図である。
【図81】リネームによる保護原則を実装する本発明に従う保護プロセスを示す図である。
【図82】リネームによる保護原則を実装する本発明に従う保護プロセスを示す図である。
【図83】リネームによる保護原則を実装する本発明に従う保護プロセスを示す図である。
【図84】リネームによる保護原則を実装する本発明に従う保護プロセスを示す図である。
【図85】リネームによる保護原則を実装する本発明に従う保護プロセスを示す図である。
【図90】条件分岐による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図91】条件分岐による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図92】条件分岐による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図100】本発明の主題の様々な実装フェーズを示す図である。
【図110】本発明に従う保護フェーズの構築段階の実装を可能にするシステムの実施形態を示している。
【図120】本発明に従う保護プロセスで使用される事前カスタマイズユニットの実施形態を示している。
【図130】本発明に従う保護フェーズのツール作成段階の実装を可能にするシステムの実施形態を示している。
【図140】本発明に従う保護プロセスの実装を可能にするシステムの実施形態を示している。
【図150】本発明に従う保護プロセスで使用されるカスタマイズユニットの実施形態を示している。

Claims (37)

  1. 少なくとも記憶手段(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)が完全に機能しないようにすること、
    を含むプロセス。
  2. → 保護フェーズ(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に記載のプロセス。
  3. → 保護フェーズ(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に記載のプロセス。
  4. → 保護フェーズ(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に記載のプロセス。
  5. → 保護フェーズ(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に記載のプロセス。
  6. 被保護ソフトウェア(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に記載のプロセス。
  7. → 保護フェーズ(P)の間に、
    ・− 少なくとも1つの計測変数について、いくつかの関連するしきい値、
    − および、前記しきい値のそれぞれに対応する相異なる強制手段、
    を定義すること、
    ・ および、被保護ソフトウェア(2p)を、
    − 被保護ソフトウェアのソース(2ps)中で、機能の相異なる使用限度に対応するいくつかのしきい値が関連づけられなければならない少なくとも1つの選択された計測変数を選択することによって、
    − 選択された計測変数に関連する少なくとも2つのしきい値を選択することによって、
    − および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、種々のしきい値の超過が第2実行パート(2peu)によって別様に考慮されるような変更である)によって、
    変更すること、
    を含み、
    → 使用フェーズ(U)の間に、
    ・ ユニット(6)の存在時に、
    − 第1しきい値の超過が検出された場合、被保護ソフトウェア(2p)に対して、対応する機能をそれ以上使用しないように命じること、
    − 第2しきい値の超過が検出された場合、被保護ソフトウェア(2p)の対応する機能、および/または、少なくとも一部分を無効にすること、
    を含む請求項6に記載のプロセス。
  8. → 保護フェーズ(P)の間に、
    ・ 計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1つの追加使用を認めることが可能な補充手段を定義すること、
    ・ ユニット(6)が補充手段を実施することも可能にする活用手段を構築すること、
    ・ および、被保護ソフトウェア(2p)を、
    − 被保護ソフトウェアのソース(2ps)中で、少なくとも1つの追加使用を認めることができなければならない機能の使用を制限することが可能な少なくとも1つの選択された計測変数を選択することによって、
    − および、少なくとも1つの選択された部分を変更すること(この変更は、補充フェーズと呼ばれるフェーズの間、選択された計測変数に対応する少なくとも1つの機能の少なくとも1つの追加使用が認められるような変更である)によって、
    変更すること、
    を含み、
    → 補充フェーズの間に、
    ・機能の少なくとも1つの追加使用を可能にするために、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連するしきい値を再有効化すること、
    を含む請求項6または7に記載のプロセス。
  9. → 保護フェーズ(P)の間に、
    ・− 監視され得るソフトウェア実行特性として、ソフトウェア使用状況プロファイル、
    − および、遵守すべき基準として、少なくとも1つのソフトウェア実行特徴、
    を定義すること、
    ・ および、被保護ソフトウェア(2p)を、
    − 少なくとも1つのソフトウェア使用状況プロファイルを監視することをソフトウェア実行特性として選択することによって、
    − 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない少なくとも1つの実行特徴を選択することによって、
    − および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)がすべての選択された実行特徴を遵守しなければならないような変更である)によって、
    変更すること、
    を含み、
    → 使用フェーズ(U)の間に、ユニット(6)の存在時に、そして少なくとも1つの実行特徴が遵守されていないことが検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
    を含む請求項5に記載のプロセス。
  10. → 保護フェーズ(P)の間に、
    ・− ユニット(6)で実行され得る命令のセット、
    − 前記命令のセットに対する命令コマンドのセットであり、データ処理システム(3)で実行され、ユニット(6)で命令の実行をトリガし得る前記命令コマンドのセット、
    − 使用状況プロファイルとして、命令の連鎖、
    − 実行特徴として、命令の実行に対して期待される連鎖、
    − 検出手段(17)として、命令の連鎖が期待されるものに対応しないことを検出することが可能な手段、
    − および、強制手段(18)として、命令の連鎖が期待されるものに対応しない場合にデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更することが可能な手段、
    を定義すること、
    ・ ユニット(6)が命令セットの命令を実行することも可能にする活用手段を構築すること(該命令の実行はデータ処理システム(3)における命令コマンドの実行によりトリガされる)、
    ・ および、被保護ソフトウェア(2p)を、
    − 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を、
    > 基本関数を命令に変換することによって、
    > 命令の少なくとも一部分がユニット(6)におけるそれらの実行中に遵守しなければならない連鎖を指定することによって、
    > および、基本コマンドを、使用される命令に対応する命令コマンドに変換することによって、
    変更することによって、
    変更すること、
    を含み
    → 使用フェーズ(U)の間に、ユニット(6)の存在時に、ユニット(6)で実行される命令の連鎖が期待されるものに対応しないことが検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
    を含む請求項9に記載のプロセス。
  11. → 保護フェーズ(P)の間に、
    ・− 命令セットとして、少なくとも一部分の命令がレジスタと連携し、結果を返す目的で少なくとも1つのオペランドを使用する命令セット、
    − レジスタと連携する少なくとも一部分の命令について、
    > 命令の機能を定義するパート(PF)、
    > および、命令の実行に対する期待される連鎖を定義するパート、
    (前記パートは、
    ◇ 命令の識別フィールド(CII)、
    ◇ および、命令の各オペランドごとに、
    * フラグフィールド(CD)、
    * および、オペランドの期待される識別フィールド(CIP)、
    に対応するビットフィールド
    を含むパート)、
    − 活用手段に属し命令セットによって使用される各レジスタごとに、該レジスタ内にその結果を返した最後の命令の識別が自動的に記憶される生成識別フィールド(CIG)、
    − 検出手段(17)として、命令の実行中に、各オペランドごとに、フラグフィールド(CD)が要求する時に、該オペランドによって使用されるレジスタに対応する生成識別フィールド(CIP)と、該オペランドの出所の期待される識別フィールド(CIP)との等値性をチェックすることが可能な手段、
    − および、強制手段(18)として、チェックされた等値性の少なくとも1つが偽である場合に、命令の結果を変更することが可能な手段、
    を定義すること、
    を含む請求項10に記載のプロセス。
  12. → 保護フェーズ(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に記載のプロセス。
  13. → 保護フェーズ(P)の間に、
    ・ 少なくとも1つの従属関数について、アルゴリズム的に等価であるが、そのリネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群を定義すること、
    ・ および、被保護ソフトウェア(2p)を、
    − 被保護ソフトウェアのソース(2ps)中で、リネームされたオーダーを有する少なくとも1つのトリガコマンドを選択することによって、
    − および、リネームされたオーダーを有する1つの選択されたトリガコマンドの少なくともリネームされたオーダーを、同じ群の従属関数をトリガする別のリネームされたオーダーと置換することにより、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更することによって、
    変更すること、
    を含む請求項12に記載のプロセス。
  14. → 保護フェーズ(P)の間に、少なくとも1つの従属関数について、アルゴリズム的に等価な従属関数群を、
    − ユニット(6)で実行すべき従属関数の機能パートを定義する情報にノイズフィールドを連結することによって、
    − または、命令の識別フィールド(CII)およびオペランドの期待される識別フィールド(CIP)を使用することによって、
    定義すること、
    を含む請求項13に記載のプロセス。
  15. → 保護フェーズ(P)の間に、
    ・− オーダーをリネームする方法として、オーダーを暗号化する暗号化方法、
    − および、復元手段(20)として、リネームされたオーダーを復号化することによりユニット(6)で実行すべき従属関数の識別を復元する復号化方法を実施する手段、
    を定義すること、
    を含む請求項12、13または14に記載のプロセス。
  16. → 保護フェーズ(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項に記載のプロセス。
  17. 保護フェーズ(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に記載のプロセス。
  18. 保護フェーズ(P)を、保護すべきソフトウェアに依存しない先行保護サブフェーズ(P1)および保護すべきソフトウェアに依存する後続保護サブフェーズ(P2)に分割することを含む請求項1ないし17のいずれか1項に記載のプロセス。
  19. 先行保護サブフェーズ(P1)の間に、すべての定義が実行される定義段階(S11)を挿入することを含む請求項18に記載のプロセス。
  20. 定義段階(S11)の後に、活用手段が構築される構築段階(S12)を挿入することを含む請求項19に記載のプロセス。
  21. 構築段階(S12)の後に、事前カスタマイズ済みユニット(66)を取得する目的で、活用手段の少なくとも一部分をブランクユニット(60)にアップロードすることを含む事前カスタマイズ段階(S13)を挿入することを含む請求項20に記載のプロセス。
  22. 先行保護サブフェーズ(P1)の間に、被保護ソフトウェアの生成を支援し、または、ソフトウェア保護を自動化することを可能にするツールが作成されるツール作成段階(S14)を挿入することを含む請求項19または20に記載のプロセス。
  23. 後続保護サブフェーズ(P2)を、
    ・ バルナラブル・ソフトウェア(2v)から被保護ソフトウェア(2p)が作成される作成段階(S21)、
    ・ 場合によって、被保護ソフトウェア(2p)が変更される変更段階(S22)、
    ・ および場合によって、
    − 活用手段を場合によって含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)が、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つのブランクユニット(60)にアップロードされ、
    − または、活用手段を場合によって含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)の一部分が、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つの事前カスタマイズ済みユニット(66)にアップロードされる、
    カスタマイズ段階(S23)、
    に分割することを含む請求項18および21に記載のプロセス。
  24. 作成段階(S21)の間に、および場合によって変更段階(S22)の間に、被保護ソフトウェアの生成を支援し、またはソフトウェア保護を自動化する少なくとも1つのツールを使用することを含む請求項22および23に記載のプロセス。
  25. 定義段階(S11)の間に挿入された定義を考慮して、構築段階(S12)の間に、ユニット(6)向けの活用手段の構築を実行するために使用されるプログラム開発ユニットを含むことを特徴とする請求項20に記載のプロセスの実施のためのシステム。
  26. 少なくとも1つの事前カスタマイズ済みユニット(66)を取得する目的で、活用手段の少なくとも一部分を少なくとも1つのブランクユニット(60)にアップロードすることが可能な事前カスタマイズユニット(30)を含むことを特徴とする請求項21に記載のプロセスの実施のためのシステム。
  27. ツール作成段階(S14)の間に、被保護ソフトウェアの生成を支援し、または、ソフトウェア保護を自動化するツールの作成を実行するために使用されるプログラム開発ユニットを含むことを特徴とする請求項22に記載のプロセスの実施のためのシステム。
  28. 被保護ソフトウェア(2p)を作成または変更するために使用されるプログラム開発ユニットを含むことを特徴とする請求項23または24に記載のプロセスの実施のためのシステム。
  29. ・ 少なくとも1つのユニット(6)を取得する目的で、少なくとも1つのブランクユニット(60)に、第2オブジェクトパート(2pou)を、
    ・ または、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つの事前カスタマイズ済みユニット(66)に、第2オブジェクトパート(2pou)の一部分を、
    アップロードすることが可能なカスタマイズユニット(45)を含むことを特徴とする請求項23に記載のプロセスの実施のためのシステム。
  30. 請求項26に記載のシステムによって取得されることを特徴とする事前カスタマイズ済みユニット(66)。
  31. 被保護ソフトウェア(2p)を実行しその無許可使用を防止することが可能で、請求項29に記載のカスタマイズユニット(45)を使用してアップロードされた被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)を含むことを特徴とするユニット(6)。
  32. 請求項29に記載のカスタマイズユニット(45)を使用してアップロードされた被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)が複数の処理/記憶ユニットに分割され、それらの同時使用により被保護ソフトウェア(2p)を実行することが可能となるようにしたことを特徴とするユニット(6)のセット。
  33. ・ 第1オブジェクトパート(2pos)を含みデータ処理システム(3)で作動するように設計された第1配布パート(2pds)、
    ・ および、
    − ブランクユニット(60)、
    − または、カスタマイズ情報のアップロード後にユニット(6)に変換されることが可能な、請求項30に記載の事前カスタマイズ済みユニット(66)、
    − または、請求項31に記載のユニット(6)、
    の形式を有する第2配布パート(2pdu)、
    を含むことを特徴とする被保護ソフトウェア(2p)の配布セット(2pd)。
  34. 第1配布パート(2pds)は、CDROMなどの物理配布媒体の形式、または、ネットワークを通じて配布されるファイルの形式を有することを特徴とする請求項33に記載の被保護ソフトウェア(2p)の配布セット(2pd)。
  35. ブランクユニット(60)、事前カスタマイズ済みユニット(66)またはユニット(6)の形式を有する第2配布パート(2pdu)は、少なくとも1つのチップカード(7)を含むことを特徴とする請求項33に記載の被保護ソフトウェア(2p)の配布セット(2pd)。
  36. 請求項30に記載の事前カスタマイズ済みユニット(66)を請求項31に記載のユニット(6)に変換するのに必要な第2オブジェクトパート(2pou)の部分を含むことを特徴とする処理/記憶ユニット。
  37. 処理/記憶ユニットのセットであって、同時に使用された該処理/記憶ユニットが、請求項30に記載の事前カスタマイズ済みユニット(66)を請求項31に記載のユニット(6)に変換するのに必要な第2オブジェクトパート(2pou)の部分を含むことを特徴とする処理/記憶ユニットのセット。
JP2003517758A 2001-07-31 2002-07-04 「変数」原理により不正使用に対してソフトウェアを保護する方法 Expired - Fee Related JP3949107B2 (ja)

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 true JP2004537806A (ja) 2004-12-16
JP3949107B2 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)

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

* Cited by examiner, † Cited by third party
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
WO1999066387A1 (fr) * 1998-06-12 1999-12-23 Gemplus Procede de controle de l'execution d'un produit logiciel
AU7957998A (en) * 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security

Also Published As

Publication number Publication date
HK1070155A1 (en) 2005-06-10
TNSN04012A1 (fr) 2006-06-01
YU5404A (sh) 2006-08-17
OA12699A (en) 2006-06-23
IS7121A (is) 2004-01-20
MXPA04000488A (es) 2005-03-07
EA200400057A1 (ru) 2004-06-24
NO20040232L (no) 2004-03-30
JP3949107B2 (ja) 2007-07-25
UA77186C2 (en) 2006-11-15
EA005465B1 (ru) 2005-02-24
AP2004002958A0 (en) 2004-03-31
EP1412861A2 (fr) 2004-04-28
CO5550508A2 (es) 2005-08-31
CA2454090A1 (fr) 2003-02-13
IL159953A0 (en) 2004-06-20
ZA200400348B (en) 2005-03-30
HUP0400228A2 (en) 2004-09-28
WO2003012649A3 (fr) 2003-12-24
MA26126A1 (fr) 2004-04-01
KR20040027881A (ko) 2004-04-01
FR2828305B1 (fr) 2010-09-03
BR0211374A (pt) 2004-07-20
AU2002325998B2 (en) 2008-10-30
GEP20053647B (en) 2005-10-25
FR2828305A1 (fr) 2003-02-07
CR7231A (es) 2005-07-21
CN1288525C (zh) 2006-12-06
CN1535410A (zh) 2004-10-06
ECSP044951A (es) 2004-04-28
KR100940347B1 (ko) 2010-02-04
WO2003012649A2 (fr) 2003-02-13
HRP20040049A2 (en) 2004-06-30
PL367366A1 (en) 2005-02-21

Similar Documents

Publication Publication Date Title
US20070294770A1 (en) Method to Protect Software Against Unwanted Use with a Variable Principle
US20070136816A1 (en) Method to protect software against unwanted use with a detection and coercion principle
JP3949105B2 (ja) 「リネーム」原理を使用してその無許可使用に対してソフトウェアを保護する方法
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a "Temporal Dissociation" Principle
JP2004537807A (ja) 「一時的分離」原理により不正使用に対してソフトウェアを保護する方法
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a "Renaming" Principle
JP3949103B2 (ja) 「条件分岐」原理により不正使用に対してソフトウェアを保護する方法
JP2004537806A (ja) 「変数」原理により不正使用に対してソフトウェアを保護する方法
JP3949106B2 (ja) 「基本関数」原理により不正使用に対してソフトウェアを保護する方法
JP2004537796A (ja) 「検出および強制」原理により不正使用に対してソフトウェアを保護する方法
US7434064B2 (en) Method to protect software against unwanted use with a “elementary functions” principle
US7502940B2 (en) Method to protect software against unwanted use with a “conditional branch” principle

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