Научная статья на тему 'ЗАХИСТ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ЗА ДОПОМОГОЮ ЗАПЛУТУЮЧИХ ПЕРЕТВОРЕНЬ'

ЗАХИСТ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ЗА ДОПОМОГОЮ ЗАПЛУТУЮЧИХ ПЕРЕТВОРЕНЬ Текст научной статьи по специальности «Прочие технологии»

CC BY
47
2
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
The Scientific Heritage
Область наук
Ключевые слова
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ / ОБФУСКАЦіЯ / ЗАПЛУТУЮЧі ПЕРЕТВОРЕННЯ

Аннотация научной статьи по прочим технологиям, автор научной работы — Корнага Я.І., Базака Ю.А., Базалій М.Ю.

В статті розкривається сутність захисту програмного коду шляхом використання заплутуючих перетворень. Проведено аналіз різних методів для забезпечення захисту коду від обфускації Розглянуто заплутування програм з точки зору стійкості заплутуючих перетворень по відношенню до різних методів статичного, статистичного і динамічного аналізу програм. Визначені методи аналізу програм для протидії більшості з описаних методів заплутування програм.

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

SOFTWARE PROTECTION USING THROUGH CONFUSING TRANSFORMATIONS

The article reveals the essence of protecting program code by using confusing transformations. The analysis of various methods for protection of the code from obfuscation is carried out. Confusion of programs from the point of view of stability of confusing transformations in relation to various methods of static, statistical and dynamic analysis of programs is considered. Methods of program analysis for counteracting most of the described methods of program entanglement are defined.

Текст научной работы на тему «ЗАХИСТ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ЗА ДОПОМОГОЮ ЗАПЛУТУЮЧИХ ПЕРЕТВОРЕНЬ»

ЗАХИСТ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ЗА ДОПОМОГОЮ ЗАПЛУТУЮЧИХ

ПЕРЕТВОРЕНЬ

Корнага Я.1.

кандидат технгчних наук доцент кафедри техн1чно'1 юбернетики Нацюнального технгчного утверситету Украти «Кшвський полтехнгчний iнститут 1мет 1горя Сжорського»

Базака Ю.А.

асистент кафедри техмчно! юбернетики Нацюнального технiчного утверситету Украти «Кигвський полтехтчний тститут iменi 1горя Сжорського»

Базалш М.Ю.

PHD-студент кафедри технiчноi юбернетики Нацюнального технiчного утверситету Украти «Кигвський полтехтчний тститут iменi 1горя Сжорського»

SOFTWARE PROTECTION USING THROUGH CONFUSING TRANSFORMATIONS

Kornaga Ya.

Candidate of technical sciences Associate Professor of Technical Cybernetics National Technical University of Ukraine "Igor Sikorsky Kyiv Polytechnic Institute"

Bazaka Yu.

Assistant of the department of technical cybernetics National Technical University of Ukraine "Igor Sikorsky Kyiv Polytechnic Institute"

Basaliy M.

PHD-student of the Department of Technical Cybernetics National Technical University of Ukraine "Igor Sikorsky Kyiv Polytechnic Institute"

Анотащя

В статп розкриваеться сутшсть захисту програмного коду шляхом використання заплутуючих пере-творень. Проведено аналiз рiзних методiв для забезпечення захисту коду вщ обфускацп Розглянуто заплу-тування програм з точки зору стшкосл заплутуючих перетворень по вщношенню до рiзних методiв статичного, статистичного i динамiчного аналiзу програм. Визначеш методи аналiзу програм для протидп бшь-шостi з описаних методiв заплутування програм.

Abstract

The article reveals the essence of protecting program code by using confusing transformations. The analysis of various methods for protection of the code from obfuscation is carried out. Confusion of programs from the point of view of stability of confusing transformations in relation to various methods of static, statistical and dynamic analysis of programs is considered. Methods of program analysis for counteracting most of the described methods of program entanglement are defined.

Ключов1 слова: програмне забезпечення, обфускащя, заплутуючi перетворення.

Keywords: software, obfuscation, confusing transformations.

