Научная статья на тему 'Методика верификации алгоритма работы модифицированного программного модуля'

Методика верификации алгоритма работы модифицированного программного модуля Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
235
18
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭКВИВАЛЕНТНОСТЬ ПРОГРАММ / МОДИФИКАЦИЯ КОДА / ВЕРИФИКАЦИЯ КОДА / PROGRAM EQUIVALENCE / CODE MODIFICATION / CODE VERIFICATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Субботин Н.А.

Предложена методика верификации алгоритма работы модифицированного программного модуля. Данная методика может быть применена для верификации программных комплексов систем управления ракетно-космическими аппаратами в случае их модификации.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

TECHNIQUE OF PROGRAM MODULE’S ALGORITHM VERIFICATION AFTER ITS MODIFICATION

This article suggests the technique of program module’s algorithm verification after its modification. Described technique may be implemented to verify management software of rocket-space devices in case of its modification.

Текст научной работы на тему «Методика верификации алгоритма работы модифицированного программного модуля»

УДК 004.056.53

МЕТОДИКА ВЕРИФИКАЦИИ АЛГОРИТМА РАБОТЫ МОДИФИЦИРОВАННОГО

ПРОГРАММНОГО МОДУЛЯ

Н. А. Субботин Научный руководитель - И. А. Лубкин

Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева Российская Федерация, 660037, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31

Е-mail: sub.nik.and@gmail.com

Предложена методика верификации алгоритма работы модифицированного программного модуля. Данная методика может быть применена для верификации программных комплексов систем управления ракетно-космическими аппаратами в случае их модификации.

Ключевые слова: эквивалентность программ, модификация кода, верификация кода.

TECHNIQUE OF PROGRAM MODULE'S ALGORITHM VERIFICATION

AFTER ITS MODIFICATION

N. A. Subbotin Scientific Supervisor - I. A. Lubkin

Reshetnev Siberian State Aerospace University 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660037, Russian Federation Е-mail: sub.nik.and@gmail.com

This article suggests the technique of program module's algorithm verification after its modification. Described technique may be implemented to verify management software of rocket-space devices in case of its modification.

Keywords: program equivalence, code modification, code verification.

На данный момент существует множество систем защиты, применяемых к скомпилированному программному продукту: ASProtect [0], EXECryptor [2], Themida [3], Private exe Protector [4] и др. Данные средства позволяют защитить программу от несанкционированного использования и предотвратить ее вредоносные модификации. Последнее особенно актуально в высоконадежных системах, к которым относятся системы управления ракетно-космическими аппаратами [5].

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

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

В качестве еще одного примера можно привести предложенный в [7] подход к защите программы - встраивание системы защиты в скомпилированную программу. Развитие данного подхода со стороны корректности преобразований программного кода представлено в [8]. В данной работе в качестве поставщика информации о структуре программного кода используются дизассемблеры. На момент выполнения работы не найдены дизассемблеры, которые имели бы математически доказанную корректность работы для произвольных входных данных, а, следователь-

Актуальные проблемы авиации и космонавтики - 2017. Том 2

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

Исходя из описанных выше проблем была сформулирована цель работы - создание методики верификации алгоритма работы модифицированного программного модуля и системы верификации на её основе.

Недоверие к источнику информации о структуре программного модуля приводит к тому, что используемые в работе методики верификации программного модуля имеют вероятностный характер, и, предположительно, неустранимый. Из существующих методов верификации программ [10] с учетом требования автоматизации и, как следствие, отсутствия необходимости непосредственного участия человека были выбраны два метода анализа: статический, имеющий некоторую вероятность корректной работы ps, и динамический, имеющий вероятность корректной работы pd. Данные методы последовательно применяются к каждому базовому блоку (Basic Block, далее - BB) - последовательности инструкций, каждая из которых исполняется тогда и только тогда, когда исполняется первая инструкция из последовательности [11] - программного модуля.

