на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Захист програмного забезпечення
«Слідкуючі системи», запам'ятовують і аналізують трасу вже не інструкції, а інших характеристик, наприклад викликаних програмою переривань.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3. Вплив на роботу відладчика через органи управління або / та пристрої відображення інформації.

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

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

Розглянемо даний метод докладніше. Нехай є деяке повноциклове перетворення з N станів t: Т = t 1, t 2 ,..., t N (Наприклад, звичайний двійковий лічильник або, рекуррента). Значення N вибирається не надто великим. Наприклад, для k-бітового лічильника N = 2 k. Ділянка коду, що захищається від вивчення, динамічно перетворюється (шифрується) з використанням криптографічно стійкого алгоритму на ключі t, який вибирається випадково і рівноймовірно з безлічі станів Т.

Робота механізму захисту від дослідження виглядає таким чином. Програма повноциклового перетворення починає роботу з детермінованого або випадкового значення. На встановленому значенні проводиться дешифрування зашифрованої ділянки коду. Правильність дешифрування перевіряється підрахунком значення хеш-коду розшифрованої ділянки програмного коду з використанням елементів, пов'язаних з налагодженням (стек, налагоджувальні переривання та ін.) Хеш-функція повинна з імовірністю 1 визначати правильність дешифрування (для цього значення хеш-коду повинно бути не менше k).

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

Для чисельної оцінки даного методу введемо наступні значення. Припустимо, що i в середньому дорівнює N / 2. Нехай w 0 - час виконання циклу алгоритму (встановлення поточного значення, дешифрування, перевірка правильності дешифрування) у штатному режимі функціонування (без налагодження); w 1 - час виконання того ж циклу в режимі налагодження; z-граничний час затримки при штатній роботі захищеної програми. Тоді N = z / w 0. Витрати часу зловмисника обчислюються середньою величиною Т зл = Nw 1 / 2. Для приблизних розрахунків w 1 / w 0 »10000.

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

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

Перетворення коду програми під час її виконання може переслідувати три основні мети:

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

· протидія роботі відладчика;

· протидія зчитуванню коду програми у файл з оперативної пам'яті.

Перелічимо основні способи організації перетворення коду програми:

1. Заміщення фрагмента коду функцією від команди, що знаходиться на даному місці, і деяких даних.

2. Визначення стека в області коду і переміщення фрагментів коду з використанням стекових команд.

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

4. Перетворення коду в залежності від зовнішньої до програми інформації.

5. Перетворення коду, поєднане з діями, характерними для роботи налагоджувальних засобів.

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

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

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

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

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

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

1. Пасивний захист - заборона роботи при перевизначенні обробників подій щодо заздалегідь відомої адреси.

2. Активний захист першого типу - замикання ланцюгів обробки подій минаючи програми трасування.

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

Наприклад, для захисту від трасування за дисковим перериваннях для ОС MS DOS при читанні некопіюємої мітки з дискети або вінчестера можна використовувати наступні прийоми:

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

· визначення одного з невикористовуваних переривань для роботи з диском (активний захист першого типу);

· прямий виклик відповідних функцій в ПЗУ (BIOS) після відновлення різними способами їх фізичної адреси (активний захист першого типу);

· визначення факту перевизначення адреси переривання на іншу програму і невиконання в цьому випадку дискових операцій (пасивний захист).

При операціях з жорстким диском, як правило, використовується переривання int 13h. Для запобігання трасування програми по заданому переривання (у даному випадку переривання int 13h) можна також використовувати зазначені вище способи, а саме:

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

· прямий виклик функцій BIOS.

При небезпеці трасування щодо подій операційного середовища можуть бути виділені наступні дії програм:

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

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

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.