JP2004537801A - How to protect software against unauthorized use by "basic function" principle - Google Patents

How to protect software against unauthorized use by "basic function" principle Download PDF

Info

Publication number
JP2004537801A
JP2004537801A JP2003517723A JP2003517723A JP2004537801A JP 2004537801 A JP2004537801 A JP 2004537801A JP 2003517723 A JP2003517723 A JP 2003517723A JP 2003517723 A JP2003517723 A JP 2003517723A JP 2004537801 A JP2004537801 A JP 2004537801A
Authority
JP
Japan
Prior art keywords
execution
unit
protected software
software
function
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
JP2003517723A
Other languages
Japanese (ja)
Other versions
JP3949106B2 (en
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 JP2004537801A publication Critical patent/JP2004537801A/en
Application granted granted Critical
Publication of JP3949106B2 publication Critical patent/JP3949106B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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
    • 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

Abstract

本発明は、ユニットにより、バルナラブル・ソフトウェアを無許可使用に対して保護する方法に関する。当該バルナラブル・ソフトウェアはデータ処理システム上で動作する。該方法は、ユニットで実行可能な基本関数のセット、および、被保護ソフトウェアの生成における基本コマンドのセットを定義する。被保護ソフトウェアは、少なくとも1つのアルゴリズム処理を選択することによって、バルナラブル・ソフトウェアのソースから被保護ソフトウェアのソースを作成することによって、バルナラブル・ソフトウェアのソースを変更することによって生成されるので、選択された少なくとも1つのアルゴリズム処理は、被保護ソフトウェアが実行されたときに分割される。また、アルゴリズム処理は、基本関数を用いることによって実行される。The present invention relates to a method for protecting, by a unit, balunable software against unauthorized use. The valuable software runs on a data processing system. The method defines a set of basic functions that can be executed by the unit and a set of basic commands in the generation of the protected software. The protected software is selected because it is generated by modifying the source of the balunable software by creating the source of the protected software from the source of the balunable software by selecting at least one algorithmic operation. The at least one algorithmic process is split when the protected software is executed. The algorithm processing is executed by using a basic function.

Description

【0001】
本発明は、広義にはデータ処理システムの技術分野に関し、特に、無許可使用に対して前記データ処理システム上で実行されるソフトウェアを保護する手段を目的とする。
【0002】
本発明の主題は、特に、処理/記憶ユニットを使用して無許可使用に対してソフトウェアを保護する手段の提供を特に目的とする。このようなユニットは、USBポート上のチップカードまたは実体キーによって一般的に実現されている。
【0003】
上記の技術分野において、主要な問題は、許諾権に対する支払をしていないユーザによるソフトウェアの無許可使用に関するものである。このソフトウェアの不法使用は、ソフトウェア編集者、ソフトウェア販売者、および/または、そのようなソフトウェアを製品にまとめるいかなる者にとっても明らかな損失を引き起こす。このような不法コピーを防止するため、最新の技術では、ソフトウェアを保護するために種々の解決法が提案されている。
【0004】
例えば、保護キーまたは「ドングル」と称する物理コンポーネントのような、ハードウェア保護システムを利用する保護の解決法が知られている。このような保護キーは、キーの存在時にのみソフトウェアが実行されることを保証しなければならない。しかし、この解決法は、回避しやすいという不都合を生じるので有効でない。悪意者あるいはハッカーが、逆アセンブラのような特殊ツールの助けを借りて、保護キーの制御命令を削除する可能性がある。その場合、ソフトウェアの改変バージョンに対応する不法コピーを保護なしで実行可能にすることが可能となる。さらに、同一システムに2個より多くの保護キーを接続することが困難であるため、この解決法をすべてのソフトウェアに一般化することはできない。
【0005】
本発明の主題は、正確には、処理/記憶ユニットを使用して、ソフトウェアが完全に機能するためにこのようなユニットの存在が必要であるようにして、無許可使用に対してソフトウェアを保護するプロセスを提案することにより、上記の問題点に対する解決法を見出すことを目的とする。
【0006】
このような目標を達成するため、本発明の主題は、少なくとも処理手段および記憶手段を含む少なくとも1つのブランクユニットを使用して、ソースから生成されてデータ処理システム上で作動するバルナラブル・ソフトウェアをその無許可使用に対して保護することに関する。本発明によるプロセスは、:
→保護フェーズの間に、
・− 基本機能がユニットにおいて実行され得る基本関数のセット、
− および、前記基本関数のセットに対する基本コマンドであり、データ処理システムで実行され、ユニットにおける実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ 前記セットの基本関数を実行することができるユニットに変換することが可能な活用手段を構築すること(前記基本関数の実行はデータ処理システムにおける実行によってトリガされる)、
・ 被保護ソフトウェアを、
− バルナラブル・ソフトウェアの実行の間に、少なくとも1つのオペランドを使用し、少なくとも1つの結果を取得することが可能な少なくとも1つのアルゴリズム処理を選択することによって、
− 少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソースの少なくとも1つの部分を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの変更された部分を取得するために、バルナラブル・ソフトウェアのソースの少なくとも1つの選択された部分を変更することで、バルナラブル・ソフトウェアのソースから被保護ソフトウェアのソースを作成すること(この変更は、
>被保護ソフトウェアの実行中に、第1の実行パートがデータ処理システムで実行され、第2の実行パートが情報のアップロードの後にブランクユニットから取得されるユニットで実行され、
>少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パートによって実行され、
>少なくとも1つの選択されたアルゴリズム処理が分割され、これにより保護されたソフトウェアの実行の間に前記アルゴリズム処理が基本関数を用いて第2実行パートによって実行され、
>少なくとも1つの選択されたアルゴリズム処理に対して、基本コマンドが被保護ソフトウェアのソースに統合され、これにより被保護ソフトウェア実行の間に、各々の基本コマンドが第1の実行パートにより実行され、ユニットにおいて基本関数の第2実行パートによる実行をトリガし、
>基本コマンドのシーケンスが被保護ソフトウェアの実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 保護されたソフトウェアのソースからの被保護ソフトウェアの第1オブジェクトパート(前記第1オブジェクトパートは、被保護ソフトウェアの実行の間中に第1実行パートが現れるようなオブジェクトパートであり、第1実行パートはデータ処理システムで実行され、その少なくとも1つの部分は選択されたシーケンスに従って基本コマンドが実行されることを考慮する)、
> および、活用手段を含む保護ソフトウェアの第2オブジェクトパートであり、ブランクユニットへのアップロードの後、保護ソフトウェアの実行中に、第1実行パートによってトリガされた基本関数が実行されることによって、第2実行パートが現れるようなもの、
を生成することによって、
作成すること、
・ および、ユニットを得る目的で、ブランクユニットに第2オブジェクトパートをアップロードすること、を含み、
→ 保護ソフトウェアが実行される活用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれる基本コマンドが要求するたびに、ユニットで対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける基本関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0007】
好ましい実施例によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアの実行中に、被保護ソフトウェアの状態を部分的に規定する、少なくとも1つの選択されたアルゴリズム処理で使用される少なくとも1つの変数を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニットに存在するような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、第1実行パートの少なくとも1つの部分が、少なくとも1つの変数または変数の少なくとも1つのコピーがユニットに存在することも考慮するようなもの、
> および、被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニットにも存在するようになるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分が要求するたびに、ユニット内に存在する変数または変数のコピーを使用することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットに存在する変数または変数のコピーを使用することを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0008】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− ユニットで少なくとも部分的に監視され得る少なくとも1つのソフトウェア実行特性、
− 少なくとも1つのソフトウェア実行特性が遵守すべき少なくとも1つの基準、
− ユニットで実施され、少なくとも1つのソフトウェア実行特性が少なくとも1つの関連する基準を遵守していないことを検出することが可能な検出手段、
− および、ユニットで実施され、少なくとも1つの基準が遵守されていない時、データ処理システムに通知し、および/または、ソフトウェアの実行を変更することが可能な強制手段、
を定義すること、
・ ユニットが検出手段および強制手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 監視され得るソフトウェア実行特性のうちから、監視すべき少なくとも1つのソフトウェア実行特性を選択することによって、
− 少なくとも1つの選択されたソフトウェア実行特性が遵守すべき少なくとも1つの基準を選択することによって、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択されたソフトウェア実行特性が監視されるべき基本関数を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された実行特性が第2実行パートによって監視され、基準が遵守されていないことが、データ処理システムへの通知、および/または、被保護ソフトウェアの実行の変更につながるような変更である)によって、
− および、検出手段および強制手段も実施する活用手段を含む被保護ソフトウェアの第2オブジェクトパートを生成すること(前記第2オブジェクトパートは、ユニットへのアップロード後、被保護ソフトウェアの実行中に、少なくとも1つの第1ソフトウェア実行特性が監視され、基準が遵守されていないことが、データ処理システムへの通知、および/または、被保護ソフトウェアの実行の変更につながるようなオブジェクトパートである)によって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、
− 被保護ソフトウェアのすべての変更された部分のすべての監視されている実行特性に対応するすべての基準が遵守されている限り、被保護ソフトウェアの前記部分が名目通り作動し、結果として被保護ソフトウェアが名目通り作動することを可能にすること、
− および、被保護ソフトウェアの一部分の監視されている実行特性に対応する少なくとも1つの基準が遵守されていない場合、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0009】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェアの機能の使用状況の計測変数、
− 遵守すべき基準として、各計測変数に関連する少なくとも1つのしきい値、
− および、少なくとも1つの計測変数を更新することが可能な有効化手段、
を定義すること、
・ ユニットが有効化手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の少なくとも1つの計測変数を選択することによって、
−> 計測変数を使用して使用が監視され得る被保護ソフトウェアの少なくとも1つの機能、
> 前記機能の使用状況を定量化するために使用される少なくとも1つの計測変数、
> 前記機能の使用限度に対応する選択された計測変数に関連する少なくとも1つのしきい値、
> および、前記機能の使用状況に依存する選択された計測変数の少なくとも1つの更新方法、
を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、計測変数が前記機能の使用状況に依存する第2実行パートによって実現され、少なくとも1つのしきい値超過が考慮されるような変更である)によって、
を変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、そして少なくとも1つの使用限度に対応する少なくとも1つのしきい値超過が検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0010】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 少なくとも1つの計測変数について、いくつかの関連するしきい値、
− および、前記しきい値のそれぞれに対応する相異なる強制手段、
を定義すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、機能の相異なる使用限度に対応するいくつかのしきい値が関連づけられなければならない少なくとも1つの選択された計測変数を選択することによって、
− 選択された計測変数に関連する少なくとも2つのしきい値を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、種々のしきい値の超過が第2実行パートによって別様に考慮されるような変更である)によって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、
− 第1しきい値の超過が検出された場合、被保護ソフトウェアに対して、対応する機能をそれ以上使用しないように命じること、
− 第2しきい値の超過が検出された場合、被保護ソフトウェアの対応する機能、および/または、少なくとも一部分を無効にすること、
を含む。
【0011】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1つの追加使用を認めることが可能な補充手段を定義すること、
・ ユニットが補充手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの追加使用を認めることができなければならない機能の使用を制限することが可能な少なくとも1つの選択された計測変数を選択することによって、
− および、少なくとも1つの選択された部分を変更すること(この変更は、補充フェーズと呼ばれるフェーズの間、選択された計測変数に対応する少なくとも1つの機能の少なくとも1つの追加使用が認められるような変更である)によって、
変更すること、
を含み、
→ 補充フェーズの間に、
・機能の少なくとも1つの追加使用を可能にするために、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連するしきい値を再有効化すること、
を含む。
【0012】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェア使用状況プロファイル、
− および、遵守すべき基準として、少なくとも1つのソフトウェア実行特徴、
を定義すること、
・ および、被保護ソフトウェアを、
− 少なくとも1つのソフトウェア使用状況プロファイルを監視することをソフトウェア実行特性として選択することによって、
− 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない少なくとも1つの実行特徴を選択することによって、
− および、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、第2実行パートがすべての選択された実行特徴を遵守しなければならないような変更である)によって、
変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、そして少なくとも1つの実行特徴が遵守されていないことが検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0013】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− ユニットで実行され得る命令のセット、
− 前記命令セットに対する命令コマンドのセットであり、データ処理システムで実行され、ユニットで命令の実行をトリガし得る前記命令コマンドのセット、
− 使用状況プロファイルとして、命令の連鎖、
− 実行特徴として、命令の実行に対して期待される連鎖、
− 検出手段として、命令の連鎖が期待されるものに対応しないことを検出することが可能な手段、
− および、強制手段として、命令の連鎖が期待されるものに対応しない場合にデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更することが可能な手段、
を定義すること、
・ ユニットが命令セットの命令を実行することも可能にする活用手段を構築すること(該命令の実行はデータ処理システムにおける命令コマンドの実行によりトリガされる)、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を、
> 基本関数を命令に変換することによって、
> 命令の少なくとも一部分がユニットにおけるそれらの実行中に遵守しなければならない連鎖を指定することによって、
> および、基本コマンドを、使用される命令に対応する命令コマンドに変換することによって、
変更することによって、
変更すること、
を含み、
→ 使用フェーズの間に、ユニットの存在時に、ユニットで実行される命令の連鎖が期待されるものに対応しないことが検出された場合に、それをデータ処理システムに通知し、および/または、被保護ソフトウェアの部分の機能を変更して、被保護ソフトウェアの機能が変更されるようにすること、
を含む。
【0014】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− 命令セットとして、少なくとも一部分の命令がレジスタと連携し、結果を返す目的で少なくとも1つのオペランドを使用する命令セット、
− レジスタと連携する少なくとも一部分の命令について、
> 命令の機能を定義するパート、 > および、命令の実行に対する期待される連鎖を定義するパート、
(前記パートは、
◇ 命令の識別フィールド、
◇ および、命令の各オペランドごとに、
* フラグフィールド、
* および、オペランドの期待される識別フィールド、
に対応するビットフィールドを含むパート)、
− 活用手段に属し命令セットによって使用される各レジスタごとに、該レジスタ内にその結果を返した最後の命令の識別が自動的に記憶される生成識別フィールド、
− 検出手段として、命令の実行中に、各オペランドごとに、フラグフィールドが要求する時に、該オペランドによって使用されるレジスタに対応する生成識別フィールドと、該オペランドの出所の期待される識別フィールドとの等値性をチェックすることが可能な手段、
− および、強制手段として、チェックされた等値性の少なくとも1つが偽である場合に、命令の結果を変更することが可能な手段、
を定義すること、
を含む。
【0015】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− トリガコマンドとして、基本コマンドまたは命令コマンド、
− 従属関数として、基本関数または命令、
− オーダーとして、データ処理システムによってユニットへ送信される情報に少なくとも部分的に対応し、対応する従属関数の実行をトリガするようなトリガコマンドに対する少なくとも1つの引数、
− リネームされたオーダーを有するトリガコマンドを取得するように、オーダーをリネームすることが可能なオーダーをリネームする方法、
− および、使用フェーズの間にユニットで使用されるように設計され、リネームされたオーダーから実行すべき従属関数を復元することが可能な復元手段、
を定義すること、
・ ユニットが復元手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中でトリガコマンドを選択することによって、
− 対応する従属関数の識別を隠蔽するように、選択されたトリガコマンドのオーダーをリネームすることによって被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更することによって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、リネームされたオーダーを有するトリガコマンドが実行されるようなもの、
> および、復元手段も実施する活用手段を含む被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、その実行が第1実行パートによりトリガされる従属関数の識別が第2実行パートによって復元され、従属関数が第2実行パートによって実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分に含まれるリネームされたオーダーを有するトリガコマンドが要求するたびに、対応する従属関数の識別をユニットで復元し、該部分が正しく実行されることにより、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットにおける従属関数の実行をトリガすることを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0016】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 少なくとも1つの従属関数について、アルゴリズム的に等価であるが、そのリネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群を定義すること、
・ および、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、リネームされたオーダーを有する少なくとも1つのトリガコマンドを選択することによって、
− および、リネームされたオーダーを有する1つの選択されたトリガコマンドの少なくともリネームされたオーダーを、同じ群の従属関数をトリガする別のリネームされたオーダーと置換することにより、被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更することによって、
変更すること、
を含む。
【0017】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、少なくとも1つの従属関数について、アルゴリズム的に等価な従属関数群を、
− ユニットで実行すべき従属関数の機能パートを定義する情報にノイズフィールドを連結することによって、
− または、命令の識別フィールドおよびオペランドの期待される識別フィールドを使用することによって、
定義すること、
を含む。
【0018】
変形実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・− オーダーをリネームする方法として、オーダーを暗号化する暗号化方法、
− および、復元手段として、リネームされたオーダーを復号化することによりユニットで実行すべき従属関数の識別を復元する復号化方法を実施する手段、
を定義すること、
を含む。
【0019】
もう1つの好ましい実施形態によれば、本発明によるプロセスは:
→ 保護フェーズの間に、
・ 被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択されたアルゴリズム処理で実行される少なくとも1つの条件分岐を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐の機能が、ユニットで、第2実行パートによって実行されるような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐の機能がユニットで実行されるようなもの、
> 被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された条件分岐の機能が実行されるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズの間に、
・ ユニットの存在時に、第1実行パートの一部分が要求するたびに、ユニットで少なくとも1つの条件分岐の機能を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェアが完全に機能するようにすること、
・ および、ユニットの不存在時に、ユニットで条件分岐の機能を実行することを求める第1実行パートの一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェアが完全に機能しないようにすること、
を含む。
【0020】
変形実施形態によれば、本発明によるプロセスは、保護フェーズの間に、被保護ソフトウェアを、
− 被保護ソフトウェアのソース中で、少なくとも1つの選択された条件分岐系列を選択することによって、
− 被保護ソフトウェアのソースの少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐系列の全機能が、ユニットで、第2実行パートによって実行されるような変更である)によって、
− および、
> 被保護ソフトウェアの第1オブジェクトパートであり、被保護ソフトウェアの実行中に、少なくとも1つの選択された条件分岐系列の機能がユニットで実行されるようなもの、
> 被保護ソフトウェアの第2オブジェクトパートであり、ユニットへのアップロード後、被保護ソフトウェアの実行中に、第2実行パートが現れ、それによって、少なくとも1つの選択された条件分岐系列の全機能が実行されるようなもの、
を生成することによって、
変更することを含む。
【0021】
このように、本発明によるプロセスは、実行されるソフトウェアの一部を含むという特性を示す処理/記憶ユニットを使用することによってソフトウェアの使用を保護することを可能にする。したがって、処理/記憶ユニットなしに作動を試みるソフトウェアのいかなる派生バージョンも、実行中に記憶ユニットに含まれるソフトウェアのその部分を再作成することを要求し、さもなければソフトウェアの該派生バージョンは完全に機能しない。
【0022】
本発明の主題の限定されない例、実施形態、および実装を示す、添付図面を参照した以下の説明において、その他の様々な特性が明らかとなる。
【0023】
以降の説明では、以下の定義を使用する。
【0024】
・ データ処理システム3とは、プログラムを実行できるシステムである。
【0025】
・ 処理/記憶ユニットとは、以下を実行できるユニットである。
− データ処理システム3によって提供されるデータを受け取る。
− データをデータ処理システム3に返す。
− ユニットの電源が切れていても、データを少なくとも部分的に秘密に格納し、このデータの少なくとも一部を保持する。
− データに対してアルゴリズム処理を実行し、その結果の一部またはすべてを秘密にする。
【0026】
・ ユニット6は、本発明によるプロセスを実施する処理/記憶ユニットである。
【0027】
・ ブランクユニット60とは、本発明に従うプロセスを実装しないが、データを受け取り、ユニット6に変換できるユニットである。
【0028】
・ 事前カスタマイズ済みユニット66とは、データの一部を受け取っているため、補足データを受け取った後にユニット6に変換できるブランクユニット60である。
【0029】
・ 情報をブランクユニット60または事前カスタマイズ済みユニット66へアップロードすることは、情報をブランクユニット60または事前カスタマイズ済みユニット66へ転送し、転送された情報を格納することに相当する。この転送には、情報形式の変更を含むことができる。
【0030】
・ データ処理システム3に含まれている変数、関数、またはデータを示す場合は大文字を使用し、ユニット6に含まれている変数、関数、またはデータを示す場合は小文字を使用する。
【0031】
・ 「被保護ソフトウェア」とは、本発明に従うプロセスによって実装された保護原則の少なくとも1つによって保護されているソフトウェアである。
【0032】
・ 「バルナラブル・ソフトウェア」とは、本発明に従うプロセスによって実装された保護原則のいずれによっても保護されていないソフトウェアである。
【0033】
・ バルナラブル・ソフトウェアと被保護ソフトウェアの違いが重要ではない場合は、「ソフトウェア」という言葉を使用する。
【0034】
・ ソフトウェアは、そのライフサイクルにおける検討時点(instant considered)に応じて以下の各種表現を持つ。
− ソース表現
− オブジェクト表現
− 配布
− または動的表現
【0035】
・ ソフトウェアのソース表現とは、変換後にオブジェクト表現となる表現である。ソース表現には、概念的な抽象レベルから、データ処理システムまたは処理/記憶ユニットによって直接実行可能なレベルに至るまで、様々なレベルがあり得る。
【0036】
・ ソフトウェアのオブジェクト表現は、配布への転送とデータ処理システムまたは処理/記憶ユニットへのアップロードの後で、実行できる表現のレベルに相当する。例えば、オブジェクト表現はバイナリコードや解釈されたコードなどであり得る。
【0037】
・ 配布とはオブジェクト表現を含む物理サポートまたは仮想サポートであり、ソフトウェアを使用するかどうかはユーザに任せなければならない。
【0038】
・ 動的表現は、ソフトウェアの配布からのソフトウェアの実行に相当する。
【0039】
・ ソフトウェアの部分とはソフトウェアの一部であり、例えば、1つ以上の連続した命令または連続していない命令、および/または、1つ以上の連続した機能ブロックまたは連続していない機能ブロック、および/または、1つ以上の関数、および/または、1つ以上のサブプログラム、および/または、1つ以上のモジュールであり得る。また、ソフトウェアの部分がソフトウェアすべてに相当することもある。
【0040】
図10および図11はそれぞれ、一般的な意味でのバルナラブル・ソフトウェア2vの様々な表現と、本発明に従うプロセスに従って保護された被保護ソフトウェア2pの様々な表現を示している。
【0041】
図10は、ライフサイクルにおいて現れるバルナラブル・ソフトウェア2vの様々な表現を示している。バルナラブル・ソフトウェア2vは、以下のいずれの表現でも現れることがある。
・ ソース表現2vs
・ オブジェクト表現2vo
・ 配布2vd。配布は、CDROMなどの物理配布媒体の形式またはネットワーク(GSMやインターネットなど)を介して配布されるファイルの形式をとることが多い。
・ または、一般に少なくとも1つのプロセッサ4を搭載する周知の種類のデータ処理システム3上でのバルナラブル・ソフトウェア2vの実行に相当する動的表現2ve。
【0042】
図11は、ライフサイクルにおいて現れる被保護ソフトウェア2pの様々な表現を示している。被保護ソフトウェア2pは、以下のいずれの表現でも現れることがある。
・ データ処理システム3向けの第1オブジェクトパート2posと、ユニット6向けの第2オブジェクトパート2posを含むソース表現。両ソースパートの一部は、共通ファイルに含まれることが多い。
・ データ処理システム3向けの第1オブジェクトパート2posと、ユニット6向けの第2オブジェクトパート2pouとを含むオブジェクト表示2po。
・ 以下を含む配布2pd
− 第1オブジェクトパート2posを含む第1配布パート2pds。この第1配布パート2pdsはデータ処理システム3向けであり、CDROMなどの物理配布媒体の形式またはネットワーク(GSMやインターネットなど)を介して配布されるファイルの形式をとることが多い。
− および以下の形式の第2配布パート2pdu
> または、第2オブジェクトパート2pouの一部がアップロードされ、ユニット6を取得するために補足データをアップロードすることでユーザがカスタマイズを完了しなければならない、少なくとも1つの事前カスタマイズ済みユニット66。この補足データは、ネットワークを介したダウンロードなどによって取得される。
> または、第2オブジェクトパート2pouがアップロードされた少なくとも1つのユニット6
・ または、被保護ソフトウェア2pの実行に相当する動的表現2pe。この動的表現2peには、データ処理システム3で実行される第1実行パート2pesとユニット6で実行される第2実行パート2peuが含まれる。
【0043】
被保護ソフトウェア2pの様々な表現間の違いが重要でない場合は、「被保護ソフトウェアの第1部分」および「被保護ソフトウェアの第2部分」という言葉を使用するものとする。
【0044】
図11の動的表現に従う本発明に従うプロセスの実装では、リンク5によってユニット6に接続されたデータ処理システム3を備える装置1pを使用する。データ処理システム3はどのような種類でもよいが、一般には少なくとも1つのプロセッサ4を搭載している。データ処理システム3は、コンピュータ、あるいは各種の機械、機器、固定または移動製品、または一般的な意味での車両などの一部であり得る。リンク5は、シリアルリンク、USBバス、無線リンク、光リンク、ネットワークリンク、データ処理システム3の回路への直接的電気接続など、どの方法でも実現できる。ユニット6は、データ処理システム3のプロセッサ4と同一の集積回路内に物理的に配置できることに注意すべきである。この場合、ユニット6はデータ処理システム3のプロセッサ4との関連からコプロセッサとみなすことができ、リンク5は集積回路内にある。
【0045】
図20〜22は、本発明に従う保護プロセスの実装を可能にする装置1pの様々な実施形態を具体的に、しかも限定しないで示している。
【0046】
図20に示した実施形態では、保護装置1pには、データ処理システム3としてのコンピュータと、ユニット6としてのチップカード7およびそのインタフェース8(一般にカードリーダーと呼ばれる)が含まれる。コンピュータ3は、リンク5によってユニット6に接続される。被保護ソフトウェア2pの実行中、被保護ソフトウェア2pが完全に機能するには、コンピュータ3で実行される第1実行パート2pesとチップカード7およびそのインタフェース8で実行される第2実行パート2peuの両方が機能しなければならない。
【0047】
図21に示した実施形態では、保護装置1pを装備する一般的な意味での製品9には、このような製品9が担う機能に適合する各種コンポーネント10が含まれる。保護装置1pには、一方で製品9に組み込まれたデータ処理システム3と、他方で製品9に関連するユニット6が含まれる。製品9が完全に機能するには、被保護ソフトウェア2pが完全に機能しなければならない。このため、被保護ソフトウェア2pの実行中には、データ処理システム3で実行される第1実行パート2pesとユニット6で実行される第2実行パート2peuの両方が機能しなければならない。したがって、被保護ソフトウェア2pによって、製品9またはその機能のいずれかの無許可の使用を間接的に防止することができる。製品9は、設備、システム、機械、玩具、屋内電気器具、電話などであり得る。
【0048】
図22に示した実施形態では、保護装置1pには、複数台のコンピュータと通信ネットワークの一部が含まれる。データ処理システム3は、第2コンピュータによって構成されるユニット6にネットワーク型リンク5によって接続された第1コンピュータである。本発明の実装では、被保護ソフトウェア2pに対するライセンスサーバとして第2コンピュータ6が使用される。被保護ソフトウェア2pの実行中、被保護ソフトウェア2pが完全に機能するには、第1コンピュータ3で実行される第1実行パート2pesと第2コンピュータ6で実行される第2実行パート2peuの両方が機能しなければならない。
【0049】
図30は、本発明に従う保護プロセスを明確に示している。バルナラブル・ソフトウェア2vがデータ処理システム3で完全に実行されていると想定されていることに注意すべきである。一方、被保護ソフトウェア2pの実装では、ユニット6の一部である転送手段13がリンク5によってデータ処理システム3に装備された転送手段12と接続されているため、被保護ソフトウェア2pの第1実行パート2pesと第2実行パート2peuとの間の通信を確立することができる。
【0050】
転送手段12、13がソフトウェア、および/または、ハードウェアの性質を持ち、データ処理システム3とユニット6との間のデータ通信を実現(および場合によっては最適化)できることに注意する必要がある。この転送手段12、13は、好ましくは使用されるリンク5の種類に依存しない被保護ソフトウェア2pを自由に使用できるように構成されている。この転送手段12、13は本発明の主題ではなく、当業者にとって周知であるため、これ以上詳しく説明しない。被保護ソフトウェア2pの第1部分には、コマンドが含まれる。被保護ソフトウェア2pの実行中、第1実行パート2pesによってこのコマンドを実行することで、第1実行パート2pesと第2実行パート2peuとの間の通信が可能になる。以降の説明では、このコマンドをIN、OUT、またはTRIGと表す。
【0051】
図31に示したように、被保護ソフトウェア2pの第2実行パート2peuの実装を可能にするために、ユニット6に保護手段14が装備されている。保護手段14には記憶手段15および処理手段16が含まれる。
【0052】
以降の説明を平易にするために、被保護ソフトウェア2pの実行中における、ユニット6の有無について検討することにする。実際に、被保護ソフトウェア2pの第2実行パート2peuの実行に適していない保護手段14を備えるユニット6も、被保護ソフトウェア2pが正しく実行されない場合は常に存在しないとみなされる。ユニットの有無について、以下のことが該当する。
・ 物理的に存在し、被保護ソフトウェア2pの第2実行パート2peuの実行に適している保護手段14を備えるユニット6は、常に存在するとみなされる。
・ 物理的には存在するが、被保護ソフトウェア2pの第2実行パート2peuの正しい実装に適していない(この実装を可能にしない)保護手段14を備えるユニット6は、被保護ソフトウェア2pが正しく機能する場合は存在するとみなされ、被保護ソフトウェア2pが正しく機能しない場合は存在しないとみなされる。
・ また、物理的に存在しないユニット6は、常に存在しないとみなされる。
【0053】
ユニット6がチップカード7とそのインタフェース8から構成されている場合、転送手段13は2つの部分に分割される。一方はインタフェース8上の部分であり、他方はチップカード7上の部分である。この実施形態では、チップカード7が存在しないことは、ユニット6が存在しないことと同じであるとみなされる。すなわち、チップカード7、および/または、そのインタフェース8が存在しない場合、保護手段14はアクセス不能であり、保護されたソフトウェア2pの第2実行パート2peuを実行できないため、被保護ソフトウェア2pは完全には機能しない。
【0054】
本発明に従う保護プロセスの目的は、《基本関数》と呼ばれる保護原理を実装することである。この実装について、図60〜64を参照しながら説明する。
【0055】
基本関数による保護原則の実装では、以下が定義される。
・ 基本関数セット。基本関数セットに含まれる基本関数は、ユニット6において第2実行パート2peuによって実行することが可能であり、場合によってはデータ処理システム3とユニット6との間でデータを転送することが可能である。
・ この基本関数セットに対する基本コマンドセット。この基本コマンドはデータ処理システム3で実行することが可能であり、それによってユニット6において対応する基本関数の実行がトリガされる。
【0056】
基本機能による保護原理の実装では、ブランクユニット60を基本関数を実行できるユニット6に変換できる活用手段も構成される。この基本関数の実行は、データ処理システム3における基本コマンドの実行によってトリガされる。
【0057】
基本関数による保護原則の実装では、少なくとも1つのオペランドを使用し少なくとも1つの結果を返す少なくとも1つのアルゴリズム処理も、バルナラブル・ソフトウェアのソース2vsにおいて選択される。また、少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの部分も少なくとも1つ選択される。
【0058】
次に、被保護ソフトウェアのソース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の実行を可能にする一連のシーケンスの中から選択される。
【0059】
データ処理システム3で実行される、被保護ソフトウェア2pの第1実行パート2pesが基本コマンドCEF(nの範囲は1〜N)を実行する。このコマンドは、以前に定義された基本関数feそれぞれの、第2実行パート2peuによる実行をユニット6においてトリガする。
【0060】
図60は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3におけるバルナラブル・ソフトウェア2vの実行中、所定の時刻に計算Z←(X,Y)が実行される。この計算は、オペランドXおよびYを使用する関数Fによって表されるアルゴリズム処理の結果を変数Zに代入することに相当する。
【0061】
図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)と表される。
【0062】
この例では、基本コマンド1〜Nが連続して実行される。ただし、以下の2つの改良を施すことができることに注意すべきである。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。このような場合、転送に使用される基本コマンドの一部を削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から適切な基本コマンドシーケンスを選択することである。この点で、基本関数の実行を一時的に分離するような基本コマンドシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用する基本コマンドを含む(または含まない)コード部分を基本コマンド間に挿入する。図62および図63は、このような実施形態の原則を示している。
【0063】
図62は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、バルナラブル・ソフトウェア2vの実行中、データ処理システム3で2つのアルゴリズム処理が実行され、ZおよびZ’が決定される。この処理は、Z←F(X,Y)およびZ’←F’(X’,Y’)と表される。
【0064】
図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’というシーケンスが実行される。
【0065】
被保護ソフトウェア2pの実行中、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesの部分に含まれる基本コマンドが要求するたびに、対応する基本関数がユニット6で実行されることに注意すべきである。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0066】
図64は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中、各時刻に基本コマンドを実行しても、ユニット6が存在しないため、対応する基本関数の実行をトリガすることができない。このため、変数Zに代入する値を正しく決定することができない。
【0067】
したがって、ユニット6が存在しない場合、ユニット6における基本関数の実行のトリガを求める、被保護ソフトウェア2pの第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0068】
本発明の別の好都合な特性に従う保護プロセスの目的は、《変数》と呼ばれる保護原理を実装することである。この実装について、図40〜43を参照しながら説明する。
【0069】
変数による保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つの変数が選択され、その変数がバルナラブル・ソフトウェア2vの実行中にその状態を部分的に定義する。「ソフトウェアの状態」という言葉は、ソフトウェアの完全な実行に必要な、所定の時点における一連の情報を意味する。したがって、選択された変数が存在しないと、ソフトウェアの完全な実行が損なわれる。また、少なくとも1つの選択された変数を含む、バルナラブル・ソフトウェアのソース2vsの部分も少なくとも1つ選択される。
【0070】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、被保護ソフトウェア2pの実行中、データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニット6に存在することを考慮するようになる。
【0071】
図40は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3におけるバルナラブル・ソフトウェア2vの実行中に、以下のようになる。
・ 時刻tにおいて、データXが変数Vに代入される(V←Xで表す)。
・ 時刻tにおいて、変数Vの値が変数Yに代入される(Y←Vで表す)。
・ 時刻tにおいて、変数Vの値が変数Zに代入される(Z←Vで表す)。
【0072】
図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に代入される。
【0073】
被保護ソフトウェア2pの実行中、少なくとも1つの変数がユニット6に存在することに注意すべきである。このため、被保護ソフトウェア2pの第1実行パート2pesの部分が要求した場合、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesで使用するために、ユニット6に存在するこの変数の値がデータ処理システム3へ転送される。これにより、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0074】
図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)と表される。
【0075】
被保護ソフトウェア2pの実行中、変数のコピーの少なくとも1つがユニット6に存在することに注意すべきである。このため、被保護ソフトウェア2pの第1実行パート2pesの部分が要求した場合、ユニット6が存在すれば、被保護ソフトウェア2pの第1実行パート2pesで使用するために、ユニット6に存在する変数のこのコピーの値がデータ処理システム3へ転送される。このため、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0076】
図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の値の転送をトリガすることができない。
【0077】
したがって、ユニット6が存在しない場合、ユニット6に存在する変数または変数のコピーの使用を求める、第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0078】
前述の例で示したデータ処理システム3とユニット6との間のデータ転送では、単純な代入のみ使用されるが、単純な代入を別の演算と組み合わせてOUT(v,2*X+3)やZ←(5*v+v)などの複雑な演算を得る方法を当業者が知ることができることに注意すべきである。
【0079】
本発明の別の好都合な特性に従う保護プロセスの目的は、《検出および強制》と呼ばれる保護原則を実装することである。この実装について、図70〜74を参照しながら説明する。
【0080】
検出および強制による保護原則の実装では、以下が定義される。
・ 少なくとも部分的にユニット6において監視することが可能な、少なくとも1つのソフトウェア実行特性
・ 少なくとも1つのソフトウェア実行特性について遵守すべき少なくとも1つの基準
・ 少なくとも1つのソフトウェア実行特性が少なくとも1つの関連基準を遵守していないことを検出できる、ユニット6に装備される検出手段17
・ 少なくとも1つの基準が遵守されていない場合に、データ処理システム3への通知、および/または、ソフトウェア実行の変更が可能な、ユニット6に装備される強制手段18
【0081】
検出および強制による保護原則の実装では、ブランクユニット60を、少なくとも検出手段17と強制手段18を備えるユニット6へ変換できる活用手段も構築される。
【0082】
図70は、検出および強制によるこの保護原則の実装に必要な手段を示している。ユニット6には検出手段17と、処理手段16に属する強制手段18が装備されている。基準が遵守されなかった場合、強制手段18はその旨を検出手段17から通知される。
【0083】
より正確には、検出手段17は転送手段13、および/または、記憶手段15、および/または、処理手段16から送られる情報を使用して、1つ以上のソフトウェア実行特性を監視する。各ソフトウェア実行特性について、遵守すべき基準が少なくとも1つ設定される。
【0084】
少なくとも1つのソフトウェア実行特性が少なくとも1つの基準を遵守していないことを検出した場合、検出手段17はその旨を強制手段18に通知する。この強制手段18は、ユニット6の状態を適切な方法で変更できるように構成されている。
【0085】
検出および強制による保護原則の実装では、以下も選択される。
・ 監視することが可能なソフトウェア実行特性の中から、監視するソフトウェア実行特性を少なくとも1つ選択する。
・ 少なくとも1つの選択されたソフトウェア実行特性について、遵守すべき基準を少なくとも1つ選択する。
・ バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つのソフトウェア実行特性が監視されるアルゴリズム処理を少なくとも1つ選択する。
・ バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1つの選択されたアルゴリズム処理を含む部分を少なくとも1つ選択する。
【0086】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、被保護ソフトウェア2pの実行中に、特に以下のようになる。
・ データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも部分的にユニット6において、少なくとも1つの選択されたソフトウェア実行特性を監視する必要があることを考慮する。
・ ユニット6で実行される第2実行パート2peuが、選択されたソフトウェア実行特性を少なくとも部分的に監視する。
【0087】
検出および強制によるこの保護原則によって保護された被保護ソフトウェア2pの実行中に、ユニット6が存在すれば、以下のようになる。
・ 被保護ソフトウェア2pの変更された部分すべての、監視される実行特性すべてに対応する基準がすべて遵守されている限り、被保護ソフトウェア2pの変更された部分は名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ 被保護ソフトウェア2pの部分の監視される実行特性に対応する少なくとも1つの基準が遵守されていない場合、データ処理システム3はその旨を通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0088】
当然ながら、ユニット6が存在しなければ、ユニット6の使用を求める、被保護ソフトウェア2pの第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0089】
検出および強制による保護原則の実装では、2つの種類のソフトウェア実行特性が優先的に使用される。
【0090】
第1の種類のソフトウェア実行特性はソフトウェア実行の計測変数に対応し、第2の種類のソフトウェア実行特性はソフトウェア使用状況プロファイルに対応する。これら2つの種類の特性は、個別に使用することも、組み合わせて使用することもできる。
【0091】
実行特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則の実装では、以下が定義される。
・ 記憶手段15において、少なくとも1つのソフトウェア機能の使用状況を定量化するために使用される少なくとも1つの計測変数を記憶できること
・ 検出手段17において、各計測変数に関連付けられた少なくとも1つのしきい値を監視できること
・ 計測変数が関連付けられた機能の使用状況に応じて各計測変数を更新できる有効化手段
【0092】
検出手段17と強制手段18に加えて、有効化手段を備える活用手段も構築される。
【0093】
また、バルナラブル・ソフトウェアのソース2vsにおいて、以下も選択される。
・ 計測変数を利用して使用状況を監視することが可能な、バルナラブル・ソフトウェア2vの少なくとも1つの機能
・ この機能の使用状況の定量化に使用される少なくとも1つの計測変数
・ この機能の使用限度に対応する計測変数に関連付けられた少なくとも1つのしきい値
・ この機能の使用状況に応じて計測変数を更新する少なくとも1つの方法
【0094】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に、第2実行パート2peuが以下を行うようになる。
・ この機能の使用状況に応じて計測変数を有効化する。
・ 少なくとも1つのしきい値超過を考慮する。
【0095】
すなわち、被保護ソフトウェア2pの実行中、この機能の使用状況に応じてこの計測変数が更新され、しきい値が超えられた場合、検出手段17がその旨を強制手段18に通知する。強制手段18は、データ処理システム3へ通知するか、および/または、処理手段16によって実行される処理を変更するかを適宜判断する。変更する場合、被保護ソフトウェア2pの部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0096】
特性として計測変数を使用する、検出および強制による保護原則の第1の好ましい変形実施形態の実装では、以下が定義される。
・ 少なくとも1つの計測変数について、複数の関連しきい値
・ このしきい値それぞれに対応する各種強制手段
【0097】
また、バルナラブル・ソフトウェアのソース2vsにおいて、以下も選択される。
・ ソフトウェアの少なくとも1つの機能の使用状況を定量化するために使用され、この機能の各種使用限度に対応する複数のしきい値を関連付ける必要がある、少なくとも1つの計測変数
・ 計測変数に関連付けられた少なくとも2つのしきい値
【0098】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に、第2実行パート2peuが以下を行うようになる。
・ この機能の使用状況に応じて計測変数を有効化する。
・ 様々なしきい値の超過を個別に考慮する。
【0099】
すなわち、一般に、被保護ソフトウェア2pの実行中、第1しきい値が超えられた場合、ユニット6がその旨をデータ処理システム3に通知し、データ処理システム3が被保護ソフトウェア2pにこの機能を使用しないように命じる。被保護ソフトウェア2pがこの機能の使用を続けた場合、第2しきい値が超えられる可能性がある。第2しきい値が超えられた場合、強制手段18は、選択された機能、および/または、被保護ソフトウェア2pを無効にすることができる。
【0100】
特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装では、計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1回の追加使用を認めることができる補充手段が定義される。
【0101】
また、検出手段17、強制手段18、および有効化手段に加えて補充手段を備える活用手段も構築される。
【0102】
さらに、バルナラブル・ソフトウェアのソース2vsにおいて、少なくとも1回の追加使用を認められなければならない、ソフトウェアの少なくとも1つの機能の使用を制限するために使用される計測変数が少なくとも1つ選択される。
【0103】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、補充と呼ばれるフェーズにおいて、選択された計測変数に対応する少なくとも1つの機能の少なくとも1回の追加使用を認めることができるようになる。
【0104】
対応する機能の少なくとも1回の追加使用を認めるために、補充のフェーズにおいて、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連しきい値が再び有効化される。すなわち、補充のフェーズにおいて、被保護ソフトウェア2pの少なくとも1つの機能の追加使用を認めることができる。
【0105】
特性としてソフトウェア使用状況プロファイルを使用する、検出および強制による保護原則の実装では、この使用状況プロファイルについて遵守すべき基準として、少なくとも1つのソフトウェア実行特徴が定義される。
【0106】
また、バルナラブル・ソフトウェアのソース2vsにおいて以下も選択される。
・ 監視される少なくとも1つの使用状況プロファイル
・ 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない、少なくとも1つの実行特徴
【0107】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に、第2実行パート2peuが選択された実行特徴すべてを遵守するようになる。すなわち、ユニット6自体が第2実行パート2peuの実行のされ方を監視して、少なくとも1つの実行特徴が遵守されていない場合は、データ処理システム3にその旨を通知すること、および/または、被保護ソフトウェア2pの機能を変更することができる。
【0108】
この原則によって保護された被保護ソフトウェア2pの実行中に、ユニット6が存在すれば、以下のようになる。
・ 被保護ソフトウェア2pの変更された部分すべての実行特徴がすべて遵守されている限り、被保護ソフトウェア2pの変更された部分が名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ 被保護ソフトウェア2pの部分の少なくとも1つの実行特徴が遵守されていない場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0109】
様々な実行特徴のモニタリングを検討することができる。例えば、マーカーを含む命令の有無や、命令の少なくとも1つの部分の実行連鎖のモニタリングが可能である。
【0110】
遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを使用する、検出および強制による保護原則の実装では、以下が定義される。
・ ユニット6で実行することが可能な命令を含む命令セット
・ この命令セットに対する命令コマンドセット。この命令コマンドは、データ処理システム3で実行することが可能である。この命令コマンドそれぞれをデータ処理システム3で実行すると、ユニット6において対応する命令の実行がトリガされる。
・ 命令連鎖が期待されたものではないことを検出できる検出手段17
・ 命令連鎖が期待されたものではない場合に、データ処理システム3にその旨を通知すること、および/または、ソフトウェア実行を変更することができる強制手段18
【0111】
また、ユニット6による命令セットの命令の実行も可能にする活用手段も構築される。この命令の実行は、データ処理システム3における命令コマンドの実行によってトリガされる。
【0112】
さらに、バルナラブル・ソフトウェアのソース2vsにおいて、ユニット6でリモート処理しなければならず、命令の少なくとも1つの部分の連鎖を監視する必要がある、少なくとも1つのアルゴリズム処理も選択される。
【0113】
次に、バルナラブル・ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsが変更される。この変更の結果、被保護ソフトウェア2pの実行中に以下の処理が行われるようになる。
・ 第2実行パート2peuが、選択されたアルゴリズム処理の少なくとも機能を実行する。
・ 選択されたアルゴリズム処理が複数の命令に分割される。
・ ユニット6での実行中に少なくとも一部の命令が遵守しなければならない連鎖が指定される。
・ 被保護ソフトウェア2pの第1実行パート2pesが、ユニット6での命令の実行をトリガする命令コマンドを実行する。
【0114】
この原則によって被保護ソフトウェア2pの実行中に、ユニット6が存在すれば、以下のようになる。
・ ユニット6で実行される被保護ソフトウェア2pの変更された部分すべての命令連鎖が期待されたものである限り、被保護ソフトウェア2pの変更された部分が名目通り機能するため、被保護ソフトウェア2pは名目通り機能する。
・ ユニット6で実行される被保護ソフトウェア2pの部分の命令連鎖が期待されたものではない場合、データ処理システム3にその旨が通知され、および/または、被保護ソフトウェア2pのその部分の機能が変更され、その結果、被保護ソフトウェア2pの機能が変更される。
【0115】
図71は、遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを利用する、検出および強制による保護原則の実装における、期待される連鎖が遵守される場合の例を示している。
【0116】
データ処理システム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である。
【0117】
ユニット6で実行されるこの命令連鎖が期待されたものであるため、被保護ソフトウェア2pは正常に、すなわち名目通り機能するようになる。
【0118】
図72は、遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを利用する、検出および強制による保護原則の実装における、期待される連鎖が遵守されない場合の例を示している。
【0119】
この例でも、命令実行の期待される連鎖は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と異なってもよいことは明らかである。
【0120】
したがって、ユニット6で実行される命令の実行連鎖が期待されたものでなければ、被保護ソフトウェア2pの機能の変更することができる。
【0121】
図73および図74は、遵守すべき実行特徴として、命令の少なくとも1つの部分の実行連鎖のモニタリングを利用する、検出および強制による保護原則の好ましい変形実施形態を示している。この好ましい変形では、レジスタとともに作用し、結果を返すことを目的として少なくとも1つのオペランドを使用する命令を少なくともいくつか含む命令セットが定義される。
【0122】
図73に示したように、レジスタとともに作用する少なくとも一部の命令について、命令の機能を定義する部分PFと、命令実行の期待される連鎖を定義する部分PEが定義される。部分PFは、当業者に周知の演算コードに相当する。期待される連鎖を定義する部分PEには、以下のビットフィールドが含まれる。
・ 命令識別フィールドCII
・ 命令の各オペランドkについて、以下のフィールド(kの範囲は1〜Kであり、Kは命令のオペランド数を示す)
− オペランドkの出所(origin)を確認することが適切であるかどうかを示すフラグフィールドCD
− オペランドkの内容を生成した命令の期待されるアイデンティティを示す、オペランドの期待される識別フィールドCIP
【0123】
図74に示したように、命令セットには、処理手段16に属するV個のレジスタが含まれる。各レジスタにはRという名前が付けられる(vの範囲は1〜V)。各レジスタRについて、以下の2つのフィールドが定義される。
・ 命令の実行結果を格納できる、当業者に周知の機能フィールドCF
・ 機能フィールドCFの内容を生成した命令のアイデンティティを記憶できる生成識別フィールドCIG。この生成識別フィールドCIGは、機能フィールドCFを生成した命令識別フィールドCIIの内容で自動的に更新される。この生成識別フィールドCIGは、命令によるアクセスも変更もできず、検出手段17でのみ使用される。
【0124】
命令の実行中、検出手段17は各オペランドkについて以下の処理を実行する。
・ フラグフィールドCDを読み取る。
・ フラグフィールドCDが要求した場合、オペランドkで使用されるレジスタに対応する、期待される識別フィールドCIPと生成識別フィールドCIGの両方を読み取る。
・ 2つのフィールドCIPとCIGが等しいかどうかチェックする。
・ 等しくない場合、検出手段17は、命令の実行連鎖が遵守されていないとみなす。
【0125】
命令連鎖が遵守されていないことを検出手段17から通知されると、強制手段18は命令結果を変更することができる。現在実行されている命令の機能パートPFまたは以降の命令の機能パートPFを変更することで、好ましい実施形態が実行される。
【0126】
本発明の別の好都合な特性に従う保護プロセスの目的は、《リネーム》と呼ばれる保護原則を実装することである。この実装について、図80〜85を参照しながら説明する。
【0127】
リネームによる保護原則の実装では、以下が定義される。
・ 従属関数セット。従属関数セットに含まれる従属関数は、ユニット6において第2実行パート2peuによって実行することが可能であり、場合によってはデータ処理システム3とユニット6との間でデータを転送することができる。この従属関数セットは、有限または無限のいずれでもよい。
・ この従属関数に対するトリガコマンドセット。このトリガコマンドはデータ処理システム3で実行され、ユニット6において対応する従属関数の実行をトリガすることが可能である。
・ 対応する従属関数の実行をトリガするために、第1実行パート2pesによって第2実行パート2peuへ転送される情報に少なくとも部分的に対応する、各トリガコマンドのオーダー。このオーダーは、トリガコマンドの少なくとも1つの引数の形式を有する。
・ バルナラブル・ソフトウェア2vの変更中に使用される、オーダーリネーム方法。この方法では、対応する従属関数のアイデンティティを隠蔽することができる、リネームされたオーダーを持つトリガコマンドを取得するためにオーダーをリネームできる。
・ 使用フェーズにおいてユニット6で使用され、実行する従属関数を復元するために、リネームされたオーダーから元のオーダーを復元することができる復元手段20。
【0128】
リネームによる保護原則の実装では、ブランクユニット60を、少なくとも検出手段17と強制手段18を備えるユニット6へ変換できる活用手段も構築される。
【0129】
リネームによる保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて、以下も選択される。
・ 少なくとも1つのオペランドを使用し、少なくとも1つの結果を返す、少なくとも1つのアルゴリズム処理
・ 少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの部分
【0130】
次に、被保護ソフトウェアのソース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の実行を可能にする一連のシーケンスの中から選択される。
【0131】
データ処理システム3で実行される被保護ソフトウェア2pの第1実行パート2pesが、リネームされたオーダーを持つトリガコマンドを実行する。このコマンドは、リネームされたオーダーをユニット6へ転送し、復元手段20によるそのオーダーの復元をユニット6においてトリガし、次に、第2実行パート2peuによる、以前に定義された各従属関数fdの実行をトリガする。
【0132】
すなわち、リネームによる保護原則は、リネームされたオーダーを持つトリガコマンドを取得するために、トリガコマンドのオーダーをリネームすることで実行される。リネームされたオーダーを持つトリガコマンドをデータ処理システム3で実行すると、ユニット6において従属関数の実行がトリガされる。この従属関数は、リネームされていないオーダーを持つトリガコマンドによってトリガされたであろう従属関数であるが、被保護ソフトウェア2pを調べても実行される従属関数のアイデンティティを特定できない。
【0133】
図80は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3でのバルナラブル・ソフトウェア2vの実行中、所定の時刻に計算Z←F(X,Y)が実行される。この計算は、オペランドXおよびYを使用する関数Fによって表されるアルゴリズム処理の結果を変数Zに代入することに相当する。
【0134】
図81および図82は、本発明の実装例を示している。
【0135】
図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)と表される。
【0136】
この例では、本発明を完全に実装するために、トリガコマンドOUTの第1引数とトリガコマンドTRIGおよびINの引数がオーダーとして選択される。このように選択されたオーダーは、オーダーリネーム方法によってリネームされる。この方法では、R(x)、R(y)、R(fd)...、R(fdN−1)、R(z)をそれぞれ取得するために、トリガコマンドCD〜CDN−1のオーダー(x、y、fd、fdN−1、z)がリネームされる。
【0137】
図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))と表される。
【0138】
この例では、リネームされたオーダーを持つトリガコマンド1〜Nが連続して実行される。ただし、以下の2つの改良を施すことができることに注意すべきである。
・ 第1の改良は、複数のアルゴリズム処理をユニット6でリモート処理し、1つのアルゴリズム処理の少なくとも結果を別のアルゴリズム処理で使用する場合にかかわる。このような場合、転送に使用されるリネームされたオーダーを持つトリガコマンドの一部を削除できる。
・ 第2の改良の目的は、被保護ソフトウェア2pの実行を可能にする一連のシーケンスの中から、リネームされたオーダーを持つトリガコマンドの適切なシーケンスを選択することである。この点で、従属関数の実行を一時的に分離するようなリネームされたオーダーを持つトリガコマンドのシーケンスを選択することが望ましい。分離するには、データ処理システム3で実行される、別のデータの決定に使用する、リネームされたオーダーを持つトリガコマンドを含む(または含まない)コード部分をトリガコマンド間に挿入する。。図83および図84は、このような実施形態の原則を示している。
【0139】
図83は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、バルナラブル・ソフトウェア2vの実行中、データ処理システム3で2つのアルゴリズム処理が実行され、ZおよびZ’が決定される。この処理は、Z←F(X,Y)およびZ’←F’(X’,Y’)と表される。
【0140】
図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’というシーケンスが実行される。
【0141】
次のことに注意すべきである。すなわち、被保護ソフトウェア2pの第1実行パート2pesの部分の実行中、データ処理システム3で実行される、リネームされたオーダーを持つトリガコマンドは、対応する従属関数のアイデンティティの復元をユニット6においてトリガし、次にこの従属関数の実行をトリガする。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0142】
図85は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中、リネームされたオーダーを持つトリガコマンドを各時刻に実行しても、ユニット6が存在しないため、オーダーの復元も対応する従属関数の実行もトリガすることができない。このため、変数Zに代入する値を正しく決定することができない。
【0143】
したがって、ユニット6が存在しない場合、オーダーの復元とユニット6における従属関数の実行のトリガを求める、被保護ソフトウェア2pの第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0144】
リネームによるこの保護原則では、被保護ソフトウェア2pにおいて、リネームされたオーダーを持つトリガコマンドを調べても、ユニット6で実行する必要がある従属関数のアイデンティティを特定することはできない。オーダーのリネームは、バルナラブル・ソフトウェア2vを被保護ソフトウェア2pに変更する際に実行されることに注意すべきである。
【0145】
リネームによる保護原則の変形では、少なくとも1つの従属関数について、アルゴリズムの面では同じであるが、リネームされたオーダー持つ異なるトリガコマンドによってトリガされる従属関数群が定義される。この変形では、従属関数を使用する少なくとも1つのアルゴリズム処理が従属関数に分割される。同じ従属関数が複数回出現するのではなく、これらの従属関数の少なくとも1つは、同じ群の従属関数に置き換えられる。これを実現するために、リネームされたオーダーを持つトリガコマンドが、同じ群の従属関数への従属関数の置き換えを考慮するように変更される。すなわち、同じ群の2つの従属関数が異なるオーダーを持ち、その結果、リネームされたオーダーを持つ異なるトリガコマンドを持つ。また、被保護ソフトウェア2pを調べても、呼び出される従属関数のアルゴリズムが同じであることを発見することはできない。
【0146】
リネームによる保護原則の第1の好ましい変形実施形態では、少なくとも1つの従属関数について、アルゴリズムが同じである従属関数群が定義される。この定義は、ユニット6で実行される従属関数の機能パートを定義する情報とノイズフィールドを連結することで行われる。
【0147】
リネームによる保護原則の第2の好ましい変形実施形態では、少なくとも1つの従属関数について、識別フィールドを使用することで、アルゴリズムが同じである従属関数群が定義される。
【0148】
リネームによる保護原則の好ましい変形実施形態では、オーダーリネーム方法として、オーダーを暗号化してリネームされたオーダーに変換できる暗号化方法が定義される。オーダーのリネームは保護フェーズPにおいて実行されることを忘れてはならない。この好ましい変形では、復元手段20は、リネームされたオーダーを復号化し、ユニット6で実行される従属関数のアイデンティティを復元することができる復号化方法を実装する手段である。この復元手段はユニット6に実装され、ソフトウェアまたはハードウェアの性質を持つことができる。この復元手段20は、従属関数の実行をユニット6においてトリガする目的で、リネームされたオーダーを持つトリガコマンドがデータ処理システム3で実行されるたびに、使用フェーズUにおいて必要とされる。
【0149】
本発明の別の好都合な特性に従う保護プロセスの目的は、《条件分岐》と呼ばれる保護原則を実装することである。この実装について、図90〜92を参照しながら説明する。
【0150】
条件分岐による保護原則の実装では、バルナラブル・ソフトウェアのソース2vsにおいて少なくとも1つの条件分岐BCが選択される。また、少なくとも1つの選択された条件分岐BCを含む、バルナラブル・ソフトウェアのソース2vsの部分が少なくとも1つ選択される。
【0151】
次に、被保護ソフトウェアのソース2psを取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分が変更される。この変更の結果、被保護ソフトウェア2pの実行中、特に以下のようになる。
・ データ処理システム3で実行される第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの選択された条件分岐BCの機能がユニット6で実行されることを考慮する。
・ ユニット6で実行される第2実行パート2peuが、少なくとも1つの選択された条件分岐BCの少なくとも機能を実行し、第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の扱いをデータ処理システム(3)に任せる。
【0152】
データ処理システム3で実行される被保護ソフトウェア2pの第1実行パート2pesが、条件分岐コマンドを実行する。このコマンドは、第2実行パート2peuによるリモート処理された条件分岐bcの実行をユニット6においてトリガする。この条件分岐の機能は、選択された条件分岐BCの機能と同じである。
【0153】
図90は、バルナラブル・ソフトウェア2vの実行例を示している。この例では、データ処理システム3におけるバルナラブル・ソフトウェア2vの実行中、特定の時刻にバルナラブル・ソフトウェア2vの実行を続行するスポット、すなわち3つのスポットB、B、またはBのいずれか1つを条件分岐BCがバルナラブル・ソフトウェア2vに指示する。すなわち、条件分岐BCは、B、B、またはBのいずれのスポットでソフトウェアの実行を続行するかを判断する。
【0154】
図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へ転送される。
【0155】
次のことに注意すべきである。すなわち、被保護ソフトウェア2pの第1実行パート2pesの部分の実行中、データ処理システム3で実行される条件分岐コマンドは、対応するリモート処理された条件分岐の実行をユニット6においてトリガする。このため、ユニット6が存在すれば、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
【0156】
図92は、ユニット6が存在しない場合の被保護ソフトウェア2pの実行試行例を示している。この例では、データ処理システム3における被保護ソフトウェア2pの第1実行パート2pesの実行中、以下のようになる。
・ 時刻tにおいて、条件分岐コマンドCBCを実行しても、ユニット6が存在しないため、リモート処理された条件分岐bcの実行をトリガすることができない。
・ 時刻tにおいて、ユニット6が存在しないため、第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の転送が失敗する。
【0157】
このため、ユニット6が存在しない場合、ユニット6におけるリモート処理された条件分岐の実行のトリガを求める、第1実行パート2pesの部分による少なくとも1つの要求を正しく遂行することができないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
【0158】
図90〜92を参照したこれまでの説明では、本発明の主題の目的は、条件分岐をユニット6においてリモート処理することである。当然ながら、リモート処理された条件分岐のすべての機能に相当する全体的機能を持つ条件分岐系列をユニット6でリモート処理すれば、本発明の好ましい実施形態を実行することができる。このリモート処理された条件分岐系列の全体的機能を実行すれば、被保護ソフトウェア2pの第1実行パート2pesが選択されたスポットで実行を続行できるようにする情報の扱いをデータ処理システム3に任せることができる。
【0159】
図40〜92を参照したこれまでの説明では、5つの異なるソフトウェア保護原則を互いに無関係なものとして示してきた。本発明に従う保護プロセスは、基本関数による保護原則を使用して、また場合によってはこの原則を1つ以上の別の保護原則と組み合わせることで実装される。基本関数による保護原則を、別の少なくとも1つの保護原則を実装することで補完する場合、基本関数による保護原則を変数による保護原則、および/または、検出および強制による保護原則、および/または、リネームによる保護原則、および/または、条件分岐による保護原則によって補完すれば好都合である。
【0160】
また、検出および強制による保護原則を実装する場合も、この保護原則をリネームによる保護原則、および/または、条件分岐による保護原則によって補完することができる。
【0161】
また、リネームによる保護原則を実装する場合も、この保護原則を条件分岐による保護原則によって補完することができる。
【0162】
好ましい変形実施形態では、基本関数による保護原則は変数による保護原則によって補完され、変数による保護原則は検出および強制による保護原則によって補完され、検出および強制による保護原則はリネームによる保護原則によって補完され、リネームによる保護原則は条件分岐による保護原則によって補完される。
【0163】
基本関数による保護原則を補完するために別の保護原則を適用する場合、保護原則を組み合わせた実装を考慮して、これまでの説明に以下の変更点を加える必要がある。
・ バルナラブル・ソフトウェアという言葉を、これまで説明した保護原則との関連において脆弱であるソフトウェアという意味で理解する必要がある。したがって、保護原則がバルナラブル・ソフトウェアに既に適用されている場合、「バルナラブル・ソフトウェア」という表現を、「既に適用された保護原則によって保護されているソフトウェア」という意味で理解しなければならない。
・ 被保護ソフトウェアという言葉を、これまで説明した保護原則との関連において保護されているソフトウェアという意味で理解する必要がある。したがって、保護原則が既に適用されている場合、「被保護ソフトウェア」という表現を、「被保護ソフトウェアの新しいバージョン」という意味で理解しなければならない。
・ また、これまで説明した保護原則の実装を選択する場合、既に適用されている保護原則の実装の選択を考慮する必要がある。
【0164】
以下の説明において、本発明に従う保護プロセスの実装がさらに明確に理解される。本発明に従うこの保護プロセスは、より正確には図100に示したように以下から構成される。
・ まず、バルナラブル・ソフトウェア2vが被保護ソフトウェア2pになるように変更される、保護フェーズP
・ 次に、被保護ソフトウェア2pが使用される、使用フェーズU。この使用フェーズUでは、以下のようになる。
− ユニット6が存在する場合、データ処理システム3において第1実行パート2pesの部分が要求するたびに、要求された機能がユニット6で実行されるため、この部分が正しく実行され、その結果、被保護ソフトウェア2pは完全に機能する。
− ユニット6が存在しない場合、ユニット6における機能の実行を求める、第1実行パート2pesの部分による要求があっても、この要求を正しく遂行できないため、少なくともこの部分が正しく実行されず、その結果、被保護ソフトウェア2pは完全には機能しない。
・ また場合によっては補充フェーズR。この補充フェーズRにおいては、特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装によって保護された機能の少なくとも1回の追加使用が認められる。
【0165】
保護フェーズPは、2つの保護サブフェーズPおよびPに分割することができる。第1の保護サブフェーズは先行保護サブフェーズPと呼ばれ、保護すべきバルナラブル・ソフトウェア2vに依存しない。第2の保護サブフェーズは後続保護サブフェーズPと呼ばれ、保護すべきバルナラブル・ソフトウェア2vに依存する。先行保護サブフェーズPと後続保護サブフェーズPは、2人の異なる人物または2つの異なるチームによって好都合に実行できることに注意すべきである。例えば、ソフトウェア保護システムを開発する1人の人物または1つの会社が先行保護サブフェーズPを実行し、保護を必要とするソフトウェアを開発する1人の人物または1つの会社が後続保護サブフェーズPを実行することができる。当然ながら、先行保護サブフェーズPと後続保護サブフェーズPを同じ人物またはチームが実行することもできる。
【0166】
先行保護サブフェーズPは、複数の段階S11,...,S1iから構成される。この各段階について、様々なタスクとジョブが実行される。
【0167】
この先行保護サブフェーズ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
【0168】
先行保護サブフェーズPにおいて、定義段階S11の後に「構築段階S12」と呼ばれる段階が続く。この構築段階S12において、転送手段12、13が構築され、また場合によっては定義段階S11の定義に対応する活用手段も構築される。
【0169】
したがって、この構築段階S12において以下が実行される。
・ 使用フェーズUにおいてデータ処理システム3とユニット6との間でデータを転送することができる転送手段12、13が構築される。
・ 使用フェーズUにおけるユニット6による基本関数セットの基本関数の実行も可能にする活用手段が構築される。
・ また、検出および強制による保護原則も実装する場合、以下が構築される。
− 使用フェーズUにおいてユニット6による検出手段17と強制手段18の実装も可能にする活用手段
− 使用フェーズUにおいてユニット6による有効化手段の実装も可能にする活用手段(場合による)
− 使用フェーズUにおいてユニット6による補充手段の実装も可能にする活用手段(場合による)
− 使用フェーズUにおいてユニット6による命令セットの命令の実行も可能にする活用手段(場合による)
・ また、リネームによる保護原則も実装する場合、使用フェーズUにおいてユニット6による復元手段の実装も可能にする活用手段が構築される。
【0170】
活用手段の構築は通常、プログラム開発ユニットによって行われ、定義段階S11で挿入された(intervened)定義が考慮される。このようなユニットについて、図110を参照しながら説明する。
【0171】
先行保護サブフェーズPにおいて、構築段階S12の後に「事前カスタマイズ段階S13」と呼ばれる段階が続くことがある。この事前カスタマイズ段階S13において、少なくとも1つの事前カスタマイズ済みユニット66を取得するために、転送手段13、および/または、活用手段の少なくとも一部が少なくとも1つのブランクユニット60にアップロードされる。活用手段の一部が事前カスタマイズ済みユニット66に一度転送されると、この事前カスタマイズ済みユニット66の外部からその部分に直接アクセスできなくなることに注意すべきである。ブランクユニット60への活用手段の転送は、適合する事前カスタマイズユニットによって行うことができる。事前カスタマイズユニットについて、図120を参照しながら説明する。事前カスタマイズ済みユニット66がチップカード7とそのリーダー8から構成されている場合、事前カスタマイズはチップカード7だけにかかわる。
【0172】
先行保護サブフェーズPにおいて、定義段階S11の後、および場合によっては構築段階S12の後に、「ツール作成段階S14」と呼ばれる段階が続くことがある。このツール作成段階S14において、被保護ソフトウェアの生成を支援することやソフトウェア保護を自動化することを可能にするツールが作成される。このようなツールによって、以下が可能になる。
・ 保護すべきバルナラブル・ソフトウェア2vにおいて、以下の選択を補助するか、以下の選択を自動的に行う。
− ユニット6でリモート処理可能なステップに分割することが可能なアルゴリズム処理
− 変更することが可能な部分
− ユニット6でリモート処理可能な変数(変数による保護原則も実装される場合)
− 監視すべき実行特性、および場合によっては、ユニット6でリモート処理可能な命令に分割することが可能なアルゴリズム処理(検出および強制による保護原則も実装される場合)
− ユニット6でリモート処理可能な従属関数に分割することが可能であり、トリガコマンドのオーダーをリネームできるようなアルゴリズム処理(リネームによる保護原則も実装される場合)
− ユニット6でリモート処理することが可能な機能を持つ条件分岐(条件分岐による保護原則も実装される場合)
・ また場合によっては、被保護ソフトウェアの生成を支援し、またはソフトウェア保護を自動化する。
【0173】
このような各種ツールは、個別に実行することも組み合わせて実行することもできる。各ツールは、プリプロセッサ、アセンブラ、コンパイラなど様々な形態をとることができる。
【0174】
先行保護サブフェーズPの後に、保護すべきバルナラブル・ソフトウェア2vに依存する後続保護サブフェーズPが続く。この後続保護サブフェーズPも複数の段階から構成される。変数による保護原則の実装に対応する第1段階は、「作成段階S21」と呼ばれる。この作成段階S21では、定義段階S11で行われた選択が使用される。この選択と、ツール作成段階S14で構築されたツール(場合による)を利用して以下の処理を実行することで、被保護ソフトウェア2pが作成される。
・ バルナラブル・ソフトウェア2vの実行の間に、少なくとも1つのオペランドを使用し、少なくとも1つの結果を取得することが可能な少なくとも1つのアルゴリズム処理を選択する。
・ 少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの部分を選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの変更された部分を取得するために、バルナラブル・ソフトウェアのソース2vsの少なくとも1つの選択された部分を変更することで、バルナラブル・ソフトウェアのソース2vsから被保護ソフトウェアのソース2psを作成する。この変更は以下の処理である。
>被保護ソフトウェア2pの実行中に、第1の実行パート2pesがデータ処理システム3で実行され、第2の実行パート2peuが情報のアップロードの後にブランクユニット60から取得されるユニット6で実行される。
>少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パート2peuによって実行される。
>少なくとも1つの選択されたアルゴリズム処理が分割され、これにより保護されたソフトウェア2pの実行の間に前記アルゴリズム処理が基本関数を用いて第2実行パートによって実行される。
>少なくとも1つの選択されたアルゴリズム処理に対して、基本コマンドが被保護ソフトウェアのソース2psに統合され、これにより被保護ソフトウェア2p実行の間に、各々の基本コマンドが第1の実行パート2pesにより実行され、ユニット6において基本関数の第2実行パート2peuによる実行をトリガする。
>基本コマンドのシーケンスが被保護ソフトウェア2pの実行を可能にするシーケンスのセットのうちから選択される。
> 保護されたソフトウェアのソース2psからの被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posは、被保護ソフトウェア2pの実行の間中に第1実行パート2peuが現れるようなオブジェクトパートであり、第1実行パート2peuはデータ処理システム3で実行され、その少なくとも1つの部分は選択されたシーケンスに従って基本コマンドが実行されることを考慮するようになる。
> 活用手段を含む保護ソフトウェア2pの第2オブジェクトパート2pouであり、ブランクユニット(60)へのアップロードの後、保護ソフトウェア(2p)の実行中に、第1実行パート(2pes)によってトリガされた基本関数が実行されることによって、第2実行パート(2peu)が現れるようなものである。
【0175】
当然ながら、バルナラブル・ソフトウェア2vを前もって実現しなくても、本発明に従う変数による保護原則を新しいソフトウェアの開発中に直接適用することができる。このような方法で、被保護ソフトウェア2pが直接得られる。
【0176】
後続保護サブフェーズPにおいて、基本関数による保護原則に加えて少なくとも1つの別の保護原則が適用される場合、「変更段階S22」が実行される。この変更段階S22では、定義段階S11で挿入された(intervened)定義が使用される。これまで定義してきた構成(arrangements)の1つに従う保護原則の実装を可能にするように、この定義とツール作成段階S14で構築されたツール(場合による)を利用して、被保護ソフトウェア2pが変更される。
【0177】
変数による保護原則を実装する場合、以下の処理によって、被保護ソフトウェア2pが変更される。
・ 被保護ソフトウェア2pの実行中に、被保護ソフトウェアの状態を部分的に規定する、少なくとも1つの選択されたアルゴリズム処理で使用される少なくとも1つの変数を選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更は、被保護ソフトウェア2pの実行中に、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニット6に存在するような変更である。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2posであり、被保護ソフトウェア(2p)の実行中に、第1実行パート2pesの少なくとも1つの部分が、少なくとも1つの変数または変数の少なくとも1つのコピーがユニット6に存在することも考慮するようなもの
− 被保護ソフトウェア2pの第2オブジェクトパート2pouであり、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、第2実行パート2peuが現れ、それによって、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニット6にも存在するようになるようなもの。
【0178】
検出および強制による保護原則が実装されている場合、被保護ソフトウェア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の実行が変更される。
【0179】
特性としてソフトウェア実行の計測変数を使用する、検出および強制による保護原則の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 監視すべきソフトウェア実行特性として、ソフトウェアの少なくとも1つの機能の使用状況の計測変数を少なくとも1つ選択する。
・ 以下を選択する。
− 計測変数を利用して使用状況を監視することが可能な、被保護ソフトウェア2pの少なくとも1つの機能
− この機能の使用状況の定量化に使用される少なくとも1つの計測変数
− この機能の使用限度に対応する選択された計測変数に関連付けられた少なくとも1つのしきい値
− この機能の使用状況に応じて、選択された計測変数を更新する少なくとも1つの方法
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、この機能の使用状況に応じて計測変数が第2実行パート2peuによって有効化され、少なくとも1つのしきい値超過が考慮されるようになる。
【0180】
特性として計測変数を使用する、検出および強制による保護原則の第1の好ましい変形実施形態の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、機能の各種使用限度に対応する複数のしきい値を関連付ける必要がある、計測変数を少なくとも1つ選択する。
・ 選択された計測変数に関連付けられたしきい値を少なくとも2つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、第2実行パート2peuが様々なしきい値の超過を個別に考慮するようになる。
【0181】
特性として計測変数を使用する、検出および強制による保護原則の第2の好ましい変形実施形態の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、機能の使用を制限でき、少なくとも1回の追加使用を認めることができなければならない、選択された計測変数を少なくとも1つ選択する。
・ 少なくとも1つの選択された部分を変更する。この変更の結果、補充と呼ばれるフェーズにおいて、選択された計測変数に対応する少なくとも1つの機能の少なくとも1回の追加使用を認めることができるようになる。
【0182】
特性としてソフトウェア使用状況プロファイルを使用する、検出および強制による保護原則の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 監視すべきソフトウェア実行特性として、ソフトウェア使用状況プロファイルを少なくとも1つ選択する。
・ 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない実行特徴を少なくとも1つ選択する。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。この変更の結果、被保護ソフトウェア2pの実行中、第2実行パート2peuが選択された実行特徴をすべて遵守するようになる。
【0183】
遵守すべき実行特徴として実行連鎖のモニタリングを使用する、検出および強制による保護原則の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を以下の処理によって変更する。
− 基本関数を命令に変換する。
− ユニット6での実行中に命令の少なくとも一部が遵守しなければならない連鎖を指定する。
− 基本コマンドを、使用される命令に対応する命令コマンドに変換する。
【0184】
リネームによる保護原則を実装する場合、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、トリガコマンドを選択する。
・ 対応する従属関数のアイデンティティを隠蔽するために、選択されたトリガコマンドのオーダーをリネームすることで、被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。
・ 以下を作成する。
− 被保護ソフトウェア2pの第1オブジェクトパート2pos。この第1オブジェクトパート2posが作成された結果、被保護ソフトウェア2pの実行中、リネームされたオーダーを持つトリガコマンドが実行されるようになる。
− 復元手段20も実装する活用手段を備える被保護ソフトウェア2pの第2オブジェクトパート2pou。この第2オブジェクトパート2pouが作成された結果、ユニット6へのアップロード後、被保護ソフトウェア2pの実行中に、第1実行パート2pesによって実行がトリガされる従属関数のアイデンティティが第2実行パート2peuによって復元され、従属関数が第2実行パート2peuによって実行されるようになる。
【0185】
リネームによる保護原則の変形の実装では、被保護ソフトウェア2pが以下の処理によって変更される。
・ 被保護ソフトウェアのソース2psにおいて、リネームされたオーダーを持つトリガコマンドを少なくとも1つ選択する。
・ リネームされたオーダーを持つ選択された1つのトリガコマンドの、リネームされたオーダーを少なくとも、リネームされた別のオーダーに置き換え、同じ群の従属関数をトリガすることで、被保護ソフトウェアのソース2psの少なくとも1つの選択された部分を変更する。
【0186】
条件分岐による保護原則を実装する場合、被保護ソフトウェア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が現れるようになる。
【0187】
条件分岐による保護原則の好ましい実施形態の実装では、被保護ソフトウェア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が現れるようになる。
【0188】
当然ながら、中間的な保護されたソフトウェアを前もって実行しなくても、本発明に従う保護原則を新しいソフトウェアの開発中に直接適用することができる。このような方法で、作成段階S21と変更段階S22を同時に実行して、被保護ソフトウェア2pを直接得ることができる。
【0189】
後続保護サブフェーズPにおいて、被保護ソフトウェア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だけにかかわる。
【0190】
保護フェーズPの実装における様々な技術手段について、図110、120、130、140、および150を参照しながらより詳しく説明する。
【0191】
図110は、構築段階S12を実装できるシステム25の実施形態を示している。この構築段階S12では、定義段階S11で挿入された(intervened)定義が考慮され、転送手段12、13、および場合によってはユニット6用の活用手段が構築される。このようなシステム25には、システムユニット、画面、周辺機器(キーボードやマウスなど)から構成され、ファイルエディタ、アセンブラ、プリプロセッサ、コンパイラ、インタプリタ、デバッガ、リンクエディタなどのプログラムを含むコンピュータの形態を一般にとる、プログラム開発ユニットまたはワークステーションが含まれる。
【0192】
図120は、事前カスタマイズユニット30の実施形態を示している。事前カスタマイズユニット30は、事前カスタマイズ済みユニット66を取得するために、転送手段13、および/または、活用手段を少なくとも部分的に、少なくとも1つのブランクユニット60へアップロードすることができる。この事前カスタマイズユニット30には、転送手段13、および/または、活用手段がアップロードされた事前カスタマイズ済みユニット66を取得するために、ブランクユニット60を電気的に予めカスタマイズできる読み取り/書き込み手段31が含まれている。また、例えばプリンタの形態をとることができる、ブランクユニット60の物理カスタマイズ手段32を事前カスタマイズユニット30に含めることもできる。ユニット6がチップカード7とそのリーダー8から構成されている場合、事前カスタマイズは一般に、チップカード7だけにかかわる。
【0193】
図130は、被保護ソフトウェアの生成を支援することやソフトウェア保護を自動化することを可能にするツールの作成を実行できるシステム35の実施形態を示している。このようなシステム35には、システムユニット、画面、周辺機器(キーボードやマウスなど)から構成され、ファイルエディタ、アセンブラ、プリプロセッサ、コンパイラ、インタプリタ、デバッガ、リンクエディタなどのプログラムを含むコンピュータの形態を一般にとる、プログラム開発ユニットまたはワークステーションが含まれる。
【0194】
図140は、被保護ソフトウェア2pを直接作成することや、被保護ソフトウェア2pの取得を目的としてバルナラブル・ソフトウェア2vを変更することを可能にするシステム40の実施形態を示している。このようなシステム40には、システムユニット、画面、周辺機器(キーボードやマウスなど)から構成され、ファイルエディタ、アセンブラ、プリプロセッサ、コンパイラ、インタプリタ、デバッガ、リンクエディタなどのプログラムと、被保護ソフトウェアの生成を支援することやソフトウェア保護を自動化することを可能にするツールを含むコンピュータの形態を一般にとる、プログラム開発ユニットまたはワークステーションが含まれる。
【0195】
図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だけにかかわる。
【0196】
本発明に従う保護プロセスに以下の改良を施すことができる。
・ 被保護ソフトウェア2pの第2オブジェクトパート2pouが配分された複数の処理/記憶ユニットを一緒に使用するように改良できる。これにより、一緒に使用した場合は、被保護ソフトウェア2pの実行を可能にし、この処理/記憶ユニットの少なくとも1つが存在しない場合は、被保護ソフトウェア2pの使用を防止することができる。
・ 同様に、事前カスタマイズ段階S13の後、カスタマイズ段階S23において、事前カスタマイズ済みユニット66をユニット6に変換するために必要な第2オブジェクトパート2pouの一部を、カスタマイズユニット45で使用される処理/記憶ユニットに含めることで、この第2オブジェクトパート2pouの一部へのアクセスを制限することができる。当然ながら、この第2オブジェクトパート2pouの一部を複数の処理/記憶ユニットに配分することができる。これにより、この第2オブジェクトパート2pouの一部へのアクセスを、この処理/記憶ユニットを一緒に使用している場合のみ許可することができる。
【図面の簡単な説明】
【0197】
【図10】本発明に従うプロセスによってそれぞれ保護されない、および保護されるソフトウェアの様々な表現を示す機能ブロック図である。
【図11】本発明に従うプロセスによってそれぞれ保護されない、および保護されるソフトウェアの様々な表現を示す機能ブロック図である。
【図20】本発明に従うプロセスを実装する装置の様々な実施形態を例として示している。
【図21】本発明に従うプロセスを実装する装置の様々な実施形態を例として示している。
【図22】本発明に従うプロセスを実装する装置の様々な実施形態を例として示している。
【図30】本発明に従うプロセスの一般原則を明確に示す機能ブロック図である。
【図31】本発明に従うプロセスの一般原則を明確に示す機能ブロック図である。
【図40】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図41】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図42】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図43】変数による保護原則を実装する本発明に従う保護プロセスを示す図である。
【図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】本発明に従う保護プロセスで使用されるカスタマイズユニットの実施形態を示している。
[0001]
The present invention relates generally to the technical field of data processing systems and in particular to means for protecting software running on said data processing system against unauthorized use.
[0002]
The subject of the invention is especially aimed at providing a means of using a processing / storage unit to protect software against unauthorized use. Such a unit is generally realized by a chip card or a physical key on a USB port.
[0003]
In the above technical field, a major problem relates to unauthorized use of software by a user who has not paid for a license. Illegal use of this software causes obvious losses to software editors, software vendors, and / or anyone who integrates such software into a product. In order to prevent such illegal copying, the latest technology proposes various solutions for protecting software.
[0004]
For example, protection solutions are known that utilize hardware protection systems, such as physical components called protection keys or "dongles". Such a protection key must ensure that the software is executed only in the presence of the key. However, this solution is not effective because it causes a disadvantage that it is easy to avoid. A Service-to-Self or hacker can remove the control instructions for the protection key with the help of special tools such as disassemblers. In that case, an illegal copy corresponding to the modified version of the software can be executed without protection. Furthermore, this solution cannot be generalized to all software because it is difficult to connect more than two protection keys to the same system.
[0005]
The subject of the present invention is to precisely protect the software against unauthorized use by using a processing / storage unit so that the presence of such a unit is necessary for the software to be fully functional The aim is to find a solution to the above problem by proposing a process to do it.
[0006]
In order to achieve such a goal, the subject of the present invention is to use at least one blank unit comprising at least processing means and storage means to convert valuable software generated from a source and running on a data processing system into at least one blank unit. Related to protecting against unauthorized use. The process according to the invention comprises:
→ During the protection phase,
A set of basic functions whose basic functions can be performed in the unit,
-And a set of elementary commands for said set of elementary functions, said set of elementary commands being executed in a data processing system and triggering execution in a unit;
To define
Building utilization means that can be converted into units capable of executing said set of basic functions (the execution of said basic functions is triggered by execution in a data processing system);
・ Protected software
By using at least one operand and selecting at least one algorithmic operation capable of obtaining at least one result during execution of the valuable software;
By selecting at least one portion of the source of the valuable software, including at least one selected algorithmic process;
-Changing the at least one selected portion of the source of the protected software from the source of the protected software to obtain at least one modified portion of the source of the protected software; To create (this change
> During execution of the protected software, a first execution part is executed in the data processing system and a second execution part is executed in a unit obtained from the blank unit after uploading information;
> At least a function of at least one selected algorithmic processing is performed by a second execution part;
At least one selected algorithmic process is split, whereby said algorithmic process is executed by a second execution part using a basic function during execution of the protected software;
> For at least one selected algorithmic operation, the basic commands are integrated into the source of the protected software, whereby during the protected software execution each basic command is executed by the first execution part, Triggers the execution of the basic function by the second execution part at
A sequence of elementary commands is selected from a set of sequences enabling execution of the protected software,
Is such a change)
− And
A first object part of the protected software from the source of the protected software (the first object part being an object part such that a first execution part appears during execution of the protected software, Parts are executed in the data processing system, at least one part of which takes into account that the basic commands are executed according to the selected sequence),
And a second object part of the protection software including the utilization means, wherein the basic function triggered by the first execution part is executed during execution of the protection software after uploading to the blank unit, Like two execution parts,
By generating
To create,
Uploading the second object part to a blank unit for the purpose of obtaining the unit, and
→ During the exploitation phase where the protection software is executed,
In the presence of the unit, each time a basic command contained in a part of the first execution part requests, by executing the corresponding basic function in the unit, the part is executed correctly, and as a result, the protected software is completely To work,
And, in the absence of the unit, despite the request by the part of the first execution part to trigger the execution of the basic function in the unit, at least the part cannot be fulfilled due to the inability to fulfill the request And, as a result, make sure that the protected software is not fully functional,
including.
[0007]
According to a preferred embodiment, the process according to the invention comprises:
→ During the protection phase,
・ Protected software
-During execution of the protected software, by selecting at least one variable used in at least one selected algorithmic process that partially defines the state of the protected software;
Altering at least one selected portion of the source of the protected software (this change may occur during execution of the protected software if at least one selected variable or at least one copy of the selected variable is a unit) Changes that exist in
− And
A first object part of the protected software, wherein during execution of the protected software, at least one part of the first execution part also takes into account that at least one variable or at least one copy of the variable is present in the unit; Something like
> And a second object part of the protected software, after uploading to the unit, during execution of the protected software, a second execution part appears, whereby at least one selected variable or selected variable Such that at least one copy of is also present in the unit,
By generating
Change,
Including
→ During the use phase,
• In the presence of the unit, each time a portion of the first execution part requests, by using the variable or a copy of the variable that exists in the unit, that portion is executed correctly, resulting in complete protection of the protected software. Make it work,
And at least the failure to correctly satisfy the request in the absence of the unit, despite the request by the part of the first execution part to use a variable or a copy of the variable present in the unit. To ensure that parts do not run properly, and as a result, the protected software is not fully functional;
including.
[0008]
According to another preferred embodiment, the process according to the invention comprises:
→ During the protection phase,
-At least one software execution characteristic that can be monitored at least partially in the unit;
-At least one criterion that at least one software execution characteristic must adhere to;
Detection means implemented in the unit and capable of detecting that at least one software execution characteristic does not comply with at least one relevant criterion;
And and enforcement means implemented in the unit to notify the data processing system when at least one criterion is not adhered to and / or to change the execution of the software;
To define
Building utilization means that also enable the unit to implement detection and enforcement means;
And and the protected software,
-By selecting at least one software execution characteristic to be monitored from among the software execution characteristics that can be monitored;
By selecting at least one criterion that at least one selected software execution characteristic must adhere to;
By selecting, in the source of the protected software, at least one selected basic function whose software execution characteristics are to be monitored;
Altering at least one selected part of the source of the protected software, the change being performed during execution of the protected software, wherein at least one selected execution characteristic is monitored by the second execution part and the criterion is Non-compliance is a change that informs the data processing system and / or changes the execution of the protected software)
And generating a second object part of the protected software including utilization means that also implements detection means and forcing means, said second object part being at least during the execution of the protected software after uploading to the unit. One first software execution characteristic is monitored and the non-compliance of the criteria is a notification to the data processing system and / or an object part that changes the execution of the protected software)
Change,
Including
→ During the use phase,
・ When a unit exists,
-As long as all the criteria corresponding to all monitored execution characteristics of all changed parts of the protected software are observed, said parts of the protected software will operate nominally and consequently the protected software To work as nominal,
And notifying the data processing system if at least one criterion corresponding to the monitored execution characteristic of the portion of the protected software has not been complied with and / or controlling the function of the portion of the protected software. Make changes to the functionality of the protected software,
including.
[0009]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
-Software performance characteristics that can be monitored, such as measurement variables for the usage of software functions,
-At least one threshold value associated with each measurement variable,
-And an enabling means capable of updating at least one measurement variable,
To define
Building utilization means that also enable the unit to carry out activation means;
And and the protected software,
By selecting at least one measurement variable of the usage of at least one function of the software as a software execution characteristic to be monitored;
-> At least one function of the protected software whose use can be monitored using the measurement variables;
> At least one measurement variable used to quantify the use of said function,
> At least one threshold value associated with the selected measurement variable corresponding to the usage limit of said function;
> And at least one method of updating selected measurement variables depending on the usage of said function,
By selecting
And altering at least one selected part of the source of the protected software (this change being realized by the second execution part, during the execution of the protected software, the measurement variables depend on the use of said function) And at least one threshold crossing is taken into account)
Changing the
Including
→ notify the data processing system during the use phase when the unit is present and at least one threshold crossing corresponding to at least one use limit is detected and / or protected Modify the functionality of the software parts so that the functionality of the protected software is modified,
including.
[0010]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
-Some associated thresholds for at least one measurement variable;
-And different forcing means corresponding to each of said thresholds,
To define
And and the protected software,
By selecting in the source of the protected software at least one selected measurement variable to which several threshold values corresponding to different usage limits of the function have to be associated;
By selecting at least two thresholds associated with the selected measurement variable,
And altering at least one selected portion of the source of the protected software (this change is such that during execution of the protected software, various threshold crossings are considered differently by the second execution part) Changes that are made)
Change,
Including
→ During the use phase,
・ When a unit exists,
-Instructing the protected software not to use the corresponding function anymore if the first threshold is exceeded;
-Disabling the corresponding function and / or at least part of the protected software if a second threshold is exceeded;
including.
[0011]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
Defining a replenishment measure that allows at least one additional use of at least one software function monitored by the measurement variable;
Building utilization measures that also allow the unit to implement replenishment measures;
And and the protected software,
By selecting at least one selected measurement variable in the source of the protected software that can limit the use of functions that must be able to allow at least one additional use;
And altering at least one selected portion, such that the alteration permits at least one additional use of at least one function corresponding to the selected measurement variable during a phase called the replenishment phase. Change)
Change,
Including
→ During the replenishment phase,
Re-enabling at least one selected measurement variable and / or at least one associated threshold to enable at least one additional use of the function;
including.
[0012]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
-Software usage characteristics that can be monitored include software usage profiles,
-And at least one software execution characteristic,
To define
And and the protected software,
By choosing to monitor at least one software usage profile as a software execution characteristic;
By selecting at least one execution characteristic that at least one selected usage profile must adhere to;
And altering at least one selected part of the source of the protected software (this change is required during execution of the protected software if the second execution part does not comply with all selected execution features) Changes that don't have to be)
Change,
Including
→ During the use phase, notify the data processing system when the unit is present and when it is detected that at least one execution feature is not being adhered to and / or Modify the functionality so that the functionality of the protected software is changed,
including.
[0013]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
A set of instructions that can be executed by the unit;
-A set of instruction commands for said instruction set, said set of instruction commands being executed in a data processing system and triggering execution of the instructions in the unit;
-A chain of instructions,
-The expected execution sequence for the execution of the instruction,
-Means for detecting that the chain of instructions does not correspond to the expected one;
-And as a coercive means, a means capable of notifying the data processing system if the chain of instructions does not correspond to what is expected and / or changing the function of the part of the protected software;
To define
Building utilization means that also allow the unit to execute instructions of the instruction set (the execution of said instructions is triggered by the execution of instruction commands in the data processing system);
And and the protected software,
-At least one selected part of the source of the protected software,
> By converting basic functions into instructions,
By specifying a chain that at least part of the instructions must adhere to during their execution in the unit,
> And by converting the basic command to an instruction command corresponding to the instruction used,
By changing
Change,
Including
→ During the usage phase, if the presence of the unit detects that the chain of instructions executed by the unit does not correspond to the expected one, it informs the data processing system of it and / or Modify the functionality of the protected software so that the functionality of the protected software is changed,
including.
[0014]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
-As an instruction set, at least some instructions cooperating with registers and using at least one operand for the purpose of returning a result;
-For at least some of the instructions associated with the registers,
> A part that defines the function of the instruction, and> a part that defines the expected chain for the execution of the instruction,
(The part is
識別 Instruction identification field,
◇ and for each operand of the instruction:
* Flag field,
* And the expected identification field of the operand,
That contains the bit field corresponding to),
For each register belonging to the exploitation means used by the instruction set, a generation identification field in which the identification of the last instruction which returned its result is automatically stored;
As detecting means, during execution of the instruction, for each operand, when the flag field requires, the generation identification field corresponding to the register used by the operand and the expected identification field of the source of the operand; Means to check for equality,
-And means for being able to change the result of the instruction if at least one of the checked equalities is false, as enforcement means;
To define
including.
[0015]
According to another preferred embodiment, the process according to the invention comprises:
→ During the protection phase,
.- Basic commands or instruction commands as trigger commands,
-As dependent functions, basic functions or instructions;
-At least one argument to a trigger command that, as an order, at least partially corresponds to the information sent by the data processing system to the unit and triggers execution of the corresponding dependent function;
-A method for renaming an order, wherein the order can be renamed to obtain a trigger command having the renamed order;
-And recovery means designed to be used in the unit during the use phase and capable of recovering dependent functions to be performed from the renamed order;
To define
Building utilization measures that also allow the unit to implement restoration measures;
And and the protected software,
-By selecting a trigger command in the source of the protected software,
By modifying at least one selected part of the source of the protected software by renaming the order of the selected trigger command so as to hide the identification of the corresponding dependent function;
− And
The first object part of the protected software, such that during execution of the protected software, a trigger command with the renamed order is executed;
And a dependent function whose execution is triggered by the first execution part during execution of the protected software after uploading to the unit, and a second object part of the protected software including utilization means also implementing the restoration means , The identity of which is restored by the second execution part and the dependent function is executed by the second execution part,
By generating
Change,
Including
→ During the use phase,
Each time a trigger command with a renamed order contained in a part of the first execution part requests in the presence of the unit, the identity of the corresponding dependent function is restored in the unit and the part is executed correctly , As a result, making the protected software fully functional,
And, in the absence of the unit, despite the request by the part of the first execution part to trigger the execution of the dependent function in the unit, the request cannot be fulfilled correctly, so that at least the part Will not be executed, and as a result, the protected software will not be fully functional,
including.
[0016]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
Defining, for at least one dependent function, a set of dependent functions that are algorithmically equivalent, but whose renamed orders are triggered by different trigger commands;
And and the protected software,
By selecting at least one trigger command having a renamed order in the source of the protected software,
And by replacing at least the renamed order of one selected trigger command having the renamed order with another renamed order that triggers the same group of dependent functions, By changing at least one selected part,
Change,
including.
[0017]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase, for at least one dependent function, a set of algorithmically equivalent
-By concatenating the noise field with information defining the functional part of the dependent function to be performed by the unit;
-Or by using the identification field of the instruction and the expected identification field of the operand,
To define,
including.
[0018]
According to a variant embodiment, the process according to the invention comprises:
→ During the protection phase,
.-An order renaming method, an encryption method for encrypting the order,
-And means for implementing a decoding method as decoding means for decoding the renamed order to restore the identity of the dependent function to be performed in the unit,
To define
including.
[0019]
According to another preferred embodiment, the process according to the invention comprises:
→ During the protection phase,
・ Protected software
By selecting at least one conditional branch executed in at least one selected algorithmic process in the source of the protected software,
Altering at least one selected part of the source of the protected software (this change is performed during execution of the protected software, if the function of at least one selected conditional branch is a unit, a second execution part) Is the change performed by
− And
> The first object part of the protected software, such that during execution of the protected software, at least one selected conditional branching function is performed in the unit;
> The second object part of the protected software, after uploading to the unit, during execution of the protected software, a second execution part appears, whereby the function of at least one selected conditional branch is executed Something like
By generating
Change,
Including
→ During the use phase,
Performing at least one conditional branching function on the unit each time a part of the first execution part requests in the presence of the unit, so that the part is executed correctly, so that the protected software is fully functional To do,
And, in the absence of the unit, despite the request by the part of the first execution part to perform the function of the conditional branch in the unit, the request cannot be fulfilled correctly, so that at least the part Will not be executed, and as a result, the protected software will not be fully functional,
including.
[0020]
According to a variant embodiment, the process according to the invention comprises, during the protection phase, the protected software:
-By selecting at least one selected conditional branch sequence in the source of the protected software,
Altering at least one selected part of the source of the protected software (this change means that during execution of the protected software, all functions of the at least one selected conditional branching sequence are in units of the second Changes that are performed by the execution part)
− And
> The first object part of the protected software, such that during execution of the protected software, at least one function of the selected conditional branch sequence is performed in the unit;
A second object part of the protected software, after uploading to the unit, during execution of the protected software, a second execution part appears, whereby all functions of at least one selected conditional branch sequence are executed Something like
By generating
Including making changes.
[0021]
Thus, the process according to the invention makes it possible to protect the use of software by using a processing / storage unit that exhibits the property of containing a part of the software to be executed. Thus, any derivative version of the software that attempts to operate without a processing / storage unit requires that during execution that part of the software contained in the storage unit be recreated, otherwise the derivative version of the software is completely Does not work.
[0022]
Various other features will be apparent in the following description, which refers to the accompanying drawings, which illustrate non-limiting examples, embodiments, and implementations of the present inventive subject matter.
[0023]
In the following description, the following definitions are used.
[0024]
The data processing system 3 is a system that can execute a program.
[0025]
A processing / storage unit is a unit that can perform the following:
Receiving data provided by the data processing system 3;
Return the data to the data processing system 3;
-Store data at least partially secretly and retain at least part of this data even when the unit is powered off.
Perform algorithmic processing on the data and keep some or all of the results secret;
[0026]
The unit 6 is a processing / storage unit for implementing the process according to the invention.
[0027]
The blank unit 60 is a unit that does not implement the process according to the invention, but can receive data and convert it to the unit 6.
[0028]
The pre-customized unit 66 is a blank unit 60 that has received a portion of the data and can be converted to unit 6 after receiving the supplemental data.
[0029]
Uploading information to blank unit 60 or pre-customized unit 66 is equivalent to transferring information to blank unit 60 or pre-customized unit 66 and storing the transferred information. This transfer can include a change in the information format.
[0030]
Use uppercase letters to indicate variables, functions, or data contained in data processing system 3 and use lowercase letters to designate variables, functions, or data contained in unit 6;
[0031]
"Protected software" is software that is protected by at least one of the protection principles implemented by the process according to the present invention.
[0032]
"Varnable software" is software that is not protected by any of the protection principles implemented by the process according to the present invention.
[0033]
• Use the word "software" when the difference between the valuable software and the protected software is not significant.
[0034]
-Software has the following various expressions depending on the point of consideration (instant considered) in its life cycle.
− Source representation
− Object representation
− Distribution
-Or dynamic expressions
[0035]
-A software source expression is an expression that becomes an object expression after conversion. Source representations can have various levels, from conceptual abstraction levels to levels that can be directly executed by a data processing system or processing / storage unit.
[0036]
The object representation of the software represents the level of representation that can be performed after transfer to distribution and upload to the data processing system or processing / storage unit. For example, the object representation may be a binary code, an interpreted code, or the like.
[0037]
• Distribution is physical or virtual support, including object representation, and it is up to the user to use the software.
[0038]
• Dynamic representation is equivalent to executing software from software distribution.
[0039]
A piece of software is a piece of software, for example, one or more continuous or non-contiguous instructions, and / or one or more contiguous or non-contiguous functional blocks, and It can be one or more functions, and / or one or more subprograms, and / or one or more modules. Also, the software part may correspond to the entire software.
[0040]
FIGS. 10 and 11 respectively show various representations of the balunable software 2v in a general sense and of the protected software 2p protected according to the process according to the invention.
[0041]
FIG. 10 shows various representations of the valuable software 2v that appear in the life cycle. The valuable software 2v may appear in any of the following expressions.
・ Source representation 2vs
・ Object representation 2vo
・ Distribution 2vd. The distribution often takes the form of a physical distribution medium such as a CDROM or a file distributed via a network (such as GSM or the Internet).
Or a dynamic representation 2ve which generally corresponds to the execution of the varnable software 2v on a data processing system 3 of a known type, which generally comprises at least one processor 4.
[0042]
FIG. 11 shows various expressions of the protected software 2p appearing in the life cycle. The protected software 2p may appear in any of the following expressions.
A source representation including a first object part 2pos for the data processing system 3 and a second object part 2pos for the unit 6. Parts of both source parts are often contained in a common file.
An object display 2po including a first object part 2pos for the data processing system 3 and a second object part 2pou for the unit 6;
・ Distribution 2pd including:
A first distribution part 2pds including a first object part 2pos. The first distribution part 2pds is for the data processing system 3, and often takes the form of a physical distribution medium such as a CDROM or a file distributed via a network (GSM, the Internet, or the like).
-And a second distribution part 2 pdu of the form
Or alternatively, at least one pre-customized unit 66 in which a part of the second object part 2 pou has been uploaded and the user has to complete the customization by uploading supplementary data in order to obtain the unit 6. This supplementary data is acquired by downloading via a network or the like.
Or at least one unit 6 to which the second object part 2pou has been uploaded
Or a dynamic expression 2pe corresponding to the execution of the protected software 2p. The dynamic expression 2pe includes a first execution part 2pes executed by the data processing system 3 and a second execution part 2peu executed by the unit 6.
[0043]
Where the difference between the various expressions of the protected software 2p is not significant, the terms "first part of the protected software" and "second part of the protected software" shall be used.
[0044]
An implementation of the process according to the invention according to the dynamic representation of FIG. 11 uses a device 1p comprising a data processing system 3 connected to a unit 6 by a link 5. The data processing system 3 may be of any type, but generally includes at least one processor 4. The data processing system 3 can be part of a computer, or various machines, equipment, fixed or mobile products, or vehicles in a general sense. The link 5 can be realized by any method such as a serial link, a USB bus, a wireless link, an optical link, a network link, and a direct electrical connection to a circuit of the data processing system 3. It should be noted that the unit 6 can be physically located in the same integrated circuit as the processor 4 of the data processing system 3. In this case, the unit 6 can be regarded as a coprocessor in relation to the processor 4 of the data processing system 3, and the link 5 is in an integrated circuit.
[0045]
20 to 22 show various embodiments of the device 1p enabling the implementation of a protection process according to the invention, in a specific and non-limiting manner.
[0046]
In the embodiment shown in FIG. 20, the protection device 1p includes a computer as the data processing system 3, a chip card 7 as the unit 6, and its interface 8 (generally called a card reader). Computer 3 is connected to unit 6 by link 5. During the execution of the protected software 2p, both the first execution part 2pes executed on the computer 3 and the second execution part 2peu executed on the chip card 7 and its interface 8 are required for the protected software 2p to fully function. Must work.
[0047]
In the embodiment shown in FIG. 21, the product 9 in a general sense that is equipped with the protection device 1p includes various components 10 that are adapted to the functions that such a product 9 performs. The protection device 1p includes on the one hand a data processing system 3 integrated in the product 9, and on the other hand a unit 6 associated with the product 9. For the product 9 to be fully functional, the protected software 2p must be fully functional. Therefore, during execution of the protected software 2p, both the first execution part 2pes executed by the data processing system 3 and the second execution part 2peu executed by the unit 6 must function. Therefore, unauthorized use of the product 9 or any of its functions can be indirectly prevented by the protected software 2p. Product 9 can be equipment, systems, machines, toys, indoor appliances, telephones, and the like.
[0048]
In the embodiment shown in FIG. 22, the protection device 1p includes a plurality of computers and a part of a communication network. The data processing system 3 is a first computer connected by a network-type link 5 to a unit 6 constituted by a second computer. In the implementation of the present invention, the second computer 6 is used as a license server for the protected software 2p. During execution of the protected software 2p, both the first execution part 2pes executed by the first computer 3 and the second execution part 2peu executed by the second computer 6 are required for the protected software 2p to fully function. Must work.
[0049]
FIG. 30 clearly shows the protection process according to the invention. It should be noted that the valuable software 2v is assumed to be fully running on the data processing system 3. On the other hand, in the implementation of the protected software 2p, since the transfer means 13 which is a part of the unit 6 is connected to the transfer means 12 provided in the data processing system 3 by the link 5, the first execution of the protected software 2p is performed. Communication between part 2pes and the second execution part 2peu can be established.
[0050]
It should be noted that the transfer means 12, 13 have the nature of software and / or hardware and can realize (and possibly optimize) data communication between the data processing system 3 and the unit 6. The transfer means 12 and 13 are preferably configured to freely use the protected software 2p which does not depend on the type of the link 5 used. Since these transfer means 12, 13 are not the subject of the present invention and are well known to those skilled in the art, they will not be described in further detail. The first part of the protected software 2p includes a command. Executing this command by the first execution part 2pes during execution of the protected software 2p enables communication between the first execution part 2pes and the second execution part 2peu. In the following description, this command is represented as IN, OUT, or TRIG.
[0051]
As shown in FIG. 31, the unit 6 is equipped with a protection means 14 to enable the implementation of the second execution part 2peu of the protected software 2p. The protection means 14 includes a storage means 15 and a processing means 16.
[0052]
In order to simplify the following description, the presence or absence of the unit 6 during execution of the protected software 2p will be examined. Indeed, a unit 6 with a protection means 14 that is not suitable for the execution of the second execution part 2peu of the protected software 2p is always regarded as absent if the protected software 2p is not executed correctly. The following applies to the presence or absence of units.
A unit 6 which is physically present and comprises a protection means 14 suitable for the execution of the second execution part 2peu of the protected software 2p is always considered to be present.
A unit 6 with protection means 14 that is physically present but is not suitable for the correct implementation of the second execution part 2peu of the protected software 2p (which does not allow this implementation) If the protected software 2p does not function correctly, it is deemed to be absent.
The unit 6 that does not physically exist is always regarded as not existing.
[0053]
If the unit 6 comprises a chip card 7 and its interface 8, the transfer means 13 is divided into two parts. One is a part on the interface 8 and the other is a part on the chip card 7. In this embodiment, the absence of the chip card 7 is considered the same as the absence of the unit 6. That is, when the chip card 7 and / or its interface 8 are not present, the protection means 14 is inaccessible and cannot execute the second execution part 2peu of the protected software 2p, so that the protected software 2p is completely Does not work.
[0054]
The purpose of the protection process according to the invention is to implement a protection principle called << basic function >>. This implementation will be described with reference to FIGS.
[0055]
The implementation of the principle of protection by basic functions defines:
-Basic function set. The basic functions included in the basic function set can be executed by the second execution part 2peu in the unit 6, and in some cases, data can be transferred between the data processing system 3 and the unit 6. .
-The basic command set for this basic function set. This elementary command can be executed in the data processing system 3, which triggers the execution of the corresponding elementary function in the unit 6.
[0056]
In the implementation of the protection principle by the basic function, a utilization means capable of converting the blank unit 60 into the unit 6 capable of executing the basic function is also configured. The execution of the basic function is triggered by the execution of the basic command in the data processing system 3.
[0057]
In the implementation of the protection principle by elementary functions, at least one algorithmic operation using at least one operand and returning at least one result is also selected in the source 2v of the valuable software. Also, at least one source 2 vs. portion of the valuable software that includes at least one selected algorithmic operation is selected.
[0058]
Next, at least one selected portion of the source 2v of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change:
During the execution of the protected software 2p, at least one part of the first execution part 2pes executed in the data processing system 3 takes into account that at least one selected algorithm processing function is executed in the unit 6. .
During the execution of the protected software 2p, the second execution part 2peu executed in the unit 6 performs at least one function of at least one selected algorithmic process.
During the execution of the protected software 2p, each of the selected algorithm processes is split such that each of the selected algorithm processes is performed by the second execution part 2peu using a primitive function. Each of the selected algorithm processes is performed by the basic function fen(The range of n is preferably 1 to N). That is, it is divided into the following basic functions.
One or more elementary functions (as the case may be) that allow the handling of one or more operands to be left to unit 6
Basic functions, some of which use the operands and which, when combined, perform the function of the selected algorithmic operation using this operand;
One or more elementary functions (optional) allowing unit 6 to delegate to data processing system 3 the handling of the results of the selected algorithmic processing.
A sequence of basic commands is selected from a series of sequences enabling execution of the protected software 2p;
[0059]
The first execution part 2pes of the protected software 2p executed by the data processing system 3 is a basic command CEF.n(The range of n is 1 to N). This command is based on the basic function fe defined earlier.nThe respective execution by the second execution part 2peu is triggered in unit 6.
[0060]
FIG. 60 illustrates an example of execution of the valuable software 2v. In this example, the calculation Z ← (X, Y) is executed at a predetermined time during the execution of the valuable software 2v in the data processing system 3. This calculation is equivalent to substituting the result of the algorithm processing represented by the function F using the operands X and Y into the variable Z.
[0061]
FIG. 61 shows an implementation example of the present invention in which the algorithm processing selected in FIG. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1, T2In the basic command CFE1, CFE2Is executed. This command is executed by the corresponding basic function fe by the second execution part 2peu.1, Fe2Is triggered in unit 6. This basic function transfers the data X, Y from the data processing system 3 to the storage zones x, y arranged in the storage means 15 of the unit 6, respectively. This basic command CFE1, CFE2Are represented as OUT (x, X) and OUT (y, Y), respectively.
・ Time t3~ TN-1In the basic command CFE3~ CFEN-1Is executed. This command is executed by the corresponding basic function fe by the second execution part 2peu.3~ FeN-1Is triggered in unit 6. This basic command CFE3~ CFEN-1Are TRIG (fe3)-TRIG (feN-1). A series of basic functions fe executed in combination3~ FeN-1Is the same as the function F. More precisely, when this basic command is executed, the basic function fe that returns the result to the storage zone z of the unit 6 using the contents of the storage zones x and y3~ FeN-1Is executed in the unit 6.
・ Time tNIn the basic command CFENIs executed. This command is a basic function fe by the second execution part 2peu.NIs triggered in unit 6. This function transfers the result of the algorithm processing contained in the storage zone z of the unit 6 to the data processing system 3 in order to substitute the result into the variable Z. This basic command CFENIs represented as IN (z).
[0062]
In this example, basic commands 1 to N are continuously executed. However, it should be noted that the following two improvements can be made.
The first improvement concerns the case where a plurality of algorithm processes are remotely processed in the unit 6 and at least the result of one algorithm process is used in another algorithm process. In such a case, some of the basic commands used for the transfer can be deleted.
The purpose of the second improvement is to select an appropriate basic command sequence from a sequence that allows the execution of the protected software 2p. In this regard, it is desirable to select a basic command sequence that temporarily separates the execution of the basic function. To do this, a portion of code executed by the data processing system 3 that includes (or does not include) a basic command used to determine another data is inserted between the basic commands. Figures 62 and 63 illustrate the principles of such an embodiment.
[0063]
FIG. 62 illustrates an execution example of the valuable software 2v. In this example, during execution of the valuable software 2v, two algorithm processes are executed in the data processing system 3 to determine Z and Z '. This processing is represented by Z ← F (X, Y) and Z ′ ← F ′ (X ′, Y ′).
[0064]
FIG. 63 shows an example of an implementation of the process according to the invention in which the two algorithmic operations selected in FIG. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, as described above, the basic command CFE1~ CFENIs equivalent to determining Z, and the basic command CFE '1~ CFE 'MIs equivalent to determining Z ′. As shown in the figure, the basic command CFE '1~ CFE 'MAnd other code parts are inserted, the basic command CFE1~ CFENIs not executed continuously. That is, in this example, CFE1, Inserted code portion, CFE '1, CFE2, Inserted code portion, CFE '2, CFE '3, Inserted code portion, CFE '4, CFE3, CFE4, ..., CFEN, CFE 'MIs executed.
[0065]
If the unit 6 is present during execution of the protected software 2p, the corresponding basic function is executed in the unit 6 each time a basic command included in the first execution part 2pes of the protected software 2p requests. You should be careful. Thus, if unit 6 is present, this part will be executed correctly, and as a result, the protected software 2p will be fully functional.
[0066]
FIG. 64 shows an example of execution of the protected software 2p when the unit 6 does not exist. In this example, even if the basic command is executed at each time during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, since the unit 6 does not exist, the execution of the corresponding basic function is triggered. I can't. Therefore, the value to be substituted for the variable Z cannot be determined correctly.
[0067]
Therefore, if the unit 6 is not present, at least one request by the part of the first execution part 2pes of the protected software 2p, which seeks to trigger the execution of the basic function in the unit 6, cannot be correctly performed. Is not executed correctly, so that the protected software 2p does not function completely.
[0068]
The purpose of a protection process according to another advantageous characteristic of the invention is to implement a protection principle called << variable >>. This implementation will be described with reference to FIGS.
[0069]
In the implementation of the principle of protection by variables, at least one variable is selected in the source 2v of the variable software, the variable partially defining its state during the execution of the variable software 2v. The term "software state" refers to the set of information at a given point in time necessary for the complete execution of the software. Thus, the absence of the selected variable impairs the complete execution of the software. Also, at least one portion of the source 2vs of the valuable software that includes at least one selected variable is selected.
[0070]
Next, at least one selected portion of the source 2v of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, during execution of the protected software 2p, at least one part of the first execution part 2pes executed in the data processing system 3 has at least one selected variable or at least one copy of the selected variable. Is present in the unit 6.
[0071]
FIG. 40 shows an execution example of the valuable software 2v. In this example, during execution of the valuable software 2v in the data processing system 3, the following is performed.
・ Time t1, Data X is a variable V1(V1← X).
・ Time t2In the variable V1Is assigned to a variable Y (Y ← V1).
・ Time t3In the variable V1Is assigned to the variable Z (Z ← V1).
[0072]
FIG. 41 shows an example of a first embodiment of the implementation of the present invention, where the variables are in unit 6. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1, The variable v stored in the storage means 15 of the unit 6 from the data processing system 31A transfer command that triggers the transfer of data X to X is executed. This transfer command is output from OUT (v1, X), and finally the data X is a variable v1Is assigned to
・ Time t2, The variable v present in unit 61Is assigned to the variable Y, a transfer command which triggers the transfer of this value to the data processing system 3 is executed. This transfer command is IN (v1) And finally the variable v1Is assigned to the variable Y.
・ Time t3, The variable v present in unit 61Is assigned to the variable Z, a transfer command which triggers the transfer of this value to the data processing system 3 is executed. This transfer command is IN (v1) And finally the variable v1Is assigned to the variable Z.
[0073]
It should be noted that at least one variable is present in unit 6 during execution of protected software 2p. For this reason, if the part of the first execution part 2pes of the protected software 2p requests, if the unit 6 is present, this variable existing in the unit 6 is used for the first execution part 2pes of the protected software 2p. Is transferred to the data processing system 3. This allows this part to be executed correctly, so that the protected software 2p is fully functional.
[0074]
FIG. 42 shows an example of a second embodiment of the implementation of the present invention, where a copy of the variable resides in unit 6. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1, The data X is stored in the variable V1Is assigned to In addition, the variable v stored in the storage unit 15 of the unit 6 is transmitted from the data processing system 3.1A transfer command that triggers the transfer of data X to X is also executed. This transfer command is output from OUT (v1, X).
・ Time t2In the variable V1Is assigned to the variable Y.
・ Time t3, The variable v present in unit 61Is assigned to the variable Z, a transfer command which triggers the transfer of this value to the data processing system 3 is executed. This transfer command is IN (v1).
[0075]
It should be noted that during execution of the protected software 2p, at least one of the copies of the variables is in unit 6. Therefore, when the first execution part 2pes of the protected software 2p requests, if the unit 6 is present, the variable existing in the unit 6 is used for the first execution part 2pes of the protected software 2p. The value of this copy is transferred to the data processing system 3. Thus, this part is executed correctly, and as a result, the protected software 2p is fully functional.
[0076]
FIG. 43 shows an execution example of the protected software 2p when the unit 6 does not exist. In this example, during execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1In the transfer command OUT (v1, X), since the unit 6 does not exist, the variable v1Transfer of data X cannot be triggered.
・ Time t2In the transfer command IN (v1), Since the unit 6 does not exist, the variable v to the data processing system 31Can not trigger the transfer of the value of.
・ Time t3In the transfer command IN (v1), Since the unit 6 does not exist, the variable v to the data processing system 31Can not trigger the transfer of the value of.
[0077]
Therefore, if unit 6 is not present, at least one part of the first execution part 2pes requesting the use of a variable or a copy of a variable present in unit 6 cannot be fulfilled correctly, so that at least this part Is not executed, and as a result, the protected software 2p does not function completely.
[0078]
In the data transfer between the data processing system 3 and the unit 6 shown in the above-described example, only a simple assignment is used, but the simple assignment is combined with another operation to obtain OUT (v1, 2 * X + 3) or Z ← (5 * v1+ V2It should be noted that a person skilled in the art will know how to obtain complex operations such as
[0079]
The purpose of the protection process according to another advantageous characteristic of the invention is to implement a protection principle called << Detection and Enforcement >>. This implementation will be described with reference to FIGS.
[0080]
The implementation of the detection and enforcement protection principle defines the following:
At least one software execution characteristic that can be monitored at least partially in unit 6
At least one criterion to be followed for at least one software execution characteristic
A detection means 17 provided in the unit 6 which can detect that at least one software execution characteristic does not comply with at least one relevant criterion.
The enforcement means 18 provided in the unit 6 that can notify the data processing system 3 and / or change the software execution if at least one criterion is not adhered to
[0081]
In the implementation of the principle of protection by detection and enforcement, utilization means are also constructed which can convert the blank unit 60 into a unit 6 comprising at least the detection means 17 and the enforcement means 18.
[0082]
FIG. 70 illustrates the measures necessary to implement this protection principle by detection and enforcement. The unit 6 is equipped with a detecting means 17 and a forcing means 18 belonging to the processing means 16. If the standard has not been complied with, the forcing means 18 is notified by the detecting means 17 to that effect.
[0083]
More precisely, the detection means 17 uses information sent from the transfer means 13 and / or the storage means 15 and / or the processing means 16 to monitor one or more software execution characteristics. At least one criterion to be followed is set for each software execution characteristic.
[0084]
When detecting that at least one software execution characteristic does not comply with at least one criterion, the detecting unit 17 notifies the forcing unit 18 of the fact. The forcing means 18 is configured so that the state of the unit 6 can be changed by an appropriate method.
[0085]
In the implementation of the detection and enforcement protection principle, the following are also selected:
Select at least one software execution characteristic to be monitored from the software execution characteristics that can be monitored.
Select at least one criterion to be followed for at least one selected software execution characteristic.
Select at least one algorithmic process in which at least one software execution characteristic is monitored in the source 2v of the valuable software;
Select at least one portion of the valuable software source 2vs that includes at least one selected algorithmic operation.
[0086]
Next, at least one selected portion of the source 2v of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, during execution of the protected software 2p, in particular, the following occurs.
Considering that at least one part of the first execution part 2pes executed in the data processing system 3 needs to monitor, at least in part, at least one selected software execution characteristic in the unit 6.
A second execution part 2peu executed in the unit 6 monitors at least in part the selected software execution characteristics.
[0087]
If the unit 6 is present during the execution of the protected software 2p protected by this protection principle by detection and enforcement, then:
As long as all of the changed parts of the protected software 2p comply with all the criteria corresponding to all monitored execution characteristics, the changed parts of the protected software 2p will work as nominal, thus the protected software 2p works nominally.
If at least one criterion corresponding to the monitored execution characteristic of the part of the protected software 2p has not been complied with, the data processing system 3 is notified accordingly and / or of the part of the protected software 2p The function is changed, and as a result, the function of the protected software 2p is changed.
[0088]
Naturally, if the unit 6 is not present, at least one request by the first execution part 2pes of the protected software 2p for use of the unit 6 cannot be performed correctly, so that at least this part is correctly executed. However, as a result, the protected software 2p does not function completely.
[0089]
In implementing the protection principle by detection and enforcement, two types of software execution characteristics are used preferentially.
[0090]
A first type of software execution characteristic corresponds to a measurement variable of software execution, and a second type of software execution characteristic corresponds to a software usage profile. These two types of properties can be used individually or in combination.
[0091]
The implementation of the detection and enforcement protection principle, which uses software execution measurement variables as execution characteristics, defines:
The storage means 15 can store at least one measurement variable used to quantify the use of at least one software function;
The detection means 17 can monitor at least one threshold value associated with each measurement variable
・ Activating means that can update each measurement variable according to the usage status of the function associated with the measurement variable
[0092]
In addition to the detecting means 17 and the forcing means 18, a utilization means having an enabling means is also constructed.
[0093]
Also, the following is selected in the source 2v of the valuable software.
-At least one function of the valuable software 2v that can monitor the usage status using the measurement variables.
At least one measurement variable used to quantify the use of this function
At least one threshold value associated with the measurement variable corresponding to the limit of use of this function
At least one way to update measurement variables according to the usage of this function
[0094]
Next, the source 2vs of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, during execution of the protected software 2p, the second execution part 2peu performs the following.
・ Enable measurement variables according to the usage status of this function.
• Consider at least one threshold violation.
[0095]
That is, during execution of the protected software 2p, the measurement variable is updated in accordance with the use status of this function, and when the threshold value is exceeded, the detection unit 17 notifies the forcing unit 18 of the update. The forcing unit 18 appropriately determines whether to notify the data processing system 3 and / or change the processing executed by the processing unit 16. When changing, the function of the part of the protected software 2p is changed, and as a result, the function of the protected software 2p is changed.
[0096]
In the implementation of the first preferred variant of the principle of detection and enforcement protection using measurement variables as properties, the following is defined.
· Several relevant thresholds for at least one measurement variable
・ Various forcing means corresponding to each of these thresholds
[0097]
Also, the following is selected in the source 2v of the valuable software.
At least one measurement variable that is used to quantify the usage of at least one function of the software and needs to be associated with multiple thresholds corresponding to different usage limits of this function
At least two thresholds associated with the measurement variable
[0098]
Next, the source 2vs of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, during execution of the protected software 2p, the second execution part 2peu performs the following.
・ Enable measurement variables according to the usage status of this function.
• Consider various threshold crossings individually.
[0099]
That is, in general, when the first threshold value is exceeded during execution of the protected software 2p, the unit 6 notifies the data processing system 3 of the fact, and the data processing system 3 gives the protected software 2p this function. Order not to use. If the protected software 2p continues to use this function, the second threshold may be exceeded. If the second threshold is exceeded, the enforcement means 18 can disable the selected function and / or the protected software 2p.
[0100]
In an implementation of the second preferred variant of the protection by detection and enforcement principle, which uses the measurement variable as a characteristic, at least one additional use of at least one software function monitored by the measurement variable can be permitted. Means are defined.
[0101]
In addition, a utilization means including a replenishing means in addition to the detecting means 17, the forcing means 18, and the enabling means is constructed.
[0102]
In addition, in the source 2v of the valuable software, at least one measurement variable is selected that is used to limit the use of at least one function of the software, which must be allowed at least one additional use.
[0103]
Next, the source 2vs of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, it is possible to allow at least one additional use of at least one function corresponding to the selected measurement variable in a phase called replenishment.
[0104]
In order to allow at least one additional use of the corresponding function, at least one selected measurement variable and / or at least one relevant threshold value is re-enabled in the replenishment phase. That is, in the supplement phase, additional use of at least one function of the protected software 2p can be recognized.
[0105]
Implementation of the detection and enforcement protection principle using a software usage profile as a characteristic defines at least one software execution feature as a criterion to be followed for this usage profile.
[0106]
The following is also selected in the source 2v of the valuable software.
At least one usage profile to be monitored
At least one performance feature that at least one selected usage profile must adhere to
[0107]
Next, the source 2vs of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, during execution of the protected software 2p, the second execution part 2peu follows all selected execution features. That is, the unit 6 itself monitors the manner in which the second execution part 2peu is executed, and, if at least one execution feature is not observed, notifies the data processing system 3 to that effect, and / or The function of the protected software 2p can be changed.
[0108]
If the unit 6 is present during execution of the protected software 2p protected by this principle, the following occurs.
-The protected software 2p functions nominally, since the changed part of the protected software 2p functions nominally as long as all the execution features of all the changed parts of the protected software 2p are observed.
If at least one execution characteristic of a part of the protected software 2p is not adhered to, the data processing system 3 is informed accordingly and / or the function of that part of the protected software 2p is changed, so that , The function of the protected software 2p is changed.
[0109]
Monitoring of various execution characteristics can be considered. For example, it is possible to monitor the presence or absence of an instruction including a marker and the execution chain of at least one part of the instruction.
[0110]
The implementation of the protection principle by detection and enforcement, which uses monitoring of the execution chain of at least one part of the instruction as an execution feature to be adhered to, defines:
An instruction set containing instructions that can be executed by the unit 6
• Instruction command set for this instruction set. This command can be executed by the data processing system 3. Execution of each of these command commands in data processing system 3 triggers execution of the corresponding command in unit 6.
Detection means 17 capable of detecting that the instruction chain is not what is expected
If the instruction chain is not the expected one, notify the data processing system 3 to that effect and / or force the software execution to change
[0111]
Further, utilization means for enabling the unit 6 to execute the instructions of the instruction set is also constructed. Execution of this instruction is triggered by execution of the instruction command in the data processing system 3.
[0112]
In addition, at the source 2v of the valuable software, at least one algorithmic process which must be processed remotely in the unit 6 and which needs to monitor the chain of at least one part of the instructions is also selected.
[0113]
Next, the source 2vs of the valuable software is modified to obtain the source 2ps of the valuable software. As a result of this change, the following processing is performed during execution of the protected software 2p.
The second execution part 2peu performs at least the function of the selected algorithm processing.
-The selected algorithm process is divided into multiple instructions.
A chain is specified that at least some instructions must adhere to during execution in unit 6;
The first execution part 2pes of the protected software 2p executes an instruction command which triggers the execution of the instruction in the unit 6;
[0114]
According to this principle, if the unit 6 is present during execution of the protected software 2p, the following is performed.
-As long as the instruction chain of all the changed parts of the protected software 2p executed in the unit 6 is as expected, the protected parts of the protected software 2p function as nominal, so that the protected software 2p Works as nominal.
If the instruction chain of the part of the protected software 2p executed in the unit 6 is not the expected one, the data processing system 3 is notified to that effect and / or the function of that part of the protected software 2p is As a result, the function of the protected software 2p is changed.
[0115]
FIG. 71 shows an example where the expected chain is observed in the implementation of the protection principle by detection and enforcement, which utilizes the monitoring of the execution chain of at least one part of the instruction as an execution feature to be adhered to. I have.
[0116]
The first execution part 2pes of the protected software 2p executed by the data processing system 3 includes, in the unit 6, an instruction i belonging to an instruction set.iCommand CI that triggers the execution ofiExecute In this instruction set, at least some of the instructions each include a part that defines the function of the instruction and a part that can confirm that the execution chain of the instruction is expected. In this example, the command CIiIs TRIG (ii), And the expected chain of instruction execution is in, In + 1, And in + 2It is. Instruction i in unit 6nTo produce the result a, and the instruction in + 1And the result b is obtained. ordern + 2Then, the instruction inAnd in + 1Are used as operands. ordern + 2Is c.
[0117]
Since this instruction chain executed in the unit 6 is the expected one, the protected software 2p comes to function normally, that is to say as nominal.
[0118]
FIG. 72 shows an example of an implementation of the protection principle by detection and enforcement that utilizes monitoring of the execution chain of at least one part of the instruction as an execution feature to be observed, where the expected chain is not observed. .
[0119]
Also in this example, the expected chain of instruction execution is in, In + 1, And in + 2It is. However, the instruction inTo the instruction i 'nReplaces the execution chain, so the actual execution chain is i ′n, In + 1, And in + 2Becomes Instruction i 'nIs executed, the result a, that is, the instruction inHas the same effect as running However, the instruction i 'nIs the instruction in + 2Is not an expected instruction for generating a result a used as an operand ofn + 2Detect while executing. The detecting means 17 notifies the forcing means 18 to that effect.n + 2Change the function of. With this change, the instruction in + 2May be different from c. Naturally, the instruction i 'nIs the instruction inIf the result a differs from the result a, the instruction in + 2It is clear that the result of can also be different from c.
[0120]
Therefore, the function of the protected software 2p can be changed unless the execution chain of the instruction executed by the unit 6 is expected.
[0121]
FIGS. 73 and 74 illustrate a preferred variant of the protection by detection and enforcement principle, which utilizes the monitoring of the execution chain of at least one part of the instruction as an execution feature to be adhered to. In this preferred variant, an instruction set is defined that includes at least some instructions that work with registers and use at least one operand for the purpose of returning a result.
[0122]
As shown in FIG. 73, for at least some of the instructions that work with the registers, a part PF that defines the function of the instruction and a part PE that defines the expected chain of instruction execution are defined. The part PF corresponds to an operation code known to those skilled in the art. The partial PE defining the expected chain includes the following bit fields.
・ Instruction identification field CII
For each operand k of the instruction, the following fields (k ranges from 1 to K, where K indicates the number of operands of the instruction)
A flag field CD indicating whether it is appropriate to check the origin of the operand kk
The expected identity field CIP of the operand, indicating the expected identity of the instruction which generated the content of the operand kk
[0123]
As shown in FIG. 74, the instruction set includes V registers belonging to the processing means 16. Each register has Rv(V ranges from 1 to V). Each register Rv, The following two fields are defined:
A function field CF, known to those skilled in the art, capable of storing the execution result of the instructionv
-Function field CFvGeneration identification field CIG that can store the identity of the instruction that generated the contents ofv. This generation identification field CIGvIs the function field CFvIs automatically updated with the contents of the instruction identification field CII that generated the. This generation identification field CIGvCannot be accessed or changed by an instruction, and is used only by the detecting means 17.
[0124]
During execution of the instruction, the detecting means 17 performs the following processing for each operand k.
・ Flag field CDkRead.
・ Flag field CDkRequest, the expected identification field CIP corresponding to the register used in operand kkAnd generation identification field CIGvRead both.
・ Two fields CIPkAnd CIGvCheck if are equal.
If not equal, the detecting means 17 considers that the execution chain of the instruction is not observed.
[0125]
When the detection unit 17 is notified that the instruction chain is not adhered to, the forcing unit 18 can change the instruction result. Changing the function part PF of the currently executing instruction or the function part PF of the following instruction implements the preferred embodiment.
[0126]
The purpose of a protection process according to another advantageous characteristic of the invention is to implement a protection principle called << Rename >>. This implementation will be described with reference to FIGS.
[0127]
The implementation of the rename protection principle defines the following:
• Dependent function set. The dependent functions included in the dependent function set can be executed by the second execution part 2peu in the unit 6, and in some cases, data can be transferred between the data processing system 3 and the unit 6. This set of dependent functions may be finite or infinite.
• Trigger command set for this dependent function. This trigger command is executed in the data processing system 3 and can trigger the execution of the corresponding dependent function in the unit 6.
The order of each trigger command, which at least partially corresponds to the information transferred by the first execution part 2pes to the second execution part 2peu in order to trigger the execution of the corresponding dependent function. This order has the form of at least one argument of the trigger command.
An order renaming method used during the change of the valuable software 2v. In this way, the order can be renamed to obtain a trigger command with the renamed order, which can hide the identity of the corresponding dependent function.
A restoring means 20 which can restore the original order from the renamed order in order to restore the dependent function used and executed in the unit 6 in the use phase.
[0128]
In the implementation of the protection principle by renaming, a utilization means capable of converting the blank unit 60 into a unit 6 including at least the detection means 17 and the forcing means 18 is also constructed.
[0129]
In the implementation of the principle of protection by renaming, the following is also selected in the source 2vs of the valuable software.
At least one algorithmic process that uses at least one operand and returns at least one result
At least one portion of the source 2vs of the valuable software, including at least one selected algorithmic process
[0130]
Next, the source 2vs of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, in particular:
During the execution of the protected software 2p, at least one part of the first execution part 2pes executed in the data processing system 3 takes into account that at least one selected algorithm processing function is executed in the unit 6. .
During the execution of the protected software 2p, the second execution part 2peu executed in the unit 6 performs at least one function of the selected algorithm processing.
During the execution of the protected software 2p, each selected algorithmic process is split to be executed by the second execution part 2peu using the dependent function. Each selected algorithm process has the following dependent function fdn(The range of n is preferably 1 to N).
One or more dependent functions, which may leave the handling of one or more operands to unit 6 (optional)
-Dependent functions, some of which use operands and which, when combined, perform the function of the selected algorithmic operation using this operand;
One or more dependent functions (optional) allowing unit 6 to delegate to data processing system 3 the handling of the results of the selected algorithmic processing.
During the execution of the protected software 2p, the second execution part 2peu changes the dependent function fd.nExecute
-During execution of the protected software 2p, the dependent function is triggered by a trigger command having the renamed order.
-The sequence of the trigger command is selected from a series of sequences enabling execution of the protected software 2p.
[0131]
The first execution part 2pes of the protected software 2p executed in the data processing system 3 executes a trigger command having the renamed order. This command transfers the renamed order to the unit 6 and triggers the restoration of that order by the restoring means 20 in the unit 6, and then each previously defined dependent function fd by the second execution part 2peunTriggers the execution of
[0132]
That is, the principle of protection by rename is implemented by renaming the order of the trigger command in order to obtain the trigger command with the renamed order. Execution of the trigger command with the renamed order in the data processing system 3 triggers the execution of the dependent function in the unit 6. This dependent function is a dependent function that would have been triggered by a trigger command having an order that has not been renamed, but examining the protected software 2p does not identify the identity of the dependent function to be executed.
[0133]
FIG. 80 illustrates an example of execution of the valuable software 2v. In this example, the calculation Z ← F (X, Y) is executed at a predetermined time during the execution of the valuable software 2v in the data processing system 3. This calculation is equivalent to substituting the result of the algorithm processing represented by the function F using the operands X and Y into the variable Z.
[0134]
81 and 82 show implementation examples of the present invention.
[0135]
FIG. 81 shows a partial implementation of the present invention. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1, T2In the trigger command CD1, CD2Is executed. This command uses the corresponding dependent function fd by the second execution part 2peu1, Fd2Is triggered in unit 6. This dependent function transfers the data X, Y from the data processing system 3 to the storage zones x, y arranged in the storage means 15 of the unit 6, respectively. This trigger command CD1, CD2Are represented as OUT (x, X) and OUT (y, Y), respectively.
・ Time t3~ TN-1In the trigger command CD3~ CDN-1Is executed. This command uses the corresponding dependent function fd by the second execution part 2peu3~ FdN-1Is triggered in unit 6. This trigger command CD3~ CDN-1Are TRIG (fd3) -TRIG (fdN-1). A series of dependent functions fd executed in combination3~ FdN-1Is the same as the function F. More precisely, when this trigger command is executed, the dependent function fd which uses the contents of the storage zones x and y and returns a result to the storage zone z of the unit 63~ FdN-1Is executed in the unit 6.
・ Time tNIn the trigger command CDNIs executed. This command uses the dependent function fd by the second execution part 2peu.NIs triggered in unit 6. This function transfers the result of the algorithm processing contained in the storage zone z of the unit 6 to the data processing system 3 in order to substitute the result into the variable Z. This command is represented as IN (z).
[0136]
In this example, in order to fully implement the present invention, the first argument of the trigger command OUT and the arguments of the trigger commands TRIG and IN are selected as an order. The order selected in this way is renamed by the order rename method. In this method, R (x), R (y), R (fd3). . . , R (fdN-1) And R (z), respectively, to obtain the trigger command CD1~ CDN-1Order (x, y, fd3, FdN-1, Z) are renamed.
[0137]
FIG. 82 shows a complete implementation of the present invention. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1, T2Trigger command CDCR with renamed order1, CDCR2Is executed. This command transfers the renamed orders R (x), R (y) and data X, Y to the unit 6. Thereby, the restoration of the renamed order by the restoration means 20 is triggered in the unit 6, and the order (identities of the storage zones x, y) is restored. Next, the dependent function fd corresponding to the second execution part 2peu1, Fd2Is executed. This dependent function transfers the data X, Y from the data processing system 3 to the storage zones x, y arranged in the storage means 15 of the unit 6, respectively. This trigger command CDCR with the renamed order1, CDCR2Are represented as OUT (R (x), X) and OUT (R (y), Y), respectively.
・ Time t3~ TN-1Trigger command CDCR with renamed order3~ CDCRN-1Is executed. This command returns the renamed order R (fd3) To R (fdN-1) To the unit 6. As a result, the order (fd3~ FdN-1) Is triggered in unit 6. Next, the dependent function fd is obtained by the second execution part 2peu.3~ FdN-1Is executed. This trigger command CDCR with the renamed order3~ CDCRN-1Are TRIG (R (fd3)) To TRIG (R (fdN-1)).
・ Time tNTrigger command CDCR with renamed orderNIs executed. This command transfers the renamed order R (z) to the unit 6. Thereby, the restoration of the order (identity of the storage zone z) by the restoration means 20 is triggered in the unit 6. Next, the dependent function fd is obtained by the second execution part 2peu.NIs executed. This dependent function transfers the result of the algorithm processing contained in the storage zone z of the unit 6 to the data processing system 3 in order to substitute the result into the variable Z. This trigger command CDCR with the renamed orderNIs represented as IN (R (z)).
[0138]
In this example, trigger commands 1 to N having the renamed order are executed successively. However, it should be noted that the following two improvements can be made.
The first improvement concerns the case where a plurality of algorithm processes are remotely processed in the unit 6 and at least the result of one algorithm process is used in another algorithm process. In such a case, a part of the trigger command having the renamed order used for the transfer can be deleted.
The purpose of the second improvement is to select an appropriate sequence of trigger commands with the renamed order from a series that allows the execution of the protected software 2p. In this regard, it is desirable to select a sequence of trigger commands that has a renamed order that temporarily isolates the execution of the dependent function. To separate, insert between the trigger commands a portion of the code that includes (or does not include) the trigger command with the renamed order used in the data processing system 3 to determine another data. . Figures 83 and 84 illustrate the principles of such an embodiment.
[0139]
FIG. 83 illustrates an example of execution of the valuable software 2v. In this example, during execution of the valuable software 2v, two algorithm processes are executed in the data processing system 3 to determine Z and Z '. This processing is represented by Z ← F (X, Y) and Z ′ ← F ′ (X ′, Y ′).
[0140]
FIG. 84 shows an example of an implementation of the process according to the invention in which the two algorithmic operations selected in FIG. In this example, during execution of the first execution part 2pes of the protected software 2p in the data processing system 3, if the unit 6 is present, as described above, the trigger command CDCR having the renamed order is used.1~ CDCRNIs equivalent to determining Z and the trigger command CDCR 'with the renamed order1~ CDCR 'MIs equivalent to determining Z ′. As shown in the figure, the trigger command CDCR 'having the renamed order1~ CDCR 'MCommand with the renamed order, CDCR1~ CDCRNIs not executed continuously. That is, in this example, the CDCR1, Inserted code portion, CDCR '1, CDCR2, Inserted code portion, CDCR '2, CDCR '3, Inserted code portion, CDCR '4, CDCR3, CDCR4, ..., CDCRN, CDCR 'MIs executed.
[0141]
Note the following: That is, during the execution of the first execution part 2pes part of the protected software 2p, the trigger command with the renamed order executed in the data processing system 3 triggers in the unit 6 the restoration of the identity of the corresponding dependent function. And then trigger execution of this dependent function. Thus, if unit 6 is present, this part will be executed correctly, and as a result, the protected software 2p will be fully functional.
[0142]
FIG. 85 shows an execution trial example of the protected software 2p when the unit 6 does not exist. In this example, during execution of the first execution part 2pes of the protected software 2p in the data processing system 3, even if a trigger command having a renamed order is executed at each time, since the unit 6 does not exist, the order is restored. Nor can the execution of the corresponding dependent function be triggered. Therefore, the value to be substituted for the variable Z cannot be determined correctly.
[0143]
Therefore, if the unit 6 is not present, at least one request by the first execution part 2pes of the protected software 2p for retrieving the order and triggering execution of the dependent function in the unit 6 cannot be correctly performed. , At least this part is not executed correctly, so that the protected software 2p does not function completely.
[0144]
With this protection principle by renaming, examining the triggered command with the renamed order in the protected software 2p does not identify the identity of the dependent function that needs to be executed in unit 6. It should be noted that order renaming is performed when changing the valuable software 2v to the protected software 2p.
[0145]
A variant of the rename protection principle defines for at least one dependent function a set of dependent functions that are the same in terms of algorithm, but are triggered by different trigger commands with renamed orders. In this variant, at least one algorithmic operation using the dependent function is split into the dependent functions. Rather than the same dependent function appearing multiple times, at least one of these dependent functions is replaced by the same group of dependent functions. To accomplish this, the trigger command with the renamed order is modified to allow for the replacement of the dependent function with the same group of dependent functions. That is, two dependent functions of the same group have different orders and consequently have different trigger commands with the renamed orders. Further, even if the protected software 2p is examined, it cannot be found that the algorithm of the called dependent function is the same.
[0146]
In a first preferred variant of the principle of protection by rename, for at least one dependent function, a group of dependent functions whose algorithm is the same is defined. This definition is performed by concatenating information defining the functional part of the dependent function executed in the unit 6 with the noise field.
[0147]
In a second preferred variant of the principle of protection by rename, for at least one dependent function, the use of an identification field defines a set of dependent functions whose algorithm is the same.
[0148]
In a preferred variant of the principle of protection by renaming, an order renaming method defines an encryption method by which an order can be encrypted and converted into a renamed order. It must be remembered that order renaming is performed in the protection phase P. In this preferred variant, the reconstructing means 20 are means for implementing a decoding method which can decode the renamed order and restore the identity of the dependent function performed in the unit 6. This restoring means is implemented in the unit 6 and can have software or hardware properties. This restoring means 20 is required in the use phase U each time a trigger command with the renamed order is executed in the data processing system 3 in order to trigger the execution of the dependent function in the unit 6.
[0149]
The purpose of the protection process according to another advantageous characteristic of the invention is to implement a protection principle called << conditional branch >>. This implementation will be described with reference to FIGS.
[0150]
In the implementation of the protection principle by conditional branch, at least one conditional branch BC is selected in the source 2 vs. of the valuable software. Also, at least one portion of the source 2vs of the valuable software including at least one selected conditional branch BC is selected.
[0151]
Next, at least one selected portion of the source 2v of the valuable software is modified to obtain the source 2ps of the protected software. As a result of this change, during execution of the protected software 2p, in particular, the following occurs.
The at least one part of the first execution part 2pes executed in the data processing system 3 takes into account that the function of the at least one selected conditional branch BC is executed in the unit 6;
The second execution part 2peu executed in the unit 6 performs at least the function of the at least one selected conditional branch BC and the information enabling the first execution part 2pes to continue execution at the selected spot; The handling is left to the data processing system (3).
[0152]
The first execution part 2pes of the protected software 2p executed in the data processing system 3 executes the conditional branch command. This command triggers in unit 6 the execution of the remotely processed conditional branch bc by the second execution part 2peu. The function of this conditional branch is the same as the function of the selected conditional branch BC.
[0153]
FIG. 90 shows an execution example of the valuable software 2v. In this example, during execution of the valuable software 2v in the data processing system 3, a spot where execution of the valuable software 2v is continued at a specific time, that is, three spots B1, B2Or B3Is specified by the conditional branch BC to the valuable software 2v. That is, the conditional branch BC is1, B2Or B3To determine where the software execution should continue.
[0154]
FIG. 91 shows an implementation of the present invention where the conditional branch selected for remote processing in unit 6 is a conditional branch BC. In this example, if the unit 6 exists during the execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1In the conditional branch command CBC1Is executed. This command triggers the execution in the unit 6 by the second execution part 2peu of the remotely processed conditional branch bc, which is the same in terms of algorithm as the conditional branch BC. This conditional branch command CBC1Is represented as TRIG (bc).
・ Time t2, The spot where the first execution part 2pes is selected, ie, B1, B2Or B3Is transmitted from the unit 6 to the data processing system 3 so that execution can be continued.
[0155]
Note the following: That is, during the execution of the first execution part 2pes portion of the protected software 2p, the conditional branch command executed in the data processing system 3 triggers the execution of the corresponding remotely processed conditional branch in the unit 6. Thus, if unit 6 is present, this part will be executed correctly, and as a result, the protected software 2p will be fully functional.
[0156]
FIG. 92 shows an example of an execution trial of the protected software 2p when the unit 6 does not exist. In this example, during execution of the first execution part 2pes of the protected software 2p in the data processing system 3, the following is performed.
・ Time t1In the conditional branch command CBC1Does not trigger the execution of the remotely processed conditional branch bc because the unit 6 does not exist.
・ Time t2Since the unit 6 does not exist, the transfer of information that allows the first execution part 2pes to continue execution at the selected spot fails.
[0157]
For this reason, if unit 6 is not present, at least one request by the part of the first execution part 2pes for triggering the execution of the remotely processed conditional branch in unit 6 cannot be performed correctly, so at least this part Is not executed correctly, so that the protected software 2p does not function completely.
[0158]
In the preceding description with reference to FIGS. 90-92, it is the object of the subject of the present invention that the conditional branch be processed remotely in unit 6. Of course, the preferred embodiment of the present invention can be implemented if the unit 6 remotely processes conditional branch sequences having overall functions corresponding to all functions of the remotely processed conditional branches. By executing the entire function of the remotely processed conditional branch sequence, the data processing system 3 leaves the handling of information that enables the first execution part 2pes of the protected software 2p to continue execution at the selected spot. be able to.
[0159]
In the preceding description with reference to FIGS. 40-92, five different software protection principles have been shown as being independent of one another. The protection process according to the invention is implemented using the principle of protection by elementary functions and possibly combining this principle with one or more further protection principles. If the principle of protection by elementary functions is complemented by implementing at least one other principle of protection, the principle of protection by elementary functions is protected by variables and / or by detection and enforcement and / or renamed. And / or by the conditional branching protection principle.
[0160]
Also, when implementing the protection principle by detection and enforcement, this protection principle can be supplemented by the protection principle by rename and / or the protection principle by conditional branching.
[0161]
Also, when implementing the protection principle by the rename, this protection principle can be complemented by the protection principle by the conditional branch.
[0162]
In a preferred variant, the principle of protection by elementary functions is complemented by the principle of protection by variables, the principle of protection by variables is complemented by the principle of protection by detection and enforcement, the principle of protection by detection and enforcement is complemented by the principle of protection by renames, The principle of protection by rename is complemented by the principle of protection by conditional branching.
[0163]
If another protection principle is applied to supplement the protection principle by the basic function, the following changes need to be made to the above explanation in consideration of the implementation combining protection principles.
-The word "balnable software" needs to be understood in the sense of software that is vulnerable in the context of the protection principles described above. Thus, where the protection principle has already been applied to the valuable software, the expression "barnable software" must be understood in the sense of "software protected by the protection principle already applied".
-The term protected software needs to be understood in the sense of software that is protected in the context of the protection principles described above. Therefore, if the protection principle has already been applied, the expression "protected software" must be understood in the sense of "new version of the protected software".
-Also, when choosing to implement the protection principle described above, it is necessary to consider the choice of implementing the protection principle that has already been applied.
[0164]
In the following description, the implementation of the protection process according to the invention will be more clearly understood. This protection process according to the invention more precisely consists of the following, as shown in FIG.
First, the protection phase P in which the varnable software 2v is changed to become the protected software 2p
Next, a use phase U in which the protected software 2p is used. In this use phase U, the following is performed.
-If a unit 6 is present, each time the part of the first execution part 2pes in the data processing system 3 requests, the requested function is executed in the unit 6, so that this part is executed correctly and as a result The protection software 2p is fully functional.
If the unit 6 is not present, even if there is a request by the part of the first execution part 2pes for execution of the function in the unit 6, this request cannot be fulfilled correctly, so at least this part will not be executed correctly, and , The protected software 2p does not function completely.
• Replenishment phase R, if applicable. In this replenishment phase R, at least one additional use of the functions protected by the implementation of the second preferred variant of the protection by detection and enforcement principle, which uses measured variables as characteristics, is permitted.
[0165]
The protection phase P consists of two protection sub-phases P1And P2Can be divided into The first protection subphase is the preceding protection subphase P1And does not depend on the balunable software 2v to be protected. The second protection subphase is a subsequent protection subphase P2And depends on the balunable software 2v to be protected. Early protection sub-phase P1And subsequent protection subphase P2Can be conveniently performed by two different persons or two different teams. For example, one person or one company developing a software protection system may have a prior protection subphase P1And a person or company that develops software that requires protection may require a subsequent protection subphase P2Can be performed. Naturally, the advance protection subphase P1And subsequent protection subphase P2Can be performed by the same person or team.
[0166]
Early protection sub-phase P1Has several stages S11, ..., S1iConsists of Various tasks and jobs are executed for each stage.
[0167]
This advanced protection subphase P1The first step is “definition step S11". This definition stage S11Then, the following is performed.
・ The following are selected.
The type of unit 6; As an illustrative example, a unit 6, a chip card reader 8, and a chip card 7 associated with the reader may be selected.
Transfer means 12,13; This transfer means is provided in each of the data processing system 3 and the unit 6 in the use phase U, and transfers data between the data processing system 3 and the unit 6.
If the protection process according to the invention implements the protection principle by elementary functions, the following is also defined:
A basic function set including basic functions that can be executed in unit 6
A basic command set for this basic function set. This basic command is executed in the data processing system 3 and can trigger the execution of the basic function in the unit 6.
If the protection process according to the invention implements the detection and enforcement protection principle, the following is also defined:
At least one software execution characteristic that can be monitored at least partially by the unit 6;
-At least one criterion to be followed for at least one software execution characteristic;
Detection means 17 mounted on the unit 6 and capable of detecting that at least one software execution characteristic does not comply with at least one relevant criterion
An enforcement means 18 implemented in the unit 6 for notifying the data processing system 3 if at least one criterion is not observed and / or changing the execution of the software.
If the protection process according to the invention implements the detection and enforcement protection principle, which uses software-executed measurement variables as characteristics, the following is also defined:
− Measurement variables of the use of software functions as software execution characteristics that can be monitored;
-At least one threshold value associated with each measurement variable, as a criterion to be followed
An enabling means by which at least one measurement variable can be updated
If the protection process according to the invention implements the first preferred variant of the detection and enforcement protection principle, which uses software-executed measurement variables as properties, the following is also defined:
-Multiple relevant threshold values for at least one measurement variable
-Various enforcement measures corresponding to each of these thresholds;
If the protection process according to the invention implements a second preferred variant of the detection and enforcement protection principle, which uses a software-executed measurement variable as a characteristic, at least one additional use is monitored by the measurement variable A supplementary means that can be added to at least one software function to be performed is also defined.
If the protection process according to the invention implements the detection and enforcement protection principle using a software usage profile as a characteristic, the following is also defined:
-Software usage profiles as software execution characteristics that can be monitored;
-At least one characteristic of software execution as a standard to be followed;
If the protection process according to the present invention implements the detection and enforcement protection principle using execution chain monitoring as the execution feature to be adhered to, the following is also defined:
An instruction set comprising instructions that can be executed in the unit 6
The instruction command set for this instruction set. This instruction command is executed in the data processing system 3 and can trigger the execution of the instruction in the unit 6.
-Instruction chains as usage profiles.
The expected chain of instruction execution as an execution feature;
Detection means 17 which can detect that the instruction chain is not what is expected;
If the instruction chain is not the expected one, notify the data processing system 3 to that effect and / or change the function of the part of the protected software 2p;
If the protection process according to the invention implements a preferred variant of the protection by detection and enforcement principle using execution chain monitoring as the execution feature to be adhered to, the following is also defined:
An instruction set comprising at least part of an instruction that works with a register and uses at least one operand to return a result;
For at least some of the instructions that work with registers, the following are defined:
> Part PF that defines the function of the instruction
> The part that defines the expected chain of instruction execution and includes the following bit fields:
◇ Instruction identification field CII
· The following fields for each operand of the instruction
* Flag field CDk
* Expected identification field CIP of operandk
A generation identification field CIG for each register mounted on the exploitation means and used in the instruction set;v. This field automatically stores the identity of the last instruction that returned a result in this register.
During execution of the instruction, for each operand, a flag field CDkRequest the generation identification field CIG corresponding to the register used in this operand.vIs the expected identification field CIP of the origin of this operandkDetecting means 17 capable of checking whether or not equal to
An enforcement means 18 which can change the result of the instruction if at least one checked equivalence is false.
If the protection process according to the invention implements the protection principle by rename, the following is also defined:
A basic or command command as a trigger command
-Basic functions or instructions as dependent functions;
At least one argument (as an order) of a trigger command, which at least partially corresponds to the information transferred by the data processing system 3 to the unit 6 to trigger the execution of the corresponding dependent function.
-An order renaming method, in which the order can be renamed to obtain a trigger command with the renamed order;
Restoration means 20 used in unit 6 in use phase U and capable of restoring the dependent function to be executed from the renamed order
If the protection process according to the invention implements a variant of the protection principle by rename, for at least one dependent function, the dependent functions that are the same in terms of algorithm but whose renamed order is triggered by a different trigger command are also Defined.
If the protection process according to the invention implements one of the preferred embodiments of the variant of the protection principle by rename, for at least one of the dependent functions, the set of dependent functions whose algorithm is the same is also defined by:
By concatenating the noise field with information defining the functional part of the dependent function to be performed in unit 6
Or the instruction identification field CII and the expected identification field CIP of the operandkBy using
If the protection process according to the invention implements a preferred variant of the protection principle by rename, the following is also defined:
-An encryption method for encrypting the order, as an order rename method.
Restoration means 20 implementing a decoding method for decoding the renamed order and restoring the identity of the dependent function to be performed in unit 6
[0168]
Early protection sub-phase P1In the definition stage S11Followed by "Construction stage S12Followed by a stage called "". This construction stage S12, The transfer means 12, 13 are constructed and, if appropriate,11Utilization means corresponding to the definition of are also constructed.
[0169]
Therefore, this construction stage S12The following is performed in.
Transfer means 12, 13 capable of transferring data between the data processing system 3 and the unit 6 in the use phase U are constructed.
A utilization means is built which also enables the execution of the basic functions of the basic function set by the unit 6 in the use phase U.
• If the principle of protection by detection and enforcement is also implemented, the following will be established.
-Utilization means that also enable the unit 6 to implement the detection means 17 and the forcing means 18 in the use phase U
-Utilization means (if applicable) that also enable the implementation of the activation means by the unit 6 in the use phase U
-Utilization means (possible) that also allow the implementation of replenishment measures by the unit 6 in the use phase U
Exploitation means (possible) which also enable the execution of the instructions of the instruction set by the unit 6 in the use phase U;
In the case where the principle of protection by rename is also implemented, a utilization means is constructed which enables the unit 6 to implement the restoration means in the use phase U.
[0170]
The construction of the utilization means is usually performed by the program development unit, and the definition step S11The intervened definition is taken into account. Such a unit will be described with reference to FIG.
[0171]
Early protection sub-phase P1In the construction stage S12Followed by “Pre-customization stage SThirteen"May follow. This pre-customization stage SThirteenAt, at least a portion of the transfer means 13 and / or the utilization means are uploaded to at least one blank unit 60 to obtain at least one pre-customized unit 66. It should be noted that once a portion of the leverage has been transferred to the pre-customized unit 66, that portion cannot be directly accessed from outside of the pre-customized unit 66. The transfer of the utilization means to the blank unit 60 can be performed by a suitable pre-customization unit. The pre-customization unit will be described with reference to FIG. If the pre-customized unit 66 consists of the chip card 7 and its reader 8, the pre-customization involves only the chip card 7.
[0172]
Early protection sub-phase P1In the definition stage S11After, and possibly in the construction phase S12After the “Tool creation stage S14"May follow. This tool creation stage S14In, tools are created that enable the creation of protected software and automate software protection. With such tools, you can:
-In the balunable software 2v to be protected, assist the following selection or make the following selection automatically.
An algorithmic process which can be divided into steps which can be processed remotely by the unit 6
-Parts that can be changed;
-Variables that can be processed remotely by unit 6 (if the principle of protection by variables is also implemented)
The execution characteristics to be monitored and, in some cases, algorithmic processing that can be broken up into instructions that can be processed remotely in the unit 6 (if the principle of protection by detection and enforcement is also implemented)
Algorithmic processing that can be divided into dependent functions that can be processed remotely in the unit 6 and that the order of trigger commands can be renamed (if the principle of protection by rename is also implemented)
A conditional branch with a function that can be remotely processed by the unit 6 (when the principle of protection by the conditional branch is also implemented)
• In some cases, assist in generating protected software or automate software protection.
[0173]
These various tools can be executed individually or in combination. Each tool can take various forms, such as a preprocessor, assembler, compiler, and the like.
[0174]
Early protection sub-phase P1Followed by a subsequent protection subphase P depending on the valuable software 2v to be protected2Followed by This subsequent protection subphase P2Is also composed of multiple stages. The first stage corresponding to the implementation of the principle of protection by variables is the "21". This creation stage S21Now, the definition stage S11The selection made in is used. This selection and the tool creation stage S14The protected software 2p is created by executing the following processing using the tool (depending on the case) constructed in the above.
-During execution of the valuable software 2v, use at least one operand and select at least one algorithmic operation capable of obtaining at least one result.
Select at least one portion of the source 2vs of the valuable software that includes at least one selected algorithmic operation.
-Protect from the source 2vs of the varnable software by modifying at least one selected part of the source 2vs of the varnable software to obtain at least one modified part of the source 2ps of the protected software. Create 2ps of software source. This change is the following processing.
> During execution of the protected software 2p, the first execution part 2pes is executed in the data processing system 3, and the second execution part 2peu is executed in the unit 6 obtained from the blank unit 60 after information upload. .
> At least one function of the at least one selected algorithmic processing is performed by the second execution part 2peu.
> The at least one selected algorithm process is split, whereby during the execution of the protected software 2p, said algorithm process is executed by the second execution part using the basic functions.
> For at least one selected algorithmic operation, the basic commands are integrated into the protected software source 2ps, whereby during the protected software 2p execution each basic command is executed by the first execution part 2pes Then, in the unit 6, the execution of the basic function by the second execution part 2peu is triggered.
A sequence of basic commands is selected from a set of sequences enabling execution of the protected software 2p.
> The first object part 2pos of the protected software 2p from the protected software source 2ps. The first object part 2pos is an object part in which the first execution part 2peu appears during the execution of the protected software 2p, and the first execution part 2peu is executed by the data processing system 3 and at least one of the first execution part 2peu is executed. The part takes into account that the basic commands are executed according to the selected sequence.
> The second object part 2pou of the protection software 2p including the utilization means, which has been triggered by the first execution part (2pes) during execution of the protection software (2p) after uploading to the blank unit (60). When the function is executed, the second execution part (2peu) appears.
[0175]
Of course, the principle of protection by variables according to the invention can be applied directly during the development of new software, without having to realize the variable software 2v in advance. In this way, the protected software 2p is directly obtained.
[0176]
Subsequent protection subphase P2, If at least one further protection principle is applied in addition to the protection principle by the basic function,22Is executed. This change stage S22Now, the definition stage S11The intervened definition is used. This definition and the tool creation phase S allow the implementation of the protection principle according to one of the previously defined arrangements.14The protected software 2p is changed using the tool (depending on the case) constructed in the above.
[0177]
When implementing the protection principle using variables, the protected software 2p is changed by the following processing.
During the execution of the protected software 2p, select at least one variable used in at least one selected algorithm process that partially defines the state of the protected software.
Modify at least one selected part of the protected software source 2ps. This change is such that during execution of the protected software 2p, there is at least one selected variable or at least one copy of the selected variable in the unit 6.
・ Create the following.
The first object part 2pos of the protected software 2p, wherein during execution of the protected software (2p), at least one part of the first execution part 2pes is a unit of at least one variable or at least one copy of the variable; Considering that it exists in 6
The second object part 2pou of the protected software 2p, after uploading to the unit 6, during execution of the protected software 2p, a second execution part 2peu appears, whereby at least one selected variable or selection Such that at least one copy of the assigned variable is also present in unit 6.
[0178]
When the protection principle by detection and enforcement is implemented, the protected software 2p is changed by the following processing.
Select at least one software execution characteristic to be monitored from the software execution characteristics that can be monitored.
Select at least one criterion to be followed for at least one selected software execution characteristic.
• In the protected software source 2ps, select a primitive function for which at least one selected software execution characteristic is monitored.
Modify at least one selected part of the protected software source 2ps. As a result of this change, during execution of the protected software 2p, at least one selected execution characteristic is monitored by the second execution part 2peu. Further, when the standard is not observed, the data processing system 3 is notified of the fact and / or the execution of the protected software 2p is changed.
Create a second object part 2pou of the protected software 2p that includes a utilization unit that also implements the detection unit 17 and the enforcement unit 18. As a result of the creation of the second object part 2pou, after uploading to the unit 6, at least one software execution characteristic is monitored during execution of the protected software 2p. Further, when the standard is not observed, the data processing system 3 is notified of the fact and / or the execution of the protected software 2p is changed.
[0179]
In the implementation of the protection principle by detection and enforcement, which uses measured variables of software execution as characteristics, the protected software 2p is modified by the following process.
Select at least one measurement variable of the usage of at least one function of the software as the software execution characteristic to be monitored.
・ Select the following.
-At least one function of the protected software 2p, capable of monitoring usage using measured variables.
-At least one measurement variable used to quantify the use of this function.
-At least one threshold value associated with the selected measurement variable corresponding to the limit of use of this function.
-At least one method of updating the selected measurement variable depending on the use of this function.
Modify at least one selected part of the protected software source 2ps. As a result of this change, during the execution of the protected software 2p, the measurement variables are validated by the second execution part 2peu according to the usage of this function, so that at least one threshold violation is taken into account.
[0180]
In the implementation of the first preferred variant of the detection and enforcement protection principle, which uses measured variables as properties, the protected software 2p is modified by the following process.
Select at least one measurement variable in the protected software source 2ps that needs to be associated with multiple thresholds corresponding to various usage limits of the feature.
Select at least two thresholds associated with the selected measurement variable.
Modify at least one selected part of the protected software source 2ps. As a result of this change, during execution of the protected software 2p, the second execution part 2peu will individually consider exceeding various thresholds.
[0181]
In the implementation of the second preferred variant of the detection and enforcement protection principle, which uses measured variables as properties, the protected software 2p is modified by the following process.
Select at least one selected measurement variable in the protected software source 2ps that must be able to limit the use of the function and allow at least one additional use.
Change at least one selected part. As a result of this change, it is possible to allow at least one additional use of at least one function corresponding to the selected measurement variable in a phase called replenishment.
[0182]
In the implementation of the protection principle by detection and enforcement using a software usage profile as a characteristic, the protected software 2p is modified by the following process.
Select at least one software usage profile as a software execution characteristic to be monitored.
Select at least one performance feature that the at least one selected usage profile must adhere to.
Modify at least one selected part of the protected software source 2ps. As a result of this change, during execution of the protected software 2p, the second execution part 2peu follows all the selected execution features.
[0183]
In the implementation of the detection and enforcement protection principle, which uses execution chain monitoring as the execution feature to be adhered to, the protected software 2p is modified by the following process.
Modify at least one selected portion of the protected software source 2ps by the following process.
-Convert basic functions into instructions.
-Specify the chain that at least some of the instructions must adhere to during execution in unit 6;
Convert the basic command into an instruction command corresponding to the instruction used.
[0184]
When implementing the protection principle by rename, the protected software 2p is changed by the following processing.
-Select a trigger command in the protected software source 2ps.
Modify at least one selected part of the protected software source 2ps by renaming the order of the selected trigger command to hide the identity of the corresponding dependent function.
・ Create the following.
A first object part 2pos of the protected software 2p. As a result of the creation of the first object part 2pos, during execution of the protected software 2p, a trigger command having the renamed order is executed.
A second object part 2pou of the protected software 2p comprising utilization means which also implements the restoration means 20. As a result of this second object part 2pou being created, after the upload to the unit 6, during execution of the protected software 2p, the identity of the dependent function whose execution is triggered by the first execution part 2pes is changed by the second execution part 2peu. It is restored and the dependent function is executed by the second execution part 2peu.
[0185]
In the implementation of the modification of the protection principle by the rename, the protected software 2p is changed by the following processing.
Select at least one trigger command with the renamed order in the protected software source 2ps.
The replacement of the renamed order of at least one selected trigger command with the renamed order with another renamed order and triggering the same group of dependent functions, so that the protected software source 2ps Modify at least one selected part.
[0186]
When implementing the protection principle by the conditional branch, the protected software 2p is changed by the following processing.
Select at least one conditional branch to be executed in at least one selected algorithm process in the protected software source 2ps.
Modify at least one selected part of the protected software source 2ps. As a result of this change, during the execution of the protected software 2p, the function of at least one selected conditional branch is executed in the unit 6 by the second execution part 2peu.
・ Create the following.
A first object part 2pos of the protected software 2p. As a result of the creation of this first object part 2pos, at least one selected conditional branch function is executed in the unit 6 during execution of the protected software 2p.
A second object part 2pou of the protected software 2p. As a result of the creation of the second object part 2pou, after uploading to the unit 6, during execution of the protected software 2p, a second execution part 2peu for executing at least one selected conditional branch function appears. Become.
[0187]
In the implementation of the preferred embodiment of the principle of protection by conditional branching, the protected software 2p is modified by the following process.
Select at least one selected conditional branch sequence in the source 2 ps of the protected software.
Modify at least one selected part of the protected software source 2ps. As a result of this change, during execution of the protected software 2p, the overall function of the at least one selected conditional branch sequence is executed in the unit 6 by the second execution part 2peu.
・ Create the following.
A first object part 2pos of the protected software 2p. As a result of the creation of the first object part 2pos, the function of at least one selected conditional branch sequence is executed in the unit 6 during execution of the protected software 2p.
A second object part 2pou of the protected software 2p. As a result of the creation of this second object part 2pou, after uploading to the unit 6, during execution of the protected software 2p, a second execution part 2peu that executes the overall function of at least one selected conditional branch sequence To appear.
[0188]
Of course, the protection principle according to the invention can be applied directly during the development of new software without having to execute intermediate protected software in advance. In this way, the creation step S21And change stage S22At the same time, the protected software 2p can be directly obtained.
[0189]
Subsequent protection subphase P2In the creation step S of the protected software 2p21After and possibly in the change phase S22Followed by “Customization Step S23Followed by a stage called "". This customization stage S23The second object part 2pou including the exploitation means is uploaded to at least one blank unit 60 to obtain at least one unit 6, or the exploitation means is used to acquire at least one unit 6 Is uploaded to the at least one pre-customized unit 66. By uploading the customization information, at least one unit 6 can be operated. It should be noted that once a part of this information has been transferred to the unit 6, that part cannot be directly accessed from outside this unit 6. The transfer of the customization information to the blank unit 60 or the pre-customized unit 66 can be performed by a suitable customizing unit. The customizing unit will be described with reference to FIG. If the unit 6 is made up of a chip card 7 and its reader 8, customization concerns only the chip card 7.
[0190]
Various technical means in implementing the protection phase P will be described in more detail with reference to FIGS. 110, 120, 130, 140, and 150.
[0191]
FIG. 110 shows the construction stage S121 illustrates an embodiment of a system 25 in which can be implemented. This construction stage S12Now, the definition stage S11The intervened definition is taken into account, and the utilization means for the transfer means 12, 13 and possibly the unit 6 are constructed. Such a system 25 generally includes a computer unit including programs such as a file editor, an assembler, a preprocessor, a compiler, an interpreter, a debugger, and a link editor. A program development unit or workstation.
[0192]
FIG. 120 shows an embodiment of the pre-customization unit 30. The pre-customization unit 30 can upload the transfer means 13 and / or the utilization means at least partially to the at least one blank unit 60 to obtain the pre-customized unit 66. The pre-customizing unit 30 includes a read / write means 31 capable of electrically pre-customizing the blank unit 60 in order to obtain the pre-customized unit 66 to which the transfer means 13 and / or the utilization means have been uploaded. Have been. Also, the physical customizing means 32 of the blank unit 60, which can take the form of a printer, for example, can be included in the pre-customizing unit 30. If the unit 6 consists of a chip card 7 and its reader 8, pre-customization generally involves only the chip card 7.
[0193]
FIG. 130 illustrates an embodiment of a system 35 that can perform the creation of tools that assist in generating protected software and automate software protection. Such a system 35 generally includes a computer form including a system such as a file editor, an assembler, a preprocessor, a compiler, an interpreter, a debugger, and a link editor. A program development unit or workstation.
[0194]
FIG. 140 illustrates an embodiment of a system 40 that allows the protected software 2p to be created directly or the varnable software 2v to be modified to obtain the protected software 2p. The system 40 includes a system unit, a screen, and peripheral devices (such as a keyboard and a mouse), and generates programs such as a file editor, an assembler, a preprocessor, a compiler, an interpreter, a debugger, and a link editor, and generates protected software. A program development unit or workstation, typically in the form of a computer, which includes tools that enable it to assist in software protection and automate software protection.
[0195]
FIG. 150 shows an embodiment of the customizing unit 45. The customizing unit 45 may upload the second object part 2 pou to at least one blank unit 60 to obtain at least one unit 6, or upload the second object part 2 pou to obtain at least one unit 6. Portions can be uploaded to at least one pre-customized unit 66. The customizing unit 45 includes read / write means 46 that can electrically customize at least one blank unit 60 or at least one pre-customized unit 66 to obtain at least one unit 6. At the end of this customization, unit 6 contains the information needed to execute protected software 2p. The customizing unit 45 can also include a physical customizing means 47 for at least one unit 6, which can for example take the form of a printer. If the unit 6 consists of a chip card 7 and its reader 8, customization generally involves only the chip card 7.
[0196]
The following improvements can be made to the protection process according to the invention.
The second object part 2 pou of the protected software 2 p can be modified to use a plurality of allocated processing / storage units together. This allows the execution of the protected software 2p when used together, and prevents the use of the protected software 2p when at least one of the processing / storage units does not exist.
・ Similarly, pre-customization stage SThirteenAfter, customization stage S23In the above, by including a part of the second object part 2 pou necessary for converting the pre-customized unit 66 into the unit 6 in the processing / storage unit used in the customization unit 45, the second object part 2 pou Access to some can be restricted. Of course, part of this second object part 2 pou can be distributed to a plurality of processing / storage units. Thereby, access to a part of the second object part 2 pou can be permitted only when the processing / storage unit is used together.
[Brief description of the drawings]
[0197]
FIG. 10 is a functional block diagram illustrating various representations of software that are not protected and protected by a process according to the present invention, respectively.
FIG. 11 is a functional block diagram illustrating various representations of software not protected and protected by a process according to the present invention, respectively.
FIG. 20 shows by way of example various embodiments of an apparatus for implementing a process according to the invention.
FIG. 21 shows by way of example various embodiments of an apparatus for implementing a process according to the invention.
FIG. 22 shows by way of example various embodiments of an apparatus for implementing a process according to the invention.
FIG. 30 is a functional block diagram that clearly illustrates the general principles of the process according to the present invention.
FIG. 31 is a functional block diagram that clearly illustrates the general principles of the process according to the present invention.
FIG. 40 illustrates a protection process according to the present invention that implements the principle of protection by variables.
FIG. 41 illustrates a protection process according to the invention implementing the protection principle by variables.
FIG. 42 illustrates a protection process according to the invention implementing the principle of protection by variables.
FIG. 43 illustrates a protection process according to the present invention that implements the protection principle by variables.
FIG. 60 shows a protection process according to the invention implementing the protection principle by elementary functions.
FIG. 61 illustrates a protection process according to the invention implementing the protection principle by elementary functions.
FIG. 62 illustrates a protection process according to the invention implementing the protection principle by elementary functions.
FIG. 63 shows a protection process according to the invention implementing the protection principle by elementary functions.
FIG. 64 shows a protection process according to the invention implementing the protection principle by elementary functions.
FIG. 70 illustrates a protection process according to the present invention that implements the detection and enforcement protection principle.
FIG. 71 illustrates a protection process according to the present invention that implements the protection principle by detection and enforcement.
FIG. 72 illustrates a protection process according to the present invention that implements the principle of protection by detection and enforcement.
FIG. 73 illustrates a protection process according to the present invention that implements the principle of protection by detection and enforcement.
FIG. 74 illustrates a protection process according to the present invention that implements the principle of protection by detection and enforcement.
FIG. 80 illustrates a protection process according to the present invention that implements the protection principle by rename.
FIG. 81 illustrates a protection process according to the present invention that implements the protection principle by rename.
FIG. 82 illustrates a protection process according to the present invention that implements the protection principle by rename.
FIG. 83 illustrates a protection process according to the present invention that implements the protection principle by rename.
FIG. 84 illustrates a protection process according to the present invention that implements the protection principle by rename.
FIG. 85 illustrates a protection process according to the present invention that implements the protection principle by rename.
FIG. 90 illustrates a protection process according to the present invention that implements the protection principle by conditional branching.
FIG. 91 illustrates a protection process according to the invention that implements the protection principle by conditional branching.
FIG. 92 illustrates a protection process according to the present invention that implements the protection principle by conditional branching.
FIG. 100 illustrates various implementation phases of the present inventive subject matter.
FIG. 110 illustrates an embodiment of a system that enables implementation of a build phase of a protection phase according to the present invention.
FIG. 120 shows an embodiment of a pre-customization unit used in the protection process according to the invention.
FIG. 130 illustrates an embodiment of a system that enables implementation of a tool creation phase of a protection phase in accordance with the present invention.
FIG. 140 shows an embodiment of a system enabling the implementation of a protection process according to the invention.
FIG. 150 shows an embodiment of a customization unit used in the protection process according to the invention.

Claims (35)

少なくとも記憶手段(15)と処理手段(16)とを含む少なくとも1つのブランクユニット(60)を使用して、データ処理システム(3)上で作動するバルナラブル・ソフトウェア(2v)をその無許可使用に対して保護するプロセスであって、:
→保護フェーズ(P)の間に、
・− 基本機能がユニット(6)において実行され得る基本関数のセット、
− および、前記基本関数のセットに対する基本コマンドであり、データ処理システム(3)で実行され、ユニット(6)における実行をトリガし得る前記基本コマンドのセット、
を定義すること、
・ 前記セットの基本関数を実行することができるユニット(6)に変換することが可能な活用手段を構築すること(前記基本関数の実行はデータ処理システム(3)における実行によってトリガされる)、
・ 被保護ソフトウェア(2p)を、
− バルナラブル・ソフトウェア(2v)の実行の間に、少なくとも1つのオペランドを使用し、少なくとも1つの結果を取得することが可能な少なくとも1つのアルゴリズム処理を選択することによって、
− 少なくとも1つの選択されたアルゴリズム処理を含む、バルナラブル・ソフトウェアのソース(2vs)の少なくとも1つの部分を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの変更された部分を取得するために、バルナラブル・ソフトウェアのソース(2vs)の少なくとも1つの選択された部分を変更することで、バルナラブル・ソフトウェアのソース(2vs)から被保護ソフトウェアのソース(2ps)を作成すること(この変更は、
>被保護ソフトウェア(2p)の実行中に、第1の実行パート(2pes)がデータ処理システム(3)で実行され、第2の実行パート(2peu)が情報のアップロードの後にブランクユニット(60)から取得されるユニット(6)で実行され、
>少なくとも1つの選択されたアルゴリズム処理の少なくとも機能が、第2実行パート(2peu)によって実行され、
>少なくとも1つの選択されたアルゴリズム処理が分割され、これにより保護されたソフトウェア(2p)の実行の間に前記アルゴリズム処理が基本関数を用いて第2実行パートによって実行され、
>少なくとも1つの選択されたアルゴリズム処理に対して、基本コマンドが被保護ソフトウェアのソース(2ps)に統合され、これにより被保護ソフトウェア(2p)実行の間に、各々の基本コマンドが第1の実行パート(2pes)により実行され、ユニット(6)において基本関数の第2実行パート(2peu)による実行をトリガし、
>基本コマンドのシーケンスが被保護ソフトウェア(2p)の実行を可能にするシーケンスのセットのうちから選択される、
ような変更である)によって、
− および、
> 保護されたソフトウェアのソース(2ps)からの被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)(前記第1オブジェクトパート(2pos)は、被保護ソフトウェア(2p)の実行の間中に第1実行パート(2peu)が現れるようなオブジェクトパートであり、第1実行パート(2peu)はデータ処理システム(3)で実行され、その少なくとも1つの部分は選択されたシーケンスに従って基本コマンドが実行されることを考慮する)、
> および、活用手段を含む保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ブランクユニット(60)へのアップロードの後、保護ソフトウェア(2p)の実行中に、第1実行パート(2pes)によってトリガされた基本関数が実行されることによって、第2実行パート(2peu)が現れるようなもの、
を生成することによって、
作成すること、
・ および、ユニット(6)を得る目的で、ブランクユニット(60)に第2オブジェクトパート(2pou)をアップロードすること、を含み、
→ 保護ソフトウェア(2p)が実行される活用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分に含まれる基本コマンドが要求するたびに、ユニット(6)で対応する基本関数を実行することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)における基本関数の実行をトリガすることを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含むプロセス。
Using at least one blank unit (60) comprising at least storage means (15) and processing means (16), the variable software (2v) running on the data processing system (3) for its unauthorized use. Process to protect against:
→ During the protection phase (P),
A set of basic functions whose basic functions can be performed in unit (6);
And-a set of elementary commands for the set of elementary functions, said set of elementary commands being executed in a data processing system (3) and triggering execution in a unit (6);
To define
Building utilization means that can be converted into a unit (6) capable of executing said set of basic functions (the execution of said basic functions is triggered by execution in a data processing system (3));
・ Protected software (2p)
By using at least one operand and selecting at least one algorithmic operation capable of obtaining at least one result during execution of the valuable software (2v)
By selecting at least one part of the source (2 vs.) of the valuable software comprising at least one selected algorithmic processing
-Changing the at least one selected part of the source of the balunable software (2vs) to obtain at least one changed part of the source of the protected software (2ps), thereby obtaining the source of the valuable software; (2vs) create protected software source (2ps) (this change is
> During the execution of the protected software (2p), the first execution part (2pes) is executed in the data processing system (3), and the second execution part (2peu) is executed after the information is uploaded to the blank unit (60). Executed in the unit (6) obtained from
> At least a function of at least one selected algorithmic processing is performed by a second execution part (2peu);
> At least one selected algorithmic process is split, whereby during execution of the protected software (2p) said algorithmic process is executed by a second execution part using a basic function,
> For at least one selected algorithmic operation, the basic commands are integrated into the protected software source (2ps), so that during the protected software (2p) execution, each basic command is first executed Executed by the part (2pes), triggering the execution of the basic function by the second execution part (2peu) in the unit (6),
A sequence of elementary commands is selected from a set of sequences enabling execution of the protected software (2p),
Is such a change)
− And
> The first object part (2pos) of the protected software (2p) from the source of the protected software (2ps) (the first object part (2pos) is the first object part (2pos) during execution of the protected software (2p)). An object part in which one execution part (2peu) appears, the first execution part (2peu) being executed in the data processing system (3), at least one part of which is executed with a basic command according to a selected sequence. Consider that),
And the second object part (2pou) of the protection software (2p) including the utilization means, and after the upload to the blank unit (60), during the execution of the protection software (2p), the first execution part (2pes) ) The execution of the elementary function triggered by) causes a second execution part (2peu) to appear;
By generating
To create,
And uploading a second object part (2 pou) to the blank unit (60) for the purpose of obtaining the unit (6);
→ During the utilization phase (U) where the protection software (2p) is executed,
In the presence of the unit (6), each time a basic command included in a part of the first execution part (2pes) requests, by executing the corresponding basic function in the unit (6), the part is correctly executed. Ensuring that the protected software (2p) is fully functional,
And, in the absence of unit (6), the request cannot be fulfilled in spite of a request by a part of the first execution part (2pes) to trigger the execution of a basic function in unit (6) Thereby ensuring that at least the part is not executed correctly and consequently the protected software (2p) does not function completely;
Including the process.
→ 保護フェーズ(P)の間に、
・ 被保護ソフトウェア(2p)を、
− 被保護ソフトウェア(2p)の実行中に、被保護ソフトウェアの状態を部分的に規定する、少なくとも1つの選択されたアルゴリズム処理で使用される少なくとも1つの変数を選択することによって、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニット(6)に存在するような変更である)によって、
− および、
> 被保護ソフトウェア(2p)の第1オブジェクトパート(2pos)であり、被保護ソフトウェア(2p)の実行中に、第1実行パート(2pes)の少なくとも1つの部分が、少なくとも1つの変数または変数の少なくとも1つのコピーがユニット(6)に存在することも考慮するようなもの、
> および、被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)であり、ユニット(6)へのアップロード後、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)が現れ、それによって、少なくとも1つの選択された変数または選択された変数の少なくとも1つのコピーがユニット(6)にも存在するようになるようなもの、
を生成することによって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、第1実行パート(2pes)の一部分が要求するたびに、ユニット(6)内に存在する変数または変数のコピーを使用することにより、該部分が正しく実行され、結果として、被保護ソフトウェア(2p)が完全に機能するようにすること、
・ および、ユニット(6)の不存在時に、ユニット(6)に存在する変数または変数のコピーを使用することを求める第1実行パート(2pes)の一部分による要求にもかかわらず、該要求を正しく満たすことができないことにより、少なくとも該部分が正しく実行されず、結果として、被保護ソフトウェア(2p)が完全に機能しないようにすること、
を含む請求項1に記載のプロセス。
→ During the protection phase (P)
・ Protected software (2p)
By selecting, during execution of the protected software (2p), at least one variable used in at least one selected algorithmic process that partially defines the state of the protected software;
Altering at least one selected part of the source (2ps) of the protected software (this change may occur during execution of the protected software (2p) by at least one selected variable or selected variable); At least one copy is present in unit (6)).
− And
> The first object part (2pos) of the protected software (2p), wherein during execution of the protected software (2p), at least one part of the first execution part (2pes) has at least one variable or variable Taking into account that at least one copy is present in unit (6),
> And the second object part (2pou) of the protected software (2p), after uploading to the unit (6), during execution of the protected software (2p), a second execution part (2peu) appears, Whereby such that at least one selected variable or at least one copy of the selected variable is also present in unit (6),
By generating
Change,
Including
→ During the use phase (U),
Whenever a portion of the first execution part (2pes) requests in the presence of unit (6), by using the variable or a copy of the variable present in unit (6), that portion is executed correctly, As a result, making the protected software (2p) fully functional;
And, in the absence of unit (6), despite the request by a part of the first execution part (2pes) to use the variable or a copy of the variable present in unit (6), correct the request Failure to fulfill at least the part is not performed correctly, and consequently the protected software (2p) is not fully functional;
The process of claim 1 comprising:
→ 保護フェーズ(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)の機能が変更されるようにすること、
を含む請求項1に記載のプロセス。
→ During the protection phase (P)
-At least one software execution characteristic that can be monitored at least partially in unit (6);
-At least one criterion that at least one software execution characteristic must adhere to;
Detection means (17) implemented in the unit (6) and capable of detecting that at least one software execution characteristic does not comply with at least one relevant criterion;
And enforcement means (18) implemented in the unit (6), which can notify the data processing system (3) when at least one criterion is not adhered to and / or change the execution of the software. ),
To define
Building utilization means that also allow the unit (6) to implement the detection means (17) and the forcing means (18);
And and the protected software (2p)
-By selecting at least one software execution characteristic to be monitored from among the software execution characteristics that can be monitored;
By selecting at least one criterion that at least one selected software execution characteristic must adhere to;
By selecting in the source of protected software (2 ps) a basic function for which at least one selected software execution characteristic is to be monitored,
Altering at least one selected part of the source (2ps) of the protected software (this change is performed during execution of the protected software (2p) if at least one selected execution characteristic is the second execution part); (2peu), a change in which non-compliance with the standards is notified to the data processing system (3) and / or changes in the execution of the protected software (2p))
And generating a second object part (2pou) of the protected software (2p) including a utilization means that also implements the detection means (17) and the enforcement means (18), wherein the second object part (2pou) After the upload to the unit (6), during execution of the protected software (2p), at least one first software execution characteristic is monitored and a notification to the data processing system (3) that the standard has not been complied with. And / or object parts that lead to a change in the execution of the protected software (2p))
Change,
Including
→ During the use phase (U),
-When unit (6) is present,
-Said part of the protected software (2p) operates nominally, as long as all the criteria corresponding to all monitored execution characteristics of all the changed parts of the protected software (2p) are complied with; Allowing the protected software (2p) to operate nominally as a result,
And notifying the data processing system (3) if at least one criterion corresponding to the monitored execution characteristic of a part of the protected software (2p) has not been complied with, and / or Changing the function of the software (2p) part so that the function of the protected software (2p) is changed;
The process of claim 1 comprising:
被保護ソフトウェア(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)の機能が変更されるようにすること、
を含む請求項3に記載のプロセス。
To restrict the use of protected software (2p)
→ During the protection phase (P)
-Software performance characteristics that can be monitored, such as measurement variables for the usage of software functions,
-At least one threshold value associated with each measurement variable,
-And an enabling means capable of updating at least one measurement variable,
To define
Constructing utilization means that also enable the unit (6) to carry out activation means;
And and the protected software (2p)
By selecting at least one measurement variable of the usage of at least one function of the software as a software execution characteristic to be monitored;
-> At least one function of the protected software (2p) whose use can be monitored using the measurement variables,
> At least one measurement variable used to quantify the use of said function,
> At least one threshold value associated with the selected measurement variable corresponding to the usage limit of said function;
> And at least one method of updating selected measurement variables depending on the usage of said function,
By selecting
And modifying at least one selected part of the source (2 ps) of the protected software (this change depends on the usage of said function during the execution of the protected software (2p) By a second execution part (2peu), where at least one threshold crossing is taken into account)
Changing the
Including
→ During the use phase (U), in the presence of the unit (6) and if at least one threshold crossing corresponding to at least one use limit is detected, it is sent to the data processing system (3). Notifying and / or changing the function of the portion of the protected software (2p) so that the function of the protected software (2p) is changed;
The process of claim 3, comprising:
→ 保護フェーズ(P)の間に、
・− 少なくとも1つの計測変数について、いくつかの関連するしきい値、
− および、前記しきい値のそれぞれに対応する相異なる強制手段、
を定義すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、機能の相異なる使用限度に対応するいくつかのしきい値が関連づけられなければならない少なくとも1つの選択された計測変数を選択することによって、
− 選択された計測変数に関連する少なくとも2つのしきい値を選択することによって、
− および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、種々のしきい値の超過が第2実行パート(2peu)によって別様に考慮されるような変更である)によって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、
・ ユニット(6)の存在時に、
− 第1しきい値の超過が検出された場合、被保護ソフトウェア(2p)に対して、対応する機能をそれ以上使用しないように命じること、
− 第2しきい値の超過が検出された場合、被保護ソフトウェア(2p)の対応する機能、および/または、少なくとも一部分を無効にすること、
を含む請求項4に記載のプロセス。
→ During the protection phase (P)
-Some associated thresholds for at least one measurement variable;
-And different forcing means corresponding to each of said thresholds,
To define
And and the protected software (2p)
By selecting in the protected software source (2 ps) at least one selected measurement variable to which several threshold values corresponding to different usage limits of the function must be associated;
By selecting at least two thresholds associated with the selected measurement variable,
And modifying at least one selected part of the source (2 ps) of the protected software (this change may occur during execution of the protected software (2p) if a different threshold is exceeded during the second execution) Part (2 peu) is a change that is considered differently)
Change,
Including
→ During the use phase (U),
-When unit (6) is present,
-Instructing the protected software (2p) not to use the corresponding function anymore if a first threshold is exceeded.
-Deactivating the corresponding function and / or at least part of the protected software (2p) if a second threshold is exceeded.
The process of claim 4 comprising:
→ 保護フェーズ(P)の間に、
・ 計測変数によって監視される少なくとも1つのソフトウェア機能に少なくとも1つの追加使用を認めることが可能な補充手段を定義すること、
・ ユニット(6)が補充手段を実施することも可能にする活用手段を構築すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、少なくとも1つの追加使用を認めることができなければならない機能の使用を制限することが可能な少なくとも1つの選択された計測変数を選択することによって、
− および、少なくとも1つの選択された部分を変更すること(この変更は、補充フェーズと呼ばれるフェーズの間、選択された計測変数に対応する少なくとも1つの機能の少なくとも1つの追加使用が認められるような変更である)によって、
変更すること、
を含み、
→ 補充フェーズの間に、
・機能の少なくとも1つの追加使用を可能にするために、少なくとも1つの選択された計測変数、および/または、少なくとも1つの関連するしきい値を再有効化すること、
を含む請求項4または5に記載のプロセス。
→ During the protection phase (P)
Defining a replenishment measure that allows at least one additional use of at least one software function monitored by the measurement variable;
Building utilization means that also allow the unit (6) to implement replenishment means;
And and the protected software (2p)
By selecting at least one selected measurement variable in the source of the protected software (2 ps) that can limit the use of functions that must be able to allow at least one additional use;
And altering at least one selected portion, such that the alteration permits at least one additional use of at least one function corresponding to the selected measurement variable during a phase called the refill phase. Change)
Change,
Including
→ During the replenishment phase,
Re-enabling at least one selected measurement variable and / or at least one associated threshold to enable at least one additional use of the function;
The process according to claim 4 or 5, comprising:
→ 保護フェーズ(P)の間に、
・− 監視され得るソフトウェア実行特性として、ソフトウェア使用状況プロファイル、
− および、遵守すべき基準として、少なくとも1つのソフトウェア実行特徴、
を定義すること、
・ および、被保護ソフトウェア(2p)を、
− 少なくとも1つのソフトウェア使用状況プロファイルを監視することをソフトウェア実行特性として選択することによって、
− 少なくとも1つの選択された使用状況プロファイルが遵守しなければならない少なくとも1つの実行特徴を選択することによって、
− および、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更すること(この変更は、被保護ソフトウェア(2p)の実行中に、第2実行パート(2peu)がすべての選択された実行特徴を遵守しなければならないような変更である)によって、
変更すること、
を含み、
→ 使用フェーズ(U)の間に、ユニット(6)の存在時に、そして少なくとも1つの実行特徴が遵守されていないことが検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
を含む請求項3に記載のプロセス。
→ During the protection phase (P)
-Software usage characteristics that can be monitored include software usage profiles,
-And at least one software execution characteristic,
To define
And and the protected software (2p)
By choosing to monitor at least one software usage profile as a software execution characteristic;
-By selecting at least one execution characteristic that the at least one selected usage profile must adhere to;
And modifying at least one selected part of the source (2 ps) of the protected software (this change is performed during execution of the protected software (2p) by the second execution part (2 peu) making all selections) Changes that must adhere to the implemented performance features)
Change,
Including
→ Notify the data processing system (3) during the use phase (U) upon the presence of the unit (6) and if it is detected that at least one execution feature has not been observed, and And / or changing the function of the protected software (2p) so that the function of the protected software (2p) is changed;
The process of claim 3, comprising:
→ 保護フェーズ(P)の間に、
・− ユニット(6)で実行され得る命令のセット、
− 前記命令のセットに対する命令コマンドのセットであり、データ処理システム(3)で実行され、ユニット(6)で命令の実行をトリガし得る前記命令コマンドのセット、
− 使用状況プロファイルとして、命令の連鎖、
− 実行特徴として、命令の実行に対して期待される連鎖、
− 検出手段(17)として、命令の連鎖が期待されるものに対応しないことを検出することが可能な手段、
− および、強制手段(18)として、命令の連鎖が期待されるものに対応しない場合にデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更することが可能な手段、
を定義すること、
・ ユニット(6)が命令セットの命令を実行することも可能にする活用手段を構築すること(該命令の実行はデータ処理システム(3)における命令コマンドの実行によりトリガされる)、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を、
> 基本関数を命令に変換することによって、
> 命令の少なくとも一部分がユニット(6)におけるそれらの実行中に遵守しなければならない連鎖を指定することによって、
> および、基本コマンドを、使用される命令に対応する命令コマンドに変換することによって、
変更することによって、
変更すること、
を含み
→ 使用フェーズ(U)の間に、ユニット(6)の存在時に、ユニット(6)で実行される命令の連鎖が期待されるものに対応しないことが検出された場合に、それをデータ処理システム(3)に通知し、および/または、被保護ソフトウェア(2p)の部分の機能を変更して、被保護ソフトウェア(2p)の機能が変更されるようにすること、
を含む請求項7に記載のプロセス。
→ During the protection phase (P)
A set of instructions that can be executed in unit (6);
-A set of instruction commands for said set of instructions, said set of instruction commands being executed in a data processing system (3) and triggering execution of the instructions in a unit (6);
-A chain of instructions,
-The expected execution sequence for the execution of the instruction,
Means as detecting means (17) capable of detecting that the chain of instructions does not correspond to what is expected;
And, as forcing means (18), notify the data processing system (3) if the chain of instructions does not correspond to what is expected and / or change the function of the part of the protected software (2p). Means capable of,
To define
Building utilization means that also allow the unit (6) to execute instructions of the instruction set (the execution of said instructions is triggered by the execution of instruction commands in the data processing system (3));
And and the protected software (2p)
-At least one selected part of the protected software source (2ps)
> By converting basic functions into instructions,
By specifying a chain that at least part of the instructions must adhere to during their execution in unit (6)
> And by converting the basic command to an instruction command corresponding to the instruction used,
By changing
Change,
→ During the use phase (U), if it is detected that the chain of instructions executed in the unit (6) does not correspond to the expected one, Notifying the processing system (3) and / or changing the function of the part of the protected software (2p) so that the function of the protected software (2p) is changed;
The process of claim 7, comprising:
→ 保護フェーズ(P)の間に、
・− 命令セットとして、少なくとも一部分の命令がレジスタと連携し、結果を返す目的で少なくとも1つのオペランドを使用する命令セット、
− レジスタと連携する少なくとも一部分の命令について、
> 命令の機能を定義するパート(PF)、
> および、命令の実行に対する期待される連鎖を定義するパート、
(前記パートは、
◇ 命令の識別フィールド(CII)、
◇ および、命令の各オペランドごとに、
* フラグフィールド(CD)、
* および、オペランドの期待される識別フィールド(CIP)、
に対応するビットフィールド
を含むパート)、
− 活用手段に属し命令セットによって使用される各レジスタごとに、該レジスタ内にその結果を返した最後の命令の識別が自動的に記憶される生成識別フィールド(CIG)、
− 検出手段(17)として、命令の実行中に、各オペランドごとに、フラグフィールド(CD)が要求する時に、該オペランドによって使用されるレジスタに対応する生成識別フィールド(CIP)と、該オペランドの出所の期待される識別フィールド(CIP)との等値性をチェックすることが可能な手段、
− および、強制手段(18)として、チェックされた等値性の少なくとも1つが偽である場合に、命令の結果を変更することが可能な手段、
を定義すること、
を含む請求項8に記載のプロセス。
→ During the protection phase (P)
-As an instruction set, at least some instructions cooperating with registers and using at least one operand for the purpose of returning a result;
-For at least some of the instructions associated with the registers,
> Part (PF) that defines the function of the instruction
> And a part that defines the expected chain for execution of the instruction,
(The part is
識別 Instruction identification field (CII),
◇ and for each operand of the instruction:
* Flag field (CD k ),
* And the expected identification field of the operand (CIP k ),
That contains the bit field corresponding to),
A generation identification field (CIG v ), for each register belonging to the exploitation means and used by the instruction set, in which the identification of the last instruction which returned its result is automatically stored;
As detection means (17), for each operand during execution of the instruction, when a flag field (CD k ) requires, a generation identification field (CIP k ) corresponding to the register used by said operand; Means capable of checking the equality with the expected identification field (CIP k ) of the source of the operand,
And means for being able to change the result of the instruction if at least one checked equality is false, as forcing means (18);
To define
9. The process of claim 8, comprising:
→ 保護フェーズ(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)が完全に機能しないようにすること、
を含む請求項1または8に記載のプロセス。
→ During the protection phase (P)
.- Basic commands or instruction commands as trigger commands,
-As dependent functions, basic functions or instructions;
-At least one argument to a trigger command which, as an order, at least partially corresponds to the information sent by the data processing system (3) to the unit (6) and triggers the execution of the corresponding dependent function;
-A method for renaming an order, wherein the order can be renamed to obtain a trigger command having the renamed order;
Restoration means (20) designed to be used in the unit (6) during the use phase (U) and capable of restoring the dependent function to be executed from the renamed order;
To define
Constructing utilization means that also allow the unit (6) to implement restoration means;
And and the protected software (2p)
-By selecting a trigger command in the protected software source (2ps)
By modifying at least one selected part of the source of protected software (2 ps) by renaming the order of the selected trigger command so as to hide the identity of the corresponding dependent function;
− And
> The first object part (2pos) of the protected software (2p), such that during execution of the protected software (2p), a trigger command having the renamed order is executed;
> The second object part (2pou) of the protected software (2p) including the utilization means that also implements the restoration means (20), and after the upload to the unit (6), during the execution of the protected software (2p) The identity of the dependent function whose execution is triggered by the first execution part (2pes) is restored by the second execution part (2peu) and the dependent function is executed by the second execution part (2peu),
By generating
Change,
Including
→ During the use phase (U),
Whenever a trigger command having a renamed order included in a part of the first execution part (2pes) requires the presence of the unit (6), the identification of the corresponding dependent function and its execution are performed in the unit (6). And that the part is executed correctly so that the protected software (2p) is fully functional;
And correctly fulfilling the request in the absence of unit (6), despite the request by a part of the first execution part (2pes) to trigger execution of the dependent function in unit (6) The inability to at least prevent the part from being executed correctly and consequently the protected software (2p) from completely functioning;
9. The process according to claim 1 or 8, comprising:
→ 保護フェーズ(P)の間に、
・ 少なくとも1つの従属関数について、アルゴリズム的に等価であるが、そのリネームされたオーダーが異なるトリガコマンドによってトリガされる従属関数群を定義すること、
・ および、被保護ソフトウェア(2p)を、
− 被保護ソフトウェアのソース(2ps)中で、リネームされたオーダーを有する少なくとも1つのトリガコマンドを選択することによって、
− および、リネームされたオーダーを有する1つの選択されたトリガコマンドの少なくともリネームされたオーダーを、同じ群の従属関数をトリガする別のリネームされたオーダーと置換することにより、被保護ソフトウェアのソース(2ps)の少なくとも1つの選択された部分を変更することによって、
変更すること、
を含む請求項10に記載のプロセス。
→ During the protection phase (P)
Defining, for at least one dependent function, a set of dependent functions that are algorithmically equivalent, but whose renamed orders are triggered by different trigger commands;
And and the protected software (2p)
By selecting at least one trigger command having a renamed order in the source of protected software (2 ps)
-And by replacing at least the renamed order of one selected trigger command with the renamed order with another renamed order that triggers the same group of dependent functions, 2ps) by changing at least one selected part
Change,
The process of claim 10 comprising:
→ 保護フェーズ(P)の間に、少なくとも1つの従属関数について、アルゴリズム的に等価な従属関数群を、
− ユニット(6)で実行すべき従属関数の機能パートを定義する情報にノイズフィールドを連結することによって、
− または、命令の識別フィールド(CII)およびオペランドの期待される識別フィールド(CIP)を使用することによって、
定義すること、
を含む請求項11に記載のプロセス。
→ During the protection phase (P), for at least one dependent function, an algorithmically equivalent set of dependent functions is
By concatenating the noise field with information defining the functional part of the dependent function to be performed in unit (6)
Or by using the identification field of the instruction (CII) and the expected field of the operands (CIP k )
To define,
The process of claim 11 comprising:
→ 保護フェーズ(P)の間に、
・− オーダーをリネームする方法として、オーダーを暗号化する暗号化方法、
− および、復元手段(20)として、リネームされたオーダーを復号化することによりユニット(6)で実行すべき従属関数の識別を復元する復号化方法を実施する手段、
を定義すること、
を含む請求項10、11または12に記載のプロセス。
→ During the protection phase (P)
.-An order renaming method, an encryption method for encrypting the order,
And means for implementing as decoding means (20) a decoding method for decoding the renamed order to restore the identity of the dependent function to be performed in unit (6),
To define
The process according to claim 10, 11 or 12, comprising:
→ 保護フェーズ(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)が完全に機能しないようにすること、
を含む請求項1ないし13のいずれか1項に記載のプロセス。
→ During the protection phase (P)
・ Protected software (2p)
By selecting at least one conditional branch executed in at least one selected algorithmic process in the source of protected software (2 ps)
Modifying at least one selected part of the source (2 ps) of the protected software, the change being performed during execution of the protected software (2p) by the function of at least one selected conditional branch; (6) is a change as performed by the second execution part (2peu))
− And
> The first object part (2pos) of the protected software (2p), such that during execution of the protected software (2p) at least one selected conditional branch function is executed in the unit (6) thing,
> The second object part (2pou) of the protected software (2p), after uploading to the unit (6), during execution of the protected software (2p), a second execution part (2peu) appears, Such that the function of at least one selected conditional branch is performed,
By generating
Change,
Including
→ During the use phase (U),
In the presence of the unit (6), each time a part of the first execution part (2pes) requests, by executing at least one function of the conditional branch in the unit (6), the part is executed correctly and the result To make the protected software (2p) fully functional,
And, in the absence of unit (6), correctly satisfying the request, despite the request by a part of the first execution part (2pes) to perform the function of the conditional branch in unit (6). The inability to at least prevent the part from being executed correctly and consequently the protected software (2p) from completely functioning;
14. The process according to any one of claims 1 to 13, comprising:
保護フェーズ(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つの選択された条件分岐系列の全機能が実行されるようなもの、
を生成することによって、
変更することを含む請求項14に記載のプロセス。
During the protection phase (P), the protected software (2p)
By selecting at least one selected conditional branch sequence in the source of protected software (2 ps),
Altering at least one selected part of the source (2ps) of the protected software (this change is performed during execution of the protected software (2p) if all functions of at least one selected conditional branching sequence are changed); , Unit (6), which is the change performed by the second execution part (2peu))
− And
> The first object part (2pos) of the protected software (2p) such that during execution of the protected software (2p), at least one function of the selected conditional branch sequence is executed in the unit (6); Things,
> The second object part (2pou) of the protected software (2p), after uploading to the unit (6), during execution of the protected software (2p), a second execution part (2peu) appears, Such that all functions of at least one selected conditional branching sequence are performed,
By generating
15. The process of claim 14, including changing.
保護フェーズ(P)を、保護すべきソフトウェアに依存しない先行保護サブフェーズ(P1)および保護すべきソフトウェアに依存する後続保護サブフェーズ(P2)に分割することを含む請求項1ないし15のいずれか1項に記載のプロセス。16. The method according to claim 1, comprising dividing the protection phase into a pre-protection sub-phase independent of the software to be protected and a subsequent protection sub-phase dependent on the software to be protected. The process of claim 1. 先行保護サブフェーズ(P1)の間に、すべての定義が実行される定義段階(S11)を挿入することを含む請求項16に記載のプロセス。17. The process according to claim 16, comprising inserting a definition phase (S11) in which all definitions are performed during the pre-protection sub-phase (P1). 定義段階(S11)の後に、活用手段が構築される構築段階(S12)を挿入することを含む請求項17に記載のプロセス。18. The process according to claim 17, comprising, after the definition step (S11), inserting a construction step (S12) in which the exploitation means is constructed. 構築段階(S12)の後に、事前カスタマイズ済みユニット(66)を取得する目的で、活用手段の少なくとも一部分をブランクユニット(60)にアップロードすることを含む事前カスタマイズ段階(S13)を挿入することを含む請求項18に記載のプロセス。After the construction step (S12), including inserting a pre-customization step (S13) including uploading at least a portion of the utilization means to the blank unit (60) in order to obtain a pre-customized unit (66). The process according to claim 18. 先行保護サブフェーズ(P1)の間に、被保護ソフトウェアの生成を支援し、または、ソフトウェア保護を自動化することを可能にするツールが作成されるツール作成段階(S14)を挿入することを含む請求項17または18に記載のプロセス。Claims include, during the pre-protection sub-phase (P1), inserting a tool creation step (S14) in which a tool is created that assists in the generation of the protected software or that enables automation of the software protection. Item 19. The process according to item 17 or 18. 後続保護サブフェーズ(P2)を、
・ バルナラブル・ソフトウェア(2v)から被保護ソフトウェア(2p)が作成される作成段階(S21)、
・ 場合によって、被保護ソフトウェア(2p)が変更される変更段階(S22)、
・ および、
− 活用手段を含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)が、少なくとも1つのユニット(6)を得る目的で、少なくとも1つのブランクユニット(60)にアップロードされ、
− または、活用手段を場合によって含む被保護ソフトウェア(2p)の第2オブジェクトパート(2pou)の一部分が、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つの事前カスタマイズ済みユニット(66)にアップロードされるカスタマイズ段階(S23)、
に分割することを含む請求項16および19に記載のプロセス。
Subsequent protection sub-phase (P2)
A creation step (S21) in which the protected software (2p) is created from the valuable software (2v);
A change step (S22) in which the protected software (2p) is changed, as the case may be;
· and,
The second object part (2pou) of the protected software (2p) including the exploitation means is uploaded to at least one blank unit (60) for the purpose of obtaining at least one unit (6);
Or a part of the second object part (2pou) of the protected software (2p), optionally including exploitation means, for obtaining at least one unit (6), at least one pre-customized unit (66) Customization stage uploaded to (S23),
20. The process of claims 16 and 19, comprising splitting into.
作成段階(S21)の間に、および場合によって変更段階(S22)の間に、被保護ソフトウェアの生成を支援し、またはソフトウェア保護を自動化する少なくとも1つのツールを使用することを含む請求項20および21に記載のプロセス。21. Use of at least one tool that assists in generating protected software or automates software protection during the creating step (S21) and possibly during the modifying step (S22). The process of claim 21. 定義段階(S11)の間に挿入された定義を考慮して、構築段階(S12)の間に、ユニット(6)向けの活用手段の構築を実行するために使用されるプログラム開発ユニットを含むことを特徴とする請求項18に記載のプロセスの実施のためのシステム。Considering the definitions inserted during the definition stage (S11), including during the construction stage (S12) a program development unit used to execute the construction of the utilization means for the unit (6) The system for performing the process of claim 18. 少なくとも1つの事前カスタマイズ済みユニット(66)を取得する目的で、活用手段の少なくとも一部分を少なくとも1つのブランクユニット(60)にアップロードすることが可能な事前カスタマイズユニット(30)を含むことを特徴とする請求項19に記載のプロセスの実施のためのシステム。A pre-customized unit (30) capable of uploading at least a portion of the exploitation means to the at least one blank unit (60) for the purpose of obtaining at least one pre-customized unit (66). A system for performing the process of claim 19. ツール作成段階(S14)の間に、被保護ソフトウェアの生成を支援し、または、ソフトウェア保護を自動化するツールの作成を実行するために使用されるプログラム開発ユニットを含むことを特徴とする請求項20に記載のプロセスの実施のためのシステム。21. A program development unit used during the tool creation step (S14) to support creation of protected software or to execute creation of tools to automate software protection. A system for performing the process of claim 1. 被保護ソフトウェア(2p)を生成または修正するために使用されるプログラム展開ユニットを含むことを特徴とする請求項21または22に記載のプロセスの実施のためのシステム。23. A system for implementing the process according to claim 21 or 22, comprising a program deployment unit used to generate or modify the protected software (2p). ・ 少なくとも1つのユニット(6)を取得する目的で、少なくとも1つのブランクユニット(60)に、第2オブジェクトパート(2pou)を、
・ または、少なくとも1つのユニット(6)を取得する目的で、少なくとも1つの事前カスタマイズ済みユニット(66)に、第2オブジェクトパート(2pou)の一部分を、アップロードすることが可能なカスタマイズユニット(45)を含むことを特徴とする請求項21に記載のプロセスの実施のためのシステム。
A second object part (2pou) in at least one blank unit (60) for the purpose of obtaining at least one unit (6);
Or a customization unit (45) capable of uploading a part of the second object part (2 pou) to at least one pre-customized unit (66) for the purpose of obtaining at least one unit (6) 22. The system for performing a process according to claim 21, comprising:
請求項24に記載のシステムによって得られることを特徴とする事前カスタマイズ済みユニット(66)。A pre-customized unit (66) obtained by the system according to claim 24. 被保護ソフトウェア(2p)を実行しその無許可使用を防止することが可能で、請求項27に記載のカスタマイズユニット(45)を使用してアップロードされた被保護ソフトウェア(2p)の第2のオブジェクトパート(2pou)を含むことを特徴とするユニット(6)。28. A second object of the protected software (2p) that is capable of executing the protected software (2p) and preventing its unauthorized use and uploaded using the customization unit (45) according to claim 27. A unit (6) comprising a part (2 pou). 請求項27に記載のカスタマイズユニット(45)を用いてアップロードされた被保護ソフトウェア(2p)の第2のオブジェクトパート(2pou)が複数の処理/記憶ユニットに分割され、同時使用により被保護ソフトウェア(2p)を実行することが可能となるようにしたことを特徴とするユニット(6)のセット。28. The second object part (2pou) of the protected software (2p) uploaded using the customizing unit (45) according to claim 27 is divided into a plurality of processing / storage units, and the protected software (2p) is used simultaneously. 2p). A set of units (6), characterized in that it is possible to carry out 2p). ・ 第1オブジェクトパート(2pos)を含みデータ処理システム(3)で作動するように設計された第1配布パート(2pds)、
・ および、
− ブランクユニット(60)、
− または、カスタマイズ情報のアップロードの後にユニット(6)に変換されることが可能な請求項28に記載の事前カスタマイズユニット(66)、
− 又は、請求項29に記載のユニット(6)、
の形態を有する第2配布パート(2pdu)、
を含むことを特徴とする被保護ソフトウェア(2p)の配布セット(2pd)。
A first distribution part (2pds) including a first object part (2pos) and designed to work with the data processing system (3);
· and,
A blank unit (60),
-Or a pre-customization unit (66) according to claim 28, which can be converted into a unit (6) after uploading the customization information,
-Or a unit (6) according to claim 29;
A second distribution part (2pdu) having the form
A distribution set (2pd) of the protected software (2p).
第1配布パート(2pds)は、CDROMなどの物理的配布媒体の形式、または、ネットワークを通じて配布されるファイルの形式を含むことを特徴とする請求項31に記載の保護されたソフトウェア(2p)の配布セット(2pd)。32. The protected software (2p) according to claim 31, wherein the first distribution part (2pds) includes a format of a physical distribution medium such as a CDROM or a format of a file distributed through a network. Distribution set (2pd). ブランクユニット(60)、事前カスタマイズ済みユニット(66)またはユニット(6)の形式を有する第2配布パート(2pdu)は、少なくとも1つのチップカード(7)を含むことを特徴とする請求項31に記載の被保護ソフトウェア(2p)の配布セット(2pd)。32. The second distribution part (2pdu) in the form of a blank unit (60), a pre-customized unit (66) or a unit (6) comprises at least one chip card (7). Distribution set (2pd) of the protected software (2p) described. 請求項28に記載の事前カスタマイズ済みユニット(66)を請求項29に記載のユニット(6)に変換するのに必要な第2オブジェクトパート(2pou)の部分を含むことを特徴とする処理/記憶ユニット。Processing / storage comprising a part of a second object part (2 pou) necessary for converting a pre-customized unit (66) according to claim 28 into a unit (6) according to claim 29. unit. 処理/記憶ユニットのセットであって、同時に使用された該処理/記憶ユニットが、請求項28の事前カスタマイズ済みユニット(66)を請求項29に記載のユニット(6)に変換するのに必要な第2オブジェクトパート(2pou)の部分を含む部分含むことを特徴とする処理/記憶ユニットのセット。A set of processing / storage units that are used simultaneously to convert the pre-customized unit (66) of claim 28 to a unit (6) of claim 29. A set of processing / storage units characterized by including a part including a part of a second object part (2pou).
JP2003517723A 2001-07-31 2002-07-04 How to protect software against fraudulent use by "fundamental function" principle Expired - Fee Related JP3949106B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0110241A FR2828300B1 (en) 2001-07-31 2001-07-31 METHOD FOR PROTECTING SOFTWARE USING A PRINCIPLE OF "ELEMENTARY FUNCTIONS" AGAINST ITS UNAUTHORIZED USE
PCT/FR2002/002344 WO2003012605A2 (en) 2001-07-31 2002-07-04 Method for protecting a software using a so-called elementary functions principle against its unauthorised use

