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

Інформаційна безпека
Критерії оцінки інформаційної безпеки

Цілісність · Доступність · Конфіденційність · Спостережність· Невідмовність

Нормативні документи

COBIT · ITIL · ISO/IEC 17799:2005 · ISO/IEC 27001:2013 ·

Забезпечення

Політика · СУІБ · КСЗІ · СЗІ

Захист інформації

Технічний захист інформації · Інженерний захист інформації · Криптографічний захист інформації · Організаційний захист інформації

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

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

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

Технічні засоби захисту[ред. | ред. код]

Методи можна класифікувати за способом розповсюдження захищеного програмного забезпечення та типом носія ліцензії.

Локальний програмний захист[ред. | ред. код]

Вимога введення серійного номера (ключа) при встановленні/запуску. Історія цього методу почалася тоді, коли програми поширювалися тільки на фізичних носіях (наприклад, компакт-дисках). На коробці з диском був надрукований серійний номер, що підходить тільки до даної копії програми.

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

Мережевий програмний захист[ред. | ред. код]

  • локальний

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

Недолік в тому, що брандмауер можна налаштувати так, щоб він не пропускав пакети, що належать захищеній програмі. Правда, налаштування брандмауера вимагає деяких користувацьких навичок. Крім того, програми можуть взаємодіяти по мережі (наприклад, при організації мережевої гри). У цьому випадку брандмауер повинен пропускати такий трафік[1].

  • глобальний

Якщо програма працює з будь-яким централізованим сервером і без нього марна (наприклад, сервери онлайн-ігор, сервери оновлень антивірусів). Вона може передавати серверу свій серійний номер; якщо номер неправильний, сервер відмовляє в послузі. Недолік в тому, що, існує можливість створити сервер, який не робить такої перевірки. Наприклад, існував сервер battle.da, який за функціями був аналогічний Battle.net (від компанії Blizzard Entertainment), але пускав неавторизованих користувачів копій ігор. Зараз цей сервер закрито, але існує чимала кількість PvPGN-серверів, які також не перевіряють реєстраційних номерів.

Захист за допомогою компакт-дисків[ред. | ред. код]

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

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

  • запис інформації в цих секторах;
  • перевірка розташування та вмісту "збійних секторів;
  • перевірка швидкості читання окремих секторів.

Перші два методи практично марні через можливості зняття повного образу диска з використанням відповідного прикладного ПЗ. Третій метод вважається більш надійним (використовується, зокрема, в захисті StarForce). Але існують програми, які можуть емулювати диски з урахуванням геометрії розташування даних, тим самим обходячи й цей захист. В StarForce, в числі інших перевірок, також виконується перевірка можливості запису на вставлений диск. Якщо вона можлива, то диск вважається не ліцензійним. Однак, якщо образ буде записаний на диск CD-R, то зазначена перевірка пройде. Існує можливість приховати тип диска, щоб CD-R або CD-RW було видно як звичайний CD-ROM. Однак, в драйвер захисту може бути вбудована перевірка на наявність емуляції[1].

В даний час[коли?] найбільшу популярність у світі мають системи захисту від копіювання SecuROM, StarForce, SafeDisc, CD-RX і Tages.[3]

Для багатьох програм зазначений метод захисту недоступний через відмінність способу розповсюдження (наприклад, shareware-програми).

Захист за допомогою електронних ключів[ред. | ред. код]

Сучасні електронні ключі

