Патент на изобретение №2258252

Published by on




РОССИЙСКАЯ ФЕДЕРАЦИЯ



ФЕДЕРАЛЬНАЯ СЛУЖБА
ПО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ,
ПАТЕНТАМ И ТОВАРНЫМ ЗНАКАМ
(19) RU (11) 2258252 (13) C2
(51) МПК 7
G06F12/14, G06F9/445
(12) ОПИСАНИЕ ИЗОБРЕТЕНИЯ К ПАТЕНТУ

Статус: по данным на 18.01.2011 – действует

(21), (22) Заявка: 2003105234/09, 25.07.2000

(24) Дата начала отсчета срока действия патента:

25.07.2000

(43) Дата публикации заявки: 20.07.2004

(45) Опубликовано: 10.08.2005

(56) Список документов, цитированных в отчете о
поиске:
EP 778520 A2, 11.06.1997.
RU 2067313 C1, 27.09.1996.
WO 00114631 A1, 16.03.2000.
US 5559884 A, 24.09.1996.
RU 2148856 C1, 10.05.2000.

(85) Дата перевода заявки PCT на национальную фазу:

25.02.2003

(86) Заявка PCT:

US 00/20182 (25.07.2000)

(87) Публикация PCT:

WO 02/08873 (31.01.2002)

Адрес для переписки:

129010, Москва, ул. Б. Спасская, 25, стр.3, ООО “Юридическая фирма Городисский и Партнеры”, пат.пов. Ю.Д.Кузнецову, рег.№ 595

(72) Автор(ы):

БОДРОВ Дмитрий (US)

(73) Патентообладатель(и):

МАКРОВИЖН КОРПОРЕЙШН (US)

(54) СИСТЕМА И СПОСОБ ПРОВЕРКИ ПОДЛИННОСТИ ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫХ ИСПОЛНЯЕМЫХ ОБРАЗОВ

(57) Реферат:

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

ОБЛАСТЬ ТЕХНИКИ

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

ОПИСАНИЕ ПРЕДШЕСТВУЮЩЕГО УРОВНЯ ТЕХНИКИ

В настоящее время новые объектные модели обеспечивают динамическую интеграцию приложений во время выполнения. Например, Windows, операционная система, лицензированная компанией Microsoft, предусматривает динамическую интеграцию прикладной программы с динамически загружаемой библиотекой во время выполнения прикладной программы. После пользовательского запроса на выполнение прикладной программы, загрузчик программы копирует “дисковый образ” (образ на диске) прикладной программы из запоминающего устройства на магнитном диске в оперативную память, чтобы создать “образ процесса”. Дисковый образ относится к исполняемому образу до загрузки, тогда как образ процесса относится к исполняемому образу после загрузки в память. И дисковый образ, и образ процесса типично включают в себя раздел адресной привязки, который идентифицирует, для какой части программного обеспечения должна быть осуществлена адресная привязка для ссылки к динамически загружаемой библиотеке во время выполнения.

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

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

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

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

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

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

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

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

ОПИСАНИЕ СИСТЕМЫ

Фиг.1 – укрупненная структурная схема, иллюстрирующая компьютер 90. Компьютер 90 имеет возможность осуществления проверки подлинности по отношению к одному или более исполняемым образам 100, которые выполняются на компьютере 90.

Компьютер 90 может использовать любой обычный универсальный одно- или многокристальный микропроцессор, такой как процессор Pentium, процессор Pentium Pro, процессор 8051, процессор MPS (мультипроцессорная система), процессор Power PC или процессор ALPHA. Кроме того, компьютер 90 может использовать любой обычный специальный микропроцессор, такой как процессор цифровой обработки сигналов или графический процессор.

Компьютер 90 включает в себя операционную систему 95 и память 108. Операционная система может быть обеспечена любым производителем операционной системы и может включать в себя: UNIX, LINUX, дисковую операционную систему (ДОС, DOS), OS/2, Windows 3.X, Windows 95, Windows 98 и Windows NT. Для удобства описания ниже сформулирован вариант осуществления изобретения относительно Windows 95.

