EA005466B1 - Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения - Google Patents

Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения Download PDF

Info

Publication number
EA005466B1
EA005466B1 EA200400058A EA200400058A EA005466B1 EA 005466 B1 EA005466 B1 EA 005466B1 EA 200400058 A EA200400058 A EA 200400058A EA 200400058 A EA200400058 A EA 200400058A EA 005466 B1 EA005466 B1 EA 005466B1
Authority
EA
Eurasian Patent Office
Prior art keywords
program
execution
protected
protected program
processing
Prior art date
Application number
EA200400058A
Other languages
English (en)
Other versions
EA200400058A1 (ru
Inventor
Жан-Кристоф Кьюно
Жилль Згро
Original Assignee
Валиди
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Валиди filed Critical Валиди
Publication of EA200400058A1 publication Critical patent/EA200400058A1/ru
Publication of EA005466B1 publication Critical patent/EA005466B1/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Preparing Plates And Mask In Photomechanical Process (AREA)
  • Stored Programmes (AREA)

Abstract

Предметом настоящего изобретения является способ защиты от неавторизованного использования уязвимой программы (которая функционирует в системе обработки данных) с использованием по меньшей мере одного устройства защиты. Способ состоит в том, чтобы определить по меньшей мере одну характеристику выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в некотором устройстве; по меньшей мере один критерий, который должен выполняться по меньшей мере для одной характеристики выполнения программы; средства детектирования, которые следует применить в устройстве и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не удовлетворяет по меньшей мере одному соответствующему критерию; и средства принуждения, которые следует применить в устройстве и которые позволяют проинформировать систему обработки данных и/или модифицировать ход выполнения программы, если хотя бы один критерий не соблюдается.

Description

В указанной области техники основная проблема связана с неавторизованным использованием программ пользователями, которые не приобрели право на их использование (лицензию). Такое незаконное использование программ наносит явный ущерб производителям и продавцам программ и/или любым иным лицам, которые используют такие программы в своих изделиях. Во избежание создания таких незаконных копий для защиты подобных программ был предложен ряд решений на основе имеющихся технических возможностей.
Так, известен способ защиты, состоящий в использовании аппаратного защитного элемента - физического устройства, называемого электронным защитным ключом-заглушкой (бопд1е). Такой защитный ключ должен гарантировать выполнение программы только в присутствии ключа. Приходится, однако, констатировать, что это решение неэффективно, так как легко обходится. Злоумышленник может при помощи специальных приемов, например дизассемблирования, удалить команды контроля защитного ключа. При этом становится возможным изготовить незаконные копии модифицированных версий программы, не имеющих никакой защиты. Кроме того, это решение нельзя распространить на все программы в силу сложности подключения более чем двух защитных ключей к одной системе.
Сущность изобретения
Соответственно задача, решаемая настоящим изобретением, заключается в устранении указанных недостатков путем создания способа защиты программы от неавторизованного доступа, использующего устройство обработки и хранения, специально созданное для этой цели, в той мере, в которой наличие такого устройства необходимо для полноценной работы программы.
Решение данной задачи достигнуто в соответствии с изобретением созданием способа защиты (на основе по меньшей мере одного незадействованного устройства, содержащего, по меньшей мере, средства обработки и средства запоминания) от неавторизованного использования уязвимой программы, которая функционирует в системе обработки данных. Способ согласно изобретению состоит в том, что в фазе защиты определяют по меньшей мере одну характеристику выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве, по меньшей мере один критерий, который должен выполняться, по меньшей мере, для одной характеристики выполнения программы, средства детектирования, которые следует применять в устройстве и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию, и средства управления, называемые далее также средствами принуждения, которые следует применять в устройстве и которые позволяют проинформировать систему обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий;
конструируют средства эксплуатации, позволяющие устройству задействовать средства детектирования и средства управления (принуждения);
создают защищенную программу посредством выбора по меньшей мере одной характеристики выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы, посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы, посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы, посредством выбора по меньшей мере одного фрагмента кода уязвимой программы, содержащего по меньшей мере один выбранный алгоритм, посредством создания исходного кода защищенной программы на основе кода уязвимой программы модифицированием по меньшей мере одного выбранного фрагмента кода уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы первая выполняемая часть выполняется в системе обработки данных, а вторая выполняемая часть выполняется в устройстве, которое также содержит средства обработки, полученном из незадействованного устройства после загрузки информации, вторая выполняемая часть выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма, и в ходе выполнения защищенной программы по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части, и несоблюдение критерия приводит к модификации выполнения защищенной программы;
-1005466 и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы реализуется первая выполняемая часть, которая выполняется в системе обработки данных, и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы, и второй части объектного кода защищенной программы, содержащей средства эксплуатации, позволяющие применять также средства детектирования и средства принуждения, причем вторая часть объектного кода такова, что после загрузки в незадействованное устройство, в ходе выполнения защищенной программы реализуется вторая выполняемая часть, посредством которой контролируется по меньшей мере одна характеристика выполнения программы, и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы;
и загружают вторую часть объектного кода в незадействованное устройство с получением устройства, а в фазе (И) использования, в ходе которой происходит выполнение защищенной программы, в присутствии устройства, если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы, соблюдены, допускают номинальное функционирование указанных фрагментов защищенной программы и, следовательно, номинальное функционирование защищенной программы, а если по меньшей мере один из критериев, отвечающих характеристике контролируемого выполнения одного фрагмента защищенной программы, не соблюден, информируют систему обработки данных об указанном несоблюдении и/или модифицируют функционирование фрагмента защищенной программы таким образом, чтобы функционирование защищенной программы было изменено;
тогда как при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на запуск выполнения в устройстве функциональной возможности выбранного алгоритма, не обеспечивается возможность корректно ответить на этот запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной.
В соответствии с вариантом осуществления способа по изобретению: в фазе защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, переменную для количественного контроля использования одной функциональной возможности программы, в качестве критерия, который необходимо соблюдать, по меньшей мере одно пороговое значение, связанное с каждой переменной для количественного контроля, и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля;
конструируют средства эксплуатации, позволяющие устройству применять средства обновления;
и модифицируют защищенную программу посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы, посредством выбора по меньшей мере одной функциональной возможности защищенной программы, использование которой можно проконтролировать с использованием переменной для количественного контроля, по меньшей мере одной переменной для количественного контроля, которая служит для количественной характеристики использования упомянутой функциональной возможности, по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования указанной функциональной возможности, и по меньшей мере одного метода обновления значения указанной переменной для количественного контроля в зависимости от использования указанной функциональной возможности, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы переменная для количественного контроля обновляется посредством второй выполняемой части в зависимости от использования указанной функциональной возможности и учитывается по меньшей мере одно превышение порогового значения, а в фазе использования в присутствии устройства, в случае, когда обнаружено по меньшей мере одно превышение порогового значения, соответствующее по меньшей мере одному пределу использования, информируют об этом систему обработки данных и/или модифицируют функционирование фрагмента защищенной программы таким образом, чтобы функционирование защищенной программы было изменено.
В соответствии с другим вариантом осуществления способа согласно изобретению в фазе защиты определяют несколько соответствующих пороговых значений по меньшей мере для одной переменной для количественного контроля и различные средства принуждения, соответствующие каждому из указанных порогов; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороговых значений, соответствующих различным пределам
-2005466 использования функциональной возможности, посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы превышения различных пороговых значений учитываются посредством второй выполняемой части различными способами, а в фазе использования в присутствии устройства в случае, когда обнаружено превышение первого порогового значения, дают команду защищенной программе не использовать впредь соответствующую функциональную возможность, а в случае, когда обнаружено превышение второго порогового значения, делают невыполнимой соответствующую функциональную возможность и/или по меньшей мере часть защищенной программы.
В соответствии с еще одним вариантом осуществления способа согласно изобретению в фазе защиты определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля; конструируют средства эксплуатации, позволяющие также устройству задействовать средства перезагрузки; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование одной функциональной возможности, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование, и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем указанная модификация такова, что в фазе перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено, а в фазе перезагрузки обновляют по меньшей мере одну выбранную переменную для количественного контроля и по меньшей мере одно соответствующее пороговое значение так, чтобы разрешить по меньшей мере одно дополнительное использование функциональной возможности.
В соответствии с вариантом осуществления способа согласно изобретению: в фазе защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, профиль использования программы и в качестве критерия, который требуется соблюдать, по меньшей мере один признак выполнения программы;
и модифицируют защищенную программу посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одного профиля использования программы, посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы вторая выполняемая часть соблюдает все выбранные признаки выполнения, а в фазе использования в присутствии устройства в случае, если обнаружено, что не соблюдается хотя бы один признак выполнения, информируют об этом систему обработки данных и/или модифицируют функционирование части защищенной программы так, чтобы функционирование защищенной программы было изменено.
В соответствии с дальнейшим вариантом осуществления способа согласно изобретению в фазе защиты определяют набор инструкций, инструкции из состава которого могут быть выполнены в устройстве, набор команд инструкций для указанного набора инструкций, причем команды инструкций могут быть выполнены в системе обработки данных, вызывая в устройстве выполнение инструкций, в качестве профиля использования - сцепление инструкций, в качестве признака выполнения - желаемое сцепление для выполнения инструкций, в качестве средств детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому, в качестве средств принуждения - средства, позволяющие проинформировать систему обработки данных и/или модифицировать функционирование фрагмента защищенной программы, если сцепление инструкций не соответствует желаемому;
конструируют средства эксплуатации, позволяющие устройству выполнять инструкции из набора инструкций, причем выполнение указанных инструкций вызывается выполнением команд инструкций в системе обработки данных;
и модифицируют защищенную программу посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, посредством преобразования элементарных функций в инструкции, посредством задания сцепления, которое должны соблюдать, по меньшей мере, некоторые из инструкций во время их выполнения в устройстве, и посредством преобразования элементарных команд в команды инструкций, соответствующих используемым инструкциям,
-3005466 а в фазе использования в присутствии устройства в случае, если обнаружено, что сцепление выполняемых в устройстве инструкций не соответствует желаемому, информируют об этом систему обработки данных и/или модифицируют функционирование фрагмента защищенной программы так, чтобы функционирование защищенной программы было изменено.
В соответствии с другой предпочтительной формой реализации способа согласно изобретению в фазе защиты определяют в качестве набора инструкций - набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата, по меньшей мере для части инструкций, работающих на регистрах, часть, задающую функциональную возможность инструкции, и часть, задающую желаемое сцепление для выполнения инструкций и содержащую битовые поля, соответствующие полю идентификации инструкции и для каждого операнда инструкции полю флага и полю идентификации, предусмотренной для операнда, для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле предусмотренной идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр, в качестве средств детектирования - средства, позволяющие во время выполнения инструкции для каждого операнда, когда этого требует поле флага, контролировать равенство между полем генерируемой идентификации, соответствующим регистру, используемому указанным операндом, и полем предусмотренной идентификации начального адреса этого операнда, и в качестве средств принуждения - средства, позволяющие модифицировать результат выполнения инструкций, если по меньшей мере одно из контролируемых равенств ложно.
В соответствии с предпочтительной формой реализации способа согласно изобретению в фазе защиты модифицируют защищенную программу посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы частично определяет состояние защищенной программы, посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве, и посредством создания первой части объектного кода защищенной программы, причем эта первая часть объектного кода такова, что в ходе выполнения защищенной программы по меньшей мере один фрагмент первой выполняемой части учитывает, что по меньшей мере одна переменная или по меньшей мере одна копия переменной находится в устройстве, и второй части объектного кода защищенной программы, причем эта вторая часть объектного кода такова, что после загрузки в устройство и в ходе выполнения защищенной программы появляется вторая выполняемая часть, при помощи которой по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной также находится в устройстве, а в фазе использования в присутствии устройства всякий раз, когда этого требует фрагмент первой выполняемой части, используют переменную или копию переменной, находящейся в устройстве так, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа являлась полнофункциональной, а при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на использование переменной или копии переменной, находящейся в устройстве, не обеспечивается возможность корректного ответа на указанный запрос так, что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной.
В соответствии с еще одной предпочтительной реализации способа согласно изобретению в фазе защиты определяют в качестве команды запуска - команду инструкции, в качестве зависимой функции - инструкцию, в качестве установочного параметра - по меньшей мере один аргумент для команды запуска, соответствующий, по меньшей мере частично, информации, переданной системой обработки данных на устройство, чтобы вызвать запуск соответствующей зависящей функции, метод переименования установочных параметров, позволяющий переименовать установочные параметры, чтобы получить команды запуска с переименованными установочными параметрами, и средства восстановления, предназначенные для применения в устройстве в фазе использования и позволяющие найти зависимую функцию, которую необходимо выполнить, исходя из переименованного установочного параметра;
конструируют средства эксплуатации, позволяющие устройству задействовать средства восстановления; и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы команд запуска,
-4005466 посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы посредством переименования установочных параметров выбранных команд запуска, чтобы скрыть идентичность соответствующих зависящих функций, и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы выполняются команды запуска с переименованными установочными параметрами, и второй части объектного кода защищенной программы, содержащей средства эксплуатации, использующие также средства восстановления, причем вторая часть объектного кода такова, что после загрузки в устройство, в ходе выполнения защищенной программы идентичность зависимых функций, выполнение которых вызвано первой выполняемой частью, восстанавливается посредством второй выполняемой части, а зависимые функции выполняются посредством второй выполняемой части, а в фазе использования в присутствии устройства всякий раз, когда этого требует команда запуска с переименованными установочными параметрами, содержащаяся во фрагменте первой выполняемой части, восстанавливают в устройстве идентичность соответствующей зависящей функции и выполняют ее так, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа являлась полнофункциональной; тогда как при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на запуск выполнения в устройстве зависящей функции, не обеспечивается возможность корректного ответа на указанный запрос так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной.
В соответствии с одним из вариантов осуществления способа согласно изобретению в фазе защиты определяют по меньшей мере для одной зависящей функции семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска, переименованные установочные параметры которых являются различными;
и модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной команды запуска с переименованными установочными параметрами, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы посредством замены, по меньшей мере, переименованного установочного параметра команды запуска с выбранным установочным параметром на другой переименованный установочный параметр, что вызывает запуск зависящей функции из того же семейства.
В соответствии с вариантом реализации способ согласно изобретению включает в фазе защиты определение по меньшей мере для одной зависящей функции семейства алгоритмически эквивалентных зависящих функций посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве, или посредством использования поля идентификации инструкции и полей идентификации, предусмотренных для операндов.
В соответствии с вариантом реализации способа согласно изобретению: в фазе защиты определяют в качестве метода переименования установочных параметров - метод кодирования для кодировки установочных параметров, и в качестве средств восстановления - средства, применяющие метод декодирования для раскодирования переименованных установочных параметров и восстановления идентичности зависимых функций, которые требуется выполнить в устройстве.
В соответствии с другой предпочтительной формой реализации способа согласно изобретению: в фазе защиты модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одного условного перехода, выполняемого по меньшей мере в одном выбранном алгоритме, посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы функциональная возможность по меньшей мере одного выбранного условного перехода выполняется, посредством второй выполняемой части в устройстве, и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы функциональная возможность по меньшей мере одного выбранного условного перехода выполняется в устройстве, и второй части объектного кода защищенной программы, причем вторая часть объектного кода такова, что после загрузки в устройство, в ходе выполнения защищенной программы реализуется вторая выполняемая часть, посредством которой выполняется функциональная возможность по меньшей мере одного выбранного условного перехода, а в фазе использования в присутствии устройства всякий раз, когда этого требует фрагмент первой выполняемой части, выполняют в устройстве функции по меньшей мере одного выбранного условного перехода таким образом, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа являлась полнофункциональной;
-5005466 а при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части на выполнение функций условного перехода в устройстве, не обеспечивается возможность корректного ответа на указанный запрос так, что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа не является полнофункциональной.
В соответствии со следующим вариантом осуществления способа согласно изобретению в фазе защиты модифицируют защищенную программу посредством выбора в исходном коде защищенной программы по меньшей мере одной серии выбранных условных переходов, посредством модифицирования по меньшей мере одного выбранного фрагмента кода защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве посредством второй выполняемой части, и посредством создания первой части объектного кода защищенной программы, причем первая часть объектного кода такова, что в ходе выполнения защищенной программы функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве, и второй части объектного кода защищенной программы, причем вторая часть объектного кода такова, что после загрузки в устройство в ходе выполнения защищенной программы реализуется вторая выполняемая часть, посредством которой выполняется глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов.
Способ согласно изобретению позволяет также защитить использование программы путем применения устройства обработки и хранения, особенностью которого является способность содержать часть выполняемой программы. Отсюда следует, что всякая производная версия программы, которая попытается функционировать без устройства обработки и хранения, потребует воссоздания части программы, содержащейся в устройстве хранения в ходе выполнения. Как следствие эта производная версия программы не будет полнофункциональной.
Перечень чертежей
Другие различные свойства изобретения станут ясны из нижеследующего описания, приводимого со ссылкой на прилагаемые чертежи, на которых показаны, в качестве не исчерпывающих примеров, возможные варианты и формы реализации и использования изобретения.
Фиг. 10 и 11 представляют собой функциональные блок-схемы, иллюстрирующие различные представления программы, соответственно незащищенной и защищенной способом согласно изобретению.
На фиг. 20-22 приведены в качестве примеров различные формы выполнения устройства для осуществления способа по изобретению.
Фиг. 30 и 31 представляют собой функциональные блок-схемы, поясняющие общий принцип способа согласно изобретению.
Фиг. 40-43 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению, реализующий принцип защиты при помощи переменной.
Фиг. 70-74 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению, реализующий принцип защиты при помощи детектирования и принуждения.
Фиг. 80-85 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению, реализующий принцип защиты при помощи переименования.
Фиг. 90-92 представляют собой схемы, иллюстрирующие способ защиты согласно изобретению, реализующий принцип защиты при помощи условного перехода.
Фиг. 100 представляет собой схему, иллюстрирующую различные фазы осуществления изобретения.
На фиг. 110 приведен пример реализации системы, позволяющей реализовать стадию построения фазы защиты согласно изобретению.
На фиг. 120 приведен пример реализации устройства предперсонализации, используемого в способе защиты согласно изобретению.
На фиг. 130 приведен пример реализации системы, позволяющей осуществить стадию изготовления средств для фазы защиты согласно изобретению.
На фиг. 140 приведен пример реализации системы, позволяющей применить способ защиты согласно изобретению.
На фиг. 150 приведен пример реализации устройства персонализации, используемого в способе защиты согласно изобретению.
Сведения, подтверждающие возможность осуществления изобретения
В дальнейшем описании используются следующие определения.
Система 3 обработки данных - это система, способная выполнять программу.
Устройство обработки и хранения - устройство, способное получать данные, передаваемые системой 3 обработки данных, возвращать данные системе 3 обработки данных, хранить данные в тайне, по меньшей мере частично, и сохранять по меньшей мере их часть даже в случае, когда устройство отклю
-6005466 чено от питания, и осуществлять алгоритмическую обработку данных, причем данная обработка частично или полностью является секретной.
Устройство 6 - устройство хранения или устройство обработки и хранения, реализующее способ согласно изобретению.
Незадействованное устройство 60 - устройство, которое не использует способ согласно изобретению, но которое может получить информацию, превращающую его в устройство 6.
Предперсонализированное устройство 66 представляет собой незадействованное устройство 60, получившее часть информации, которая позволяет ему после получения дополнительной информации быть преобразованным в устройство 6.
Загрузка данных в незадействованное устройство 60 или в предперсонализированное устройство 66 соответствует передаче информации в незадействованное устройство 60 или в предперсонализированное устройство 66 и хранению указанных переданных данных. Передача информации может включать в себя изменение ее формата.
Переменные, величина или функция, содержащиеся в системе 3 обработки данных, обозначаются в дальнейшем заглавными буквами, а переменные, величина или функция, содержащиеся в устройстве 6, обозначаются в дальнейшем строчными буквами.
Защищенная программа - программа, которая была защищена, по меньшей мере, на основе одного принципа защиты, реализованного в способе согласно изобретению.
Уязвимая программа - программа, которая не была защищена никаким из принципов защиты, реализованных в способе согласно изобретению.
В случае, когда различие между уязвимой и защищенной программой несущественно, применяется термин программа.
Программа может быть представлена в различной форме в соответствии с моментом ее жизненного цикла, т.е. как исходный код, объектный код, дистрибутив, динамическое представление.
Представление программы в виде исходного кода понимается как представление, дающее после преобразования представление в виде объектного кода. Представление в виде исходного кода может представляться на различных уровнях, от абстрактного концептуального уровня до уровня, непосредственно выполняемого системой обработки данных или устройством обработки и хранения.
Объектное представление программы (представление на уровне объектного кода) отвечает уровню представления, на котором программа после переноса в дистрибутив и последующей загрузки в систему обработки данных или устройство обработки и хранения может быть выполнена. Это может быть, например, двоичный код, интерпретируемый код и т.п.
Дистрибутив - физический или виртуальный носитель, содержащий объектное представление, причем этот дистрибутив должен быть предоставлен в распоряжение пользователя, чтобы позволить ему использовать программу.
Динамическое представление соответствует выполнению программы с дистрибутива.
Фрагмент программы отвечает какой-либо ее части и может, например, соответствовать одной или нескольким инструкциям (последовательным или нет), и/или одному или нескольким функциональным блокам (последовательным или нет), и/или одной или нескольким функциям, и/или одной или нескольким подпрограммам, и/или одному или нескольким модулям. Фрагмент программы может соответствовать и всей программе полностью.
На фиг. 10 и 11 приведены различные представления соответственно уязвимой программы 2ν в общем виде и программы 2р, защищенной согласно изобретению.
На фиг. 10 приведены различные представления уязвимой программы 2ν, появляющиеся в ходе ее жизненного цикла. Уязвимая программа 2ν может появляться в одном из различных видов, т.е. как исходный код 2ν§; объектный код 2νο; дистрибутив 2νά, который может предоставляться обычно на физическом носителе, например на компакт-диске, или в виде файлов, передаваемых по сети (по стандарту С8М. по сети Интернет и т.п.); в виде динамического представления 2ус. соответствующего выполнению уязвимой программы 2ν в системе 3 обработки данных любых известных типов, которые в классическом случае содержат по меньшей мере один процессор 4.
Фиг. 11 иллюстрирует различные представления защищенной программы 2р, появляющиеся в ходе ее жизненного цикла. Защищенная программа 2р может также появляться в виде исходного кода (представления) 2р§, содержащего первую часть исходного кода, предназначенную для системы 3 обработки данных, и, возможно, вторую часть исходного кода, предназначенную для устройства 6, причем часть этих частей исходного кода может обычно содержаться в общих файлах;
объектного представления 2ро, содержащего первую часть 2ро§ объектного кода, предназначенную для системы 3 обработки данных, и, возможно, вторую часть 2рои объектного кода, предназначенную для устройства 6;
дистрибутива 2рб, содержащего первую часть 2рб§ дистрибутива, содержащую первую часть 2ро§ объектного кода, причем эта первая часть 2рб§ дистрибутива предназначена для системы 3 обработки данных и может быть представлена обычно в форме дистрибутива на физическом носителе, например на
-7005466 компакт-диске, или в виде файлов, передаваемых по сети (по стандарту С8М, по сети Интернет и т.п.), и вторую часть 2рби дистрибутива, представленного в виде по меньшей мере одного незадействованного устройства 60, или по меньшей мере одного предперсонализированного устройства 66, в которое была загружена часть второй части 2рои объектного кода и для которого пользователь должен завершить персонализацию путем загрузки дополнительной информации, чтобы получить устройство 6, причем эта дополнительная информация может поступать, например, путем загрузки или передачи по сети, или по меньшей мере одного устройства 6, в которое была загружена вторая часть 2рои объектного кода;
или в виде динамического представления 2ре, соответствующего выполнению защищенной программы 2р. Это динамическое представление 2ре содержит первую выполняемую часть 2рс5. которая выполняется в системе 3 обработки данных, и вторую выполняемую часть 2реи, которая выполняется в устройстве 6.
В случае, когда различие между различными представлениями защищенной программы 2р несущественно, используются выражения первая часть защищенной программы и вторая часть защищенной программы.
Реализация способа согласно изобретению в соответствии с динамическим представлением, проиллюстрированным на фиг. 11, использует устройство 1р защиты, содержащее систему 3 обработки данных, связанную линией 5 связи с устройством 6. Система 3 обработки данных может быть любого типа и содержит в обычном варианте по меньшей мере один процессор 4. Система 3 обработки данных может быть компьютером или быть частью, например, различных машин, устройств, стационарных или подвижных изделий, в том числе любых транспортных средств. Линия 5 связи может быть осуществлена любым возможным способом, например, по линии последовательной передачи, по шине И8В, по радио, по оптическому каналу, по сети или через прямое электрическое соединение со схемой системы 3 обработки данных и т.п. Следует отметить, что устройство 6 может физически находиться внутри той же интегральной схемы, что и процессор 4 системы 3 обработки данных. В этом случае устройство 6 может рассматриваться как сопроцессор по отношению к процессору 4 системы обработки данных, а линия 5 связи является внутренней линией связи в интегральной схеме.
На фиг. 20-22 приведены в качестве примеров, которые не исчерпывают возможные варианты, различные формы реализации устройства 1р защиты, позволяющего реализовать способ защиты, соответствующий изобретению.
В примере реализации по фиг. 20 устройство 1р защиты содержит в качестве системы 3 обработки данных компьютер и в качестве устройства 6 карту 7 с микрочипом и ее интерфейс 8, обычно называемый устройством чтения карт. Компьютер 3 связан с устройством 6 посредством линии 5 связи. В ходе выполнения защищенной программы 2р первая выполняемая часть 2ре§, которая выполняется в системе 3 обработки данных, и вторая выполняемая часть 2реи, которая выполняется в карте 7 с микрочипом и в ее интерфейсе 8, должны быть функциональными, чтобы защищенная программа 2р была полнофункциональна.
В примере реализации по фиг. 21 устройство 1р защиты содержится в изделии 9 общего вида, содержащем различные органы 10, адаптированные к функции или к функциям, реализуемым таким изделием 9. Устройство 1р защиты содержит, с одной стороны, систему 3 обработки данных, встроенную в изделие 9, и, с другой стороны, устройство 6, связанное с изделием 9. Чтобы изделие 9 было полнофункциональным, защищенная программа 2р должна быть полностью функциональной. Так, в ходе выполнения защищенной программы 2р и первая выполняемая часть 2ре§, которая выполняется в системе 3 обработки данных, и вторая выполняемая часть 2реи, которая выполняется в устройстве 6, должны быть работоспособны. Эта защищенная программа 2р позволяет, следовательно, непрямым образом защитить от неавторизованного использования изделие 9 или одну из его функциональных возможностей. Изделие 9 может быть, например, установкой, системой, машиной, игрушкой, электробытовым прибором, телефоном.
В примере реализации по фиг. 22 устройство 1р защиты содержит множество компьютеров, а также часть коммуникационной сети. Система 3 обработки данных представляет собой первый компьютер, связанный посредством линии 5 связи сетевого типа с устройством 6, которое представляет собой второй компьютер. Для реализации изобретения второй компьютер 6 используется как сервер лицензий для защищенной программы 2р. В ходе выполнения защищенной программы 2р и первая выполняемая часть 2ре§, которая выполняется в первом компьютере 3, и вторая выполняемая часть 2реи, которая выполняется во втором компьютере 6, должны быть функциональными, чтобы защищенная программа 2р была полнофункциональна.
Фиг. 30 позволяет пояснить более точно способ защиты согласно изобретению. Следует отметить, что уязвимая программа 2ν рассматривается как выполняемая полностью в системе 3 обработки данных. Напротив, в случае реализации защищенной программы 2р система 3 обработки данных содержит средства 12 передачи, связанные линией 5 связи со средствами 13 передачи, составляющими часть устройст
-8005466 ва 6, что позволяет сообщаться между собой первой выполняемой части 2ре§ и второй выполняемой части 2реи защищенной программы 2р.
Следует иметь в виду, что средства 12, 13 передачи реализованы программно или материально и способны обеспечить и, возможно, оптимизировать передачу данных между системой 3 обработки данных и устройством 6. Эти средства 12, 13 передачи приспособлены для того, чтобы позволить воспользоваться защищенной программой 2р, которая является предпочтительно независимой от типа применяемой линии 5 связи. Эти средства 12, 13 передачи не относятся к предмету изобретения и не описываются более детально, так как они хорошо известны специалистам. Первая часть защищенной программы 2р содержит команды. В ходе выполнения защищенной программы 2р выполнение этих команд первой выполняемой частью 2ре§ позволяет осуществить связь между первой выполняемой частью 2ре§ и второй выполняемой частью 2реи. В дальнейшем описании эти команды представлены в виде ΙΝ, ОИТ или ТЕЮ.
Как показано на фиг. 31, чтобы позволить реализацию второй выполняемой части 2реи защищенной программы 2р, устройство 6 содержит средства 14 защиты. В случае если устройство 6 является запоминающим устройством, средства 14 защиты содержат средства 15 запоминания. В случае если устройство 6 является устройством обработки и хранения, средства 14 защиты содержат средства 15 запоминания и средства 16 обработки.
Для упрощения дальнейшего описания будем считать, что в ходе выполнения защищенной программы 2р устройство 6 присутствует или устройство 6 отсутствует. В действительности, устройство 6 в том случае, когда содержит средства 14 защиты, не приспособленные к выполнению второй выполняемой части 2реи защищенной программы 2р, также рассматривается как отсутствующее каждый раз, когда выполнение защищенной программы 2р не является корректным. Иными словами устройство 6, физически присутствующее и содержащее средства 14 защиты, приспособленные к выполнению второй выполняемой части 2реи защищенной программы 2р, всегда рассматривается как присутствующее;
устройство 6, физически присутствующее, но содержащее неприспособленные средства 14 защиты, т.е. не позволяющие осуществить корректную реализацию второй выполняемой части 2реи защищенной программы 2р, рассматривается как присутствующее, если оно функционирует корректно, и как отсутствующее, если оно не функционирует корректно;
устройство 6, физически отсутствующее, всегда рассматривается как отсутствующее.
В случае если устройство 6 состоит из карты 7 с микрочипом и ее интерфейса 8, средства 13 передачи разделяются на две части, из которых одна находится на интерфейсе 8, а другая - на карте 7 с микрочипом. В этом примере реализации отсутствие карты 7 с микрочипом рассматривается как эквивалент отсутствия устройства 6. Иными словами, в отсутствие карты 7 с микрочипом и/или ее интерфейса 8 средства 14 защиты недоступны и, следовательно, не позволяют осуществить выполнение второй выполняемой части 2реи защищенной программы, так что защищенная программа 2р не является полнофункциональной.
Согласно изобретению способ защиты направлен на реализацию принципа защиты, названного детектирование и принуждение, описание которого выполнено со ссылкой на фиг. 70-74.
Для реализации принципа защиты посредством детектирования и принуждения определяются по меньшей мере одна характеристика выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве 6;
по меньшей мере один критерий, который требуется соблюдать по меньшей мере для одной характеристики выполнения программы;
средства 17 детектирования, которые необходимо применять в устройстве 6 и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию;
средства 18 принуждения, которые необходимо применять в устройстве 6 и которые позволяют проинформировать систему 3 обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий.
Для реализации принципа защиты при помощи детектирования и принуждения конструируют также средства эксплуатации, позволяющие преобразовать незадействованное устройство 60 в устройство 6, по меньшей мере, реализующее средства 17 детектирования и средства 18 принуждения.
На фиг. 70 показаны средства, необходимые для реализации принципа защиты при помощи детектирования и принуждения. Устройство 6 содержит средства 17 детектирования и средства 18 принуждения, принадлежащие средствам 16 обработки. Средства 18 принуждения получают информацию о несоблюдении критерия от средств 17 детектирования.
Точнее говоря, средства 17 детектирования используют информацию, исходящую от средств 13 передачи и/или от средств 15 запоминания и средств 16 обработки, чтобы соблюдалась одна или несколько характеристик выполнения программы. Каждой характеристике выполнения программы сопоставляется по меньшей мере один критерий, который требуется соблюдать.
-9005466
В случае если обнаружено, что по меньшей мере одна характеристика выполнения программы не удовлетворяет по меньшей мере одному критерию, средства 17 детектирования информируют об этом средства 18 принуждения. Эти средства 18 принуждения адаптированы для изменения соответствующим образом состояния устройства 6.
Для реализации принципа защиты с помощью детектирования и принуждения должны быть выбраны также по меньшей мере одна характеристика выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы;
по меньшей мере один критерий, который требуется соблюдать по меньшей мере для одной выбранной характеристики выполнения программы;
в исходном коде 2ν§ уязвимой программы по меньшей мере один алгоритм, для которого требуется контролировать по меньшей мере одну характеристику выполнения программы;
в исходном коде 2ν§ уязвимой программы по меньшей мере один фрагмент, содержащий по меньшей мере один выбранный алгоритм.
При выполнении этих условий по меньшей мере один выбранный фрагмент кода 2ν§ уязвимой программы модифицируется, чтобы получить исходный код 2р§ защищенной программы. Эта модификация такова, что именно в ходе выполнения защищенной программы 2р по меньшей мере один фрагмент первой выполняемой части 2рс5. которая выполняется в системе 3 обработки данных, учитывает, что по меньшей мере одна характеристика выполнения выбранной программы должна быть проконтролирована, по меньшей мере частично, в устройстве 6;
вторая выполняемая часть 2реи, которая выполняется в устройстве 6, контролирует, по меньшей мере частично, одну характеристику выполнения выбранной программы.
В ходе выполнения программы 2р, защищенной при помощи принципа детектирования и принуждения, в присутствии устройства 6 имеет место следующая ситуация:
если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы 2р, соблюдены, эти модифицированные фрагменты защищенной программы 2р функционируют должным образом, и, следовательно, защищенная программа 2р функционирует должным образом;
если же по меньшей мере один из критериев, отвечающий характеристике контролируемого выполнения одного фрагмента защищенной программы 2р, не соблюден, система 3 обработки данных информируется об этом и/или функционирование фрагмента защищенной программы 2р модифицируется таким образом, чтобы функционирование защищенной программы 2р было изменено.
Естественно, что в отсутствие устройства 6, по меньшей мере один запрос одного фрагмента первой выполняемой части 2ре§ защищенной программы 2р на использование устройства 6 не может быть корректно выполнен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2р не является полнофункциональной.
Для реализации принципа защиты с помощью детектирования и принуждения предпочтительно использовать два типа характеристики выполнения программы.
Первый тип характеристики выполнения программы соответствует переменной контроля выполнения программы, а второй тип соответствует профилю использования программы. Эти оба типа характеристик могут использоваться независимо или в сочетании.
Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики выполнения программы переменную контроля выполнения программы, должны быть определены в средствах 15 запоминания - возможность запомнить по меньшей мере одну переменную контроля, служащую в качестве количественной характеристики использования по меньшей мере одной функциональной возможности программы;
в средствах 17 детектирования - возможность наблюдать по меньшей мере одно пороговое значение, связанное с каждой переменной контроля;
средства обновления, позволяющие обновить каждую переменную контроля в зависимости от использования функциональной возможности, с которой она связана.
Конструируют также средства эксплуатации, которые задействуют, кроме средств 17 детектирования и средств 18 принуждения, также средства обновления. Кроме того, в исходном коде 2ν§ уязвимой программы выбираются по меньшей мере одна функциональная возможность уязвимой программы 2ν, использование которой можно проконтролировать с помощью переменной для количественного контроля;
по меньшей мере одна переменная для количественного контроля, служащая в качестве количественной характеристики указанной функциональной возможности;
по меньшей мере одно пороговое значение, связанное с переменной для количественного контроля и соответствующее пределу использования указанной функциональной возможности;
и по меньшей мере один метод обновления переменной для количественного контроля в соответствии с использованием указанной функциональной возможности.
-10005466
Исходный код 2ν§ уязвимой программы затем модифицируется, чтобы получить исходный код 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи обновляет значение переменной для количественного контроля в соответствии с использованием указанной функциональной возможности; и принимает во внимание по меньшей мере одно превышение порогового значения.
Иными словами, в ходе выполнения защищенной программы 2р значение переменной для количественного контроля обновляется в соответствии с использованием указанной функциональной возможности, и в случае превышения порогового значения средства 17 детектирования информируют об этом средства 18 принуждения, которые принимают решение, приспособленное к тому, чтобы проинформировать систему 3 обработки данных и/или модифицировать обработку, осуществляемую средствами 16 обработки. Это позволяет модифицировать функционирование фрагмента защищенной программы 2р таким образом, чтобы функционирование защищенной программы 2р было изменено.
Для реализации первого предпочтительного варианта реализации принципа защиты при помощи детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля, определяют по меньшей мере для одной переменной для количественного контроля несколько соответствующих пороговых значений; и различные средства принуждения, соответствующие каждому из этих пороговых значений.
В исходном коде 2ν§ уязвимой программы выбираются также по меньшей мере одна переменная для количественного контроля, служащая в качестве количественной характеристики использования по меньшей мере одной функциональной возможности программы, с которой должны быть связаны несколько пороговых значений, соответствующих различным пределам использования указанной функциональной возможности;
и по меньшей мере два пороговых значения, связанных с переменной для количественного контроля.
Исходный код 2ν§ уязвимой программы затем модифицируется, чтобы получить исходный код 2р§ защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи обновляет значение переменной для количественного контроля в соответствии с использованием указанной функциональной возможности; и по-разному учитывает превышения различных пороговых значений.
Иными словами, в обычном случае в ходе выполнения защищенной программы 2р при превышении первого порогового значения устройство 6 информирует систему 3 обработки данных, давая команду защищенной программе 2р более не использовать эту функциональную возможность. Если же защищенная программа 2р продолжает использовать эту функциональную возможность, то может быть превышено второе пороговое значение. В случае превышения второго порогового значения средства 18 принуждения могут сделать неработоспособной выбранную функциональную возможность и/или сделать неработоспособной защищенную программу 2р.
Для реализации второго предпочтительного варианта принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля, определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля.
Конструируют также средства эксплуатации, где применены, кроме средств 17 детектирования, средств 18 принуждения и средств обновления, также и средства перезагрузки.
Кроме того, в исходном коде 2ν§ уязвимой программы выбирается по меньшей мере одна переменная для количественного контроля, служащая для ограничения использования по меньшей мере одной функциональной возможности программы, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование.
Исходный код 2у5 уязвимой программы затем модифицируется, чтобы получить исходный код 2р§ защищенной программы, причем эта модификация такова, что в фазе, названной фазой перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено.
В фазе перезагрузки происходит обновление по меньшей мере одной выбранной переменной для количественного контроля и/или по меньшей мере одного связанного порогового значения, чтобы разрешить по меньшей мере одно дополнительное использование соответствующей функциональной возможности. Другими словами, в фазе перезагрузки обеспечивается возможность разрешить дополнительные использования, по меньшей мере, одной функциональной возможности защищенной программы 2р.
Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики профиль использования программы, в качестве критерия, который требуется соблюдать для этого профиля использования, должен быть определен по меньшей мере один признак выполнения программы.
Кроме того, в исходном коде 2ν§ уязвимой программы выбирают
-11005466 по меньшей мере один профиль использования, который требуется контролировать;
и по меньшей мере один признак выполнения, который должен соблюдаться по меньшей мере в одном профиле использования.
Исходный код 2у5 уязвимой программы затем модифицируется, чтобы получить исходный код 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи соблюдает все выбранные признаки выполнения.
Другими словами, устройство 6 само контролирует тот способ, которым выполняется вторая выполняемая часть 2реи, и может информировать систему 3 обработки данных и/или модифицировать функционирование защищенной программы 2р в случае, если не соблюдается хотя бы один критерий.
В ходе выполнения программы 2р, защищенной на основе данного принципа, в присутствии устройства 6 имеет место следующая ситуация:
если все признаки выполнения всех модифицированных фрагментов защищенной программы 2р соблюдены, то эти модифицированные фрагменты защищенной программы 2р функционируют должным образом, и, следовательно, защищенная программа 2р функционирует должным образом;
если же хотя бы один признак выполнения одного фрагмента защищенной программы 2р не соблюден, об этом информируется система 3 обработки данных и/или функционирование фрагмента защищенной программы 2р модифицируется таким образом, чтобы функционирование защищенной программы 2р было изменено.
Можно предусмотреть контроль различных признаков выполнения, например, контроль наличия инструкций, содержащих генератор меток, или контроль сцепления выполнения по меньшей мере одной части инструкций.
Для реализации принципа защиты с помощью детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций, определяют набор инструкций, инструкции из состава которого могут быть выполнены в устройстве 6; набор команд инструкций для этого набора инструкций, причем эти команды инструкций могут быть выполнены в системе 3 обработки данных.
Выполнение каждой из этих команд инструкций в системе 3 обработки данных вызывает в устройстве 6 выполнение соответствующей инструкции; средства 17 детектирования, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому; средства 18 принуждения, позволяющие проинформировать систему 3 обработки данных и/или модифицировать выполнение программы, если сцепление инструкций не соответствует желаемому.
Конструируют также средства эксплуатации, позволяющие устройству 6 выполнять инструкции из набора инструкций, причем выполнение этих инструкций вызывается выполнением команд инструкций в системе 3 обработки данных.
Кроме того, в исходном коде 2ν§ уязвимой программы выбирается по меньшей мере один алгоритм, который должен быть вынесен в устройство 6 и для которого следует контролировать сцепление по меньшей мере части инструкций.
Исходный код 2ν§ уязвимой программы затем модифицируется, чтобы получить исходный код 2р§ защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи выполняет, по меньшей мере, функциональную возможность выбранного алгоритма;
выбранный алгоритм разлагается на инструкции;
задано сцепление, которое должны соблюдать, по меньшей мере, некоторые из инструкций в ходе их выполнения в устройстве 6;
первая выполняемая часть 2ре§ защищенной программы 2р выполняет команды инструкций, которые запускают выполнение инструкций в устройстве 6.
В ходе выполнения программы 2р, защищенной на основе этого принципа, в присутствии устройства 6 имеет место следующая ситуация:
если сцепление инструкций всех модифицированных фрагментов защищенной программы 2р соответствует желаемому, эти модифицированные фрагменты защищенной программы 2р функционируют должным образом, и, следовательно, защищенная программа 2р функционирует должным образом;
если же сцепление инструкций фрагмента защищенной программы 2р, выполняемых в устройстве 6, не соответствует желаемому, то система 3 обработки данных информируется об этом и/или функционирование фрагмента защищенной программы 2р модифицируется таким образом, чтобы функционирование защищенной программы 2р было изменено.
На фиг. 71 приведен пример реализации принципа защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций в случае, если желаемое сцепление соблюдено.
Первая выполняемая часть 2ре§ защищенной программы 2р, выполняемая в системе 3 обработки данных, выполняет команды С11, инструкций, что вызывает в устройстве 6 выполнение инструкций ί1, относящихся к набору инструкций. В наборе инструкций, по меньшей мере, некоторые из инструкций содержат часть, задающую функциональную возможность инструкции, и часть, позволяющую проверять
-12005466 желаемое сцепление для выполнения инструкций. В этом примере команды С11 инструкций представлены как ТКЮ(11), а желаемое сцепление для выполнения инструкций есть ίη, ίη+1 и ίη+2. Выполнение в устройстве 6 инструкции ίη дает результат а, а выполнение инструкции ίη+1 дает результат Ь. Инструкция ίη+2 использует в качестве операнда результаты а и Ь инструкций ίη и ίη+1, а ее выполнение дает результат с.
С учетом того, что это сцепление инструкций, выполняемых в устройстве 6, соответствует желаемому, функционирование защищенной программы 2р соответствует нормальному или номинальному режиму.
На фиг. 72 приведен пример реализации принципа защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций в случае, если желаемое сцепление не соблюдено.
Согласно этому примеру желаемое сцепление для выполнения инструкций есть всегда ίη, ίη+1 и ίη+2. Однако сцепление выполнения инструкций модифицируется заменой инструкции ίη на инструкцию ί'η таким образом, что действительно выполняемое сцепление есть ί'η, ίη+ί и ίη+2. Выполнение инструкции ί'η дает результат а, то есть тот же результат, что и выполнение инструкции ΐη. Однако не позднее, чем при выполнении инструкции ίη+2, средства 17 детектирования обнаруживают, что инструкция ί'η не соответствует желаемой инструкции для выработки результата а, используемого в качестве операнда для инструкции ίη+2. Средства 17 детектирования информируют об этом средства 18 принуждения, которые модифицируют, как следствие, функционирование инструкции ίη+2, таким образом, что выполнение инструкции ίη+2 дает результат с', который может отличаться от с.
Разумеется, если выполнение инструкции ί'η дает результат а', отличный от результата а инструкции ίη, ясно, что результат выполнения инструкции ίη+2 может также отличаться от с.
Следовательно, если сцепление выполнения инструкций, выполняемых в устройстве 6, не соответствует желаемому, можно получить модификацию функционирования защищенной программы 2р.
На фиг. 73 и 74 показан предпочтительный вариант реализации принципа защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения по меньшей мере части инструкций.
В соответствии с этим предпочтительным вариантом определяется набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата.
Как показано на фиг. 73, по меньшей мере для части инструкций, работающих на регистрах, определена часть РР, задающая функциональную возможность инструкции, и часть РЕ, задающая желаемое сцепление для выполнения инструкций. Часть РР соответствует коду операций, известному для специалиста. Часть РЕ, определяющая желаемое сцепление, содержит битовые поля, соответствующие полю С11 идентификации инструкции;
и для каждого операнда к инструкции, где к пробегает значения от 1 до К, К - число операндов инструкции:
полю СИк флага, указывающему, следует ли проверять происхождение операнда к, и полю С1Рк идентификации, предусмотренной для операнда и указывающей на ожидаемую идентичность инструкции, которая сгенерировала содержимое операнда к.
Как показано на фиг. 74, набор инструкций содержит V регистров, принадлежащих средствам 16 обработки, где каждый регистр назван Κν (ν пробегает значения от 1 до V). Для каждого регистра Κν определяется два поля, а именно функциональное поле СР^ известное специалисту и позволяющее хранить результат выполнения инструкций;
и поле С.ЧС\- генерируемой идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр, т. е. сгенерировавшей содержимое функционального поля СР^ Это поле С1С3- генерируемой идентификации обновляется автоматически вместе с содержимым поля С11 идентификации инструкции, сгенерировав функциональное поле СР^ Поле С.ЧС;- генерируемой идентификации не является ни доступным, ни модифицируемым для любой другой инструкции и служит исключительно для средств 17 детектирования.
В ходе выполнения инструкции средства 17 детектирования выполняют для каждого операнда к следующие операции:
считывается поле СИк флага;
если этого требует поле СИк флага, то считываются оба поля: поле С1Рк предусмотренной идентификации и поле Ο!Ον генерированной идентификации, соответствующее регистрам, используемым операндом к;
проверяется равенство обоих полей С1Рк и С1С3-;
и если равенство ложно, то средства 17 детектирования считают, что сцепление выполнения инструкций не соблюдено.
Средства 18 принуждения должны позволять модифицировать результат выполнения инструкций, когда средства 17 детектирования проинформируют их о несоблюдении сцепления инструкций. Пред
-13005466 почтительная реализация состоит в том, чтобы модифицировать функциональную часть РЕ выполняемой инструкции или функциональную часть РЕ последующих инструкций.
Согласно другой предпочтительной характеристике изобретения способ защиты направлен на реализацию так называемого принципа защиты при помощи переменной, описание которого дано со ссылкой на фиг. 40-43.
Для реализации принципа защиты при помощи переменной в исходном коде 2ν§ уязвимой программы выбирается по меньшей мере одна переменная, которая в ходе выполнения уязвимой программы 2ν частично определяет ее состояние. Под состоянием программы понимается совокупность информации, на данный момент необходимой для полного выполнения этой программы. Таким образом, отсутствие указанной выбранной переменной препятствует полному выполнению этой программы. Выбирается также по меньшей мере один фрагмент исходного кода 2ν§ уязвимой программы, содержащий по меньшей мере одну выбранную переменную.
По меньшей мере один выбранный фрагмент кода 2ν§ уязвимой программы в этом случае модифицируется, чтобы получить исходный код 2р§ защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2р, по меньшей мере, один фрагмент первой выполняемой части 2рс5. который выполняется в системе 3 обработки данных, учитывает, что по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной находится в устройстве 6.
На фиг. 40 приведен пример представления уязвимой программы 2ν. В этом примере в ходе выполнения уязвимой программы 2ν в системе 3 обработки данных имеют место в момент Ц присвоение значения X переменной что представлено как ν1 Х;
в момент 12 присвоение значения переменной ν1 переменной Υ, что представлено как Υ ν1;
в момент 13 присвоение значения переменной ν1 переменной Ζ, что представлено как Ζ ν1.
На фиг. 41 приведен пример первой формы реализации изобретения, для которой переменная находится в устройстве 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р в присутствии устройства 6 осуществляются в момент 11 выполнение команды передачи, вызывающее передачу данного X от системы 3 обработки данных к переменной ν^ расположенной в средствах 15 запоминания устройства 6, причем эта команда передачи представлена как 0υΤ(ν1, X) и соответствует по завершении присвоению значения X переменной ν1;
в момент 12 выполнение команды передачи, вызывающее передачу значения переменной ν^ находящейся в устройстве 6, системе 3 обработки данных, чтобы присвоить ее значение переменной Υ, причем эта команда передачи представлена как ΙΝ(ν1) и соответствует по завершении присвоению значения ν1 переменной Υ;
в момент 13 выполнение команды передачи, вызывающее передачу значения переменной ν^ находящейся в устройстве 6, системе 3 обработки данных, чтобы присвоить ее значение переменной Ζ, причем эта команда передачи представлена как ΙΝ(ν1) и соответствует по завершении присвоению значения ν1 переменной Ζ.
Следует отметить, что в ходе выполнения защищенной программы 2р по меньшей мере одна переменная находится в устройстве 6. Так, когда этого требует часть первой выполняемой части 2ре§ защищенной программы 2р в присутствии устройства 6 значение этой переменной, находящейся в устройстве 6, передается системе 3 обработки данных, чтобы быть использованной первой выполняемой частью 2ре§ защищенной программы 2р таким образом, чтобы эта часть выполнялась корректно, и, следовательно, защищенная программа 2р являлась полнофункциональной.
На фиг. 42 приведен пример второй формы реализации изобретения, для которой копия переменной находится в устройстве 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р в присутствии устройства 6 осуществляются в момент 11 присвоение значения X переменной ν1, находящейся в системе 3 обработки данных, а также выполнение команды передачи, вызывающее передачу данного X от системы 3 обработки данных к переменной ν1, расположенной в средствах 15 запоминания устройства 6, причем эта команда передачи представлена как 0υΤ(ν1, X);
в момент 12 - присвоение значения переменной ν1 переменной Υ;
в момент 13 - выполнение команды передачи, вызывающее передачу значения переменной ν1, находящейся в устройстве 6, системе 3 обработки данных, чтобы присвоить ее значение переменной Ζ, причем эта команда передачи представлена как ΙΝ(ν1).
Следует отметить, что в ходе выполнения защищенной программы 2р по меньшей мере одна копия одной переменной находится в устройстве 6.
Так, когда этого требует часть первой выполняемой части 2ре§ защищенной программы 2р, в присутствии устройства 6 значение этой копии переменной, находящейся в устройстве 6, передается системе 3 обработки данных, чтобы быть использованной первой выполняемой частью 2ре§ защищенной про
-14005466 граммы 2р таким образом, чтобы эта часть выполнялась корректно, и, следовательно, защищенная программа 2р являлась полнофункциональной.
На фиг. 43 приведен пример попытки выполнения защищенной программы 2р при отсутствии устройства 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2рс5 защищенной программы 2р в момент у выполнение команды передачи ΘϋΤ(νι, X) не может вызвать передачу данного X переменной У1, учитывая отсутствие устройства 6;
в момент 12 выполнение команды передачи ΙΝ(ν1) не может вызвать передачу значения переменной ν1 системе 3 обработки данных, учитывая отсутствие устройства 6;
в момент 13 выполнение команды передачи ΙΝ(ν1) не может вызвать передачу значения переменной ν1 системе 3 обработки данных, учитывая отсутствие устройства 6.
Таким образом, представляется, что в отсутствие устройства 6 по меньшей мере один запрос одного фрагмента первой выполняемой части 2ре§ на использование переменной или копии переменной, находящейся в устройстве 6, не может быть корректно выполнен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2р не является полнофункциональной.
Следует отметить, что процессы передачи данных между системой 3 обработки данных и устройством 6 используют только простые присвоения (что проиллюстрировано на вышеприведенных примерах). Однако специалист сможет скомбинировать их с другими операциями, чтобы получить сложные операции, например, 0υΤ(ν1, 2*Х+3) или Ζ (5*ν1 + ν2).
Согласно другой преимущественной характеристике изобретения способ защиты нацелен на реализацию принципа защиты, названного переименование, описание которого выполнено со ссылкой на фиг. 80-85.
Для реализации принципа защиты переименованием должны быть определены ансамбль зависимых функций, зависимые функции которого могут быть выполнены посредством второй выполняемой части 2реи в устройстве 6, возможно, с последующей передачей данных между системой 3 обработки данных и устройством 6 (причем этот ансамбль зависимых функций может быть конечным или нет);
ансамбль команд запуска для этих зависимых функций, причем эти команды запуска могут выполняться в системе 3 обработки данных и вызывать в устройстве 6 выполнение соответствующих зависимых функций;
для каждой команды запуска - установочный параметр, соответствующий, по меньшей мере частично, информации, передаваемой первой выполняемой частью 2ре§ второй выполняемой части 2реи, чтобы вызвать запуск соответствующей зависящей функции, причем этот установочный параметр представляется в форме, по меньшей мере, аргумента команды запуска;
метод переименования установочных параметров, предназначенный для применения в ходе модификации уязвимой программы и позволяющий переименовать установочные параметры таким образом, чтобы получить команды запуска с переименованными параметрами, позволяя скрыть идентичность соответствующих зависящих функций;
средства 20 восстановления, предназначенные для применения в устройстве 6 в фазе использования и позволяющие восстановить начальные установочные параметры, исходя из переименованных установочных параметров, чтобы найти зависимую функцию, которую необходимо выполнить.
Для реализации принципа защиты переименованием конструируют также средства эксплуатации, позволяющие преобразовать незадействованное устройство 60, содержащее средства 15 запоминания и средства 16 обработки, в устройство 6, применяющее, по меньшей мере, средства 20 восстановления.
Для реализации принципа защиты переименованием в исходном коде 2ν§ уязвимой программы должны быть также выбраны по меньшей мере один алгоритм, использующий по меньшей мере один операнд и выдающий по меньшей мере один результат;
и по меньшей мере один фрагмент исходного кода 2ν§ уязвимой программы, содержащий по меньшей мере один выбранный алгоритм.
Исходный код 2у5 уязвимой программы затем модифицируется, чтобы получить исходный код 2р§ защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2р по меньшей мере один фрагмент первой выполняемой части 2ре§, которая выполняется в системе 3 обработки данных, учитывает, что функциональная возможность по меньшей мере одного выбранного алгоритма выполняется в устройстве 6;
в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи, которая выполняется в устройстве 6, выполняет по меньшей мере функциональную возможность по меньшей мере одного выбранного алгоритма;
каждый выбранный алгоритм разлагается таким образом, что в ходе выполнения защищенной программы 2р каждый выбранный алгоритм выполняется посредством второй выполняемой части 2реи, используя зависимые функции. Каждый выбранный алгоритм предпочтительно разлагается на зависимые функции Гб,, (где η пробегает значения от 1 до Ν), а именно
-15005466 возможно, на одну или несколько зависимых функций, позволяющих предоставить один или несколько операндов для устройства 6, на зависимые функции, некоторые из которых используют один или несколько операндов и которые в сочетании осуществляют функциональную возможность выбранного алгоритма, использующего эти операнды, и, возможно, на одну или несколько зависимых функций, позволяющих посредством устройства 6 предоставить системе 3 обработки данных результат выполнения выбранного алгоритма;
в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи выполняет зависимые функции йп;
в ходе выполнения защищенной программы 2р эти зависимые функции запускаются командами запуска с переименованными установочными параметрами;
и упорядочение команд запуска выбрано среди ансамбля упорядочений, позволяющих выполнение защищенной программы 2р.
Первая выполняемая часть 2ре§ защищенной программы 2р, выполняемая в системе 3 обработки данных, выполняет команды запуска с переименованными установочными параметрами, передающие в устройство 6 переименованные установочные параметры. Это вызывает в устройстве 6 восстановление при помощи средств 20 восстановления установочных параметров, а затем выполнение посредством второй выполняемой части 2реи каждой из определенных выше зависимых функций йп.
Другими словами, принцип защиты при помощи переименования состоит в том, чтобы переименовать установочные параметры команд запуска, чтобы получить команды запуска с переименованными установочными параметрами, выполнение которых в системе 3 обработки данных вызывает в устройстве 6 выполнение зависимых функций, которые запускались бы командами запуска с непереименованными установочными параметрами, однако, без того, чтобы изучение защищенной программы 2р позволило определить идентичность выполняемых зависимых функций.
На фиг. 80 приведен пример выполнения уязвимой программы 2ν. В этом примере в ходе выполнения уязвимой программы 2ν в системе 3 обработки данных в данный момент времени имеет место расчет Ζ Р(Х, Υ), соответствующий присвоению переменной Ζ результата выполнения алгоритма, представленного функцией Р и использующего операнды X и Υ.
На фиг. 81 и 82 приведен пример реализации изобретения.
На фиг. 81 приведен пример частичной реализации изобретения. Согласно этому примеру в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р в присутствии устройства 6 производятся в моменты 11, 12 - выполнение элементарных команд СЭ1, СЭ2. что вызывает в устройстве 6 выполнение, посредством второй выполняемой части 2реи, соответствующих зависимых функций й1, й2, которые обеспечивают передачу данных X, Υ из системы 3 обработки данных в области памяти соответственно х и у, расположенные в средствах 15 запоминания устройства 6, причем эти команды СЭ1, СЭ2 запуска представлены соответственно, как ОИТ(х, X), ОИТ(у, Υ);
в моменты с 13 по ΐΝ-1 - выполнение команд запуска с СЭ3 по СОм-1, что вызывает в устройстве 6 выполнение посредством второй выполняемой части 2реи соответствующих зависимых функций с £ά3 по ίάΝ-ι, причем эти команды запуска с СЭ3 по СБ^.1 представлены соответственно, как ТКЮ(Ш3) ΤΚΙΟ(ίύΝ-1), причем последовательность зависимых функций с £ά3 по ίύΝ-1, выполняемых в сочетании, алгоритмически эквивалентна функции Р (точнее говоря, выполнение этих команд запуска приводит к выполнению в устройстве 6 зависимых функций с £ά3 по ΓάΝ.1, которые используют содержимое областей памяти х, у и возвращают результат в область памяти ζ устройства 6);
а в момент ΐΝ производится выполнение команды СЭ2 запуска, вызывающее в устройстве 6 выполнение, посредством второй выполняемой части 2реи, зависимой функции ίύΝ, обеспечивающей передачу результата выполнения алгоритма, содержащегося в области памяти ζ устройства 6, системе 3 обработки данных, чтобы присвоить его переменной Ζ. Эта команда представлена как ΙΝ(ζ).
В данном примере, чтобы полностью реализовать изобретение, в качестве установочного параметра выбран первый аргумент команд ОИТ запуска и аргумент команд ΤΚΙΟ и ΙΝ запуска. Выбранные таким образом установочные параметры переименовываются по методу переименования установочных параметров. Таким образом, установочные параметры команд запуска с СЭ, по ί.ΌΝ, а именно х, у, £ά3, ίάΝ-ι, ζ переименовываются так, чтобы получить соответственно К(х), К(у), Κ(£ά3), ..., Κ(ίύΝ-1), Κ(ζ).
На фиг. 82 приведен пример полной реализации изобретения. Согласно этому примеру в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р, в присутствии устройства 6, осуществляются в моменты ΐι, 12 - выполнение команд СОСК.1, СЭСК.2 запуска с переименованными установочными параметрами, передающих в устройство 6 переименованные установочные параметры К(х), К(у), а также данные X, Υ, что вызывает в устройстве 6 восстановление (при помощи средств 20 восстановления) переименованных установочных параметров, чтобы восстановить установочные параметры, а именно идентичность областей памяти х, у, а затем выполнение посредством второй выполняемой части 2реи соответствующих зависимых функций РЩ, ίύ2, которые обеспечивают передачу данных X, Υ от системы
-16005466 обработки данных к областям памяти соответственно х, у, расположенным в средствах 15 запоминания устройства 6 (эти команды СЭСК.^ СЭСИ3 запуска с переименованными установочными параметрами представлены соответственно, как ОИТ (И(х), X), ОИТ (И(у), Υ));
в моменты с ΐ3 по ΐΝ-1 - выполнение команд СЭСИ3 по ΟΌΟΚΝ-1 запуска с переименованными установочными параметрами, передающих в устройство 6 переименованные установочные параметры с И(Гб3) по Р(Гб2-|). что вызывает в устройстве 6 восстановление при помощи средств 20 восстановления установочных параметров, а именно с Гб3 по ΓάΝ-ι, а затем выполнение посредством второй выполняемой части 2реи зависимых функций с Гб3 по ΓάΝ.1, причем эти команды (с СЭСК3 по СОСР\-|) запуска с переименованными установочными параметрами представлены соответственно командами ТКЮ (Κ(Γά3)) по ΤΚΙ6(Κ(ΓάΝ-ι));
в момент ΐΝ - выполнение команды СЭСИ· запуска с переименованными установочными параметрами, передающей в устройство 6 переименованные установочные параметры Κ(ζ). Это вызывает в устройстве 6 восстановление при помощи средств 20 восстановления установочных параметров, а именно идентичности области памяти ζ, а затем выполнение посредством второй выполняемой части 2реи зависимой функции ΓάΝ, обеспечивающей передачу результата выполнения алгоритма, содержащегося в области памяти ζ устройства 6, системе 3 обработки данных, чтобы присвоить его переменной Ζ. Эта команда СЭСИ· запуска с переименованными установочными параметрами представлена как ΙΝ(Κ(ζ)).
В приводимом примере команды запуска с переименованными установочными параметрами с 1 по Ν выполняются последовательно. Следует отметить, что можно сделать два следующих усовершенствования.
Первое усовершенствование касается случая, когда один или несколько алгоритмов вынесены в устройство 6 и, по меньшей мере, результат выполнения одного алгоритма используется другим алгоритмом (в этом случае некоторые команды запуска с переименованными установочными параметрами, служащие для передачи, могут быть исключены).
Второе усовершенствование имеет целью надлежащее упорядочение команд запуска с переименованными установочными параметрами среди ансамбля упорядочений, позволяющих выполнение защищенной программы 2р.
В этом отношении предпочтительно выбрать такое упорядочение команд запуска с переименованными установочными параметрами, которое разделяет во времени выполнение зависимых функций, вставляя между ними участки кода, выполняемого в системе 3 обработки данных, и при этом содержащего (или не содержащего) команды запуска с переименованными установочными параметрами, служащие для определения других данных.
Фиг. 83 и 84 иллюстрируют принцип такой реализации.
На фиг. 83 приведен пример выполнения уязвимой программы 2ν. В этом примере в системе 3 обработки данных в ходе выполнения уязвимой программы 2ν происходит выполнение двух алгоритмов, приводящих к определению Ζ и Ζ' таких, что Ζ Р(Х, Υ) и Ζ' Р(Х', Υ').
На фиг. 84 приведен пример реализации способа согласно изобретению, в котором оба выбранных на фиг. 83 алгоритма вынесены в устройство 6. В соответствии с этим примером в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р, в присутствии устройства 6, имеет место, как объясняется выше, выполнение команд (с СЭСК^ по СЭСИ·) запуска с переименованными установочными параметрами, соответствующее определению Ζ, и выполнение команд (с СЭСИ/ по СЭСИМ') запуска с переименованными установочными параметрами, соответствующее определению Ζ'. Как показано, команды запуска с СЭСИ| по СЭСИ· не выполняются последовательно, поскольку с ними чередуются команды запуска с СЭСИ|' по СЭСИМ', а также другие фрагменты кода. В этом примере, таким образом, реализовано следующее упорядочение: СЭСК1, вставленный фрагмент кода, СЭСИ/, СЭСИ2, вставленный фрагмент кода, СЭСИА СЭСИ3', вставленный фрагмент кода, СЭСК/, СЭСК3, СЭСИ. ..., СЭСИ·- СЭСИ··'.
Следует отметить, что в ходе выполнения фрагмента первой выполняемой части 2ре§ защищенной программы 2р команды запуска с переименованными установочными параметрами, которые выполняются в системе 3 обработки данных, вызывают в устройстве 6 восстановление идентичности соответствующих зависящих функций, а затем их выполнение. Таким образом, в присутствии устройства 6 этот фрагмент выполняется корректно и, следовательно, защищенная программа 2р является полнофункциональной.
На фиг. 85 приведен пример попытки выполнения защищенной программы 2р при отсутствии устройства 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р выполнение команды запуска с переименованными установочными параметрами ни в какой момент не может вызвать ни восстановление установочных параметров, ни выполнение соответствующей зависящей функции по причине отсутствия устройства 6. Значение, которое необходимо присвоить переменной Ζ, следовательно, не может быть определено корректно.
Таким образом, представляется, что при отсутствии устройства 6 по меньшей мере один запрос одного фрагмента первой выполняемой части 2ре§ защищенной программы 2р на запуск восстановления установочных параметров и выполнения в устройстве зависящей функции в устройстве 6 не может быть
-17005466 корректно выполнен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2р не является полнофункциональной.
Благодаря этому принципу защиты при помощи переименования изучение в защищенной программе 2р команд запуска с переименованными установочными параметрами не позволяет определить идентичность зависящих функций, которые должны быть выполнены в устройстве 6. Следует отметить, что переименование установочных параметров осуществляется в ходе преобразования уязвимой программы 2ν в защищенную программу 2р.
В соответствии с вариантом принципа защиты при помощи переименования должно быть определено по меньшей мере для одной зависящей функции, семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска с различными переименованными установочными параметрами. В этом варианте по крайней мере один алгоритм, использующий зависимые функции, разлагается на зависимые функции так, что по меньшей мере одна из них заменяется зависимой функцией того же семейства, вместо того, чтобы сохранять несколько вхождений той же зависимой функции. С этой целью команды запуска с переименованными установочными параметрами модифицируются, чтобы учесть замену зависимых функций на зависимые функции того же семейства.
Иными словами, две зависимые функции из одного семейства имеют различные установочные параметры, и, следовательно, команды запуска с различными переименованными установочными параметрами. Поэтому при изучении защищенной программы 2р не представляется возможным обнаружить, что вызываемые зависящие функции алгоритмически эквивалентны.
В соответствии с первой предпочтительной реализацией варианта принципа защиты при помощи переименования определяется по меньшей мере для одной зависящей функции, алгоритмически эквивалентное семейство зависящих функций, посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве 6.
В соответствии со второй предпочтительной реализацией варианта принципа защиты при помощи переименования по меньшей мере для одной зависящей функции определяется алгоритмически эквивалентное семейство зависящих функций с использованием полей идентификации.
В соответствии с предпочтительным вариантом реализации принципа защиты при помощи переименования в качестве метода переименования установочных параметров задается метод кодирования, позволяющий кодировать установочные параметры для их превращения в переименованные установочные параметры. Следует напомнить, что переименование установочных параметров осуществляется в фазе Р защиты. Для этого предпочтительного варианта средства 20 восстановления представляют собой средства, применяющие метод декодирования, позволяющий декодировать переименованные установочные параметры и восстановить, таким образом, идентичность зависимых функций, которые требуется выполнить в устройстве 6. Эти средства восстановления применяются в устройстве 6 и могут быть как программными, так и аппаратными. Средства 20 восстановления запрашиваются в фазе и использования каждый раз, когда команда запуска с переименованными установочными параметрами выполняется в системе 3 обработки данных с целью вызвать в устройстве 6 выполнение зависящей функции.
Согласно другой предпочтительной характеристике изобретения способ защиты направлен на реализацию принципа защиты, названного условным переходом, описание которого проиллюстрировано фиг. 90-92.
Для реализации принципа защиты при помощи условного перехода в исходном коде 2ν§ уязвимой программы выбирается по меньшей мере один условный переход ВС. Выбирается также по меньшей мере один фрагмент исходного кода 2ν§ уязвимой программы, содержащей по меньшей мере один выбранный условный переход ВС.
В данном варианте по меньшей мере один выбранный фрагмент кода 2ν§ уязвимой программы модифицируется, чтобы получить исходный код 2р§ защищенной программы. Эта модификация такова, что в ходе выполнения защищенной программы 2р по меньшей мере один фрагмент первой выполняемой части 2рс5. которая выполняется в системе 3 обработки данных, учитывает то, что функциональная возможность по меньшей мере одного выбранного условного перехода ВС выполняется в устройстве 6;
вторая выполняемая часть 2реи, которая выполняется в устройстве 6, выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного условного перехода ВС и предоставляет системе 3 обработки данных информацию, позволяющую первой выполняемой части 2ре§ продолжить свое выполнение в выбранном месте.
Первая выполняемая часть 2ре§ защищенной программы 2р, выполняемая в системе 3 обработки данных, выполняет команды условных переходов, что вызывает в устройстве 6 выполнение, посредством второй выполняемой части 2реи вынесенных условных переходов Ьс, функциональные возможности которых эквивалентны функциональным возможностям выбранных условных переходов ВС. Для реализации принципа защиты при помощи условного перехода устройство 6 содержит средства 15 запоминания и средства 16 обработки.
На фиг. 90 приведен пример выполнения уязвимой программы 2ν. В этом примере в ходе выполнения уязвимой программы 2ν в системе 3 обработки данных в данный момент времени имеет место ус
-18005466 ловный переход ВС, указывающий уязвимой программе 2ν место, где следует продолжить ее выполнение, а именно одно из трех возможных мест В!, В2 или В3. Следует понимать, что условный переход ВС принимает решение продолжить выполнение программы в месте В!, В2 или В3.
На фиг. 91 приведен пример реализации изобретения, в котором условный переход, отобранный для переноса в устройство 6, соответствует условному переходу ВС.
В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р в присутствии устройства 6 имеют место в момент ΐ1 - выполнение команды СВ1 условного перехода, что вызывает в устройстве 6 выполнение, посредством второй выполняемой части 2реи вынесенного условного перехода Ье, алгоритмически эквивалентного условному переходу ВС, причем эта команда СВС1 условного перехода представлена как ТКЮ(Ьс);
и в момент ΐ2 - передача устройством 6 системе 3 обработки данных информации, позволяющей первой выполняемой части 2ре§ продолжить свое выполнение в выбранном месте, а именно, В1, В2 или В3.
Следует отметить, что в ходе выполнения фрагмента первой выполняемой части 2ре§ защищенной программы 2р команды условных переходов, которые выполняются в системе 3 обработки данных, запускают выполнение соответствующих вынесенных условных переходов в устройстве 6. Таким образом, представляется, что в присутствии устройства 6 эта часть выполняется корректно и, следовательно, защищенная программа 2р является полнофункциональной.
На фиг. 92 приведен пример попытки выполнения защищенной программы 2р при отсутствии устройства 6. В этом примере в ходе выполнения в системе 3 обработки данных первой выполняемой части 2ре§ защищенной программы 2р в момент ΐ1 выполнение команды СВС1 условного перехода не может вызвать выполнение вынесенного условного перехода Ьс, учитывая отсутствие устройства 6;
и в момент ΐ2 попытка передачи информации, позволяющей первой выполняемой части 2ре§ продолжить выполнение в выбранном месте не может быть успешной в связи с отсутствием устройства 6.
Таким образом, в отсутствие устройства 6 по меньшей мере один запрос одного фрагмента первой выполняемой части 2ре§ на запуск выполнения вынесенного условного перехода в устройстве 6 не может быть корректно выполнен. Поэтому по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2р не является полнофункциональной.
В предшествующем описании, проиллюстрированном на фиг. 90-92, настоящее изобретение направлено на вынос в устройство 6 одного условного перехода. Разумеется, предпочтительный вариант осуществления изобретения может состоять в передаче в устройство 6 серии условных переходов, глобальные функциональные возможности которых эквивалентны ансамблю функциональных возможностей вынесенных условных переходов. Выполнение глобальных функциональных возможностей этой серии вынесенных условных переходов приводит к тому, что системе 3 обработки данных предоставляется информация, позволяющая первой выполняемой части 2ре§ защищенной программы 2р продолжить свое выполнение в выбранном месте.
В предшествующем описании, проиллюстрированном фиг. 40-92, четыре различных принципа защиты программы были разъяснены в общем виде независимо один от другого. Способ защиты согласно изобретению может быть реализован с применением принципа защиты при помощи детектирования и принуждения, к которому можно добавить один или несколько других принципов защиты. В случае, когда принцип защиты при помощи детектирования и принуждения дополняется реализацией по меньшей мере одного другого принципа защиты, принцип защиты при помощи детектирования и принуждения предпочтительно дополнить принципом защиты при помощи переменной и/или принципом защиты при помощи переименования, и/или принципом защиты при помощи условного перехода.
Если таким образом применяется принцип защиты при помощи переименования, то он может быть дополнен, в свою очередь, принципом защиты при помощи условного перехода.
В соответствии с предпочтительным вариантом реализации принцип защиты при помощи детектирования и принуждения дополняется принципом защиты при помощи переменной и принципом защиты при помощи переименования, дополненным принципом защиты при помощи условного перехода.
В случае, когда в дополнение к принципу защиты при помощи детектирования и принуждения применен какой-либо иной принцип защиты, чтобы учесть такую комбинированную реализацию изобретения, приведенное выше описание должно содержать следующие модификации понятие уязвимой программы должно пониматься в смысле уязвимости программы по отношению к описываемому принципу защиты. Так, в случае, когда принцип защиты уже был применен к уязвимой программе, выражение уязвимая программа должно интерпретироваться как выражение программа, защищенная при помощи одного или нескольких уже примененных принципов защиты;
понятие защищенной программы должно пониматься в смысле защищенности программы по отношению к описываемому принципу защиты. Так, в случае, когда принцип защиты уже был применен, выражение защищенная программа должно интерпретироваться читателем, как выражение новая версия защищенной программы;
-19005466 один или несколько выборов, сделанный(сделанных) для реализации описываемого принципа защиты, должен(должны) учитывать выбор(ы), сделанный(сделанные) для реализации уже примененного (примененных) одного или нескольких принципов защиты.
Дальнейшее описание позволяет лучше понять реализацию способа защиты согласно изобретению. В этом способе защиты согласно изобретению осуществляют, как это уточняется на фиг. 100, сначала фазу Р защиты, в ходе которой уязвимая программа 2ν преобразуется в защищенную программу 2р;
затем фазу и использования, в ходе которой защищенная программа 2р используется, причем в фазе и использования:
в присутствии устройства 6 всякий раз, когда этого требует фрагмент первой выполняемой части 2рс5. выполняемой в системе 3 обработки данных, должная функциональная возможность выполняется в устройстве 6 таким образом, что эта часть выполняется корректно, и, следовательно, защищенная программа 2р является полнофункциональной, при отсутствии устройства 6, несмотря на запрос фрагмента первой выполняемой части 2ре§ на выполнение функциональной возможности в устройстве 6, этот запрос не может быть корректно удовлетворен, так что по меньшей мере эта часть не выполняется корректно, и, следовательно, защищенная программа 2р не является полнофункциональной;
и, возможно, фазу Я перезагрузки, в ходе которой разрешается по меньшей мере одно дополнительное использование функциональной возможности, защищенной путем реализации второго предпочтительного варианта реализации принципа защиты при помощи детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля.
Фаза Р защиты может быть разложена на две подфазы Р1 и Р2 защиты. Первая, названная входной, подфаза Р1 защиты реализуется независимо от подлежащей защите уязвимой программы 2ν. Вторая, названная выходной, подфаза Р2 защиты зависит от подлежащей защите уязвимой программы 2ν. Следует отметить, что входная и выходная подфазы Р1 и Р2 защиты могут быть реализованы двумя различными лицами или группами. Например, входная подфаза Р1 защиты может быть реализована сотрудником или организацией, осуществляющими разработку систем защиты программ, тогда как выходная подфаза Р2 защиты может быть реализована сотрудником или организацией, осуществляющими разработку программ, которые требуется защитить. Разумеется, ясно, что входная и выходная подфазы Р1 и Р2 защиты могут быть реализованы и одним сотрудником или одной организацией.
Входная подфаза Р1 защиты задействует несколько стадий 811, ..., 811, для каждой из которых необходимо выполнить несколько задач или заданий.
Первая стадия этой входной подфазы Р1 защиты называется стадией 811 определений. В ходе этой стадии 811 определений выбираются тип устройства 6 (например, в качестве устройства 6 можно выбрать устройство 8 чтения карт с микрочипом и карту с микрочипом, связанную с устройством 8 чтения), и средства 12, 13 передачи, предназначенные для применения соответственно в системе 3 обработки данных и в устройстве 6 в фазе и использования и способные обеспечивать передачу данных между системой 3 обработки данных и устройством 6;
определяются по меньшей мере одна характеристика выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве 6, по меньшей мере один критерий, который требуется соблюдать по меньшей мере для одной характеристики выполнения программы, средства 17 детектирования, которые необходимо применять в устройстве 6 и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию, и средства 18 принуждения, которые необходимо применять в устройстве 6 и которые позволяют проинформировать систему 3 обработки данных и/или модифицировать ход выполнения программы, если хотя бы один критерий не соблюдается;
причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи детектирования и принуждения, использующий в качестве характеристики переменную для количественного контроля выполнения программы, должны быть определены также в качестве характеристики выполнения программы, которая может быть проконтролирована, - переменная для количественного контроля использования одной функциональной возможности программы, в качестве критерия, который необходимо соблюдать, - по меньшей мере одно пороговое значение, связанное с каждой переменной для количественного контроля, и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля;
причем в случае, когда способ защиты согласно изобретению задействует первый предпочтительный вариант реализации принципа защиты с помощью детектирования и принуждения, использующий в
-20005466 качестве характеристики переменную для количественного контроля выполнения программы, должны быть предусмотрены также по меньшей мере для одной переменной для количественного контроля - несколько соответствующих пороговых значений, и различные средства принуждения, соответствующие каждому из этих пороговых значений;
причем в случае, когда способ защиты согласно изобретению задействует второй предпочтительный вариант реализации принципа защиты с помощью детектирования и принуждения, использующий в качестве характеристики переменную для количественного контроля выполнения программы, предусматриваются также средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля;
причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи детектирования и принуждения, использующий в качестве характеристики профиль использования программы, должны быть предусмотрены также в качестве характеристики выполнения программы, которая может быть проконтролирована, - профиль использования программы, и в качестве критерия, который требуется соблюдать, - по меньшей мере один признак выполнения программы;
причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения, должны быть предусмотрены также набор инструкций, инструкции из состава которого могут быть выполнены в устройстве 6, набор команд инструкций для указанного набора инструкций, причем эти команды инструкций могут быть выполнены в системе 3 обработки данных, вызывая в устройстве 6 выполнение инструкций, в качестве профиля использования - сцепление инструкций, в качестве признака выполнения - желаемое сцепление для выполнения инструкций, в качестве средств 17 детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому, и в качестве средств 18 принуждения - средства, позволяющие информировать систему 3 обработки данных и/или модифицировать функционирование фрагмента защищенной программы 2р, если сцепление инструкций не соответствует желаемому;
а в случае, когда способ защиты согласно изобретению задействует предпочтительный вариант реализации принципа защиты с помощью детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения, должны быть предусмотрены также в качестве набора инструкций - набор инструкций, из которого, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата по меньшей мере для одной части инструкций, работающих на регистрах, часть РЕ, задающая функциональную возможность инструкции, и часть, задающая желаемое сцепление для выполнения инструкций и содержащая битовые поля, соответствующие полю С11 идентификации инструкции, и для каждого операнда инструкции полю ί.Ό|.: флага, и полю С1Р|.: идентификации, предусмотренной для операнда, для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле СЮу генерируемой идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в этот регистр, в качестве средств 17 детектирования - средства, позволяющие в ходе выполнения инструкции для каждого операнда, если этого требует поле ί.Ό1: флага, контролировать равенство между полем СЮУ генерируемой идентификации, соответствующим регистру, используемому этим операндом, и полем С1Рк предусмотренной идентификации начального адреса этого операнда, и в качестве средств 18 принуждения - средства, позволяющие модифицировать результат инструкции, если по меньшей мере одно из контролируемых равенств ложно;
причем в случае, когда способ защиты согласно изобретению задействует принцип защиты при помощи переименования, должны быть предусмотрены также в качестве команды запуска - элементарная команда или команда инструкции, в качестве зависимой функции - элементарная функция или инструкция, в качестве установочного параметра - по меньшей мере один аргумент для команды запуска, соответствующий, по меньшей мере частично, информации, переданной системой 3 обработки данных на устройство 6, чтобы вызвать запуск соответствующей зависящей функции, метод переименования установочных параметров, позволяющий переименовать установочные параметры, чтобы получить команды запуска с переименованными параметрами,
-21005466 и средства 20 восстановления, предназначенные для применения в устройстве 6 в фазе и использования и позволяющие вновь найти зависимую функцию, которую требуется выполнить, исходя из переименованного установочного параметра, причем в случае, когда способ защиты согласно изобретению задействует вариант принципа защиты при помощи переименования, определяется также по меньшей мере для одной зависящей функции, семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска, переименованные установочные параметры которых являются различными, а в случае, когда способ защиты согласно изобретению, задействует ту или иную предпочтительную реализацию варианта принципа защиты при помощи переименования, определяется также по меньшей мере для одной зависящей функции, семейство зависящих функций, алгоритмически эквивалентных посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве 6, или посредством использования поля С11 идентификации инструкции и поля С1Рк предусмотренной идентификации операндов;
причем в случае, когда способ защиты согласно изобретению задействует предпочтительный вариант принципа защиты при помощи переименования, должны быть предусмотрены также в качестве метода переименования установочных параметров - метод кодирования для кодировки установочных параметров, и в качестве средств 20 восстановления - средства, применяющие метод декодирования для раскодирования переименованных установочных параметров и восстановления идентичности зависимых функций, которые требуется выполнить в устройстве 6.
В ходе входной подфазы защиты за стадией 811 определения следует стадия, названная стадия 812 конструирования. В ходе такой стадии 812 конструируются средства 12, 13 передачи и, возможно, средства эксплуатации, соответствующие определениям стадии 811 определения.
В ходе этой стадии 812 конструирования приступают, следовательно, к конструированию средств 12, 13 передачи, позволяющих в ходе фазы и использования осуществлять передачу данных между системой 3 обработки данных и устройством 6;
к построению средств эксплуатации, позволяющих устройству 6 в фазе и использования задействовать средства 17 детектирования и средства 18 принуждения, и, возможно, средств эксплуатации, позволяющих устройству 6 в фазе и использования также задействовать средства обновления, а также, возможно, средств эксплуатации, позволяющих устройству 6 в фазе перезагрузки задействовать также средства перезагрузки, а также, возможно, средств эксплуатации, позволяющих устройству 6 в фазе и использования выполнять инструкции из набора инструкций;
и (если также применяется принцип защиты при помощи переименования) к построению средств эксплуатации, позволяющих устройству 6 в фазе и использования задействовать также средства восстановления.
Конструирование средств эксплуатации осуществляют обычным образом, посредством устройства разработки программ с учетом определений, введенных на стадии 811 определений. Подобное устройство описано далее и проиллюстрировано фиг. 110.
В ходе входной подфазы Р1 защиты за стадией 812 конструирования может последовать стадия, названная стадией 813 предперсонализации. В ходе этой стадии 813 предперсонализации, по меньшей мере, средства 13 передачи и средства эксплуатации загружаются по меньшей мере в одно незадействованное устройство 60, чтобы получить по меньшей мере одно предперсонализированное устройство 66. Следует отметить, что часть средств эксплуатации, будучи перенесена в предперсонализированное устройство 66, более недоступна напрямую извне этого предперсонализированного устройства 66. Передача средств эксплуатации в незадействованное устройство 60 может быть реализована посредством адаптированного устройства предперсонализации, которое описано далее и проиллюстрировано фиг. 120. В случае предперсонализированного устройства 66, состоящего из карты 7 с микрочипом и устройства 8 ее чтения, предперсонализация касается только карты 7 с микрочипом.
В ходе входной подфазы Р1 защиты, после стадии 811 определений и, возможно, после стадии 812 конструирования, может быть осуществлена также стадия, названная стадией 814 изготовления средств. В ходе этой стадии 814 изготовления средств производятся средства, позволяющие помочь созданию защищенных программ или автоматизировать защиту программ. Такие средства позволяют помочь выбрать или автоматически выбрать в уязвимой программе 2ν, которую требуется защитить, одну или несколько характеристик выполнения, которые необходимо проконтролировать, и, возможно, один или несколько алгоритмов, которые могут быть разложены на инструкции, которые можно вынести в устройство 6, фрагменты, которые могут быть изменены,
-22005466 если также применяется принцип защиты при помощи переменной, - одну или несколько переменных, которые могут быть вынесены в устройство 6, если также применяется принцип защиты при помощи переименования, - один или несколько алгоритмов, которые могут быть разложены на зависимые функции, которые можно вынести в устройство 6 и для которых установочные параметры команд запуска могут быть переименованы, и если также применяется принцип защиты при помощи условного перехода, - один или несколько условных переходов, функциональная возможность которых может быть вынесена в устройство 6;
и, возможно, помочь создать защищенные программы или автоматизировать защиту программ.
Эти различные средства могут быть реализованы независимо или в сочетании, причем каждое средство может принимать различные формы, например, представлять собой препроцессор, ассемблер, компилятор и т.п.
За входной подфазой Р1 защиты следует выходная подфаза Р2 защиты, зависящая от подлежащей защите уязвимой программы 2ν. Эта выходная подфаза Р2 защиты также предусматривает несколько стадий. Первая стадия, соответствующая реализации принципа защиты при помощи детектирования и принуждения, называется стадия 821 создания. В ходе этой стадии 821 создания используется выбор, сделанный на стадии 811 определений. При помощи этого выбора и, возможно, средств, сконструированных на стадии 814 изготовления средств, защищенная программа 2р создается посредством выбора среди характеристик выполнения, которые могут быть проконтролированы по меньшей мере одной характеристики выполнения контролируемой программы;
посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы;
посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы 2ν использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы, посредством выбора по меньшей мере одного фрагмента кода 2ν§ уязвимой программы, содержащего по меньшей мере один выбранный алгоритм, посредством создания исходного кода 2р§ защищенной программы на основе кода уязвимой программы 2ν модифицированием по меньшей мере одного выбранного фрагмента кода 2ν§ уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р первая выполняемая часть 2ре§ выполняется в системе 3 обработки данных, а вторая выполняемая часть 2реи выполняется в устройстве 6, полученном из незадействованного устройства 60 после загрузки информации, вторая выполняемая часть 2реи выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма, и в ходе выполнения защищенной программы 2р по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части 2реи, и несоблюдение критерия приводит к модификации выполнения защищенной программы 2р;
и посредством создания первой части 2ре§ объектного кода защищенной программы 2р, причем первая часть 2ре§ объектного кода такова, что в ходе выполнения защищенной программы 2р реализуется первая выполняемая часть 2ре§, которая выполняется в системе 3 обработки данных, и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы, и второй части 2рои объектного кода защищенной программы 2р, содержащей средства эксплуатации, позволяющие применять также средства 17 детектирования и средства 18 принуждения, причем вторая часть 2рои объектного кода такова, что после загрузки в незадействованное устройство 60, в ходе выполнения защищенной программы 2р реализуется вторая выполняемая часть 2реи, посредством которой контролируется по меньшей мере одна характеристика выполнения программы и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы 2р.
Разумеется, принцип защиты при помощи детектирования и принуждения согласно изобретению может быть применен непосредственно в ходе разработки новой программы без необходимости предварительной реализации уязвимой программы 2ν. В этом случае непосредственно получают защищенную программу 2р.
Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля выполнения программы, защищенная программа 2р модифицируется посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы;
посредством выбора
-23005466 по меньшей мере одной функциональной возможности защищенной программы 2р, использование которой можно проконтролировать с использованием переменной для количественного контроля, по меньшей мере одной переменной для количественного контроля, которая служит в качестве количественной характеристики использования упомянутой функциональной возможности, по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования упомянутой функциональной возможности, и по меньшей мере одного метода обновления значения переменной для количественного контроля в соответствии с использованием упомянутой функциональной возможности;
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р переменная для количественного контроля обновляется посредством второй выполняемой части 2реи, в зависимости от использования указанной функциональной возможности, и учитывается по меньшей мере одно превышение порогового значения.
Для реализации первого предпочтительного варианта принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля, защищенная программа 2р модифицируется посредством выбора в исходном коде 2р§ защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороговых значений, соответствующих различным пределам использования функциональной возможности;
посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля;
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р превышения различных пороговых значений учитываются посредством второй выполняемой части 2реи различным способом.
Для реализации второго предпочтительного варианта принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики переменную для количественного контроля, защищенная программа 2р модифицируется посредством выбора в исходном коде 2р§ защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование функциональной возможности, для которой должна существовать возможность разрешить по меньшей мере одно дополнительное использование;
и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем эта модификация такова, что в фазе, названной фазой перезагрузки, по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено.
Для реализации принципа защиты с помощью детектирования и принуждения, использующего в качестве характеристики профиль использования программы, защищенная программа 2р модифицируется посредством выбора в качестве характеристики выполнения контролируемой программы, по меньшей мере, профиля использования программы;
посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования;
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р вторая выполняемая часть 2реи соблюдает все выбранные признаки выполнения.
Для реализации принципа защиты с помощью детектирования и принуждения, где в качестве признака выполнения, который требуется соблюдать, используется контроль сцепления выполнения, защищенная программа 2р модифицируется посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что по меньшей мере один выбранный алгоритм раскладывается таким образом, что в ходе выполнения защищенной программы 2р этот алгоритм выполняется посредством второй выполняемой части 2реи, с применением инструкций, по меньшей мере для одного выбранного алгоритма команды инструкций интегрируются в исходный код 2р§ защищенной программы таким образом, что в ходе выполнения защищенной программы 2р каждая команда инструкции выполняется посредством первой выполняемой части 2ре§ и вызывает в устройстве 6 выполнение инструкции посредством второй выполняемой части 2реи, упорядочение команд инструкций выбирается среди ансамбля упорядочений, позволяющих выполнение защищенной программы 2р,
-24005466 и определено сцепление, которое должны соблюдать, по меньшей мере, некоторые из инструкций в ходе их выполнения в устройстве 6.
В ходе выходной подфазы Р2 защиты, в случае, когда применен по меньшей мере один другой принцип защиты, в дополнение к принципу защиты при помощи детектирования и принуждения, реализуется стадия 822 модификации. В ходе этой стадии 822 модификации используются определения, введенные на стадии 811 определений. С использованием этих определений и, возможно, средств, сконструированных на стадии 814 изготовления средств, защищенная программа 2р модифицируется таким образом, чтобы позволить реализовать принципы защиты в соответствии с одной из компоновок, определенных выше.
Когда применяется принцип защиты при помощи переменной, то защищенная программа 2р модифицируется посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы 2р частично определяет состояние защищенной программы 2р, посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве 6, и посредством создания первой части 2ро§ объектного кода защищенной программы 2р, причем эта первая часть 2ро§ объектного кода такова, что в ходе выполнения защищенной программы 2р по меньшей мере один фрагмент первой выполняемой части 2ре§ учитывает, что по меньшей мере одна переменная или по меньшей мере одна копия переменной находится в устройстве 6, и второй части 2рои объектного кода защищенной программы 2р, причем эта вторая часть 2рои объектного кода такова, что после загрузки в устройство 6 и в ходе выполнения защищенной программы 2р реализуется вторая выполняемая часть 2реи, при помощи которой по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной также находится в устройстве 6.
Когда применяется принцип защиты при помощи переименования, защищенная программа 2р модифицируется посредством выбора в исходном коде 2р§ защищенной программы команд запуска;
посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы посредством переименования установочных параметров выбранных команд запуска, чтобы скрыть идентичность соответствующих зависящих функций;
и посредством создания первой части 2ро§ объектного кода защищенной программы 2р, причем эта первая часть 2ро§ объектного кода такова, что в ходе выполнения защищенной программы 2р выполняются команды запуска с переименованными установочными параметрами, и второй части 2рои объектного кода защищенной программы 2р, содержащей средства эксплуатации, использующие также средства 20 восстановления, причем эта вторая часть 2рои объектного кода такова, что после загрузки в устройство 6, в ходе выполнения защищенной программы 2р идентичность зависимых функций, выполнение которых запускается первой выполняемой частью 2ре§, восстанавливается посредством второй выполняемой части 2реи, а зависимые функции выполняются посредством второй выполняемой части 2реи.
Для реализации варианта принципа защиты переименованием защищенная программа 2р модифицируется посредством выбора в исходном коде 2р§ защищенной программы по меньшей мере одной команды запуска с переименованными установочными параметрами;
и посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы посредством замены, по меньшей мере, переименованного установочного параметра команды запуска с выбранным установочным параметром на другой переименованный установочный параметр, что вызывает запуск зависящей функции из того же семейства.
Когда применяется принцип защиты при помощи условного перехода, защищенная программа 2р модифицируется посредством выбора в исходном коде 2р§ защищенной программы по меньшей мере одного условного перехода, выполняемого по меньшей мере в одном выбранном алгоритме;
посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р функциональная возможность по меньшей мере одного выбранного условного перехода выполняется посредством второй выполняемой части 2реи в устройстве 6;
и посредством создания
-25005466 первой части 2ро§ объектного кода защищенной программы 2р, причем эта первая часть 2ро§ объектного кода такова, что в ходе выполнения защищенной программы 2р функциональная возможность по меньшей мере одного выбранного условного перехода выполняется в устройстве 6, и второй части 2рои объектного кода защищенной программы 2р, причем эта вторая часть 2рои объектного кода такова, что после загрузки в устройство 6, в ходе выполнения защищенной программы 2р реализуется вторая выполняемая часть 2реи, посредством которой выполняется функциональная возможность по меньшей мере одного выбранного условного перехода.
Для предпочтительной реализации принципа защиты при помощи условного перехода защищенная программа 2р модифицируется посредством выбора в исходном коде 2р§ защищенной программы по меньшей мере одной серии выбранных условных переходов;
посредством модифицирования по меньшей мере одного выбранного фрагмента кода 2р§ защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы 2р глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется посредством второй выполняемой части 2реи в устройстве 6;
и посредством создания первой части 2ро§ объектного кода защищенной программы 2р, причем эта первая часть 2ро§ объектного кода такова, что в ходе выполнения защищенной программы 2р функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве 6, и второй части 2рои объектного кода защищенной программы 2р, причем эта вторая часть 2рои объектного кода такова, что после загрузки в устройство 6, в ходе выполнения защищенной программы 2р реализуется вторая выполняемая часть 2реи, посредством которой выполняется глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов.
Разумеется, принципы защиты согласно изобретению могут быть применены прямо в ходе разработки новой программы без предварительной реализации промежуточных уязвимых программ. Таким образом, стадии 821 создания и 822 модификации могут быть осуществлены одновременно, чтобы сразу получить защищенную программу 2р.
В ходе выходной подфазы Р2 защиты после стадии 821 создания защищенной программы 2р и, возможно, после стадии 822 модификации реализуется стадия, названная стадией 823 персонализации. В ходе этой стадии 823 персонализации вторая часть 2рои объектного кода, возможно, содержащая средства эксплуатации, загружается, по меньшей мере, в одно незадействованное устройство 60, чтобы получить, по меньшей мере, одно устройство 6. Альтернативно, часть второй части 2рои объектного кода, возможно, содержащая средства эксплуатации, загружается по меньшей мере в одно предперсонализированное устройство 66, чтобы получить по меньшей мере одно устройство 6. Загрузка этой персонализирующей информации позволяет сделать работоспособным по меньшей мере одно устройство 6. Следует отметить, что часть этой информации, будучи перенесенной в устройство 6, недоступна напрямую извне этого устройства 6. Передача информации персонализации в незадействованное устройство 60 или в предперсонализированное устройство 66 может быть реализована посредством адаптированного устройства персонализации, которое описано далее и проиллюстрировано фиг. 150. В случае устройства 6, состоящего из карты 7 с микрочипом и устройства 8 ее чтения, персонализация касается только карты 7 с микрочипом.
Различные технические средства для реализации фазы Р защиты, которые далее будут описаны более подробно, проиллюстрированы фиг. 110, 120, 130, 140 и 150.
На фиг. 110 приведен пример реализации системы 25, позволяющей реализовать стадию 812 конструирования с учетом определений, введенных на стадии 8ц определений, и в ходе которой конструируются средства 12, 13 передачи и, возможно, средства эксплуатации, предназначенные для устройства 6. Подобная система 25 содержит устройство разработки программ или рабочую станцию, обычно представляющую собой компьютер, который содержит системный блок, монитор, периферийные устройства типа клавиатуры и мыши и на котором установлены следующие программы: файловые редакторы, ассемблеры, препроцессоры, компиляторы, интерпретаторы, отладчики и редакторы связей.
На фиг. 120 приведен пример реализации устройства 30 предперсонализации, позволяющего загрузить, по меньшей мере, частично средства 13 передачи и/или средства эксплуатации по меньшей мере в одно незадействованное устройство 60, чтобы получить, по меньшей мере, предперсонализированное устройство 66. Устройство 30 предперсонализации содержит средство 31 чтения-записи, позволяющее электрически предперсонализировать незадействованное устройство 60, чтобы получить предперсонализированное устройство 66, в которое загружены средства 13 передачи и/или средства эксплуатации. Устройство 30 предперсонализации может также содержать физические средства 32 предперсонализации незадействованного устройства 60, представляющие собой, например, принтер. В случае если устройство 6 состоит из карты 7 с микрочипом и устройства 8 ее чтения, предперсонализация касается обычно только карты 7 с микрочипом.
На фиг. 130 приведен пример реализации системы 35, позволяющей осуществить изготовление средств, предназначенных для использования при создании защищенных программ или автоматизации
-26005466 защиты программ. Подобная система 35 содержит устройство разработки программ или рабочую станцию, обычно представляющую собой компьютер, который содержит системный блок, монитор, периферийные устройства типа клавиатуры и мыши и на котором имеются следующие программы: файловые редакторы, ассемблеры, препроцессоры, компиляторы, интерпретаторы, отладчики и редакторы связей.
На фиг. 140 приведен пример реализации системы 40, позволяющей прямо получить защищенную программу 2р или модифицировать уязвимую программу 2ν с целью получить защищенную программу 2р. Подобная система 40 содержит устройство разработки программы или рабочую станцию, обычно представляющую собой компьютер, который содержит системный блок, монитор, периферийные устройства типа клавиатуры и мыши и на котором установлены следующие программы: файловые редакторы, ассемблеры, препроцессоры, компиляторы, интерпретаторы, отладчики и редакторы связей, а также средства, помогающие при создании защищенных программ или автоматизации защиты программ.
На фиг. 150 приведен пример реализации устройства 45 персонализации, позволяющего загрузить вторую часть 2рои объектного кода по меньшей мере в одно незадействованное устройство 60, чтобы получить по меньшей мере одно устройство 6, или часть второй части 2рои объектного кода по меньшей мере в одно предперсонализированное устройство 66, чтобы получить по меньшей мере одно устройство
6. Это устройство 45 персонализации содержит средство 46 чтения-записи, позволяющее электрически персонализировать по меньшей мере одно незадействованное устройство 60 или по меньшей мере одно предперсонализированное устройство 66, чтобы получить по меньшей мере одно устройство 6. По завершении этой персонализации устройство 6 содержит информацию, необходимую для выполнения защищенной программы 2р. Устройство 45 персонализации может также содержать физические средства 47 персонализации по меньшей мере для одного устройства 6, представляющие собой, например, принтер. В случае если устройство 6 состоит из карты 7 с микрочипом и устройства 8 ее чтения, персонализация касается обычно только карты 7 с микрочипом.
Способ защиты согласно изобретению может быть реализован с дополнительными усовершенствованиями.
Можно предусмотреть совместное использование множества устройств обработки и хранения, между которыми распределена вторая часть 2рои объектного кода защищенной программы 2р таким образом, что их совместное выполнение позволяет выполнить защищенную программу 2р, отсутствие же по меньшей мере одного из этих устройств обработки и хранения препятствует использованию защищенной программы 2р.
Аналогично, после стадии 813 предперсонализации и в ходе стадии 823 персонализации часть второй части 2рои объектного кода, необходимая для преобразования предперсонализированного устройства 66 в устройство 6, может содержаться в устройстве обработки и хранения, используемом устройством 45 персонализации, чтобы ограничить доступ к этой части второй части 2рои объектного кода. Разумеется, эта часть второй части 2рои объектного кода может быть распределена между несколькими устройствами обработки и хранения таким образом, чтобы эта часть второй части 2рои объектного кода являлась доступной только в ходе совместного использования этих устройств обработки и хранения.

Claims (34)

1. Способ защиты на основе по меньшей мере одного незадействованного устройства (60), содержащего, по меньшей мере, средства (15) запоминания и средства (16) обработки, от неавторизованного использования уязвимой программы (2ν), которая функционирует на системе (3) обработки данных, состоящий в том, что в фазе (Р) защиты определяют по меньшей мере одну характеристику выполнения программы, которая может быть проконтролирована, по меньшей мере частично, в устройстве обработки и хранения, по меньшей мере один критерий, который должен выполняться по меньшей мере для одной характеристики выполнения программы, средства (17) детектирования, которые следует применять в устройстве обработки и хранения и которые позволяют обнаружить, что по меньшей мере одна характеристика выполнения программы не отвечает по меньшей мере одному соответствующему критерию, и средства (18) управления, которые следует применять в устройстве обработки и хранения и которые позволяют проинформировать систему (3) обработки данных и/или модифицировать выполнение программы, пока не соблюдается хотя бы один критерий;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения задействовать средства (17) детектирования и средства (18) управления;
создают защищенную программу (2р) посредством выбора по меньшей мере одной характеристики выполнения контролируемой программы среди характеристик выполнения, которые могут быть проконтролированы, посредством выбора по меньшей мере одного критерия, который должен выполняться по меньшей мере для одной выбранной характеристики выполнения программы,
-27005466 посредством выбора по меньшей мере одного алгоритма, который в ходе выполнения уязвимой программы (2ν) использует по меньшей мере один операнд и позволяет получить по меньшей мере один результат и для которого следует контролировать по меньшей мере одну характеристику выполнения выбранной программы, посредством выбора по меньшей мере одного фрагмента кода (2ν§) уязвимой программы, содержащего по меньшей мере один выбранный алгоритм, посредством создания исходного кода (2р§) защищенной программы на основе кода уязвимой программы (2ν) модифицированием по меньшей мере одного выбранного фрагмента кода (2ν§) уязвимой программы, чтобы получить по меньшей мере один модифицированный фрагмент кода (2р§) защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы (2р) первая выполняемая часть (2ре§) выполняется в системе (3) обработки данных, а вторая выполняемая часть (2реи) выполняется в устройстве обработки и хранения, полученном из незадействованного устройства (60) после загрузки информации, вторая выполняемая часть (2реи) выполняет, по меньшей мере, функциональную возможность по меньшей мере одного выбранного алгоритма, и в ходе выполнения защищенной программы (2р) по меньшей мере одна выбранная характеристика выполнения контролируется посредством второй выполняемой части (2реи) и несоблюдение критерия приводит к модификации выполнения защищенной программы (2р);
и посредством создания первой части (2ро§) объектного кода защищенной программы (2р), причем первая часть (2ро§) объектного кода такова, что в ходе выполнения защищенной программы (2р) реализуется первая выполняемая часть (2ре§), которая выполняется в системе обработки данных (3) и по меньшей мере часть которой учитывает, что контролируется по меньшей мере одна характеристика выполнения выбранной программы, и второй части (2рои) объектного кода защищенной программы (2р), содержащей средства эксплуатации, позволяющие применять также средства (17) детектирования и средства (18) управления, причем вторая часть (2рои) объектного кода такова, что после загрузки в незадействованное устройство (60), в ходе выполнения защищенной программы (2р) реализуется вторая выполняемая часть (2реи), посредством которой контролируется по меньшей мере одна характеристика выполнения программы, и посредством которой несоблюдение критерия приводит к модифицированию выполнения защищенной программы (2р), и загружают вторую часть (2рои) объектного кода в незадействованное устройство (60) с получением устройства обработки и хранения, а в фазе (И) использования, в ходе которой происходит выполнение защищенной программы (2р) в присутствии устройства обработки и хранения, если все критерии, отвечающие всем контролируемым характеристикам выполнения всех модифицированных фрагментов защищенной программы (2р), соблюдены, допускают номинальное функционирование указанных фрагментов защищенной программы (2р) и, следовательно, номинальное функционирование защищенной программы (2р), а если по меньшей мере один из критериев, отвечающих контролируемой характеристике выполнения одного фрагмента защищенной программы (2р), не соблюден, информируют систему (3) обработки данных об указанном несоблюдении и/или модифицируют функционирование фрагмента защищенной программы (2р) таким образом, чтобы функционирование защищенной программы (2р) было изменено.
2. Способ по п.1, отличающийся тем, что, чтобы ограничить использование защищенной программы (2р), в фазе (Р) защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, переменную для количественного контроля использования одной функциональной возможности программы, в качестве критерия, который необходимо соблюдать, по меньшей мере одно пороговое значение, связанное с каждой переменной для количественного контроля, и средства обновления, позволяющие обновить по меньшей мере одну переменную для количественного контроля;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения применять средства обновления;
и модифицируют защищенную программу (2р) посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одной переменной для количественного контроля использования одной функциональной возможности программы, посредством выбора по меньшей мере одной функциональной возможности защищенной программы (2р), использование которой можно проконтролировать с использованием переменной для количественного контроля, по меньшей мере одной переменной для количественного контроля, которая служит для количественной характеристики использования упомянутой функциональной возможности,
-28005466 по меньшей мере одного порогового значения, связанного с выбранной переменной для количественного контроля и соответствующего пределу использования указанной функциональной возможности, и по меньшей мере одного метода обновления значения указанной переменной для количественного контроля в зависимости от использования указанной функциональной возможности, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2р) переменная для количественного контроля обновляется посредством второй выполняемой части (2реи) в зависимости от использования указанной функциональной возможности и учитывается по меньшей мере одно превышение порогового значения, а в фазе (υ) использования в присутствии устройства обработки и хранения, в случае, когда обнаружено по меньшей мере одно превышение порогового значения, соответствующее по меньшей мере одному пределу использования, информируют об этом систему (3) обработки данных и/или модифицируют функционирование фрагмента защищенной программы (2р) таким образом, чтобы функционирование защищенной программы (2р) было изменено.
3. Способ по п.2, отличающийся тем, что в фазе (Р) защиты определяют несколько соответствующих пороговых значений по меньшей мере для одной переменной для количественного контроля и различные средства принуждения, соответствующие каждому из указанных порогов;
и модифицируют защищенную программу (2р) посредством выбора в исходном коде (2р§) защищенной программы по меньшей мере одной переменной для количественного контроля, с которой должны быть связаны несколько пороговых значений, соответствующих различным пределам использования функциональной возможности, посредством выбора по меньшей мере двух пороговых значений, связанных с выбранной переменной для количественного контроля, и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2р) превышения различных пороговых значений учитываются посредством второй выполняемой части (2реи) различными способами, а в фазе (и) использования в присутствии устройства обработки и хранения в случае, когда обнаружено превышение первого порогового значения, дают команду защищенной программе (2р) не использовать впредь соответствующую функциональную возможность, а в случае, когда обнаружено превышение второго порогового значения, делают невыполнимой соответствующую функциональную возможность и/или по меньшей мере часть защищенной программы (2р).
4. Способ по п.2 или 3, отличающийся тем, что в фазе (Р) защиты определяют средства перезагрузки, позволяющие разрешить по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности программы, контролируемой при помощи переменной для количественного контроля;
конструируют средства эксплуатации, позволяющие также устройству обработки и хранения задействовать средства перезагрузки;
и модифицируют защищенную программу (2р) посредством выбора в исходном коде (2р§) защищенной программы по меньшей мере одной переменной для количественного контроля, позволяющей ограничить использование одной функциональной возможности, для которой существует возможность разрешения по меньшей мере на одно дополнительное использование, и посредством модифицирования по меньшей мере одного выбранного фрагмента, причем указанная модификация такова, что в фазе перезагрузки по меньшей мере одно дополнительное использование по меньшей мере одной функциональной возможности, соответствующей одной выбранной переменной для количественного контроля, может быть разрешено, а в фазе перезагрузки обновляют по меньшей мере одну выбранную переменную для количественного контроля и по меньшей мере одно соответствующее пороговое значение так, чтобы разрешить по меньшей мере одно дополнительное использование функциональной возможности.
5. Способ по п.1, отличающийся тем, что в фазе (Р) защиты определяют в качестве характеристики выполнения программы, которая может быть проконтролирована, профиль использования программы и в качестве критерия, который требуется соблюдать, по меньшей мере один признак выполнения программы;
и модифицируют защищенную программу (2р) посредством выбора в качестве характеристики выполнения контролируемой программы по меньшей мере одного профиля использования программы, посредством выбора по меньшей мере одного признака выполнения программы, который должен соблюдать по меньшей мере один профиль использования,
-29005466 и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2р) вторая выполняемая часть (2реи) соблюдает все выбранные признаки выполнения, а в фазе (И) использования в присутствии устройства обработки и хранения в случае, если обнаружено, что не соблюдается хотя бы один признак выполнения, информируют об этом систему (3) обработки данных и/или модифицируют функционирование части защищенной программы (2р) так, чтобы функционирование защищенной программы (2р) было изменено.
6. Способ по п.5, отличающийся тем, что в фазе (Р) защиты определяют набор инструкций, инструкции из состава которого могут быть выполнены в устройстве обработки и хранения, набор команд инструкций для указанного набора инструкций, причем команды инструкций могут быть выполнены в системе (3) обработки данных, вызывая в устройстве обработки и хранения выполнение инструкций, в качестве профиля использования - сцепление инструкций, в качестве признака выполнения - желаемое сцепление для выполнения инструкций, в качестве средств (17) детектирования - средства, позволяющие обнаружить, что сцепление инструкций не соответствует желаемому, в качестве средств (18) управления - средства, позволяющие проинформировать систему (3) обработки данных и/или модифицировать функционирование фрагмента защищенной программы (2р), если сцепление инструкций не соответствует желаемому;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения выполнять инструкции из набора инструкций, причем выполнение указанных инструкций вызывается выполнением команд инструкций в системе (3) обработки данных;
и модифицируют защищенную программу (2р) посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы:
посредством преобразования элементарных функций в инструкции, посредством задания сцепления, которое должны соблюдать, по меньшей мере, некоторые из инструкций во время их выполнения в устройстве обработки и хранения, и посредством преобразования элементарных команд в команды инструкций, соответствующих используемым инструкциям, а в фазе (И) использования в присутствии устройства обработки и хранения в случае, если обнаружено, что сцепление выполняемых в устройстве обработки и хранения инструкций не соответствует желаемому, информируют об этом систему (3) обработки данных и/или модифицируют функционирование фрагмента защищенной программы (2р) так, чтобы функционирование защищенной программы (2р) было изменено.
7. Способ по п.6, отличающийся тем, что в фазе (Р) защиты определяют в качестве набора инструкций - набор инструкций, в котором, по меньшей мере, некоторые инструкции работают на регистрах и используют по меньшей мере один операнд для выдачи результата, по меньшей мере для части инструкций, работающих на регистрах, часть (РЕ), задающую функциональную возможность инструкции, и часть, задающую желаемое сцепление для выполнения инструкций и содержащую битовые поля, соответствующие полю (С11) идентификации инструкции, и для каждого операнда инструкции полю (ί.Ό|.:) флага и полю (С1Рк) идентификации, предусмотренной для операнда, для каждого регистра, принадлежащего к средствам эксплуатации и используемого набором инструкций, - поле (СЮу) предусмотренной идентификации, в котором автоматически запоминается идентификация последней инструкции, возвратившей свой результат в указанный регистр, в качестве средств (17) детектирования - средства, позволяющие во время выполнения инструкции для каждого операнда, когда этого требует поле (ί.Ό|.:) флага, контролировать равенство между полем (СЮу) генерируемой идентификации, соответствующим регистру, используемому указанным операндом, и полем (С1Рк) предусмотренной идентификации начального адреса этого операнда, и в качестве средств (18) управления - средства, позволяющие модифицировать результат выполнения инструкций, если по меньшей мере одно из контролируемых равенств ложно.
8. Способ по любому из пп.1-7, отличающийся тем, что в фазе (Р) защиты модифицируют защищенную программу (2р) посредством выбора по меньшей мере одной переменной, используемой по меньшей мере в одном выбранном алгоритме, которая в ходе выполнения защищенной программы (2р) частично определяет состояние защищенной программы (2р), посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы, причем эта модификация такова, что в ходе выполнения защищенной программы (2р) по меньшей мере одна выбранная переменная или одна копия выбранной переменной находится в устройстве обработки и хранения,
-30005466 и посредством создания первой части (2ро§) объектного кода защищенной программы (2р), причем эта первая часть (2ро§) объектного кода такова, что в ходе выполнения защищенной программы (2р) по меньшей мере один фрагмент первой выполняемой части (2ре§) учитывает, что по меньшей мере одна переменная или по меньшей мере одна копия переменной находится в устройстве обработки и хранения, и второй части (2рои) объектного кода защищенной программы (2р), причем эта вторая часть (2рои) объектного кода такова, что после загрузки в устройство обработки и хранения и в ходе выполнения защищенной программы (2р) реализуется вторая выполняемая часть (2реи), при помощи которой по меньшей мере одна выбранная переменная или по меньшей мере одна копия выбранной переменной также находится в устройстве обработки и хранения, а в фазе (и) использования в присутствии устройства обработки и хранения, всякий раз, когда этого требует фрагмент первой выполняемой части (2ре§), используют переменную или копию переменной, находящейся в устройстве обработки и хранения так, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа (2р) являлась полнофункциональной, а при отсутствии устройства, несмотря на запрос фрагмента первой выполняемой части (2ре§) на использование переменной или копии переменной, находящейся в устройстве обработки и хранения, не обеспечивается возможность корректного ответа на указанный запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа (2р) не является полнофункциональной.
9. Способ по п.6, отличающийся тем, что в фазе (Р) защиты определяют в качестве команды запуска - команду инструкции, в качестве зависимой функции - инструкцию, в качестве установочного параметра - по меньшей мере один аргумент для команды запуска, соответствующий, по меньшей мере частично, информации, переданной системой (3) обработки данных на устройство обработки и хранения, чтобы вызвать запуск соответствующей зависящей функции, метод переименования установочных параметров, позволяющий переименовать установочные параметры, чтобы получить команды запуска с переименованными установочными параметрами, и средства (20) восстановления, предназначенные для применения в устройстве обработки и хранения в фазе (υ) использования и позволяющие найти зависимую функцию, которую необходимо выполнить, исходя из переименованного установочного параметра;
конструируют средства эксплуатации, позволяющие устройству обработки и хранения задействовать средства восстановления;
и модифицируют защищенную программу (2р) посредством выбора в исходном коде (2р§) защищенной программы команд запуска, посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы посредством переименования установочных параметров выбранных команд запуска, чтобы скрыть идентичность соответствующих зависящих функций, и посредством создания первой части (2ро§) объектного кода защищенной программы (2р), причем первая часть (2ро§) объектного кода такова, что в ходе выполнения защищенной программы (2р) выполняются команды запуска с переименованными установочными параметрами, и второй части (2рои) объектного кода защищенной программы (2р), содержащей средства эксплуатации, использующие также средства (20) восстановления, причем вторая часть (2рои) объектного кода такова, что после загрузки в устройство обработки и хранения в ходе выполнения защищенной программы (2р) идентичность зависимых функций, выполнение которых вызвано первой выполняемой частью (2ре§), восстанавливается посредством второй выполняемой части (2реи), а зависимые функции выполняются посредством второй выполняемой части (2реи), а в фазе (и) использования в присутствии устройства обработки и хранения всякий раз, когда этого требует команда запуска с переименованными установочными параметрами, содержащаяся во фрагменте первой выполняемой части (2ре§), восстанавливают в устройстве обработки и хранения идентичность соответствующей зависящей функции и выполняют ее так, чтобы указанный фрагмент выполнялся корректно и, следовательно, защищенная программа (2р) являлась полнофункциональной;
тогда как при отсутствии устройства обработки и хранения, несмотря на запрос фрагмента первой выполняемой части (2ре§) на запуск выполнения в устройстве обработки и хранения зависящей функции, не обеспечивается возможность корректного ответа на указанный запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа (2р) не является полнофункциональной.
10. Способ по п.9, отличающийся тем, что в фазе (Р) защиты определяют по меньшей мере для одной зависящей функции семейство зависящих функций, алгоритмически эквивалентных, но вызываемых командами запуска, переименованные установочные параметры которых являются различными;
и модифицируют защищенную программу (2р) посредством выбора в исходном коде (2р§) защищенной программы по меньшей мере одной команды запуска с переименованными установочными параметрами,
-31005466 и посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы посредством замены, по меньшей мере, переименованного установочного параметра команды запуска с выбранным установочным параметром на другой переименованный установочный параметр, что вызывает запуск зависящей функции из того же семейства.
11. Способ по п.10, отличающийся тем, что включает в фазе (Р) защиты определение по меньшей мере для одной зависящей функции семейства алгоритмически эквивалентных зависящих функций посредством сцепления поля шумов с информацией, определяющей ту функциональную часть зависящей функции, которая выполняется в устройстве обработки и хранения, или посредством использования поля (С11) идентификации инструкции и полей (С1Рк) идентификации, предусмотренных для операндов.
12. Способ по пп.9, 10 или 11, отличающийся тем, что в фазе (Р) защиты определяют в качестве метода переименования установочных параметров - метод кодирования для кодировки установочных параметров и в качестве средств (20) восстановления - средства, применяющие метод декодирования для раскодирования переименованных установочных параметров и восстановления идентичности зависимых функций, которые требуется выполнить в устройстве обработки и хранения.
13. Способ по любому из пп.1-12, отличающийся тем, что в фазе (Р) защиты модифицируют защищенную программу (2р) посредством выбора в исходном коде (2р§) защищенной программы по меньшей мере одного условного перехода, выполняемого по меньшей мере в одном выбранном алгоритме, посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2р) функциональная возможность по меньшей мере одного выбранного условного перехода выполняется посредством второй выполняемой части (2реи) в устройстве обработки и хранения, и посредством создания первой части (2ро§) объектного кода защищенной программы (2р), причем первая часть (2ро§) объектного кода такова, что в ходе выполнения защищенной программы (2р) функциональная возможность по меньшей мере одного выбранного условного перехода выполняется в устройстве обработки и хранения, и второй части (2рои) объектного кода защищенной программы (2р), причем вторая часть (2рои) объектного кода такова, что после загрузки в устройство обработки и хранения в ходе выполнения защищенной программы (2р) реализуется вторая выполняемая часть (2реи), посредством которой выполняется функциональная возможность по меньшей мере одного выбранного условного перехода, а в фазе (И) использования в присутствии устройства обработки и хранения всякий раз, когда этого требует фрагмент первой выполняемой части (2ре§), выполняют в устройстве обработки и хранения функции по меньшей мере одного выбранного условного перехода таким образом, чтобы указанный фрагмент выполнялся корректно, и, следовательно, защищенная программа (2р) являлась полнофункциональной;
а при отсутствии устройства обработки и хранения, несмотря на запрос фрагмента первой выполняемой части (2ре§) на выполнение функций условного перехода в устройстве обработки и хранения, не обеспечивается возможность корректного ответа на указанный запрос, так что, по меньшей мере, указанный фрагмент не выполняется корректно, и, следовательно, защищенная программа (2р) не является полнофункциональной.
14. Способ по п.13, отличающийся тем, что в фазе (Р) защиты модифицируют защищенную программу (2р) посредством выбора в исходном коде (2р§) защищенной программы по меньшей мере одной серии выбранных условных переходов, посредством модифицирования по меньшей мере одного выбранного фрагмента кода (2р§) защищенной программы, причем указанная модификация такова, что в ходе выполнения защищенной программы (2р) глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве обработки и хранения посредством второй выполняемой части (2реи), и посредством создания первой части (2ро§) объектного кода защищенной программы (2р), причем первая часть (2ро§) объектного кода такова, что в ходе выполнения защищенной программы (2р) функциональная возможность по меньшей мере одной выбранной серии условных переходов выполняется в устройстве обработки и хранения, и второй части (2рои) объектного кода защищенной программы (2р), причем вторая часть (2рои) объектного кода такова, что после загрузки в устройство обработки и хранения, в ходе выполнения защищенной программы (2р) реализуется вторая выполняемая часть (2реи), посредством которой выполняется глобальная функциональная возможность по меньшей мере одной выбранной серии условных переходов.
15. Способ по любому из пп.1-14, отличающийся тем, что разлагают фазу (Р) защиты на входную подфазу (Р1) защиты, не зависящую от защищаемой программы, и на выходную подфазу (Р2) защиты, зависящую от защищаемой программы.
-32005466
16. Способ по п.15, отличающийся тем, что в ходе входной подфазы (Р1) защиты задействуют стадию (8ц) определений, на которой выполняются все определения.
17. Способ по п.16, отличающийся тем, что после стадии (811) определений задействуют стадию конструирования (812), на которой создаются средства эксплуатации.
18. Способ по п.17, отличающийся тем, что после стадии (812) конструирования задействуют стадию (813) предперсонализации, состоящую в том, что загружают в незадействованное устройство (60) по меньшей мере часть средств эксплуатации, чтобы получить предперсонализированное устройство (66).
19. Способ по п.16 или 17, отличающийся тем, что в ходе входной подфазы (Р1) защиты задействуют стадию (814) изготовления средств, на которой изготавливаются средства, помогающие при создании защищенных программ или автоматизации защиты программ.
20. Способ по п.15 или 18, отличающийся тем, что выходную подфазу (Р2) защиты раскладывают на стадию (821) создания, на которой на основе уязвимой программы (2ν) создается защищенная программа (2р);
возможно, стадию (822) модификации, на которой модифицируется защищенная программа (2р);
и, возможно, стадию (823) персонализации, на которой вторая часть (2рои) объектного кода защищенной программы (2р), возможно, содержащая средства эксплуатации, загружается по меньшей мере в одно незадействованное устройство (60), чтобы получить по меньшей мере одно устройство обработки и хранения, или вторая часть (2рои) объектного кода защищенной программы (2р), возможно, содержащая средства эксплуатации, загружается по меньшей мере в одно предперсонализированное устройство (66), чтобы получить по меньшей мере одно устройство обработки и хранения.
21. Способ по п.19 или 20, отличающийся тем, что в ходе стадии (821) создания и, возможно, стадии (822) модификации используют по меньшей мере одно из средств, предназначенных для использования при создании защищенных программ или автоматизации защиты программ.
22. Система для осуществления способа согласно п.17, характеризующаяся тем, что содержит устройство разработки программ, служащее в ходе стадии (812) конструирования для конструирования средств эксплуатации, предназначенных для устройства обработки и хранения, с учетом определений, введенных на стадии (811) определений.
23. Система для осуществления способа согласно п.18, характеризующаяся тем, что содержит устройство предперсонализации (30), позволяющее загрузить по меньшей мере часть средств эксплуатации по меньшей мере в одно незадействованное устройство (60), чтобы получить по меньшей мере одно предперсонализированное устройство (66).
24. Система для осуществления способа согласно п.19, характеризующаяся тем, что содержит устройство разработки программ, служащее на стадии (814) изготовления средств, для изготовления средств, предназначенных для использования при создании защищенных программ или автоматизации защиты программ.
25. Система для осуществления способа согласно п.20 или 21, характеризующаяся тем, что содержит устройство разработки программ, служащее для создания или модифицирования защищенной программы (2р).
26. Система для осуществления способа согласно п.20, характеризующаяся тем, что содержит устройство персонализации (45), позволяющее загрузить вторую часть (2рои) объектного кода по меньшей мере в одно незадействованное устройство (60), чтобы получить по меньшей мере одно устройство обработки и хранения; или часть второй части (2рои) объектного кода по меньшей мере в одно предперсонализированное устройство (66), чтобы получить по меньшей мере одно устройство обработки и хранения.
27. Предперсонализированное устройство (66), характеризующееся тем, что сформировано системой согласно п.23.
28. Устройство обработки и хранения, позволяющее выполнить защищенную программу (2р) и помешать ее несанкционированному использованию, характеризующееся тем, что содержит вторую часть (2рои) объектного кода защищенной программы (2р), загруженную при помощи устройства персонализации (45), выполненного согласно п.26.
29. Комплект устройств обработки и хранения, характеризующийся тем, что вторая часть (2рои) объектного кода защищенной программы (2р), загруженная при помощи устройства персонализации (45), выполненного согласно п.26, распределена между несколькими устройствами обработки и хранения таким образом, что их совместное использование позволяет выполнить защищенную программу (2р).
30. Ансамбль дистрибутива (2р6) защищенной программы (2р), характеризующийся тем, что содержит первую часть дистрибутива (2р6§), содержащую первую часть (2ро§) объектного кода и предназначенную для работы в системе (3) обработки данных;
и вторую часть дистрибутива (2р6и) в виде незадействованного устройства (60), или предперсонализированного устройства (66) согласно п.27, способного после загрузки информации персонализации преобразоваться в устройство обработки и хранения, или устройства обработки и хранения, выполненного согласно п.28.
-33005466
31. Ансамбль дистрибутива (2рб) защищенной программы (2р) по п.30, отличающийся тем, что первая часть дистрибутива (2рб§) выполнена в форме дистрибутива на физическом носителе, например компакт-диске, или в виде файлов, передаваемых по сети.
32. Ансамбль дистрибутива (2рб) защищенной программы (2р) по п.30, отличающийся тем, что вторая часть дистрибутива (2рби) выполнена в виде незадействованных устройств (60), предперсонализированных устройств (66) или устройств обработки и хранения и содержит по меньшей мере одну карту (7) с микрочипом.
33. Устройство обработки и хранения, характеризующееся тем, что содержит часть второй части (2рои) объектного кода, необходимого для преобразования предперсонализированного устройства (66) согласно п.27 в устройство обработки и хранения, выполненное согласно п.28.
34. Комплект устройств обработки и хранения, характеризующийся тем, что устройства обработки и хранения, используемые совместно, содержат часть второй части (2рои) объектного кода, необходимую для преобразования предперсонализированного устройства (66) согласно п.27 в устройство обработки и хранения, выполненное согласно п.28.
EA200400058A 2001-07-31 2002-07-04 Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения EA005466B1 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0110244A FR2828301B1 (fr) 2001-07-31 2001-07-31 Procede pour proteger un logiciel a l'aide d'un principe dit de "detection et coercition" contre son utilisation non autorisee
PCT/FR2002/002343 WO2003012571A2 (fr) 2001-07-31 2002-07-04 Procede pour proteger un logiciel a l'aide de 'detection et coercition' contre son utilisation non autorisee

