СПОСОБ ЗАЩИТЫ ИСПОЛНЕНИЯ ПРОГРАММЫ
METHOD FOR PROTECTION OF PROGRAMME EXECUTION

Настоящее изобретение касается способа защиты исполнения программы микропроцессором, в частности микропроцессором карты-носителя данных, такой как банковская карта или электронная идентификационная карта.
Уровень техники
Такая карта содержит интегральную схему, как правило, содержащую микропроцессор, энергозависимую память и энергонезависимую память. Энергонезависимая память содержит персональные данные, такие как данные лица, которому выдана карта, секретный идентификационный код, банковская информация и т.д. и, по меньшей мере, одну главную программу, обеспечивающую обмен данными между картой и считывающим устройством терминала, с которым ее можно соединять, такого как автомат продажи билетов или платежный терминал. Эта главная программа выполняет несколько вложенных функций, позволяющих, в частности, вводить в терминал некоторые персональные данные, считывать код, вводимый пользователем в терминал, осуществлять вычисления над кодом, например, криптографические вычисления или вычисления для аутентификации, передавать в терминал данные аутентификации. Эти функции вложены друг в друга в том смысле, что первая функция в ходе исполнения обращается ко второй функции, которая в ходе исполнения обращается к третьей функции и т.д.; возврат к исполнению второй функции, затем первой функции происходит последовательно после завершения исполнения третьей функции и второй функции соответственно. Для обеспечения возврата к обращающейся функции микропроцессор управляет стеком запроса функций, который позволяет сохранять обратный адрес при каждом обращении" к функции таким образом; чтобы в конце исполнения вызываемой функции микропроцессор считывал адрес, сохраненный в стеке запроса функций, и размещал в нем свой маркер исполнения для продолжения исполнения обращающейся функции.
В этих картах одной из критических функций с точки зрения безопасности является уменьшение значения счетчика после каждой неудачной операции аутентификации, задачей которой является сверка идентичности кода, считываемого терминалом, с секретным идентификационным кодом, хранящимся в интегральной схеме карточки. Это число в случае банковской карты обычно равно трем, тогда как сам код содержит четыре цифры. Счетчик с уменьшенным таким образом значением устанавливают на первоначальное значение после удачной проверки кода. С другой стороны, после трех неудачных попыток проверки кода интегральная схема блокируется. Существует способ взлома, который состоит в нарушении работы карточки в конце операции аутентификации с целью блокировки функции, обеспечивающей уменьшение значения счетчика. Понятно, что, если эта функция не завершена, хакер может опробовать все возможные комбинации из четырех цифр, чтобы найти верную комбинацию.
Другой способ взлома состоит в нарушении работы микропроцессора, чтобы вызвать сбои в его работе, позволяющие получить данные, которые обычно должны оставаться секретными. Например, после обращения к функции со стороны обращающейся функции можно вернуться к исполнению обращающейся функции до завершения исполнения вызываемой функции.
Объект изобретения
Настоящее изобретение призвано предложить средство, позволяющее защитить исполнение программы, предусматривающее обращение к вложенным друг в друга функциям.
Сущность изобретения
В этой связи объектом настоящего изобретения является способ защиты исполнения главной программы, применяющей вложенные друг в друга функции, содержащий следующие этапы:
- исполняют программу управления защитой, выполненную с возможностью обновления списка текущих функций,
- сообщают программе управления защитой о начале исполнения каждой функции и обновляют список текущих функций,
- сообщают программе управления защитой о завершении исполнения каждой функции,
- после каждого сообщения о завершении исполнения функции проверяют, что эта функция действительно является последней, начавшей исполнение функцией,
- в случае неудачной проверки осуществляют защитное действие, выбираемое в зависимости от уровня защиты, назначенного для каждой функции.
Таким образом, список, который ведет программа управления защитой, позволяет обнаружить нарушение в работе главной программы, в частности, при обращении к функциям.
Предпочтительно защитное действие состоит, например, в передаче тревожного сигнала или в остановке главной программы.
Согласно частному варианту выполнения список функций представляет собой таблицу, содержащую последовательность полей, предназначенных для внесения в них идентификатора функций, при этом способ содержит следующие этапы:
- инициализируют поля,
- при сообщении о начале исполнения функции идентификатор функции записывают в первое свободное поле.
Этот вариант выполнения является исключительно простым и эффективным, и его осуществление требует ограниченного использования вычислительных ресурсов и ресурсов памяти.
Предпочтительно при сообщении о завершении исполнения вызываемой функции способ содержит этап, на котором вызываемую функцию сохраняют в памяти, и обращающаяся функция проверяет в программе управления защитой, что последняя исполненная функция является вызываемой функцией.
Другие отличительные признаки и преимущества изобретения будут более очевидны из нижеследующего описания неограничительного частного варианта выполнения изобретения.
Краткое описание чертежей
Это описание представлено со ссылками на прилагаемые чертежи, на которых:
Фиг.1 - схематичный вид карты данных, используемой для осуществления способа в соответствии с настоящим изобретением.
Фиг.2 - схема исполнения главной программы в рамках способа в соответствии с настоящим изобретением.
Фиг.3 - схема исполнения программы управления защитой в рамках способа в соответствии с настоящим изобретением.
Подробное описание изобретения
Описание настоящего изобретения в данном случае представлено и показано на чертежах для карты 1 данных, содержащей интегральную схему, обозначенную в целом позицией 2 и содержащую микропроцессор 3, соединенный с энергозависимой памятью 4 (например, типа RAM ("Оперативное запоминающее устройство") и с энергонезависимой памятью 5, например, типа EEPROM ("Электрически стираемое программируемое постоянное запоминающее устройство") или ROM ("Постоянное запоминающее устройство").
Энергонезависимая память 5 содержит главную программу, обозначенную на фиг.2 позицией 6, применяющую вложенные друг в друга функции F1, F2, F3. Функция F1 выполнена с возможностью обращения во время своего исполнения к функции F2, которая, в свою очередь, выполнена с возможностью обращения во время своего исполнения к функции F3. В конце исполнения функции F3 исполнение функции F2 продолжается, и в конце исполнения функции F2 продолжается исполнение функции F1. Характер функций F1, F2 и F3 не имеет большого значения, и эти функции обеспечивают, например, операции считывания кода, вводимого в терминал, с которым связана электронная карта, операции вычисления, проверки этого кода, шифрования, увеличения или уменьшения значения счетчика, копирования из одной памяти в другую.
Каждая функция F1, F2 и F3 имеет идентификатор ID-F1, ID-F2 и ID-F3, обозначающий однозначным образом указанные функции. Идентификатор функций построен таким образом, чтобы содержать в закодированном виде данные, характерные для функции, и, в частности, ее уровень защиты.
Кроме того, энергонезависимая память 5 содержит программу управления защитой, обозначенную на фиг.3 позицией 7 и выполненную с возможностью обновления списка функций в ходе исполнения или стека запроса функций. Этот список представляет собой таблицу 8, содержащую последовательность полей 9, предназначенных для внесения в них идентификации функций в ходе исполнения. Программа 7 управления защитой (сама по себе известна, поэтому ее подробное описание опускается) использует индекс для указания первого свободного поля стека. Кроме того, программа управления защитой имеет доступ к таблице, связывающей защитные действия, предназначенные для осуществления, в зависимости от уровней защиты, закодированных в идентификаторе функций.
Далее следует описание способа в соответствии с настоящим изобретением.
Во время работы, когда микропроцессор 3 карточки исполняет главную программу 6, он одновременно исполняет программу 7 управления защитой.
При запуске происходит инициализация полей 9 таблицы 8 путем записи в них значения по умолчанию, в данном случае NOFCT, и индекс указывает на первое поле (называемое также свободным полем), содержащее это значение по умолчанию.
Когда главная программа исполняет функцию F1, функция F1 передает сообщение о начале своего исполнения в программу 7 управления защитой через интерфейс FUNCTION-BEGIN (такой интерфейс сам по себе известен). При этом программа 7 управления защитой записывает идентификатор ID-F1 функции F1 в первое свободное поле 9 таблицы 8 и помещает свой индекс на следующее поле 9, которое становится первым свободным полем.
Когда функция F1 обращается к функции F2, функция F2 сообщает о начале своего исполнения в программу управления защитой через интерфейс FUNCTION-BEGIN. Программа 7 управления защитой записывает идентификатор функции F2 (в данном случае ID-F2) в указанное поле 9, затем помещает индекс в следующее поле 9.
Когда функция F2 обращается к функции F3, функция F3 сообщает о начале своего исполнения в программу 7 управления защитой, которая записывает в указанное индексом поле идентификатор ID-F3 функции F3 и помещает индекс в следующее поле 9.
Когда исполнение функции F3 завершается, функция F3 сообщает о завершении своего исполнения в программу 7 управления защитой через интерфейс FUNCTION-END (такой интерфейс сам по себе известен). При этом программа 7 управления защитой проверяет, что функция F3, сообщающая о завершении своего исполнения, является последней, начавшей свое исполнение. Если это так, исполнение функции F2 продолжается до конца, при этом функция F2 сообщает в программу 7 управления защитой о завершении своего исполнения через интерфейс FUNCTION-END. Программа 7 управления защитой проверяет, что функция F2, сообщающая о завершении своего исполнения, является последней, начавшей свое исполнение. Если это так, исполнение функции F1 продолжается до конца.
Если функция, сообщающая в программу 7 управления защитой о завершении своего исполнения, не является последней, начавшей это исполнение, программа 7 управления защитой осуществляет защитное действие. В данном случае это защитное действие представляет собой тревожный сигнал, передаваемый в главную программу 6, которая прекращает свое исполнение. Защитное действие может заключаться также в блокировке карты, при этом разблокировку может произвести, например, только организация, выпустившая карты, после проверки личности ее владельца. Защитным действием может быть также защитная контрмера. Под защитной контрмерой следует понимать средство, позволяющее, в частности, избежать считывания информации хакером, например, следующим образом:
- изменяя частоту тактового генератора,
- вводя случайные команды для изменения продолжительности исполнения кода, электромагнитных импульсов или потребления энергии во время исполнения кода.
В начале исполнения функции на основании идентификатора функции программа управления защитой определяет, какое(ие) защитное(ные) действия или защитную(ые) контрмеру(ы) следует активировать. В варианте, когда исполнение функции завершается, тогда как эта функция не является последней функцией, начавшей исполнение, программа управления защитой может на основании идентификатора этой функции определить предназначенное для исполнения защитное действие.
Программа управления защитой может быть также выполнена с возможностью активации, по меньшей мере, одной защитной контрмеры в начале исполнения функции. В этом случае предпочтительно определяют идентификатор функции для указания программе управления защитой о необходимости активации такой меры, не обязательно уточняя характер этой контрмеры (эта контрмера может быть одинаковой для всех функций, требующих этой активации).
В еще одном варианте способ может содержать этап сохранения в памяти последней исполненной функции, когда эта функция сообщает о завершении своего исполнения. Функция, обратившаяся к последней исполненной функции, может в этом случае запросить программу управления защитой проконтролировать соответствие между номинальным исполнением программы и реальным исполнением. В описанном выше примере, когда функция F3 сообщает о завершении своего исполнения, функция F2 может запросить программу управления защитой проверить, является ли функция F3 действительно завершившей свое исполнение функцией.
Разумеется, настоящее изобретение не ограничивается описанным вариантом выполнения, и в него можно включать варианты выполнения, не выходя за рамки изобретения, определенные формулой изобретения.
В частности, согласно одному из вариантов, можно предусмотреть таблицу возможных запросов функций для каждой функции главной программы. Например, если функция F2 обращается к функции F3, программа управления защитой поверяет, имеет ли право функция F2 обращаться к функции F3. Можно также включать функции в группы и создавать идентификатор функций, связывающий их с группами, к которым они принадлежат, чтобы программа управления защитой могла убедиться, что обращающиеся друг к другу функции принадлежат к одной группе.