Способ обеспечения целостности программного обеспечения

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

 

Область техники, к которой относится изобретение

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

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

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

Типовая система, в которой выполняется приложение, обычно содержит процессорный блок, набор внешних периферийных устройств и память. В большинстве случаев, когда требуется защищенность, применяются схемы шифрования. В таких схемах информация, которую необходимо сохранять защищенной, т.е. рабочие данные или исполняемый код, подвергается шифрованию. Шифрование обычно выполняется в модуле безопасности, который образует часть системы. Модуль безопасности может быть реализован разнообразными способами, например на микропроцессорной плате, на платежной карточке со встроенным микропроцессором или в любом электронном модуле в виде идентификационного жетона или ключа. Такие модули, как правило, являются переносными устройствами, отсоединяемыми от приемника, а их конструкция предусматривает защиту от несанкционированного вмешательства. Наиболее распространенный тип модуля имеет электрические контакты, однако применяют и бесконтактные версии типа ISO 14443. Существует также другой вариант реализации модуля безопасности, при котором он непосредственно впаян внутри приемника, а разновидностью такого варианта является ИС, подключаемая к гнезду или разъему, такая как модуль SIM. Еще одним вариантом осуществления является модуль безопасности, встроенный в микросхему, которая выполняет другую функцию, например в модуль дескремблирования или микропроцессорный модуль декодера. Модуль безопасности может также быть реализован с помощью программного обеспечения.

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

В работе под названием «Устойчивость к несанкционированному вмешательству», представленной в 2005 г. в качестве диссертации на соискание ученой степени магистра наук, Ping Wang описывает метод многоблочного шифрования, при котором программа разделяется на некоторое количество независимых блоков в соответствии с последовательностью выполнения программы. После этого каждый блок программы шифруется, при этом всем блокам присваиваются разные ключи шифрования. Ключ шифрования для каждого блока представляет собой хеш-значение предыдущего блока в соответствии с последовательностью выполнения программы. Этот метод подходит для программ, имеющих древовидную структуру, в которых блоки расположены иерархически так, что один блок ведет к другому. В этом методе первый исполняемый блок должен быть незашифрованным. Код, вызывающий программу дешифрования, помещается внутри каждого из блоков, а программный контроллер для реализации динамической проверки целостности добавляется к концу программы. Если злоумышленник попытается изменить часть программы, хеш-значение для блока, содержащего измененную часть программы, будет другим, поэтому следующий блок не будет правильно дешифрован, и произойдет сбой программы.

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

Раскрытие изобретения

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

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

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

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

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

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

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

На ФИГ.1 представлена упрощенная структурная схема одного из вариантов осуществления настоящего изобретения.

На ФИГ.2 показана блок-схема одного из вариантов осуществления настоящего изобретения.

На ФИГ.3 представлена упрощенная структурная схема, показывающая, как можно управлять переходами или ветвлениями программы согласно одному из вариантов осуществления настоящего изобретения.

Осуществление изобретения

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