Publications (2)

Publication Number Publication Date
EA200400058A1 EA200400058A1 (ru) 2004-06-24
EA005466B1 true EA005466B1 (ru) 2005-02-24

Family

ID=8866119

Family Applications (1)

Application Number Title Priority Date Filing Date
EA200400058A EA005466B1 (ru) 2001-07-31 2002-07-04 Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения

Country Status (29)

Country Link
EP (1) EP1412838B1 (ru)
JP (1) JP3949104B2 (ru)
KR (1) KR100881733B1 (ru)
CN (1) CN100339778C (ru)
AP (1) AP2055A (ru)
AU (1) AU2002328377B2 (ru)
BR (1) BR0211373A (ru)
CA (1) CA2455626A1 (ru)
CO (1) CO5550507A2 (ru)
EA (1) EA005466B1 (ru)
EC (1) ECSP044952A (ru)
ES (1) ES2529426T3 (ru)
FR (1) FR2828301B1 (ru)
GE (1) GEP20053648B (ru)
HK (1) HK1078363A1 (ru)
HR (1) HRP20040045A2 (ru)
HU (1) HUP0400234A2 (ru)
IL (1) IL159955A0 (ru)
IS (1) IS7120A (ru)
MA (1) MA26122A1 (ru)
MX (1) MXPA04000489A (ru)
NO (1) NO333768B1 (ru)
OA (1) OA12700A (ru)
PL (1) PL371096A1 (ru)
RS (1) RS50234B (ru)
TN (1) TNSN04011A1 (ru)
UA (1) UA77187C2 (ru)
WO (1) WO2003012571A2 (ru)
ZA (1) ZA200400352B (ru)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (fr) * 1988-08-01 1990-02-02 Pionchon Philippe Procede et dispositif de protection d'un logiciel, en particulier contre les copies non autorisees
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999066387A1 (fr) * 1998-06-12 1999-12-23 Gemplus Procede de controle de l'execution d'un produit logiciel

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4932054A (en) * 1988-09-16 1990-06-05 Chou Wayne W Method and apparatus for protecting computer software utilizing coded filter network in conjunction with an active coded hardware device
US5706426A (en) * 1996-02-07 1998-01-06 United Microelectronics Corporation Software protection method and apparatus
US6523119B2 (en) * 1996-12-04 2003-02-18 Rainbow Technologies, Inc. Software protection device and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (fr) * 1988-08-01 1990-02-02 Pionchon Philippe Procede et dispositif de protection d'un logiciel, en particulier contre les copies non autorisees
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
WO1999066387A1 (fr) * 1998-06-12 1999-12-23 Gemplus Procede de controle de l'execution d'un produit logiciel