Електронний ключ (донгл), вставлений в один з портів комп'ютера (з інтерфейсом USB, LPT або COM) містить ключові дані, звані також ліцензією, записані в нього розробником:

  • інформація для читання/запису (зараз практично не застосовується, оскільки після зчитування ключ може бути земульований)
  • ключі апаратних криптографічних алгоритмів (використовується найчастіше)
  • алгоритми, створені розробником програми (метод, що став доступним порівняно недавно, у зв'язку з появою електронних ключів з мікропроцесором, здатним виконувати довільний код; в даний час[коли?] використовується все частіше)[1].

Переваги захисту з використанням електронних ключів:

  • Ключ можна вставляти в будь-який комп'ютер, на якому необхідно запустити програму
  • Ключ не займає/не вимагає наявності дисковода
  • Електронний ключ "вміє" виконувати криптографічні перетворення
  • Сучасні ключі можуть виконувати довільний код, що поміщається в них розробником захисту (приклад: Guardant Code, Senselock)

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

Основні недоліки:

  • Ціна (15-30 доларів за штуку)
  • Необхідність постачання ключа кінцевому користувачеві

Раніше до недоліків можна було також віднести невисоку швидкодію ключа (у порівнянні з CPU комп'ютера). Однак сучасні ключі досягають продуктивності в 1.25 DMIPS (приклад — HASP, Guardant), а техніка захисту за їх допомогою не передбачає постійного обміну з ключем.

Проблеми з установкою ключа на певні апаратні платформи, що існували раніше, на даний момент[коли?] вирішені за допомогою мережевих ключів (які здатні працювати з однією або більше копіями захищеної програми, просто перебуваючи з ними в одній локальній мережі) і за допомогою програмних або апаратних засобів «перекидання» USB-пристроїв по мережі.

Прив'язка до параметрів комп'ютера й активація[ред. | ред. код]

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

У процесі встановлення програма підраховує код активації — контрольне значення, яке однозначно відповідає встановленим складовим комп'ютера і параметрам встановленої ОС. Це значення передається розробнику програми. На його основі розробник генерує ключ активації, який підходить для активації програми тільки на зазначеній машині (копіювання встановлених файлів на інший комп'ютер призведе до непрацездатності програми).

Перевага в тому, що не потрібно ніякого специфічного апаратного забезпечення, і програму можна поширювати за допомогою цифрової дистрибуції (через Інтернет).

Основний недолік: якщо користувач здійснює модернізацію комп'ютера (у випадку прив'язки до "заліза"), захист відмовляє. Автори багатьох програм у подібних випадках готові дати новий реєстраційний код. Наприклад, Microsoft в Windows XP дозволяє раз у 120 днів генерувати новий реєстраційний код (але у виняткових випадках, зателефонувавши в службу активації, можна отримати новий код і після закінчення цього терміну).

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

До недавнього часу такий захист розроблявся і впроваджувався розробниками самого програмного продукту. Проте зараз існують SDK для роботи з програмними ключами, наприклад HASP SL від компанії Аладдін Р. Д. Також все більшого поширення набувають сервіси, що пропонують одночасно функціонал навісного захисту і сервера активації/ліцензування (приклад: Guardant Online, Protect online).

Захист програм від копіювання шляхом перенесення їх в онлайн[ред. | ред. код]

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

Код виконується на «довіреній» стороні, звідки не може бути скопійований.

Однак, і тут виникає низка проблем, пов'язаних з безпекою:

  • стійкість такого захисту залежить, насамперед, від захищеності серверів, на яких він виконується (йдеться про Інтернет-безпеку)
  • важливе забезпечення конфіденційності запитів, аутентифікації користувачів, цілісності ресурсу (можливість «гарячого» резервування), і доступності рішення в цілому

Виникають також питання довіри до сервісу (зокрема правові), оскільки йому фактично «у відкритому вигляді» передаються як саме ПЗ, так і дані, які воно обробляє (наприклад, персональні дані користувачів).

Захист коду від аналізу[ред. | ред. код]

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

Захист програмного забезпечення на мобільних платформах[ред. | ред. код]

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

Застарілі технічні засоби захисту[ред. | ред. код]

У минулому використовувались й інші методи захисту від нелегального використання.

Ключова дискета[ред. | ред. код]

Метод був поширений за часів MS-DOS, зараз, в силу старіння технології FDD, практично не застосовується. Є чотири основних способи створення на дискетах міток, що не копіюються:

  • Зчитування конкретного сектора дискети (можливо, порожнього або збійного). Це найпростіший спосіб захисту, і при копіюванні «доріжка в доріжку» дискета копіюється.
  • Запам'ятовування збійних секторів дискети. Перед тим, як записати на дискету інформацію, її дряпають (або пропалюють лазером), після цього записують номери збійних секторів. Для перевірки достовірності дискети, програма намагається записати в ці сектори інформацію, потім зчитати  її.
  • Нестандартне форматування дискети. Відома програма FDA (Floppy Disk Analyzer), яка могла проводити дослідження і копіювання таких дискет.
  • «Плаваючий біт». Один біт записується так, що в деяких випадках він читається як «0», в деяких як «1». Проводиться багаторазове зчитування дискети; серед результатів зчитування повинні бути як нулі, так і одиниці[4].

