Содержание к диссертации
Введение
Глава 1. Методологические подходы в задачах обнаружения и анализа двоичных информационных объектов в исходных текстах программного обеспечения. Состояние вопроса 10
1.1 Особенности использования двоичных информационных объектов в проектах программного обеспечения с открытыми исходными текстами 10
1.2 Проблемы обнаружения и анализа двоичных информационных объектов в исходных текстах программного обеспечения 13
1.3 Технологические аспекты контроля информационных объектов в исходных текстах программного обеспечения в процессе сертификационных испытаний и тематических исследований
1.3.1 Понятие идентификации объектов анализа в процессе их экспертного аудита 23
1.3.2 Использование прецедентного подхода в процессе экспертного аудита объектов программного обеспечения 1.4 Применение прецедентной методологии в процессе контроля массивов бинарных данных, реализуемом в ходе тематических исследований исходных текстов программного обеспечения 27
1.5 Формальная постановка задачи исследования 32
1.6 Выводы по главе 34
Глава 2. Метод идентификации массивов бинарных данных 36
2.1 Исследование существующих методов оценивания подобия объектов 36
2.2 Способ получения меры близости массивов бинарных данных, использующий независимые перестановки 46
2.3 Проверка адекватности разработанной модели процесса идентификации массивов бинарных данных 52
2.4 Выводы по главе 54
Глава 3. Алгоритмы поиска, канонизации и идентификации массивов бинарных данных в исходных текстах программного обеспечения 55
3.1 Алгоритм поиска массивов бинарных данных 55
3.2 Алгоритм канонизации массивов бинарных данных 60
3.3 Алгоритм идентификации массивов бинарных данных 66
3.4 Оценка корректности разработанных алгоритмов 78
3.5 Выводы по главе 83
Глава 4. Оценивание работоспособности и эффективности разработанных алгоритмов на основе вычислительных экспериментов 85
4.1 Оценка алгоритмов поиска и канонизации 85
4.2 Выбор хэш-функции для осуществления независимых перестановок 86
4.3 Доказательство гипотезы о равномерности распределения значений выбранной хэш-функции 88
4.4 Выбор значений управляемых параметров алгоритма идентификации 92
4.5 Экспериментальное исследование разработанного способа идентификации массивов бинарных данных 94
4.6 Выводы по главе 101
Заключение 103
Список терминов, сокращений и условных обозначений 106
Список использованных источников 109
- Технологические аспекты контроля информационных объектов в исходных текстах программного обеспечения в процессе сертификационных испытаний и тематических исследований
- Способ получения меры близости массивов бинарных данных, использующий независимые перестановки
- Алгоритм идентификации массивов бинарных данных
- Доказательство гипотезы о равномерности распределения значений выбранной хэш-функции
Введение к работе
Актуальность темы. Проблема безопасности программного обеспечения (ПО) является одной из важнейших в области информационной безопасности. Единственным способом обеспечения доверия к программному обеспечению, внедряемому в защищённые автоматизированные системы, является проведение его тематических исследований (ТИ). Основным направлением тематических исследований является контроль отсутствия недекларированных возможностей (НДВ). Заключение об отсутствии (наличии) недекларированных возможностей формируется на основании анализа результатов проверочных действий, перечень которых определяется положениями руководящего документа (РД) Гостехкомис-сии России (ФСТЭК России) "Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей". Данным руководящим документом предусмотрен контроль информационных объектов (ИО) различных типов, однако на практике информационные объекты исследуемого программного обеспечения могут содержать в своём составе бинарные данные. Массивы бинарных данных (МБД) лишь формально представляют собой информационные объекты, а фактически являются готовыми функциональными модулями или целыми программами, состав и назначение которых неизвестно вследствие отсутствия соответствующих им исходных текстов. При этом полные дубликаты, то есть точно совпадающие по содержимому массивы бинарных данных могут быть достаточно просто идентифицированы с использованием контрольных сумм или криптографических хэш-функций. Однако при идентификации найденных нечетких дубликатов массивов задача сводится к сравнению и получению меры близости последовательностей бинарных данных, отличающихся по своим размерам и содержанию.
Существующие на настоящее время сертифицированные средства автоматизации статического анализа исходных текстов не содержат необходимой функциональности для обнаружения и анализа массивов бинарных данных. Возросший интерес к этому вопросу подтверждается усилением требований регуляторов по контролю информационных объектов в части, касающейся массивов бинарных данных.
При этом обычно на тематические исследования программного обеспечения среднего объема отводится период от 3 до 6 месяцев. Для более сложного программного обеспечения временной период проведения тематических исследований увеличивается до 1 года. Однако, при существенном увеличении объёма исходных текстов, характерном для сложного программного обеспечения, ресурсов
типовой сертификационной лаборатории может быть недостаточно для своевременного проведения всех предусмотренных проверок. Следствием этого могут быть незапланированное увеличение сроков проведения тематических исследований или снижение качества принятых экспертами решений.
Решением проблемы идентификации и получения меры близости в различных предметных областях занимался ряд ученых. Наиболее известные исследования в этом направлении выполнены Э. Триджеллом, Э. Бродером, М. Миценмахером, Р. Хэммингом, Зеленковым Ю. Г., Сегаловичем И. В., Тверетиным А. А., Пименовым В. Ю., и другими зарубежными и российскими учеными.
На сегодняшний день для идентификации массивов бинарных данных возможно использование значительного числа методов, основанных на применении: различных метрик (расстояние Хэмминга, Левенштейна), цифрового преобразования и анализа дискретных сигналов (корреляционные функции, преобразование Фурье, вейвлет-преобразование), анализа текстов (алгоритм Рабина-Карпа, поиск наибольшей общей подстроки). Каждый из этих методов обладает своими достоинствами и недостатками, при этом, в целом, они не удовлетворяют требованию по оперативности процесса идентификации массивов бинарных данных.
Таким образом, возросшие требования к контролю информационных объектов при сохранении временных характеристик, отводимых на проведение тематических исследований, определяют актуальность разработки алгоритмов поиска и идентификации массивов бинарных данных, удовлетворяющих требованию к оперативности процесса контроля информационных объектов.
Область исследования. Содержание диссертации соответствует паспорту специальности 05.13.17 «Теоретические основы информатики» (технические науки) по следующим областям исследования:
п.5. Разработка и исследование моделей и алгоритмов анализа данных, обнаружения закономерностей в данных и их извлечениях разработка и исследование методов и алгоритмов анализа текста, устной речи и изображений.
Объект исследования: массивы бинарных данных в исходных текстах программного обеспечения.
Предмет исследования: методы поиска и идентификации массивов бинарных данных в исходных текстах программного обеспечения.
Цель исследования: повышение оперативности процесса контроля массивов бинарных данных при сохранении его результативности и ресурсоёмкости.
Научная задача заключается в разработке комплекса алгоритмов, обеспечивающего требуемую оперативность процесса контроля массивов бинарных данных.
Для решения научной задачи и достижения цели исследования были определены частные задачи диссертационного исследования:
-
Анализ типовых программно-аппаратных решений, применяемых в современных средствах проведения тематических исследований программного обеспечения, в части касающейся контроля информационных объектов.
-
Исследование существующих моделей, методов и алгоритмов поиска и идентификации массивов бинарных данных.
-
Разработка метода идентификации массивов бинарных данных, обеспечивающего минимизацию времени контроля массивов бинарных данных.
-
Разработка комплекса алгоритмов поиска, канонизации и идентификации массивов бинарных данных в исходных текстах программного обеспечения.
-
Оценивание разработанных метода идентификации, комплекса алгоритмов поиска, канонизации и идентификации массивов бинарных данных в исходных текстах программного обеспечения.
Методы исследования. Научной основой для решения поставленной задачи являются: теория распознавания образов, методы системного анализа и моделирования, вычислительных экспериментов, анализа временных рядов, теория вероятностей и математической статистики, теория эффективности целенаправленных процессов.
Научная новизна работы заключается в:
-
Способе представления массивов бинарных данных в составе исходных текстов программного обеспечения в виде последовательности, содержащей совокупность подмножеств элементов алфавита языка программирования, позволяющем решить задачи их выделения с использованием автоматной модели и канонизации с использованием автокорреляционной функции.
-
Способе представления выделенных из исходных текстов программного обеспечения массивов бинарных данных идентификаторами фиксированного размера, отличающимся от известных разделением массивов на блоки и получением меры близости с эталонными массивами, подчиняющейся биномиальному распределению.
-
Разработке комплекса алгоритмов поиска, канонизации и идентификации массивов бинарных данных, отличающегося от известных низкой оценкой вычислительной сложности, что обеспечивает повышение оперативности процесса контроля информационных объектов в исходных текстах программного обеспечения.
Теоретическая значимость полученных решений заключается в адаптации метода обнаружения нечётких дубликатов документов к задаче идентификации массивов бинарных данных, позволяющей за счет вычисления меры близости идентификаторов массивов бинарных данных повысить оперативность процесса контроля массивов бинарных данных.
Практическая значимость работы определяется в доведении предложенных теоретических и алгоритмических конструкций поиска, канонизации и идентификации массивов бинарных данных до уровня программных средств, предусматривающих непосредственное применение в процессе проведения тематических исследований программного обеспечения, что подтверждается актом внедрения в деятельность испытательной лаборатории ОАО «СИНКЛИТ» и свидетельством о государственной регистрации программы для ЭВМ №2016615457. Разработанные теоретические положения отражены в заявке на изобретение № 2015127124 от 06.07.2015 г. «Способ поиска и идентификации массивов бинарных данных».
Научные положения, выносимые на защиту:
-
Метод идентификации массивов бинарных данных в исходных текстах программного обеспечения.
-
Комплекс алгоритмов поиска, канонизации и идентификации массивов бинарных данных.
-
Результаты сравнительных вычислительных экспериментов, подтверждающие эффективность разработанного комплекса алгоритмов.
Достоверность выводов и рекомендаций обусловлена корректным оцениванием адекватности разработанной в рамках предложенного метода модели процесса идентификации массивов бинарных данных, проверкой свойств и вычислительной сложности разработанных алгоритмов, а также подтверждена результатами экспериментов.
Личный вклад соискателя. Все изложенные в диссертации результаты исследований получены либо соискателем лично, либо при его непосредственном участии.
Апробация результатов диссертационного исследования. Результаты диссертационных исследований обсуждались на следующих научно-технических конференциях: 10-я Межведомственная конференция «Научно-техническое и информационное обеспечение деятельности спецслужб», ИКСИ, Москва, 2014 г.; V Международная научная конференция «Фундаментальные проблемы системной
безопасности и устойчивости», Елецкий государственный университет, 2014 г.;
20-я международная открытая научная конференция «Современные проблемы информатизации», Воронежский ГТУ, 2014 г.; IХ Всероссийская межведомственная научная конференция «Актуальные направления развития систем охраны, специальной связи и информации для нужд государственного управления», Академия ФСО России, Орел, 2015 г.; 11-я Межведомственная конференция «Научно-техническое и информационное обеспечение деятельности спецслужб», ИКСИ, Москва, 2016 г.
Публикации. По теме диссертационного исследования опубликовано 5 печатных работ (из них 4 научных статьи опубликованы в 3-х рецензируемых журналах, рекомендованных ВАК при Минобрнауки России), в том числе Свидетельство Роспатента РФ о государственной регистрации программы для ЭВМ.
Объем и структура работы. Диссертация состоит из Введения, четырех глав, Заключения и Приложений. Работа изложена на 130 страницах машинописного текста, включая 38 рисунков, 9 таблиц и список литературы из 97 наименований.
Технологические аспекты контроля информационных объектов в исходных текстах программного обеспечения в процессе сертификационных испытаний и тематических исследований
В дальнейшем в [24] указанный алгоритм был расширен применительно к сравнению двоичных файлов. Более детально его особенности будут представлены в п. 2.1 настоящего исследования.
С точки зрения информационной безопасности необходимость распознавания и анализа двоичных объектов в составе исходных текстов программного обеспечения связана с тем, что распространяемые в рамках исходных текстов программного обеспечения двоичные объекты могут содержать как ошибки реализации, так и не заявленную их разработчиком функциональность, выражающиеся в появлении недекларируемых возможностей (НДВ), связанных с уязвимостями программного обеспечения. Как было рассмотрено в п. 1.1, одной из наиболее распространенных реализаций двоичных объектов, размещаемых в исходных текстах ядра операционной системы Linux являются драйверы устройств. Высокая интенсивность модификаций, вносимых в функциональность драйверов, включаемых в состав исходных текстов ядра операционной системы Linux подтверждается статистическими данными, представленными в [25, 26].
В [3, 27, 28] указывается, что поскольку драйверы работают с тем же уровнем привилегий, что и core-составляющая ядра операционной системы (kernel mode), то из-за наличия в них уязвимостей недоверенное программное обеспечение может использовать их для выполнения произвольного кода в режиме ядра, а также получать доступ к структурам самого ядра.
Как указывается в [29], уязвимости программного обеспечения, в том числе и драйверов устройств – разновидность его дефекта, которая не была выявлена в ходе штатного тестирования программного обеспечения, и, соответственно, не декларированная спецификацией разработчика. С точки зрения информационной безопасности, уязвимости программного обеспечения предоставляют злоумышленнику возможности по разглашению, модификации, блокированию использования и необратимому уничтожению пользовательской информации.
В [3] приводится условная классификация уязвимостей драйверов, основанная на классификационном признаке распространения уязвимости на отдельный тип, группу или класс драйверов. Согласно этой классификации уязвимости можно разделить на типовые и нетиповые. Нетиповые уязвимости связаны с некорректным взаимодействием с соответствующими устройствами и затрагивают характерные особенности (типы данных, ограничения и другое) только для некоторого драйвера. Для типовых уязвимостей, напротив, можно выделить правила, общие для группы или целого класса драйверов.
Очевидно, что для сложных проектов программного обеспечения задачи поиска и устранения уязвимостей являются очень трудозатратными.
В настоящее время, в общем виде эти задачи решаются методами экспертного аудита, основанными на сопоставлении экспертом-аналитиком фактической реализации алгоритмов на уровне исходных текстов и/или бинарного кода заданной спецификации программного обеспечения. При этом возможны решения задачи поиска как типовых ошибок реализации программного обеспечения на уровне его базовой логики (работа с памятью, межпроцессный обмен, операции ввода-вывода), так и на уровне прикладной логики, определяющей специфику программного обеспечения.
В большинстве случаев эти задачи в рамках экспертного аудита решаются методами функционального тестирования («черный ящик»), структурного тестирования («белый ящик») и обратной инженерии.
В обобщенном виде принцип функционального и структурного тестирования представлен на рисунке 1.2. Функциональное тестирование Структурное тестирование Рис. 1.2 – Обобщенное представление принципов функционального и структурного тестирования программного обеспечения В [30] при использовании функционального тестирования для оценивания корректной реализации операционными системами своей функциональности указывается, что для организации их функционального тестирования необходимым условием является наличие: описания архитектуры ее компонентов, реализующих целевую функциональность, подробных требований к базовым интерфейсам.
В ходе выполнения обратной инженерии эксперту-аналитику необходимо выделить набор команд, реализующие алгоритм двоичного объекта и на их основе восстановить описание этого алгоритма и используемых им структур данных. При удачном восстановлении алгоритма в дальнейшем выполняется анализ его свойств, позволяющий найти критические ошибки реализации и, как следствие, уязвимости.
В [31] выполнено исследование статистики применения указанных методов экспертного аудита в ходе проведения сертификационных испытаний зарубежного программного обеспечения. Результаты исследования представлены на рисунке 1.3.
Способ получения меры близости массивов бинарных данных, использующий независимые перестановки
Попытка автоматизировать задачу поиска МБД была предпринята Фондом свободного программного обеспечения [16]. Первые работы по удалению МБД из исходных текстов ядра ОС Linux начали проводиться в 2006 году, а в 2007 году появился окончательный проект Linux-Libre под лицензией GPL, представляющий собой модифицированную версию ядра Linux [16]. Модификация заключалась в удалении из исходных текстов МБД с помощью специального скрипта deblob-main [19]. При этом для проверки исходных текстов ядра Linux на наличие МБД используется скрипт deblob-check [19], включающий в себя список определенных конструкций для поиска, заданных в виде регулярных выражений, например: ЫоЬпа [/][ ] Г ] \([ ]\+[л/ ][л ] \) [ ] РСА-200Е[] firmware[][ ][/] drivers/atm/fore200emkfirm.с Аналогичный проект GNewSense существует для ядра ОС Debian [15]. Достоинствами подобного метода являются высокая скорость и точность, обусловленные высокой формализацией условий поиска [68-69]. Однако, ряд существенных недостатков делают данный метод неприменимым в ходе проведения ТИ. Такими недостатками являются: - необходимость наличия точных априорных знаний о местонахождении и содержании МБД; - ограничение области поиска исключительно ядром ОС без учёта пакетов прикладного ПО; - ориентированность на проверку серийных образцов программного обеспечения, а не на разовые ТИ единичных образцов ПО; - изначально высокая сложность составления шаблонов поиска; - необходимость перепроверки шаблонов поиска при внесении изменений в исходные тексты ПО, например, при разработке нового релиза ядра ОС.
В ходе исследования было установлено, что даже для одного языка программирования содержание и синтаксис оформления МБД отличаются многообразием, а применяемые типы данных зачастую не являются стандартными для использованного языка программирования. Вследствие этого дальнейшее усложнение методологии поиска, основанной на использовании формальных языков поиска (регулярных выражениях), является нецелесообразным.
Было также отмечено, что для большинства МБД можно сформулировать следующее утверждение: подмножество элементов алфавита МБД в несколько раз меньше множества элементов алфавита языка программирования. В частности, для языка программирования C++ содержимое МБД характеризуется большим количеством последовательно идущих цифр, служебных символов и некоторых букв (при использовании шестнадцатеричной системы счисления), в то время как обычные исходные тексты содержат в основном информацию в виде символов алфавита английского языка. Задачи поиска в подобных условиях успешно решаются детерминированными конечными автоматами. Одно из определений конечного детерминированного автомата звучит следующим образом: абстрактный автомат является математической моделью дискретного устройства и описывается шестикомпонентным набором S = (A, Z, W, , , a1), где A = {a1, …, am, …, aM} – множество состояний или алфавит состояний абстрактного автомата; Z = {z1, …, zf , …, zF} – множество входных сигналов или входной алфавит абстрактного автомата; W = {w1, …, wg, …, wG} – множество выходных сигналов или выходной алфавит абстрактного автомата; – функция переходов абстрактного автомата, которая некоторым парам состояние-входной сигнал (am, zf) ставит в соответствие состояние абстрактного автомата as , т.е. as = (am, zf), as A; – функция выходов абстрактного автомата, которая некоторым парам состояние-входной сигнал (am, zf) ставит в соответствие выходной сигнал абстрактного автомата wg, т.е. wg = (am, zf), wg W; а1 – начальное состояние абстрактного автомата [70].
Представим задачу поиска символов в описанных выше условиях в виде детерминированного конечного автомата. Исходными данными для решения поставленной задачи является упорядоченная пятерка элементов некоторых множеств: M = (V, Q, q0, F, ), где V – входной алфавит, Q – множество состояний, q0 – начальное состояние, F – множество заключительных состояний, – функции переходов. Для представления о способе решения поставленной задачи с помощью конечного детерминированного автомата необходимо определить каждое из указанных выше множеств.
Алгоритм идентификации массивов бинарных данных
По результатам анализа алгоритмов некриптографических хэш-функций в качестве базовой для метода независимых перестановок выбрана функция, основанная на линейном конгруэнтном методе: /фу)=( еф] hisj +Sj) mod т, (4.3) где Sj - байт данных, seed[i] коэффициент хэш-функции, т - значение модуля. Данный выбор обусловлен низкой вычислительной сложностью (1 умножение, 1 сложение, 1 взятие по модулю), а также возможностью получения набора хэш-функций для независимых перестановок с помощью различных значений коэффициента функции seed[i].
Определим понятие хэш-функции hi. Пусть S - это множество возможных блоков на входе хэш-функции. В общем случае размер блока выбирается исходя из общего размера сравниваемых данных и специфики решаемой задачи. Определим хэш-функцию как отображение: hm: S {deN, 0 d m -\, meN). (4.4) При использовании 4 байт для хранения значения хэш-функции модуль может принимать значения т 232. С учетом требований к линейному конгруэнтному методу целесообразно в качестве модуля принять наиболее близкое к максимальному значению простое число т = 4 294 967 291. Очевидно, что при заданных размерах входных и выходных данных хэш-функция hi не будет являться совершенной [88], поскольку она не инъективна на D S [89]. Таким образом, согласно принципу Дирихле, неизбежно наличие коллизий хэш-функции. Однако с учетом некриптографического применения хэш-функции для независимых перестановок вопросы стойкости к коллизиям и необратимости не рассматриваются ввиду отсутствия злоумышленника и возможности дискредитации информации.
В самой простой постановке выполнение требования по равномерности распределения значений хэш-функции можно проверить, перебрав все возможные блоки на входе хэш-функции из множества S, и построить ряд частот хэш-значений. При идентификации массивов бинарных данных для примера будет использоваться размер блока Wb = 16 (байт), таким образом, S = {seN, О s 2128}. Очевидно, что такое количество вариантов на входе хэш-функции слишком велико для полного перебора, а составление словарей из имеющейся выборки массивов бинарных данных представляется нецелесообразным.
Создание индексного массива из т элементов для построения ряда частот хэш-значений также нецелесообразно вследствие большого размера модуля и избыточности выделяемой памяти. Таким образом, для проверки равномерности распределения хэш-значений предлагается использовать метод статистических испытаний и критерий согласия с нулевой гипотезой о равномерности распределения полученной выборки.
Наиболее распространенным критерием в задачах математической статистики является критерий Пирсона (%2 - Хи-квадрат) [90]. Пусть результаты испытания таковы, что все они могут быть разделены на F категорий. Проводится / независимых испытаний, т. е. таких, на исход каждого из которых не влияют результаты любого из остальных испытаний.
При проверке рассчитывается 2 р(п-п)2 X = , (4.5) г=1 И. где ПІ и ПІ - эмпирические и теоретические частоты выпадения соответствующих /-х значений. Считается, что гипотеза о равномерности распределения принимается с вероятностью не менее 95 %, если рассчитанное значение %2 не превысило критического значения %2крит для доверительной вероятности 0,95 и k = F - 2 - 1 (к- число степеней свободы, 2 - число параметров, по которому оценивается равномерное распределение, 1 - константа в критерии Пирсона) [91].
Условием использования критерия Пирсона является достаточно большое количество испытаний /. Кроме того, статистические свойства критериев типа X2 зависят как от того, каким образом область значений случайной величины разбивается на интервалы, так и от выбора числа интервалов группирования F [92]. Рекомендуемое в различных источниках количество интервалов группирования, используемое при проверке статистических гипотез с помощью критерия Пирсона, колеблется в очень широких пределах.
Поскольку проверяется гипотеза о равномерном распределении значений хэш-функции, множество возможных хэш-значений D разбивается на равные интервалы. При этом количество интервалов можно определить исходя из минимизации ошибки разбиения є 1, неизбежно возникающей в случае простого значения модуля т. Возможные значения количества интервалов для минимальной ошибки є =1 представлены в таблице 4.2.
Доказательство гипотезы о равномерности распределения значений выбранной хэш-функции
В современных условиях, обусловленных политико-экономическими тенденциями, направленными на реализацию стратегии импортозамещения в области инфокоммуникационных систем, в том числе и в интересах органов государственной власти и управления, использование программного обеспечения с открытым исходным кодом приобретает особую важность. Наличие открытого исходного кода в ключевых проектах системного и прикладного программного обеспечения обеспечивает возможность его использования в системах, обрабатывающих информацию различного уровня конфиденциальности, путем проведения соответствующих сертификационных испытаний с учётом требований современной нормативной базы в области информационной безопасности. Между тем, одной из тенденций в разработке сложных проектов с открытым исходным кодом является широкое использование в их рамках проприетарных компонентов, например, драйверов устройств, оформленных в виде предварительно откомпилированных модулей – массивов бинарных данных. Наличие таких компонентов в проходящем сертификацию проекте существенно осложняет работу испытательной лаборатории, поскольку требует применения экспертных методик, обусловленных фактическим наличием нечетких дубликатов таких компонентов, поддерживающих одинаковую функциональность. Диссертационное исследование направлено на повышение оперативности процесса контроля массивов бинарных данных в ходе проведения тематических исследований программного с открытым исходным кодом за счет разработки метода идентификации массивов бинарных данных и его алгоритмической реализации, обеспечивающей автоматизацию этапов контроля, что является важной и актуальной научной задачей.
Научная задача, решенная в диссертации, может быть классифицирована как задача применения известных научных методов в новой предметной области. Новизна полученных решений лежит в разрезе обеспечения возможности автоматизации ряда процессов, которые ранее осуществлялись только экспертным путём. Степень обоснованности научных положений и выводов подтверждена вычислительным экспериментом, подтверждающим обоснованность разработанного метода идентификации и возможности применения разработанной совокупности алгоритмов в технологическом цикле автоматизированного контроля информационных объектов процесса тематических исследований программного обеспечения. Основными научными результатами работы являются: 1. Метод идентификации массивов бинарных данных в исходных текстах программного обеспечения, позволяющий представлять их идентификатором фиксированного размера с учетом разделения идентифицируемого и эталонного массивов на блоки и получения меры их близости, проведена проверка адекватности разработанной в рамках метода модели процесса идентификации. В рамках разработанного метода идентификации обоснованно выбраны: значения размера блока (совокупности байтов массива), используемого в качестве элемента сравнения в методе шинглов, вид хэш-функции с доказательством её необходимых свойств и количество хэш-функций, необходимых для получения требуемых значений меры близости. 2. Алгоритм поиска массивов бинарных данных, позволяющий производить конфигурирование поиска и снимающий ограничения по области поиска, зависимости от языка программирования и наличию априорных знаний о существовании и содержании массивов. 3. Алгоритм канонизации найденных массивов бинарных данных, решающий задачу выделения информационной части последовательности байт содержимого массивов и позволяющий повысить точность их идентификации вследствие устранения избыточности, вызванной наличием в них служебных символов. 105 4. Алгоритм идентификации массивов бинарных данных, отличающийся от известных алгоритмов, основанных на методе шинглов и характеризующихся экспоненциальным ростом операций, низкой оценкой вычислительной сложности, обусловленной особенностями разработанного метода идентификации. 5. Результаты вычислительного эксперимента, подтверждающие эффективность разработанного метода идентификации в сравнении с существующими методам и обосновывающие возможность использования разработанных алгоритмов в ходе автоматизированного контроля информационных объектов процесса тематических исследований программного обеспечения.
Перспективы дальнейшей разработки темы. В результате исследования определены направления для дальнейшего совершенствования предложенного метода: - формирование аналитических выражений для получаемой меры близости и её точности в зависимости от области применения, содержимого и размеров идентифицируемых объектов, позволяющее выработать конкретные рекомендации по выбору управляемых параметров алгоритмов поиска, канонизации и идентификации; - расширение набора независимых хэш-функций, использующихся для независимых перестановок, позволяющее с заданными характеристиками оперативности, точности и надёжности получать соответствующую меру близости в различных условиях функционирования.