2. Методи захисту ПЗ від несанкціонованого доступу до програмного коду

2.1 Класифікація засобів дослідження програмного коду

Всі засоби дослідження ПЗ можна розбити на 2 класи: статичні і динамічні. Перші оперують вихідним кодом програми як даними і будують її алгоритм без виконання, другі ж вивчають програму, інтерпретуючи її в реальному або віртуальному обчислювальному середовищі. Звідси випливає, що перші є більш універсальними в тому сенсі, що теоретично можуть отримати алгоритм всієї програми, в тому числі і тих блоків, які ніколи не отримають управління. Динамічні засоби можуть будувати алгоритм програми тільки на підставі конкретної її траси, отриманої при певних вхідних даних. Тому завдання отримання повного алгоритму програми в цьому випадку еквівалентно побудові вичерпного набору текстів для підтвердження правильності програми, що практично неможливо, і взагалі при динамічному дослідженні можна говорити тільки про побудову деякої частини алгоритму.

Два найбільш відомих типу програм, призначених для дослідження ПЗ, як раз і належать до різних класів: це відладчик (динамічний засіб) і дизасемблер (засіб статистичного дослідження). Якщо перший широко застосовується користувачем для налагодження власних програм і завдання побудови алгоритму для нього вторинні і реалізуються самим користувачем, то другий призначений виключно для їх вирішення і формує на виході асемблерний текст алгоритму.

Крім цих двох основних інструментів дослідження, можна використовувати:

·    «Діскомпілятори», програми, які генерують з виконуваного коду програму на мові високого рівня;

·    «Трасировщики», спочатку запам'ятовують кожну інструкцію, що проходить через процесор, а потім переводять набір інструкцій у форму, зручну для статичного дослідження, автоматично виділяючи цикли, підпрограми тощо;

·    «Слідкуючі системи», запам'ятовують і аналізують трасу вже не інструкції, а інших характеристик, наприклад викликаних програмою переривань.

2.2 Методи захисту ПЗ від дослідження

Для захисту програм від дослідження необхідно застосовувати методи захисту від дослідження файлу з виконуваним кодом програми, що зберігається на зовнішньому носії, а також методи захисту виконуваного коду, який завантажується в оперативну пам'ять для виконання цієї програми.

У першому випадку захист може бути заснований на шифруванні конфіденційної частини програми, а в другому - на блокуванні доступу до виконуваного коду програми в оперативній пам'яті з боку відгадчика. Крім того, перед завершенням роботи програми повинен обнулятися весь її код в оперативній пам'яті. Це запобігає можливості несанкціонованого копіювання з оперативної пам'яті дешифрованого виконуваного коду після виконання програми.

Таким чином, захищувана від дослідження програма повинна включати наступні компоненти:

·    ініціалізатор;

·    зашифровану конфіденційну частину;

·    деструктор (деіцініалізатор).

Ініціалізатор повинен забезпечувати виконання таких функцій:

·    збереження параметрів операційного середовища функціонування (векторів переривань, вмісту регістрів процесора і т.д.);

·    заборона всіх внутрішніх і зовнішніх переривань, обробка яких не може бути записана в програмі;

·    завантаження в оперативну пам'ять і дешифрування коду конфіденційної частини програми;

·    передача керування конфіденційної частини програми.

Конфіденційна частина програми призначена для виконання основних цільових функцій програми і захищається шифруванням для попередження внесення до неї програмної закладки.

Деструктор після виконання конфіденційної частини програми повинен виконати наступні дії:

·    обнулення конфіденційного коду програми в оперативній пам'яті;

·    відновлення параметрів операційної системи (векторів переривань, вмісту регістрів процесора і т.д.), які були встановлені до заборони неконтрольованих переривань;

·    виконання операцій, які неможливо було виконати при забороні неконтрольованих переривань;

·    звільнення всіх незадіяних ресурсів комп'ютера і завершення роботи програми.

Для більшої надійності ініціалізатор може бути частково зашифрованим, по мірі виконання може дешифрувати сам себе. Дешифруватися по мірі виконання може і конфіденційна частина програми. Таке дешифрування називається динамічним дешифруванням виконуваного коду. У цьому випадку чергові ділянки програм перед безпосереднім виконанням розшифровуються, а після виконання відразу знищуються.

