Способ защиты хода выполнения программы

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чертежи

Ниже изобретение более подробно рассмотрено со ссылкой на прилагаемые чертежи, на которых показано:

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

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

на фиг.3 - блок-схема, иллюстрирующая процесс проверки с помощью таймера.

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

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

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

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

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

На фиг.2 показана блок-схема, иллюстрирующая возможность защиты программы от несанкционированного вмешательства в ход ее выполнения путем проверки адресов возврата. Адреса возврата при вызове функции помещаются аппаратными средствами в стек. Таким образом, в рассматриваемом случае при вызове на шаге 11 подпрограммы от вызывающей программы этой подпрограмме также передается некоторая информация (например, адреса возврата). В соответствии с изобретением эти адреса возврата помещаются в таблицу 17 и при вызове подпрограммы сначала на шаге 12 адреса возврата при условии их сохранения в ЗУПВ проверяются на связность, а затем на шаге 13 проверяются по таблице 17. Если на шаге 14 будет установлено, что переданный адрес возврата не содержится в таблице, то на шаге 15 выполнение программы прекращается; в противном случае на шаге 16 начинается выполнение вызванной функции (функциональной программы).

В показанном на фиг.3 варианте контроль за корректным выполнением программы, соответственно контроль за отсутствием несанкционированного вмешательства в ход ее выполнения осуществляется с помощью таймера. Непосредственно после вызова подпрограммы на шаге 21 на следующем шаге 22 запускается таймер. Подобный таймер рассчитан на измерение времени, соответственно на отсчет количества тактов, необходимых для выполнения подпрограммы. После запуска таймера на шаге 22 на следующем шаге 23 выполняется предусмотренная подпрограммой функция и по завершении выполнения этой функции таймер на шаге 24 останавливается. На шаге 25 количество тактов, потребовавшихся на выполнение предусмотренной этой подпрограммой функции, сравнивается с заданным (эталонным) количеством тактов, требуемых на ее выполнение. При отсутствии совпадения между указанными количествами тактов выполнение программы на следующем шаге 26 прекращается. В противном случае выполнение программы на шаге 27 продолжается, например, с возвратом в основную программу.

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

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

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

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

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

3. Способ по п.1 или 2, отличающийся тем, что адреса возврата вызывающей функции размещают в таблице, при этом вызванная программа проверяет переданный ей от вызывающей программы адрес возврата (шаг 13), проверяя наличие этого адреса возврата в указанной таблице.

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

5. Способ по п.4, отличающийся тем, что показания таймера считывают (шаг 24) на определенных заданных стадиях выполнения программы и сравнивают (шаг 25) с некоторым также заданным промежуточным значением, при превышении которого выполнение программы прекращают (шаг 26).



 

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

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

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

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

Изобретение относится к цифровой вычислительной технике и может быть использовано в автоматизированных системах для контроля ЭВМ. .

Изобретение относится к способу и устройству контроля арифметического логического модуля (АЛМ) в транспортном средстве. .

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

Изобретение относится к носителю записи для записи аудио- и видеоданных, к устройству для редактирования указанных данных и к устройству для записи этих данных. .

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

Изобретение относится к устройству и способу выработки команд управления приводами самолета. .

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

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

Изобретение относится к автоматике и вычислительной технике и может быть использовано при построении управляющих и вычислительных систем высокой производительности, АСУТП, а также других систем, к которым предъявляются жесткие требования по надежности

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

Изобретение относится к системам контроля и, в частности, к системам контроля работы лазеров

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

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

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

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

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

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