Компьютер 90 связан с одним или более источниками 107 исполняемого образа, которые обеспечивают передачу исполняемого образа 100 на компьютер 90. Как показывается на фиг.1, типичные средства обеспечения передачи исполняемого образа включают в себя сервер 110, сеть Интернет 114, базу данных 118, сеть 122, аппаратное устройство 126 и/или съемное запоминающее устройство 130.

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

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

Сеть 122 может включать в себя любую связанную с помощью электроники группу компьютеров, которая включает в себя, например, следующие сети: корпоративная локальная сеть (интранет), локальные сети (ЛС) или глобальные сети (ГС). Кроме того, обеспечение связи с сетью может осуществляться, например, через удаленный модем, оборудование стандарта Ethernet (спецификация института инженеров по электротехнике и электронике IEEE 802.3), Token Ring (спецификация IEEE 802.5), распределенный интерфейс передачи данных по волоконно-оптическим каналам (FDDI) или средства асинхронной передачи данных (АПД). Следует обратить внимание, что вычислительные устройства могут быть настольным компьютером, сервером, переносным компьютером, карманным компьютером, компьютерной приставкой или иметь любую другую требуемую конфигурацию. Аппаратное устройство 126 может быть логической микросхемой (чипом), постоянным запоминающим устройством (ПЗУ), оперативной памятью (ОП), интеллектуальной картой или центральным процессором. Съемное запоминающее устройство 130 может быть гибким диском, компакт-диском, жестким диском, накопителем на магнитной ленте, ПЗУ или другим существующим носителем данных.

Фиг.2 – структурная схема, иллюстрирующая средство 204 подтверждения подлинности. В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности является исполняемым образом, подобным по формату исполняемому образу 100. В другом варианте осуществления изобретения средство 204 подтверждения подлинности объединено с исполняемым образом 100. В еще одном варианте осуществления изобретения средство 204 подтверждения подлинности объединено с загрузчиком 208 программы. Одной из функций загрузчика 208 программы является копирование исполняемого образа 100 из запоминающего устройства 105 (фиг.1) в память 108 и связывание кода и указателей данных с соответствующим адресом перед выполнением исполняемого образа 100. Для удобства описания в последующем описании предполагается, что средство 204 подтверждения подлинности является отдельной прикладной программой, которая отличается от исполняемого образа 100 и загрузчика 208 программы.

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

Средство 204 подтверждения подлинности и загрузчик 208 программы (фиг.1) могут быть написаны на любом языке программирования, таком как C, C++, БЕЙСИК, Паскаль, Java и ФОРТРАН. C, C++, БЕЙСИК, Паскаль, Java и ФОРТРАН являются языками программирования промышленного стандарта, для которых могут использоваться множество коммерческих компиляторов и интерпретаторов для создания исполняемого кода.

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

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

Фиг.3 является диаграммой, иллюстрирующей более подробно внутреннюю структуру исполняемого образа 100 согласно одному из вариантов осуществления, который был сформирован в качестве динамически связанной библиотеки и который был сохранен в запоминающем устройстве 105 (фиг.1).

Исполняемый образ 100 включает в себя множество разделов, которые включают в себя раздел 300 заголовка, раздел 304 кода, раздел 308 данных, таблицу 312 импорта, таблицу 316 перераспределения и таблицу 320 экспорта. Также следует отметить, что исполняемый образ 100 включает в себя множество указателей, которые описаны более подробно ниже. Однако в общем случае, указатель является ссылкой, которая идентифицирует адрес ячейки в памяти 108 или абсолютно по отношению к памяти 108 (фиг.1), или относительно по отношению к адресу другой ячейки памяти.

Раздел 300 заголовка идентифицирует относительный адрес других разделов и/или таблиц, которые находятся в исполняемом образе 100. Раздел 304 кода включает в себя скомпилированный машинный код для исполняемого образа 100. Например, раздел 304 кода включает в себя машинные команды для компьютера 90 (фиг.1). Как показано на фиг.3, раздел 304 кода включает в себя команды, которые ссылаются на другие разделы в пределах исполняемого образа 100 так же, как вне исполняемого образа 100. Как показывается с помощью блока 320, раздел 304 кода включает в себя команды для назначения номера “2” глобальной переменной “i”. Однако абсолютный адрес переменной “i”, которая хранится в запоминающем устройстве 105 (фиг.1), не определен в памяти 108, так как исполняемый образ 100 еще не был загружен в память 108 (фиг.1). Кроме того, раздел 304 кода включает в себя команду для вызова функции foo (). Запрос к процедуре foo () включает в себя указатель импорта, который ссылается на адрес памяти в пределах таблицы 312 импорта.

