МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
“ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА ЗІ
/
Звіт
з лабораторної роботи №4
«Дослідження методів ПЗ та їх реалізація»
Мета : дослідити методи ЗПЗ та їх реалізацію
Теоретичні відомості
Оцінка ефективності системи захисту програмного забезпечення
Системи захисту ПЗ широко поширені й перебувають у постійному розвитку, завдяки розширенню ринку ПЗ й телекомунікаційних технологій. Необхідність використання систем захисту (СЗ) ПЗ обумовлена рядом проблем, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство); несанкціоноване використання ПЗ (крадіжка й копіювання); несанкціонована модифікація ПЗ з метою впровадження програмних зловживань; незаконне поширення й збут ПЗ (піратство).
Існуючі системи захисту програмного забезпечення можна класифікувати по ряду ознак, серед яких можна виділити метод установки, використовувані механізми захисту й принцип функціонування.
Системи захисту ПЗ по методуустановки можна підрозділити на системи, установлювані на скомпільовані модулі ПЗ; системи, що вбудовують у вихідний код ПЗ до компіляції; і комбіновані.
Системи першого типу найбільш зручні для виробника ПЗ, тому що легко можна захистити вже повністюготове й протестованеПЗ (звичайно процес установкизахисту максимально автоматизований і зводиться до вказівкиімені файлу, що захищає, і натисканню "Enter"), а тому й найбільш популярні. У той же час стійкість цих систем досить низка (залежно від принципу дії СЗ), тому що для обходу захисту досить визначитикрапку завершення роботи "конверта" захисту й передачі керування захищеній програмі, а потім примусово неї зберегти в незахищеному виді.
Системи другого типу незручні для виробника ПЗ, тому що виникає необхідність навчати персонал роботі із програмним інтерфейсом (API) системи захисту звитікаючими звідси грошовими й тимчасовими витратами. Крім того, ускладнюється процес тестування ПЗ й знижується його надійність, тому що крім самого ПЗ помилки може містити API системи захисту або процедури, його що використають. Але такі системи єбільше стійкими до атак, тому що тут зникає чітка границя між системою захисту і як такимПЗ.
По використовуваних механізмах захисту СЗ можна класифікувати на: системи, що використовують складні логічні механізми; системи, що використовують шифрування захистуПЗ; і комбіновані системи.
Системи першого типу використовують різні методи й прийоми, орієнтовані на утруднення дизасемблювання, налагодження й аналізу алгоритму СЗ і ПЗ. Цей тип СЗ найменш стійкий до атак, тому що для подолання захисту досить проаналізувати логічні процедури перевірки й належним чином їх модифікувати.
Більше стійкими є системи другого типу. Для дезактивації таких захистів необхідне визначення ключадешифраціїПЗ.
Самими стійкими до атак є комбіновані системи.
Для захисту ПЗвикористовується ряд методів, таких як:
Алгоритми заплутування - використаються хаотичні переходи в різні частини коду, впровадження помилкових процедур - "пустишок", холості цикли, перекручування кількості реальних параметрів процедурПЗ, розкид ділянок коду по різних областяхОЗУ й т.п.
Алгоритми мутації - створюються таблиці відповідності операндів - синонімів і заміна їх один на одного при кожному запуску програми за певною схемою або випадковим образом, випадкові зміни структури програми.
Алгоритми компресії даних - програма запаковується, а потім розпаковується в міру виконання.
Алгоритми шифрування даних - програма шифрується, а потім розшифровується в міру виконання.
Обчислення складних математичних виразів у процесі відпрацьовування механізму захисту - елементи логіки захисту залежать від результату обчислення значення якої-небудь формули або групи формул.
Методи утруднення дизасемблювання - використовуються різні прийоми, спрямовані на запобігання дизасемблювання в пакетному режимі.
Методи утруднення налагодження - використовуються різні прийоми, спрямовані на ускладнення налагодження програми.
Емуляція процесорів і операційних систем - створюється віртуальний процесор і/або операційна система (не обов'язково реально існуючі) і програма-перекладач із системи команд IBM у систему команд створеного процесора або ОС, після такого перекладуПЗ може виконуватися тільки за допомогою емулятора, що різко утрудняє дослідження алгоритмуПЗ.
Нестандартні методи роботи з апаратним забезпеченням - модулі системи захисти звертаються до апаратур ЕОМ, минаючи процедури операційної системи, і використовуютьмаловідомі або недокументовані її можливості.
Парольні захисти
Цей клас СЗПЗ, на сьогоднішній день, є найпоширенішим. Основний принцип роботи даних систем полягає в ідентифікації й аутентификації користувача ПЗ шляхом запиту додаткових даних, це можуть бути назва фірми і/або ім'я й прізвище користувача і його пароль або тільки пароль/реєстраційний код. Ця інформація може запитуватися в різних ситуаціях, наприклад, при старті програми, після закінчення строкубезкоштовного використання ПЗ, при виклику процедури реєстрації або в процесі установки на ПК користувача. Процедури парольного захисту прості в реалізації й, тому, дуже часто застосовуються виробниками ПЗ. Більшість парольнихСЗПЗвикористовує логічні механізми, що зводяться до перевірки правильності пароля/коду й запуску або не запускуПЗ, залежно від результатів перевірки. Існують так само системи, що шифрують захистПЗ й використовують пароль або похідну від нього величину як ключдешифрації, більшість таких систем використовує слабкі або найпростіші алгоритми шифрування, нестійкі до спрямованих атак.
Слабкою ланкою парольних захистів є блок перевірки правильності введеного пароля/коду. Для такої перевірки можна порівнювати уведений пароль із записаним у коді ПЗ правильним або із правильно згенерованим з введених додаткових даних паролем. Можливе порівняння похідних величин від введеного й правильного паролів, наприклад їхній Хеш-функцій, у такому випадку в коді можна зберігати тільки похідну величину, що підвищує стійкість захисту. Шляхом аналізу процедур перевірки можна знайти реальний пароль, записаний у коді ПЗ, знайти правильно згенерований пароль із введених даних
Системи, що шифрують, більш стійкі до атак, але при використанні найпростіших або некоректно реалізованихкриптоалгоритмів є небезпекадешифраціїПЗ.
Для всіх парольних систем існує загроза перехоплення пароля при його введенні авторизованим користувачем. Крім того, у більшості СЗПЗ даних типів процедура перевірки використовується лише один раз, звичайно при реєстрації або установціПЗ, потім система захисту просто відключається, що створює реальну загрозу для НСД при незаконному копіюванні ПЗ.
Переваги:
Надійний захист від зловмисника-непрофесіонала.
Мінімальні незручності для користувача.
Можливість передачі пароля/коду по мережі.
Відсутність конфліктів із системним і прикладним ПЗ й апаратним забезпеченням.
Простота реалізації й застосування.
Низька вартість.
Недоліки:
Низька стійкість більшості систем захисту даного типу.
Користувачеві необхідно запам'ятовувати пароль/код.
Системи "прив'язки"ПЗ
Системи цього типу при установці ПЗ на ПК користувача здійснюють пошук унікальних ознак комп'ютерної системи або вони встановлюються самою системою захисту. Після цього модуль захисту в самомуПЗ настроюється на пошук і ідентифікацію даних ознак, по яких надалі визначається авторизоване або неавторизоване використання ПО. При цьому можливо застосування методик оцінки швидкісних і інших показників процесора, материнської плати, додаткових пристроїв, ОС, читання/запис у мікросхеми енергонезалежної пам'яті, запис схованих файлів, настроювання на найбільше, що зустрічає часто карту, використання ОЗУ й т.п.
Слабкою ланкою таких захистів є той факт, що на ПК користувача ПЗ завжди запускається на виконання, що приводить до можливості примусового збереження ПЗпісля відпрацьовування системи захисту, дослідження самого захисту й виявлення даних, використовуваним СЗПЗ для аутентификації ПК користувача.
Переваги:
Не потрібно додаткових апаратних засобів для роботи захисту.
Утруднення несанкціонованого доступу до скопійованого ПЗ.
Простота застосування.
"Невидимість" СЗПЗ для користувача.
Недоліки:
Помилкові спрацьовування СЗПЗ при будь-яких змінах у параметрах ПК.
Низька стійкість при доступі зловмисника до ПК користувача.
Можливість конфліктів із системним ПЗ.
Програмно-апаратні засоби захисту ПЗз електронними ключами
Цей клас СЗПЗ останнім часом здобуває все більшу популярність серед виробників програмного забезпечення (ПЗ). Під програмно-апаратними засобами захисту, у цьому випадку, розуміються засоби, засновані на використанні так званих "апаратних (електронних) ключів". Електронний ключ - це апаратна частина системи захисту, що представляє собою плату з мікросхемами пам'яті й, у деяких випадках, мікропроцесором, поміщену в корпус і призначену для установки в один зі стандартних портів ПК (COMM, LPT, PCMCIA, USB ... ) .Так само як такий пристрій можуть використатисяСмарт-карти. За результатами проведеного аналізу, програмно-апаратні засоби захисту в даний момент є одними із самих стійких систем захисту ПЗ від НСД.
Електронні ключі по архітектурі можна підрозділити наключіз пам'яттю (без мікропроцесора) і ключіз мікропроцесором (і пам'яттю).
Найменш стійкими (залежно від типу програмної частини) є системи з апаратною частиною першого типу. У таких системах критична інформація (ключдешифрації, таблиця переходів) зберігається в пам'яті електронного ключа. Для дезактивації таких захистів у більшості випадків необхідна наявність у зловмисника апаратної частини системи захисту (основна методика: перехоплення діалогу між програмною й апаратною частинами для доступу до критичної інформації).
Самими стійкимиє системи з апаратною частиною другого типу. Такі комплекси містять в апаратній частині не тільки ключдешифрації, але й блоки шифрації/дешифраціїданих, у такий спосіб при роботі захисту в електронний ключ передаються блоки зашифрованої інформації, а приймаються відтіля розшифровані дані. У системах цього типу досить складно перехопити ключдешифрації тому що всі процедури виконуються апаратною частиною, але залишається можливість примусового збереження захищеної програми у відкритому виді після відпрацьовування системи захисту. Крім того, до них застосовні методи криптоаналізу..
Переваги:
Значне утруднення нелегального поширення й використання ПЗ;
Рятування виробникаПЗвід розробки власної системи захисту;
Висока автоматизація процесу захистуПЗ;
Наявність API системи для більше глибокого захисту;
Можливість легкого створення демо-версий;
Досить великий вибір таких систем на ринку;
Недоліки:
Утруднення розробки й налагодження ПЗ через обмеження з боку СЗ;
Додаткові витрати на придбання системи захисту й навчання персоналу;
Із продажів через необхідність фізичної передачі апаратної частини;
Підвищення системних вимог через захист (сумісність, драйвери);
Зниження стійкості до відмовПЗ;
Несумісність систем захисту й системного або прикладногоПЗкористувача;
Несумісність захисту й апаратури користувача;
Наявність в апаратної частини розмірів і ваги (для COMM/LPT = 5х3х2див ~ 50гр);
Загроза крадіжки апаратного ключа
Засоби захисту ПЗз "ключовими дисками"
У даний момент цей тип систем захисту мало розповсюджений, через його моральне старіння. СЗПЗ цього типу багато в чому аналогічні системам з електронними ключами, але тут критична інформація зберігається на спеціальному, ключовому, носії. Так само багато загального є й із системами захисту від копіювання, тому що використаються ті ж методи роботи із ключовим носієм.
Основною загрозою для такихСЗПЗє перехоплення зчитування критичної інформації, а так само незаконне копіювання ключовогоносія.
Позитивні й негативні сторони даного типу СЗПЗ практично повністю збігаються з такими в систем з електронними ключами.
Процедура розробки систем програмно-технічного захисту програмного забезпечення.
Процес проектування й розробки СЗПЗ можна логічно розбити на етапи.
Виявлення цілей і завдань, що стоять перед виробником ПЗ. На цьому етапі необхідно визначити початкові умови, виходячи з яких буде розроблятися система захистуПЗ. Серед можливих цілей, переслідуваних виробником ПЗ, можуть бути: максимізація прибутку від продажів програмного продукту, мінімізація втрат від «піратства», витиснення конкуруючих продуктів із сегмента ринку, вихід на новий сегмент ринку й ін. Завданнями ж можуть бути: захист одиничного продукту, захист серії продуктів, створення системи захисту, що надалі можна було б запропонувати як самостійний продукт і ін.
Узгодження припустимого відсотка втрат від «піратства». Даний етап, разомз першим, дозволяє визначити основний напрямок роботи зі створення системи захисту. Як правило, фірма-виробник ПЗ має дані про тіньове поширення своїх продуктів, а також про різницю між тим що планувався й реальним обсягами продажів На зазначеному ж етапі визначається відсоток втрат, з яким виробник готовий упокоритися (це може бути й 0%).
Визначення відповідним вимогам рівня захисту. Вимоги до рівня захисту можна оцінювати подвійно: або визначати значення приватних критеріїв стійкостізахисту до атак і їхні вагові коефіцієнти, щоб розрахувати комплексний критерій стійкості; або визначати часовий інтервал, протягом якого СЗПЗ гарантовано буде перешкоджати тіньовому поширенню продукту, що захищає
Виявлення функціональної спрямованості продукту, що захищає. Дана інформація дозволяє оцінювати нетехнічні фактори, пов'язані з можливістю тіньового поширення програмного продукту, що захищає. До таких факторів можна віднести: поширеність і популярність продукту, умови використання, імовірність перетворення користувача в зловмисника, імовірність викриття несумлінних користувачів, роль документації й підтримки при використанні продукту.
Аналіз передбачуваного протоколу передачі ПЗкористувачі. На даному етапі уточнюється склад організаційних мір, пов'язаних з комерційною реалізацією програмного продукту: збір персональних даних про користувача або збереження його анонімності, роздрібна (або післяплатою) продаж продукту за готівка або продаж через глобальну мережуз електронними розрахунками, наявність знижок на нові версії для зареєстрованих користувачів або знижки на «кумулятивне» відновлення для користувачів, що перейшли з конкуруючих програмних продуктів.
Аналіз можливих і ймовірних погрозбезпекиПЗ. Цей етап являє собою процедуру оцінки й керування ризиками, пов'язаними із захистом програмного продукту від несанкціонованого використання й поширенн. Дана процедура включає: визначення безлічі можливих загроз; виділення підмножини ймовірних загроз; визначення потенційного збитку по кожній загрозі; виробіток контрзаходів; розробку загальної стратегії поводження в умовах ризику. Серед загрознесанкціонованого поширення продукту можна виділити: поширення викраденої в легального користувача автентичної інформації (пароль, серійний код); підбор цієї інформації; подолання системи технічного захисту продукту; мережну атаку на сервер глобальної мережі з метою заволодіння дистрибутивом продукту; викрадення дистрибутива в легального користувача; перетворення легального користувача в зловмисника;
Аналіз вихідних текстів продукту. Метою даного етапу єпошук потенційних місць розміщення елементів системи захисту, визначення оптимального режиму її маскування, виявлення можливих слабких місць у коді продукту, визначення основних алгоритмів продукту, ступеня впливу на них системи захисту й можливості їхньої модифікації для використання для додаткового захисту
Програма калькулятор
Код програми мовою С
#include <iostream>
int main(int argc,char*argv[])
{
float a,b;
char opr;
double result;
puts ("Mykhalchuk Natalia");
puts("Zdijsnitj vvedennya danyh za formatom:operand1 operaciya operand2 <enter>");
puts("Dlya zakinchennya roboty natusnitj klavishu g");
while(puts("Vvid->"),scanf("%f%c%f",&a,&opr,&b) ||getchar()!='g')
{
switch(opr)
{
case'+':result=a+b;break;
case'-':result=a-b;break;
case'*':result=a*b;break;
case'/':if(b==0){
puts("\a\n\rPomylka:dilennya na nulj!!\a\n\r");
continue;
}else {result=a/b; break;}
default: puts("\a\n\rPomulka:nedopystymtj kod operaciyig !!\a\n\r");
continue;
}
printf("=%f\n\r",result);
}
system("PAUSE");
return 0;
}
Результати виконання програми:
/
Висновок: на лабораторні роботі №4 я ознайомилася з методами ЗПЗ та їх реалізацію з функціональними можливостями інтегрованого середовища програмування, навчилася вводити, відлагоджувати і виконувати програми, використовуючи засоби інтегрованого середовища Dev-C++.