EA 012921B1 20100226 Номер и дата охранного документа EA200802108 20070426 Регистрационный номер и дата заявки RU2006114101 20060427 Регистрационные номера и даты приоритетных заявок RU2007/000219 20070426 Номер международной заявки (PCT) WO2007/126341 20071108 Номер публикации международной заявки (PCT) EAB1 Код вида документа EAb21001 Номер бюллетеня [JPG] EAB1\00000012\921BS000#(103:52) Основной чертеж [RU] СПОСОБ И УСТРОЙСТВО ЗАЩИТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОТ НЕСАНКЦИОНИРОВАННОГО ИСПОЛЬЗОВАНИЯ Название документа [8] G06F 21/22 Индексы МПК [RU] Встовский Владимир Никитич, [RU] Горюнов Дмитрий Игоревич, [RU] Ахраменко Михаил Федорович Сведения об авторах [RU] ВСТОВСКИЙ ВЛАДИМИР НИКИТИЧ (RU), [RU] ГОРЮНОВ ДМИТРИЙ ИГОРЕВИЧ (RU), [RU] АХРАМЕНКО МИХАИЛ ФЕДОРОВИЧ (RU) Сведения о патентообладателях [RU] ВСТОВСКИЙ ВЛАДИМИР НИКИТИЧ (RU), [RU] ГОРЮНОВ ДМИТРИЙ ИГОРЕВИЧ (RU), [RU] АХРАМЕНКО МИХАИЛ ФЕДОРОВИЧ (RU) Сведения о заявителях US 2004193987 A1 KEUL M.: "DONGLES: HARDWARE SCHUTZT SOFTWARE", ELEKTRONIK, WEKA FACHZEITSCHRIFTENVERLAG, POING, DE, vol. 39, no. 10, 11 May 1990 (1990-05-11), pages 82-84, 86, XP000117036, ISSN: 0013-5658, abstract, pages 84 and page 86, section "Verfahren III: Codeauslagerung", page 86, section "Verfahren IV: Funktionsauslagerung (Coprozessor) Цитируемые документы
 

Патентная документация ЕАПВ

 
Запрос:  ea000012921b*\id

больше ...

Термины запроса в документе

Реферат

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


Формула

[0001] Устройство для защиты программного обеспечения от несанкционированного использования, содержащее

[0002] Устройство для защиты программного обеспечения от несанкционированного использования, содержащее

[0003] Устройство по п.1 или 2, в котором указанный по меньшей мере один функциональный фрагмент программного обеспечения хранится в указанной энергонезависимой памяти в форме кода, выполняемого процессором этого устройства, или в форме кода, выполняемого другим процессором, реализуемым с помощью эмуляции виртуальных машин.

[0004] Устройство по п.1 или 2, отличающееся тем, что оно выполнено в виде внешнего устройства или внутреннего модуля программируемого электронно-вычислительного устройства, выбранных из группы, включающей программно-аппаратный модуль, печатную плату, печатную плату с программируемой микросхемой, программируемым контроллером или программируемым логическим устройством.

[0005] Устройство по п.1 или 2, отличающееся тем, что интерфейс информационного обмена выполнен с возможностью соединения этого устройства с программируемым электронно-вычислительным устройством с помощью физических средств передачи данных, включающих кабели, компьютерные порты и шины, или каналов передачи данных, таких как беспроводные каналы передачи данных и т.п.

[0006] Устройство по п.1 или 2, отличающееся тем, что указанная энергонезависимая память выбрана из группы, включающей энергонезависимую программируемую память, программируемую флэш-память, электрически стираемую программируемую постоянную память, перепрограммируемую память, неперепрограммируемую память, двустороннюю электрически программируемую интегрированную память и т.п.

[0007] Устройство по п.1 или 2, отличающееся тем, что указанные многоуровневые средства защиты включают следующие уровни защиты:

[0008] Устройство по п.7, отличающееся тем, что защита от записи/модифицирования/стирания обеспечивается защитой с использованием паролей, которая может быть дополнительно усилена путем введения защиты от подбора паролей.

[0009] Устройство по п.1 или 2, отличающееся тем, что средства защиты выполнены в виде аппаратных средств, программных средств или программно-аппаратных средств.

[0010] Устройство по п.1 или 2, отличающееся тем, что оно содержит дополнительный интерфейс программирования указанной энергонезависимой памяти.

[0011] Устройство по п.10, отличающееся тем, что указанный дополнительный интерфейс программирования объединен с интерфейсом информационного обмена или соединен с указанной энергонезависимой памятью посредством средств информационного обмена.

[0012] Устройство по п.1 или 2, отличающееся тем, что указанные средства защиты, по меньшей мере частично, блокируют доступ к энергонезависимой памяти, осуществляемый через интерфейс программирования и/или через процессор, или отключает интерфейс программирования.

[0013] Устройство по п.1, отличающееся тем, что оставшаяся часть программного обеспечения, из которой изъят по меньшей мере один функциональный фрагмент, хранится в той части энергонезависимой памяти, которая не обязательно защищена средствами защиты, или хранится в дополнительной энергонезависимой памяти.

[0014] Устройство по п.1, которое выполнено с возможностью защиты программного обеспечения, распространяемого с удаленного сервера.

[0015] Устройство по п.1 или 2, которое выполнено с возможностью защиты программного обеспечения, распространяемого в форме, записанной и хранимой на читаемом программируемым электронно-вычислительным устройством носителе данных, таком как оптический диск, флэш-память и т.п.

[0016] Устройство по п.1 или 2, отличающееся тем, что программное обеспечение представляет собой криптографическую программу, а указанный по меньшей мере один функциональный фрагмент представляет собой криптографический алгоритм.

[0017] Способ защиты программного обеспечения от несанкционированного использования, содержащий этапы

[0018] Способ по п.17, согласно которому средства защиты содержимого указанной энергонезависимой памяти активируют перед или после этапа записи указанного по меньшей мере одного функционального фрагмента в указанную энергонезависимую память.

[0019] Способ по п.18, согласно которому перед активацией средств защиты дополнительно отлаживают указанное программное обеспечение и устраняют обнаруженные ошибки.

[0020] Способ защиты программного обеспечения, содержащий этапы выполнения части программного обеспечения, из которого изъят по меньшей мере один функциональный фрагмент, в программируемом электронно-вычислительном устройстве и выполнения изъятого по меньшей мере одного функционального фрагмента в устройстве для защиты программного обеспечения, в качестве которого используют устройство по п.1 или 2.