Раздел 308 данных используется для хранения содержимого любых глобальных переменных, которые идентифицируются в разделе 304 кода. Таблица 312 импорта включает в себя различные элементы информации для того, чтобы помочь загрузчику 208 программы (фиг.2) при соединении исполняемого образа 100 с другим исполняемым образом. Таблица 312 импорта включает в себя идентификатор, такой как имя, для каждой из процедур, которые поддерживаются другими исполняемыми образами, имя исполняемого образа и один или более внешних указателей, которые ссылаются на адреса, которые поддерживаются внешними процедурами. Таблица 312 импорта после того, как она сохранена на запоминающем устройстве 105 (фиг.1), уже не ссылается на адрес процедуры foo ().

Таблица 316 перераспределения идентифицирует позицию каждой из частей раздела 304 кода, для которых необходимо выполнить «адресную привязку» после загрузки исполняемого образа 100. Используемый термин «адресная привязка» относится к процессу изменения исполняемого образа 100 в памяти таким образом, что любой из непреобразованных указателей ссылался на соответствующие данные и/или адрес кода. После того, как для указателя была выполнена адресная привязка с помощью загрузчика 208 программы, говорят, что он “связан” с выбранным адресом.

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

Средство 204 подтверждения подлинности (фиг.2) определяет эталонную цифровую подпись относительно исполняемого образа 100, когда он хранится на запоминающем устройстве 105. Процесс генерации эталонной подписи описан более подробно со ссылками на фиг.6. В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности определяет эталонную цифровую подпись относительно всего исполняемого образа 100, исключая указатели, для которых необходимо выполнить адресную привязку с помощью загрузчика 208 программы (фиг.2). В другом варианте осуществления изобретения средство 204 подтверждения подлинности определяет эталонную цифровую подпись относительно выбранных разделов, таких как раздел 304 кода и/или таблица 312 импорта исполняемого образа 100, исключая адреса, для которых необходимо выполнить адресную привязку с помощью загрузчика 208 программы.

Фиг.4 – диаграмма, иллюстрирующая исполняемый образ 100 после того, как для него была выполнена адресная привязка относительно исполняемого образа 200. Как можно заметить при рассмотрении фиг.4, указатель данных для переменной “i” был связан с адресом в разделе 308 данных согласно информации адресной привязки, содержащейся в таблице 316 перераспределения. Дополнительно, внешний указатель в таблице 312 импорта был связан с таблицей экспорта в исполняемом образе 200. Указатель экспорта адреса ссылки на таблицу экспорта второго исполняемого образа 200 был связан с фактическим адресом памяти процедуры foo (), которая находится в исполняемом образе 200.

После выполнения привязки средство 204 подтверждения подлинности (фиг.2) выполняет различные проверки на подлинность по отношению к исполняемому образу 100. Каждая из этих проверок на подлинность описана более подробно со ссылками на фиг.5 и 6. Однако, вкратце, средство 204 подтверждения подлинности выполняет следующие функции.

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

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

Фиг.5 – последовательность операций, иллюстрирующая процесс проверки подлинности исполняемого образа 100. Начиная работу на этапе 600, средство 204 подтверждения подлинности (фиг.2) принимает запрос на определение подлинности исполняемого модуля 100 (фиг.1). В одном из вариантов осуществления изобретения запрос генерируется загрузчиком 208 программы. В другом варианте осуществления изобретения запрос генерируется операционной системой 95 (фиг.1). В еще одном варианте осуществления изобретения запрос генерируется исполняемым образом (не показан), выполняющимся на компьютере 90 (фиг.1). В еще одном варианте осуществления изобретения запрос генерируется подпрограммой, которая находится в средстве 204 подтверждения подлинности.