Запис некопійовних міток на жорсткий диск[ред. | ред. код]

Деякі старі програми для DOS створювали на жорсткому диску місця, що не копіюються. Наприклад, файл довжиною 1 байт займає на диску один кластер (не менше 512 байт), і в решту 511 байт можна записати деяку інформацію. Ця практика майже не використовується, оскільки великим є ризик втрати даних.

Прив'язка до деякого фізичного об'єкта[ред. | ред. код]

Ліцензія програми може прив'язуватися до деякого фізичного об'єкта, наприклад:

  • до посібника користувача. Наприклад, програма виводить: «Введіть 5-е слово з 12-го зверху рядка на 26-й сторінці». Більш витонченим є спосіб захисту, коли в керівництві знаходиться важлива інформація, без якої неможливо пройти гру; цим відома серія Space Quest. Поширення сканерів і багатозадачних операційних систем поклало кінець цій практиці.
  • до деякого механічного пристрою. Гра Another World поставлялася з «кодовим колесом». В системі захисту від копіювання Lenslok, що застосовувалася в іграх для ZX Spectrum, треба було, подивившись на картинку через систему призм, побачити дволітерний код[4].

Юридичні засоби захисту[ред. | ред. код]

Згідно із законодавством, програмний код прирівнюється до літературних творів й до нього застосовуються всі відповідні нормативні акти. В контексті захисту використовується така термінологія:

Передбачена відповідальність, згідно з чинним законодавством, як за використання контрафактних примірників програм для ЕОМ і баз даних, так і за подолання застосовуваних технічних засобів захисту.

Організаційні засоби захисту[ред. | ред. код]

Основний принцип організаційних заходів захисту полягає в неможливості повноцінного використання програмного продукту без відповідної підтримки з боку розробника: докладної документації користувача , «гарячої лінії» підтримки системи навчання користувачів, оновлення версій і БД тощо.

Іноді захист дорогих програмних комплексів від копіювання здійснюється організаційними заходами (наприклад, надання пробної копії тільки за запитом, або встановлення повнофункціональної версії програмного комплексу на пробний період при укладенні відповідної угоди).

Організаційні заходи захисту застосовуються, як правило, великими розробниками до досить великих і складних програмних продуктів[4].

Недоліки технічних методів захисту[ред. | ред. код]

Уразливості сучасних методів захисту[ред. | ред. код]

Уразливості сучасних методів захисту можна досить строго класифікувати в залежності від використаного методу захисту.

  • Перевірка оригінального носія. Можна обійти за допомогою копіювання/емуляції диска (спеціальна програма повністю копіює диск, потім створюється драйвер віртуального дисковода, в який поміщається образ, який програма приймає за ліцензійний диск. У багатьох іграх використовується варіант цього методу під назвою «Mini Image», коли підставний диск має маленький розмір (кілька мегабайт, що містять тільки ліцензійну інформацію), програма визнає його ліцензійним
  • Введення серійного номера. Основною вразливістю є можливість безперешкодного копіювання і розповсюдження дистрибутиву разом з серійним номером. Тому в даний час практично не використовується, або використовується в сукупності з іншими методами).
  • Активація програмного забезпечення. На відміну від попереднього методу, активаційний код генерується з використанням унікальної інформації (S/N обладнання, інформації про користувача) і є унікальним. В цьому випадку, в момент генерації коду активації в процесі встановлення програми є ризик емуляції «універсального» апаратного оточення (наприклад, перехоплення звернень програми при зчитуванні відповідної інформації, або запуск програми у віртуальному середовищі). Також, при невикористанні заплутування коду захищеної програми (або використанні слабких методів), зловмисник може знайти код генерації коду активації та винести його в окрему утиліту (так званий генератор ключів або keygen), чи вирізати всю процедуру активації (що, однак, складніше, оскільки вона може викликатися в різних частинах програми)
  • Використання електронних ключів. Часто зустрічається думка[джерело?] про можливість емуляції електронного ключа або бібліотек інтерфейсу API, використовуваного при зверненні до електронного ключа. Це дійсно можна зробити при неграмотній реалізації захисту на електронному ключі (наприклад, програма тільки перевіряє наявність ключа і читає/пише в нього що-небудь). Однак вбудовані в програму захисні механізми власної розробки, засновані на виклику симетричних та асиметричних алгоритмів електронного ключа, практично виключають можливість його емуляції, оскільки звернення до ключа відбуваються щоразу різні і накопичити достатню кількість статистики для створення повного статистичного аналога неможливо. Таким чином, стійкість захисту дуже залежить від реалізації (зокрема від наявності унікальних захисних механізмів, реалізованих розробником захисту). Проте, потенційно стійкість такого захисту може бути дуже високою.
  • «Відключення» захисту шляхом модифікації програмного коду (наприклад, видалення перевірок ліцензії). Може бути реалізоване при невикористанні (або використанні слабких) інструментів заплутування коду. В результаті програма дизасемблюється (або навіть декомпілюється), код досліджується на наявність захисних механізмів, знайдені перевірки видаляються.