[0021] Программный продукт, содержащий

[0022] Продукт по п.21, отличающийся тем, что первая часть содержит по меньшей мере один предшествующий блок, который должен быть выполнен перед выполнением изъятого функционального фрагмента, по меньшей мере одну функцию передачи и по меньшей мере один последующий блок, который должен быть выполнен после приема результирующих данных, полученных при выполнении изъятого фрагмента на отдельном устройстве для защиты программного обеспечения.

[0023] Продукт по п.22, отличающийся тем, что указанная по меньшей мере одна функция передачи после запуска выполнения по меньшей мере одного предшествующего блока первой части программного обеспечения передает исходные данные и/или команды устройству для защиты программного обеспечения, тем самым обеспечивая отдельное выполнение второй части программного обеспечения в указанном устройстве для защиты программного обеспечения для получения результирующих данных, передаваемых обратно программируемому электронно-вычислительному устройству для обеспечения возможности выполнения последующего блока первой части программного обеспечения.

[0024] Продукт по п.21, отличающийся тем, что вторая часть находится в устройстве для защиты программного обеспечения, а первая часть находится на удаленном сервере или на читаемом программируемым электронно-вычислительным устройством носителе.

[0025] Комплект для безопасного распространения программного обеспечения, содержащий

[0026] Комплект для безопасного распространения программного обеспечения, содержащий

[0027] Способ безопасного распространения программного обеспечения с использованием устройства для защиты программного обеспечения по п.1 или 2, содержащий этапы

[0028] Читаемый программируемым электронно-вычислительным устройством носитель с записанным на нем программным продуктом, содержащим такие операторы в программном коде, что при выполнении этого программного продукта на программируемом электронно-вычислительном устройстве обеспечивается исполнение этапов способа по п.17.


Полный текст патента

Предпосылки к созданию изобретенияОбласть техники

Настоящее изобретение относится к защите программного обеспечения и может быть использовано разработчиками или распространителями программного обеспечения для защиты программного обеспечения, установленного на электронно-вычислительных машинах, контроллерах и других программируемых компьютерных устройствах, от несанкционированного использования, копирования, воспроизведения, модифицирования, распространения и исследования.

Уровень техники

Производители программного обеспечения знакомы с проблемой несанкционированного использования и распространения программного обеспечения и других цифровых данных. Из-за несанкционированного копирования и распространения программного обеспечения - так называемого компьютерного пиратства - компании ежедневно теряют огромные суммы доходов. Согласно статистике BSA (Business Software Alliance - Альянса производителей коммерческого программного обеспечения), 38% используемого в мире программного обеспечения - это несанкционированные копии. В 1998 г. из-за компьютерного пиратства производители программного обеспечения потеряли 11 млрд долларов дохода, в 2003 г. - 29 млрд долларов дохода, а в 2005 г. - 34 млрд долларов дохода. Потеря доходов приводит к уменьшению количества рабочих мест, к уменьшению количества инновационных продуктов и к повышению потребительских цен.

В частности, эта проблема относится к всемирной сети Интернет и к другим сетям обмена данными, которые задействуют большое количество взаимодействующих между собой и обменивающихся информацией программируемых электронно-вычислительных устройств (ПЭВУ), к числу которых относятся персональные, портативные и планшетные компьютеры, персональные электронные секретари (PDA), игровые приставки и т.д. Интернет и другие сети (кабельные, спутниковые, корпоративные или ведомственные) используют, помимо прочего, для распространения программного обеспечения. Однако подобное распространение нередко принимает форму незаконной загрузки и совместного использования защищенного авторским правом программного обеспечения сторонами, не имеющими на это прав.

Для борьбы с незаконным распространением защищенных авторскими правами программных продуктов, а также для того, чтобы обеспечить соблюдение условий лицензии во время использования цифровых данных, производители и распространители программного обеспечения используют различные способы защиты.

Одним из известных способов защиты программного обеспечения является так называемая «активация программного продукта », или парольная защита, которая основана на использовании паролей (кодов активации). Активация программного продукта, также известная под названием «активация программного обеспечения », - это бизнес-модель, характерная для большей части коммерческого программного обеспечения (например, в программах Adobe Illustrator ™ фирмы Adobe Systems Inc., SCO Open Server ™ фирмы Santa Cruz Operation Ltd. и др.) и обеспечивающая контроль над использованием и распространением программных приложений.

В целом такая защита основана на ограничении числа раз, которое программное обеспечение может быть установлено. Как правило, задачей этого способа защиты является обеспечение возможности установки программного приложения только на одно устройство. В течение заданного периода (например, в течение 30 дней) после установки пользователь обязан «активировать » программное приложение и только после этого может использовать его. Для активации устанавливают связь (как правило, через Интернет) между устройством, на котором установлено программное приложение, и лицензирующим сервером для передачи информации об аппаратном оборудовании, на которое установлено приложение. Если программное обеспечение приобретено легально, то удаленный сервер предоставляет разблокирующий код, который должен быть записан в устройстве пользователя. Каждый раз при запуске приложения осуществляется проверка соответствия между кодом и компонентами аппаратного оборудования устройства (например, типом дисплейного адаптера, SCSI-адаптера, IDE-адаптера, типом процессора и т.д.), и выполнение разрешается только в том случае, если обнаруженный во время проверки код соответствует ожидаемому коду.

Так как при такой активации используется информация об аппаратном оборудовании, любое изменение в аппаратном оборудовании создает сложности для положительной идентификации устройства пользователя. При замене устройства пользователь должен повторно активировать программное обеспечение. Кроме того, использование лицензионного программного обеспечения более чем на одном устройстве создает дополнительные сложности.

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

В Интернете можно найти пароли (активационные коды) для большинства программных продуктов, что позволяет при наличии нелицензионной копии программного обеспечения несанкционированно использовать и/или распространять это программное обеспечение.

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

В основе еще одного способа защиты программного обеспечения лежит использование локального лицензирующего сервера, т.е. сервера, который работает в частных сетях организаций и контролирует функции лицензирования/защиты по меньшей мере одного программного продукта. Например, в памяти локального лицензирующего сервера имеются N лицензий, т.е. в одно и то же время могут быть использованы не более N копий программы. Каждый раз при запуске копии программного обеспечения оно «запрашивает » у лицензирующего сервера разрешение на работу. Каждый раз, когда пользователь запускает одно программное приложение, количество лицензий в памяти лицензирующего сервера уменьшается на единицу, а каждый раз, когда пользователь заканчивает работу с приложением, количество лицензий в памяти лицензирующего сервера увеличивается на единицу. Если приложение одновременно используют более N пользователей, то в зависимости от условий купленной организацией лицензии сервер может отказать в запуске дополнительных копий, обеспечить взыскание с организации платы за использование дополнительных копий и т.п.

