Системи захисту програмного забезпечення

Автор работы: Пользователь скрыл имя, 14 Сентября 2013 в 10:48, лекция

Описание

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

Работа состоит из  1 файл

Lection_2_1.doc

— 78.50 Кб (Скачать документ)

Системи захисту програмного забезпечення

 

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

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

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

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

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

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

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

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

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

3) комбіновані.

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

Розглянемо  достоїнства і недоліки основних систем захисту ПО виходячи з принципів їхнього функціонування.

 

2.1. Пакувальники, шифратори

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

Позитивні сторони:

1. У рамках  періоду безпечного використання  дані системи забезпечують високий  рівень захисту ПО від аналізу  його алгоритмів.

2. Методи упакування/шифрування набагато збільшують стійкість СЗ інших типів.

Негативні сторони:

1. Практично  усі застосовувані методи сповільнюють  виконання коду ПО.

2. Шифрування/упакування  коду ПО викликає утруднення  при відновленні (update) і виправленні помилок (bugfix, servicepack).

3. Можливе підвищення  апаратно-програмних вимог ПО.

4. У чистому виді дані  системи не застосовні для  авторизації використання

ПО.

5. Ці системи застосовні  лише до продуктів невеликого  обсягу.

6. Даний клас систем  уразливий, тому що програмний код може бути, розпакований

або розшифрований для  виконання.

7. Мають невеликий термін  безпечного використання, через  п. 4.

8. Упакування і шифрування  коду, що виконується, вступає в конфлікт із забороною самомодифікуючого коду в сучасних ОС.

 

2.2. Системи захисту від несанкціонованого копіювання

Системи захисту  від несанкціонованого копіювання здійснюють «прив'язку»  ПО до дистрибутивного носія (гнучкий диск, CD і ін.). Даний тип захистів заснований на глибокому вивченні роботи контролерів нагромаджувачів, їх фізичних показників, нестандартних режимах розбивки, читання/запису і т.п. При цьому на фізичному рівні створюється дистрибутивний носій, що володіє приблизно неповторними властивостями (нестандартна розмітка носія інформації або/і запис на нього додаткової інформації – пароля або мітки), а на програмному – створюється модуль, набудований на ідентифікацію й аутентифікацію носія за його унікальним властивостями. При цьому можливо застосування прийомів, використовуваних пакувальниками/шифраторами.

Позитивні фактори:

1. Утруднення  нелегального копіювання і поширення  ПО.

2. Захист прав  користувача на придбане ПО.

Негативні фактори:

1. Велика трудомісткість  реалізації системи захисту.

2. Уповільнення продажів  через необхідність фізичної  передачі дистрибутивного

носія інформації.

3. Підвищення системних  вимог через захист (наявність  нагромаджувача).

4. Зниження отказоустойчивости  ПО.

5. Несумісність захисту  й апаратури користувача (нагромаджувач,  контролер).

6. На час роботи ЗД  займається нагромаджувач.

7. Погроза крадіжки захищеного  носія.

 

 

2.3. Системи захисту від несанкціонованого доступу

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

Парольні  захисти

На сьогоднішній день цей клас СЗПО є найпоширенішим. Основний принцип роботи даних систем полягає в ідентифікації й аутентифікація користувача ПО шляхом запиту додаткових даних, якими можуть бути назва фірми і/або ім'я і прізвище користувача і його пароль або тільки пароль/реєстраційний код. Така інформація може запитуватися в різних ситуаціях, наприклад, при старті програми, після закінчення терміну безкоштовного використання ПО, при виклику процедури реєстрації або в процесі установки на ПК користувача.

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

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

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

Позитивні сторони:

1. Надійний захист  від зловмисника-непрофесіонала.

2. Мінімальні  незручності для користувача.

3. Можливість  передачі пароля/коду по мережі.

4. Відсутність  конфліктів із системним і прикладним ПО й АТ.

5. Простота реалізації  і застосування.

6. Низька вартість.

Негативні сторони:

1. Низька стійкість  більшості систем захисту даного  типу.

2. Користувачеві  необхідно запам'ятовувати пароль/код.

 

2.3.2. Системи «прив'язки» ПО

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

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

Позитивні фактори:

1. Не потрібно  додаткових апаратних засобів  для роботи захисту.

2. Утруднення  несанкціонованого доступу до скопійованого ПО.

3. Простота застосування.

4. "Невидимість"  СЗПО для користувача.

Негативні фактори:

1. Помилкові  спрацьовування СЗПО при будь-яких  змінах у параметрах ПК.

2. Низька стійкість  при доступі зловмисника до  ПК користувача.

Информация о работе Системи захисту програмного забезпечення