Вступ. Необхвдшсть використання захисту програмного (ПЗ) забезпечення обумовлена низкою факторiв, серед яких слщ видiлити: незаконне використання алгоритмш, що е iнтелектуальною власнiстю автора при написанш аналогiв програмного продукту (промислове шпигунство), несанкць оноване використання (крадiжка i копiювання), не-санкцiонований доступ використання i модифшащя , незаконне розповсюдження та збут («тратство»). Тенденцiя зростання рiвня тратства, що зберта-еться призводить до збшьшення фiнансових втрат виробникiв ПЗ. У зв'язку з цим розробка ефектив-них методiв захисту для того або шшого програмного продукту ниш залишаеться однiею з важливих i актуальних завдань при розробщ спецiалiзованих

ПЗ, оскiльки це дозволяе унеможливити його неле-гальне використання. Витрати розробникiв на ство-рення ефективного методу захисту ïx програмних продуктiв стають економiчно доцшьними i компен-сують потенцiйний збиток, що завдаеться нелегаль-ним кошюванням i використанням програм.

Iснуючi способи захисту ПЗ можна роздiлити на способи, що реалiзовуються за допомогою програмних i апаратних засобiв захисту. До апаратних вiдносяться засоби, що використовують спещальне обладнання (наприклад, електроннi ключi, що тдк-лючаються до портiв комп'ютера) чи фiзичнi особ-ливостi носив iнформацiï (CD, DVD,CD - RW i так дал^, щоб iдентифiкувати оригiнальну вераю про-

грами i захистити продукт вад нелегального вико-ристання. Так1 методи найбiльш 3py4Hi для вироб-ника програмного забезпечення, оск1льки легко мо-жна захистити вже повнютю готовий i протестова-ний продукт. Програмш засоби захисту реалiзyються програмним шляхом без викорис-тання фiзичних характеристик носив шформацп, спецiального устаткування i т.п.

Програмш засоби захисту шформацп. Вщно-сно пiдтримання безпеки програмнi засоби мають ряд властивостей, що невигiдно вiдрiзняють 1х вщ апаратних засобiв. На вiдмiнy ввд апаратних засо-бiв, ПЗ не мають захисно! фiзичноl оболонки, вна-слщок чого вони виявляються уразливими для за-гроз конфiденцiйностi, модифжаци i котю-вання[1].

Серед рiзних методiв захисту шформацп' нада-ють перевагу методам, пов'язаним з фiзичним обме-женням доступу до шформацп, наприклад, шляхом зберiгання ii в строго захищеному просторi. Проте, як пльки здiйснюeться переход до обробки i пере-дачi шформацп, таш методи стають малоефектив-ними, а iнодi i неможливими[2]

У якосп програмних методiв захисту шформацп' розyмieться комплекс спецiальних алгоритмiв i компонентiв загального програмного забезпечення обчислювальних систем, призначених для вико-нання фyнкцiй контролю, розмежування доступу i виключення несанкцiонованого доступу [3]. Вони е поширеними для захисту ПЗ внаслщок !х ушверса-льностi, гнучкосп, простоти реалшцд, можливостi розвитку та адаптацп до постiйно змiнюваних умов експлуатаци обчислювальних систем i т.д. [4] Од-нак вони також мають ряд недолЫв, таких, як ви-трачання ресyрсiв центрального процесора обчис-лювально! системи на !х фyнкцiонyвання, можли-вiсть .несанкцюнованох змши. Програмний захист, як правило, застосовуеться там, де введення i вико-ристання iнших методiв i засобiв захисту шформацп утруднене. До програмних методiв захисту ПЗ вщноситься використання водяних знаков (software watermark), вiдбиток пальця (software fingerprint), установка достовiрностi коду (tamper-proofing), ши-фрування програмного коду (enciphering) i заплуту-вання програм (software obfuscation). [5]

Побудова методiв захисту програмних засо-6iB за допомогою заплутуючих перетворень. Процес заплутування - це процес трансформацii початково1 програми за допомогою заплутуючих перетворень, тсля якого програма стае заплута-ною, тобто:

Нехай Тг буде трансформуючим процесом по-чатково1 програми Ргl,тодi при Рг1 ^Тг ^Рг2.

Програма Pr2 буде трансформованим кодом програми Рл. Процес трансформацii Тг вважати-меться процесом заплутування, якщо будуть задо-воленi такi вимоги:

- код програми Pr2 в резyльтатi трансформацii iстотно вiдрiзнятиметься вщ коду програми Рг1, але при цьому вiн виконуватиме тi ж функцп, що i код програми Рг1;

- вивчення принципу роботи, тобто процес ре-версивно1 iнженерii програми Рг2 буде складшшим,

трудомiстким, i займатиме бшьше часу t, нiж програми Рп, тобто t Pr2> t Pri;

- при кожному процес трансформацii одного i того ж коду програми Pri, коди програм Рг1та Pr2, будуть рiзнi;

- створення програми, яка детрансформуе про-граму Pr2 до ii первинного вигляду, буде неефекти-вне.

Нехай Q - множина усiх програм (машин Т'юринга), що задовольняють сформульованим вище обмеженням, i нехай програма Рг 6Q обчис-люе функцiю FPr :Input^ Output.

Щдмножина ß £Q називаеться функцюналь-ною властивiстю, якщо VPr1,Pr2 е Q(fpri = fpr2 ^ (Pri eß^Pr2 е ß)).

Нехай ß - функцiональна властивiсть, N £ Q -клас програм такий, що iснуе ефективна програма Ргэ така, що для будь-я^' програми Рг е

N РГэ(Зк) = (^.

3V ' (.0,Prtß

1ншими словами, для функцiональноi власти-востi ß ми визначаемо клас програм N таких, що ю-нуе ефективна програма-розтзнавач Ргэ властиво-стi ß за програмою Рг iз класу N.

Iмовiрнiсна програма Рг2 називаеться заплуту-вачем класу N вщносно властивосл ß, (N, ß) -за-плутувачем, якщо виконуються умови:

- Екывалентшсть перетворення заплутування, тобто:

1. Pr eN, PreP;

2. Pr ePrz(Pr);

3. fPr = fpr

4. IPrl=poly (\Pr\), де \Pr\ i |Pr| - розмiр програми Pr i Pr ;

5.

Vx e dom (fPr ),

timepr(x) =

poly (timePr(x)), тобто timepr(x) обмежений по-лiномом деякого степеню вiд змiнноi' timePr(x), де timepr(x) - час виконання програми Pr на входi x.

Для будь-якого полiнома q i для будь-якоi програми (iмовiрнiсноi машини Т'юринга) PrT такий, що Prx(Pr2 (Q)) = {0, 1} i для будь-яко1' PreQ вико-нуеться timePrT(Prz(Pr)) = poly(\Prz(Pr)\), iснуе програма (iмовiрнiсна машина Т'юринга з оракулом) Ргто, i при цьому для будь-яко1' PreQ.

|p[PrT(Prz(Pr)) = Pre(Pr)] -p[PrToPr(l\Pr\)=Pre(Pr)]l<^,

тобто вiрогiднiсть визначити властивють ß за заплутаною програмою дорiвнюе вiрогiдностi ви-значення властивосл ß тiльки за входами i вихо-дами функцй' fp , тобто наявшсть тексту заплутано1' програми шчого не дае для виявлення властивостей цiеi' програми.

Унiверсальний заплутувач - це програма О, яка для будь-якого класу програм N i будь-яко1' власти-востi ß являеться (N,ß) -заплутувачем.

Доказ полягае в побудовi спецiального класу програм N i виборi тако1' властивосл ß, що для будь-якого перетворення програми з цього класу легко встановлюеться властивiсть ß.

Класифжащя способiв заплутування до за-стосованих методiв аналiзу i розплутування про-грам. Заплутуючi перетворення процесом форма-тування не стiйкi до методiв синтаксичного аналiзу, тому що програми мають властивiсть вiдкритостi семантики. Для аналiзу таких програм досить ви-вчення семантики програми, що дае можливють ви-значити внесет змши в програму. Так само для програм, реалiзованих мовами високого рiвня про-грамування, завжди можна застосовувати iнструме-нти автоматичного переформатування, тому вико-ристовувати так1 перетворення необхвдно для програм низько! вартостi, як1 не потребують високого рiвня захисту, або комбiнувати щ перетворення з iншими методами.

Заплутування перетворенням структур даних можна проаналiзувати статистичним i динамiчним аналiзом потоку даних. Аналiз потоку даних грун-туеться на вивченнi того, як в процес роботи програми змшюються в нiй дат (змтт, масиви). Та-кож достатньо легко провести аналiз вмiсту репст-рiв, тимчасових змiнних, в тому числ визначення повернених функцiями значень, поширення типiв даних.

Перетворення потоку керування нестiйкi до методiв статичного i статистичного аналiзу, тому що завжди е можливють вiзуалiзацil графа потоку керування, можливють провести порiвняння трас, одержаних на одному i тому ж наборi вх1дних даних, алгебра!чне спрощення для визначення непро-зорих предикат, статичне i динамiчне усунення мертвого коду.

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

1стотним недолшзм методiв оцiнки ефективно-стi процесу заплутування е те, що вони вщносяться тiльки до конкретного програмного коду. Цi методи можна роздiлити на двi групи: аналiтичнi, емтри-чнi. Аналiтичнi методи характеризуються такими показниками: стшшсть, унiверсальнiсть, вартiсть перетворення. Так методи оцiнки ефективно застосовувати при порiвняннi рiзних методiв заплуту-вання, але при цьому вони не можуть дати абсолютно! вiдповiдi на питання, наск1льки ефективним е застосування того чи шшого способу заплутуючих перетворень, саме по ввдношенню до даного програмного коду. Емпiричнi методи грунтуються на статистичних даних, одержуваних у результатi до-слвджень. Для проведения одного з таких досль джень потрiбна група експертiв, фрагмент коду

програми, що захищаеться, i Ha6ip рiзних алгорит-MiB заплутування.

Результати такого дослвдження будуть вклю-чати мiнiмальну шльшсть часу, який потрiбний групi експертiв для того, щоб вивчити кожен фрагмент коду, який пройшов один з алгоритмш заплу-тування.

Висновок. В статп визначенi поняття заплутуючих перетворень, заплутана програма i процес заплутування. Приведено формальне визначення за-плутувача i унiверсального заплутувача, а також приведена класифiкацiя заплутуючих перетворень i методiв аналiзу ввдповщно. Слiд зазначити, що за-вдання аналiзу програми, представлено! у викону-ваному виглядi, розбиваеться на два етапи декомт-ляцп i розплутування, тобто застосовуються алго-ритми аналiзу програм, як1 призводять до li можливо! перебудови, видiленню циклiв, умовних операторiв та iнших конструкцiй високого рiвня.

Розглянуто заплутування програм з точки зору стiйкостi заплутуючих перетворень по ввдношенню до рiзних методiв статичного, статистичного i ди-намiчного аналiзу програм. Визначенi методи ана-лiзу програм для протидп бiльшостi з описаних ме-тодiв заплутування програм.

Список лггератури

1. Stepanenko I., Kinzeryavyy V., Nagi A., Lo-zinskyi I. Modern obfuscation methods for secure coding. Ukrainian Scientific Journal of Information Security, 2016, vol. 22, issue 1. P. 32-37.

2. Kurmangaleev Shamil, Dolgorukova K.Y., Savchenko Valeriy, Nurmukhametov Alexey, Matev-osyan H.A., Korchagin V.P. Software deobfuscation methods: analysis and implementation. Proceedings of the Institute for System Programming of RAS. Vol. 24. P. 145-160.

3. Никольская К. Ю., Хлестов А. Д. Обфуска-ция и методы защиты программных продуктов. Вестник УрФО. Безопасность в информационной сфере. 2015. № 2(16). С. 7-10

4. Wang P., Wang S., Ming J. et al. Translingual Obfuscation. In Proceedings of the 1st IEEE European Symposium on Security and Privacy. Saarbrucken, Germany. 2016. — March 21-24.

5. Варновский Н.П., Захаров В.А., Кузюрин Н.Н., Шокуров А.В. Современное состояние исследований в области обфускации программ: определения стойкости обфускации. Труды Института системного программирования РАН. 2013. Vol. 26. С. 167-198.

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