СПОСОБ КОНТРОЛЯ ФУНКЦИОНИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
METHOD OF CONTROLLING SOFTWARE OPERATION

Изобретение относится к вычислительной технике и направлено на обеспечение надежного функционирования программного обеспечения.
Известен способ контроля функционирования программного обеспечения, реализованный в аппаратном модуле контроля зависания операционной системы электронной вычислительной машины (модуль WatchDog), встроенный в плату видеозахвата Provideo PV-26x (электронный ресурс - http://www.provideo.tw).
Данный способ включает следующие действия. Предварительно загруженное в операционную систему электронной вычислительной машины ПО осуществляет выдачу периодических сигналов оповещения «heartbeat» (англ. - «сердцебиение»), которые фиксируются. При отсутствии сигналов оповещения в течение некоторого промежутка времени модуль контроля зависания делает вывод о том, что операционная система зависла и выполняет перезагрузку электронной вычислительной машины.
Недостатком данного способа является низкая достоверность контроля, так как осуществляется контроль только за функционированием операционной системы, а перезагрузка электронной вычислительной машины производится только при зависании операционной системы. Уровень надежности современных операционных систем, устанавливаемых на автономные устройства (Linux-подобные операционные системы), достаточно высок, чтобы вероятность зависания операционной системы считать пренебрежимо малой. Значительно более критична надежность функционирования прикладного ПО, которое никак не контролируется указанным аналогом.
Известен способ контроля функционирования программного обеспечения, реализованный в свободно распространяемом продукте SoftDog для операционной системы Linux (электронный ресурс - http://www.opennet.ru/prog/info/497.html). Способ-аналог заключается в том, что модуль контроля ожидает получения от контролируемого ПО сигналов оповещения. При отсутствии сигналов оповещения в течение некоторого промежутка времени модуль контроля делает вывод о нарушении функционирования основного ПО и выполняет его перезапуск.
Недостатком данного способа является низкая точность контроля, так как не определяется нарушение функционирования конкретной подсистемы контролируемого ПО. Кроме того, данный способ не учитывает возможность злонамеренного воздействия на контролируемое ПО, а следовательно, если злоумышленник после вывода ПО из строя продолжит передавать модулю контроля сигналы оповещения со стороны собственного ПО, то модуль контроля не обнаружит подмены и не предпримет никаких действий по восстановлению работоспособности аварийно завершенного ПО.
Наиболее близким по технической сущности к предлагаемому способу является способ контроля функционирования ПО по пат. RU №2331101, МПК G06F 11/36 G06F 21/22. Опубл. 10.08.2008 г, бюл. №22. Способ заключается в следующих действиях: осуществляется запуск контролируемого ПО при запуске электронной вычислительной машины, вырабатывается ключ симметричного шифрования для взаимодействия модуля контроля и контролируемого ПО в ответ на сигнал инициализации, полученный при начальном запуске от ПО, модулю контроля сообщается идентификатор контролируемого ПО, набор контролируемых подсистем и ожидаемая интенсивность (динамика) получения сигналов оповещения от контролируемых подсистем, в процессе функционирования ПО модулем контроля отслеживается интенсивность (динамика) получения сигналов оповещения от контролируемых подсистем по криптографически защищенному каналу, в случае несоответствия реальной интенсивности (динамики) ожидаемой выполняется перезапуск электронной вычислительной машины.
Способ позволяет решить поставленную перед ним задачу - обеспечить надежное функционирование ПО в автономном режиме (без участия оператора).
Однако способу-прототипу присущи недостатки:
1) низкая достоверность контроля функционирования программного обеспечения, обусловленная отсутствием при оценке функционирования программного обеспечения, проверки подлинности контролируемого программного обеспечения, зависящая от случайных и преднамеренных воздействий, которые могут привести к его модификации как на начальном этапе запуска ЭВМ, так и на этапе перезапуска.
2) способ-прототип имеет низкую точность контроля функционирования программного обеспечения, так как в нем не предусматривается определение подсистем программного обеспечения, приводящих к нарушению функционирования, при этом осуществляется полный перезапуск программного обеспечения, что влечет за собой увеличение времени решения основных функций, особенно для автоматизированных систем сложных объектов и быстро текущих процессов.
Целью заявленного технического решения является разработка способа контроля функционирования программного обеспечения, обеспечивающего повышение достоверности контроля функционирования программного обеспечения от случайных и преднамеренных воздействий за счет определения подлинности программного обеспечения путем введения эталонного уникального идентификатора по значениям характеристик программного обеспечения, а также повышение точности контроля функционирования программного обеспечения за счет определения подсистем программного обеспечения, нарушающих его функционирование и обеспечение требуемых временных затрат на выполнение функций автоматизированной системы за счет уменьшения временных затрат на реализацию действий по обеспечению отказоустойчивого выполнения программного обеспечения.
В заявленном изобретении поставленная цель достигается тем, что в известном способе запускают контролируемое ПО, формируют ключ симметричного шифрования для взаимодействия модуля контроля и контролируемого ПО в ответ на сигнал инициализации, полученный при начальном запуске от ПО, передают модулю контроля идентификатор контролируемого ПО, набор контролируемых подсистем и ожидаемую интенсивность получения сигналов оповещения от контролируемых подсистем, измеряют в процессе функционирования ПО интенсивность сигналов оповещения от контролируемых подсистем по криптографически защищенному каналу на ключе s, в случае несоответствия реальной интенсивности ожидаемой перезапускают ПО, дополнительно перед запуском модуля контроля и контролируемого ПО в модуле контроля формируют данные контролируемого ПО, состоящие из характеристик ПО, набора контролируемых подсистем, конфигурации программного обеспечения в различных режимах функционирования, ожидаемой интенсивности сигналов оповещения. Измеряют реальные значения характеристик ПО. Формируют эталонный уникальный идентификатор по значениям характеристик ПО с использованием функции преобразования. После запуска программного модуля контроля и контролируемого ПО передают уникальный идентификатор от контролируемого ПО программному модулю контроля. Сравнивают эталонный уникальный идентификатор ПО с полученным уникальным идентификатором от контролируемого ПО. Измеряют интенсивность сигналов оповещения от контролируемого ПО в процессе функционирования по криптографически защищенному каналу на ключе s. Сравнивают ожидаемые и реальные интенсивности сигналов оповещения. Запоминают контролируемую подсистему, в которой нарушено функционирование. Выделяют и запоминают контролируемые подсистемы, влияющие на подсистему, в которой нарушено функционирование по конфигурации программного обеспечения в определенном режиме функционирования. Перезапускают контролируемые подсистемы ПО, приводящие к сбоям функционирования данной подсистемы. Измеряют интенсивность сигналов оповещения от контролируемого ПО в процессе функционирования по криптографически защищенному каналу на ключе s. Сравнивают ожидаемые и реальные интенсивности сигналов оповещения. Запоминают контролируемую подсистему, в которой повторно нарушено функционирование. Перезапускают ПО при несовпадении ожидаемой и реальной интенсивности сигналов оповещения.
Новая совокупность существенных признаков позволяет достичь указанного технического результата за счет определения подлинности программного обеспечения путем введения эталонного уникального идентификатора по значениям характеристик программного обеспечения, определения подсистем программного обеспечения, нарушающих его функционирование, и уменьшения временных затрат на реализацию действий по обеспечению отказоустойчивого выполнения программного обеспечения.
Заявленный способ поясняется чертежами, на которых;
на Фиг.1 - блок-схема алгоритма контроля функционирования ПО;
на Фиг.2 - схема поясняющая порядок контроля функционирования программного обеспечения;
на Фиг.3 - зависимость времени восстановления (перезагрузки) ПО (подсистем) от объема ПО.
Реализация заявленного способа поясняется алгоритмом (фиг.1), схемой (фиг.2) и объясняется следующим образом:
0
N
i
1. Для применения предлагаемого изобретения должен быть определен ряд параметров. Пусть задано множество Р={p,…, p}, где p - i-e контролируемое ПО.
i
Для каждого p определены множества , где  - j-я контролируемая подсистема i-го контролируемого ПО, и  где  - ожидаемая интенсивность (динамика) поступления сигналов оповещения о состоянии j-й контролируемой подсистемы i-го контролируемого ПО.
2. В программном модуле контроля формируют данные контролируемого ПО, состоящие из:
- характеристик ПО , где  - l-ая характеристика i-го контролируемого ПО;
- набора контролируемых подсистем ;
- конфигурации ПО в различных режимах функционирования ,
где N - количество режимов функционирования;
- ожидаемой интенсивности сигналов оповещения .
Данные характеристики ПО указаны в разделе «Характеристики ПО», имеющемся в итоговом документе разработки ПО [ГОСТ Р 51904-2002 «Программное обеспечение встроенных систем. Общие требования к разработке и документированию», с.48-51]. В данном разделе указывается размер исполняемого объектного кода, ограничения по времени и памяти, ограничения ресурсов и способы измерения каждой характеристики.
Конфигурация ПО указывается в разделе «Управление конфигурацией ПО» [ГОСТ Р 51904-2002 «Программное обеспечение встроенных систем. Общие требования к разработке и документированию», с.30-36]. При этом осуществляется идентификация элементов конфигурации ПО, определяемых как совокупность компонентов ПО, которая обеспечивает конечную функцию использования.
3. Измеряют реальные значения характеристик контролируемого ПО.
4. Формируют эталонный уникальный идентификатор по значениям характеристик ПО с использованием функции преобразования. Упомянутый уникальный идентификатор может быть реализован в виде хэш-функции.
Хэш-функция - это функция, отображающая аргумент произвольной конечной длины в образ фиксированной длины. Благодаря основному свойству хэш-функции она является односторонней, из полученного отображения нельзя будет восстановить исходный текст. Алгоритмически невозможно подобрать любой такой текст, у которого значение хэш-функции совпадало бы с ранее найденным. Фактически любой алгоритм хэширования представляет собой подсчет контрольной суммы от исходного текста, при котором используются необратимые логические операции над исходным сообщением, такие как AND, OR. Для нахождения хэш-функции можно применять известные алгоритмы хэширования (SHA, MD4, MD5 и др.), которые позволяют получить на выходе блок данных фиксированной длины [журнал «Компьютер Пресс» №3'2007 г., С.Пахомов - «Забыли пароль. Нет проблем», с.23-24; Информационно-методический журнал «Защита информации. Инсайд» №3, 2005 г., А.Тетерин - «Создание защищенного канала передачи данных между распределенными информационными ресурсами предприятия», с.71-77].
Использование эталонного уникального идентификатора, полученного с использованием хэш-функции, позволяет осуществлять контроль ПО при запуске и перезапуске, что позволит достоверно определить легитимность используемого ПО.
5. Выполняют запуск модуля контроля и контролируемого ПО. При запуске каждой подсистемы выполняется процедура инициализации модуля контроля, которая предполагает выполнение следующих действий:
- передача сигнала инициализации от ПО модулю контроля с указанием уникального идентификатора контролируемого ПО;
- сравнение эталонного уникального идентификатора ПО с полученным уникальным идентификатором от контролируемого ПО.
Для противодействия злонамеренным воздействиям, направленным на вывод контролируемого приложения из строя и подмены его другим приложением, которое продолжит от имени контролируемого приложения оповещать модуль контроля, для каждого i-го контролируемого ПО должен быть сформирован (сгенерирован) уникальный ключ симметричного шифрования s, с использованием которого организуется защищенный от подмены канал взаимодействия между контролируемым приложением и модулем контроля.
6. Передают ключ симметричного шифрования s от модуля контроля контролируемому ПО в ответ на сигнал инициализации.
7. Измеряют интенсивности сигналов оповещения при работе каждой подсистемы модулю контроля по криптографически защищенному каналу на ключе s.
8. Сравнивают реальную интенсивность (динамику)  получения сигналов оповещения каждой подсистемы (1) с ожидаемой интенсивностью .
где  - количество сигналов от j-й контролируемой подсистемы (программного модуля) i-го контролируемого ПО за время наблюдения Т.
9. Запоминают контролируемую подсистему, в котором нарушено функционирование .
10. Выделяют и запоминают контролируемые подсистемы , оказывающие влияние на подсистему , в которой выявлено нарушение функционирования, используя конфигурацию ПО в определенном режиме функционирования.
15. Перезапускают контролируемые подсистемы , приводящие к сбоям функционирования.
16. Измеряют интенсивности сигналов оповещения при работе каждой подсистемы (программного модуля) модулю контроля по криптографически защищенному каналу на ключе s.
17. Сравнивают реальную интенсивность (динамику)  получения сигналов оповещения каждой подсистемы (программного модуля) с ожидаемой интенсивностью .
18. Запоминают контролируемую подсистему, в которой повторно нарушено функционирование .
19. Перезапускают ПО в случае повторного нарушения функционирования в определенной подсистеме .
восст
исх. кода
Возможность реализации сформулированного технического результата была проверена путем машинного моделирования. С помощью моделирования получена взаимосвязь значений времени перезагрузки t (восстановления) от объема программного обеспечения V по (Фиг.3) для Почтового клиента Novell - 5,4 Мб (23 тыс. строк кода), Операционных систем: Linux 2.6.29 - 3,4 Гб (11 млн. строк кода,) Windows 7 - 10,5 Гб (34 млн. строк кода) [Научно-технический журнал "Мир компьютерной автоматизации" №6 (web), 2010 г., Пол Леру - «Реальное время или реальная Linux? Делаем трезвый выбор»].
1
2
1
2
Достижение технического результата поясняется следующим образом. Для способа-прототипа при нарушении функционирования ПО осуществляется полный перезапуск за время Т. Для предлагаемого способа определяются и перезапускаются контролируемые подсистемы, в которых выявлено нарушение функционирования ПО, используя конфигурацию в определенном режиме функционирования, что требует меньшее время Т. При этом разница в требуемом времени для перезагрузки ΔT=T-T тем больше, чем больше объем используемого ПО, чем и достигается технический результат.
Таким образом, заявленный способ за счет определения подлинности программного обеспечения путем введения эталонного уникального идентификатора по значениям характеристик программного обеспечения, определения подсистем программного обеспечения, нарушающих его функционирование, и уменьшения временных затрат на реализацию действий по обеспечению отказоустойчивого выполнения программного обеспечения позволяет обеспечить повышение достоверности контроля функционирования программного обеспечения от случайных и преднамеренных воздействий, повышение точности контроля функционирования программного обеспечения и обеспечения требуемых временных затрат на выполнение функций автоматизированной системы.