Publications (2)

Publication Number Publication Date
JP2004537801A true JP2004537801A (en) 2004-12-16
JP3949106B2 JP3949106B2 (en) 2007-07-25

Family

ID=8866116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003517723A Expired - Fee Related JP3949106B2 (en) 2001-07-31 2002-07-04 How to protect software against fraudulent use by "fundamental function" principle

Country Status (19)

Country Link
EP (1) EP1412839A2 (en)
JP (1) JP3949106B2 (en)
KR (1) KR20040032860A (en)
CN (1) CN1275115C (en)
BR (1) BR0211372A (en)
CA (1) CA2454096A1 (en)
FR (1) FR2828300B1 (en)
HK (1) HK1070958A1 (en)
HR (1) HRP20040044A2 (en)
HU (1) HUP0400239A2 (en)
IL (1) IL159956A0 (en)
MA (1) MA26123A1 (en)
MX (1) MXPA04000595A (en)
NO (1) NO20040230L (en)
PL (1) PL367486A1 (en)
TN (1) TNSN04009A1 (en)
WO (1) WO2003012605A2 (en)
YU (1) YU5804A (en)
ZA (1) ZA200400353B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109102436B (en) * 2018-06-22 2020-10-27 芯启源(上海)半导体科技有限公司 IP soft core property protection and infringement identification method based on USB3.0 protocol TS1 training sequence

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (en) * 1988-08-01 1990-02-02 Pionchon Philippe METHOD AND DEVICE FOR PROTECTING SOFTWARE, ESPECIALLY AGAINST UNAUTHORIZED COPIES
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999066387A1 (en) * 1998-06-12 1999-12-23 Gemplus Method for verifying the execution of a software product
CN1260055A (en) * 1997-06-09 2000-07-12 联信公司 Obfuscation techniques for enhancing software security

