СИСТЕМА И СПОСОБ ФОРМИРОВАНИЯ ОПТИМАЛЬНОГО НАБОРА ТЕСТОВ ДЛЯ ВЫЯВЛЕНИЯ ПРОГРАММНЫХ ЗАКЛАДОК
SYSTEM AND METHOD FOR FORMING OPTIMAL SET OF TESTS FOR IDENTIFYING SOFTWARE BUGS

Изобретение относится к вычислительной технике, а именно к информационным вычислительным системам и сетям, и может быть использовано для защиты информационных ресурсов рабочих станций и серверов, их компонентов, программ или данных от несанкционированного доступа к ним, а также при анализе исходного кода программного обеспечения (ПО), в том числе при проведении сертификационных испытаний программного обеспечения на отсутствие недекларированных возможностей.
Сертификация программного обеспечения по требованиям безопасности информации относится к основным обязательным мероприятиям по оценке степени безопасности программного обеспечения. Это обусловлено тем, что для реализации в информационной системе некоторых недекларируемых функций, позволяющих осуществить несанкционированный доступ к ресурсам информационной системы, применяются программные закладки (ПЗ), которые в большинстве случаев внедряются на этапе разработки программного обеспечения. При этом особенностью таких закладок является то, что они становятся фактически неотделимы от прикладных или системных программ информационной системы и их выявление возможно только специальными тестовыми программами, выявляющими аномальное поведение и недекларируемые возможности ПО (Бегаев А.Н., С.Н. Бегаев, Кашин С.В. Анализ программного кода при проведении сертификационных испытаний. - СПб: Университет ИТМО, 2018. - 41 с., Макаренко С.И. Информационное противоборство и радиоэлектронная борьба в сетецентрических войнах начала XXI века. Монография. - СПб.: Наукоемкие технологии, 2017. - 546 с., Куприянов А. И., Сахаров А. В., Шевцов В. А. Основы защиты информации: учебное пособие. - М.: Издательский центр «Академия», 2006. - 256 с.). Эффективность применения тестовых программ зависит от полноты составления тестов. Как правило, основной набор состоит из большого числа тестов, что приводит к значительным временным затратам на их выполнение. Так как этап тестирования является итеративным, количество итераций ограниченно доступными временными ресурсами (сроками сдачи проекта) и используемыми стандартами качества, что может привести к снижению вероятности обнаружения ПЗ при сертификации ПО по требованиям безопасности. Кроме того, возможности сертификации ограничены ресурсами обеспечения испытаний - как временными, так и финансовыми, кадровыми, аппаратными и инструментальными средствами. (Липаев В.В. Сертификация программных средств. Учебник. - М.: СИНТЕГ, 2010. - 348с., Миронов С.В. Безопасные информационные технологии // Сборник трудов Девятой всероссийской научно-технической конференции - М.: МГТУ им. Н.Э. Баумана, 2018. 214 с. - ил.). Таким образом, разработка средств и способов формирования оптимального набора тестов для выявления программных закладок является актуальной задачей.
Толкование терминов, используемых в заявке:
недекларированные (функциональные) возможности - функциональные возможности ПО, не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации (Руководящий документ «Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей», утв. Гостехкомиссией России 04.06.1999, далее - РД НДВ). Программные закладки (в частности) - реализация недекларированных возможностей (Бегаев А.Н., С.Н. Бегаев, Кашин С.В. Анализ программного кода при проведении сертификационных испытаний. - СПб: Университет ИТМО, 2018. - 41 с.);
программные закладки - преднамеренно внесенные в ПО функциональные объекты, которые при определенных условиях  инициируют выполнение не описанных в документации функций ПО, приводящих к нарушению конфиденциальности, доступности или целостности обрабатываемой информации (РД НДВ; Макаренко С.И. Информационное противоборство и радиоэлектронная борьба в сетецентрических войнах начала XXI века. Монография. - СПб.: Наукоемкие технологии, 2017. - 546 с., Бегаев А.Н., С.Н. Бегаев, Кашин С.В. Анализ программного кода при проведении сертификационных испытаний. - СПб: Университет ИТМО, 2018. - 41 с.);
сертификация программного обеспечения (ПО) по требованиям безопасности информации (далее сертификация) - проверка (подтверждение) характеристик ПО на соответствие требованиям нормативных документов и государственных стандартов по защите информации, выпущенные уполномоченными федеральными органами: ФСТЭК России (Гостехкомиссией России), ФСБ России и Министерство обороны (Бегаев А.Н., С.Н. Бегаев, Кашин С.В. Анализ программного кода при проведении сертификационных испытаний. - СПб: Университет ИТМО, 2018. - 41 с.);
тестирование ПО - процесс проверки соответствия заявленных к продукту требований и реально реализованной функциональности, осуществляемый путем наблюдения за его работой в искусственно созданных ситуациях и на ограниченном наборе тестов, выбранных определенным образом;
тестирование по требованиям безопасности - процесс выявления наличия или отсутствия уязвимостей в продукте в искусственно созданных ситуациях и на ограниченном наборе тестов, выбранных определенным образом.
В настоящее время известны средства и способы формирования тестов.
Так, известна система формирования тестов [Патент РФ №2012924 С1 - ФОРМИРОВАТЕЛЬ ТЕСТОВ / Гремальский Анатолий Александрович, Беэан Виорел Евтемьевич, Рошка Андрей Алексеевич опубл. 15.05.1994], состоящая из генератора псевдослучайных кодов, мультиплексора выдачи теста, генератора случайной последовательности, блока памяти последовательности кодов микротестов, блока управления.
Недостатком данной системы является наличие генератора случайных последовательностей, что приводит к недостаточной достоверности формируемых тестов, а также к увеличению времени подбора нужных тестовых наборов.
Известна система генерации тестовых данных [Патент 2679350 Российская Федерация, G06F 11/263. Система генерации тестовых данных/ Литвиненко А.М., Сметанин К.А.;  заявитель и патентообладатель Федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный технический университет" - 2017124567; заявл. 10.07.2017; опубл 07.02.2019],  в основе которой лежит применение генетического алгоритма. Для этого в системе присутствует блок генерации функции приспособленности, который соединен с блоком генерации популяции, который подсоединен к генератору измененной популяции, имеющий связь с блоком фиксации отработки, причем блок фиксации отработки соединен встречной связью с генератором измененной популяции. Генетический алгоритм осуществляет поиск баланса между эффективностью и качеством решений за счет «выживания сильнейших альтернативных решений» в неопределенных и нечетких условиях.
Недостатком системы является высокая вычислительная ресурсоемкость, сложность определения параметров генетического алгоритма (мощности популяции, вероятности генетических операторов и т.д.),
Известен комплекс автоматизации и визуализации тестирования встроенного программного обеспечения электронных устройств [Патент 2678717 Российская Федерация, G06F 11/36. Комплекс автоматизации и визуализации тестирования встроенного программного обеспечения электронных устройств / Прудков В.В.;  заявитель и патентообладатель Российская Федерация, от имени которой выступает Государственная корпорация по космической деятельности "Роскосмос" - 2017138949; заявл. 0911.2017; опубл. 12.04.2019]. Комплекс состоит из единой среды написания, редактирования и выполнения тестов, моделей функциональных устройств, осуществляющих взаимодействие с электронным устройством со встроенным ПО посредством плат расширения, базы данных, средств автоматизированного анализа информации и заполнения базы данных.
Недостатком решения является то, что снижение трудоемкости специалистов и сокращение общего времени тестирования достигается только за счет унифицированного подхода к построению программного комплекса и единого шаблона функций взаимодействия и диалоговых окон моделей, формирование оптимального набора тестов для выявления программных закладок не предусмотрено.
Известен способ формирования тестов [Патент РФ №2261471 С1 - Способ формирования диагностических тестов / Страхов А.Ф., Страхов О.А., Палькеев Е.П., Белокрылов В.Д. (RU) опубл. 27.09.2005], основанный на формировании комбинаций входных тестовых сигналов с заданными сочетаниями параметров сигналов и с заданными последовательностями подачи входных сигналов, соответствующими подаче входных сигналов при штатной работе реальных диагностируемых изделий данного типа, а также на определении параметров сочетаний выходных сигналов для выполнения каждой комбинации входных тестовых сигналов.
Способ формирования диагностических тестов обладает следующими недостатками: ограниченная область применения и недостаточная достоверность формируемых тестов, а также большие временные затраты из-за использования метода полного перебора.
Известен способ создания тестовой базы, описанный в [Котов С.Л., Демирский А.А., Мещерякова В.В. Проведение сертификационных испытаний часто обновляющихся ПС с использованием автоматизированной тестовой базы // Вестн. ВНИИМАШ, 2010; Мельникова В.В., Котов С.Л., Палюх Б.В., Проскуряков М.А. Тестирование программ с использованием генетических алгоритмов // Программные продукты и системы. - 2011. - № 4. -  стр. 107 - 110], который предполагает создание тестов на основе анализа функциональных требований. Способ заключается в следующей последовательности действий: осуществляют анализ функциональных требований к ПО, ранжируют функциональные требования к ПО в зависимости от их сложности и важности, формализуют и записывают функциональные требования в виде спецификаций, разрабатывают набор тестов, формируют тестовую базу.
Недостатком способа является высокая трудоемкость и значительные  временные затраты за счет большой вероятности избыточного тестирования.  [Когай  Г. Д. Достоинства и недостатки современных видов тестирования программного обеспечения / Г. Д. Когай, А. Ж. Амиров, Р. В. Стародубенко, К. В. Стародубенко. // Молодой ученый. - 2016. - № 21 (125). - С. 153-156.]
Известен способ генерации оптимизированных для ручного выполнения сценариев тестирования приложений с графическим интерфейсом пользователя, описанный в (Баранцев А. В., Грошев С. В., Омельченко В. А. Генерация оптимизированных для ручного выполнения сценариев // Труды Института системного программирования РАН. - 2009 г. - т. 17, стр. 75 - 92. Способ заключается в следующей последовательности действий: строят граф состояний и переходов, определяют критерии тестового покрытия, с учётом размера и структуры графа состояний фиксируют ограничение на длину отдельных тестов,  строят тестовый набор с минимальной суммарной длиной тестов, удовлетворяющий следующим ограничениям:
1. Каждый тест в составе тестового набора имеет длину не выше заданной;
2. Тестовый набор должен обеспечивать покрытие всех возможных при ограничении в п. 1 тестовых ситуаций.
Если некоторые тестовые ситуации могут быть покрыты только тестами длины большей, чем заданное в п.1 ограничение, то строят тесты минимальной суммарной длины, покрывающие все такие тестовые ситуации, и добавляют их к построенному тестовому набору. Проверяют, не покрывают ли добавленные длинные тесты сразу все тестовые ситуации, покрываемые какими-то из ранее построенных коротких тестов, и при обнаружении таких «лишних» коротких тестов удаляют их из тестового набора. Производят фильтрацию и сортировку построенного набора тестов, при этом используют упорядоченность тестового набора по времени добавления в него тестов.
Недостатком способа является ограниченная область применения (направлен на тестирование приложений с графическим интерфейсом пользователя), значительные временные затраты на исполнение (предусматривает ручное тестирование).
Наиболее близким по технической сущности к предлагаемой системе является изобретение «Способ и система автоматизации тестирования программного обеспечения», заключающееся в том, что система автоматизации тестирования программного обеспечения включает, по крайней мере, одно устройство пользователя и/или тестировщика, по крайней мере, одну базу данных, по крайней мере, одну базу тестов и программно-аппаратный комплекс, выполненный с возможностью:
- тестирования программного обеспечения по составленным планам тестирования посредством интерактивного взаимодействия тестировщика с пользовательским интерфейсом тестируемого программного обеспечения,
- записи указанных действий пользователя в автоматическом режиме в заранее заданных терминах уровня бизнес-логики тестируемого программного обеспечения, сохраняя результаты в базе тестов в качестве тестовых сценариев,
- записи изменений в базе данных, производимых при выполнении указанных тестовых сценариев, в автоматическом режиме в заранее заданных терминах, присваивая данным изменениям признак «Эталонные изменения» и сохраняя результаты в базе тестов,
- после изменения программного обеспечения осуществления его регрессионного тестирования:
- проигрывания тестовых сценариев из базы тестов в автоматическом режиме,
- записи изменений в базе данных, производимых при выполнении указанных тестовых сценариев, в автоматическом режиме в заранее заданных терминах, присваивая данным изменениям признак «Фактические изменения» и сохраняя результаты в базе тестов,
- осуществления верификации по каждому тестовому сценарию, сравнивая «Эталонные изменения» и «Фактические изменения» и сохраняя результаты сравнения в базе тестов,
- формирования списка тестовых сценариев, не прошедших верификацию, при этом под изменениями, не прошедшими верификацию подразумеваются расхождения «Эталонных изменений» и «Фактических изменений» (заявка на патент РФ №2013126869/08), который выбран в качестве прототипа.
Недостатком прототипа является ограниченная область применения, отсутствие возможности формирования оптимального набора тестов для выявления программных закладок.
n(X
)
Х= {X
,… X
}
n(X
)
X
X
i
1
i-1
i
i
Наиболее близким по технической сущности к предлагаемому способу является способ псевдослучайной генерации тестов, описанный в (https://portal.tpu.ru/SHARED/t/TRACEY/Courses/theory/Tab_automata_textbooks/04.pdf). Способ заключается в следующем: генерируют псевдослучайный тестовый набор, с помощью программы моделирования определяют число неисправностей , которые он обнаруживает (без учета тех, которые уже обнаруживаются множеством  . Если   превышает некоторый заранее заданный порог, то набор добавляют к множеству  , и генерируется следующий набор. Этот процесс продолжается, пока не будет достигнута заданная пользователем полнота тестовой последовательности, либо пороговая величина длины или времени построения теста.
Недостатком способа-прототипа является ограниченная область применения (предусматривает тестирование только цифровых устройств),  применение псевдослучайного тестового набора, что приводит к недостаточной достоверности формируемых тестов, а так же к увеличению времени подбора нужных тестовых наборов.
Технической проблемой, на решение которой направлено предлагаемое решение, являются ограниченные временные, аппаратные, инструментальные, кадровые ресурсы, используемые при сертификации ПО по требованиям безопасности, что приводит к снижению вероятности обнаружения ПЗ.
Техническая проблема решается за счет предварительного формирования оптимального набора тестов для выявления программных закладок в результате моделирования противоборства между нарушителем и экспертом.
Техническим результатом изобретения является повышение вероятности обнаружения ПЗ при сертификации ПО по требованиям безопасности, увеличение количества обнаруживаемых ПЗ,  уменьшение временных, аппаратных, инструментальных, кадровых ресурсов, затрачиваемых на проведение сертификационных испытаний.
В заявленной системе технический результат достигается тем, что в систему - прототип, включающую по крайней мере одно устройство пользователя и/или тестировщика, по крайней мере одну базу данных, по крайней мере одну базу тестов и программно-аппаратный комплекс, выполненный с возможностью тестирования программного обеспечения, составления тестовых сценариев и с сохранением их в базе данных в качестве эталонных, формирования базы тестов, дополнительно включают  взаимосвязанные  между собой блок ввода исходных данных, блока анализа и заполнения баз данных, базу исходных данных, блок контроля и управления, блок моделирования программных закладок, базу данных программных закладок, блок формирования тестов, базу данных тестов, блок моделирования противоборства нарушителя и эксперта, включающий блок закладного воздействия, блок выбора тестов, блок моделирования процесса выявления программной закладки, при этом блок закладного воздействия, выход которого  подключен к первому входу блоку моделирования процесса выявления программных закладок, ко второму входу которого подключен блок выбора тестов, состоит из последовательно соединенных блока  активации программной закладки, блока выбора программной закладки и блока внедрения программной закладки, блок анализа результатов моделирования, блок формирования оптимального набора тестов и наиболее опасного множества программных закладок, базу данных оптимального набора тестов, базу данных наиболее опасного множества программных закладок, блок вывода результатов, причем выход блока ввода исходных данных подключен ко входу блока анализа и заполнения баз данных, выходы блока анализа и заполнения баз данных подключены ко входам базы данных исходных данных, базы данных программных закладок, базы данных тестов, блока контроля и управления, второй вход блока контроля и управления подключен к базе данных исходных данных, первый выход блока контроля и управления подключен к блоку моделирования программных закладок, выход которого подключен ко входу базы данных программных закладок, второй выход блока контроля и управления подключен к блоку формирования тестов, выход которого подключен ко входу базы данных тестов, третий выход блока контроля и управления  подключен к первому входу блока моделирования процесса противоборства нарушителя и эксперта, ко второму и третьему входам блока моделирования процесса противоборства нарушителя и эксперта  подключены выходы базы данных программных закладок и базы данных тестов, выход блока моделирования процесса противоборства нарушителя и эксперта  подключен ко входу блока  анализа результатов моделирования,  выход которого подключен ко входу блока формирования оптимального  набора тестов и наиболее опасного множества программных закладок, первый и второй выходы блока формирования оптимального набора тестов и наиболее опасного множества программных закладок подключены ко входам базы данных оптимального набора тестов  и базы данных наиболее опасного множества программных закладок соответственно, третий выход блока формирования оптимального  набора тестов и наиболее опасного множества программных закладок подключен к блоку выводов результатов.
В заявленном способе технический результат достигается тем,  что задают исходные данные,  осуществляют анализ, идентификацию входных данных и заполнение соответствующих баз данных, формируют базу данных программных закладок, формируют базу данных тестов, моделируют процесс противоборства между экспертом и нарушителем, для чего для моделирования действий нарушителя производят активацию программной закладки, осуществляют выбор программной закладки, осуществляют внедрение выбранной программной закладки, для моделирования действий эксперта осуществляют выбор теста для выявления программной закладки,  осуществляют моделирование процесса выявления программной закладки, анализируют результаты моделирования, определяют и записывают в соответствующую базу данных оптимальный набор тестов для выявления i-ой программной закладки, определяют и записывают в соответствующую базу данных наиболее опасное множество программных закладок, осуществляют вывод результата.
Из уровня техники не выявлено решений, касающихся способов, устройств и систем формирования оптимального набора тестов для выявления программных закладок, характеризующихся заявленной совокупностью признаков, следовательно, что указывает на соответствие заявленного способа условию патентоспособности «новизна».
Результаты поиска известных решений в данной и смежной областях техники с целью выявления признаков, совпадающих с отличительными от прототипов признаками заявленного изобретения, показали, что они не следуют явным образом из уровня техники. Из определенного заявителем уровня техники не выявлена известность влияния предусматриваемых существенными признаками заявленного изобретения на достижение указанного технического результата. Следовательно, заявленное изобретение соответствует условию патентоспособности «изобретательский уровень».
«Промышленная применимость» способа обусловлена наличием аппаратно-программной базы, на основе которой могут быть выполнены устройства, реализующие способ и систему.
Заявленный способ поясняется следующими фигурами:
Фиг. 1 - структурная схема системы формирования оптимального набора тестов для выявления программных закладок;
Фиг. 2 - блок-схема способа формирования оптимального набора тестов для выявления программных закладок;
Фиг. 3 - блок-схема алгоритма моделирования противоборства между экспертом и нарушителем.
Система формирования оптимального набора тестов для выявления программных закладок, структурная схема которой показана на фиг. 2, состоит из взаимосвязанных между собой блока ввода исходных данных 10, блока анализа и заполнения баз данных 20, базы данных исходных данных 30, блока контроля и управления 40, блока моделирования программных закладок 50, базы данных программных закладок 60, блока формирования тестов 70, базы данных тестов 80, блока моделирования противоборства нарушителя и эксперта 90, включающего блок закладного воздействия 91, состоящего из блока  активации программной закладки 911, блока выбора программной закладки 912, блока внедрения программной закладки 913, блока выбора тестовых наборов 92, блока моделирования процесса выявления ПЗ 93, блока анализа результатов моделирования 100, блока формирования оптимального набора тестов и наиболее опасного множества ПЗ 110, базы данных оптимального набора тестов 120, базы данных наиболее опасного множества ПЗ 130, блока вывода результатов 140.
Выход блока ввода исходных данных 10 подключен ко входу блока анализа и заполнения баз данных 20, предназначенного для осуществления анализа документации, описывающей тестируемое ПО, а также остальных введенных исходных данных и заполнения БД в порядке принадлежности данных к своему типу назначения и использования и внутренней привязки между собой.
Выходы блока анализа и заполнения баз данных 20 подключены ко входам базы данных исходных данных 30, базы данных ПЗ 60, базы данных тестов 80, блока контроля и управления 40, предназначенного для осуществления настройки внутренних параметров элементов системы (как аппаратной части, так и внутренних структур, данных и сущностей моделей), управления элементами системы на любом этапе функционирования, протоколирования информации о состоянии всех элементов системы в течение всего времени функционирования системы. Второй вход блока контроля и управления 40 подключен к базе данных исходных данных 30, которая предназначена для хранения данных, включающих информацию о  параметрах системы, информацию, необходимую для визуализации и предоставления данных на любом этапе функционирования, информацию о тестируемом ПО, данные, необходимые для функционирования моделей и т.д.
Первый выход блока контроля и управления 40 подключен к блоку моделирования программных закладок 50, выход которого подключен ко входу базы данных ПЗ 60. Второй выход блока контроля и управления 40 подключен к блоку формирования тестов 70, выход которого подключен ко входу базы данных тестов 80. Третий выход блока контроля и управления 40 подключен к первому входу блока моделирования процесса противоборства нарушителя и эксперта 90. Ко второму и третьему входам блока моделирования процесса противоборства нарушителя и эксперта 90 подключены выходы базы данных ПЗ 6 и базы данных тестов 80.
Блок моделирования процесса противоборства нарушителя и эксперта 9 состоит из блока закладного воздействия 91, блока выбора тестов 92, блока моделирования процесса выявления ПЗ 93, причем выход блока закладного воздействия  подключен к первому входу блоку моделирования процесса выявления ПЗ 93, ко второму входу которого подключен блок выбора тестов 92.
Блок закладного воздействия 91 состоит из последовательно соединенных блока активации ПЗ 911, блока выбора ПЗ 912, блока внедрения ПЗ 913.
Выход блока моделирования процесса противоборства нарушителя и эксперта 90 подключен к блоку  анализа результатов моделирования 100,  выход которого подключен ко входу блока формирования оптимального  набора тестов и наиболее опасного множества ПЗ 110.
Первый и второй выходы блока формирования оптимального набора тестов и наиболее опасного множества ПЗ 110 подключены ко входам базы данных оптимального  набора тестов 120 и базы данных наиболее опасного множества ПЗ 130 соответственно. Третий выход блока формирования оптимального  набора тестов и наиболее опасного множества ПЗ 110 подключен к блоку выводов результатов 140.
Назначение блоков понятно из их наименований.
Система функционирует следующим образом:
На первом этапе осуществляют ввод (бл. 10 фиг.1) исходных данных, проверяют их корректность, а также осуществляют преобразование к нужному формату. С выхода блока ввода исходных данных 10 данные поступают в  блок анализа и заполнения баз данных 20, где производится их анализ, идентификация и заполнение соответствующих баз данных: базы данных исходных данных 30, базы данных ПЗ 60, базы данных тестов 70 и др.
Далее в блоке контроля и управления 40 производится настройка параметров всех элементов системы, формируются и передаются управляющие команды на запуск блока моделирования ПЗ 50 и блока формирования тестов 70. Сформированные ПЗ и тесты поступают в базу данных ПЗ 60 и базу данных тестов 80 соответственно. После формирования базы данных ПЗ 60 и базы данных тестов 80 формируют и передают управляющую команду на запуск блока моделирования процесса противоборства нарушителя и эксперта 90.
При поступлении управляющей команды в блоке закладного воздействия 91, а именно в блоке активации программной закладки 911 запускается механизм активации ПЗ. В случае внедрения ПЗ в блоке выбора ПЗ 912 осуществляют выбор программной закладки из базы данных ПЗ 60. В блоке внедрения ПЗ 913 определяют программную компоненту, в которую может быть встроена данная ПЗ и осуществляют внедрение выбранной программной закладки.
При поступлении управляющей команды от блока контроля и управления 40 в блоке выбора тестов 92 осуществляют выбор тестов для выявления ПЗ.
В блоке 93 осуществляют моделирование процесса выявления ПЗ.
Полученные в результате моделирования данные поступают в блок анализа результатов моделирования 100. На основании проведенного анализа в блоке формирования оптимального набора тестов и наиболее опасного множества ПЗ 110 определяют и записывают в соответствующую базу данных оптимальный  набор тестов для выявления i-ой ПЗ (блок 120 фиг. 1) и  наиболее опасное множество ПЗ (блок 130 фиг.1).
В блоке 140 фиг. 1  осуществляют вывод результата.
В процессе функционирования системы может быть реализован заявленный способ формирования оптимального набора тестов для выявления программных закладок, блок-схема которого представлена на фиг. 2.
В блоке 1 фиг. 2 задают исходные данные.
Исходными данными для способа являются:
исходные тексты ПО, спецификации и др. необходимая программная, конструкторская и эксплуатационная документация на ПО, описанная в [Марков А. С., Цирлов В. Л., Барабанов А. В. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов; под ред. доц. А. С. Маркова. - М.: Радио и связь, 2012. - 192 с.; Бегаев А.Н., Кашин С.В., Маркевич Н.А., Марченко А.А., Выявление уязвимостей и недекларированных возможностей в программном обеспечении - СПб: Университет ИТМО, 2020. - 38 с., Бегаев А.Н., Кашин С.В., Зимненко С.А. Сертификация программного обеспечения и автоматизированных систем в различных системах сертификации. - СПб: Университет ИТМО, 2018. - 45 с.; Бегаев А.Н., Кашин С.В., Маркевич Н.А., Марченко А.А., Павлов Д.Д. Сертификация программного обеспечения по требованиям доверия - СПб: Университет ИТМО, 2020. - 40 с.];
множество ограничений на функционирование ПО, определяющих ее соответствие требованиям по безопасности, состоящее из подмножества ограничений на использование ресурсов аппаратуры и операционной системы (ОС), например оперативной памяти, процессорного времени, ресурсов ОС, возможностей интерфейса и других ресурсов, и подмножества ограничений, регламентирующих доступ к объектам, содержащим данные (информацию), то есть областям памяти, файлам и т.д;
множество контролируемых параметров среды и ПО;
параметры, необходимые для настройки и функционирования используемых моделей,
данные, необходимые для заполнения используемых баз данных (программных закладок, тестов, и др.) и др.
Исходные данные могут быть заданы путем их записи в память ЭВМ при помощи известных устройств ввода.
В блоке 2 фиг.2 осуществляют анализ, идентификацию входных данных и заполнение соответствующих баз данных: базы данных исходных данных, базы данных ПЗ, базы данных тестов и др.
Анализ, идентификация входных данных и заполнение соответствующих баз данных могут быть осуществлены при помощи автоматизированных средств, описанных, например, в (Патент 2678717 Российская Федерация, G06F 11/36. Комплекс автоматизации и визуализации тестирования встроенного программного обеспечения электронных устройств / Прудков В.В.;  заявитель и патентообладатель Российская Федерация, от имени которой выступает Государственная корпорация по космической деятельности "Роскосмос" - 2017138949; заявл. 0911.2017; опубл 12.04.2019), выполняющих анализ документации на тестируемое ПО, идентификацию входных данных и заполнение БД в порядке принадлежности данных к своему типу назначения и использования и внутренней привязки между собой
В блоке 3 фиг.2 формируют базу данных программных закладок.
База данных программных закладок может быть сформирована следующими способами:
внесение в базу данных множества всех известных программных закладок;
внесение в базу данных множества программных закладок, полученных в результате моделирования (например, путем порождения множества моделей всех возможных (в рамках данной модели) программных закладок [Казарин О.В. Теория и практика защиты программ. М. 2004. - 389 с.]).
В блоке 4 фиг.2 формируют базу данных тестов.
Тесты  могут быть сформированы при помощи известных средств автоматической генерации тестов, а также средств написания и редактирования тестов в «ручном» режиме [Патент 2679350 Российская Федерация, G06F 11/263. Система генерации тестовых данных/ Литвиненко А.М., Сметанин К.А.;  заявитель и патентообладатель Федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный технический университет" - 2017124567; заявл. 10.07.2017; опубл 07.02.2019; Патент 2678717 Российская Федерация, G06F 11/36. Комплекс автоматизации и визуализации тестирования встроенного программного обеспечения электронных устройств / Прудков В.В.;  заявитель и патентообладатель Российская Федерация, от имени которой выступает Государственная корпорация по космической деятельности "Роскосмос" - 2017138949; заявл. 0911.2017; опубл 12.04.2019, Кулямин В. В. Методы верификации программного обеспечения.  - М.: Институт Системного Программирования РАН, 2008. - 111 с.; Законов А.Ю., Шалыто А.А. Применение генетических алгоритмов к генерации тестов для автоматных программ // Научно-технический вестник Санкт-Петербургского государственного университета информационных технологий, механики и оптики, 2011, № 2 (72), стр. 66 - 72 и др.] .
При этом необходимо учесть, что в соответствии с [РД Гостехкомиссии России «Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей» (установлен Приказом Председателя Гостехкомиссии России № 114 от 04.06.1999 г.); Методика выявления уязвимостей и недекларированных возможностей в программном обеспечении (Электронный ресурс https://ict.moscow/presentation/metodika-vyiavleniia-uiazvimostei-i-nedeklarirovannykh-vozmozhnostei-v-po/. Дата обращения 12.07.2020 г.); ГОСТ Р 56920-2016 Тестирование программного обеспечения ; Марков А. С., Цирлов В. Л., Барабанов А. В. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов; под ред. доц. А. С. Маркова. - М.: Радио и связь, 2012. - 192 с.; Бегаев А.Н., С.Н. Бегаев, Кашин С.В. Анализ программного кода при проведении сертификационных испытаний. - СПб: Университет ИТМО, 2018. - 41 с.; Бегаев А.Н., Кашин С.В., Маркевич Н.А., Марченко А.А., Выявление уязвимостей и недекларированных возможностей в программном обеспечении - СПб: Университет ИТМО, 2020. - 38 с.] при сертификации ПО по требованиям безопасности должны быть проведены следующие виды тестирования:
- статическое (тестирование программного обеспечения, выполняемое без фактического выполнения программ. Тестирование выполняется над какой-либо версией исходного либо объектного кода);
- динамическое (тестирование программного обеспечения, выполняемое путем исполнения программ на реальном или виртуальном процессоре).
Таким образом, должны быть сформированы и записаны в базу данных тесты, позволяющие провести перечисленные виды тестирования.
В блоке 5 фиг. 2 приступают к моделированию процесса противоборства между экспертом и нарушителем.
Алгоритм процесса противоборства между экспертом и нарушителем представлен на фиг. 3.
Для моделирования действий нарушителя:
В блоке 5.1 фиг. 3 производят активацию программной закладки.
Механизм активации  можно представить в виде функции :
.
w=0
w
1
При  программная закладка внедряться не будет, при =  - будет внедряться.
w=1
В случае внедрения ПЗ (при ) осуществляют выбор программной закладки (бл. 5.2  фиг. 3).
Внедряемая программная закладка может быть выбрана равновероятным образом либо по иному заданному распределению случайной величины (с учетом степени критичности, частоты применяемости  ПЗ нарушителями и т.д.).
В блоке 5.3 фиг. 3 осуществляют внедрение выбранной программной закладки.
Способы и инструментальные средства внедрения ПЗ описаны в [Казарин О.В. Теория и практика защиты программ. М. 2004. - 389 с.].
Для моделирования действий эксперта осуществляют выбор тестов для выявления ПЗ (бл. 5.4 фиг. 3).
В блоке 5.5 фиг. 3 осуществляют моделирование процесса выявления ПЗ.
В условиях ограничения на время и качество тестирования в связи с трудностями проведения натурных испытаний для моделирования процесса выявления ПЗ возможно применение методов теории игр [Миронов С.В. Применение аппарата теории игр для решения задачи выявления вредоносных закладок в программном обеспечении объектов критических информационных инфраструктур // III International Conference «The 2019 Symposium on Cybersecurity of the Digital Economy - CDE’19». - стр. 259 - 261; Шматова Е.С. Выбор стратегии ложной информационной системы на основе модели теории игр // Вопросы кибербезопасности №5(13) - 2015. - стр. 36 - 40;  Михалева У.А. Применение методов теории игр для устранения уязвимостей в программном беспечении организации // Автоматика и программная инженерия. 2016, №1(15). Стр. 30 - 32; Соснин Ю. В., Куликов Г. В., Непомнящих А. В. Комплекс математических моделей оптимизации конфигурации средств защиты информации от несанкционированного доступа //  Программные системы и вычислительные методы - №1(10). - 2015. стр. 32 - 44].
Процесс моделирования процесса выявления ПЗ в этом случае содержит следующие основные этапы:
Г
1. Задают игру  тройкой:
,
P
где  - конечное множество программных закладок,
N
- конечное множество тестов, содержащих набор сигнатур и атомарных операций,
и
- платежная функция игры от двух переменных .
Платежную функцию игры можно представить следующим образом:
где:
-  максимальное время испытаний ПО;
- - вероятность выявления -м тестовым набором -ой ПЗ:
;
,
=1
0
d=
- -тестовый набор  в случае наличия-го теста  в наборе, = - в случае отсутствия при ;
- - вероятность выявления -ым тестом -ой ПЗ.
Характеристики программных закладок и тестов, влияющие на процесс выявления:
- время на выполнение одиночного -го тестового набора в часах.
- степень критичности -ой ПЗ, в соответствии с моделью DREAD={1,2,3,4,5}.
- максимальная степень критичности закладок.
Модель DREAD представляет собой способ оценки риска по следующим категориям [Ховард М., Лебланк Д. Защищенный код/Пер. с англ. - 2е изд., испр. - М.: Издательство «Русская Редакция», 2005. - 704 стр., стр. 80 - 81].
Потенциальный ущерб (Damage potential) - мера реального ущерба от успешной атаки.
Воспроизводимость (Reproducibility) - мера возможности реализации опасности.
Подверженность взлому (Exploitability) - мера усилий и квалификации, необходимых для атаки.
Круг пользователей, попадающих под удар (Affected users) - доля пользователей, работа которых нарушается из-за успешной атаки.
Вероятность обнаружения (Discoverability).
Суммарная DREAD-оценка равна арифметическому среднему всех оценок.
1. Осуществляют построение матрицы игры.
Ф
i
i
i
i, m
j
j
n, j
i
i
i
j
j
j
Поскольку число возможных действий нарушителя и эксперта конечно, значения функции можно представить в виде матрицы, в -й строке которой последовательно расположены выигрыши первой стороны в ситуациях (, 1), (, 2),..., (), а в столбце - ее выигрыши в ситуациях (1, ), ..., (). Выбор нарушителем -ой ПЗ - стратегии - означает выбор строки , выбор экспертом -того теста - стратегии - выбор столбца .
2. Задают критерии остановки минимазиции платежной матрицы.
3. Находят решение матричной игры.
Г
Порядок нахождения решения матричной игры  известен и описан, например, в [Соснин Ю. В., Куликов Г. В., Непомнящих А. В. Комплекс математических моделей оптимизации конфигурации средств защиты информации от несанкционированного доступа //  Программные системы и вычислительные методы - №1(10). - 2015. стр. 32 - 44, Михалева У.А. Применение методов теории игр для устранения уязвимостей в программном беспечении организации // Автоматика и программная инженерия. 2016, №1(15). Стр. 30 - 32].
Так, для решения матричной игры может быть применена следующая последовательность действий:
-  рассчитывают средние эффективности;
-  проверяют выполнение условия удаления наименее эффективных из ПЗ/тестов  и принимают решение о продолжении процедуры;
- исключают наименее эффективные из ПЗ и/или тестов.
Данные действия выполняются до тех пор, пока не выполнится условие остановки процедуры минимизации платежной матрицы.
Нахождение решения матричной игры позволяет определить наиболее опасное множество ПЗ, которые может внедрить нарушитель, а также оптимальный набор тестов для выявления этих ПЗ, задаваемый экспертом.
В блоке 6 фиг.1 анализируют результаты моделирования.
В блоке бл. 7 фиг. 1 определяют и записывают в соответствующую базу данных оптимальный  набор тестов для выявления i-ой ПЗ.
В блоке бл. 8 фиг. 1 определяют и записывают в соответствующую базу данных наиболее опасное множество ПЗ.
В блоке 9 фиг. 1  осуществляют вывод результата.
Реализация предлагаемого способа не вызывает затруднений, так как все блоки, входящие в систему, реализующую способ, общеизвестны и широко описаны в технической литературе [Нечаев И.А. Конструкции на логических элементах цифровых микросхем. - Москва: Радио и связь, 1992. - 123 с.;  Белов А.В. Создаем устройства на микроконтроллерах. - СПб.: Наука и техника, 2007. - 304 с.;  Конструкторско-технологическое проектирование электронной аппаратуры. Учебник для вузов. Серия: Информатика в техническом университете. Под ред. Шахнова В.А. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2003. - 528 с.: ил.;  Суворова Е., Шейнин Ю. Проектирование цифровых систем на VHDL. Серия "Учебное пособие". - СПб.: БХВ-Петербург, 2003. - 576 с.: ил.; Овчинников В.А. Алгоритмизация комбинаторно-оптимизационных задач при проектировании ЭВМ и систем. Серия: Информатика в техническом университете. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. - 288 с.: ил.; Новиков Ю.В. Основы цифровой схемотехники. Базовые элементы и схемы. Методы проектирования. - М.: Мир, 2001. - 379 с.; Левин В.И. Носители информации в цифровом веке / Под общ. ред. Д.Г.Красковского. - М.: КомпьютерПресс, 2000. - 256 с.: ил.; Гук М. Дисковая подсистема ПК. - СПб.: Питер, 2001. - 336 с.: ил., Пей Ан. Сопряжение ПК с внешними устройствами. - М.: ДМК Пресс, 2003. - 320 с.: ил.].
Использование заявленного способа для формирования оптимального набора тестов для выявления программных закладок при проведении сертификационных испытаний программного обеспечения по требованиям безопасности показало существенное сокращение объема работы специалистов при тестировании ПО, сокращение временных затрат,  а также увеличение количества обнаруживаемых программных закладок на 20%.
Таким образом, за счет предварительного формирования оптимального  набора тестов для выявления программных закладок, получаемого в результате моделирования противоборства между нарушителем и экспертом, достигается заявленный технический результат, а именно повышение вероятности обнаружения ПЗ при сертификации ПО по требованиям безопасности, увеличение количества обнаруживаемых ПЗ,  уменьшение временных, аппаратных, инструментальных, кадровых ресурсов, затрачиваемых на проведение сертификационных испытаний.