
- •6.170103 «Управління інформаційною безпекою»
- •1. Основні положення та теоретичні відомості
- •1.1. Методи побудови ключових ознак на дисках.
- •1.2. Захист програм від дизасемблерів та налагоджувачів
- •1.2.1. Захист програм від статичних методів дослідження.
- •1.2.2. Захист програм від динамічних методів дослідження.
- •2. Вихідні дані та варіанти завдань.
- •3. Приклади виконання курсової роботи та фрагменти програм що демонструють окремі методи захисту.
- •4. Тематика курсової роботи
- •5. Приклади варіантів виконання курсової роботи
- •6. Список рекомендованої літератури
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний авіаційний університет
Кафедра безпеки інформаційних технологій
ПРОГРАМНИЙ ЗАХИСТУ ІНФОРМАЦІЇ
Методичні вказівки до виконання курсової роботи для студентів
Інституту інформаційно-діагностичних систем
6.170103 «Управління інформаційною безпекою»
Київ 2010
1. Основні положення та теоретичні відомості
Тематика курсової роботи пов'язана з захистом інформації від копіювання, реасемблювання та налагодження. В курсовій роботі, відповідно до варіанта, який вибирається за двома останніми цифрами залікової книжки, виконати розробку алгоритму та програми, що використовується для захисту програмного забезпечення від копіювання та статистичних і динамічних методів дослідження.
1.1. Методи побудови ключових ознак на дисках.
Неформатовані доріжки і сектори, зміна їх числа. При форматуванні диска частина доріжок може бути пропущена. Це простий спосіб захисту, що легко виконується, наприклад, за допомогою драйвера BIOS, звернення до якого здійснюється через переривання 13h. За допомогою функції розмітки доріжки здійснюється форматування диска, при цьому частина номерів доріжок, що розмічаються може бути пропущена. Сектори, що неформатуються утворяться, наприклад, внаслідок переривання команди контроллера - "форматувати доріжку". Також за допомогою даного драйвера можна створити диск з нестандартною кількістю доріжок і секторів.
Зміна нумерації доріжок секторів і розміру останніх. За допомогою дескрипторів можна змінити нумерацію доріжок і секторів, наприклад, з 100-ї до 179-ї і з 10-го до 18-й відповідно. Використовуючи параметр N дескриптора, можна створити доріжку з секторами різної довжини.
1.2. Захист програм від дизасемблерів та налагоджувачів
При захисті програм важливо включити механізми, що перешкоджають вивченню алгоритму, яке можна здійснити в двох режимах: статичному і динамічному. У статичному режимі проводиться перетворення бінарного коду програми в початковий текст (дизасемблювання), який вивчається з метою подолання механізму захисту. У динамічному режимі здійснюється трасування програми, тобто виконання її на ПЕОМ за допомогою засобів, що дозволяють проводити доступ до регістрів, дільниць пам'яті, здійснювати зупинку програми в контрольних точках та інше.
1.2.1. Захист програм від статичних методів дослідження.
Для істотного ускладнення аналізу програм статичними методами використовують багато різних захисних механізмів, комплексне застосування яких надає серйозну протидію хакерам і зводить результати їх зусиль щодо вивчення логіки програми практично до нуля. До найбільш відомих засобів захисту, які слід використовувати в курсовій роботі, відносяться наступні.
Неявні переходи. При передачі управління певному кодовому модулю потрібно змінювати вміст регістра IP, що автоматично здійснюється при виконанні команди JMP. Якщо, наприклад, в процесі виконання програми із стека в IP за допомогою команди RET (див. приклад 1) занести новий код адреси, то здійсниться неявний перехід до нової ділянки коду і таким чином буде прихована точка передачі управління.
Динамічні переходи. У початковому коді можна включити переходи до динамічно змінними в процесі виконання програми адресам (див. приклад 2) і перериванням, що відповідно ускладнить виявлення точок переходів.
Перевизначення кодів через стек. Якщо визначити стек в області кодів, що виконуються, то при виконанні стекових операцій може здійснитися заміщення команд. Використовуючи цей прийом, можна, наприклад, замінити певну кодову ділянку перед її виконанням новими командами, що замаскує код, який реально виконується.
Самогенерація виконуючих. У програму можна включити невеликі вставки, що здійснюють, наприклад, перетворення в пам'яті попереднього виконуючого коду за допомогою різного роду арифметичних і логічних операцій (див. приклад 3).
Це приводить до створення непомітних для хакерів, так званих, самостворюючих команд.