Дослідження існуючих програмних методів захисту даних

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

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

Один з варіантів захисту - це використання «серійного номера», тобто сформованого по певному алгоритму числа, яке указується при установці програми. Програма установки (або сама прикладна програма) перевіряє введене значення на відповідність відомому їй алгоритму, і у разі успіху - продовжує працювати в штатному режимі. Таким чином, захищаються, наприклад, операційні системи Windows, програмні пакети Corel Draw, Adobe PhotoShop і багато інших. Варіант дуже зручний для кінцевого користувача: можна зробити скільки завгодно резервних копій, можна встановити програму на будь-яку кількість комп'ютерів. Але саме це і не влаштовує розробників ПО: дійсно, маючи один “правильний” ключ, можна створити скільки завгодно “піратських” копій, за які платити зовсім не обов'язково.

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

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

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

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

Відладка - етап розробки комп'ютерної програми, на якому виявляють, локалізують і усувають помилки. Щоб зрозуміти, де виникла помилка, доводиться:

- дізнаватися поточні значення змінних;

- з'ясовувати, по якому шляху виконувалася програма.

Існують дві взаємодоповнюючі технології відладки:

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

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

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

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

Один із способів утруднення роботи "хакера" при аналізі роботи програми – це метод використання так званих "пустушок". Для них виділяються ділянки програми достатньо великого об'єму, що проводять деякі значні обчислення, але вони не мають ніякого відношення до роботи програми. У "пустушки" необхідно включати які-небудь фрагменти, які могли б зацікавити "зломщика". Наприклад, це можуть бути виклики таких переривань, як 13Н, 21Н, 25Н, 26Н, їх перехоплення і т.п.