2. Методи захисту ПЗ від несанкціонованого доступу до програмного коду
2.1 Класифікація засобів дослідження програмного кодуВсі засоби дослідження ПЗ можна розбити на 2 класи: статичні і динамічні. Перші оперують вихідним кодом програми як даними і будують її алгоритм без виконання, другі ж вивчають програму, інтерпретуючи її в реальному або віртуальному обчислювальному середовищі. Звідси випливає, що перші є більш універсальними в тому сенсі, що теоретично можуть отримати алгоритм всієї програми, в тому числі і тих блоків, які ніколи не отримають управління. Динамічні засоби можуть будувати алгоритм програми тільки на підставі конкретної її траси, отриманої при певних вхідних даних. Тому завдання отримання повного алгоритму програми в цьому випадку еквівалентно побудові вичерпного набору текстів для підтвердження правильності програми, що практично неможливо, і взагалі при динамічному дослідженні можна говорити тільки про побудову деякої частини алгоритму.
Два найбільш відомих типу програм, призначених для дослідження ПЗ, як раз і належать до різних класів: це відладчик (динамічний засіб) і дизасемблер (засіб статистичного дослідження). Якщо перший широко застосовується користувачем для налагодження власних програм і завдання побудови алгоритму для нього вторинні і реалізуються самим користувачем, то другий призначений виключно для їх вирішення і формує на виході асемблерний текст алгоритму.
Крім цих двох основних інструментів дослідження, можна використовувати:
· «Діскомпілятори», програми, які генерують з виконуваного коду програму на мові високого рівня;
· «Трасировщики», спочатку запам'ятовують кожну інструкцію, що проходить через процесор, а потім переводять набір інструкцій у форму, зручну для статичного дослідження, автоматично виділяючи цикли, підпрограми тощо;
· «Слідкуючі системи», запам'ятовують і аналізують трасу вже не інструкції, а інших характеристик, наприклад викликаних програмою переривань.
2.2 Методи захисту ПЗ від дослідженняДля захисту програм від дослідження необхідно застосовувати методи захисту від дослідження файлу з виконуваним кодом програми, що зберігається на зовнішньому носії, а також методи захисту виконуваного коду, який завантажується в оперативну пам'ять для виконання цієї програми.
У першому випадку захист може бути заснований на шифруванні конфіденційної частини програми, а в другому - на блокуванні доступу до виконуваного коду програми в оперативній пам'яті з боку відгадчика. Крім того, перед завершенням роботи програми повинен обнулятися весь її код в оперативній пам'яті. Це запобігає можливості несанкціонованого копіювання з оперативної пам'яті дешифрованого виконуваного коду після виконання програми.
Таким чином, захищувана від дослідження програма повинна включати наступні компоненти:
· ініціалізатор;
· зашифровану конфіденційну частину;
· деструктор (деіцініалізатор).
Ініціалізатор повинен забезпечувати виконання таких функцій:
· збереження параметрів операційного середовища функціонування (векторів переривань, вмісту регістрів процесора і т.д.);
· заборона всіх внутрішніх і зовнішніх переривань, обробка яких не може бути записана в програмі;
· завантаження в оперативну пам'ять і дешифрування коду конфіденційної частини програми;
· передача керування конфіденційної частини програми.
Конфіденційна частина програми призначена для виконання основних цільових функцій програми і захищається шифруванням для попередження внесення до неї програмної закладки.
Деструктор після виконання конфіденційної частини програми повинен виконати наступні дії:
· обнулення конфіденційного коду програми в оперативній пам'яті;
· відновлення параметрів операційної системи (векторів переривань, вмісту регістрів процесора і т.д.), які були встановлені до заборони неконтрольованих переривань;
· виконання операцій, які неможливо було виконати при забороні неконтрольованих переривань;
· звільнення всіх незадіяних ресурсів комп'ютера і завершення роботи програми.
Для більшої надійності ініціалізатор може бути частково зашифрованим, по мірі виконання може дешифрувати сам себе. Дешифруватися по мірі виконання може і конфіденційна частина програми. Таке дешифрування називається динамічним дешифруванням виконуваного коду. У цьому випадку чергові ділянки програм перед безпосереднім виконанням розшифровуються, а після виконання відразу знищуються.
Для підвищення ефективності захисту програм від дослідження необхідно внесення в програму додаткових функцій безпеки, спрямованих на захист від трасування. До таких функцій можна віднести:
· періодичний підрахунок контрольної суми області оперативної пам'яті, займаної вихідним кодом; порівняння поточної контрольної суми з попередньо сформованою еталонною і прийняття необхідних заходів у випадку розбіжності;
· перевірку кількості займаної програмою оперативної пам'яті;
· порівняння з обсягом, до якого програма адаптована, і прийняття необхідних заходів у разі невідповідності;
· контроль часу виконання окремих частин програми;
· блокування клавіатури на час відпрацювання особливо критичних алгоритмів.
Для захисту програм від дослідження за допомогою дизассемблерів можна використовувати і такий спосіб, як ускладнення структури самої програми з метою заплутування зловмисника, який дізассемблює цю програму. Наприклад, можна використовувати різні сегменти адреси для звернення до однієї і тієї ж області пам'яті. У цьому випадку зловмисникові буде важко здогадатися, що насправді програма працює з однією і тією ж областю пам'яті.
2.3 Способи захисту ПЗ від дослідженняСпособи захисту від дослідження можна розділити на чотири класи.
1. Спосіб, сутність якого полягає у наданні впливу на процес функціонування налагоджувальному кошти через спільні програмні або апаратні ресурси. В даному випадку найбільш відомі:
· використання апаратних особливостей мікропроцесора (особливості черговості вибірки команд, особливості виконання команд і т.д.);
· використання загального програмного ресурсу (наприклад, загального стека) і руйнування даних або коду відладчика, що належать загальному ресурсу, або перевірка використання загального ресурсу тільки захищуваною програмою (наприклад, визначення стека в області, критичній для виконання захищуваної програми);
· переадресація обробників налагоджувальних подій (переривань) від налагоджувальних засобів до захищуваної програми.
Виділення трьох груп захисних дій у даному класі не випадково, оскільки об'єктивно існують загальні апаратні ресурси відладчика, і захищувана програма у випадку однопроцесорного обчислювача виконуються на одному й тому ж процесорі), спільні програмні ресурси (оскільки і відладчик, і захищувана програма виконуються в одному і тому ж операційному середовищі), нарешті, відладчик створює специфічні ресурси, які є важливими для його власної роботи (наприклад адресує собі налагоджувальні переривання).
2. Вплив на роботу налагоджувальних засобів шляхом використання особливостей його апаратного або програмного середовища. Наприклад:
· переміщення фрагментів коду або даних за допомогою контролера прямого доступу до пам'яті;
· впливу на процес регенерації оперативної пам'яті (на деякій ділянці коду регенерація пам'яті відключається, а потім знову включається, - при нормальній роботі ніяких змін немає, при повільному виконанні програми відладчиком вона «зависає»);
· переходу мікропроцесора в захищений режим.
... апаратних, так і програмних засобів. 2.4 Надійність механізмів, алгоритмів, методів захисту Для визначення надійності механізмів, алгоритмів і методів, що використовуються для захисту авторських прав в галузі програмного забезпечення, візьмемо за основу базові поняття і положення існуючих стандартів з оцінки безпеки інформаційних технологій. Основними документами в області оцінки безпеки і ...
... замінено на /2. Покладемо ,, k=k+1, j=1 та повернемося до першого кроку. Блок-схема алгоритму приведена нижче. Рисунок 2.4–Алгоритм Хука-Дживса 3. Розробка програмного забезпечення вирішення задачі формування портфеля цінних паперів 3.1 Загальні відомості про програмне забезпечення Розроблене програмне забезпечення призначене для автоматизації процесу формування портфелем цінних ...
... середовище використовується Windows XP. Всі робочі місця підключені до локальної мережі класу. Остання підключається до сервера комбінату. У процесі вивчення курсу інформатики використовується таке програмне забезпечення: операційна система Windows; текстовий редактор Word; електронні таблиці Excel; система управління базами даних Access; засоби обробки графічної інформації Corel Draw; Photoshop; ...
... . Таким чином, вивчення особливостей поведінки чотирикомпонентних сумішей полімерів є важливим і тема роботи актуальна. Метою дипломного проекту є створення програмного забезпечення для оптимізації складу чотирикомпонентних нанонаповнених сумішей полімерів, яке дозволить визначати полімерні композиції для отримання виробів з покращеними властивостями. Для досягнення поставленої мети потрібно вирі ...
0 комментариев