Продолжая работу на этапе 604, средство 204 подтверждения подлинности (фиг.2) идентифицирует каждый из указателей в пределах исполняемого образа 100, для которых необходимо выполнить адресную привязку. В одном из вариантов осуществления изобретения, если должна быть определена подлинность только выбранных разделов в исполняемом образе 100, то средство 204 подтверждения подлинности идентифицирует только те указатели, которые попадают в пределы выбранных разделов исполняемого образа 100. Например, средство 204 подтверждения подлинности может быть сконфигурировано для идентификации только тех указателей, которые попадают в раздел 304 кода (фиг.3) или таблицу 312 импорта (фиг.3).

В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности анализирует таблицу 316 перераспределения для идентификации каждого из этих указателей (фиг.3). Как описано выше со ссылкой на фиг.3, таблица 316 перераспределения идентифицирует расположение адреса относительно базового адреса исполняемого образа 100. Проверяя таблицу 316 перераспределения, средство 204 подтверждения подлинности может идентифицировать, какие части раздела 304 кода изменяются загрузчиком 208 программы во время загрузки.

Продолжая работу на этапе 608, средство 204 подтверждения подлинности (фиг.2) генерирует эталонную цифровую подпись по отношению к исполняемому образу 100 (фиг.1). Цифровая подпись, как используется здесь, определяется таким образом, чтобы она включала в себя любую методологию для идентификации содержимого выбранного набора данных. В своей самой простой форме цифровая подпись может включать в себя полную копию выбранного набора данных, который должен быть подписан. Однако цифровая подпись может также включать в себя результаты выполнения хеш-функции, которая была применена к выбранному набору данных. Дополнительно, цифровая подпись может быть цифровым сертификатом. Специалист должен признать, что для генерации эталонной цифровой подписи может использоваться одна из множества стандартных хеш-функций.

Снова обращаясь к этапу 608, в одном из вариантов осуществления изобретения средство 204 подтверждения подлинности определяет эталонную цифровую подпись, основываясь на содержимом всего исполняемого образа 100, исключая адреса, которые нуждаются в адресной привязке с помощью загрузчика 208 программы (фиг.2). В другом варианте осуществления изобретения средство 204 подтверждения подлинности определяет эталонную цифровую подпись на основании содержимого выбранных разделов, таких как раздел 304 кода и/или таблица 312 импорта, исключая адреса, которые передаются в адресной привязке с помощью загрузчика 208 программы.

Переходя к этапу 612, средство 204 подтверждения подлинности (фиг.2) сохраняет эталонную цифровую подпись для последующего восстановления. В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности хранит эталонную цифровую подпись в запоминающем устройстве 105 (фиг.1). В другом варианте осуществления изобретения средство 204 подтверждения подлинности хранит эталонную цифровую подпись в выбранном разделе исполняемого образа 100, таком как таблица ресурсов (не показана). В еще одном варианте осуществления изобретения эталонная цифровая подпись присоединяется к исполняемому образу 100. В еще одном варианте осуществления изобретения эталонная цифровая подпись хранится в базе данных, на сетевом сервере или в сети 122 (фиг.1). В еще одном варианте осуществления изобретения эталонная цифровая подпись создается до того, как обеспечивается передача исполняемого образа 100 на компьютер 90. В этом варианте осуществления эталонная цифровая подпись может генерироваться любым из описанных выше способов.

Затем, на этапе 614 средство 204 подтверждения подлинности (фиг.2) определяет подпись проверки подлинности исполняемого образа 100 после или до того, как исполняемый образ 100 был загружен загрузчиком 208 программы в память 108 (фиг.2). На этом этапе средство 204 подтверждения подлинности повторно применяет хеш-функцию, которая была применена средством 204 подтверждения подлинности на этапе 608. Средство 204 подтверждения подлинности может быть выполнено таким образом, чтобы определять подлинность цифровой подписи после возникновения одного или более выбранных условий, таких как: истечение времени таймера, самотестирование подлинности исполняемого образа 100, время простоя компьютера 90 (фиг.1) или при запросе исполняемого образа 100.