При проведении проверки каждого BB с заданными вероятностями статического и динамического анализов, получим вероятность корректности программного модуля pP = n / m, где n -число проверенных BB, m - число всех BB. В рамках данной работы методом верификации выбран динамический анализ множества BB программного модуля. Это связано с тем, что динамический анализ позволяет определить равенство алгоритмов двух BB.

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

Помимо разработанного средства, система верификации использует утилиты xxd [12] - для перевода из бинарного вида в текстовый - и diff [13] - для непосредственного сравнения. Для автоматизации процесса сравнения были разработаны bash-скрипты, запускающие программы в необходимом порядке.

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

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

Библиографические ссылки

1. ASPack Software [Электронный ресурс]. URL: http://www.asprotect.ru/ (дата обращения: 11.04.2017).

2. EXECryptor [Электронный ресурс]. URL: http://www.strongbit.com/execryptor.asp (дата обращения: 11.04.2017).

3. Oreans Technology [Электронный ресурс]. URL: http://www.oreans.com/themida.php (дата обращения: 11.04.2017).

4. Private exe Protector [Электронный ресурс]. URL: https://private-exe-protector.com/ (дата обращения: 11.04.2017).

5. Тюгашев А. А., Ильин И. А., Ермаков И. Е. Пути повышения надежности и качества программного обеспечения в космической отрасли [Электронный ресурс] // Управление большими

системами. Выпуск 39. URL: http://ubs.mtas.ru/archive/search_results_new.php?publication_id= 18862 (дата обращения: 06.09.2016).

6. Peter Ször, Peter Ferrie. Hunting for metamorphic [Электронный ресурс] // Symantec Security Response, 2003 URL: http://www.symantec.com/avcenter/reference/hunting.for. metamorphic.pdf (дата обращения: 22.03.2016).

7. Кукарцев А. М., Лубкин И. А. Методика защиты программного кода от несанкционированной модификации и исследования посредством его хеширования [Электронный ресурс] // Вестник СибГАУ. 2008. № 1. URL: http://cyberleninka.ru/article/n/metodika-zaschity-programmnogo-koda-ot-nesanktsionirovannoy-modifikatsii-i-issledovaniya-posredstvom-ego-heshirovaniya (дата обращения: 22.03.2016).

8. Субботин Н. А., Лубкин И. А. Методика автоматической модификации программного кода с сохранением алгоритма работы [Электронный ресурс] // Решетневские чтения : материалы XX Юбилейной междунар. науч. конф. (09-12 ноября 2016, г. Красноярск) : в 2 ч. / под общ. ред. Ю. Ю. Логинова ; Сиб. гос. аэрокосмич. ун-т. Красноясрк, 2016. Часть 2. С. 277-278. URL: https://disk.sibsau.ru/index.php/s/UGP7UcMvdmtYV7o (дата обращения: 11.04.2017).

9. Peter Ször, Peter Ferrie. Hunting for metamorphic [электронный ресурс] // Symantec Security Response, 2003 URL: http://www.symantec.com/avcenter/reference/hunting.for.metamorphic.pdf (дата обращения: 22.03.2016).

10. Кулямин В. В. Методы верификации программного обеспечения [Электронный ресурс] // Институт системного программирования РАН - Москва, 2003. URL: http://www.ict.edu.ru/ft/ 005645/62322e1-st09.pdf (дата обращения: 01.03.2016).

11. John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach. Fourth Edition [Электронный ресурс] // Morgan Kaufmann Publishers is an Imprint of Elsevier - San Francisco, 2007. URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.115.1881&rep=rep1 &type=pdf (дата обращения: 28.02.2017).

12. xxd [Электронный ресурс] // LinuxCommand.org, 1996. URL: http://linuxcommand.org/ man_pages/xxd1.html (дата обращения: 11.04.2017).

13. diff [Электронный ресурс] // LinuxCommand.org, 1993. URL: http://linuxcommand.org/ man_pages/diff1.html (дата обращения: 11.04.2017).

© Субботин Н. А., 2017

i Надоели баннеры? Вы всегда можете отключить рекламу.