Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсова зпз_шевчук.docx
Скачиваний:
33
Добавлен:
24.12.2018
Размер:
629.15 Кб
Скачать
  1. Огляд систем захисту програмного забезпечення

Перед початком проектування будь-якої систему захисту програмного забезпечення (СЗПЗ) треба цілком чітко собі уявляти, що саме і від кого ми збираємось “захищати”. Не існує абсолютно надійних методів захисту. Кваліфіковані системні програмісти, що користуються сучасними засобами аналізу програмного забезпечення (ПЗ), маючи досить часу, зможуть подолати практично будь-який захист. І тому при проектуванні систем захисту (СЗ) слід передбачати те, що рано чи пізно цей захист буде знято.

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

    1. Класифікація систем захисту програмного забезпечення

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

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

  • метод установки;

  • використовувані механізми захисту;

  • принцип функціонування.

Системи захисту ПЗ по методу установки можна підрозділити на:

  • системи, установлювані на скомпільовані модулі ПЗ;

  • системи, що вбудовуються у вихідний код ПЗ до компіляції;

  • комбіновані.

Системи першого типу найбільш зручні для виробника ПЗ, тому що легко можна захистити вже цілком готове й протестоване ПЗ, а тому і найбільше популярні. У той же час стійкість цих систем досить низька (у залежності від принципу дії СЗ), тому що для обходу захисту досить визначити крапку завершення роботи «конверта» захисту і передачі керування захищеній програмі, а потім примусово її зберегти в незахищеному виді.

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

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

По використовуваних механізмах захисту СЗ можна класифікувати на:

  • системи, що використовують складні логічні механізми;

  • системи, що використовують шифрування захищаючого ПЗ;

  • комбіновані системи.

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

Для захисту ПЗ використовується ряд методів:

  • алгоритми заплутування – використовуються хаотичні переходи в різні частини коду, упровадження помилкових процедур, пусті цикли, перекручування кількості реальних параметрів процедур ПЗ, розкид ділянок коду по різних областях ОЗУ і т.п.

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

  • алгоритми компресії даних – програма упаковується, а потім розпаковуються в міру виконання.

  • алгоритми шифрування даних – програма шифрується, а потім розшифровуються в міру виконання.

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

  • методи утруднення налагодження – використовуються різні прийоми, спрямовані на ускладнення налагодження програми.

  • емуляція процесорів і операційних систем – створюється віртуальний процес - сміття і/або операційна система (не обов'язково існуючі) і програма перекладач із системи команд IBM у систему команд створеного процесора або ОС, після такого перекладу ПЗ може виконуватися тільки за допомогою емулятора, що різко утрудняє дослідження алгоритму ПЗ [1].

  • нестандартні методи роботи з апаратним забезпеченням – модулі системи захисти звертаються до апаратури ЕОМ, минаючи процедури ОС, і використовують маловідомі або не документовані її можливості.

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

За принципом функціонування СЗ можна підрозділити на наступні:

  • пакувальники/шифратори;

  • СЗ від несанкціонованого копіювання;

  • СЗ від несанкціонованого доступу (НСД).

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

  • алгоритми компресії даних;

  • прийоми, пов'язані з використанням недокументованих особливостей операційних систем (ОС) і процесорів;

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

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

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

  • системи парольного захисту ПЗ;

  • системи прив'язки ПЗ до комп'ютера користувача;

  • системи з ключовими дисками;

  • апаратно-програмні системи з електронними ключами.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]