Продолжая работу на этапе 618 принятия решения, средство 204 подтверждения подлинности (фиг.2) определяет, соответствует ли эталонная цифровая подпись (сгенерированная на этапе 608) цифровой подписи проверки подлинности (сгенерированной на этапе 614). Если эталонная цифровая подпись не соответствует цифровой подписи проверки подлинности, то средство 204 подтверждения подлинности переходит на этап 622, на котором средство 204 подтверждения подлинности инициирует предупреждение защиты. На этапе 622 средство 204 подтверждения подлинности может выполнить множество функций, таких как: выгрузить исполняемый образ 100, загрузить новую копию исполняемого образа 100 из запоминающего устройства 105 (фиг.1) в память 108 (фиг.1), загрузить новую версию исполняемого образа 100 из сети 122, удалить исполняемый образ 100 из запоминающего устройства 105, отобразить предупреждение пользователю, работающему на компьютере 90 (фиг.1), передать сообщение об ошибках на удаленный компьютер (не показан) через сеть 122 или отменить одно или более действий, выполненных исполняемым образом 100.

Обращаясь снова к этапу 618 принятия решения, если средство 204 подтверждения подлинности (фиг.2) определяет, что эталонная цифровая подпись соответствует цифровой подписи проверки подлинности, то средство 204 подтверждения подлинности переходит на конечный этап 624. В зависимости от варианта осуществления, средство 204 подтверждения подлинности (фиг.2) может возвратиться на этап 614 для повторного определения цифровой подписи проверки подлинности при возникновении выбранных условий.

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

Начиная работу на этапе 700, средство 204 подтверждения подлинности (фиг.2) принимает запрос от запрашиваемой стороны на определение подлинности исполняемого модуля 100 (фиг.1). В одном из вариантов осуществления изобретения запрашиваемой стороной является загрузчик 208 программы (фиг.2). В другом варианте осуществления изобретения запрашиваемой стороной является операционная система 95 (фиг.1). В еще одном варианте осуществления изобретения запрашиваемой стороной является исполняемый образ (не показан), выполняющийся на компьютере 90 (фиг.1). В еще одном варианте осуществления изобретения запрашиваемой стороной является подпрограмма в средстве 204 подтверждения подлинности. Дополнительно, запрос может быть инициализирован одной из запрашиваемых сторон после возникновения одного или более выбранных условий, которые включают в себя: истечение времени таймера, обнаружение простоя компьютера 90 (фиг.1) и/или перед выполнением критического действия, например банковской сделки.

Продолжая работу на этапе 704, средство 204 подтверждения подлинности (фиг.2) идентифицирует каждый из указателей импорта в разделе 304 кода. В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности анализирует таблицу 316 перераспределения, чтобы идентифицировать каждый из этих указателей импорта (фиг.3).

Затем, на этапе 708, средство 204 подтверждения подлинности (фиг.2) исследует каждый из указателей импорта в разделе 320 кода, чтобы определить, связан ли каждый из указателей импорта с адресом памяти, который находится в таблице 312 импорта. На этом этапе в одном из вариантов осуществления изобретения средство 204 подтверждения подлинности считывает заголовок 300, чтобы определить начальный и конечный адрес таблицы 312 импорта.

Если каждый из указателей импорта не связан с адресом памяти, который находится в пределах таблицы 312 импорта (фиг.3), то средство 204 подтверждения подлинности (фиг.2) продолжает работу на этапе 714, на котором средство 204 подтверждения подлинности инициирует предупреждение защиты. На этапе 714 средство 204 подтверждения подлинности может выполнять множество функций, таких как: выгрузить исполняемый образ 100, загрузить новую копию исполняемого образа 100 из запоминающего устройства 105 (фиг.1) в память 108 (фиг.1), загрузить новую копию исполняемого образа 100, удалить исполняемый образ 100 из запоминающего устройства 105, отобразить предупреждение пользователю, работающему на компьютере 90 (фиг.1), передать сообщение об ошибках на удаленный компьютер (не показан) через сеть 122 или отменить одно или более действий, выполненных исполняемым образом 100. Выполнение процесса переходит к конечному этапу 715 и заканчивается.

Обращаясь снова к этапу 712 решения, если средство 204 подтверждения подлинности (фиг.2) определяет, что каждый из указателей импорта в пределах раздела 304 кода связан с таблицей 312 импорта (фиг.3), то средство 204 подтверждения подлинности переходит к этапу 716. На этапе 716 средство 204 подтверждения подлинности идентифицирует каждый из внешних указателей в таблице 312 импорта.

