МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НУ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 4
на тему:
«Дослідження методів ПЗ та їх реалізація»
з курсу:
«Захист программного забезпечення та програмні методи захисту інформації »
Львів 2009
Методичні вказівки до лабораторної роботи № 4
на тему:«Дослідження методів ЗПЗ та їх реалізація». З курсу:«Захист программного забезпечення та програмні методи захисту інформації »
Мета :дослідити методи ПЗ та їх оеалізацію
Укладачі: кан. техн. наук, доц.. В.І. Отенко, О.В.Пашук
При участі: Богрецова Н. А., Пігур Н. В.
Мета : дослідити методи ЗПЗ та їх реалізацію
Теоретичні відомості
Оцінка ефективності системи захисту програмного забезпечення
Системи захисту ПЗ широко поширені й перебувають у постійному розвитку, завдяки розширенню ринку ПЗ й телекомунікаційних технологій. Необхідність використання систем захисту (СЗ) ПЗ обумовлена рядом проблем, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство); несанкціоноване використання ПЗ (крадіжка й копіювання); несанкціонована модифікація ПЗ з метою впровадження програмних зловживань; незаконне поширення й збут ПЗ (піратство).
Існуючі системи захисту програмного забезпечення можна класифікувати по ряду ознак, серед яких можна виділити метод установки, використовувані механізми захисту й принцип функціонування.
Системи захисту ПЗ по методуустановки можна підрозділити на системи, установлювані на скомпільовані модулі ПЗ; системи, що вбудовують у вихідний код ПЗ до компіляції; і комбіновані.
Системи першого типу найбільш зручні для виробника ПЗ, тому що легко можна захистити вже повністюготове й протестованеПЗ (звичайно процес установкизахисту максимально автоматизований і зводиться до вказівкиімені файлу, що захищає, і натисканню "Enter"), а тому й найбільш популярні. У той же час стійкість цих систем досить низка (залежно від принципу дії СЗ), тому що для обходу захисту досить визначитикрапку завершення роботи "конверта" захисту й передачі керування захищеній програмі, а потім примусово неї зберегти в незахищеному виді.
Системи другого типу незручні для виробника ПЗ, тому що виникає необхідність навчати персонал роботі із програмним інтерфейсом (API) системи захисту звитікаючими звідси грошовими й тимчасовими витратами. Крім того, ускладнюється процес тестування ПЗ й знижується його надійність, тому що крім самого ПЗ помилки може містити API системи захисту або процедури, його що використають. Але такі системи єбільше стійкими до атак, тому що тут зникає чітка границя між системою захисту і як такимПЗ.
По використовуваних механізмах захисту СЗ можна класифікувати на: системи, що використовують складні логічні механізми; системи, що використовують шифрування захистуПЗ; і комбіновані системи.
Системи першого типу використовують різні методи й прийоми, орієнтовані на утруднення дизасемблювання, налагодження й аналізу алгоритму СЗ і ПЗ. Цей тип СЗ найменш стійкий до атак, тому що для подолання захисту досить проаналізувати логічні процедури перевірки й належним чином їх модифікувати.
Більше стійкими є системи другого типу. Для дезактивації таких захистів необхідне визначення ключадешифраціїПЗ.
Самими стійкими до атак є комбіновані системи.
Для захисту ПЗвикористовується ряд методів, таких як:
Алгоритми заплутування - використаються хаотичні переходи в різні частини коду, впровадження помилкових процедур - "пустишок", холості цикли, перекручування кількості реальних параметрів процедурПЗ, розкид ділянок коду по різних областяхОЗУ й т.п.
Алгоритми мутації - створюються таблиці відповідності операндів - синонімів і заміна їх один на одного при кожному запуску програми за певною схемою або випадковим образом, випадкові зміни структури програми.
Алгоритми компресії даних - програма запаковується, а потім розпаковується в міру виконання.
Алгоритми шифрування даних - програма шифрується, а потім розшифровується в міру виконання.
Обчислення складних математичних виразів у процесі відпрацьовування механізму захисту - елементи логіки захисту залежать від результату обчислення значення якої-небудь формули або групи формул.
Методи утруднення дизасемблювання - використовуються різні прийоми, спрямовані на запобігання дизасемблювання в пакетному режимі.
Методи утруднення налагодження - використовуються різні прийоми, спрямовані на ускладнення налагодження програми.
Емуляція процесорів і операційних систем - створюється віртуальний процесор і/або операційна система (не обов'язково реально існуючі) і програма-перекладач із системи команд IBM у систему команд створеного процесора або ОС, після такого перекладуПЗ може виконуватися тільки за допомогою емулятора, що різко утрудняє дослідження алгоритмуПЗ.
Нестандартні методи роботи з апаратним забезпеченням - модулі системи захисти звертаються до апаратур ЕОМ, минаючи процедури операційної системи, і використовуютьмаловідомі або недокументовані її можливості.
За принципом функціонування СЗ можна поділити на:
- пакувальники/шифратори;
- СЗ від несанкціонованого копіювання;
- СЗ від несанкціонованого доступу (НСД).
- Пакувальники/шифратори
Спочатку, основною метою пакувальників/шифраторів було зменшення обсягу модуля, що виконує, на диску без шкоди для функціональності програми, але пізніше на перший план вийшла мета захисту ПЗ від аналізу його алгоритмів і несанкціонованої модифікації. Для досягнення цього використовуються алгоритми компресії даних; прийоми, пов'язані з використанням недокументованих особливостей операційних систем (ОС) і процесорів; шифрування даних, алгоритми мутації, заплутування логіки програми, приведення ОС у нестабільний стан на час роботи ЗД і ін.
Переваги:
У рамках періоду безпечного використання дані системи забезпечують високий рівень захисту ПЗ від аналізу його алгоритмів.
Методи упакування/шифрації набагато збільшують стійкість систем захисту інших типів.
Недоліки:
Практично всі застосовувані методи сповільнюють виконання коду ПЗ.
Шифрування/упакування коду ПЗ викликає утруднення при відновленні (update) і виправленні помилок (bugfix, servicepack).
Можливе підвищення апаратно-програмних вимог ПЗ.
У чистому видгляді дані системи не застосовні для авторизації використання ПЗ.
Ці системи застосовні лише до продуктів невеликого обсягу (до 1 мегабайта).
Даний клас систем уразливий, тому що програмний код, в остаточному підсумку, розпаковується або розшифровується для виконання.
Упакування й шифрування коду, що виконує, вступає в конфлікт із забороною коду, що самомодифікується, у сучаснихОС.
- СЗ від несанкціонованого копіювання
СЗ від несанкціонованого копіювання здійснюють "прив'язку" ПЗ до дистрибутивного носія (гнучкий диск, CD ...). Даний тип захистів ґрунтується на глибокому вивченні роботи контролерів накопичувачів, їхніх фізичних показників, нестандартних режимів розбивки, читання/запису й т.п. При цьому на фізичному рівні створюється дистрибутивний носій, що володіє (приблизно) неповторними властивостями (звичайно це досягається за допомогою нестандартної розміткиносія інформації або/і запису на нього додаткової інформації - пароля або мітки), а на програмному - створюється модуль, настроєний на ідентифікацію й аутентификацію носія по його унікальним властивостям. При цьому можливо застосування прийомів, використовуваних пакувальниками/шифраторами.
Переваги:
Утруднення нелегального копіювання й поширенняПЗ;
Захист прав користувача на придбане ПЗ.
Недоліки:
Більша трудомісткість реалізації системи захисту;
Із продажів через необхідність фізичної передачі дистрибутивногоносія інформації;
Підвищення системних вимог через захист (наявність накопичувача);
Зниження стійкості до відмовПЗ;
Несумісність захисту й апаратури користувача (накопичувач, контролер);
На час роботи ЗД займаєтьсянакопичувач;
Загроза крадіжки захищеногоносія;
- СЗ від НСД
СЗ від НСД здійснюють попередню або періодичну аутентификацію користувача ПО або його комп'ютерної системи шляхом запиту додаткової інформації. До цього типу СЗ можна віднести системи парольного захисту ПЗ, системи "прив'язки" ПЗ до комп'ютера користувача, системи з " ключовими дисками" і апаратно-програмні системи з електронними ключами. У першому випадку "ключову" інформацію вводить користувач, у другому - вона отримується в унікальних параметрах комп'ютерної системи користувача, у третьому - вона зберігається на диску й у четвертому випадку "ключова" інформація зчитується з мікросхем електронного ключа.
Парольні захисти
Цей клас СЗПЗ, на сьогоднішній день, є найпоширенішим. Основний принцип роботи даних систем полягає в ідентифікації й аутентификації користувача ПЗ шляхом запиту додаткових даних, це можуть бути назва фірми і/або ім'я й прізвище користувача і його пароль або тільки пароль/реєстраційний код. Ця інформація може запитуватися в різних ситуаціях, наприклад, при старті програми, після закінчення строкубезкоштовного використання ПЗ, при виклику процедури реєстрації або в процесі установки на ПК користувача. Процедури парольного захисту прості в реалізації й, тому, дуже часто застосовуються виробниками ПЗ. Більшість парольнихСЗПЗвикористовує логічні механізми, що зводяться до перевірки правильності пароля/коду й запуску або не запускуПЗ, залежно від результатів перевірки. Існують так само системи, що шифрують захистПЗ й використовують пароль або похідну від нього величину як ключдешифрації, більшість таких систем використовує слабкі або найпростіші алгоритми шифрування, нестійкі до спрямованих атак.
Слабкою ланкою парольних захистів є блок перевірки правильності введеного пароля/коду. Для такої перевірки можна порівнювати уведений пароль із записаним у коді ПЗ правильним або із правильно згенерованим з введених додаткових даних паролем. Можливе порівняння похідних величин від введеного й правильного паролів, наприклад їхній Хеш-функцій, у такому випадку в коді можна зберігати тільки похідну величину, що підвищує стійкість захисту. Шляхом аналізу процедур перевірки можна знайти реальний пароль, записаний у коді ПЗ, знайти правильно згенерований пароль із введених даних
Системи, що шифрують, більш стійкі до атак, але при використанні найпростіших або некоректно реалізованихкриптоалгоритмів є небезпекадешифраціїПЗ.
Для всіх парольних систем існує загроза перехоплення пароля при його введенні авторизованим користувачем. Крім того, у більшості СЗПЗ даних типів процедура перевірки використовується лише один раз, звичайно при реєстрації або установціПЗ, потім система захисту просто відключається, що створює реальну загрозу для НСД при незаконному копіюванні ПЗ.
Переваги:
Надійний захист від зловмисника-непрофесіонала.
Мінімальні незручності для користувача.
Можливість передачі пароля/коду по мережі.
Відсутність конфліктів із системним і прикладним ПЗ й апаратним забезпеченням.
Простота реалізації й застосування.
Низька вартість.
Недоліки:
Низька стійкість більшості систем захисту даного типу.
Користувачеві необхідно запам'ятовувати пароль/код.
Системи "прив'язки"ПЗ
Системи цього типу при установці ПЗ на ПК користувача здійснюють пошук унікальних ознак комп'ютерної системи або вони встановлюються самою системою захисту. Після цього модуль захисту в самомуПЗ настроюється на пошук і ідентифікацію даних ознак, по яких надалі визначається авторизоване або неавторизоване використання ПО. При цьому можливо застосування методик оцінки швидкісних і інших показників процесора, материнської плати, додаткових пристроїв, ОС, читання/запис у мікросхеми енергонезалежної пам'яті, запис схованих файлів, настроювання на найбільше, що зустрічає часто карту, використання ОЗУ й т.п.
Слабкою ланкою таких захистів є той факт, що на ПК користувача ПЗ завжди запускається на виконання, що приводить до можливості примусового збереження ПЗпісля відпрацьовування системи захисту, дослідження самого захисту й виявлення даних, використовуваним СЗПЗ для аутентификації ПК користувача.
Переваги:
Не потрібно додаткових апаратних засобів для роботи захисту.
Утруднення несанкціонованого доступу до скопійованого ПЗ.
Простота застосування.
"Невидимість" СЗПЗ для користувача.
Недоліки:
Помилкові спрацьовування СЗПЗ при будь-яких змінах у параметрах ПК.
Низька стійкість при доступі зловмисника до ПК користувача.
Можливість конфліктів із системним ПЗ.
Програмно-апаратні засоби захисту ПЗз електронними ключами
Цей клас СЗПЗ останнім часом здобуває все більшу популярність серед виробників програмного забезпечення (ПЗ). Під програмно-апаратними засобами захисту, у цьому випадку, розуміються засоби, засновані на використанні так званих "апаратних (електронних) ключів". Електронний ключ - це апаратна частина системи захисту, що представляє собою плату з мікросхемами пам'яті й, у деяких випадках, мікропроцесором, поміщену в корпус і призначену для установки в один зі стандартних портів ПК (COMM, LPT, PCMCIA, USB ... ) .Так само як такий пристрій можуть використатисяСмарт-карти. За результатами проведеного аналізу, програмно-апаратні засоби захисту в даний момент є одними із самих стійких систем захисту ПЗ від НСД.
Електронні ключі по архітектурі можна підрозділити наключіз пам'яттю (без мікропроцесора) і ключіз мікропроцесором (і пам'яттю).
Найменш стійкими (залежно від типу програмної частини) є системи з апаратною частиною першого типу. У таких системах критична інформація (ключдешифрації, таблиця переходів) зберігається в пам'яті електронного ключа. Для дезактивації таких захистів у більшості випадків необхідна наявність у зловмисника апаратної частини системи захисту (основна методика: перехоплення діалогу між програмною й апаратною частинами для доступу до критичної інформації).
Самими стійкимиє системи з апаратною частиною другого типу. Такі комплекси містять в апаратній частині не тільки ключдешифрації, але й блоки шифрації/дешифраціїданих, у такий спосіб при роботі захисту в електронний ключ передаються блоки зашифрованої інформації, а приймаються відтіля розшифровані дані. У системах цього типу досить складно перехопити ключдешифрації тому що всі процедури виконуються апаратною частиною, але залишається можливість примусового збереження захищеної програми у відкритому виді після відпрацьовування системи захисту. Крім того, до них застосовні методи криптоаналізу..
Переваги:
Значне утруднення нелегального поширення й використання ПЗ;
Рятування виробникаПЗвід розробки власної системи захисту;
Висока автоматизація процесу захистуПЗ;
Наявність API системи для більше глибокого захисту;
Можливість легкого створення демо-версий;
Досить великий вибір таких систем на ринку;
Недоліки:
Утруднення розробки й налагодження ПЗ через обмеження з боку СЗ;
Додаткові витрати на придбання системи захисту й навчання персоналу;
Із продажів через необхідність фізичної передачі апаратної частини;
Підвищення системних вимог через захист (сумісність, драйвери);
Зниження стійкості до відмовПЗ;
Несумісність систем захисту й системного або прикладногоПЗкористувача;
Несумісність захисту й апаратури користувача;
Наявність в апаратної частини розмірів і ваги (для COMM/LPT = 5х3х2див ~ 50гр);
Загроза крадіжки апаратного ключа
Засоби захисту ПЗз "ключовими дисками"
У даний момент цей тип систем захисту мало розповсюджений, через його моральне старіння. СЗПЗ цього типу багато в чому аналогічні системам з електронними ключами, але тут критична інформація зберігається на спеціальному, ключовому, носії. Так само багато загального є й із системами захисту від копіювання, тому що використаються ті ж методи роботи із ключовим носієм.
Основною загрозою для такихСЗПЗє перехоплення зчитування критичної інформації, а так само незаконне копіювання ключовогоносія.
Позитивні й негативні сторони даного типу СЗПЗ практично повністю збігаються з такими в систем з електронними ключами.
Показники застосовності:
Критерії оцінки:
Обфускація й захист програмних продуктів.
Витрати виробників на створення ефективного методу захисту їхніх програмних продуктів окупаються й компенсують потенційний збиток, завданий нелегальним копіюванням і використанням програм.
Існують два основних способи захисту інтелектуальної власності, і отже, самих програмних продуктів: Юридичний (законний) та Технічний.
Нижче приводиться поверхневий опис найпоширеніших на даний момент методів захистуПП.
Виконання на стороні сервера.
Даний метод захисту заснований на технології клієнт-сервер, він дозволяє запобігти відсиланню коду програми користувачам, які будуть із нею працювати, тому що сама програма зберігається, і виконується на сервері, а користувачі використовуючи клієнтську частину цієї програми, одержують результати її виконання (малюнок 1)
/
Малюнок 1. Виконання на стороні сервера
Часто даний метод захисту використається в різних програмах-сценаріях, які розташовуються на WEB серверах, і виконують загальні операції, наприклад, контролюють роботу інших програм (front-end), а також передають їм, які або дані для обробки.
Недоліком даного методу є те, що він встановлює залежність пропускної здатностімережі й тих даних, з якими буде працювати програма (відповідно робота змультимедія даними вимагає найбільш максимальної пропускної здатностімережі). Тому даний метод найбільш ефективний для простих програм (сценаріїв).
Перевага такого методу, полягає в тому, що зловмисникові в цьому випадку потрібно буде для початку скомпрометувати сам сервер, тільки після чого він зможеодержати копію необхідної програми.
Водяний знак (software watermark) і відбиток пальця.
Використання водяних знаків, ґрунтується на записі в код програми схованої інформації (кому належать авторські права й т.д.), що дозволяє справжньомуавторові програми довести те, що вона є саме його інтелектуальною власністю.
Відбиток пальця (software fingerprint) інша технологія, тому що вона крім запису інформації, що дозволяє довести інтелектуальне право власності на програму, вимагає запису в кожну копію програми унікального ідентифікаційного коду, що присвоює кожному покупцеві програми, що дозволяє в наслідку швидко відстежити порушника авторського права, що, наприклад, буде нелегально перепродувати програму (search and destroy them :).
Недолік цих методів полягає в тому, що в зловмисника може з'явитися можливість піддати зміні водяний знак або відбиток пальця.
Установкадійсності коду (tamper-proofing).
У цьому випадку, у програміміститься процедура перевірки цілісності самої програми, що дозволяє визначити чи була програма змінена ( чибули внесені якісь зміни в її код). Якщо ця процедура виявляє, що в програму внесені зміни, вона робить програму не функціональною.Це дозволяє захистити програмний продукт, від змін з боку зловмисника.
Шифрування програмного коду.
Використовується, для того щоб запобігти втручанню в програму, а також ускладнити вивчення зловмисником того, як улаштована програма, як вона працює, як у ній реалізований метод захисту й т.д.
Даний метод захисту передбачає зашифровування коду програми, після чого вона в зашифрованому виді поставляється кінцевим користувачам (іноді ефективно зашифровувати тільки найбільш важливі, критичні, ділянки коду, а не весь код програми). Коли користувач запускає таку програму, спочатку буде запущена процедура розшифровки програми, який буде потрібно ключ, за допомогою якого буде розшифрована запускає програма.
Обфускація, як один з методів захисту програм
Обфускація ("obfuscation" - заплутування), це один з методів захисту програмного коду, що дозволяє ускладнити процес реверсивної інженерії коду програмного продукту, що захищає.
Обфускація може застосовуватися не тільки для захисту ПП, вона має більше широке застосування, наприклад вона, може бути використана творцями вірусів, для захисту їхніх створінь і т.д.
Суть процесу обфускаціїполягає в тому, щоб заплутати програмний код і усунути більшість логічних зв'язків у ньому, тобто трансформувати його так, щоб він був дуже важкий для вивчення й модифікації сторонніми особами.
Алгоритми процесу обфускації
Алгоритм обфускації в більшості випадків розглядається як алгоритм, який повинен дотримуватисяобфускатор (незалежна програма, що здійснює процес обфускації над переданим їй кодом).
На даний момент існують різні алгоритми здійснення процесу обфускації, починаючи від загальних (абстрактних) алгоритмів процесу обфускації й закінчуючи більше просунутими. Ці алгоритми створювалися відповідно до можливостей тієї або іншої мови програмування, і на сьогодні більшість із них адаптовано безпосередньо під мови програмування високого рівня. Нижче представлене короткий опис деяких з них.
Алгоритм Колберга ("Collberg's algorithm").
Даний алгоритм оперує наступними вхідними значеннями:
програма "А" що складається з вихідних або об'єктних (двійкових) файлів "{З1,З2}".
стандартні бібліотеки, використовувані програмою "{L1,L2}".
набір процесів, що трансформують, "Т{Т1,Т2}".
певний фрагмент коду "S", що витягає із програми "А", і який безпосередньо буде підданий трансформації.
набір функцій "Е{Е1,Е2}" які будуть визначати ефективність застосування певних процесів, що трансформують, "{Т1,Т2}" до фрагмента коду "S".
набір функцій "I{I1,I2}" які будуть визначати важливість фрагмента коду "S", і залежно від цього будуть задавати певне значення змінної "RequireObfuscation" (чим "S" важливіше тим ця змінна буде зберігати більше значення).
дві числові змінні "AcceptCost" > 0, "RequireObfuscation" > 0, де перше зберігає інформацію про доступне максимальне збільшення системних ресурсів по потрібних програмі "А" після того як вона піддасться обфускації, а друг змінна буде зберігати значення необхідного рівня здійснення обфускации (чим важливіше фрагмент коду "S", тим це значення повинне бути більше).
Алгоритм Колберга має таку послідовність операцій:
Завантаження елементів "{З1,З2}" програми "А".
Завантаження бібліотек "{L1,L2}".
Здійснення обфускації над програмою "А", шляхом виділення фрагмента коду "S" і визначення найбільш ефективного процесу трансформації для нього. Цей етап повторюється доти, поки не буде, досягнуть необхідний рівень обфускації "RequireObfuscation" або припустиме збільшення ресурсів "AcceptCost".
Генерація програми "А'",що трансформується.
Алгоритм Колбергавважаєтьсязагальним алгоритмом здійснення процесу обфускації (тобто він не визначає, як саме повинен здійснюватися, той або іншийметод обфускації), нижче буде розглянутий більше спеціалізований алгоритм, тому що він описує послідовність здійснення одного з методів обфускації, а саме обфускаціїкерування.
Chenxi Wang's алгоритм.
У якості вхідних даних алгоритм приймає типову процедуру, написану мовою високого рівня.Процес обфускації кожної такої процедури складається із трьох етапів:
створення графа потоку керування цієї процедури (граф задається безліччю блоків і безліччюзв'язківз'єднуючихїх), після чого граф розбивається, шляхом заміни циклічних конструкцій у ньому на конструкції типу "if (умова) goto";
нумерація всіх блоків у графі, і додавання в код процедури змінної (наприклад "swVar") хранящей номер наступного виконуваного блоку;
приведення графа до однорідного ("плоскому") виду.
Вище описаний варіант алгоритму обфускації ("Chenxi Wang's algorithm") є не сильно стійким, тому що визначити наступний виконуваний блок, неважко (він у нашому випадку буде зберігатися в змінної "swVar"). Тому для підвищення його стійкості вводять масив (наприклад "@gg"), що містить крім номерів блоків, не потрібну інформацію, у результаті запис "$swVar = S6", можна замінити на щось подібне "$swVar = $gg[$gg[1] + $gg[3]]".
Види обфускації
Лексична обфускация
Найбільш проста, полягає у форматуванні коду програми, зміні його структури, таким чином, щоб він став нечитабельним, менш інформативним, і важким для вивчення.
Обфускація такого виду містить у собі:
видалення всіх коментарів у коді програми, або зміна їх на що дезінформуючі
видалення різних «пробілів», відступів які звичайно використовуються для кращого візуального сприйняття коду програми
заміну імен ідентифікаторів (імен змінних, масивів, структур, процедур і т.д.), на довільні довгі набори символів, які важко сприймати людині
додавання різних зайвих (сміттєвих) операцій
змінарозташування блоків (функцій, процедур) програми, таким чином, щоб це не яким образом не вплинуло на її працездатність.
Нижче представлений приклад фрагмента вихідного коду програми (написаної на Perl), до й після проходження лексичноїобфускації.
До лексичноїобфускації:
my $filter;
if (@pod) {
my ($buffd, $buffer) = File::Temp::tempfile(UNLINK => 1);
print $buffd "";
print $buffd @pod or die "";
print $buffd
close $buffd or die "";
@found = $buffer;
$filter = 1;
}
exit;
sub is_tainted {
my $arg = shift;
my $nada = substr($arg, 0, 0); # zero-length
local $@; # preserve caller's version
eval { eval "#" };
return length($@) != 0;
}
sub am_taint_checking {
my($k,$v) = each %ENV;
return is_tainted($v);
}
Після лексичноїобфускації:
sub z109276e1f2 { ( my $z4fe8df46b1 = shift ( @_ ) ) ; ( my
$zf6f94df7a7 = substr ( $z4fe8df46b1 ,
(0x1eb9+ 765-0x21b6) , (0x0849+ 1465-0x0e02) ) ) ; local $@ ;
eval { eval ( (
"" ) ) ; } ; return ( ( length ( $@ ) != (0x26d2+ 59-0x270d) ) )
; } my ( $z9e5935eea4 ) ; if ( @z6a703c020a ) { ( my (
$z5a5fa8125d , $zcc158ad3e0 ) =
File::Temp::tempfile ( "" , (0x196a+ 130-0x19eb) ) ) ; print (
$z5a5fa8125d "" ) ; ( print ( $z5a5fa8125d @z6a703c020a
) or die ( ( ( ( "" . $zcc158ad3e0 ) . "\x3a\x20" ) . $! ) ) ) ;
print ( $z5a5fa8125d "" ) ; ( close ( $z5a5fa8125d ) or die ( ( (
( "" ) ) ) ; ( @z8374cc586e = $zcc158ad3e0 ) ; ( $z9e5935eea4 =
(0x1209+ 1039-0x1617) ) ; } exit ; sub z021c43d5f3 { ( my (
$z0f1649f7b5 , $z9e1f91fa38 ) = each ( %ENV ) ) ; return (
z109276e1f2 ( $z9e1f91fa38 ) ) ; }
Процедура розробки систем програмно-технічного захисту програмного забезпечення.
Процес проектування й розробки СЗПЗ можна логічно розбити на етапи.
Виявлення цілей і завдань, що стоять перед виробником ПЗ. На цьому етапі необхідно визначити початкові умови, виходячи з яких буде розроблятися система захистуПЗ. Серед можливих цілей, переслідуваних виробником ПЗ, можуть бути: максимізація прибутку від продажів програмного продукту, мінімізація втрат від «піратства», витиснення конкуруючих продуктів із сегмента ринку, вихід на новий сегмент ринку й ін. Завданнями ж можуть бути: захист одиничного продукту, захист серії продуктів, створення системи захисту, що надалі можна було б запропонувати як самостійний продукт і ін.
Узгодження припустимого відсотка втрат від «піратства». Даний етап, разомз першим, дозволяє визначити основний напрямок роботи зі створення системи захисту. Як правило, фірма-виробник ПЗ має дані про тіньове поширення своїх продуктів, а також про різницю між тим що планувався й реальним обсягами продажів На зазначеному ж етапі визначається відсоток втрат, з яким виробник готовий упокоритися (це може бути й 0%).
Визначення відповідним вимогам рівня захисту. Вимоги до рівня захисту можна оцінювати подвійно: або визначати значення приватних критеріїв стійкостізахисту до атак і їхні вагові коефіцієнти, щоб розрахувати комплексний критерій стійкості; або визначати часовий інтервал, протягом якого СЗПЗгарантовано буде перешкоджати тіньовому поширенню продукту, що захищає
Виявлення функціональної спрямованості продукту, що захищає. Дана інформація дозволяє оцінювати нетехнічні фактори, пов'язані з можливістю тіньового поширення програмного продукту, що захищає. До таких факторів можна віднести: поширеність і популярність продукту, умови використання, імовірність перетворення користувача в зловмисника, імовірність викриття несумлінних користувачів, роль документації й підтримки при використанні продукту.
Аналіз передбачуваного протоколу передачі ПЗкористувачі. На даному етапі уточнюється склад організаційних мір, пов'язаних з комерційною реалізацією програмного продукту: збір персональних даних про користувача або збереження його анонімності, роздрібна (або післяплатою) продаж продукту за готівка або продаж через глобальну мережуз електронними розрахунками, наявність знижок на нові версії для зареєстрованих користувачів або знижки на «кумулятивне» відновлення для користувачів, що перейшли з конкуруючих програмних продуктів.
Аналіз можливих і ймовірних погрозбезпекиПЗ. Цей етап являє собою процедуру оцінки й керування ризиками, пов'язаними із захистом програмного продукту від несанкціонованого використання й поширенн. Дана процедура включає: визначення безлічі можливих загроз; виділення підмножини ймовірних загроз; визначення потенційного збитку по кожній загрозі; виробіток контрзаходів; розробку загальної стратегії поводження в умовах ризику. Серед загрознесанкціонованого поширення продукту можна виділити: поширення викраденої в легального користувача автентичної інформації (пароль, серійний код); підбор цієї інформації; подолання системи технічного захисту продукту; мережну атаку на сервер глобальної мережі з метою заволодіння дистрибутивом продукту; викрадення дистрибутива в легального користувача; перетворення легального користувача в зловмисника;
Аналіз вихідних текстів продукту. Метою даного етапу єпошук потенційних місць розміщення елементів системи захисту, визначення оптимального режиму її маскування, виявлення можливих слабких місць у коді продукту, визначення основних алгоритмів продукту, ступеня впливу на них системи захисту й можливості їхньої модифікації для використання для додаткового захисту
Завдання
Розроблення програмного забезпечення (ПЗ) у якому реалізовано метод захисту від НСД та розповсюдження :
Розробити календар*
розробити калькулятор*
Розробити годинник *
*які мають працювати у demo режимі до моменту введення ліцензійного ключа.
Список використаної літератури:
D. Hsiao, D. Kerr, S. Madnick "Computer Security" Academic Press, 1979.
Г. А. Чорній, С. А. Охрименко, Ф. С. Ляхові "Безпека автоматизованих інформаційних систем" Ruxanda, 1996.
Pavel V. Semjanov "On cryptosystems untrustworthiness"
С. Середа "Програмно-апаратні системи захисту програмного забезпечення"
"A taxonomy of Obfuscating Transformations" , автори Christian Collberg, Clark Thomborson, Douglas Low.
"General Method of Program Code Obfuscation", автор Gregory Wroblewski.
"Static and dynamic analysis: synergy and duality", автор Michael D. Ernst
"Аналіз перетворень, що заплутують, програм", автор Чернов А. В.
"Software protection", автори Christian S. Collberg, Clark Thomborson.
"ALICE' ADVENTURES IN WONDERLAND", автор Lewis Carroll.
"Through the looking glass", автор Lewis Carroll.
Захист програмного забезпечення / Під ред. Д. Гроувера: Пер з англ. - М.: Мир,
Семьянов П.В., Зегжда Д.П. Аналіз засобів протидії дослідженню програмного забезпечення й методи їхнього подолання. // Компьютерпресс. - 1993. №11. - Режим доступу до электрон. даний.: http://www.password-crackers.com/publications/research.txt.
Расторгуев С.П., Дмитриевский Н.Н. Мистецтво захисту й роздягання програм. - М.: Совмаркет, 1991. - 94 с.
Середа С.А. Аналіз засобів подолання систем захисту програмного забезпечення. // ИНФОРМОСТ: Радіоелектроніка й Телекомунікації. - 2002. №4(22). С. 11-16. - Режим доступу до электрон. даний.: http://consumer.nm.ru/hacktool.htm.
Середа С.А. Оцінка ефективності систем захисту програмного забезпечення. // Компьюлог. - 2000. №2. - Режим доступу до электрон. даний.: http://consumer.nm.ru/sps_eval.htm.
Середа С.А. Керування життєвим циклом програмних продуктів як фактор скорочення тіньового ринку програмного забезпечення: Тез. межд. конф. Bi+ "INFORMATION TECHNOLOGIES - 2003", Кишинів. 2003. - Режим доступу до электрон. даний.: http://consumer.nm.ru/bitplus.htm.
Середа С.А. Економічний аналіз поводження учасників ринку програмного забезпечення // ИНФОРМОСТ: Радіоелектроніка й Телекомунікації. - 2002. №6(24). С. 4-9. - Режим доступу до электрон. даний.: http://consumer.nm.ru/ec_model.htm.
Середа С.А. Етапи подолання систем захисту програмного забезпечення. // ИНФОРМОСТ: Радіоелектроніка й Телекомунікації. - 2003. №6(30). С. 26-30. - Режим доступу до электрон. даний.: http://consumer.nm.ru/crksteps.htm.
Bjones R., Hoeben S. Vulnerabilities in pure software security systems // Utimaco Software AG, 2000. - Режим доступу до электрон. даний.: http://www.utimaco.com/eng/content_pdf/whitepaper_vulnerabilities.pdf.