Защита программного обеспечения, основанная на вводе регистрационных данных и взаимодействии с поставщиком программного обеспечения, не требует наличия аппаратных средств защиты, но она способна воспрепятствовать несанкционированному распространению и использованию программного обеспечения только в том случае, если зарегистрированные или незарегистрированные пользователи имеют низкую или среднюю квалификацию.

Даже при том, что контроль распространения программного обеспечения производится постоянно, при каждом копировании программного обеспечения, а не однократно, как при парольной защите, данный способ не обеспечивает защиту от программ статического и динамического исследования, поскольку информация при вводе регистрационных данных и взаимодействии с поставщиком программного обеспечения попадает посредством каналов передачи данных в память ПЭВУ, откуда может быть скопирована и использована незарегистрированными пользователями.

В настоящее время наиболее надежными с точки зрения предотвращения несанкционированных действий зарегистрированных и незарегистрированных пользователей являются системы защиты авторских прав на цифровые продукты, основанные на использовании ключевых носителей, например магнитных карт, производимых такими компаниями, как OMRON Electronics Ltd., магнитных носителей с дефектами, интеллектуальных электронных ключей на основе микропроцессоров и микросхем памяти (электронные идентификаторы Touch Memory, аппаратные ключи HASP компании Aladdin Knowledge Systems Ltd.), которые взаимодействуют с цифровыми данными, например с программным обеспечением, на аппаратном уровне, например, посредством считывателей магнитных карт, считывателей электронных идентификаторов Touch Memory или портов ввода-вывода вычислительных машин.

Аппаратные ключи HASP ™ - это семейство продуктов, которые предназначены для защиты программного обеспечения (т.е. для предотвращения над ним пиратских действий), и они также используются в системах защиты авторских прав на цифровые продукты. В настоящее время семейство аппаратных ключей HASP включает в себя следующие продукты: HASP HL ™ - аппаратная система лицензирования и защиты программного обеспечения; Privilege ™ - аппаратная система лицензирования, защиты и распространения программного обеспечения; Privilege Trialware Toolkit - средства организации безопасного контролируемого пробного использования программного обеспечения и HASP DocSeal ™ - аппаратная система для защиты интеллектуальной собственности и конфиденциальной информации в HTML-файлах.

Для работы программного обеспечения, которое защищено аппаратными ключами, установленными в разъем порта ввода-вывода ПЭВУ, требуется идентификация ключа. При идентификации программа запрашивает код ключа и сравнивает его с кодом, записанным в программе. По результатам идентификации программа реализует заданный регламент ее использования.

Например, ключ HASP HL ™ распространяют в форме аппаратного ключа (известного также под названием «защитный ключ », или «донгл »), который предназначен для установки в USB-порт или другой подобный порт вычислительной машины, например параллельный порт. Этот ключ представляет собой аппаратное криптографическое устройство, используемое для шифрования и дешифрования данных для защиты программного обеспечения. Во время работы ключ HASP HL ™ принимает от защищаемого приложения последовательность зашифрованных данных и дешифрует их способом, который невозможно повторить. Расшифрованные данные из ключа HASP HL ™ возвращаются в защищаемое приложение и определяют режим, в котором работает программа: загрузка и выполнение, запуск лишь определенных компонентов программы или полный отказ от запуска. Устанавливаемое на микросхему устройство шифрования HASP ™ содержит 128-битный криптографический алгоритм улучшенного стандарта шифрования (AES стандарта), универсальный прикладной программный интерфейс, информацию о возможностях, которые предоставляет данная лицензия, межплатформенную универсальную последовательную шину (USB) и т.д.

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

Однако данная защита является недостаточной для исследования программного обеспечения такими методами, как анализ программного обеспечения с помощью программ-отладчиков, анализ программного обеспечения с помощью аппаратных эмуляторов вычислительной среды, анализ протоколов взаимодействия программного обеспечения с ключевыми носителями с применением измерительной аппаратуры, например логических анализаторов типа HP 54620A, HP 54620C, HP 1664A фирмы Hewlett Packard. Например, программы-отладчики отслеживают и захватывают информацию цифровых данных после ее обработки дешифрующим программным приложением, выявляя, таким образом, «защищенную » информацию. Такая информация содержит файл с цифровыми данными и метаданные, описывающие, как их нужно обрабатывать. Программа, которая взламывает приложение и извлекает эту информацию из системы защиты авторских прав, обеспечивает возможность получения несанкционированных копий оригинального файла цифровых данных. Таким образом, "ноу-хау" или информация, не подлежащая разглашению, могут быть выявлены зарегистрированными пользователями высокой квалификации с помощью дизассемблеров. Эти способы также могут быть применены для обнаружения и стирания имеющихся в программном обеспечении областей, отвечающих за обращение к ключевому носителю, для возможности последующего несанкционированного использования и/или распространения программного обеспечения без ключевого носителя. Эта проблема усиливается тем, что большинство используемых для взлома средств - это эффективные и законные инструменты, широко используемые в области разработки программного и аппаратного обеспечения, например инструменты внутрисхемной эмуляции, отладчики и дизассемблеры. Эти инструменты разрешены законом, их легко приобрести, и они становятся все более совершенными и эффективными. К их числу относятся SoftICE компании NuMega, отладчики компаний Microsoft или Borland, эффективный инструмент снятия защиты ProcDump, условно-бесплатные программы, которые могут быть свободно загружены из Интернета, и многие другие.

В качестве меры противодействия в системах защиты авторских прав могут быть использованы более сложные криптографические схемы и способы скрытия кода. Согласно другим способам криптографические ключи могут быть записаны на аппаратных средствах, защищенных от несанкционированных попыток извлечения хранящейся на них информации. Такие способы раскрыты, например, в US 7131006 (Verizon Laboratories Inc.), где предлагается использовать криптографический аппаратный ключ, и в US 7165727 (Sun Microsystems), где предлагается записывать криптографические ключи и криптографические алгоритмы на смарт-карту. Недостатком подобных устройств является либо то, что во время дешифрования информации ПЭВУ имеет доступ к криптографическому ключу, либо то, что после выполнения криптографических функций внутри криптографического устройства к конечному результату, который выдается в исходной форме, может быть получен доступ.

