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

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

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

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

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

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

Мережевий програмний захист

локальний

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

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

глобальний

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

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

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

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

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

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

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

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

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

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

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

Ключ можна вставляти в будь-який комп'ютер, на якому необхідно запустити програму Ключ не займає/не вимагає наявності дисковода Електронний ключ "вміє" виконувати криптографічні перетворення Сучасні ключі можуть виконувати довільний код, що поміщається в них розробником захисту (приклад: 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». Проводиться багаторазове зчитування дискети; серед результатів зчитування повинні бути як нулі, так і одиниці.

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

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

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

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

Ліцензія Патент