Переходя к этапу 720, средство 204 подтверждения подлинности (фиг.2) определяет связанные адреса памяти внешних указателей в таблице 312 импорта (фиг.2). В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности хранит связанные адреса памяти в таблице внешних указателей (не показана), которая поддерживается средством 204 подтверждения подлинности.

Продолжая работу на этапе 722 решения, средство 204 подтверждения подлинности определяет, находятся ли связанные адреса внешних указателей в пределах одного из исполняемых образов, идентифицированных таблицей 312 импорта (фиг.2). Для удобства описания исполняемые образы, идентифицированные таблицей 312 импорта, упоминаются все вместе как экспортируемые исполняемые образы.

В одном из вариантов осуществления изобретения средство 204 подтверждения подлинности запрашивает операционную систему 95 (фиг.1), чтобы определить адрес экспортируемых исполняемых образов в пределах памяти 108 (фиг.1). Например, Windows 95 обеспечивают вызов процедуры, которая называется “GetModuleHandle()”, которая возвращает базовый адрес исполняемого образа для заданного имени исполняемого образа. Используя базовый адрес, средство 204 подтверждения подлинности может идентифицировать адрес заголовка так же, как других разделов экспортируемых исполняемых образов.

Еще раз обращаясь к этапу 722, если средство 204 подтверждения подлинности определяет, что каждый из внешних указателей не связан с экспортируемыми исполняемыми образами, то работа средства 204 подтверждения подлинности осуществляется в соответствии с этапом 714, который описан выше более подробно. Однако если средство 204 подтверждения подлинности определяет, что каждый из внешних указателей связан с экспортируемыми исполняемыми образами, то работа средства 204 подтверждения подлинности осуществляется в соответствии с конечным этапом 715 и заканчивается.

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

Например, относительно указателя данных в разделе 304 кода, средство 204 подтверждения подлинности может проверить таблицу 316 перераспределения, чтобы гарантировать, что указатель данных ссылается на адрес памяти в пределах раздела 308 данных. Дополнительно, например, относительно внешнего указателя в таблице 312 импорта, средство 204 подтверждения подлинности может гарантировать, что внешний указатель ссылается на исполняемый образ, которому доверяют, имя которого включено в таблицу 312 импорта. Так как имя исполняемого образа не изменяется загрузчиком 208 программы (фиг.2), средство 204 подтверждения подлинности может гарантировать также, что имя исполняемого образа, которому доверяют, не было изменено, с помощью использования эталонной цифровой подписи и цифровой подписи проверки подлинности.

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

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

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

2. Компьютер по п.1, в котором эталонная цифровая подпись хранится в исполняемом образе.

3. Компьютер по п.1, в котором эталонная цифровая подпись хранится в сети.

4. Компьютер по п.1, в котором эталонная цифровая подпись хранится в базе данных.

5. Компьютер по п.1, в котором эталонная цифровая подпись хранится в средстве подтверждения подлинности.

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

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

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

9. Компьютер по п.1, в котором средство подтверждения подлинности генерирует предупреждение после определения того, что эталонная цифровая подпись не соответствует цифровой подписи проверки подлинности.

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

11. Компьютер по п.1, в котором средство подтверждения подлинности генерирует предупреждение источнику средства подтверждения подлинности после определения того, что эталонная цифровая подпись не соответствует цифровой подписи проверки подлинности.

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

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

14. Система для проверки связи первого исполняемого образа со вторым исполняемым образом, причем данная система содержит:

компьютер, содержащий операционную систему,

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

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

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

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

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

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

запрашивают от операционной системы базовый адрес первого исполняемого образа,

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

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

18. Способ определения подлинности исполняемого образа, причем данный способ содержит этапы:

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

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

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

определяют, совпадает ли цифровая подпись проверки подлинности с эталонной цифровой подписью.

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

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

21. Способ по п.18, в котором выбранное содержимое включает в себя весь исполняемый образ.

22. Способ по п.18, в котором выбранное содержимое содержит раздел машинного кода.

23. Способ по п.18, в котором выбранное содержимое содержит таблицу импорта, которая постоянно находится в исполняемом образе.

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

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

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

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

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

запрашивают из операционной системы базовый адрес второго исполняемого образа,

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

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

РИСУНКИ

Categories: BD_2258000-2258999