В подобных способах криптографические алгоритмы должны быть реализованы в аппаратных средствах, которые также должны содержать криптографические ключи для возможности доступа к цифровым данным. Таким образом, криптографические алгоритмы и ключи должны быть всегда доступны приложению. Эти требования существенно усложняют программное обеспечение, снижают скорость его работы и функциональную надежность.

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

Таким образом, еще одной общей проблемой описанных выше способов защиты программного обеспечения является то, что защищенное программное обеспечение, включая защитные средства, рано или поздно попадает в каналы передачи данных и в память ПЭВУ, поскольку это необходимо для его обработки и выполнения процессором ПЭВУ. С этого момента программное обеспечение не защищено от копирования, воспроизведения или проникновения как зарегистрированными, так и незарегистрированными пользователями программного обеспечения.

Это означает, что любой квалифицированный пользователь, имея достаточно средств и времени и приложив некоторые усилия, может с помощью известных дизассемблеров и отладчиков заблокировать проверочные функции известных способов защиты или скомпоновать недостающие фрагменты кода, необходимые для воссоздания, использования и распространения копий основного кода программы.

В заявке US 20060010500 раскрыт способ защиты цифровых данных, согласно которому исходные защищенные авторским правом цифровые данные разделяют по меньшей мере на две части таким образом, что каждая часть отдельно от других частей не может обеспечить конечный результат использования этих данных, после чего получившиеся после разделения файлы перекомпоновывают в единый файл, который сжимают и зашифровывают для распространения по сети. Принятый единый файл хранится в устройстве для защиты авторских прав, которое в соответствующие моменты времени отправляет один файл в компьютер пользователя для обработки, а второй файл обрабатывает самостоятельно. Однако из-за того, что результаты обработки объединяются в ПЭВУ, они не защищены от незаконного копирования.

В US 20060242082 раскрыт вариант этого способа, согласно которому хранение и выполнение второй части разделенных цифровых данных осуществляется на удаленном сервере. Во время работы приложения цифровое оборудование никогда не содержит всех частей исходных данных и всех алгоритмов его обработки, следовательно, данные недоступны для взлома.

Однако так как вторая часть исходных данных хранится на удаленном сервере в машиночитаемой форме, она может быть незаконно скопирована с этого сервера.

Кроме того, способы, использующие сложные криптографические алгоритмы, делают программы громоздкими и замедляют загрузку файлов из сети.

Следовательно, необходимы такие способ и средства защиты программного обеспечения, которые устраняют описанные выше проблемы уровня техники и обеспечивают возможность простого и эффективного, но вместе с тем полностью защищенного, распространения и использования программного обеспечения.

Задачи изобретения

Задачей настоящего изобретения является создание надежной защиты программного обеспечения от несанкционированного использования, воспроизведения, распространения, исследования и модифицирования, которая способна противостоять всем известным способам незаконного копирования и воспроизведения программного обеспечения.

Еще одной задачей настоящего изобретения является создание способа и устройства для защиты программного обеспечения, которые устойчивы к статическому и динамическому исследованию программами-дизассемблерами, программами-отладчиками и аппаратными средствами проникновения.

Еще одной задачей настоящего изобретения является создание способа и устройства для защиты программного обеспечения, которые не позволяют получать полнофункциональные копии программного обеспечения с любого известного носителя данных, такого как память ПЭВП, выполняющего это программное обеспечение.

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

Еще одной задачей настоящего изобретения является снижение или полное исключение риска воссоздания исходного кода, находящегося в памяти легально произведенных устройств для защиты программного обеспечения, даже в случае нелегального воспроизведения или создания его аппаратной копии, таким образом, исключая возможность несанкционированного использования, копирования, распространения и исследования программного обеспечения, защищенного средством и способом согласно настоящему изобретению.

Сущность изобретения

Для решения этих и других задач предлагается устройство для защиты программного обеспечения от несанкционированного использования, содержащее энергонезависимую память, выполненную с возможностью записи и хранения в ней по меньшей мере одного функционального фрагмента, изъятого из указанного программного обеспечения, средства защиты по меньшей мере части содержимого указанной энергонезависимой памяти, при этом защищенная часть хранит указанный по меньшей мере один функциональный фрагмент, изъятый из указанного программного обеспечения, интерфейс информационного обмена для обмена данными с программируемым электронно-вычислительным устройством и процессор для обработки изъятого фрагмента программного обеспечения, хранящегося в указанной энергонезависимой памяти, причем указанное устройство выполнено с возможностью соединения с программируемым электронно-вычислительным устройством для обмена данными, что обеспечивает возможность выполнения оставшейся части программного обеспечения.

Согласно предлагаемому изобретению обмен данными включает в себя отправку программируемым электронно-вычислительным устройством исходных данных и/или команд для запуска выполнения изъятого фрагмента в устройстве для защиты программного обеспечения, вследствие которого получаются результирующие данные, и отправку этих результирующих данных программируемому электронно-вычислительным устройству.

Согласно предлагаемому изобретению средства защиты обеспечивают защиту от копирования, считывания, воспроизведения, исследования, модифицирования и/или стирания.

Средства защиты могут быть реализованы в виде программных, аппаратных или программно-аппаратных средств.

Согласно предлагаемому изобретению средства защиты могут быть многоуровневыми, т.е. они могут обеспечивать поэтапное применение разных видов защит.

Например, в одном варианте реализации устройство для защиты программного обеспечения может быть изготовлено с защищенной от считывания энергонезависимой памятью, в которой может быть записана и сохранена любая часть программного обеспечения без возможности ее последующего считывания из этой памяти.

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

Согласно еще одному варианту реализации может быть предусмотрена дополнительная защита от подбора паролей. Способы этой дополнительной защиты могут быть определены специалистами в данной области.

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

Тип защиты может быть выбран специалистом в данной области в зависимости от конкретных условий и требований безопасности. Для реализации защиты могут быть использованы стандартные средства.