Таким образом, в настоящем изобретении предлагается способ обеспечения выполнения программ с защитой от несанкционированного вмешательства в системе, включающей по меньшей мере память программ (РМЕМ) для хранения зашифрованных команд программы (INSTP', INSTC', INSTF'), модуль дешифрования (DECR) для дешифрования указанных команд программы, блок обработки данных (SCPU) для исполнения дешифрованных команд программы (INSTP, INSTC, INSTF) и средство создания ключей дешифрования, известных под названием «ключи команд» (КР, КС, KF) для дешифрования зашифрованных команд программы. Средство создания ключей команд могло бы, конечно, постоянно храниться в блоке обработки данных. Модуль дешифрования и блок обработки данных предпочтительно должны постоянно находиться в модуле безопасности любого типа, которые хорошо известны из предшествующего уровня техники.

При исполнении зашифрованной программы текущая зашифрованная команда (INSTC') считывается из памяти программы (РМЕМ) и дешифруется (DECR) с целью выдачи текущей команды (INSTC) при помощи текущего ключа дешифрования (КС), который создается на основе комбинации (Fn) дайджеста предыдущего ключа дешифрования (КР), с одной стороны, и дайджеста предыдущей выполненной команды (DIG(INSTRP)), с другой стороны, как показано на ФИГ. 1. Под «дайджестом» подразумевают любую операцию, применяемую ко всему операнду или его части и выдающую выходной результат. Следует отметить, что дайджест, выполняемый над операндом, может выдавать выходной результат, равный самому операнду. Согласно одному варианту осуществления настоящего изобретения дайджест включает одностороннюю функцию, выполняемую над операндом. Это позволяет дополнительно препятствовать любой попытке третьей стороны восстановить и получить предыдущие ключи или предыдущие команды. Примером такой односторонней функции является хеш-функция (например, SHA2, MD5). Под «комбинацией» подразумевается любой вид комбинации упомянутых операндов, например логический, арифметический или криптографический. Следовательно, гарантируется защищенность потока и контента, поскольку, если текущая зашифрованная команда не является командой, которая была предусмотрена разработчиком программы, текущий ключ дешифрования (КС), используемый для дешифрования текущей зашифрованной команды, выдаст другое, непредусмотренное значение. Таким образом, мы получаем компонент программного обеспечения, который осуществляет самопроверку, поскольку целостность программы гарантируется просто ее успешным исполнением. Если данная программа подверглась несанкционированному вмешательству, ее исполнение станет невозможным.

На ФИГ.2 показана блок-схема, представляющая один из вариантов осуществления настоящего изобретения. В данном представлении изобретение описано с точки зрения моментального снимка, а не обсуждения текущей команды с ее текущим ключом дешифрования и предыдущей команды с предыдущим ключом и т.д., при этом речь идет только о каком-то ключе команды (К1), который обновляется при исполнении каждой команды. Как обычно делается в любом блоке обработки, счетчик программы (PC) используется для указания адреса ячейки следующей исполняемой команды. Значение счетчика программы увеличивается на единицу после исполнения любой команды либо обновляется иным образом, если указанная команда предписывают другую форму обновления, отличную от простого увеличения на единицу. Например, если команда включает операцию загрузки значения из регистра, то значение счетчика программы обычно просто увеличивается на единицу, чтобы указать следующую ячейку. Однако если команда включает переход к определенной ячейке, счетчик программы будет обновляться посредством записи в него значения адреса ячейки, указываемого операцией перехода.

Сначала выполняется инициализация (INI PC, INI KI) счетчика программы (PC) и ключа команды (KI). Зашифрованная команда считывается из памяти программы по адресу, указанному счетчиком программы (RD INST c.f. PC), и дешифруется при помощи ключа команды (DCPT INST, KI). Команда исполняется (ЕХ INST) и счетчик программы обновляется (UPD PC) либо простым увеличением на единицу, либо путем подстановки нового значения, как предписывается командой. Ключ команды обновляется (UPD KI, INST) при помощи дайджеста исполняемой команды. Таким образом, при обновлении ключа команды учитывается не только команда, которая только что была исполнена, но и значение ключа, которое использовалось для дешифрования этой команды. В свою очередь, ключ команды, который до этого использовался для дешифрования предыдущей команды, был создан на основе предыдущей команды и ключа команды, который использовался для дешифрования команды перед этим. Вследствие этого значение ключа команды зависит не только от последней исполненной команды, но и от всех выполненных до этого команд в совокупности. Фактически, в одном из вариантов осуществления настоящего изобретения, при обновлении ключа команды учитывается значение последней исполненной команды и значения по меньшей мере двух предшествующих исполненных команд. Например, ключ для дешифрования команды 4 мог бы представлять собой комбинацию дайджеста команды 3, дайджеста команды 2 и дайджеста команды 1.

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

При исполнении программы могут возникнуть обстоятельства, при которых к текущей команде (INSTC'), хранящейся в текущей ячейке памяти (С), могут обращаться несколько предыдущих команд (INSTP1, INSTP2). Иными словами, к текущей, или вызываемой, команде могут обращаться несколько (более одной) вызывающих команд, например, когда встречается команда передачи управления (включая, например, переход, ветвление или вызов). На ФИГ. 3 иллюстрируется сценарий, при котором две вызывающих команды (INSTP1, INSTP2) обращаются к одной вызываемой (INSTC). В этом случае, поскольку в связи с различной возможной предысторией ключ команды может иметь два различных значения, могут быть получены два различным результата в зависимости от того, какой ключ будет использоваться для дешифрования зашифрованной вызываемой команды. Это, конечно, не является желательной ситуацией, так как зашифрованная вызываемая команда могла быть зашифрована только одним ключом. Чтобы избежать этой проблемы, в вычисления вносится модификация (CORR1, CORR2), заставляющая итоговый ключ команды принять требуемое значение, чтобы правильно дешифровать вызываемую команду. Например, к вызываемой команде, расположенной в ячейке С, обращаются две различные вызывающие команды, расположенные в ячейках Р1 и Р2. Ключом команды, необходимым для правильного дешифрования зашифрованной команды в ячейке С (INSTC'), является ключ KCIN. Однако значение ключа команды после исполнения команды, расположенной в ячейке Р1 (INSTP1), составляет KР1OUT, а значение ключа команды после исполнения команды, расположенной в ячейке Р2 (INSTP2), составляет KР2OUT. Кроме того, разумно предположить, что KР1OUT не равно KР2OUT, и что ни KР1OUT, ни КР2OUT не равно KCIN. Поэтому данный способ требует выполнения модификации (CORR1, CORR2), позволяющей довести значение ключа команды до необходимого значения всякий раз, когда выполняется команда передачи управления. Поскольку известно как значение ключа, необходимое для дешифрования вызываемой команды (т.е. KCIN), так и значение ключа после исполнения вызывающей команды, существует возможность предвычисления модифицирующего значения для каждой вызывающей команды, причем это модифицирующее значение, используемое в вычислениях, доводит ключ команды до требуемого значения. Затем подходящее модифицирующее значение реализуется при каждой передаче управления, чтобы выполнить необходимую модификацию ключа команды каждый раз, когда используется этот тип команды, причем для каждой вызывающей команды выполняется иная модификация. Согласно одному из вариантов осуществления настоящего изобретения модифицирующее значение вводится в качестве дополнительного операнда в комбинацию предыдущего ключа дешифрования и дайджеста предыдущей команды, как описано выше.

В качестве примера выполнения описанной выше модификации ключа команды рассмотрим команду перехода. В предпочтительном варианте осуществления настоящего изобретения команда перехода содержит параметр назначения, как обычно бывает у команд перехода, а также параметр модификации, например, JMP С, #CORR1. Модифицирующее значение (#CORR1) используется затем в качестве дополнительного параметра в комбинации предыдущего ключа команды и всей предыдущей команды или ее части. Полезно отметить, что, извлекая модифицирующее значение из команды и используя его в качестве дополнительного параметра на шаге образования комбинации, дайджест команды перехода мог бы уже учитывать модифицирующее значение. Приведенная ниже таблица Т1 иллюстрирует состояние ключей команд по мере того, как в процессе выполнения программы реализуется модифицированная команда перехода описанного выше типа. Таблица содержит значение ключа, необходимое для дешифрования команды, и значение ключа после исполнения команды и вычисления нового ключа. Поскольку значение ключа, необходимое для дешифрования команды в метке1, известно, следовательно, соответствующие корректирующие значения CORR1 или CORR2 можно вычислить, чтобы довести немодифицированные величины K4 или K14 до требуемого значения K91.

Т1
Требуемый ключ Метка Команда Итоговый ключ
K1 Команда 1 K2
K2 Команда2 K3
K3 JMP метка1, CORR1 K91=Fn(K4,CORR1)
K11 Команда 11 K12
K12 Команда12 K13
K13 JMP метка1, CORR2 K91=Fn(K14,CORR2)
K91 метка 1 Команда91 K92
K92 Команда92 K93

В другом варианте осуществления настоящего изобретения вместо получения, например, модифицированной команды перехода используется стандартная команда перехода, а модификация ключа команды, описанная выше, выполняется специальной «модифицирующей» командой с модифицирующим значением в качестве параметра. Функция такой модифицирующей команды состоит в том, чтобы воздействовать непосредственно на ключ команды, используя модифицирующее значение. Модифицирующая команда помещается непосредственно перед командой ветвления или перехода, тем самым обеспечивая возможность надлежащего обновления ключа команды, чтобы правильно дешифровать вызываемую команду. Полезно отметить, что функция «модификации», описанная выше, может по существу представлять собой набор команд, предназначенных для выполнения требуемой операции модификации над значением ключа команды. Например, если значение ключа команды, необходимое для правильного дешифрования вызываемой команды, составляет #39, то непосредственно, например, перед командой перехода может помещаться функция «Исключающее ИЛИ» ключа команды (KI), имеющего значение #39, в целях нахождения модифицирующего значения (CORR1), а затем команда суммирования CORR и KI для получения нового (скорректированного) значения KI.

В качестве другого примера, ключ команды на «метке1» вызываемой команды имеет значение К91. В связи с тем, что процесс выполнения программы может следовать разными путями, команда корректировки lnst_CORR добавляется непосредственно перед переходом так, чтобы ключ команды обновлялся до заданного значения К90. Исполнение команды передачи управления, которая в данном случае представляет собой команду перехода, модифицирует ключ команды, изменив его значение с K90 на K91. Как видно из таблицы Т2, корректирующее значение (С1, С2), связанное с командой корректировки (lnst_CORR), предназначено для модификации текущего ключа команды (K3, K13) до заданного значения K90. Вследствие этого исполнение команды перехода обновит ключ команды, изменив его с K90 на K91, значение, используемое для дешифрования команды, расположенной по адресу вызова (метка1).

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

Т2
Требуемый ключ Метка Команда Итоговый ключ
K1 Команда1 K2
K2 Команда2 K3
K3 lnst_CORR, C1 K90=Fn(C1,K4)
K90 Переход (JMP) к метке1 K91
K11 Команда11 K12
K12 Команда12 K13
K13 lnst_CORR, С2 K90=Fn(C2,K14)
K90 Переход (JMP) к метке1 K91
K20 Команда1 K2
K21 Команда2 K3
K22 Inst_CORR, С3 K80=Fn(C3,K23)
K80 Безусловное короткое ветвление (BRA) к метке1 K91
K91 метка Команда91 K92
K92 Команда92 K93

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

Т3
Требуемый ключ Метка Команда Итоговый ключ
K91 L1 Команда1 K2
K2 Команда2 K3
K3 CORR=C1 K90
К90 JMPCONDL1, L2 K91
K11 Команда 11 K12
K12 Команда12 K13
K13 JMP L2, CORR2 K91
K91 L2 Команда91 K92
K92 Команда92 K93

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10. Устройство, содержащее счетчик программы (PC) и память (РМЕМ) для хранения зашифрованной программы, причем указанная зашифрованная программа содержит набор зашифрованных команд (INST), включающих по меньшей мере код операции, а указанное устройство содержит модуль дешифрования (DECR) и блок обработки данных (SCPU) и имеет доступ к инициализированному ключу команды (KI), отличающееся тем, что содержит средство рекурсивного обновления ключа команды (KI) на основе всего указанного ключа команды или его части и дайджеста по меньшей мере одной предыдущей исполненной команды.

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

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



 

Похожие патенты:

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

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

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

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

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

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

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

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

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

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

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

Изобретение относится к криптографии. Технический результат - эффективная защита чипсета. Способ активации функции чипсета включает: принимают по меньшей мере один из следующих элементов: ключ сегментации, ключ общего применения и глобальный селектор криптографического алгоритма; передают по меньшей мере два из следующих элементов: начальное значение, полученный ключ сегментации, ключ общего применения и глобальный селектор криптографического алгоритма, на модуль вычислений, причем начальное значение, полученный ключ сегментации, ключ общего применения и глобальный селектор криптографического алгоритма предоставляются по меньшей мере двумя различными организациями; генерируют в модуле вычислений временный ключ с использованием одного из следующих элементов: по меньшей мере одного криптографического алгоритма модуля вычислений и по меньшей мере двух элементов, выбранных из группы, включающей начальное значение, ключ сегментации, ключ общего применения и глобальный селектор криптографического алгоритма; принимают сообщение об активации с помощью модуля вычислений; принимают код аутентификации указанного сообщения с помощью модуля вычислений, при этом указанный код аутентификации сообщения вычисляется с использованием временного ключа; проверяют аутентичность указанного полученного сообщения с использованием кода аутентификации сообщения и временного ключа; если полученное сообщение является аутентичным, активируют соответствующую функцию чипсета; если полученное сообщение не является аутентичным, запрещают активацию указанной соответствующей функции чипсета. 2 н. и 9 з.п. ф-лы, 1 ил.

Изобретение относится к области аутентификации пользователей. Техническим результатом является повышение эффективности аутентификации пользователей. Способ аутентификации пользователей с защитой от подсматривания заключается в предварительном формировании набора из N графических символов, где N - натуральное число, значение которого ограничено возможным количеством графических символов, которые могут быть размещены на экране с качеством, позволяющим распознать эти графические символы, предоставлении пользователю выбора из этого набора для запоминания группы S секретных графических символов sk, где k=1…К, где К - количество графических символов в группе S, выбираемое с учетом удобства запоминания пользователем, проведении i-го этапа ввода аутентификационной информации, при этом i=1…I, где I - общее число этапов, путем выведения на экран выбранных из набора произвольным образом Ni графических символов, среди которых в произвольном месте располагается si-й секретный символ, выбранный из группы S секретных символов, формировании невидимой секретной области Аi, фиксировании точки hi воздействия пользователя на экран, формировании положительного результата проведения i-го этапа ввода аутентификационной информации при выполнении условия принадлежности зафиксированной точки воздействия невидимой секретной области hi∈Ai и отрицательного - в противном случае, формировании положительного решения об аутентификации после получения положительных результатов проведения всех I этапов ввода пользователем аутентификационной информации и отрицательного - в противном случае, при этом графические символы из набора N располагают на экране в виде таблицы, в которой символы имеют случайные координаты (Xsi,Ysi), где Xsi=1…а и Ysi=1…b (а - количество строк в таблице, b - количество столбцов в таблице), пользователю предоставляют дополнительно для запоминания жест из базы секретных жестов, каждый из которых сформирован парой чисел (d1,d2), где d1 и d2 - натуральные числа, причем d1 и d2 меньше или равно большему значению из а и b (d1,d2≤max{a,b}), при проведении i-го этапа аутентификации, невидимую секретную область Аi формируют в виде совокупности графических символов таблицы, имеющих координаты (ХSi±md1, YSi±md2), где m -натуральное число, при этом md1 и md2 меньше или равны большему значению из а и b (md1,md2≤max{a,b}), а фиксацию точек воздействия пользователя на экран осуществляют путем выбора любого символа из невидимой секретной области. 4 ил.

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

Изобретение относится к области защиты информации от несанкционированного доступа, изменения содержания при хранении и передачи данных. Техническим результатом является повышение защищенности данных организации за счет обнаружения нарушений правил работы с данными путем модификации приложений, работающих с этими данными. Способ обнаружения нарушений правил работы с данными включает в себя: а) модификацию кода приложения путем замены вызова функций, работающих с данными, вызовом функций-обработчиков; б) сбор информации об обращениях модифицированного приложения к функциям, работающим с данными, через вызов соответствующих функций-обработчиков; в) анализ информации, собранной на этапе б), на предмет несоответствия правилам работы с данными, установленными политикой безопасности; г) обнаружение нарушения правил работы с данным на основании анализа. 2 н. и 4 з.п. ф-лы, 8 ил.