Also Published As

Publication number Publication date
KR20040026685A (ko) 2004-03-31
CA2455626A1 (fr) 2003-02-13
FR2828301A1 (fr) 2003-02-07
NO333768B1 (no) 2013-09-16
EA200400058A1 (ru) 2004-06-24
TNSN04011A1 (fr) 2006-06-01
WO2003012571A2 (fr) 2003-02-13
ZA200400352B (en) 2005-03-30
BR0211373A (pt) 2005-05-10
ECSP044952A (es) 2004-04-28
JP2004537796A (ja) 2004-12-16
IS7120A (is) 2004-01-20
KR100881733B1 (ko) 2009-02-06
EP1412838B1 (fr) 2014-11-19
NO20040229L (no) 2004-03-30
RS50234B (sr) 2009-07-15
MA26122A1 (fr) 2004-04-01
CN1620640A (zh) 2005-05-25
WO2003012571A3 (fr) 2004-01-22
YU5704A (sh) 2006-05-25
CN100339778C (zh) 2007-09-26
HUP0400234A2 (en) 2004-09-28
FR2828301B1 (fr) 2010-09-03
MXPA04000489A (es) 2005-03-07
ES2529426T3 (es) 2015-02-20
HRP20040045A2 (en) 2005-02-28
AP2055A (en) 2009-10-15
HK1078363A1 (en) 2006-03-10
PL371096A1 (en) 2005-06-13
JP3949104B2 (ja) 2007-07-25
AU2002328377B2 (en) 2008-10-02
GEP20053648B (en) 2005-10-25
OA12700A (en) 2006-06-23
UA77187C2 (en) 2006-11-15
CO5550507A2 (es) 2005-08-31
EP1412838A2 (fr) 2004-04-28
IL159955A0 (en) 2004-06-20
AP2004002959A0 (en) 2004-03-31