Например, защита может быть реализована описанным в публикациях компании Atmel способом «двоичной блокировки памяти для программ и данных » (см., например, http://www.atmel.com/dyn/resources/prod documents/doc2486.pdf). Согласно настоящему изобретению может быть использован и любой другой подходящий способ защиты содержимого памяти.

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

Указанный по меньшей мере один функциональный фрагмент, изъятый из указанного программного обеспечения, может храниться в памяти устройства для защиты программного обеспечения в виде кода, выполняемого другим процессором, реализуемым, например, с помощью эмуляции виртуальных машин.

Использование эмуляции виртуальных машин позволяет выполнять коды, которые изначально предназначены для выполнения другими типами процессоров. Также возможно выполнение текстовых инструкций с использованием виртуальной машины Java или другой подобной виртуальной машины.

Согласно одному варианту реализации, указанный по меньшей мере один изъятый фрагмент хранится в части энергонезависимой памяти, которая защищена средствами защиты содержимого этой памяти.

Согласно одному варианту реализации оставшаяся часть программного обеспечения, из которой изъят по меньшей мере один функциональный фрагмент, хранится в части энергонезависимой памяти, которая не обязательно защищена средствами защиты.

Оставшаяся часть программного обеспечения, из которой изъят по меньшей мере один функциональный фрагмент, может храниться в дополнительной энергонезависимой памяти, которая не защищена или защищена средствами защиты.

Оставшаяся часть программного обеспечения, из которой изъят по меньшей мере один функциональный фрагмент, может быть загружена с удаленного сервера или из сети.

Оставшаяся часть программного обеспечения, из которой изъят по меньшей мере один функциональный фрагмент, может храниться на любом читаемом компьютером носителе, например на компакт-диске, флэш-памяти и т.п.

Кроме того, как будет понятно специалисту в данной области, указанные процессор, энергонезависимая память и интерфейс информационного обмена соединены друг с другом средствами информационного обмена.

Согласно одному варианту реализации изобретения устройство для защиты программного обеспечения может быть реализовано в форме внешнего модуля, такого как программно-аппаратный модуль.

Согласно еще одному варианту реализации устройство для защиты программного обеспечения может быть реализовано в форме внутреннего модуля и использовано, например, для защиты системного программного обеспечения, такого как BIOS и т.п.

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

В состав одного из возможных вариантов реализации входит производимый компанией Silicon Laboratories микроконтроллер C8051F320/1, который содержит процессорное ядро, программируемую флэш-память и аппаратные средства защиты от считывания, воспроизведения или модифицирования сохраняемых в нем программ или данных.

Устройство для защиты программного обеспечения также содержит оперативную память, которая предназначена для хранения переменных и данных и выполняет функцию буфера обмена данными, который необходим для работы процессора. С помощью, например, средств информационного обмена оперативная память может быть соединена с процессором, а с помощью интерфейса информационного обмена - с программируемым электронно-вычислительным устройством.

Интерфейс информационного обмена может быть реализован в форме физических средств передачи данных или беспроводных средств передачи данных, например, с использованием интерфейсов USB, PCI, RS-232, COM, LPT, Ethernet, Bluetooth или IRDA.

Согласно предлагаемому изобретению средства защиты программного обеспечения также могут содержать дополнительный интерфейс программирования указанной энергонезависимой программируемой памяти. В одном варианте реализации указанный дополнительный интерфейс программирования может быть объединен с интерфейсом информационного обмена.

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

Согласно предлагаемому изобретению указанные средства защиты содержимого указанной энергонезависимой памяти защищают содержимое от считывания, копирования, воспроизведения, исследования, модифицирования и других форм выявления его содержимого, а также от стирания.

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

Предлагается способ защиты программного обеспечения от несанкционированного использования, содержащий этапы

изъятия по меньшей мере одного функционального фрагмента программного обеспечения, без которого оставшаяся часть программного обеспечения будет выполняться в программируемом электронно-вычислительным устройстве неправильно или вообще не сможет выполняться;

записи указанного изъятого функционального фрагмента программного обеспечения в энергонезависимую память устройства для защиты программного обеспечения, имеющего средства защиты указанного фрагмента от считывания;

дополнительно возможный этап активации дополнительной защиты находящегося в указанной энергонезависимой памяти функционального фрагмента от копирования, воспроизведения, исследования, модифицирования и/или стирания;

вставки в оставшуюся часть программного обеспечения функции передачи для отправки устройству для защиты программного обеспечения исходных данных и/или команд, инициирующих выполнение изъятого фрагмента, для получения результирующих данных, и для отправки полученных результирующих данных программируемому электронно-вычислительному устройству.

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

Результирующие данные - это данные, полученные в результате выполнения изъятого функционального фрагмента программного обеспечения.

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

Способ также может содержать этап активации дополнительной защиты хранящегося в энергонезависимой памяти функционального фрагмента от копирования, воспроизведения, исследования, модифицирования или стирания. Таким образом, защиту могут активировать поэтапно для обеспечения различных уровней защиты в соответствии с требованиями производителя.

Например, способ может дополнительно содержать этап активации защиты содержимого от записи/модифицирования/стирания, так что данные, будучи записанными в память и став содержимым, не могут быть модифицированы, стерты, и/или в эту же энергонезависимую память не могут быть записаны дополнительные данные. Эта защита может быть реализована, например, с помощью паролей или другими подходящими средствами по выбору специалиста в данной области.

Согласно еще одному варианту реализации способ также может содержать этап активации защиты от подбора паролей. Способ такой защиты может быть выбран специалистом в данной области.

Согласно еще одному варианту реализации способ также может содержать последний этап, на котором полностью блокируют память.

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

Очевидно, что, согласно предлагаемому изобретению, функциональный фрагмент или программа хранятся в энергонезависимой памяти устройства для защиты программного обеспечения в виде кода, выполняемого процессором указанного устройства для защиты программного обеспечения, или в виде кода, выполняемого другим процессором, например, реализуемым с помощью эмуляции виртуальных машин.

До активации средств защиты от копирования, воспроизведения, модифицирования или стирания над хранящимся в энергонезависимой памяти устройства для защиты программного обеспечения функциональным фрагментом могут производить отладку с исправлением найденных ошибок.

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

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

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

Согласно еще одному аспекту настоящего изобретения предлагается способ приобретения и обеспечения защиты программного обеспечения в системе, содержащей компьютер пользователя или любое программируемое электронно-вычислительное устройство, сервер и устройство для защиты программного обеспечения, содержащий этапы приобретения или загрузки пользователем программного обеспечения; установки указанного программного обеспечения на указанный компьютер пользователя или на указанное программируемое электронно-вычислительное устройство и выполнения программного обеспечения с использованием устройства для защиты программного обеспечения, как описано выше.

Согласно еще одному аспекту настоящего изобретения предлагается способ безопасного распространения программного обеспечения с использованием устройства для защиты программного обеспечения, содержащий этапы

загрузки, предназначенной для защиты программы программного обеспечения на программируемое электронно-вычислительное устройство;

соединения устройства для защиты программного обеспечения с программируемым электронно-вычислительным устройством;

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

приема устройством для защиты программного обеспечения исходных данных и выполнения им изъятого фрагмента программного обеспечения для получения результирующих данных;

отправки результирующих данных программируемому электронно-вычислительным устройству для обеспечения возможности выполнения им следующей части программы программного обеспечения.

Краткое описание чертежей

После краткого описания чертежей приведено более подробное описание предлагаемого изобретения со ссылками на прилагаемые чертежи.

Фиг. 1 - функциональная блок-схема программно-аппаратного устройства для защиты программного обеспечения согласно одному варианту реализации настоящего изобретения;

фиг. 2 - логическая структура защиты программного обеспечения согласно настоящему изобретению;

фиг. 3 - алгоритм выполнения программного обеспечения, защищенного согласно настоящему изобретению;

фиг. 4 - внешний вид программно-аппаратного средства защиты программного обеспечения, которое реализовано в виде программно-аппаратного модуля, выполненного с возможностью присоединения к USB-порту ПЭВУ.

Подробное описание предпочтительных вариантов реализации изобретения

Ниже приведено подробное описание настоящего изобретения со ссылками на чертежи, на которых изображены конкретные варианты реализации. Специалистам в данной области понятно, что возможны другие варианты реализации настоящего изобретения в пределах его сущности, поэтому приведенное ниже подробное описание изобретения не является ограничением.

На фиг. 1 показана блок-схема варианта реализации устройства для защиты программного обеспечения согласно настоящему изобретению, содержащего по меньшей мере один центральный процессор 3, по меньшей мере одну оперативную память 2, по меньшей мере одну энергонезависимую память 6, средства 5 защиты данных и по меньшей мере один интерфейс 1 информационного обмена между устройством для защиты программного обеспечения и ПЭВУ (не показано).

Память 6 может входить в состав процессора 3 или быть независимой от него, в целом для повышения уровня интеграции и для возможного снижения стоимости устройства для защиты программного обеспечения его компоненты или субкомпоненты могут быть объединены друг с другом. Например, перечисленные выше функциональные блоки могут быть реализованы аппаратно либо в виде отдельных устройств, которые соединены каналами передачи данных, либо в виде единого устройства, содержащего все упомянутые выше блоки, например, в виде интегральной схемы, реализующей все вышеперечисленные функции. Также некоторые блоки могут быть объединены, в то время как другие блоки реализованы отдельно.

ПЭВУ, используемые конечными пользователями для выполнения по меньшей мере одного файла данных, могут представлять собой, например, персональный, портативный или планшетный компьютер, контроллер, персональный электронный секретарь (PDA) и любое другое работающее с программным обеспечением оборудование.

Устройство для защиты программного обеспечения дополнительно может содержать устройство 4 индикации, которое показывает состояние или режим работы любого субкомпонента указанного устройства. Например, устройство индикации может показывать, что энергонезависимая память заполнена или свободна, или что устройство работает в режиме программирования или в рабочем режиме.

Устройство для защиты программного обеспечения может содержать интерфейс 7 программирования указанной энергонезависимой программируемой памяти.

Перечисленные выше компоненты связаны друг с другом посредством интерфейса информационного обмена или каналов передачи данных.

Интерфейс 1 выполнен с возможностью обеспечения взаимодействия между устройством для защиты программного обеспечения и ПЭВУ.

Физически интерфейс 1 может быть реализован, например, в виде по меньшей мере одного кабеля и/или порта или шины.

Реализуемый интерфейсом 1 информационный аспект обеспечивает возможность обмена данными между устройством для защиты программного обеспечения и цифровым оборудованием через беспроводные, инфракрасные или любые другие подходящие средства. В качестве интерфейса 1 может быть использован любой интерфейс, например, PCI, ISA, USB, FireWire, IDE, SCSI, RS-232 или другой последовательный интерфейс, параллельный интерфейс, интерфейс Compact Flash (CF), интерфейс Sony Memory Stick, Multimedia Card (MMC), secure digital, mini secure digital, extreme digital (xD), Bluetooth, lnfiniband, интерфейс мобильного телефона, интерфейс персонального электронного секретаря и/или любой другой интерфейс, который подходит для соединения устройства для защиты программного обеспечения с цифровым оборудованием, таким как ПЭВУ.

Кроме того, интерфейс 1 может быть использован для передачи устройству для защиты программного обеспечения исходных данных и/или команд и приема от него результирующих данных.

В одном варианте реализации интерфейс 1 может быть объединен с интерфейсом 7. В этом случае интерфейс 1 также может быть использован для загрузки кода программы в память 6.

Оперативная память 2 предназначена для хранения переменных и данных и выполняет функцию буфера обмена данными или другой информации, которая необходима для работы процессора 3, устройства 4, интерфейса 1, средств 5, памяти 6 и интерфейса 7.

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

Являющиеся необязательными компонентами дисплей или устройство 4 при необходимости предоставляют визуальную информацию.

Память 6 хранит функциональный фрагмент в виде машинного кода, выполняемого процессором 3, или кода, выполняемого другим процессором с использованием эмуляции. Память 6 может также хранить другие данные, такие как способы проверки прав доступа. Перечисленные условия не являются ограничением.

В качестве памяти 6 может быть использовано любое запоминающее устройство, содержащее носитель данных на основе полупроводников, такое как постоянное запоминающее устройство (ROM), электрически-стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память (flash-память), оперативное запоминающее устройство с батарейным питанием или любой другой вид энергонезависимой памяти, включая перепрограммируемую память, неперепрограммируемую память, двустороннюю электрически-программируемую интегрированную память и т.п. Перечисленные условия не являются ограничением.

Средства 5 позволяют процессору 3 выполнять код содержащегося в памяти 6 фрагмента программного обеспечения, но препятствуют прямому доступу к хранящимся в памяти 6 данным. Средства защиты данных препятствуют доступу пользователя к содержимому энергонезависимой памяти, в которой хранится по меньшей мере один функциональный фрагмент программного обеспечения, защищенного согласно настоящему изобретению. Интерфейс 7 может быть использован для исходного программирования памяти 6, кроме того, его могут использовать разработчики для загрузки в память 6 кода функционального фрагмента, программ и данных и для последующей активации средств 5 или, в случае необходимости, для стирания или невосстанавливаемого разрушения хранящихся в памяти 6 данных. Интерфейс 7 на аппаратном уровне может быть объединен с интерфейсом 1.

На фиг. 2 показана блок-схема, изображающая логическую структуру варианта реализации защиты программного обеспечения согласно настоящему изобретению (показанный пример не является ограничением). Первая часть программного обеспечения (программные модули 8, 9, 10) записана на ПЭВУ 20, а вторая часть (программные модули 11, 12) хранится в защищенном виде в устройстве 30 для защиты программного обеспечения согласно настоящему изобретению.

Как показано на фиг. 2, предназначенная для выполнения ПЭВУ 20 первая часть программного обеспечения согласно настоящему изобретению содержит модуль 8, содержащий программное обеспечение, из которого изъят по меньшей мере один функциональный фрагмент, функцию 8а передачи данных, которая вставлена в указанную первую часть продукта программного обеспечения, модуль 9, который представляет собой драйвер, содержащий функцию 9а передачи данных для отправки исходных данных и/или команд, как подробно описано выше, и модуль 10, который представляет собой драйвер интерфейса информационного обмена для обмена данными с устройством 30. При необходимости первая часть также может содержать любые дополнительные поддерживающие или функциональные компоненты. Эти компоненты могут быть созданы специалистом в данной области с использованием любых доступных инструментов программирования.

Вторая часть хранится в защищенном виде в отдельном устройстве 30, т.е. отделена от ПЭВУ 20. Вторая часть состоит из модуля 11, содержащего указанный по меньшей мере один функциональный фрагмент, который изъят из первой части и сохранен в защищенном виде в защищенной от считывания энергонезависимой памяти указанного устройства для защиты программного обеспечения, и модуля 12, содержащего интерфейс информационного обмена для обмена данными с ПЭВУ 20.

Модули 8 и 11 являются основными функциональными компонентами защищенного программного обеспечения, а модули 9, 10, 12 являются вспомогательными компонентами и содержат драйверы, которые поддерживают работу основных компонентов. Подходящие драйверы могут быть легко подобраны специалистом в данной области и не являются предметом настоящего изобретения.

Согласно настоящему изобретению во время выполнения первой части программы в ПЭВУ 20 указанная по меньшей мере одна вставленная в драйвер 9 функция 9а обеспечивает корректную передачу исходных данных через драйвер 10 устройству 30 для того, чтобы устройство 30 само выполнило вторую часть программы и отправило результирующие данные через драйвер 12 обратно в ПЭВУ 20, что позволяет ПЭВУ 20 продолжить выполнение первой части программы.

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

Функции передачи могут быть вставлены как в область изъятого фрагмента, так и в любую другую область программы, если это необходимо для функционирования последней. Например, функции передачи могут быть вставлены в те места программы, где необходим запрос результирующих данных из устройства для защиты программного обеспечения. Места программы, куда требуется поместить функцию передачи, могут быть легко определены специалистом в данной области.

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

Подробное описание способа защиты программного обеспечения

В отличие от других известных способов защиты программного обеспечения, основанных на хранении отдельных фрагментов (т.е. модулей программного обеспечения, паролей и кодов активации) в памяти устройства для защиты программного обеспечения, в способе согласно настоящему изобретению хранящиеся в памяти 6 функциональные фрагменты программного обеспечения или программы выполняются процессором 3 и не могут быть непосредственно считаны через каналы передачи данных, а следовательно, не могут быть скопированы в память ПЭВУ или на другой носитель для последующего несанкционированного использования.

Это означает, что даже если процессор 3 обменивается данными с ПЭВУ, невозможно скопировать полную версию программного обеспечения, которая содержит все необходимые для нормальной работы функциональные фрагменты или программы.

Способ защиты программного обеспечения с использованием устройства для защиты программного обеспечения согласно настоящему изобретению может быть реализован следующим образом.

На первом этапе выбирают по меньшей мере один функциональный фрагмент программного обеспечения, который будет не доступен для считывания, воспроизведения, копирования, стирания и/или модифицирования.

На втором этапе из программного обеспечения изымают по меньшей мере один выбранный функциональный фрагмент или программу (если это готовый коммерческий продукт).

В другом варианте реализации, если программа еще находится в процессе компиляции, программист составляет ее таким образом, чтобы она состояла из отдельных модулей, которые не могут быть использованы в качестве полноценного программного обеспечения отдельно друг от друга.

На третьем этапе выбранный фрагмент (модуль) компилируют в машинный код, выполняемый процессором 3. Или же выбранный фрагмент (модуль) могут компилировать в код другого процессора, который может быть выполнен с помощью эмуляции виртуальных машин.

На четвертом этапе в оставшуюся часть программного обеспечения вставляют по меньшей мере одну функцию передачи, которая предназначена для обмена данными с изъятой частью программного обеспечения, после чего указанную оставшуюся часть программного обеспечения компилируют в код, выполняемый процессором ПЭВУ, таким образом, что при достижении программным обеспечением указанной по меньшей мере одной функции передачи ПЭВУ передает устройству для защиты программного обеспечения исходные данные и/или команды, необходимые для обработки изъятой части программного обеспечения, которая хранится в энергонезависимой памяти устройства для защиты программного обеспечения.

Очевидно, что процессор 3 должен быть снабжен инструкциями и/или командами, с помощью которых при получении от ПЭВУ исходных данных он выполняет хранящийся в энергонезависимой памяти изъятый фрагмент программного обеспечения для получения результирующих данных, которые отправляются обратно в ПЭВУ.

На пятом этапе устройство для защиты программного обеспечения с помощью интерфейса 1 или интерфейса 7 соединяют с ПЭВУ или другим программируемым устройством. Соединение могут выполнять через порт передачи данных, шину или беспроводное соединение, как описано выше. Для этой цели могут использовать любые доступные средства, обеспечивающие возможность двусторонней передачи данных и/или команд между ПЭВУ и устройством для защиты программного обеспечения, такие как инфракрасный порт мобильного телефона, портативного компьютера и т.д. Скомпилированные модули по меньшей мере одного фрагмента программного обеспечения или программы загружают в память 6 устройства для защиты программного обеспечения. Указанные модули хранятся в той части памяти 6, к которой пользователи программного обеспечения не имеют доступ, и могут быть выполнены только процессором 3 внутри устройства для защиты программного обеспечения.

Дополнительно после загрузки функционального фрагмента программного обеспечения или программы в память 6 может быть выполнена отладка, суть которой заключается в выполнении программного обеспечения с целью исправления.

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

После отладки на шестом этапе могут активировать средства 5, которые защищает указанный по меньшей мере один функциональный фрагмент программного обеспечения или программу, хранящиеся в памяти 6 в защищенном виде, от чтения, копирования или любого другого воспроизведения с использованием известных способов проникновения.

Ясно, что указанный по меньшей мере один функциональный фрагмент хранится в виде машинного кода, выполняемого только процессором 3, а когда оставшаяся часть программного обеспечения, выполняемая ПЭВУ, достигает по меньшей мере одной вставленной в нее функции передачи, ПЭВУ отправляет исходные данные и/или команды устройству для защиты программного обеспечения, продолжая при этом исполнять другие функции защищенного программного обеспечения. Устройство для защиты программного обеспечения после приема исходных данных выполняет изъятый функциональный фрагмент программного обеспечения в процессоре 3 для получения результирующих данных, которые затем отправляет обратно ПЭВУ. Благодаря этому фрагмент или программу не нужно отправлять в ПЭВУ в открытой форме через каналы передачи данных.

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

Таким образом, согласно еще одному аспекту настоящего изобретения предлагается защищенный программный продукт, фрагмент или программы которого изъяты и сохранены в защищенном виде в устройстве для защиты программного обеспечения. Программный продукт неработоспособен без устройства для защиты программного обеспечения, а следовательно, не может быть использован несанкционированно.

Таким образом, производители защищенного авторским правом программного обеспечения получают удобный инструмент, обеспечивающий устойчивость их программного обеспечения к хакерским атакам. Использование защищенного согласно настоящему изобретению программного обеспечения возможно только в том случае, если кроме копии программного обеспечения, загруженной из сети или записанной на устройство хранения данных, имеется устройство для защиты программного обеспечения (например, показанный на фиг. 4 программно-аппаратный модуль).

Перед использованием программного обеспечения необходимо присоединить устройство для защиты программного обеспечения к ПЭВУ. В противном случае программное обеспечение выдаст сообщение о том, что устройство для защиты программного обеспечения не удалось обнаружить, и запретит доступ.

Любая попытка перехватить или заблокировать функцию обнаружения устройства для защиты программного обеспечения и откорректировать работу этого устройства через интерфейс информационного обмена или любые другие возможные каналы передачи данных приведет к тому, что выполнение программы будет осуществляться до момента попытки передачи данных устройству для защиты программного обеспечения, вызывающей системную ошибку. Таким образом, программное обеспечение не будет работать нормально, и незарегистрированный пользователь будет получать соответствующее сообщение.

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

На фиг. 3 показан алгоритм выполнения программного обеспечения, защищенного с помощью устройства для защиты программного обеспечения согласно настоящему изобретению, в вычислительной машине пользователя или другом ПЭВУ, таком как контроллер, персональный компьютер, портативный компьютер и т.п.

Как показано на фиг. 3, на этапе 21 ПЭВУ 20 выполняет первую часть программного обеспечения, находящегося в памяти ПЭВУ, а при необходимости и другие программы.

Вместо выполнения изъятого функционального фрагмента ПЭВУ на этапе 22 через интерфейс 1 отправляет процессору 3 устройства для защиты программного обеспечения исходные данные и/или команды.

На этапе 23 устройство для защиты программного обеспечения принимает исходные данные и/или команды, на этапе 24 процессор 3 выполняет хранящийся в памяти 6 функциональный фрагмент программного обеспечения, на этапе 25 устройство для защиты программного обеспечения через интерфейс информационного обмена отправляет результирующие данные обратно ПЭВУ, которое принимает результирующие данные на этапе 27 с последующим выполнением оставшейся части программного обеспечения на этапе 28.

Одновременно с этапом 24 ПЭВУ может осуществлять этап 26, на котором оно выполняет другие функции и фрагменты защищенного программного обеспечения.

Таким образом, указанный по меньшей мере один функциональный фрагмент программного обеспечения или программа, хранящиеся в памяти 6 в защищенном виде, могут быть выполнены процессором 3, но во время выполнения программного обеспечения они не могут быть считаны или скопированы из памяти 6.

Согласно настоящему изобретению при необходимости по меньшей мере один функциональный фрагмент программного обеспечения или по меньшей мере одна программа могут быть изъяты из программного обеспечения и сохранены в памяти 6 в защищенном виде.

На фиг. 4 показан пример практической реализации устройства для защиты программного обеспечения, которое выполнено в виде внешнего устройства, подключаемого к порту USB.

Способ и устройство для защиты программного обеспечения согласно настоящему изобретению представляют собой эффективный инструмент для защиты охраняемого авторским правом и правами на интеллектуальную собственность программного обеспечения от несанкционированного использования, воспроизведения, распространения и исследования.

Предлагаемые способ и устройство для защиты программного обеспечения препятствуют доступу к функционально значимым частям программного обеспечения даже во время его выполнения на ПЭВУ, исключая, таким образом, возможность создания и использования нелегальных копий.

Это достигается путем предотвращения физического доступа по меньшей мере к одной функционально значимой части программного обеспечения, изъятой из коммерчески распространяемого продукта. Более того, указанная функционально значимая часть программного обеспечения всегда недоступна для процессора ПЭВУ и пользователя, а следовательно, не может быть выполнена процессором ПЭВУ, не может через интерфейс информационного обмена быть записана в память ПЭВУ, скопирована на любой носитель или иным способом модифицирована, даже с использованием специальных инструментов или программного обеспечения.

Изъятый функциональный фрагмент программного обеспечения выполняется внутри устройства для защиты программного обеспечения после получения этим устройством исходных данных и/или команд от ПЭВУ. После выполнения указанного фрагмента процессором 3 устройство для защиты программного обеспечения отправляет ПЭВУ результирующие данные, а не сам фрагмент.

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

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

Ключи шифрования/дешифрования могут генерироваться любым другим ПЭВУ с их последующим надежным сохранением внутри указанного устройства для защиты программного обеспечения.

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

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

Специалистам в данной области понятно, что изобретение может быть реализовано и иными способами без выхода за рамки его сущности, а описанные в тексте настоящей заявки примеры носят пояснительный, а не ограничительный характер.