Also Published As

Publication number Publication date
FR2828300A1 (en) 2003-02-07
HRP20040044A2 (en) 2005-02-28
NO20040230L (en) 2004-03-30
WO2003012605A2 (en) 2003-02-13
KR20040032860A (en) 2004-04-17
PL367486A1 (en) 2005-02-21
FR2828300B1 (en) 2010-09-03
YU5804A (en) 2006-05-25
CN1535409A (en) 2004-10-06
ZA200400353B (en) 2005-03-30
IL159956A0 (en) 2004-06-20
HUP0400239A2 (en) 2004-09-28
WO2003012605A3 (en) 2003-12-24
MA26123A1 (en) 2004-04-01
CA2454096A1 (en) 2003-02-13
EP1412839A2 (en) 2004-04-28
JP3949106B2 (en) 2007-07-25
TNSN04009A1 (en) 2006-06-01
CN1275115C (en) 2006-09-13
HK1070958A1 (en) 2005-06-30
MXPA04000595A (en) 2005-02-17
BR0211372A (en) 2004-09-14

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 (en) How to protect the software against its unauthorized use using the &#34;Rename&#34; principle
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Temporal Dissociation&#34; Principle
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Renaming&#34; Principle
JP3949108B2 (en) How to protect software against unauthorized use with the “temporary separation” principle
JP3949103B2 (en) How to protect software against unauthorized use with the &#34;conditional branching&#34; principle
JP3949107B2 (en) How to protect software against unauthorized use by &#34;variable&#34; principle
JP2009104589A (en) Information processor and its method, program, and recording medium
JP3949106B2 (en) How to protect software against fraudulent use by &#34;fundamental function&#34; principle
JP2004537796A (en) How to Protect Software Against Abuse Using the &#34;Detect and Enforce&#34; Principle
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

LAPS Cancellation because of no payment of annual fees