способ защиты входных адресов

Классы МПК:G06F12/14 защита от обращений к памяти посторонних пользователей
Автор(ы):, ,
Патентообладатель(и):ИНФИНЕОН ТЕКНОЛОДЖИЗ АГ (DE)
Приоритеты:
подача заявки:
1999-10-01
публикация патента:

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

Формула изобретения

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

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

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

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

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

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

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

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

9. Способ по п. 8, отличающийся тем, что в качестве предварительно определенной байтовой последовательности применяют предварительно определенный холостой код.

10. Способ по любому из пп. 5-9, отличающийся тем, что выполняют непосредственный переход к входному адресу.

Описание изобретения к патенту

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

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

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

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

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

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

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

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

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

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

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

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

Возможны также следующие предпочтительные варианты осуществления изобретения:

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

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

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

Возможная реализация предусматривает следующее. Непосредственно перед входным адресом функции находится значение, которое является функцией следующих за ним n+m (mспособ защиты входных адресов, патент № 22167700, а в остальном любых) байтов. Если такая корреляция случайно будет выполнена где-либо в коде, то компилятор или соответственно компоновщик должен исключить эту случайную корреляцию. Так как в последовательности n+m байтов в соответствии с принятым условием заканчивается по меньшей мере одна действительная команда, то после ее конца может добавляться ряд холостых команд до тех пор, пока значение функции не изменится. Функция может при этом в пределах известных границ выбираться свободным образом.

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

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

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

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

Класс G06F12/14 защита от обращений к памяти посторонних пользователей

способ скрытного хранения конфиденциальных данных в защищенной энергонезависимой памяти и устройство для его реализации -  патент 2527758 (10.09.2014)
способ разрушения интегральных схем памяти носителей информации -  патент 2527241 (27.08.2014)
система контроля доступа к файлам на основе их автоматической разметки -  патент 2524566 (27.07.2014)
устройство для внедрения водяного знака в информационное представление, детектор для обнаружения водяного знака в информационном представлении, способ и компьютерная программа и информационный сигнал -  патент 2510937 (10.04.2014)
способ обнаружения вредоносного программного обеспечения в ядре операционной системы -  патент 2510075 (20.03.2014)
система и способ проверки исполняемого кода перед его выполнением -  патент 2510074 (20.03.2014)
устройство хранения данных (варианты) -  патент 2506633 (10.02.2014)
система защиты информации от несанкционированного доступа к информации, содержащей сведения, составляющие государственную тайну -  патент 2504835 (20.01.2014)
система и способ для обнаружения вредоносных программ -  патент 2497189 (27.10.2013)
использование защищенного устройства для обеспечения безопасной передачи данных в небезопасных сетях -  патент 2494448 (27.09.2013)
Наверх