Изобретение относится к области информационной безопасности. Техническим результатом является обеспечение гарантированной защиты передаваемой по радиоканалу информации без использования средств ограниченного доступа. Способ гарантированной защиты передаваемой по радиоканалу информации от неправомерного доступа с помощью кодирования информации при открытом хранении параметров кодирования предусматривает организацию рабочего места работы с ПЛИС и/или СБИС, отвечающего требованиям безопасности информации, оборудование которого включает персональный компьютер, датчик случайных чисел, электронное коммутирующее устройство, и выполнение на таком рабочем месте: аппаратной записи индивидуального параметра кодирования на, по меньшей мере, участке однократно программируемой памяти средства защиты передаваемой информации, расположенного в ПЛИС или СБИС, причём индивидуальный параметр кодирования остается в указанной памяти, как неизвестная случайная величина; формирование в ПЛИС или СБИС рабочего параметра кодирования, выделенного для открытой передачи и/или хранения, причем рабочий параметр кодирования формируют с помощью указанного индивидуального параметра кодирования и параметра кодирования, поступившего с оборудования упомянутого рабочего места, при использовании для формирования рабочего параметра и для кодирования информации алгоритма преобразования информации согласно ГОСТ 28147-89. 3 ил.

Изобретение относится к области радиотехники и электроники. Техническим результатом является повышение надёжности защиты информации от несанкционированного доступа и потери информации в результате побочных электромагнитных излучений и наводок. Устройство защиты компьютеров содержит: печатную плату 14 с элементами схемы, контакты электропитания устройства защиты компьютеров 1 и 2, контакты электропитания ГШС 3 и 4, контакт выхода 1 ГШС 5, контакт выхода 2 ГШС 6, ГШС 7, усилитель низких частот 8, усилитель средних частот 9, усилитель высоких частот 10, фильтр верхних частот (ФВЧ) 11, амплитудный детектор 12, устройство звуковой сигнализации 13, электродинамический излучатель звуковых сигналов 15, переменные резисторы R2, R3, R4, R5, разделительные конденсаторы C1, С2, С3, контакты устанавливаемых перемычек П1, П2, П3. 2 з.п. ф-лы, 2 ил., 1 табл.

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