Для підвищення ефективності захисту програм від дослідження необхідно внесення в програму додаткових функцій безпеки, спрямованих на захист від трасування. До таких функцій можна віднести:

·    періодичний підрахунок контрольної суми області оперативної пам'яті, займаної вихідним кодом; порівняння поточної контрольної суми з попередньо сформованою еталонною і прийняття необхідних заходів у випадку розбіжності;

·    перевірку кількості займаної програмою оперативної пам'яті;

·    порівняння з обсягом, до якого програма адаптована, і прийняття необхідних заходів у разі невідповідності;

·    контроль часу виконання окремих частин програми;

·    блокування клавіатури на час відпрацювання особливо критичних алгоритмів.

Для захисту програм від дослідження за допомогою дизассемблерів можна використовувати і такий спосіб, як ускладнення структури самої програми з метою заплутування зловмисника, який дізассемблює цю програму. Наприклад, можна використовувати різні сегменти адреси для звернення до однієї і тієї ж області пам'яті. У цьому випадку зловмисникові буде важко здогадатися, що насправді програма працює з однією і тією ж областю пам'яті.

2.3 Способи захисту ПЗ від дослідження

Способи захисту від дослідження можна розділити на чотири класи.

1. Спосіб, сутність якого полягає у наданні впливу на процес функціонування налагоджувальному кошти через спільні програмні або апаратні ресурси. В даному випадку найбільш відомі:

·    використання апаратних особливостей мікропроцесора (особливості черговості вибірки команд, особливості виконання команд і т.д.);

·    використання загального програмного ресурсу (наприклад, загального стека) і руйнування даних або коду відладчика, що належать загальному ресурсу, або перевірка використання загального ресурсу тільки захищуваною програмою (наприклад, визначення стека в області, критичній для виконання захищуваної програми);

·    переадресація обробників налагоджувальних подій (переривань) від налагоджувальних засобів до захищуваної програми.

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

2. Вплив на роботу налагоджувальних засобів шляхом використання особливостей його апаратного або програмного середовища. Наприклад:

·    переміщення фрагментів коду або даних за допомогою контролера прямого доступу до пам'яті;

·    впливу на процес регенерації оперативної пам'яті (на деякій ділянці коду регенерація пам'яті відключається, а потім знову включається, - при нормальній роботі ніяких змін немає, при повільному виконанні програми відладчиком вона «зависає»);

·    переходу мікропроцесора в захищений режим.


Информация о работе «Захист програмного забезпечення»
Раздел: Информатика, программирование
Количество знаков с пробелами: 40344
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
46809
0
0

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

Скачать
124538
18
22

... замінено  на /2. Покладемо ,, k=k+1, j=1 та повернемося до першого кроку. Блок-схема алгоритму приведена нижче. Рисунок 2.4–Алгоритм Хука-Дживса 3. Розробка програмного забезпечення вирішення задачі формування портфеля цінних паперів   3.1 Загальні відомості про програмне забезпечення Розроблене програмне забезпечення призначене для автоматизації процесу формування портфелем цінних ...

Скачать
50164
1
4

... середовище використовується Windows XP. Всі робочі місця підключені до локальної мережі класу. Остання підключається до сервера комбінату. У процесі вивчення курсу інформатики використовується таке програмне забезпечення: операційна система Windows; текстовий редактор Word; електронні таблиці Excel; система управління базами даних Access; засоби обробки графічної інформації Corel Draw; Photoshop; ...

Скачать
89612
2
19

... . Таким чином, вивчення особливостей поведінки чотирикомпонентних сумішей полімерів є важливим і тема роботи актуальна. Метою дипломного проекту є створення програмного забезпечення для оптимізації складу чотирикомпонентних нанонаповнених сумішей полімерів, яке дозволить визначати полімерні композиції для отримання виробів з покращеними властивостями. Для досягнення поставленої мети потрібно вирі ...

0 комментариев


Наверх