
- •1 Аналіз систем захисту програмного забезпечення
- •1.1 Огляд існуючих систем захисту пз
- •1.2 Методи захисту програмного забезпечення від несанкціонованого доступу
- •1.3 Методи захисту комп’ютера від несанкціонованого доступу
- •2 Теоретичні підходи до побудови.
- •2.1 Метод створення програми перевірки доступу за методом Тюрінга
- •2.2 Розробка структури програми
- •2.3 Вибір мови програмування
- •3 Практична реалізація
- •3.1 Розробка програми
- •3.2 Інструкція по роботі з програмою
- •3.3 Тестування програми
- •Список використаних джерел:
- •Додатки
Зміст
ВСТУП 2
1 АНАЛІЗ СИСТЕМ ЗАХИСТУ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 2
1.1 Огляд існуючих систем захисту ПЗ 2
1.2 Методи захисту програмного забезпечення від несанкціонованого доступу 9
1.3 Методи захисту комп’ютера від несанкціонованого доступу 11
2 Теоретичні підходи до побудови. 14
2.1 Метод створення програми перевірки доступу за методом Тюрінга 14
2.2 Розробка структури програми 15
2.3 Вибір мови програмування 17
3 ПРАКТИЧНА РЕАЛІЗАЦІЯ 19
3.1 Розробка програми 19
3.2 Інструкція по роботі з програмою 21
3.3 Тестування програми 21
Список використаних джерел: 24
ДОДАТКИ 25
ВСТУП
Проблеми інформаційної безпеки стали актуальними одночасно з виникненням перших електронно-обчислювальних машин і удосконалювались разом з розвитком технічної бази. Вдосконалення технічної бази систем обробки інформації забезпечило подальший розвиток концепції безпеки, в рамках якої стали виділяти захист технічних засобів, програмного забезпечення і інформації.
Програмне забезпечення – сукупність програм системи обробки інформації програмних документів, необхідних для експлуатації цих програм.
На сьогоднішній день постали такі проблеми, як незаконне використання алгоритмів, несанкціоноване використання, модифікація, поширення і збут програмних продуктів. У відповідності з різними підходами до захисту прав творців комп'ютерних програм, захист програмного забезпечення можна класифікувати таким чином:
захист від власне незаконного копіювання
захист від незаконного використання;
захист від дослідження програм;
ідентифікація програмних продуктів.
Отже, зараз існує досить багато проблем які пов’язані із захистом програмного забезпечення, і тому розробляється велика кількість систем захисту програмного забезпечення для їх подолання, без яких неможлива безпечна робота, як з програмним забезпеченням, так і з комп’ютером.
1 Аналіз систем захисту програмного забезпечення
1.1 Огляд існуючих систем захисту пз
Існуючі системи захисту програмного забезпечення можна класифікувати за рядом ознак, серед яких можна виділити метод установки, використовувані механізми захисту та принцип функціонування.
Системи захисту ПЗ за методом установки можна підрозділити на системи, встановлюються на скомпільовані модулі ПЗ, системи, що вбудовуються в вихідний код ПЗ до компіляції, і комбіновані.
Системи першого типу найбільш зручні для виробника ПО, так як легко можна захистити вже повністю готове й відтестовані ПЗ (зазвичай процес встановлення захисту максимально автоматизований і зводиться до вказівки імені захищається файлу і натискання "Enter"), а тому і найбільш популярні. У той же час стійкість цих систем досить низька (в залежності від принципу дії СЗ), так як для обходу захисту досить визначити точку завершення роботи "конверту" захисту і передачі управління захищеної програмі, а потім примусово її зберегти в незахищеному вигляді. Системи другого типу незручні для виробника ПО, так як виникає необхідність навчати персонал роботі з програмним інтерфейсом (API) системи захисту з витікаючими звідси грошовими і тимчасовими витратами. Крім того, ускладнюється процес тестування ПЗ та знижується його надійність, тому що крім самого ПЗ помилки може містити API системи захисту або процедури, його використовують. Але такі системи є більш стійкими до атак, тому що тут зникає чітка межа між системою захисту і як таким ПЗ. Найбільш живучими є комбіновані системи захисту. Зберігаючи переваги і недоліки систем другого типу, вони максимально ускладнюють аналіз і дезактивацію своїх алгоритмів.
По використовуваних механізмам захисту СЗ можна класифікувати на: системи, використовують складні логічні механізми; системи, що використовують шифрування захищається ПЗ; і комбіновані системи.
Системи першого типу використовують різні методи і прийоми, орієнтовані на складне становище дизасемблювання, налагодження та аналізу алгоритму СЗ та захистило ПЗ. Цей тип СЗ найменш стійок до атак, так як для подолання захисту достатньо проаналізувати логіку процедур перевірки і належним чином їх модифікувати. Більш стійкими є системи другого типу. Для дезактивації таких захистів необхідно визначення ключа дешифрування ПЗ. Найбільш стійкими до атак є комбіновані системи.
Для захисту ПЗ використовується ряд методів, таких як:
Алгоритми заплутування використовуються хаотичні переходи в різні частини коду, впровадження помилкових процедур – "пустушок", неодружені цикли, спотворення кількості реальних параметрів процедур ПЗ, розкид ділянок коду з різних галузей ОЗУ і т.п.
Алгоритми мутації Створюються таблиці відповідності операндів синонімів і заміна їх один на одного при кожному запуску програми з певною схемою або випадковим чином, випадкові зміни структури програми.
Алгоритми компресії даних Програма упаковується, а потім розпаковується по мірі виконання.
Алгоритми шифрування даних Програма шифрується,апотім розшифровується по мірі виконання.
Обчислення математичних виразів складних в процесі відпрацювання механізму захисту елементи логіки захисту залежать від результату обчислення значення якої-небудь формули або групи формул.
Методи труднощі дизасемблювання використовуються різні прийоми, спрямовані на запобігання дизасемблювання в пакетному режимі.
Емуляція процесорів і операційних систем створюється віртуальний процесор і / або операційна система (не обов'язково реально існуючі) і програма-перекладач з системи команд IBM в систему команд створеного процесора або ОС, після такого перекладу ПЗ може виконуватися тільки за допомогою емулятора, що різко ускладнює дослідження алгоритму ПЗ.
Нестандартні методи роботи з апаратним забезпеченням - модулі системи захисту звертаються до апаратури ЕОМ, минаючи процедури операційної системи, і використовують маловідомі або не документовані її можливості.
У свою чергу зловмисники так само застосовують ряд методів і засобів для порушення систем захисту. Ситуація протистояння розробників СЗПО і зловмисників постійно змінюється за рахунок комбінування вже відомих методів захисту та нападу, а так само за рахунок створення і використання нових методів. У цілому ця взаємодія може бути описано схемою на Рис. 1.
За принципом функціонування СЗ можна підрозділити на пакувальники / шифратори; СЗ від несанкціонованого копіювання і СЗ від несанкціонованого доступу (НСД).
Пакувальники / шифратори
Спочатку, основною метою пакувальників / шифраторів було зменшення обсягу виконуваного модуля на диску без шкоди для функціональності програми, але пізніше на перший план вийшла мета захисту ПЗ від аналізу його алгоритмів і несанкціонованої модифікації. Для досягнення цього використовуються алгоритми компресії даних; прийоми, пов'язані з використанням не документованих особливостей операційних систем (ОС) і процесорів; шифрування даних, алгоритми мутації, заплутування логіки програми, приведення ОС в нестабільний стан на час роботи ПЗ та ін.
Позитивні сторони:
У рамках періоду безпечного використання дані системи забезпечують високий рівень захисту ПЗ від аналізу його алгоритмів.
Методи пакування / шифрації набагато збільшують стійкість систем захисту інших типів.
Негативні сторони:
Практично всі застосовувані методи уповільнюють виконання коду ПЗ.
Шифрування / упаковка коду ПЗ викликає труднощі при оновленні (update) і виправлення помилок (bugfix, servicepack).
Можливе підвищення апаратно-програмних вимог ПЗ.
У чистому вигляді дані системи не застосовні для авторизації використання ПЗ.
Ці системи застосовуються лише до продуктів невеликого обсягу (до 1 мегабайта).
Даний клас систем уразливий, оскільки програмний код, в кінцевому підсумку, розпаковується або розшифровується для виконання.
Мають невеликим терміном безпечного використання, з огляду на п.4
Упаковка та шифрування виконуваного коду вступає в конфлікт із забороною самоідентифікування коду в сучасних ОС.
СЗ від несанкціонованого копіювання здійснюють "прив'язку" ПЗ до дистрибутивному носія (гнучкий диск, CD …). Даний тип захистів грунтується на глибокому вивченні роботи контролерів накопичувачів, їх фізичних показників, нестандартних режимів розбивки, читання / запису і т.п. При цьому на фізичному рівні створюється дистрибутивний носій, що володіє (Приблизно) неповторними властивостями (зазвичай це досягається при допомоги нестандартної розмітки носія інформації або / і запису на нього додаткової інформації – пароля або мітки), а на програмному – створюється модуль, налаштований на ідентифікацію та аутентифікацію носія за його унікальним властивостям. При цьому можливе застосування прийомів, використовуваних пакувальниками / шифратор.
Позитивні фактори:
Утруднення нелегального копіювання та розповсюдження ПЗ;
Захист прав користувача на придбане ПЗ.
Негативні фактори:
Велика трудомісткість реалізації системи захисту;
Уповільнення продажів через необхідність фізичної передачі дистрибутивного носія інформації;
Підвищення системних вимог через захисту (наявність накопичувача);
Зниження відмовостійкості ПЗ;
Несумісність захисту та апаратури користувача (накопичувач, контролер);
На час роботи ПЗ займається накопичувач;
Загроза крадіжки захищеного носія;
СЗ від НСД здійснюють попередню і періодичну аутентифікацію користувача чи використовувати його комп'ютерної системи шляхом запиту додаткової інформації. До цього типу СЗ можна віднести системи парольного захисту ПЗ, системи "прив'язки" ПЗ до комп'ютера користувача, системи з " ключовими дисками "та апаратно-програмні системи з електронними ключами. У першому випадку "ключову" інформацію вводить користувач, у другому – вона міститься в унікальних параметрах комп'ютерної системи користувача, у третьому – вона зберігається на диску і в четвертому випадку "Ключова" інформація зчитується з мікросхем електронного ключа.
Парольні захисту
Цей клас СЗПО, на сьогоднішній день, є найпоширенішим. Основний принцип роботи даних систем полягає в ідентифікації та аутентифікації користувача ПЗ шляхом запиту додаткових даних, це можуть бути назва фірми та / або ім'я та прізвище користувача і його пароль або тільки пароль / реєстраційний код. Ця інформація може запитуватися різних ситуаціях, наприклад, при старті програми, після закінчення терміну безкоштовного використання ПЗ, при виклику процедури реєстрації або в процесі встановлення на ПК користувача. Процедури парольного захисту прості в реалізації і, тому, дуже часто застосовуються виробниками ПЗ. Більшість парольних СЗПО використовує логічні механізми, що зводяться до перевірки правильності пароля / коду й запуск або не запуску ПЗ, в залежності від результатів перевірки. Існують також системи, шифрувальні захищається ПЗ та використовують пароль або похідну від нього величину як ключ дешифрування, більшість таких систем використовує слабкі або найпростіші алгоритми шифрування, нестійкі до спрямованим атакам. Це відбувається через складність коректної реалізації стійких криптоалгоритмів і недоцільність їх застосування для захисту недорогих умовно-безкоштовних програмних продуктів, що становлять більшість ПЗ, яке користується парольні захисту. Лише останнім часом розроблені парольні СЗПО, реалізують стійкі криптоалгоритми типу DES і RSA, вони реалізовані у вигляді модуля і допоміжних бібліотек і встановлюються на вже скомпільовані модулі ПЗ.
Слабкою ланкою парольних захистів є блок перевірки правильності введеного пароля / коду. Для такої перевірки можна порівнювати введений пароль з записаним в коді ПО правильним або з правильно сгенерованими з введених додаткових даних паролем. Можливо так само порівняння похідних величин від введеного і правильного паролів, наприклад їх хеш-функцій, в такому випадку в коді можна зберігати тільки похідну величину, що підвищує стійкість захисту. Шляхом аналізу процедур перевірки можна знайти реальний пароль, записаний в коді ПЗ, знайти правильно згенерований пароль з введених даних або створити програму для перебору паролів для визначення пароля з потрібної хеш-сумою. Крім того, якщо СЗПО не використовує шифрування, досить лише примусово змінити логіку перевірки для отримання безперешкодного доступу до ПЗ. Шифрувальні системи більш стійкі до атак, але при використанні найпростіших або некоректно реалізованих криптоалгоритмів є небезпека дешифрування ПЗ.
Слабкою ланкою таких захистів є той факт, що на ПК користувача ПЗ завжди запускається на виконання, що призводить до можливості примусового збереження ПЗ після відпрацювання системи захисту, дослідження самої захисту та виявлення даних, що використовуються СЗПО для аутентифікації ПК користувача.
Позитивні фактори:
Не потрібно додаткових апаратних засобів для роботи захисту.
Утруднення несанкціонованого доступу до скопійовані по.
Простота застосування.
"Невидимість" СЗПО для користувача.
Негативні фактори:
Помилкові спрацьовування СЗПО за будь-яких змінах в параметрах ПК.
Низька стійкість при доступі зловмисника до ПК користувача.
Можливість конфліктів із системним ПЗ.
Програмно-апаратні засоби захисту ПЗ з електронними ключами
Цей клас СЗПО останнім часом здобуває все більшу популярність серед виробників програмного забезпечення (ПЗ). Під програмно-апаратними засобами захисту, в даному випадку, розуміються засоби, засновані на використанні так званих "апаратних (електронних) ключів". Електронний ключ – це апаратна частина системи захисту, що представляє собою плату з мікросхемами пам'яті і, в деяких випадках, мікропроцесором, вміщену в корпус і призначену для установки в один із стандартних портів ПК (COMM, LPT, PCMCIA, USB …) або слот розширення материнської плати. Так само як такого пристрою можуть використовуватися СМАРТ-карти. За результатами проведеного аналізу, програмно-апаратні засоби захисту Зараз є одними з найбільш стійких систем захисту ПЗ від несанкціонованого доступу.
Електронні ключі по архітектурі можна підрозділити на ключі з пам'яттю (Без мікропроцесора) і ключі з мікропроцесором (І пам'яттю).
Найменш стійкими (в залежності від типу програмної частини) є системи з апаратною частиною першого типу. У таких системах критична інформація (ключ дешифрування, таблиця переходів) зберігається в пам'яті електронного ключа. Для дезактивації таких захистів в більшості випадків необхідна наявність у зловмисника апаратної частини системи захисту (основна методика: перехоплення діалогу між програмної та апаратної частинами для доступу до критичної інформації).