Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения
Формула / Реферат
1. Способ защиты на основе по меньшей мере одного незадействованного устройства (60), содержащего, по меньшей мере, средства (15) запоминания и средства (16) обработки, от неавторизованного использования уязвимой программы (2v), которая функционирует на системе (3) обработки данных, состоящий в том, что
в фазе (P) защиты определяют
по меньшей мере одну характеристику выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве обработки и хранения,
по меньшей мере один критерий, который должен выполняться по меньшей мере для одной характеристики выполнения программы,
средства (17) детектирования, которые следует применять в устройстве обработки и хранения и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию,
и средства (18) управления, которые следует применять в устройстве обработки и хранения и которые позволяют проинформировать систему (3) обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения задействовать средства (17) детектирования и средства (18) управления;
создают защищенную программу (2p)
посредством выбора по меньшей мере одной характеристики выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы,
посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы,
посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы (2v) использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы,
посредством выбора по меньшей мере одного фрагмента кода (2vs) уязвимой программы, содержащего по меньшей мере один выбранный алгоритм,
посредством создания исходного кода (2ps) защищенной программы на основе кода уязвимой программы (2v) модифицированием по меньшей мере одного выбранного фрагмента кода (2vs) уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода (2ps) защищенной программы, причем эта модификация такова, что
в ходе выполнения защищенной программы (2p) первая выполняемая часть (2pes) выполняется в системе (3) обработки данных, а вторая выполняемая часть (2peu) выполняется в устройстве обработки и хранения, полученном из незадействованного устройства (60) после загрузки информации,
вторая выполняемая часть (2peu) выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма,
и в ходе выполнения защищенной программы (2p) по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части (2peu) и несоблюдение критерия приводит к модификации выполнения защищенной программы (2p);
и посредством создания
первой части (2pos) объектного кода защищенной программы (2p), причем первая часть (2pos) объектного кода такова, что в ходе выполнения защищенной программы (2p) реализуется первая выполняемая часть (2pes), которая выполняется в системе обработки данных (3) и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы,
и второй части (2pou) объектного кода защищенной программы (2p), содержащей средства эксплуатации, позволяющие применять также средства (17) детектирования и средства (18) управления, причем вторая часть (2pou) объектного кода такова, что после загрузки в незадействованное устройство (60), в ходе выполнения защищенной программы (2p) реализуется вторая выполняемая часть (2peu), посредством которой контролируется по меньшей мере одна характеристика выполнения программы, и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы (2p),
и загружают вторую часть (2pou) объектного кода в незадействованное устройство (60) с получением устройства обработки и хранения,
а в фазе (U) использования, в ходе которой происходит выполнение защищенной программы (2p) в присутствии устройства обработки и хранения,
если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы (2p), соблюдены, допускают номинальное функционирование указанных фрагментов защищенной программы (2p) и, следовательно, номинальное функционирование защищенной программы (2p),
а если по меньшей мере один из критериев, отвечающих контролируемой характеристике выполнения одного фрагмента защищенной программы (2p), не соблюден, информируют систему (3) обработки данных об указанном несоблюдении и/или модифицируют функционирование фрагмента защищенной программы (2p) таким образом, чтобы функционирование защищенной программы (2p) было изменено.
2. Способ по п.1, отличающийся тем, что, чтобы ограничить использование защищенной программы (2p), в фазе (P) защиты определяют
в качестве характеристики выполнения программы, которая может быть проконтролирована, переменную для количественного контроля использования одной функциональной возможности программы,
в качестве критерия, который необходимо соблюдать, по меньшей мере одно пороговое значение, связанное с каждой переменной для количественного контроля,
и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения применять средства обновления;
и модифицируют защищенную программу (2p)
посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы,
посредством выбора
по меньшей мере одной функциональной возможности защищенной программы (2p), использование которой можно проконтролировать с использованием переменной для количественного контроля,
по меньшей мере одной переменной для количественного контроля, которая служит для количественной характеристики использования упомянутой функциональной возможности,
по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования указанной функциональной возможности,
и по меньшей мере одного метода обновления значения указанной переменной для количественного контроля в зависимости от использования указанной функциональной возможности,
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2p) переменная для количественного контроля обновляется посредством второй выполняемой части (2peu) в зависимости от использования указанной функциональной возможности и учитывается по меньшей мере одно превышение порогового значения,
а в фазе (U) использования в присутствии устройства обработки и хранения, в случае, когда обнаружено по меньшей мере одно превышение порогового значения, соответствующее по меньшей мере одному пределу использования, информируют об этом систему (3) обработки данных и/или модифицируют функционирование фрагмента защищенной программы (2p) таким образом, чтобы функционирование защищенной программы (2p) было изменено.
3. Способ по п.2, отличающийся тем, что
в фазе (P) защиты определяют несколько соответствующих пороговых значений по меньшей мере для одной переменной для количественного контроля и различные средства принуждения, соответствующие каждому из указанных порогов;
и модифицируют защищенную программу (2p)
посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороготых значений, соответствующих различным пределам использования функциональной возможности,
посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля,
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2p) превышения различных пороговых значений учитываются посредством второй выполняемой части (2peu) различными способами,
а в фазе (U) использования в присутствии устройства обработки и хранения
в случае, когда обнаружено превышение первого порогового значения, дают команду защищенной программе (2p) не использовать впредь соответствующую функциональную возможность,
а в случае, когда обнаружено превышение второго порогового значения, делают невыполнимой соответствующую функциональную возможность и/или по меньшей мере часть защищенной программы (2p).
4. Способ по п.2 или 3, отличающийся тем, что в фазе (P) защиты
определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля;
конструируют средства эксплуатации, позволяющие также устройству обработки и хранения задействовать средства перезагрузки;
и модифицируют защищенную программу (2p)
посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование одной функциональной возможности, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование,
и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем указанная модификация такова, что в фазе перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено,
а в фазе перезагрузки обновляют по меньшей мере одну выбранную переменную для количественного контроля и по меньшей мере одно соответствующее пороговое значение так, чтобы разрешить по меньшей мере одно дополнительное использование функциональной возможности.
5. Способ по п.1, отличающийся тем, что в фазе (P) защиты
определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, профиль использования программы и в качестве критерия, который требуется соблюдать, по меньшей мере один признак выполнения программы;
и модифицируют защищенную программу (2p)
посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одного профиля использования программы,
посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования,
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2p) вторая выполняемая часть (2peu) соблюдает все выбранные признаки выполнения,
а в фазе (U) использования в присутствии устройства обработки и хранения в случае, если обнаружено, что не соблюдается хотя бы один признак выполнения, информируют об этом систему (3) обработки данных и/или модифицируют функционирование части защищенной программы (2p) так, чтобы функционирование защищенной программы (2p) было изменено.
6. Способ по п.5, отличающийся тем, что в фазе (P) защиты определяют
набор инструкций, инструкции из состава которого могут быть выполнены в устройстве обработки и хранения,
набор команд инструкций для указанного набора инструкций, причем команды инструкций могут быть выполнены в системе (3) обработки данных, вызывая в устройстве обработки и хранения выполнение инструкций,
в качестве профиля использования - сцепление инструкций,
в качестве признака выполнения - желаемое сцепление для выполнения инструкций,
в качестве средств (17) детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому,
в качестве средств (18) управления - средства, позволяющие проинформировать систему (3) обработки данных и/или модифицировать функционирование фрагмента защищенной программы (2p), если сцепление инструкций не соответствует желаемому;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения выполнять инструкции из набора инструкций, причем выполнение указанных инструкций вызывается выполнением команд инструкций в системе (3) обработки данных;
и модифицируют защищенную программу (2p)
посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы:
посредством преобразования элементарных функций в инструкции,
посредством задания сцепления, которое должны соблюдать, по меньшей мере, некоторые из инструкций во время их выполнения в устройстве обработки и хранения,
и посредством преобразования элементарных команд в команды инструкций, соответствующих используемым инструкциям,
а в фазе (U) использования в присутствии устройства обработки и хранения в случае, если обнаружено, что сцепление выполняемых в устройстве обработки и хранения инструкций не соответствует желаемому, информируют об этом систему (3) обработки данных и/или модифицируют функционирование фрагмента защищенной программы (2p) так, чтобы функционирование защищенной программы (2p) было изменено.
7. Способ по п.6, отличающийся тем, что в фазе (P) защиты определяют
в качестве набора инструкций - набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата,
по меньшей мере для части инструкций, работающих на регистрах,
часть (PF), задающую функциональную возможность инструкции,
и часть, задающую желаемое сцепление для выполнения инструкций и содержащую битовые поля, соответствующие полю (CII) идентификации инструкции, и для каждого операнда инструкции полю (CDk) флага и полю (CIPk) идентификации, предусмотренной для операнда,
для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле (CIGV) предусмотренной идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр,
в качестве средств (17) детектирования - средства, позволяющие во время выполнения инструкции для каждого операнда, когда этого требует поле (CDk) флага, контролировать равенство между полем (CIGV) генерируемой идентификации, соответствующим регистру, используемому указанным операндом, и полем (CIPk) предусмотренной идентификации начального адреса этого операнда,
и в качестве средств (18) управления - средства, позволяющие модифицировать результат выполнения инструкций, если по меньшей мере одно из контролируемых равенств ложно.
8. Способ по любому из пп.1-7, отличающийся тем, что в фазе (P) защиты модифицируют защищенную программу (2p)
посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы (2p) частично определяет состояние защищенной программы (2p),
посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы (2p) по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве обработки и хранения,
и посредством создания
первой части (2pos) объектного кода защищенной программы (2p), причем эта первая часть (2pos) объектного кода такова, что в ходе выполнения защищенной программы (2p) по меньшей мере один фрагмент первой выполняемой чаётш (2pes) учитывает, что по меньшей мере одна переменная или по меньшей мере одна копия переменной находится в устройстве обработки и хранения,
и второй части (2pou) объектного кода защищенной программы (2p), причем эта вторая часть (2pou) объектного кода такова, что после загрузки в устройство обработки и хранения и в ходе выполнения защищенной программы (2p) реализуется вторая выполняемая часть (2peu), при помощи которой по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной также находится в устройстве обработки и хранения,
а в фазе (U) использования в присутствии устройства обработки и хранения, всякий раз, когда этого требует фрагмент первой выполняемой части (2pes), используют переменную или копию переменной, находящейся в устройстве обработки и хранения так, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа (2p) являлась полнофункциональной, а при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части (2pes) на использование переменной или копии переменной, находящейся в устройстве обработки и хранения, не обеспечивается возможность корректного ответа на указанный запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа (2p) не является полнофункциональной.
9. Способ по п.6, отличающийся тем, что в фазе (P) защиты определяют
в качестве команды запуска - команду инструкции,
в качестве зависимой функции - инструкцию,
в качестве установочного параметра - по меньшей мере один аргумент для команды запуска, соответствующий, по меньшей мере частично, информации, переданной системой (3) обработки данных на устройство обработки и хранения, чтобы вызвать запуск соответствующей зависящей функции,
метод переименования установочных параметров, позволяющий переименовать установочные параметры, чтобы получить команды запуска с переименованными установочными параметрами,
и средства (20) восстановления, предназначенные для применения в устройстве обработки и хранения в фазе (U) использования и позволяющие найти зависимую функцию, которую необходимо выполнить, исходя из переименованного установочного параметра;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения задействовать средства восстановления;
и модифицируют защищенную программу (2p)
посредством выбора в исходном коде (2ps) защищенной программы команд запуска,
посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы посредством переименования установочных параметров выбранных команд запуска, чтобы скрыть идентичность соответствующих зависящих функций,
и посредством создания первой части (2pos) объектного кода защищенной программы (2p), причем первая часть (2pos) объектного кода такова, что в ходе выполнения защищенной программы (2p) выполняются команды запуска с переименованными установочными параметрами, и второй части (2pou) объектного кода защищенной программы (2p), содержащей средства эксплуатации, использующие также средства (20) восстановления, причем вторая часть (2pou) объектного кода такова, что после загрузки в устройство обработки и хранения в ходе выполнения защищенной программы (2p) идентичность зависимых функций, выполнение которых вызвано первой выполняемой частью (2pes), восстанавливается посредством второй выполняемой части (2peu), а зависимые функции выполняются посредством второй выполняемой части (2peu),
а в фазе (U) использования в присутствии устройства обработки и хранения всякий раз, когда этого требует команда запуска с переименованными установочными параметрами, содержащаяся во фрагменте первой выполняемой части (2pes), восстанавливают в устройстве обработки и хранения идентичность соответствующей зависящей функции и выполняют ее так, чтобы указанный фрагмент выполнялся корректно и, следовательно, защищенная программа (2p) являлась полнофункциональной;
тогда как при отсутствии устройства обработки и хранения, несмотря на запрос фрагмента первой выполняемой части (2pes) на запуск выполнения в устройстве обработки и хранения зависящей функции, не обеспечивается возможность корректного ответа на указанный запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа (2p) не является полнофункциональной.
10. Способ по п.9, отличающийся тем, что в фазе (P) защиты определяют по меньшей мере для одной зависящей функции семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска, переименованные установочные параметры которых являются различными;
и модифицируют защищенную программу (2p)
посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одной команды запуска с переименованными установочными параметрами,
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы посредством замены, по меньшей мере, переименованного установочного параметра команды запуска с выбранным установочным параметром на другой переименованный установочный параметр, что вызывает запуск зависящей функции из того же семейства.
11. Способ по п.10, отличающийся тем, что включает в фазе (P) защиты определение по меньшей мере для одной зависящей функции семейства алгоритмически эквивалентных зависящих функций
посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве обработки и хранения,
или посредством использования поля (CII) идентификации инструкции и полей (CIPk) идентификации, предусмотренных для операндов.
12. Способ по пп.9, 10 или 11, отличающийся тем, что в фазе (P) защиты определяют
в качестве метода переименования установочных параметров - метод кодирования для кодировки установочных параметров
и в качестве средств (20) восстановления - средства, применяющие метод декодирования для раскодирования переименованных установочных параметров и восстановления идентичности зависимых функций, которые требуется выполнить в устройстве обработки и хранения.
13. Способ по любому из пп.1-12, отличающийся тем, что в фазе (P) защиты модифицируют защищенную программу (2p)
посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одного условного перехода, выполняемого по меньшей мере в одном выбранном алгоритме,
посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2p) функциональная возможность по меньшей мере одного выбранного условного перехода выполняется посредством второй выполняемой части (2peu) в устройстве обработки и хранения,
и посредством создания
первой части (2pos) объектного кода защищенной программы (2p), причем первая часть (2pos) объектного кода такова, что в ходе выполнения защищенной программы (2p) функциональная возможность по меньшей мере одного выбранного условного перехода выполняется в устройстве обработки и хранения, и второй части (2pou) объектного кода защищенной программы (2p), причем вторая часть (2pou) объектного кода такова, что после загрузки в устройство обработки и хранения в ходе выполнения защищенной программы (2p) реализуется вторая выполняемая часть (2peu), посредством которой выполняется функциональная возможность по меньшей мере одного выбранного условного перехода,
а в фазе (U) использования в присутствии устройства обработки и хранения всякий раз, когда этого требует фрагмент первой выполняемой части (2pes), выполняют в устройстве обработки и хранения функции по меньшей мере одного выбранного условного перехода таким образом, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа (2p) являлась полнофункциональной;
а при отсутствии устройства обработки и хранения, несмотря на запрос фрагмента первой выполняемой части (2pes) на выполнение функций условного перехода в устройстве обработки и хранения, эх обеспечивается возможность корректного ответа на указанный запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа (2p) не является полнофункциональной.
14. Способ по п.13, отличающийся тем, что в фазе (P) защиты модифицируют защищенную программу (2p)
посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одной серии выбранных условных переходов,
посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2p) глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве обработки и хранения посредством второй выполняемой части (2peu),
и посредством создания первой части (2pos) объектного кода защищенной программы (2p), причем первая часть (2pos) объектного кода такова, что в ходе выполнения защищенной программы (2p) функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве обработки и хранения, и второй части (2pou) объектного кода защищенной программы (2p), причем вторая часть (2pou) объектного кода такова, что после загрузки в устройство обработки и хранения, в ходе выполнения защищенной программы (2p) реализуется вторая выполняемая часть (2peu), посредством которой выполняется глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов.
15. Способ по любому из пп.1-14, отличающийся тем, что разлагают фазу (P) защиты на входную подфазу (P1) защиты, не зависящую от защищаемой программы, и на выходную подфазу (P2) защиты, зависящую от защищаемой программы.
16. Способ по п.15, отличающийся тем, что в ходе входной подфазы (P1) защиты задействуют стадию (S11) определений, на которой выполняются все определения.
17. Способ по п.16, отличающийся тем, что после стадии (S11) определений задействуют стадию конструирования (S12), на которой создаются средства эксплуатации.
18. Способ по п.17, отличающийся тем, что после стадии (S12) конструирования задействуют стадию (S13) предперсонализации, состоящую в том, что загружают в незадействованное устройство (60) по меньшей мере часть средств эксплуатации, чтобы получить предперсонализированное устройство (66).
19. Способ по п.16 или 17, отличающийся тем, что в ходе входной подфазы (P1) защиты задействуют стадию (S14) изготовления средств, на которой изготавливаются средства, помогающие при создании защищенных программ или автоматизации защиты программ.
20. Способ по п.15 или 18, отличающийся тем, что выходную подфазу (P2) защиты раскладывают
на стадию (S21) создания, на которой на основе уязвимой программы (2v) создается защищенная программа (2p);
возможно, стадию (S22) модификации, на которой модифицируется защищенная программа (2p);
и, возможно, стадию (S23) персонализации, на которой вторая часть (2pou) объектного кода защищенной программы (2p), возможно, содержащая средства эксплуатации, загружается по меньшей мере в одно незадействованное устройство (60), чтобы получить по меньшей мере одно устройство обработки и хранения, или вторая часть (2pou) объектного кода защищенной программы (2p), возможно, содержащая средства эксплуатации, загружается по меньшей мере в одно предперсонализированное устройство (66), чтобы получить по меньшей мере одно устройство обработки и хранения.
21. Способ по п.19 или 20, отличающийся тем, что в ходе стадии (S21) создания и, возможно, стадии (S22) модификации используют по меньшей мере одно из средств, предназначенных для использования при создании защищенных программ или автоматизации защиты программ.
22. Система для осуществления способа согласно п.17, характеризующаяся тем, что содержит устройство разработки программ, служащее в ходе стадии (S12) конструирования для конструирования средств эксплуатации, предназначенных для устройства обработки и хранения, с учетом определений, введенных на стадии (S11) определений.
23. Система для осуществления способа согласно п.18, характеризующаяся тем, что содержит устройство предперсонализации (30), позволяющее загрузить по меньшей мере часть средств эксплуатации по меньшей мере в одно незадействованное устройство (60), чтобы получить по меньшей мере одно предперсонализированное устройство (66).
24. Система для осуществления способа согласно п.19, характеризующаяся тем, что содержит устройство разработки программ, служащее на стадии (S14) изготовления средств, для изготовления средств, предназначенных для использования при создании защищенных программ или автоматизации защиты программ.
25. Система для осуществления способа согласно п.20 или 21, характеризующаяся тем, что содержит устройство разработки программ, служащее для создания или модифицирования защищенной программы (2p).
26. Система для осуществления способа согласно п.20, характеризующаяся тем, что содержит устройство персонализации (45), позволяющее загрузить вторую часть (2pou) объектного кода по меньшей мере в одно незадействованное устройство (60), чтобы получить по меньшей мере одно устройство обработки и хранения; или часть второй части (2pou) объектного кода по меньшей мере в одно предперсонализированное устройство (66), чтобы получить по меньшей мере одно устройство обработки и хранения.
27. Предперсонализированное устройство (66), характеризующееся тем, что сформировано системой согласно п.23.
28. Устройство обработки и хранения, позволяющее выполнить защищенную программу (2p) и помешать ее несанкционированному использованию, характеризующееся тем, что содержит вторую часть (2pou) объектного кода защищенной программы (2p), загруженную при помощи устройства персонализации (45), выполненного согласно п.26.
29. Комплект устройств обработки и хранения, характеризующийся тем, что вторая часть (2pou) объектного кода защищенной программы (2p), загруженная при помощи устройства персонализации (45), выполненного согласно п.26, распределена между несколькими устройствами обработки и хранения таким образом, что их совместное использование позволяет выполнить защищенную программу (2p).
30. Ансамбль дистрибутива (2pd) защищенной программы (2p), характеризующийся тем, что содержит первую часть дистрибутива (2pds), содержащую первую часть (2pos) объектного кода и предназначенную для работы в системе (3) обработки данных;
и вторую часть дистрибутива (2pdu) в виде
незадействованного устройства (60),
или предперсонализированного устройства (66) согласно п.27, способного после загрузки информации персонализации преобразоваться в устройство обработки и хранения,
или устройства обработки и хранения, выполненного согласно п.28.
31. Ансамбль дистрибутива (2pd) защищенной программы (2p) по п.30, отличающийся тем, что первая часть дистрибутива (2pds) выполнена в форме дистрибутива на физическом носителе, например компакт-диске, или в виде файлов, передаваемых по сети.
32. Ансамбль дистрибутива (2pd) защищенной программы (2p) по п.30, отличающийся тем, что вторая часть дистрибутива (2pdu) выполнена в виде незадействованных устройств (60), предперсонализированных устройств (66) или устройств обработки и хранения и содержит по меньшей мере одну карту (7) с микрочипом.
33. Устройство обработки и хранения, характеризующееся тем, что содержит часть второй части (2pou) объектного кода, необходимого для преобразования предперсонализированного устройства (66) согласно п.27 в устройство обработки и хранения, выполненное согласно п.28.
34. Комплект устройств обработки и хранения, характеризующийся тем, что устройства обработки и хранения, используемые совместно, содержат часть второй части (2pou) объектного кода, необходимую для преобразования предперсонализированного устройства (66) согласно п.27 в устройство обработкш ш хранения, выполненное согласно п.28.
Текст
005466 Область техники Настоящее изобретение относится к области систем обработки данных в широком смысле этого слова, а точнее говоря, изобретение касается средств защиты от неавторизованного использования программы, функционирующей в указанных системах обработки данных. Уровень техники Предмет настоящего изобретения касается, более конкретно, способов защиты программ от неавторизованного использования на основе устройства обработки и хранения, причем это устройство обычно реализуется в виде карты с микрочипом или аппаратного ключа на порту USB. В указанной области техники основная проблема связана с неавторизованным использованием программ пользователями, которые не приобрели право на их использование (лицензию). Такое незаконное использование программ наносит явный ущерб производителям и продавцам программ и/или любым иным лицам, которые используют такие программы в своих изделиях. Во избежание создания таких незаконных копий для защиты подобных программ был предложен ряд решений на основе имеющихся технических возможностей. Так, известен способ защиты, состоящий в использовании аппаратного защитного элемента - физического устройства, называемого электронным защитным ключом-заглушкой ("dongle"). Такой защитный ключ должен гарантировать выполнение программы только в присутствии ключа. Приходится, однако, констатировать, что это решение неэффективно, так как легко обходится. Злоумышленник может при помощи специальных приемов, например дизассемблирования, удалить команды контроля защитного ключа. При этом становится возможным изготовить незаконные копии модифицированных версий программы, не имеющих никакой защиты. Кроме того, это решение нельзя распространить на все программы в силу сложности подключения более чем двух защитных ключей к одной системе. Сущность изобретения Соответственно задача, решаемая настоящим изобретением, заключается в устранении указанных недостатков путем создания способа защиты программы от неавторизованного доступа, использующего устройство обработки и хранения, специально созданное для этой цели, в той мере, в которой наличие такого устройства необходимо для полноценной работы программы. Решение данной задачи достигнуто в соответствии с изобретением созданием способа защиты (на основе по меньшей мере одного незадействованного устройства, содержащего, по меньшей мере, средства обработки и средства запоминания) от неавторизованного использования уязвимой программы, которая функционирует в системе обработки данных. Способ согласно изобретению состоит в том, что в фазе защиты определяют по меньшей мере одну характеристику выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве, по меньшей мере один критерий, который должен выполняться, по меньшей мере, для одной характеристики выполнения программы, средства детектирования, которые следует применять в устройстве и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию, и средства управления, называемые далее также средствами принуждения, которые следует применять в устройстве и которые позволяют проинформировать систему обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий; конструируют средства эксплуатации, позволяющие устройству задействовать средства детектирования и средства управления (принуждения); создают защищенную программу посредством выбора по меньшей мере одной характеристики выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы,посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы,посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы,посредством выбора по меньшей мере одного фрагмента кода уязвимой программы, содержащего по меньшей мере один выбранный алгоритм,посредством создания исходного кода защищенной программы на основе кода уязвимой программы модифицированием по меньшей мере одного выбранного фрагмента кода уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы первая выполняемая часть выполняется в системе обработки данных, а вторая выполняемая часть выполняется в устройстве, которое также содержит средства обработки, полученном из незадействованного устройства после загрузки информации, вторая выполняемая часть выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма, и в ходе выполнения защищенной программы по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части, и несоблюдение критерия приводит к модификации выполнения защищенной программы;-1 005466 и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы реализуется первая выполняемая часть, которая выполняется в системе обработки данных, и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы, и второй части объектного кода защищенной программы, содержащей средства эксплуатации, позволяющие применять также средства детектирования и средства принуждения, причем вторая часть объектного кода такова, что после загрузки в незадействованное устройство, в ходе выполнения защищенной программы реализуется вторая выполняемая часть, посредством которой контролируется по меньшей мере одна характеристика выполнения программы, и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы; и загружают вторую часть объектного кода в незадействованное устройство с получением устройства,а в фазе (U) использования, в ходе которой происходит выполнение защищенной программы,в присутствии устройства,если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы, соблюдены, допускают номинальное функционирование указанных фрагментов защищенной программы и, следовательно, номинальное функционирование защищенной программы,а если по меньшей мере один из критериев, отвечающих характеристике контролируемого выполнения одного фрагмента защищенной программы, не соблюден, информируют систему обработки данных об указанном несоблюдении и/или модифицируют функционирование фрагмента защищенной программы таким образом, чтобы функционирование защищенной программы было изменено; тогда как при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на запуск выполнения в устройстве функциональной возможности выбранного алгоритма, не обеспечивается возможность корректно ответить на этот запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной. В соответствии с вариантом осуществления способа по изобретению: в фазе защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, переменную для количественного контроля использования одной функциональной возможности программы,в качестве критерия, который необходимо соблюдать, по меньшей мере одно пороговое значение,связанное с каждой переменной для количественного контроля,и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля; конструируют средства эксплуатации, позволяющие устройству применять средства обновления; и модифицируют защищенную программу посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы,посредством выбора по меньшей мере одной функциональной возможности защищенной программы, использование которой можно проконтролировать с использованием переменной для количественного контроля, по меньшей мере одной переменной для количественного контроля, которая служит для количественной характеристики использования упомянутой функциональной возможности, по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования указанной функциональной возможности, и по меньшей мере одного метода обновления значения указанной переменной для количественного контроля в зависимости от использования указанной функциональной возможности,и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы переменная для количественного контроля обновляется посредством второй выполняемой части в зависимости от использования указанной функциональной возможности и учитывается по меньшей мере одно превышение порогового значения,а в фазе использования в присутствии устройства, в случае, когда обнаружено по меньшей мере одно превышение порогового значения, соответствующее по меньшей мере одному пределу использования,информируют об этом систему обработки данных и/или модифицируют функционирование фрагмента защищенной программы таким образом, чтобы функционирование защищенной программы было изменено. В соответствии с другим вариантом осуществления способа согласно изобретению в фазе защиты определяют несколько соответствующих пороговых значений по меньшей мере для одной переменной для количественного контроля и различные средства принуждения, соответствующие каждому из указанных порогов; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороговых значений, соответствующих различным пределам-2 005466 использования функциональной возможности, посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы превышения различных пороговых значений учитываются посредством второй выполняемой части различными способами,а в фазе использования в присутствии устройства в случае, когда обнаружено превышение первого порогового значения, дают команду защищенной программе не использовать впредь соответствующую функциональную возможность, а в случае, когда обнаружено превышение второго порогового значения,делают невыполнимой соответствующую функциональную возможность и/или по меньшей мере часть защищенной программы. В соответствии с еще одним вариантом осуществления способа согласно изобретению в фазе защиты определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля; конструируют средства эксплуатации, позволяющие также устройству задействовать средства перезагрузки; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование одной функциональной возможности, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование,и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем указанная модификация такова, что в фазе перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено,а в фазе перезагрузки обновляют по меньшей мере одну выбранную переменную для количественного контроля и по меньшей мере одно соответствующее пороговое значение так, чтобы разрешить по меньшей мере одно дополнительное использование функциональной возможности. В соответствии с вариантом осуществления способа согласно изобретению: в фазе защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, профиль использования программы и в качестве критерия, который требуется соблюдать, по меньшей мере один признак выполнения программы; и модифицируют защищенную программу посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одного профиля использования программы,посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования,и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы вторая выполняемая часть соблюдает все выбранные признаки выполнения,а в фазе использования в присутствии устройства в случае, если обнаружено, что не соблюдается хотя бы один признак выполнения, информируют об этом систему обработки данных и/или модифицируют функционирование части защищенной программы так, чтобы функционирование защищенной программы было изменено. В соответствии с дальнейшим вариантом осуществления способа согласно изобретению в фазе защиты определяют набор инструкций, инструкции из состава которого могут быть выполнены в устройстве,набор команд инструкций для указанного набора инструкций, причем команды инструкций могут быть выполнены в системе обработки данных, вызывая в устройстве выполнение инструкций,в качестве профиля использования - сцепление инструкций,в качестве признака выполнения - желаемое сцепление для выполнения инструкций,в качестве средств детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому,в качестве средств принуждения - средства, позволяющие проинформировать систему обработки данных и/или модифицировать функционирование фрагмента защищенной программы, если сцепление инструкций не соответствует желаемому; конструируют средства эксплуатации, позволяющие устройству выполнять инструкции из набора инструкций, причем выполнение указанных инструкций вызывается выполнением команд инструкций в системе обработки данных; и модифицируют защищенную программу посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, посредством преобразования элементарных функций в инструкции, посредством задания сцепления, которое должны соблюдать, по меньшей мере, некоторые из инструкций во время их выполнения в устройстве, и посредством преобразования элементарных команд в команды инструкций, соответствующих используемым инструкциям,-3 005466 а в фазе использования в присутствии устройства в случае, если обнаружено, что сцепление выполняемых в устройстве инструкций не соответствует желаемому, информируют об этом систему обработки данных и/или модифицируют функционирование фрагмента защищенной программы так, чтобы функционирование защищенной программы было изменено. В соответствии с другой предпочтительной формой реализации способа согласно изобретению в фазе защиты определяют в качестве набора инструкций - набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата,по меньшей мере для части инструкций, работающих на регистрах, часть, задающую функциональную возможность инструкции, и часть, задающую желаемое сцепление для выполнения инструкций и содержащую битовые поля, соответствующие полю идентификации инструкции и для каждого операнда инструкции полю флага и полю идентификации, предусмотренной для операнда,для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле предусмотренной идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр,в качестве средств детектирования - средства, позволяющие во время выполнения инструкции для каждого операнда, когда этого требует поле флага, контролировать равенство между полем генерируемой идентификации, соответствующим регистру, используемому указанным операндом, и полем предусмотренной идентификации начального адреса этого операнда,и в качестве средств принуждения - средства, позволяющие модифицировать результат выполнения инструкций, если по меньшей мере одно из контролируемых равенств ложно. В соответствии с предпочтительной формой реализации способа согласно изобретению в фазе защиты модифицируют защищенную программу посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы частично определяет состояние защищенной программы,посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве,и посредством создания первой части объектного кода защищенной программы, причем эта первая часть объектного кода такова, что в ходе выполнения защищенной программы по меньшей мере один фрагмент первой выполняемой части учитывает, что по меньшей мере одна переменная или по меньшей мере одна копия переменной находится в устройстве, и второй части объектного кода защищенной программы, причем эта вторая часть объектного кода такова, что после загрузки в устройство и в ходе выполнения защищенной программы появляется вторая выполняемая часть, при помощи которой по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной также находится в устройстве,а в фазе использования в присутствии устройства всякий раз, когда этого требует фрагмент первой выполняемой части, используют переменную или копию переменной, находящейся в устройстве так,чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа являлась полнофункциональной,а при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на использование переменной или копии переменной, находящейся в устройстве, не обеспечивается возможность корректного ответа на указанный запрос так, что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной. В соответствии с еще одной предпочтительной реализации способа согласно изобретению в фазе защиты определяют в качестве команды запуска - команду инструкции,в качестве зависимой функции - инструкцию,в качестве установочного параметра - по меньшей мере один аргумент для команды запуска, соответствующий, по меньшей мере частично, информации, переданной системой обработки данных на устройство, чтобы вызвать запуск соответствующей зависящей функции,метод переименования установочных параметров, позволяющий переименовать установочные параметры, чтобы получить команды запуска с переименованными установочными параметрами,и средства восстановления, предназначенные для применения в устройстве в фазе использования и позволяющие найти зависимую функцию, которую необходимо выполнить, исходя из переименованного установочного параметра; конструируют средства эксплуатации, позволяющие устройству задействовать средства восстановления; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы команд запуска,-4 005466 посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы посредством переименования установочных параметров выбранных команд запуска, чтобы скрыть идентичность соответствующих зависящих функций,и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы выполняются команды запуска с переименованными установочными параметрами, и второй части объектного кода защищенной программы, содержащей средства эксплуатации, использующие также средства восстановления, причем вторая часть объектного кода такова, что после загрузки в устройство, в ходе выполнения защищенной программы идентичность зависимых функций, выполнение которых вызвано первой выполняемой частью, восстанавливается посредством второй выполняемой части, а зависимые функции выполняются посредством второй выполняемой части,а в фазе использования в присутствии устройства всякий раз, когда этого требует команда запуска с переименованными установочными параметрами, содержащаяся во фрагменте первой выполняемой части, восстанавливают в устройстве идентичность соответствующей зависящей функции и выполняют ее так, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа являлась полнофункциональной; тогда как при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на запуск выполнения в устройстве зависящей функции, не обеспечивается возможность корректного ответа на указанный запрос так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной. В соответствии с одним из вариантов осуществления способа согласно изобретению в фазе защиты определяют по меньшей мере для одной зависящей функции семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска, переименованные установочные параметры которых являются различными; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной команды запуска с переименованными установочными параметрами,и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы посредством замены, по меньшей мере, переименованного установочного параметра команды запуска с выбранным установочным параметром на другой переименованный установочный параметр, что вызывает запуск зависящей функции из того же семейства. В соответствии с вариантом реализации способ согласно изобретению включает в фазе защиты определение по меньшей мере для одной зависящей функции семейства алгоритмически эквивалентных зависящих функций посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве,или посредством использования поля идентификации инструкции и полей идентификации, предусмотренных для операндов. В соответствии с вариантом реализации способа согласно изобретению: в фазе защиты определяют в качестве метода переименования установочных параметров - метод кодирования для кодировки установочных параметров,и в качестве средств восстановления - средства, применяющие метод декодирования для раскодирования переименованных установочных параметров и восстановления идентичности зависимых функций, которые требуется выполнить в устройстве. В соответствии с другой предпочтительной формой реализации способа согласно изобретению: в фазе защиты модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одного условного перехода, выполняемого по меньшей мере в одном выбранном алгоритме,посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы функциональная возможность по меньшей мере одного выбранного условного перехода выполняется,посредством второй выполняемой части в устройстве,и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы функциональная возможность по меньшей мере одного выбранного условного перехода выполняется в устройстве, и второй части объектного кода защищенной программы, причем вторая часть объектного кода такова, что после загрузки в устройство, в ходе выполнения защищенной программы реализуется вторая выполняемая часть,посредством которой выполняется функциональная возможность по меньшей мере одного выбранного условного перехода,а в фазе использования в присутствии устройства всякий раз, когда этого требует фрагмент первой выполняемой части, выполняют в устройстве функции по меньшей мере одного выбранного условного перехода таким образом, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа являлась полнофункциональной;-5 005466 а при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на выполнение функций условного перехода в устройстве, не обеспечивается возможность корректного ответа на указанный запрос так, что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной. В соответствии со следующим вариантом осуществления способа согласно изобретению в фазе защиты модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной серии выбранных условных переходов,посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве посредством второй выполняемой части,и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве, и второй части объектного кода защищенной программы, причем вторая часть объектного кода такова, что после загрузки в устройство в ходе выполнения защищенной программы реализуется вторая выполняемая часть, посредством которой выполняется глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов. Способ согласно изобретению позволяет также защитить использование программы путем применения устройства обработки и хранения, особенностью которого является способность содержать часть выполняемой программы. Отсюда следует, что всякая производная версия программы, которая попытается функционировать без устройства обработки и хранения, потребует воссоздания части программы,содержащейся в устройстве хранения в ходе выполнения. Как следствие эта производная версия программы не будет полнофункциональной. Перечень чертежей Другие различные свойства изобретения станут ясны из нижеследующего описания, приводимого со ссылкой на прилагаемые чертежи, на которых показаны, в качестве не исчерпывающих примеров,возможные варианты и формы реализации и использования изобретения. Фиг. 10 и 11 представляют собой функциональные блок-схемы, иллюстрирующие различные представления программы, соответственно незащищенной и защищенной способом согласно изобретению. На фиг. 20-22 приведены в качестве примеров различные формы выполнения устройства для осуществления способа по изобретению. Фиг. 30 и 31 представляют собой функциональные блок-схемы, поясняющие общий принцип способа согласно изобретению. Фиг. 40-43 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению,реализующий принцип защиты при помощи переменной. Фиг. 70-74 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению,реализующий принцип защиты при помощи детектирования и принуждения. Фиг. 80-85 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению,реализующий принцип защиты при помощи переименования. Фиг. 90-92 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению,реализующий принцип защиты при помощи условного перехода. Фиг. 100 представляет собой схему, иллюстрирующую различные фазы осуществления изобретения. На фиг. 110 приведен пример реализации системы, позволяющей реализовать стадию построения фазы защиты согласно изобретению. На фиг. 120 приведен пример реализации устройства предперсонализации, используемого в способе защиты согласно изобретению. На фиг. 130 приведен пример реализации системы, позволяющей осуществить стадию изготовления средств для фазы защиты согласно изобретению. На фиг. 140 приведен пример реализации системы, позволяющей применить способ защиты согласно изобретению. На фиг. 150 приведен пример реализации устройства персонализации, используемого в способе защиты согласно изобретению. Сведения, подтверждающие возможность осуществления изобретения В дальнейшем описании используются следующие определения. Система 3 обработки данных - это система, способная выполнять программу. Устройство обработки и хранения - устройство, способное получать данные, передаваемые системой 3 обработки данных, возвращать данные системе 3 обработки данных, хранить данные в тайне, по меньшей мере частично, и сохранять по меньшей мере их часть даже в случае, когда устройство отклю-6 005466 чено от питания, и осуществлять алгоритмическую обработку данных, причем данная обработка частично или полностью является секретной. Устройство 6 - устройство хранения или устройство обработки и хранения, реализующее способ согласно изобретению. Незадействованное устройство 60 - устройство, которое не использует способ согласно изобретению, но которое может получить информацию, превращающую его в устройство 6. Предперсонализированное устройство 66 представляет собой незадействованное устройство 60, получившее часть информации, которая позволяет ему после получения дополнительной информации быть преобразованным в устройство 6. Загрузка данных в незадействованное устройство 60 или в предперсонализированное устройство 66 соответствует передаче информации в незадействованное устройство 60 или в предперсонализированное устройство 66 и хранению указанных переданных данных. Передача информации может включать в себя изменение ее формата. Переменные, величина или функция, содержащиеся в системе 3 обработки данных, обозначаются в дальнейшем заглавными буквами, а переменные, величина или функция, содержащиеся в устройстве 6,обозначаются в дальнейшем строчными буквами."Защищенная программа" - программа, которая была защищена, по меньшей мере, на основе одного принципа защиты, реализованного в способе согласно изобретению."Уязвимая программа" - программа, которая не была защищена никаким из принципов защиты,реализованных в способе согласно изобретению. В случае, когда различие между уязвимой и защищенной программой несущественно, применяется термин "программа". Программа может быть представлена в различной форме в соответствии с моментом ее жизненного цикла, т.е. как исходный код, объектный код, дистрибутив, динамическое представление. Представление программы в виде исходного кода понимается как представление, дающее после преобразования представление в виде объектного кода. Представление в виде исходного кода может представляться на различных уровнях, от абстрактного концептуального уровня до уровня, непосредственно выполняемого системой обработки данных или устройством обработки и хранения. Объектное представление программы (представление на уровне объектного кода) отвечает уровню представления, на котором программа после переноса в дистрибутив и последующей загрузки в систему обработки данных или устройство обработки и хранения может быть выполнена. Это может быть, например, двоичный код, интерпретируемый код и т.п. Дистрибутив - физический или виртуальный носитель, содержащий объектное представление, причем этот дистрибутив должен быть предоставлен в распоряжение пользователя, чтобы позволить ему использовать программу. Динамическое представление соответствует выполнению программы с дистрибутива. Фрагмент программы отвечает какой-либо ее части и может, например, соответствовать одной или нескольким инструкциям (последовательным или нет), и/или одному или нескольким функциональным блокам (последовательным или нет), и/или одной или нескольким функциям, и/или одной или нескольким подпрограммам, и/или одному или нескольким модулям. Фрагмент программы может соответствовать и всей программе полностью. На фиг. 10 и 11 приведены различные представления соответственно уязвимой программы 2v в общем виде и программы 2 р, защищенной согласно изобретению. На фиг. 10 приведены различные представления уязвимой программы 2v, появляющиеся в ходе ее жизненного цикла. Уязвимая программа 2v может появляться в одном из различных видов, т.е. как исходный код 2vs; объектный код 2vo; дистрибутив 2vd, который может предоставляться обычно на физическом носителе, например на компакт-диске, или в виде файлов, передаваемых по сети (по стандартуGSM, по сети Интернет и т.п.); в виде динамического представления 2ve, соответствующего выполнению уязвимой программы 2v в системе 3 обработки данных любых известных типов, которые в классическом случае содержат по меньшей мере один процессор 4. Фиг. 11 иллюстрирует различные представления защищенной программы 2 р, появляющиеся в ходе ее жизненного цикла. Защищенная программа 2 р может также появляться в виде исходного кода (представления) 2ps, содержащего первую часть исходного кода, предназначенную для системы 3 обработки данных, и, возможно, вторую часть исходного кода, предназначенную для устройства 6, причем часть этих частей исходного кода может обычно содержаться в общих файлах; объектного представления 2 ро, содержащего первую часть 2pos объектного кода, предназначенную для системы 3 обработки данных, и, возможно, вторую часть 2pou объектного кода, предназначенную для устройства 6; дистрибутива 2pd, содержащего первую часть 2pds дистрибутива, содержащую первую часть 2pos объектного кода, причем эта первая часть 2pds дистрибутива предназначена для системы 3 обработки данных и может быть представлена обычно в форме дистрибутива на физическом носителе, например на-7 005466 компакт-диске, или в виде файлов, передаваемых по сети (по стандарту GSM, по сети Интернет и т.п.), и вторую часть 2pdu дистрибутива, представленного в виде по меньшей мере одного незадействованного устройства 60, или по меньшей мере одного предперсонализированного устройства 66, в которое была загружена часть второй части 2pou объектного кода и для которого пользователь должен завершить персонализацию путем загрузки дополнительной информации, чтобы получить устройство 6, причем эта дополнительная информация может поступать, например, путем загрузки или передачи по сети, или по меньшей мере одного устройства 6, в которое была загружена вторая часть 2pou объектного кода; или в виде динамического представления 2 ре, соответствующего выполнению защищенной программы 2 р. Это динамическое представление 2 ре содержит первую выполняемую часть 2pes, которая выполняется в системе 3 обработки данных, и вторую выполняемую часть 2 реu, которая выполняется в устройстве 6. В случае, когда различие между различными представлениями защищенной программы 2 р несущественно, используются выражения "первая часть защищенной программы" и "вторая часть защищенной программы". Реализация способа согласно изобретению в соответствии с динамическим представлением, проиллюстрированным на фиг. 11, использует устройство 1 р защиты, содержащее систему 3 обработки данных, связанную линией 5 связи с устройством 6. Система 3 обработки данных может быть любого типа и содержит в обычном варианте по меньшей мере один процессор 4. Система 3 обработки данных может быть компьютером или быть частью, например, различных машин, устройств, стационарных или подвижных изделий, в том числе любых транспортных средств. Линия 5 связи может быть осуществлена любым возможным способом, например, по линии последовательной передачи, по шине USB, по радио,по оптическому каналу, по сети или через прямое электрическое соединение со схемой системы 3 обработки данных и т.п. Следует отметить, что устройство 6 может физически находиться внутри той же интегральной схемы, что и процессор 4 системы 3 обработки данных. В этом случае устройство 6 может рассматриваться как сопроцессор по отношению к процессору 4 системы обработки данных, а линия 5 связи является внутренней линией связи в интегральной схеме. На фиг. 20-22 приведены в качестве примеров, которые не исчерпывают возможные варианты, различные формы реализации устройства 1 р защиты, позволяющего реализовать способ защиты, соответствующий изобретению. В примере реализации по фиг. 20 устройство 1 р защиты содержит в качестве системы 3 обработки данных компьютер и в качестве устройства 6 карту 7 с микрочипом и ее интерфейс 8, обычно называемый устройством чтения карт. Компьютер 3 связан с устройством 6 посредством линии 5 связи. В ходе выполнения защищенной программы 2 р первая выполняемая часть 2pes, которая выполняется в системе 3 обработки данных, и вторая выполняемая часть 2 реu, которая выполняется в карте 7 с микрочипом и в ее интерфейсе 8, должны быть функциональными, чтобы защищенная программа 2 р была полнофункциональна. В примере реализации по фиг. 21 устройство 1 р защиты содержится в изделии 9 общего вида, содержащем различные органы 10, адаптированные к функции или к функциям, реализуемым таким изделием 9. Устройство 1 р защиты содержит, с одной стороны, систему 3 обработки данных, встроенную в изделие 9, и, с другой стороны, устройство 6, связанное с изделием 9. Чтобы изделие 9 было полнофункциональным, защищенная программа 2 р должна быть полностью функциональной. Так, в ходе выполнения защищенной программы 2 р и первая выполняемая часть 2pes, которая выполняется в системе 3 обработки данных, и вторая выполняемая часть 2 реu, которая выполняется в устройстве 6, должны быть работоспособны. Эта защищенная программа 2 р позволяет, следовательно, непрямым образом защитить от неавторизованного использования изделие 9 или одну из его функциональных возможностей. Изделие 9 может быть, например, установкой, системой, машиной, игрушкой, электробытовым прибором, телефоном. В примере реализации по фиг. 22 устройство 1 р защиты содержит множество компьютеров, а также часть коммуникационной сети. Система 3 обработки данных представляет собой первый компьютер, связанный посредством линии 5 связи сетевого типа с устройством 6, которое представляет собой второй компьютер. Для реализации изобретения второй компьютер 6 используется как сервер лицензий для защищенной программы 2 р. В ходе выполнения защищенной программы 2 р и первая выполняемая часть 2pes,которая выполняется в первом компьютере 3, и вторая выполняемая часть 2 реu, которая выполняется во втором компьютере 6, должны быть функциональными, чтобы защищенная программа 2 р была полнофункциональна. Фиг. 30 позволяет пояснить более точно способ защиты согласно изобретению. Следует отметить,что уязвимая программа 2v рассматривается как выполняемая полностью в системе 3 обработки данных. Напротив, в случае реализации защищенной программы 2 р система 3 обработки данных содержит средства 12 передачи, связанные линией 5 связи со средствами 13 передачи, составляющими часть устройст-8 005466 ва 6, что позволяет сообщаться между собой первой выполняемой части 2pes и второй выполняемой части 2peu защищенной программы 2 р. Следует иметь в виду, что средства 12, 13 передачи реализованы программно или материально и способны обеспечить и, возможно, оптимизировать передачу данных между системой 3 обработки данных и устройством 6. Эти средства 12, 13 передачи приспособлены для того, чтобы позволить воспользоваться защищенной программой 2 р, которая является предпочтительно независимой от типа применяемой линии 5 связи. Эти средства 12, 13 передачи не относятся к предмету изобретения и не описываются более детально, так как они хорошо известны специалистам. Первая часть защищенной программы 2 р содержит команды. В ходе выполнения защищенной программы 2 р выполнение этих команд первой выполняемой частью 2pes позволяет осуществить связь между первой выполняемой частью 2pes и второй выполняемой частью 2 реu. В дальнейшем описании эти команды представлены в виде IN, OUT илиTRIG. Как показано на фиг. 31, чтобы позволить реализацию второй выполняемой части 2peu защищенной программы 2 р, устройство 6 содержит средства 14 защиты. В случае если устройство 6 является запоминающим устройством, средства 14 защиты содержат средства 15 запоминания. В случае если устройство 6 является устройством обработки и хранения, средства 14 защиты содержат средства 15 запоминания и средства 16 обработки. Для упрощения дальнейшего описания будем считать, что в ходе выполнения защищенной программы 2 р устройство 6 присутствует или устройство 6 отсутствует. В действительности, устройство 6 в том случае, когда содержит средства 14 защиты, не приспособленные к выполнению второй выполняемой части 2peu защищенной программы 2 р, также рассматривается как отсутствующее каждый раз, когда выполнение защищенной программы 2 р не является корректным. Иными словами устройство 6, физически присутствующее и содержащее средства 14 защиты, приспособленные к выполнению второй выполняемой части 2peu защищенной программы 2 р, всегда рассматривается как присутствующее; устройство 6, физически присутствующее, но содержащее неприспособленные средства 14 защиты,т.е. не позволяющие осуществить корректную реализацию второй выполняемой части 2peu защищенной программы 2 р, рассматривается как присутствующее, если оно функционирует корректно, и как отсутствующее, если оно не функционирует корректно; устройство 6, физически отсутствующее, всегда рассматривается как отсутствующее. В случае если устройство 6 состоит из карты 7 с микрочипом и ее интерфейса 8, средства 13 передачи разделяются на две части, из которых одна находится на интерфейсе 8, а другая - на карте 7 с микрочипом. В этом примере реализации отсутствие карты 7 с микрочипом рассматривается как эквивалент отсутствия устройства 6. Иными словами, в отсутствие карты 7 с микрочипом и/или ее интерфейса 8 средства 14 защиты недоступны и, следовательно, не позволяют осуществить выполнение второй выполняемой части 2peu защищенной программы, так что защищенная программа 2 р не является полнофункциональной. Согласно изобретению способ защиты направлен на реализацию принципа защиты, названного "детектирование и принуждение", описание которого выполнено со ссылкой на фиг. 70-74. Для реализации принципа защиты посредством детектирования и принуждения определяются по меньшей мере одна характеристика выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве 6; по меньшей мере один критерий, который требуется соблюдать по меньшей мере для одной характеристики выполнения программы; средства 17 детектирования, которые необходимо применять в устройстве 6 и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию; средства 18 принуждения, которые необходимо применять в устройстве 6 и которые позволяют проинформировать систему 3 обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий. Для реализации принципа защиты при помощи детектирования и принуждения конструируют также средства эксплуатации, позволяющие преобразовать незадействованное устройство 60 в устройство 6,по меньшей мере, реализующее средства 17 детектирования и средства 18 принуждения. На фиг. 70 показаны средства, необходимые для реализации принципа защиты при помощи детектирования и принуждения. Устройство 6 содержит средства 17 детектирования и средства 18 принуждения, принадлежащие средствам 16 обработки. Средства 18 принуждения получают информацию о несоблюдении критерия от средств 17 детектирования. Точнее говоря, средства 17 детектирования используют информацию, исходящую от средств 13 передачи и/или от средств 15 запоминания и средств 16 обработки, чтобы соблюдалась одна или несколько характеристик выполнения программы. Каждой характеристике выполнения программы сопоставляется по меньшей мере один критерий, который требуется соблюдать.-9 005466 В случае если обнаружено, что по меньшей мере одна характеристика выполнения программы не удовлетворяет по меньшей мере одному критерию, средства 17 детектирования информируют об этом средства 18 принуждения. Эти средства 18 принуждения адаптированы для изменения соответствующим образом состояния устройства 6. Для реализации принципа защиты с помощью детектирования и принуждения должны быть выбраны также по меньшей мере одна характеристика выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы; по меньшей мере один критерий, который требуется соблюдать по меньшей мере для одной выбранной характеристики выполнения программы; в исходном коде 2vs уязвимой программы по меньшей мере один алгоритм, для которого требуется контролировать по меньшей мере одну характеристику выполнения программы; в исходном коде 2vs уязвимой программы по меньшей мере один фрагмент, содержащий по меньшей мере один выбранный алгоритм. При выполнении этих условий по меньшей мере один выбранный фрагмент кода 2vs уязвимой программы модифицируется, чтобы получить исходный код 2ps защищенной программы. Эта модификация такова, что именно в ходе выполнения защищенной программы 2 р по меньшей мере один фрагмент первой выполняемой части 2pes, которая выполняется в системе 3 обработки данных, учитывает, что по меньшей мере одна характеристика выполнения выбранной программы должна быть проконтролирована, по меньшей мере частично, в устройстве 6; вторая выполняемая часть 2 реu, которая выполняется в устройстве 6, контролирует, по меньшей мере частично, одну характеристику выполнения выбранной программы. В ходе выполнения программы 2 р, защищенной при помощи принципа детектирования и принуждения, в присутствии устройства 6 имеет место следующая ситуация: если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы 2 р, соблюдены, эти модифицированные фрагменты защищенной программы 2 р функционируют должным образом, и, следовательно, защищенная программа 2 р функционирует должным образом; если же по меньшей мере один из критериев, отвечающий характеристике контролируемого выполнения одного фрагмента защищенной программы 2 р, не соблюден, система 3 обработки данных информируется об этом и/или функционирование фрагмента защищенной программы 2 р модифицируется таким образом, чтобы функционирование защищенной программы 2 р было изменено. Естественно, что в отсутствие устройства 6, по меньшей мере один запрос одного фрагмента первой выполняемой части 2pes защищенной программы 2 р на использование устройства 6 не может быть корректно выполнен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2 р не является полнофункциональной. Для реализации принципа защиты с помощью детектирования и принуждения предпочтительно использовать два типа характеристики выполнения программы. Первый тип характеристики выполнения программы соответствует переменной контроля выполнения программы, а второй тип соответствует профилю использования программы. Эти оба типа характеристик могут использоваться независимо или в сочетании. Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики выполнения программы переменную контроля выполнения программы, должны быть определены в средствах 15 запоминания - возможность запомнить по меньшей мере одну переменную контроля,служащую в качестве количественной характеристики использования по меньшей мере одной функциональной возможности программы; в средствах 17 детектирования - возможность наблюдать по меньшей мере одно пороговое значение, связанное с каждой переменной контроля; средства обновления, позволяющие обновить каждую переменную контроля в зависимости от использования функциональной возможности, с которой она связана. Конструируют также средства эксплуатации, которые задействуют, кроме средств 17 детектирования и средств 18 принуждения, также средства обновления. Кроме того, в исходном коде 2vs уязвимой программы выбираются по меньшей мере одна функциональная возможность уязвимой программы 2v, использование которой можно проконтролировать с помощью переменной для количественного контроля; по меньшей мере одна переменная для количественного контроля, служащая в качестве количественной характеристики указанной функциональной возможности; по меньшей мере одно пороговое значение, связанное с переменной для количественного контроля и соответствующее пределу использования указанной функциональной возможности; и по меньшей мере один метод обновления переменной для количественного контроля в соответствии с использованием указанной функциональной возможности.-10 005466 Исходный код 2vs уязвимой программы затем модифицируется, чтобы получить исходный код 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2peu обновляет значение переменной для количественного контроля в соответствии с использованием указанной функциональной возможности; и принимает во внимание по меньшей мере одно превышение порогового значения. Иными словами, в ходе выполнения защищенной программы 2 р значение переменной для количественного контроля обновляется в соответствии с использованием указанной функциональной возможности, и в случае превышения порогового значения средства 17 детектирования информируют об этом средства 18 принуждения, которые принимают решение, приспособленное к тому, чтобы проинформировать систему 3 обработки данных и/или модифицировать обработку, осуществляемую средствами 16 обработки. Это позволяет модифицировать функционирование фрагмента защищенной программы 2 р таким образом, чтобы функционирование защищенной программы 2 р было изменено. Для реализации первого предпочтительного варианта реализации принципа защиты при помощи детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля, определяют по меньшей мере для одной переменной для количественного контроля несколько соответствующих пороговых значений; и различные средства принуждения, соответствующие каждому из этих пороговых значений. В исходном коде 2vs уязвимой программы выбираются также по меньшей мере одна переменная для количественного контроля, служащая в качестве количественной характеристики использования по меньшей мере одной функциональной возможности программы, с которой должны быть связаны несколько пороговых значений, соответствующих различным пределам использования указанной функциональной возможности; и по меньшей мере два пороговых значения, связанных с переменной для количественного контроля. Исходный код 2vs уязвимой программы затем модифицируется, чтобы получить исходный код 2ps защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2peu обновляет значение переменной для количественного контроля в соответствии с использованием указанной функциональной возможности; и по-разному учитывает превышения различных пороговых значений. Иными словами, в обычном случае в ходе выполнения защищенной программы 2 р при превышении первого порогового значения устройство 6 информирует систему 3 обработки данных, давая команду защищенной программе 2 р более не использовать эту функциональную возможность. Если же защищенная программа 2 р продолжает использовать эту функциональную возможность, то может быть превышено второе пороговое значение. В случае превышения второго порогового значения средства 18 принуждения могут сделать неработоспособной выбранную функциональную возможность и/или сделать неработоспособной защищенную программу 2 р. Для реализации второго предпочтительного варианта принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля,определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля. Конструируют также средства эксплуатации, где применены, кроме средств 17 детектирования,средств 18 принуждения и средств обновления, также и средства перезагрузки. Кроме того, в исходном коде 2vs уязвимой программы выбирается по меньшей мере одна переменная для количественного контроля, служащая для ограничения использования по меньшей мере одной функциональной возможности программы, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование. Исходный код 2vs уязвимой программы затем модифицируется, чтобы получить исходный код 2ps защищенной программы, причем эта модификация такова, что в фазе, названной фазой перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено. В фазе перезагрузки происходит обновление по меньшей мере одной выбранной переменной для количественного контроля и/или по меньшей мере одного связанного порогового значения, чтобы разрешить по меньшей мере одно дополнительное использование соответствующей функциональной возможности. Другими словами, в фазе перезагрузки обеспечивается возможность разрешить дополнительные использования, по меньшей мере, одной функциональной возможности защищенной программы 2 р. Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики профиль использования программы, в качестве критерия, который требуется соблюдать для этого профиля использования, должен быть определен по меньшей мере один признак выполнения программы. Кроме того, в исходном коде 2vs уязвимой программы выбирают-11 005466 по меньшей мере один профиль использования, который требуется контролировать; и по меньшей мере один признак выполнения, который должен соблюдаться по меньшей мере в одном профиле использования. Исходный код 2vs уязвимой программы затем модифицируется, чтобы получить исходный код 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2peu соблюдает все выбранные признаки выполнения. Другими словами, устройство 6 само контролирует тот способ, которым выполняется вторая выполняемая часть 2peu, и может информировать систему 3 обработки данных и/или модифицировать функционирование защищенной программы 2 р в случае, если не соблюдается хотя бы один критерий. В ходе выполнения программы 2 р, защищенной на основе данного принципа, в присутствии устройства 6 имеет место следующая ситуация: если все признаки выполнения всех модифицированных фрагментов защищенной программы 2 р соблюдены, то эти модифицированные фрагменты защищенной программы 2 р функционируют должным образом, и, следовательно, защищенная программа 2 р функционирует должным образом; если же хотя бы один признак выполнения одного фрагмента защищенной программы 2 р не соблюден, об этом информируется система 3 обработки данных и/или функционирование фрагмента защищенной программы 2 р модифицируется таким образом, чтобы функционирование защищенной программы 2 р было изменено. Можно предусмотреть контроль различных признаков выполнения, например, контроль наличия инструкций, содержащих генератор меток, или контроль сцепления выполнения по меньшей мере одной части инструкций. Для реализации принципа защиты с помощью детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций, определяют набор инструкций, инструкции из состава которого могут быть выполнены в устройстве 6; набор команд инструкций для этого набора инструкций, причем эти команды инструкций могут быть выполнены в системе 3 обработки данных. Выполнение каждой из этих команд инструкций в системе 3 обработки данных вызывает в устройстве 6 выполнение соответствующей инструкции; средства 17 детектирования, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому; средства 18 принуждения, позволяющие проинформировать систему 3 обработки данных и/или модифицировать выполнение программы, если сцепление инструкций не соответствует желаемому. Конструируют также средства эксплуатации, позволяющие устройству 6 выполнять инструкции из набора инструкций, причем выполнение этих инструкций вызывается выполнением команд инструкций в системе 3 обработки данных. Кроме того, в исходном коде 2vs уязвимой программы выбирается по меньшей мере один алгоритм,который должен быть вынесен в устройство 6 и для которого следует контролировать сцепление по меньшей мере части инструкций. Исходный код 2vs уязвимой программы затем модифицируется, чтобы получить исходный код 2ps защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2peu выполняет, по меньшей мере, функциональную возможность выбранного алгоритма; выбранный алгоритм разлагается на инструкции; задано сцепление, которое должны соблюдать, по меньшей мере, некоторые из инструкций в ходе их выполнения в устройстве 6; первая выполняемая часть 2pes защищенной программы 2 р выполняет команды инструкций, которые запускают выполнение инструкций в устройстве 6. В ходе выполнения программы 2 р, защищенной на основе этого принципа, в присутствии устройства 6 имеет место следующая ситуация: если сцепление инструкций всех модифицированных фрагментов защищенной программы 2 р соответствует желаемому, эти модифицированные фрагменты защищенной программы 2 р функционируют должным образом, и, следовательно, защищенная программа 2 р функционирует должным образом; если же сцепление инструкций фрагмента защищенной программы 2 р, выполняемых в устройстве 6, не соответствует желаемому, то система 3 обработки данных информируется об этом и/или функционирование фрагмента защищенной программы 2 р модифицируется таким образом, чтобы функционирование защищенной программы 2 р было изменено. На фиг. 71 приведен пример реализации принципа защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций в случае, если желаемое сцепление соблюдено. Первая выполняемая часть 2pes защищенной программы 2 р, выполняемая в системе 3 обработки данных, выполняет команды CIi, инструкций, что вызывает в устройстве 6 выполнение инструкций ii,относящихся к набору инструкций. В наборе инструкций, по меньшей мере, некоторые из инструкций содержат часть, задающую функциональную возможность инструкции, и часть, позволяющую проверять-12 005466 желаемое сцепление для выполнения инструкций. В этом примере команды CIi инструкций представлены как TRIG(ii), а желаемое сцепление для выполнения инструкций есть in, in+1 и in+2. Выполнение в устройстве 6 инструкции in дает результат а, а выполнение инструкции in+1 дает результат b. Инструкция in+2 использует в качестве операнда результаты а и b инструкций in и in+1, а ее выполнение дает результат с. С учетом того, что это сцепление инструкций, выполняемых в устройстве 6, соответствует желаемому, функционирование защищенной программы 2 р соответствует нормальному или номинальному режиму. На фиг. 72 приведен пример реализации принципа защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций в случае, если желаемое сцепление не соблюдено. Согласно этому примеру желаемое сцепление для выполнения инструкций есть всегда in, in+1 и in+2. Однако сцепление выполнения инструкций модифицируется заменой инструкции in на инструкцию i'n таким образом, что действительно выполняемое сцепление есть i'n, in+i и in+2. Выполнение инструкции i'n дает результат а, то есть тот же результат, что и выполнение инструкции in. Однако не позднее, чем при выполнении инструкции in+2, средства 17 детектирования обнаруживают, что инструкция i'n не соответствует желаемой инструкции для выработки результата а, используемого в качестве операнда для инструкции in+2. Средства 17 детектирования информируют об этом средства 18 принуждения, которые модифицируют, как следствие, функционирование инструкции in+2, таким образом, что выполнение инструкции in+2 дает результат с', который может отличаться от с. Разумеется, если выполнение инструкции i'n дает результат а', отличный от результата а инструкцииin, ясно, что результат выполнения инструкции in+2 может также отличаться от с. Следовательно, если сцепление выполнения инструкций, выполняемых в устройстве 6, не соответствует желаемому, можно получить модификацию функционирования защищенной программы 2 р. На фиг. 73 и 74 показан предпочтительный вариант реализации принципа защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций. В соответствии с этим предпочтительным вариантом определяется набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата. Как показано на фиг. 73, по меньшей мере для части инструкций, работающих на регистрах, определена часть PF, задающая функциональную возможность инструкции, и часть РЕ, задающая желаемое сцепление для выполнения инструкций. Часть PF соответствует коду операций, известному для специалиста. Часть РЕ, определяющая желаемое сцепление, содержит битовые поля, соответствующие полю СII идентификации инструкции; и для каждого операнда k инструкции, где k пробегает значения от 1 до K, K - число операндов инструкции: полю CDk флага, указывающему, следует ли проверять происхождение операнда k,и полю CIPk идентификации, предусмотренной для операнда и указывающей на ожидаемую идентичность инструкции, которая сгенерировала содержимое операнда k. Как показано на фиг. 74, набор инструкций содержит V регистров, принадлежащих средствам 16 обработки, где каждый регистр назван Rv (v пробегает значения от 1 до V). Для каждого регистра Rv определяется два поля, а именно функциональное поле CFV, известное специалисту и позволяющее хранить результат выполнения инструкций; и поле CIGV генерируемой идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр, т.е. сгенерировавшей содержимое функционального поля CFV. Это поле CIGV генерируемой идентификации обновляется автоматически вместе с содержимым поля СII идентификации инструкции, сгенерировав функциональное полеCFV. Поле CIGV генерируемой идентификации не является ни доступным, ни модифицируемым для любой другой инструкции и служит исключительно для средств 17 детектирования. В ходе выполнения инструкции средства 17 детектирования выполняют для каждого операнда k следующие операции: считывается поле CDk флага; если этого требует поле CDk флага, то считываются оба поля: поле CIPk предусмотренной идентификации и поле CIGV генерированной идентификации, соответствующее регистрам, используемым операндом k; проверяется равенство обоих полей СIРk и CIGV; и если равенство ложно, то средства 17 детектирования считают, что сцепление выполнения инструкций не соблюдено. Средства 18 принуждения должны позволять модифицировать результат выполнения инструкций,когда средства 17 детектирования проинформируют их о несоблюдении сцепления инструкций. Пред-13 005466 почтительная реализация состоит в том, чтобы модифицировать функциональную часть PF выполняемой инструкции или функциональную часть PF последующих инструкций. Согласно другой предпочтительной характеристике изобретения способ защиты направлен на реализацию так называемого принципа защиты при помощи переменной, описание которого дано со ссылкой на фиг. 40-43. Для реализации принципа защиты при помощи переменной в исходном коде 2vs уязвимой программы выбирается по меньшей мере одна переменная, которая в ходе выполнения уязвимой программы 2v частично определяет ее состояние. Под состоянием программы понимается совокупность информации, на данный момент необходимой для полного выполнения этой программы. Таким образом, отсутствие указанной выбранной переменной препятствует полному выполнению этой программы. Выбирается также по меньшей мере один фрагмент исходного кода 2vs уязвимой программы, содержащий по меньшей мере одну выбранную переменную. По меньшей мере один выбранный фрагмент кода 2vs уязвимой программы в этом случае модифицируется, чтобы получить исходный код 2ps защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2 р, по меньшей мере, один фрагмент первой выполняемой части 2pes, который выполняется в системе 3 обработки данных, учитывает, что по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной находится в устройстве 6. На фиг. 40 приведен пример представления уязвимой программы 2v. В этом примере в ходе выполнения уязвимой программы 2v в системе 3 обработки данных имеют место в момент t1 присвоение значения X переменной V1, что представлено как V1 Х; в момент t2 присвоение значения переменной V1 переменной Y, что представлено как YV1; в момент t3 присвоение значения переменной V1 переменной Z, что представлено как ZV1. На фиг. 41 приведен пример первой формы реализации изобретения, для которой переменная находится в устройстве 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р в присутствии устройства 6 осуществляются в момент t1 выполнение команды передачи, вызывающее передачу данного X от системы 3 обработки данных к переменной v1, расположенной в средствах 15 запоминания устройства 6, причем эта команда передачи представлена как OUT(v1, X) и соответствует по завершении присвоению значения X переменной v1; в момент t2 выполнение команды передачи, вызывающее передачу значения переменной v1, находящейся в устройстве 6, системе 3 обработки данных, чтобы присвоить ее значение переменной Y, причем эта команда передачи представлена как IN(v1) и соответствует по завершении присвоению значенияv1 переменной Y; в момент t3 выполнение команды передачи, вызывающее передачу значения переменной v1, находящейся в устройстве 6, системе 3 обработки данных, чтобы присвоить ее значение переменной Z, причем эта команда передачи представлена как IN(v1) и соответствует по завершении присвоению значенияv1 переменной Z. Следует отметить, что в ходе выполнения защищенной программы 2 р по меньшей мере одна переменная находится в устройстве 6. Так, когда этого требует часть первой выполняемой части 2pes защищенной программы 2 р в присутствии устройства 6 значение этой переменной, находящейся в устройстве 6, передается системе 3 обработки данных, чтобы быть использованной первой выполняемой частью 2pes защищенной программы 2 р таким образом, чтобы эта часть выполнялась корректно, и, следовательно, защищенная программа 2 р являлась полнофункциональной. На фиг. 42 приведен пример второй формы реализации изобретения, для которой копия переменной находится в устройстве 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р в присутствии устройства 6 осуществляются в момент t1 присвоение значения X переменной V1, находящейся в системе 3 обработки данных, а также выполнение команды передачи, вызывающее передачу данного X от системы 3 обработки данных к переменной v1, расположенной в средствах 15 запоминания устройства 6, причем эта команда передачи представлена как OUT(v1, X); в момент t2 - присвоение значения переменной V1 переменной Y; в момент t3 - выполнение команды передачи, вызывающее передачу значения переменной v1, находящейся в устройстве 6, системе 3 обработки данных, чтобы присвоить ее значение переменной Z, причем эта команда передачи представлена как IN(v1). Следует отметить, что в ходе выполнения защищенной программы 2 р по меньшей мере одна копия одной переменной находится в устройстве 6. Так, когда этого требует часть первой выполняемой части 2pes защищенной программы 2 р, в присутствии устройства 6 значение этой копии переменной, находящейся в устройстве 6, передается системе 3 обработки данных, чтобы быть использованной первой выполняемой частью 2pes защищенной про-14 005466 граммы 2 р таким образом, чтобы эта часть выполнялась корректно, и, следовательно, защищенная программа 2 р являлась полнофункциональной. На фиг. 43 приведен пример попытки выполнения защищенной программы 2 р при отсутствии устройства 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р в момент t1 выполнение команды передачи OUT(v1, X) не может вызвать передачу данного X переменной v1, учитывая отсутствие устройства 6; в момент t2 выполнение команды передачи IN(v1) не может вызвать передачу значения переменнойv1 системе 3 обработки данных, учитывая отсутствие устройства 6; в момент t3 выполнение команды передачи IN(v1) не может вызвать передачу значения переменнойv1 системе 3 обработки данных, учитывая отсутствие устройства 6. Таким образом, представляется, что в отсутствие устройства 6 по меньшей мере один запрос одного фрагмента первой выполняемой части 2pes на использование переменной или копии переменной, находящейся в устройстве 6, не может быть корректно выполнен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2 р не является полнофункциональной. Следует отметить, что процессы передачи данных между системой 3 обработки данных и устройством 6 используют только простые присвоения (что проиллюстрировано на вышеприведенных примерах). Однако специалист сможет скомбинировать их с другими операциями, чтобы получить сложные операции, например, OUT(v1, 2 Х+3) или Z(5v1 + v2). Согласно другой преимущественной характеристике изобретения способ защиты нацелен на реализацию принципа защиты, названного "переименование", описание которого выполнено со ссылкой на фиг. 80-85. Для реализации принципа защиты переименованием должны быть определены ансамбль зависимых функций, зависимые функции которого могут быть выполнены посредством второй выполняемой части 2peu в устройстве 6, возможно, с последующей передачей данных между системой 3 обработки данных и устройством 6 (причем этот ансамбль зависимых функций может быть конечным или нет); ансамбль команд запуска для этих зависимых функций, причем эти команды запуска могут выполняться в системе 3 обработки данных и вызывать в устройстве 6 выполнение соответствующих зависимых функций; для каждой команды запуска - установочный параметр, соответствующий, по меньшей мере частично, информации, передаваемой первой выполняемой частью 2pes второй выполняемой части 2peu,чтобы вызвать запуск соответствующей зависящей функции, причем этот установочный параметр представляется в форме, по меньшей мере, аргумента команды запуска; метод переименования установочных параметров, предназначенный для применения в ходе модификации уязвимой программы и позволяющий переименовать установочные параметры таким образом,чтобы получить команды запуска с переименованными параметрами, позволяя скрыть идентичность соответствующих зависящих функций; средства 20 восстановления, предназначенные для применения в устройстве 6 в фазе использования и позволяющие восстановить начальные установочные параметры, исходя из переименованных установочных параметров, чтобы найти зависимую функцию, которую необходимо выполнить. Для реализации принципа защиты переименованием конструируют также средства эксплуатации,позволяющие преобразовать незадействованное устройство 60, содержащее средства 15 запоминания и средства 16 обработки, в устройство 6, применяющее, по меньшей мере, средства 20 восстановления. Для реализации принципа защиты переименованием в исходном коде 2vs уязвимой программы должны быть также выбраны по меньшей мере один алгоритм, использующий по меньшей мере один операнд и выдающий по меньшей мере один результат; и по меньшей мере один фрагмент исходного кода 2vs уязвимой программы, содержащий по меньшей мере один выбранный алгоритм. Исходный код 2vs уязвимой программы затем модифицируется, чтобы получить исходный код 2ps защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2 р по меньшей мере один фрагмент первой выполняемой части 2pes, которая выполняется в системе 3 обработки данных, учитывает, что функциональная возможность по меньшей мере одного выбранного алгоритма выполняется в устройстве 6; в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2 реu, которая выполняется в устройстве 6, выполняет по меньшей мере функциональную возможность по меньшей мере одного выбранного алгоритма; каждый выбранный алгоритм разлагается таким образом, что в ходе выполнения защищенной программы 2 р каждый выбранный алгоритм выполняется посредством второй выполняемой части 2 реu, используя зависимые функции. Каждый выбранный алгоритм предпочтительно разлагается на зависимые функции fdn (где n пробегает значения от 1 до N), а именно-15 005466 возможно, на одну или несколько зависимых функций, позволяющих предоставить один или несколько операндов для устройства 6,на зависимые функции, некоторые из которых используют один или несколько операндов и которые в сочетании осуществляют функциональную возможность выбранного алгоритма, использующего эти операнды,и, возможно, на одну или несколько зависимых функций, позволяющих посредством устройства 6 предоставить системе 3 обработки данных результат выполнения выбранного алгоритма; в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2peu выполняет зависимые функции fdn; в ходе выполнения защищенной программы 2 р эти зависимые функции запускаются командами запуска с переименованными установочными параметрами; и упорядочение команд запуска выбрано среди ансамбля упорядочений, позволяющих выполнение защищенной программы 2 р. Первая выполняемая часть 2pes защищенной программы 2 р, выполняемая в системе 3 обработки данных, выполняет команды запуска с переименованными установочными параметрами, передающие в устройство 6 переименованные установочные параметры. Это вызывает в устройстве 6 восстановление при помощи средств 20 восстановления установочных параметров, а затем выполнение посредством второй выполняемой части 2peu каждой из определенных выше зависимых функций fdn. Другими словами, принцип защиты при помощи переименования состоит в том, чтобы переименовать установочные параметры команд запуска, чтобы получить команды запуска с переименованными установочными параметрами, выполнение которых в системе 3 обработки данных вызывает в устройстве 6 выполнение зависимых функций, которые запускались бы командами запуска с непереименованными установочными параметрами, однако, без того, чтобы изучение защищенной программы 2 р позволило определить идентичность выполняемых зависимых функций. На фиг. 80 приведен пример выполнения уязвимой программы 2v. В этом примере в ходе выполнения уязвимой программы 2v в системе 3 обработки данных в данный момент времени имеет место расчетZF(X, Y), соответствующий присвоению переменной Z результата выполнения алгоритма, представленного функцией F и использующего операнды X и Y. На фиг. 81 и 82 приведен пример реализации изобретения. На фиг. 81 приведен пример частичной реализации изобретения. Согласно этому примеру в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р в присутствии устройства 6 производятся в моменты t1, t2 - выполнение элементарных команд CD1, CD2, что вызывает в устройстве 6 выполнение, посредством второй выполняемой части 2peu, соответствующих зависимых функций fd1, fd2, которые обеспечивают передачу данных X, Y из системы 3 обработки данных в области памяти соответственно х и у, расположенные в средствах 15 запоминания устройства 6, причем эти команды CD1, CD2 запуска представлены соответственно, как OUT(x, X), OUT(y, Y); в моменты с t3 no tN-1 - выполнение команд запуска с CD3 no CDN-1, что вызывает в устройстве 6 выполнение посредством второй выполняемой части 2peu соответствующих зависимых функций с fd3 nofdN-1, причем эти команды запуска с CD3 no CDN-1 представлены соответственно, как TRIG(fd3) TRIG(fdN-1), причем последовательность зависимых функций с fd3 no fdN-1, выполняемых в сочетании,алгоритмически эквивалентна функции F (точнее говоря, выполнение этих команд запуска приводит к выполнению в устройстве 6 зависимых функций с fd3 no fdN-1, которые используют содержимое областей памяти х, у и возвращают результат в область памяти z устройства 6); а в момент tN производится выполнение команды CDN запуска, вызывающее в устройстве 6 выполнение, посредством второй выполняемой части 2peu, зависимой функции fdN, обеспечивающей передачу результата выполнения алгоритма, содержащегося в области памяти z устройства 6, системе 3 обработки данных, чтобы присвоить его переменной Z. Эта команда представлена как IN(z). В данном примере, чтобы полностью реализовать изобретение, в качестве установочного параметра выбран первый аргумент команд OUT запуска и аргумент команд TRIG и IN запуска. Выбранные таким образом установочные параметры переименовываются по методу переименования установочных параметров. Таким образом, установочные параметры команд запуска с CD1 по CDN, а именно х, у, fd3, fdN-1, z переименовываются так, чтобы получить соответственно R(x), R(y), R(fd3), , R(fdN-1), R(z). На фиг. 82 приведен пример полной реализации изобретения. Согласно этому примеру в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р, в присутствии устройства 6, осуществляются в моменты t1, t2 - выполнение команд CDCR1, CDCR2 запуска с переименованными установочными параметрами, передающих в устройство 6 переименованные установочные параметры R(x), R(y), а также данные X, Y, что вызывает в устройстве 6 восстановление (при помощи средств 20 восстановления) переименованных установочных параметров, чтобы восстановить установочные параметры, а именно идентичность областей памяти х, у, а затем выполнение посредством второй выполняемой части 2 реu соответствующих зависимых функций fd1, fd2, которые обеспечивают передачу данных X, Y от системы-16 005466 3 обработки данных к областям памяти соответственно х, у, расположенным в средствах 15 запоминания устройства 6 (эти команды CDCR1, CDCR2 запуска с переименованными установочными параметрами представлены соответственно, как OUT (R(x), X), OUT (R(y), Y; в моменты с t3 по tN-1 - выполнение команд CDCR3 no CDCRN-1 запуска с переименованными установочными параметрами, передающих в устройство 6 переименованные установочные параметры сR(fd3) пo R(fdN-1), что вызывает в устройстве 6 восстановление при помощи средств 20 восстановления установочных параметров, а именно с fd3 no fdN-1, а затем выполнение посредством второй выполняемой части 2 реu зависимых функций с fd3 no fdN-1, причем эти команды (с CDCR3 no CDCRN-1) запуска с переименованными установочными параметрами представлены соответственно командами TRIG (R(fd3 поTRIG(R(fdN-1; в момент tN - выполнение команды CDCRN запуска с переименованными установочными параметрами, передающей в устройство 6 переименованные установочные параметры R(z). Это вызывает в устройстве 6 восстановление при помощи средств 20 восстановления установочных параметров, а именно идентичности области памяти z, а затем выполнение посредством второй выполняемой части 2 реu зависимой функции fdN, обеспечивающей передачу результата выполнения алгоритма, содержащегося в области памяти z устройства 6, системе 3 обработки данных, чтобы присвоить его переменной Z. Эта команда CDCRN запуска с переименованными установочными параметрами представлена как IN(R(z. В приводимом примере команды запуска с переименованными установочными параметрами с 1 поN выполняются последовательно. Следует отметить, что можно сделать два следующих усовершенствования. Первое усовершенствование касается случая, когда один или несколько алгоритмов вынесены в устройство 6 и, по меньшей мере, результат выполнения одного алгоритма используется другим алгоритмом (в этом случае некоторые команды запуска с переименованными установочными параметрами,служащие для передачи, могут быть исключены). Второе усовершенствование имеет целью надлежащее упорядочение команд запуска с переименованными установочными параметрами среди ансамбля упорядочений, позволяющих выполнение защищенной программы 2 р. В этом отношении предпочтительно выбрать такое упорядочение команд запуска с переименованными установочными параметрами, которое разделяет во времени выполнение зависимых функций,вставляя между ними участки кода, выполняемого в системе 3 обработки данных, и при этом содержащего (или не содержащего) команды запуска с переименованными установочными параметрами, служащие для определения других данных. Фиг. 83 и 84 иллюстрируют принцип такой реализации. На фиг. 83 приведен пример выполнения уязвимой программы 2v. В этом примере в системе 3 обработки данных в ходе выполнения уязвимой программы 2v происходит выполнение двух алгоритмов,приводящих к определению Z и Z' таких, что ZF(X, Y) и Z'F(X', Y'). На фиг. 84 приведен пример реализации способа согласно изобретению, в котором оба выбранных на фиг. 83 алгоритма вынесены в устройство 6. В соответствии с этим примером в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р, в присутствии устройства 6, имеет место, как объясняется выше, выполнение команд (с CDCR1 по CDCRN) запуска с переименованными установочными параметрами, соответствующее определению Z, и выполнение команд (с CDCR1' по CDCRM') запуска с переименованными установочными параметрами, соответствующее определению Z'. Как показано, команды запуска с CDCR1 по CDCRN не выполняются последовательно, поскольку с ними чередуются команды запуска с CDCR1' по CDCRM', а также другие фрагменты кода. В этом примере, таким образом, реализовано следующее упорядочение: CDCR1, вставленный фрагмент кода, CDCR1', CDCR2, вставленный фрагмент кода, CDCR2', CDCR3', вставленный фрагмент кода, CDCR4', CDCR3, CDCR4, , CDCRN, CDCRM'. Следует отметить, что в ходе выполнения фрагмента первой выполняемой части 2pes защищенной программы 2 р команды запуска с переименованными установочными параметрами, которые выполняются в системе 3 обработки данных, вызывают в устройстве 6 восстановление идентичности соответствующих зависящих функций, а затем их выполнение. Таким образом, в присутствии устройства 6 этот фрагмент выполняется корректно и, следовательно, защищенная программа 2 р является полнофункциональной. На фиг. 85 приведен пример попытки выполнения защищенной программы 2 р при отсутствии устройства 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р выполнение команды запуска с переименованными установочными параметрами ни в какой момент не может вызвать ни восстановление установочных параметров, ни выполнение соответствующей зависящей функции по причине отсутствия устройства 6. Значение, которое необходимо присвоить переменной Z, следовательно, не может быть определено корректно. Таким образом, представляется, что при отсутствии устройства 6 по меньшей мере один запрос одного фрагмента первой выполняемой части 2pes защищенной программы 2 р на запуск восстановления установочных параметров и выполнения в устройстве зависящей функции в устройстве 6 не может быть-17 005466 корректно выполнен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно,защищенная программа 2 р не является полнофункциональной. Благодаря этому принципу защиты при помощи переименования изучение в защищенной программе 2 р команд запуска с переименованными установочными параметрами не позволяет определить идентичность зависящих функций, которые должны быть выполнены в устройстве 6. Следует отметить, что переименование установочных параметров осуществляется в ходе преобразования уязвимой программы 2v в защищенную программу 2 р. В соответствии с вариантом принципа защиты при помощи переименования должно быть определено по меньшей мере для одной зависящей функции, семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска с различными переименованными установочными параметрами. В этом варианте по крайней мере один алгоритм, использующий зависимые функции, разлагается на зависимые функции так, что по меньшей мере одна из них заменяется зависимой функцией того же семейства, вместо того, чтобы сохранять несколько вхождений той же зависимой функции. С этой целью команды запуска с переименованными установочными параметрами модифицируются, чтобы учесть замену зависимых функций на зависимые функции того же семейства. Иными словами, две зависимые функции из одного семейства имеют различные установочные параметры, и, следовательно, команды запуска с различными переименованными установочными параметрами. Поэтому при изучении защищенной программы 2 р не представляется возможным обнаружить, что вызываемые зависящие функции алгоритмически эквивалентны. В соответствии с первой предпочтительной реализацией варианта принципа защиты при помощи переименования определяется по меньшей мере для одной зависящей функции, алгоритмически эквивалентное семейство зависящих функций, посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве 6. В соответствии со второй предпочтительной реализацией варианта принципа защиты при помощи переименования по меньшей мере для одной зависящей функции определяется алгоритмически эквивалентное семейство зависящих функций с использованием полей идентификации. В соответствии с предпочтительным вариантом реализации принципа защиты при помощи переименования в качестве метода переименования установочных параметров задается метод кодирования,позволяющий кодировать установочные параметры для их превращения в переименованные установочные параметры. Следует напомнить, что переименование установочных параметров осуществляется в фазе Р защиты. Для этого предпочтительного варианта средства 20 восстановления представляют собой средства, применяющие метод декодирования, позволяющий декодировать переименованные установочные параметры и восстановить, таким образом, идентичность зависимых функций, которые требуется выполнить в устройстве 6. Эти средства восстановления применяются в устройстве 6 и могут быть как программными, так и аппаратными. Средства 20 восстановления запрашиваются в фазе U использования каждый раз, когда команда запуска с переименованными установочными параметрами выполняется в системе 3 обработки данных с целью вызвать в устройстве 6 выполнение зависящей функции. Согласно другой предпочтительной характеристике изобретения способ защиты направлен на реализацию принципа защиты, названного "условным переходом", описание которого проиллюстрировано фиг. 90-92. Для реализации принципа защиты при помощи условного перехода в исходном коде 2vs уязвимой программы выбирается по меньшей мере один условный переход ВС. Выбирается также по меньшей мере один фрагмент исходного кода 2vs уязвимой программы, содержащей по меньшей мере один выбранный условный переход ВС. В данном варианте по меньшей мере один выбранный фрагмент кода 2vs уязвимой программы модифицируется, чтобы получить исходный код 2ps защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2 р по меньшей мере один фрагмент первой выполняемой части 2pes, которая выполняется в системе 3 обработки данных, учитывает то, что функциональная возможность по меньшей мере одного выбранного условного перехода ВС выполняется в устройстве 6; вторая выполняемая часть 2peu, которая выполняется в устройстве 6, выполняет, по меньшей мере,функциональную возможность по меньшей мере одного выбранного условного перехода ВС и предоставляет системе 3 обработки данных информацию, позволяющую первой выполняемой части 2pes продолжить свое выполнение в выбранном месте. Первая выполняемая часть 2pes защищенной программы 2 р, выполняемая в системе 3 обработки данных, выполняет команды условных переходов, что вызывает в устройстве 6 выполнение, посредством второй выполняемой части 2 реu вынесенных условных переходов bc, функциональные возможности которых эквивалентны функциональным возможностям выбранных условных переходов ВС. Для реализации принципа защиты при помощи условного перехода устройство 6 содержит средства 15 запоминания и средства 16 обработки. На фиг. 90 приведен пример выполнения уязвимой программы 2v. В этом примере в ходе выполнения уязвимой программы 2v в системе 3 обработки данных в данный момент времени имеет место ус-18 005466 ловный переход ВС, указывающий уязвимой программе 2v место, где следует продолжить ее выполнение, а именно одно из трех возможных мест В 1, В 2 или В 3. Следует понимать, что условный переход ВС принимает решение продолжить выполнение программы в месте B1, B2 или В 3. На фиг. 91 приведен пример реализации изобретения, в котором условный переход, отобранный для переноса в устройство 6, соответствует условному переходу ВС. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р в присутствии устройства 6 имеют место в момент t1 - выполнение команды СВ 1 условного перехода, что вызывает в устройстве 6 выполнение, посредством второй выполняемой части 2 реu вынесенного условного перехода bc, алгоритмически эквивалентного условному переходу ВС, причем эта команда CBC1 условного перехода представлена какTRIG(bc); и в момент t2 - передача устройством 6 системе 3 обработки данных информации, позволяющей первой выполняемой части 2pes продолжить свое выполнение в выбранном месте, а именно, В 1, В 2 или В 3. Следует отметить, что в ходе выполнения фрагмента первой выполняемой части 2pes защищенной программы 2 р команды условных переходов, которые выполняются в системе 3 обработки данных, запускают выполнение соответствующих вынесенных условных переходов в устройстве 6. Таким образом,представляется, что в присутствии устройства 6 эта часть выполняется корректно и, следовательно, защищенная программа 2 р является полнофункциональной. На фиг. 92 приведен пример попытки выполнения защищенной программы 2 р при отсутствии устройства 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2pes защищенной программы 2 р в момент t1 выполнение команды CBC1 условного перехода не может вызвать выполнение вынесенного условного перехода bc, учитывая отсутствие устройства 6; и в момент t2 попытка передачи информации, позволяющей первой выполняемой части 2pes продолжить выполнение в выбранном месте не может быть успешной в связи с отсутствием устройства 6. Таким образом, в отсутствие устройства 6 по меньшей мере один запрос одного фрагмента первой выполняемой части 2pes на запуск выполнения вынесенного условного перехода в устройстве 6 не может быть корректно выполнен. Поэтому по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2 р не является полнофункциональной. В предшествующем описании, проиллюстрированном на фиг. 90-92, настоящее изобретение направлено на вынос в устройство 6 одного условного перехода. Разумеется, предпочтительный вариант осуществления изобретения может состоять в передаче в устройство 6 серии условных переходов, глобальные функциональные возможности которых эквивалентны ансамблю функциональных возможностей вынесенных условных переходов. Выполнение глобальных функциональных возможностей этой серии вынесенных условных переходов приводит к тому, что системе 3 обработки данных предоставляется информация, позволяющая первой выполняемой части 2pes защищенной программы 2 р продолжить свое выполнение в выбранном месте. В предшествующем описании, проиллюстрированном фиг. 40-92, четыре различных принципа защиты программы были разъяснены в общем виде независимо один от другого. Способ защиты согласно изобретению может быть реализован с применением принципа защиты при помощи детектирования и принуждения, к которому можно добавить один или несколько других принципов защиты. В случае, когда принцип защиты при помощи детектирования и принуждения дополняется реализацией по меньшей мере одного другого принципа защиты, принцип защиты при помощи детектирования и принуждения предпочтительно дополнить принципом защиты при помощи переменной и/или принципом защиты при помощи переименования, и/или принципом защиты при помощи условного перехода. Если таким образом применяется принцип защиты при помощи переименования, то он может быть дополнен, в свою очередь, принципом защиты при помощи условного перехода. В соответствии с предпочтительным вариантом реализации принцип защиты при помощи детектирования и принуждения дополняется принципом защиты при помощи переменной и принципом защиты при помощи переименования, дополненным принципом защиты при помощи условного перехода. В случае, когда в дополнение к принципу защиты при помощи детектирования и принуждения применен какой-либо иной принцип защиты, чтобы учесть такую комбинированную реализацию изобретения, приведенное выше описание должно содержать следующие модификации понятие уязвимой программы должно пониматься в смысле уязвимости программы по отношению к описываемому принципу защиты. Так, в случае, когда принцип защиты уже был применен к уязвимой программе, выражение "уязвимая программа" должно интерпретироваться как выражение "программа,защищенная при помощи одного или нескольких уже примененных принципов защиты"; понятие защищенной программы должно пониматься в смысле защищенности программы по отношению к описываемому принципу защиты. Так, в случае, когда принцип защиты уже был применен, выражение "защищенная программа" должно интерпретироваться читателем, как выражение "новая версия защищенной программы";-19 005466 один или несколько выборов, сделанный(сделанных) для реализации описываемого принципа защиты, должен(должны) учитывать выбор(ы), сделанный(сделанные) для реализации уже примененного(примененных) одного или нескольких принципов защиты. Дальнейшее описание позволяет лучше понять реализацию способа защиты согласно изобретению. В этом способе защиты согласно изобретению осуществляют, как это уточняется на фиг. 100,сначала фазу Р защиты, в ходе которой уязвимая программа 2v преобразуется в защищенную программу 2 р; затем фазу U использования, в ходе которой защищенная программа 2 р используется, причем в фазе U использования: в присутствии устройства 6 всякий раз, когда этого требует фрагмент первой выполняемой части 2pes, выполняемой в системе 3 обработки данных, должная функциональная возможность выполняется в устройстве 6 таким образом, что эта часть выполняется корректно, и, следовательно, защищенная программа 2 р является полнофункциональной,при отсутствии устройства 6, несмотря на запрос фрагмента первой выполняемой части 2pes на выполнение функциональной возможности в устройстве 6, этот запрос не может быть корректно удовлетворен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2 р не является полнофункциональной; и, возможно, фазу R перезагрузки, в ходе которой разрешается по меньшей мере одно дополнительное использование функциональной возможности, защищенной путем реализации второго предпочтительного варианта реализации принципа защиты при помощи детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля. Фаза Р защиты может быть разложена на две подфазы Р 1 и Р 2 защиты. Первая, названная входной,подфаза P1 защиты реализуется независимо от подлежащей защите уязвимой программы 2v. Вторая, названная выходной, подфаза Р 2 защиты зависит от подлежащей защите уязвимой программы 2v. Следует отметить, что входная и выходная подфазы Р 1 и Р 2 защиты могут быть реализованы двумя различными лицами или группами. Например, входная подфаза P1 защиты может быть реализована сотрудником или организацией, осуществляющими разработку систем защиты программ, тогда как выходная подфаза Р 2 защиты может быть реализована сотрудником или организацией, осуществляющими разработку программ, которые требуется защитить. Разумеется, ясно, что входная и выходная подфазы Р 1 и Р 2 защиты могут быть реализованы и одним сотрудником или одной организацией. Входная подфаза P1 защиты задействует несколько стадий S11, , S1i, для каждой из которых необходимо выполнить несколько задач или заданий. Первая стадия этой входной подфазы P1 защиты называется "стадией S11 определений". В ходе этой стадии S11 определений выбираются тип устройства 6 (например, в качестве устройства 6 можно выбрать устройство 8 чтения карт с микрочипом и карту с микрочипом, связанную с устройством 8 чтения),и средства 12, 13 передачи, предназначенные для применения соответственно в системе 3 обработки данных и в устройстве 6 в фазе U использования и способные обеспечивать передачу данных между системой 3 обработки данных и устройством 6; определяются по меньшей мере одна характеристика выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве 6,по меньшей мере один критерий, который требуется соблюдать по меньшей мере для одной характеристики выполнения программы,средства 17 детектирования, которые необходимо применять в устройстве 6 и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию,и средства 18 принуждения, которые необходимо применять в устройстве 6 и которые позволяют проинформировать систему 3 обработки данных и/или модифицировать ход выполнения программы,если хотя бы один критерий не соблюдается; причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи детектирования и принуждения, использующий в качестве характеристики переменную для количественного контроля выполнения программы, должны быть определены также в качестве характеристики выполнения программы, которая может быть проконтролирована, - переменная для количественного контроля использования одной функциональной возможности программы,в качестве критерия, который необходимо соблюдать, - по меньшей мере одно пороговое значение,связанное с каждой переменной для количественного контроля,и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля; причем в случае, когда способ защиты согласно изобретению задействует первый предпочтительный вариант реализации принципа защиты с помощью детектирования и принуждения, использующий в-20 005466 качестве характеристики переменную для количественного контроля выполнения программы, должны быть предусмотрены также по меньшей мере для одной переменной для количественного контроля - несколько соответствующих пороговых значений,и различные средства принуждения, соответствующие каждому из этих пороговых значений; причем в случае, когда способ защиты согласно изобретению задействует второй предпочтительный вариант реализации принципа защиты с помощью детектирования и принуждения, использующий в качестве характеристики переменную для количественного контроля выполнения программы, предусматриваются также средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля; причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи детектирования и принуждения, использующий в качестве характеристики профиль использования программы, должны быть предусмотрены также в качестве характеристики выполнения программы, которая может быть проконтролирована, - профиль использования программы,и в качестве критерия, который требуется соблюдать, - по меньшей мере один признак выполнения программы; причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения, должны быть предусмотрены также набор инструкций, инструкции из состава которого могут быть выполнены в устройстве 6,набор команд инструкций для указанного набора инструкций, причем эти команды инструкций могут быть выполнены в системе 3 обработки данных, вызывая в устройстве 6 выполнение инструкций,в качестве профиля использования - сцепление инструкций,в качестве признака выполнения - желаемое сцепление для выполнения инструкций,в качестве средств 17 детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому,и в качестве средств 18 принуждения - средства, позволяющие информировать систему 3 обработки данных и/или модифицировать функционирование фрагмента защищенной программы 2 р, если сцепление инструкций не соответствует желаемому; а в случае, когда способ защиты согласно изобретению задействует предпочтительный вариант реализации принципа защиты с помощью детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения, должны быть предусмотрены также в качестве набора инструкций - набор инструкций, из которого, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата по меньшей мере для одной части инструкций, работающих на регистрах,часть PF, задающая функциональную возможность инструкции,и часть, задающая желаемое сцепление для выполнения инструкций и содержащая битовые поля,соответствующие полю СII идентификации инструкции, и для каждого операнда инструкции полю CDk флага,и полю CIPk идентификации, предусмотренной для операнда,для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле CIGV генерируемой идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в этот регистр,в качестве средств 17 детектирования - средства, позволяющие в ходе выполнения инструкции для каждого операнда, если этого требует поле CDk флага, контролировать равенство между полем CIGV генерируемой идентификации, соответствующим регистру, используемому этим операндом, и полем CIPk предусмотренной идентификации начального адреса этого операнда,и в качестве средств 18 принуждения - средства, позволяющие модифицировать результат инструкции, если по меньшей мере одно из контролируемых равенств ложно; причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи переименования, должны быть предусмотрены также в качестве команды запуска - элементарная команда или команда инструкции,в качестве зависимой функции - элементарная функция или инструкция,в качестве установочного параметра - по меньшей мере один аргумент для команды запуска, соответствующий, по меньшей мере частично, информации, переданной системой 3 обработки данных на устройство 6, чтобы вызвать запуск соответствующей зависящей функции,метод переименования установочных параметров, позволяющий переименовать установочные параметры, чтобы получить команды запуска с переименованными параметрами,-21 005466 и средства 20 восстановления, предназначенные для применения в устройстве 6 в фазе U использования и позволяющие вновь найти зависимую функцию, которую требуется выполнить, исходя из переименованного установочного параметра,причем в случае, когда способ защиты согласно изобретению задействует вариант принципа защиты при помощи переименования, определяется также по меньшей мере для одной зависящей функции,семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска, переименованные установочные параметры которых являются различными,а в случае, когда способ защиты согласно изобретению, задействует ту или иную предпочтительную реализацию варианта принципа защиты при помощи переименования, определяется также по меньшей мере для одной зависящей функции, семейство зависящих функций, алгоритмически эквивалентных посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве 6,или посредством использования поля СII идентификации инструкции и поля CIPk предусмотренной идентификации операндов; причем в случае, когда способ защиты согласно изобретению задействует предпочтительный вариант принципа защиты при помощи переименования, должны быть предусмотрены также в качестве метода переименования установочных параметров - метод кодирования для кодировки установочных параметров,и в качестве средств 20 восстановления - средства, применяющие метод декодирования для раскодирования переименованных установочных параметров и восстановления идентичности зависимых функций, которые требуется выполнить в устройстве 6. В ходе входной подфазы защиты за стадией S11 определения следует стадия, названная "стадия S12 конструирования". В ходе такой стадии S12 конструируются средства 12, 13 передачи и, возможно, средства эксплуатации, соответствующие определениям стадии S11 определения. В ходе этой стадии S12 конструирования приступают, следовательно,к конструированию средств 12, 13 передачи, позволяющих в ходе фазы U использования осуществлять передачу данных между системой 3 обработки данных и устройством 6; к построению средств эксплуатации, позволяющих устройству 6 в фазе U использования задействовать средства 17 детектирования и средства 18 принуждения,и, возможно, средств эксплуатации, позволяющих устройству 6 в фазе U использования также задействовать средства обновления,а также, возможно, средств эксплуатации, позволяющих устройству 6 в фазе перезагрузки задействовать также средства перезагрузки,а также, возможно, средств эксплуатации, позволяющих устройству 6 в фазе U использования выполнять инструкции из набора инструкций; и (если также применяется принцип защиты при помощи переименования) к построению средств эксплуатации, позволяющих устройству 6 в фазе U использования задействовать также средства восстановления. Конструирование средств эксплуатации осуществляют обычным образом, посредством устройства разработки программ с учетом определений, введенных на стадии S11 определений. Подобное устройство описано далее и проиллюстрировано фиг. 110. В ходе входной подфазы P1 защиты за стадией S12 конструирования может последовать стадия, названная "стадией S13 предперсонализации". В ходе этой стадии S13 предперсонализации, по меньшей мере, средства 13 передачи и средства эксплуатации загружаются по меньшей мере в одно незадействованное устройство 60, чтобы получить по меньшей мере одно предперсонализированное устройство 66. Следует отметить, что часть средств эксплуатации, будучи перенесена в предперсонализированное устройство 66, более недоступна напрямую извне этого предперсонализированного устройства 66. Передача средств эксплуатации в незадействованное устройство 60 может быть реализована посредством адаптированного устройства предперсонализации, которое описано далее и проиллюстрировано фиг. 120. В случае предперсонализированного устройства 66, состоящего из карты 7 с микрочипом и устройства 8 ее чтения, предперсонализация касается только карты 7 с микрочипом. В ходе входной подфазы Р 1 защиты, после стадии S11 определений и, возможно, после стадии S12 конструирования, может быть осуществлена также стадия, названная "стадией S14 изготовления средств". В ходе этой стадии S14 изготовления средств производятся средства, позволяющие помочь созданию защищенных программ или автоматизировать защиту программ. Такие средства позволяют помочь выбрать или автоматически выбрать в уязвимой программе 2v, которую требуется защитить,одну или несколько характеристик выполнения, которые необходимо проконтролировать, и, возможно, один или несколько алгоритмов, которые могут быть разложены на инструкции, которые можно вынести в устройство 6,фрагменты, которые могут быть изменены,-22 005466 если также применяется принцип защиты при помощи переменной, - одну или несколько переменных, которые могут быть вынесены в устройство 6,если также применяется принцип защиты при помощи переименования, - один или несколько алгоритмов, которые могут быть разложены на зависимые функции, которые можно вынести в устройство 6 и для которых установочные параметры команд запуска могут быть переименованы,и если также применяется принцип защиты при помощи условного перехода, - один или несколько условных переходов, функциональная возможность которых может быть вынесена в устройство 6; и, возможно, помочь создать защищенные программы или автоматизировать защиту программ. Эти различные средства могут быть реализованы независимо или в сочетании, причем каждое средство может принимать различные формы, например, представлять собой препроцессор, ассемблер, компилятор и т.п. За входной подфазой P1 защиты следует выходная подфаза Р 2 защиты, зависящая от подлежащей защите уязвимой программы 2v. Эта выходная подфаза Р 2 защиты также предусматривает несколько стадий. Первая стадия, соответствующая реализации принципа защиты при помощи детектирования и принуждения, называется "стадия S21 создания". В ходе этой стадии S21 создания используется выбор, сделанный на стадии S11 определений. При помощи этого выбора и, возможно, средств, сконструированных на стадии S14 изготовления средств, защищенная программа 2 р создается посредством выбора среди характеристик выполнения, которые могут быть проконтролированы по меньшей мере одной характеристики выполнения контролируемой программы; посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы; посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы 2v использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы,посредством выбора по меньшей мере одного фрагмента кода 2vs уязвимой программы, содержащего по меньшей мере один выбранный алгоритм,посредством создания исходного кода 2ps защищенной программы на основе кода уязвимой программы 2v модифицированием по меньшей мере одного выбранного фрагмента кода 2vs уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р первая выполняемая часть 2pes выполняется в системе 3 обработки данных, а вторая выполняемая часть 2peu выполняется в устройстве 6, полученном из незадействованного устройства 60 после загрузки информации,вторая выполняемая часть 2peu выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма,и в ходе выполнения защищенной программы 2 р по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части 2peu, и несоблюдение критерия приводит к модификации выполнения защищенной программы 2 р; и посредством создания первой части 2pes объектного кода защищенной программы 2 р, причем первая часть 2pes объектного кода такова, что в ходе выполнения защищенной программы 2 р реализуется первая выполняемая часть 2pes, которая выполняется в системе 3 обработки данных, и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы,и второй части 2pou объектного кода защищенной программы 2 р, содержащей средства эксплуатации, позволяющие применять также средства 17 детектирования и средства 18 принуждения, причем вторая часть 2pou объектного кода такова, что после загрузки в незадействованное устройство 60, в ходе выполнения защищенной программы 2 р реализуется вторая выполняемая часть 2peu, посредством которой контролируется по меньшей мере одна характеристика выполнения программы и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы 2 р. Разумеется, принцип защиты при помощи детектирования и принуждения согласно изобретению может быть применен непосредственно в ходе разработки новой программы без необходимости предварительной реализации уязвимой программы 2v. В этом случае непосредственно получают защищенную программу 2 р. Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля выполнения программы, защищенная программа 2 р модифицируется посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы; посредством выбора-23 005466 по меньшей мере одной функциональной возможности защищенной программы 2 р, использование которой можно проконтролировать с использованием переменной для количественного контроля,по меньшей мере одной переменной для количественного контроля, которая служит в качестве количественной характеристики использования упомянутой функциональной возможности,по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования упомянутой функциональной возможности,и по меньшей мере одного метода обновления значения переменной для количественного контроля в соответствии с использованием упомянутой функциональной возможности; и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р переменная для количественного контроля обновляется посредством второй выполняемой части 2 реu, в зависимости от использования указанной функциональной возможности, и учитывается по меньшей мере одно превышение порогового значения. Для реализации первого предпочтительного варианта принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля,защищенная программа 2 р модифицируется посредством выбора в исходном коде 2ps защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороговых значений,соответствующих различным пределам использования функциональной возможности; посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля; и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р превышения различных пороговых значений учитываются посредством второй выполняемой части 2peu различным способом. Для реализации второго предпочтительного варианта принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля,защищенная программа 2 р модифицируется посредством выбора в исходном коде 2ps защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование функциональной возможности, для которой должна существовать возможность разрешить по меньшей мере одно дополнительное использование; и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем эта модификация такова, что в фазе, названной фазой перезагрузки, по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено. Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики профиль использования программы, защищенная программа 2 р модифицируется посредством выбора в качестве характеристики выполнения контролируемой программы, по меньшей мере, профиля использования программы; посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования; и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р вторая выполняемая часть 2peu соблюдает все выбранные признаки выполнения. Для реализации принципа защиты с помощью детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения, защищенная программа 2 р модифицируется посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что по меньшей мере один выбранный алгоритм раскладывается таким образом, что в ходе выполнения защищенной программы 2 р этот алгоритм выполняется посредством второй выполняемой части 2 реu, с применением инструкций,по меньшей мере для одного выбранного алгоритма команды инструкций интегрируются в исходный код 2ps защищенной программы таким образом, что в ходе выполнения защищенной программы 2 р каждая команда инструкции выполняется посредством первой выполняемой части 2pes и вызывает в устройстве 6 выполнение инструкции посредством второй выполняемой части 2 реu,упорядочение команд инструкций выбирается среди ансамбля упорядочений, позволяющих выполнение защищенной программы 2 р,-24 005466 и определено сцепление, которое должны соблюдать, по меньшей мере, некоторые из инструкций в ходе их выполнения в устройстве 6. В ходе выходной подфазы Р 2 защиты, в случае, когда применен по меньшей мере один другой принцип защиты, в дополнение к принципу защиты при помощи детектирования и принуждения, реализуется "стадия S22 модификации". В ходе этой стадии S22 модификации используются определения, введенные на стадии S11 определений. С использованием этих определений и, возможно, средств, сконструированных на стадии S14 изготовления средств, защищенная программа 2 р модифицируется таким образом, чтобы позволить реализовать принципы защиты в соответствии с одной из компоновок, определенных выше. Когда применяется принцип защиты при помощи переменной, то защищенная программа 2 р модифицируется посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы 2 р частично определяет состояние защищенной программы 2 р,посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве 6,и посредством создания первой части 2pos объектного кода защищенной программы 2 р, причем эта первая часть 2pos объектного кода такова, что в ходе выполнения защищенной программы 2 р по меньшей мере один фрагмент первой выполняемой части 2pes учитывает, что по меньшей мере одна переменная или по меньшей мере одна копия переменной находится в устройстве 6,и второй части 2pou объектного кода защищенной программы 2 р, причем эта вторая часть 2pou объектного кода такова, что после загрузки в устройство 6 и в ходе выполнения защищенной программы 2 р реализуется вторая выполняемая часть 2 реu, при помощи которой по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной также находится в устройстве 6. Когда применяется принцип защиты при помощи переименования, защищенная программа 2 р модифицируется посредством выбора в исходном коде 2ps защищенной программы команд запуска; посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы посредством переименования установочных параметров выбранных команд запуска,чтобы скрыть идентичность соответствующих зависящих функций; и посредством создания первой части 2pos объектного кода защищенной программы 2 р, причем эта первая часть 2pos объектного кода такова, что в ходе выполнения защищенной программы 2 р выполняются команды запуска с переименованными установочными параметрами,и второй части 2pou объектного кода защищенной программы 2 р, содержащей средства эксплуатации, использующие также средства 20 восстановления, причем эта вторая часть 2pou объектного кода такова, что после загрузки в устройство 6, в ходе выполнения защищенной программы 2 р идентичность зависимых функций, выполнение которых запускается первой выполняемой частью 2pes, восстанавливается посредством второй выполняемой части 2peu, а зависимые функции выполняются посредством второй выполняемой части 2peu. Для реализации варианта принципа защиты переименованием защищенная программа 2 р модифицируется посредством выбора в исходном коде 2ps защищенной программы по меньшей мере одной команды запуска с переименованными установочными параметрами; и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы посредством замены, по меньшей мере, переименованного установочного параметра команды запуска с выбранным установочным параметром на другой переименованный установочный параметр, что вызывает запуск зависящей функции из того же семейства. Когда применяется принцип защиты при помощи условного перехода, защищенная программа 2 р модифицируется посредством выбора в исходном коде 2ps защищенной программы по меньшей мере одного условного перехода, выполняемого по меньшей мере в одном выбранном алгоритме; посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р функциональная возможность по меньшей мере одного выбранного условного перехода выполняется посредством второй выполняемой части 2peu в устройстве 6; и посредством создания-25 005466 первой части 2pos объектного кода защищенной программы 2 р, причем эта первая часть 2pos объектного кода такова, что в ходе выполнения защищенной программы 2 р функциональная возможность по меньшей мере одного выбранного условного перехода выполняется в устройстве 6,и второй части 2pou объектного кода защищенной программы 2 р, причем эта вторая часть 2pou объектного кода такова, что после загрузки в устройство 6, в ходе выполнения защищенной программы 2 р реализуется вторая выполняемая часть 2 реu, посредством которой выполняется функциональная возможность по меньшей мере одного выбранного условного перехода. Для предпочтительной реализации принципа защиты при помощи условного перехода защищенная программа 2 р модифицируется посредством выбора в исходном коде 2ps защищенной программы по меньшей мере одной серии выбранных условных переходов; посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2ps защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2 р глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется посредством второй выполняемой части 2peu в устройстве 6; и посредством создания первой части 2pos объектного кода защищенной программы 2 р, причем эта первая часть 2pos объектного кода такова, что в ходе выполнения защищенной программы 2 р функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве 6,и второй части 2pou объектного кода защищенной программы 2 р, причем эта вторая часть 2pou объектного кода такова, что после загрузки в устройство 6, в ходе выполнения защищенной программы 2 р реализуется вторая выполняемая часть 2peu, посредством которой выполняется глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов. Разумеется, принципы защиты согласно изобретению могут быть применены прямо в ходе разработки новой программы без предварительной реализации промежуточных уязвимых программ. Таким образом, стадии S21 создания и S22 модификации могут быть осуществлены одновременно, чтобы сразу получить защищенную программу 2 р. В ходе выходной подфазы Р 2 защиты после стадии S21 создания защищенной программы 2 р и, возможно, после стадии S22 модификации реализуется стадия, названная "стадией S23 персонализации". В ходе этой стадии S23 персонализации вторая часть 2pou объектного кода, возможно, содержащая средства эксплуатации, загружается, по меньшей мере, в одно незадействованное устройство 60, чтобы получить,по меньшей мере, одно устройство 6. Альтернативно, часть второй части 2pou объектного кода, возможно, содержащая средства эксплуатации, загружается по меньшей мере в одно предперсонализированное устройство 66, чтобы получить по меньшей мере одно устройство 6. Загрузка этой персонализирующей информации позволяет сделать работоспособным по меньшей мере одно устройство 6. Следует отметить, что часть этой информации, будучи перенесенной в устройство 6, недоступна напрямую извне этого устройства 6. Передача информации персонализации в незадействованное устройство 60 или в предперсонализированное устройство 66 может быть реализована посредством адаптированного устройства персонализации, которое описано далее и проиллюстрировано фиг. 150. В случае устройства 6, состоящего из карты 7 с микрочипом и устройства 8 ее чтения, персонализация касается только карты 7 с микрочипом. Различные технические средства для реализации фазы Р защиты, которые далее будут описаны более подробно, проиллюстрированы фиг. 110, 120, 130, 140 и 150. На фиг. 110 приведен пример реализации системы 25, позволяющей реализовать стадию S12 конструирования с учетом определений, введенных на стадии S11 определений, и в ходе которой конструируются средства 12, 13 передачи и, возможно, средства эксплуатации, предназначенные для устройства 6. Подобная система 25 содержит устройство разработки программ или рабочую станцию, обычно представляющую собой компьютер, который содержит системный блок, монитор, периферийные устройства типа клавиатуры и мыши и на котором установлены следующие программы: файловые редакторы, ассемблеры, препроцессоры, компиляторы, интерпретаторы, отладчики и редакторы связей. На фиг. 120 приведен пример реализации устройства 30 предперсонализации, позволяющего загрузить, по меньшей мере, частично средства 13 передачи и/или средства эксплуатации по меньшей мере в одно незадействованное устройство 60, чтобы получить, по меньшей мере, предперсонализированное устройство 66. Устройство 30 предперсонализации содержит средство 31 чтения-записи, позволяющее электрически предперсонализировать незадействованное устройство 60, чтобы получить предперсонализированное устройство 66, в которое загружены средства 13 передачи и/или средства эксплуатации. Устройство 30 предперсонализации может также содержать физические средства 32 предперсонализации незадействованного устройства 60, представляющие собой, например, принтер. В случае если устройство 6 состоит из карты 7 с микрочипом и устройства 8 ее чтения, предперсонализация касается обычно только карты 7 с микрочипом. На фиг. 130 приведен пример реализации системы 35, позволяющей осуществить изготовление средств, предназначенных для использования при создании защищенных программ или автоматизации-26 005466 защиты программ. Подобная система 35 содержит устройство разработки программ или рабочую станцию, обычно представляющую собой компьютер, который содержит системный блок, монитор, периферийные устройства типа клавиатуры и мыши и на котором имеются следующие программы: файловые редакторы, ассемблеры, препроцессоры, компиляторы, интерпретаторы, отладчики и редакторы связей. На фиг. 140 приведен пример реализации системы 40, позволяющей прямо получить защищенную программу 2 р или модифицировать уязвимую программу 2v с целью получить защищенную программу 2 р. Подобная система 40 содержит устройство разработки программы или рабочую станцию, обычно представляющую собой компьютер, который содержит системный блок, монитор, периферийные устройства типа клавиатуры и мыши и на котором установлены следующие программы: файловые редакторы, ассемблеры, препроцессоры, компиляторы, интерпретаторы, отладчики и редакторы связей, а также средства, помогающие при создании защищенных программ или автоматизации защиты программ. На фиг. 150 приведен пример реализации устройства 45 персонализации, позволяющего загрузить вторую часть 2pou объектного кода по меньшей мере в одно незадействованное устройство 60, чтобы получить по меньшей мере одно устройство 6, или часть второй части 2pou объектного кода по меньшей мере в одно предперсонализированное устройство 66, чтобы получить по меньшей мере одно устройство 6. Это устройство 45 персонализации содержит средство 46 чтения-записи, позволяющее электрически персонализировать по меньшей мере одно незадействованное устройство 60 или по меньшей мере одно предперсонализированное устройство 66, чтобы получить по меньшей мере одно устройство 6. По завершении этой персонализации устройство 6 содержит информацию, необходимую для выполнения защищенной программы 2 р. Устройство 45 персонализации может также содержать физические средства 47 персонализации по меньшей мере для одного устройства 6, представляющие собой, например, принтер. В случае если устройство 6 состоит из карты 7 с микрочипом и устройства 8 ее чтения, персонализация касается обычно только карты 7 с микрочипом. Способ защиты согласно изобретению может быть реализован с дополнительными усовершенствованиями. Можно предусмотреть совместное использование множества устройств обработки и хранения, между которыми распределена вторая часть 2pou объектного кода защищенной программы 2 р таким образом, что их совместное выполнение позволяет выполнить защищенную программу 2 р, отсутствие же по меньшей мере одного из этих устройств обработки и хранения препятствует использованию защищенной программы 2 р. Аналогично, после стадии S13 предперсонализации и в ходе стадии S23 персонализации часть второй части 2pou объектного кода, необходимая для преобразования предперсонализированного устройства 66 в устройство 6, может содержаться в устройстве обработки и хранения, используемом устройством 45 персонализации, чтобы ограничить доступ к этой части второй части 2pou объектного кода. Разумеется,эта часть второй части 2pou объектного кода может быть распределена между несколькими устройствами обработки и хранения таким образом, чтобы эта часть второй части 2pou объектного кода являлась доступной только в ходе совместного использования этих устройств обработки и хранения. ФОРМУЛА ИЗОБРЕТЕНИЯ 1. Способ защиты на основе по меньшей мере одного незадействованного устройства (60), содержащего, по меньшей мере, средства (15) запоминания и средства (16) обработки, от неавторизованного использования уязвимой программы (2v), которая функционирует на системе (3) обработки данных, состоящий в том, что в фазе (Р) защиты определяют по меньшей мере одну характеристику выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве обработки и хранения,по меньшей мере один критерий, который должен выполняться по меньшей мере для одной характеристики выполнения программы,средства (17) детектирования, которые следует применять в устройстве обработки и хранения и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию,и средства (18) управления, которые следует применять в устройстве обработки и хранения и которые позволяют проинформировать систему (3) обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий; конструируют средства эксплуатации, позволяющие устройству обработки и хранения задействовать средства (17) детектирования и средства (18) управления; создают защищенную программу (2 р) посредством выбора по меньшей мере одной характеристики выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы,посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы,-27 005466 посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы (2v) использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы,посредством выбора по меньшей мере одного фрагмента кода (2vs) уязвимой программы, содержащего по меньшей мере один выбранный алгоритм,посредством создания исходного кода (2ps) защищенной программы на основе кода уязвимой программы (2v) модифицированием по меньшей мере одного выбранного фрагмента кода (2vs) уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода (2ps) защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы (2 р) первая выполняемая часть (2pes) выполняется в системе (3) обработки данных, а вторая выполняемая часть (2peu) выполняется в устройстве обработки и хранения, полученном из незадействованного устройства (60) после загрузки информации,вторая выполняемая часть (2peu) выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма,и в ходе выполнения защищенной программы (2 р) по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части (2peu) и несоблюдение критерия приводит к модификации выполнения защищенной программы (2 р); и посредством создания первой части (2pos) объектного кода защищенной программы (2 р), причем первая часть (2pos) объектного кода такова, что в ходе выполнения защищенной программы (2 р) реализуется первая выполняемая часть (2pes), которая выполняется в системе обработки данных (3) и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы,и второй части (2pou) объектного кода защищенной программы (2 р), содержащей средства эксплуатации, позволяющие применять также средства (17) детектирования и средства (18) управления, причем вторая часть (2pou) объектного кода такова, что после загрузки в незадействованное устройство (60), в ходе выполнения защищенной программы (2 р) реализуется вторая выполняемая часть (2peu), посредством которой контролируется по меньшей мере одна характеристика выполнения программы, и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы (2 р),и загружают вторую часть (2pou) объектного кода в незадействованное устройство (60) с получением устройства обработки и хранения,а в фазе (U) использования, в ходе которой происходит выполнение защищенной программы (2 р) в присутствии устройства обработки и хранения,если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы (2 р), соблюдены, допускают номинальное функционирование указанных фрагментов защищенной программы (2 р) и, следовательно, номинальное функционирование защищенной программы (2 р),а если по меньшей мере один из критериев, отвечающих контролируемой характеристике выполнения одного фрагмента защищенной программы (2 р), не соблюден, информируют систему (3) обработки данных об указанном несоблюдении и/или модифицируют функционирование фрагмента защищенной программы (2 р) таким образом, чтобы функционирование защищенной программы (2 р) было изменено. 2. Способ по п.1, отличающийся тем, что, чтобы ограничить использование защищенной программы (2 р), в фазе (Р) защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, переменную для количественного контроля использования одной функциональной возможности программы,в качестве критерия, который необходимо соблюдать, по меньшей мере одно пороговое значение,связанное с каждой переменной для количественного контроля,и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля; конструируют средства эксплуатации, позволяющие устройству обработки и хранения применять средства обновления; и модифицируют защищенную программу (2 р) посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы,посредством выбора по меньшей мере одной функциональной возможности защищенной программы (2 р), использование которой можно проконтролировать с использованием переменной для количественного контроля,по меньшей мере одной переменной для количественного контроля, которая служит для количественной характеристики использования упомянутой функциональной возможности,-28 005466 по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования указанной функциональной возможности,и по меньшей мере одного метода обновления значения указанной переменной для количественного контроля в зависимости от использования указанной функциональной возможности,и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2 р) переменная для количественного контроля обновляется посредством второй выполняемой части (2peu) в зависимости от использования указанной функциональной возможности и учитывается по меньшей мере одно превышение порогового значения,а в фазе (U) использования в присутствии устройства обработки и хранения, в случае, когда обнаружено по меньшей мере одно превышение порогового значения, соответствующее по меньшей мере одному пределу использования, информируют об этом систему (3) обработки данных и/или модифицируют функционирование фрагмента защищенной программы (2 р) таким образом, чтобы функционирование защищенной программы (2 р) было изменено. 3. Способ по п.2, отличающийся тем, что в фазе (Р) защиты определяют несколько соответствующих пороговых значений по меньшей мере для одной переменной для количественного контроля и различные средства принуждения, соответствующие каждому из указанных порогов; и модифицируют защищенную программу (2 р) посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороговых значений,соответствующих различным пределам использования функциональной возможности,посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля,и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2 р) превышения различных пороговых значений учитываются посредством второй выполняемой части (2 реu) различными способами,а в фазе (U) использования в присутствии устройства обработки и хранения в случае, когда обнаружено превышение первого порогового значения, дают команду защищенной программе (2 р) не использовать впредь соответствующую функциональную возможность,а в случае, когда обнаружено превышение второго порогового значения, делают невыполнимой соответствующую функциональную возможность и/или по меньшей мере часть защищенной программы(2 р). 4. Способ по п.2 или 3, отличающийся тем, что в фазе (Р) защиты определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля; конструируют средства эксплуатации, позволяющие также устройству обработки и хранения задействовать средства перезагрузки; и модифицируют защищенную программу (2 р) посредством выбора в исходном коде (2ps) защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование одной функциональной возможности, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование,и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем указанная модификация такова, что в фазе перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено,а в фазе перезагрузки обновляют по меньшей мере одну выбранную переменную для количественного контроля и по меньшей мере одно соответствующее пороговое значение так, чтобы разрешить по меньшей мере одно дополнительное использование функциональной возможности. 5. Способ по п.1, отличающийся тем, что в фазе (Р) защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, профиль использования программы и в качестве критерия, который требуется соблюдать, по меньшей мере один признак выполнения программы; и модифицируют защищенную программу (2 р) посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одного профиля использования программы,посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования,-29 005466 и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2 р) вторая выполняемая часть (2 реu) соблюдает все выбранные признаки выполнения,а в фазе (U) использования в присутствии устройства обработки и хранения в случае, если обнаружено, что не соблюдается хотя бы один признак выполнения, информируют об этом систему (3) обработки данных и/или модифицируют функционирование части защищенной программы (2 р) так, чтобы функционирование защищенной программы (2 р) было изменено. 6. Способ по п.5, отличающийся тем, что в фазе (Р) защиты определяют набор инструкций, инструкции из состава которого могут быть выполнены в устройстве обработки и хранения,набор команд инструкций для указанного набора инструкций, причем команды инструкций могут быть выполнены в системе (3) обработки данных, вызывая в устройстве обработки и хранения выполнение инструкций,в качестве профиля использования - сцепление инструкций,в качестве признака выполнения - желаемое сцепление для выполнения инструкций,в качестве средств (17) детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому,в качестве средств (18) управления - средства, позволяющие проинформировать систему (3) обработки данных и/или модифицировать функционирование фрагмента защищенной программы (2 р), если сцепление инструкций не соответствует желаемому; конструируют средства эксплуатации, позволяющие устройству обработки и хранения выполнять инструкции из набора инструкций, причем выполнение указанных инструкций вызывается выполнением команд инструкций в системе (3) обработки данных; и модифицируют защищенную программу (2 р) посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы: посредством преобразования элементарных функций в инструкции,посредством задания сцепления, которое должны соблюдать, по меньшей мере, некоторые из инструкций во время их выполнения в устройстве обработки и хранения,и посредством преобразования элементарных команд в команды инструкций, соответствующих используемым инструкциям,а в фазе (U) использования в присутствии устройства обработки и хранения в случае, если обнаружено, что сцепление выполняемых в устройстве обработки и хранения инструкций не соответствует желаемому, информируют об этом систему (3) обработки данных и/или модифицируют функционирование фрагмента защищенной программы (2 р) так, чтобы функционирование защищенной программы (2 р) было изменено. 7. Способ по п.6, отличающийся тем, что в фазе (Р) защиты определяют в качестве набора инструкций - набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата,по меньшей мере для части инструкций, работающих на регистрах,часть (PF), задающую функциональную возможность инструкции,и часть, задающую желаемое сцепление для выполнения инструкций и содержащую битовые поля,соответствующие полю (СII) идентификации инструкции, и для каждого операнда инструкции полю(CDk) флага и полю (CIPk) идентификации, предусмотренной для операнда,для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле (CIGV) предусмотренной идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр,в качестве средств (17) детектирования - средства, позволяющие во время выполнения инструкции для каждого операнда, когда этого требует поле (CDk) флага, контролировать равенство между полем(CIGV) генерируемой идентификации, соответствующим регистру, используемому указанным операндом, и полем (CIPk) предусмотренной идентификации начального адреса этого операнда,и в качестве средств (18) управления - средства, позволяющие модифицировать результат выполнения инструкций, если по меньшей мере одно из контролируемых равенств ложно. 8. Способ по любому из пп.1-7, отличающийся тем, что в фазе (Р) защиты модифицируют защищенную программу (2 р) посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы (2 р) частично определяет состояние защищенной программы (2 р),посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2ps) защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы(2 р) по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве обработки и хранения,-30
МПК / Метки
МПК: G06F 1/00
Метки: называемого, способ, программы, детектирования, использования, принуждения, неавторизованного, защиты, помощи, принципа
Код ссылки
<a href="https://eas.patents.su/30-5466-sposob-zashhity-programmy-ot-eyo-neavtorizovannogo-ispolzovaniya-pri-pomoshhi-tak-nazyvaemogo-principa-detektirovaniya-i-prinuzhdeniya.html" rel="bookmark" title="База патентов Евразийского Союза">Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения</a>
Предыдущий патент: Способ защиты программы от её неавторизованного использования при помощи так называемого принципа переменной
Следующий патент: Способ вакуумирования и установка для обработки стали
Случайный патент: Способ плазмо-электрического генерирования энергии