Similar Documents

Publication Publication Date Title
EP1975784B1 (en) Method of obfuscating computer instruction streams
CN101331470B (zh) 许可的向上销售
US7757224B2 (en) Software support for dynamically extensible processors
US20240095344A1 (en) Computer implemented method
US20070294770A1 (en) Method to Protect Software Against Unwanted Use with a Variable Principle
US20070136816A1 (en) Method to protect software against unwanted use with a detection and coercion principle
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a "Temporal Dissociation" Principle
EA005466B1 (ru) Способ защиты программы от её неавторизованного использования при помощи так называемого принципа детектирования и принуждения
EA005465B1 (ru) Способ защиты программы от её неавторизованного использования при помощи так называемого принципа переменной
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a "Renaming" Principle
JP5863689B2 (ja) 不正使用防止機能付き共有ライブラリ
JP2004537800A (ja) 「リネーム」原理を使用してその無許可使用に対してソフトウェアを保護する方法
US7502940B2 (en) Method to protect software against unwanted use with a “conditional branch” principle
US7434064B2 (en) Method to protect software against unwanted use with a “elementary functions” principle
JP2004537807A (ja) 「一時的分離」原理により不正使用に対してソフトウェアを保護する方法
JP2004537794A (ja) 「条件分岐」原理により不正使用に対してソフトウェアを保護する方法
JP2004537801A (ja) 「基本関数」原理により不正使用に対してソフトウェアを保護する方法

Legal Events

Date Code Title Description
MM4A Lapse of a eurasian patent due to non-payment of renewal fees within the time limit in the following designated state(s)

Designated state(s): AZ KG MD TJ TM

MM4A Lapse of a eurasian patent due to non-payment of renewal fees within the time limit in the following designated state(s)

Designated state(s): AM BY KZ