Багато захисних засобів надають інструменти протидії злому: дестабілізація зневаджувача; шифрування коду, що виключає вивчення коду в статиці за допомогою дизасемблера; заплутування коду, «помилкові гілки», які збивають хакера з пантелику; перевірка цілісності файлу, що не дає накладати латки; віртуалізація коду з власною системою команд. Всі ці методи перешкоджають вивченню та аналізу логіки захисту, підвищують її стійкість[4].

Використання автоматичних засобів захисту[ред. | ред. код]

Існує проблема, пов'язана з нестачею ресурсів (зокрема часових) у розробників ПЗ. Їм може не вистачати часу, фінансів або кваліфікації на реалізацію власного стійкого захисту. Вони змушені користуватися сторонніми автоматичними засобами захисту. Ці засоби  прикріплюють до скомпільованої програми захисний модуль. Перевага такого захисту в тому, що його можна встановити на будь-яку програму (навіть без доступу до сирцевого коду програми). Недолік в самому підході — «шаблонності» методу. Стандартні захисти мають велику ймовірність бути зламаними, оскільки встановлюються на кілька програм і тим самим забезпечують попит на ринку злому.

Проте, автоматичні засоби ускладнюють злом програми. Їх іноді доцільно використовувати або коли захисту немає взагалі, або в сукупності з реалізацією власного унікального захисту[4].

Проблема «краще, ніж легальне»[ред. | ред. код]

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

  • Незахищена програма працює, в загальному випадку, швидше, ніж захищена
  • Для роботи «зламаної» програми не потрібен оригінальний носій. Якщо не використовувати компакт-дисків, час роботи ноутбука істотно збільшується. Крім того, на деяких моделях ноутбуків пристрій читання компакт-дисків може бути відсутнім зовсім
  • При використанні USB-ключа може не вистачити портів на все потрібне обладнання чи не бути таких зовсім (наприклад при використанні віртуалізації)
  • Електронний ключ може створювати фізичні незручності при роботі з захищеною програмою на ноутбуці
  • J2ME — програма зникне після перепрошивання телефону, і немає можливості зробити її резервну копію[4].

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

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б в г Оценка эффективности систем защиты программного обеспечения. Архів оригіналу за 28 грудня 2009. Процитовано 25 квітня 2018.
  2. Обзор Alcohol 120 % — эмулятор CD/DVD-дисков, создание их образов. Архів оригіналу за 26 квітня 2018. Процитовано 25 квітня 2018.
  3. Новичков А. Анализ рынка средств защиты программного обеспечения от несанкционированного копирования. Архів оригіналу за 25 квітня 2018. Процитовано 25 квітня 2018.
  4. а б в г д е Citforum. Анализ рынка средств защиты от копирования и взлома программных средств. Архів оригіналу за 25 квітня 2018. Процитовано 25 квітня 2018.

Посилання[ред. | ред. код]