Изобретение относится к области вычислительной техники, а именно к области защиты от несанкционированного доступа (НСД) к информации, создаваемой и хранимой в компьютерных системах (КС). Технический результат - расширение функциональных возможностей системы контроля доступа к ресурсам, за счет реализации сессионного контроля доступа к ресурсам, в которой субъект доступа задается тремя сущностями "сессия, пользователь, процесс". Система сессионного контроля доступа к ресурсам, содержащая блок идентификации пользователя из запроса, блок идентификации объекта доступа и действия из запроса, блок идентификации процесса из запроса, блок идентификации и аутентификации пользователя, блок выбора сессии пользователем, блок решающего элемента, блок хранения правил доступа, причем вход блока идентификации пользователя из запроса соединен со входом блока идентификации объекта доступа и действия из запроса, со входом блока идентификации процесса из запроса, с первым входом системы, выход блока идентификации пользователя из запроса соединен с первым входом блока решающего элемента, второй вход которого - с выходом блока идентификации объекта доступа и действия из запроса, третий вход - с выходом блока хранения правил доступа, первый выход - с первым выходом системы, второй выход - с первым входом блока хранения правил доступа, второй вход которого - со вторым входом системы, четвертый вход блока решающего элемента 6 соединен с выходом блока идентификации процесса из запроса, пятый вход - с первым выходом блока выбора сессии пользователем, второй выход которого - со вторым выходом системы, вход/выход блока идентификации и аутентификации пользователя соединен с первым входом/выходом системы, вход/выход блока выбора сессии пользователем - со вторым входом/выходом системы, третий вход блока выбора сессии пользователем соединен со вторым входом блока идентификации и аутентификации пользователя, со вторым входом системы, выход блока идентификации и аутентификации пользователя соединен с шестым входом блока решающего элемента, со вторым входом блока выбора сессии пользователем. 1 табл., 2 ил.

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