Подсистема защиты авторского права в программном обеспечении

Авторы: А.В. Чернышова, Д.В. Кубашевский
Источник: VIII Международная научно-техническая конференция "Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ–2017)" / Сборник материалов VIII Международной научно-технической конференции "ИУСМКМ–2017". — Донецк, ДонНТУ — 2017, с. 110-114.

Аннотация

Выполнен анализ проблемы защиты авторского права на программное обеспечение и описана работа программной подсистемы защиты ПО с использованием криптографических алгоритмов шифрования.

Постановка проблемы

В настоящее время нелегальное копирование и распространение программного обеспечения наносит огромный ущерб разработчику. Использование такого пиратского ПО не приносит прибыли. В большинстве случаев, если программное обеспечение содержит подсистему защиты от нелегального копирования, то разработке такой подсистемы уделяется недостаточно сил. Спустя некоторое время хакеры взламывают такую ненадёжную защиту, и программный продукт попадает на рынок пиратского ПО [1]. В связи с этим возникает необходимость реализации подсистемы защиты таким образом, чтобы программный продукт не мог функционировать без подтверждения лицензии, а процесс взлома такой подсистемы был максимально затруднён.

Цель статьи — описать работу разработанной подсистемы защиты авторского права в программном обеспечении, продемонстрировав её функциональные возможности.

Описание подсистемы защиты

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

Надёжная подсистема защиты должна быть основана не на предоставлении права на функционирование ПО, а на предоставлении некоторых функциональных возможностей ПО, то есть некоторой части программного кода, без которой продукт не может работать и выполнять важные для пользователя функции. В этом случае ни модификация подсистемы защиты, ни реализация пиратского сервера лицензий не позволят получить доступ к необходимым функциям программы.

Схема функционирования разработанной подсистемы защиты представлена на рисунке 1.

Схема функционирования подсистемы защиты
Рисунок 1 – Схема функционирования подсистемы защиты

После приобретения программного продукта в базе данных сервера добавляется запись о лицензии. Затем пользователь получает файл лицензии и использует его для активации программы. Пример содержимого файла лицензии приведён на рисунке 2.

Пример файла лицензии
Рисунок 2 – Пример файла лицензии

Лицензия представляет собой файл формата XML [2] с расширением «.dls». Тег «HardwareId» содержит MD5-хеш [3] серийного номера первого жёсткого диска компьютера. Тег «Version» содержит версию ПО, для которой эта лицензия действительна. В случае обновления ПО пользователю необходимо будет получить новую лицензию. Тег «Files» содержит набор файлов программы в корневом каталоге программы (имя и MD5-хеш файла). В случае обнаружения несоответствия имени или хеша файла подсистема защиты уведомляет пользователя о повреждении файлов программы.

Теги «ActivateDate» и «ExpiryDate» позволяют контролировать начальную и конечную даты, когда лицензия может быть использована. Теги «Signature» и «PublicKey» содержат электронную цифровую подпись (ЭЦП) [4] данных лицензии и публичный ключ для её проверки соответственно.

При первом запуске защищаемого программного обеспечения подсистема защиты запрашивает у пользователя файл лицензии. Пользователь предоставляет файл, после чего подсистема защиты проверяет данные лицензии и ЭЦП. Если проверка пройдена успешно, подсистема защита обращается к серверу для подтверждения лицензии и получения модуля полнофункционального режима работы программы. Пример работы тестового защищаемого ПО в полнофункциональном режиме после активации лицензии представлен на рисунке 3.

Полнофункциональный режим после активации лицензии
Рисунок 3 – Полнофункциональный режим после активации лицензии

В случае отсутствия Интернет-соединения или при ошибке проверки лицензии защищаемое ПО может продолжить работу, но только в функционально ограниченном демонстрационном режиме. Пример работы программы в функционально ограниченном демонстрационном режиме представлен на рисунке 4.

Ограниченный демонстрационный режим
Рисунок 4 – Ограниченный демонстрационный режим

В базе данных сервера подсистемы защиты содержится информация о пользователях ПО в таблице «Users», о версиях ПО в таблице «Versions», о файлах в корневом каталоге программы в таблице «Files» и о лицензиях на использование ПО в таблице «Licenses». Схема базы данных приведена на рисунке 5.

Схема базы данных сервера лицензий
Рисунок 5 – Схема базы данных сервера лицензий

Согласно такой организации БД у каждого пользователя может быть несколько лицензий, которые могут, в свою очередь, относиться к нескольким версиям ПО. Для каждой версии ПО имеется определённый набор файлов в корневом каталоге программы. Также каждая версия содержит код защищённого программного модуля, который представлен в таблице «Versions» полем «ProtectedCode».

Выводы

Выполнен анализ проблемы защиты авторского права на программное обеспечение. Описана работа и функциональные возможности разработанной программной подсистемы защиты ПО, использующей криптографические алгоритмы шифрования. На данный момент реализованная подсистема защиты предусматривает работу с одним программным продуктом, однако, в дальнейшем планируется расширение до системы защиты ПО, которая будет работать с несколькими программными продуктами и поддерживать распределённые базы данных [5] для оптимизации взаимодействия модуля системы защиты с серверами лицензий и уменьшения на них нагрузки при большом количестве пользователей защищаемого ПО.

Список литературы

  1. Нарушение авторского права [электронный ресурс] // Википедия – свободная энциклопедия: [сайт]. [2017]. URL: https://ru.wikipedia.org/wiki/Нарушение_авторского_права
  2. XML [электронный ресурс] // Википедия – свободная энциклопедия: [сайт]. [2017]. URL: https://ru.wikipedia.org/wiki/XML
  3. MD5 [электронный ресурс] // Википедия – свободная энциклопедия: [сайт]. [2017]. URL: https://ru.wikipedia.org/wiki/MD5
  4. Электронная подпись [электронный ресурс] // Википедия – свободная энциклопедия: [сайт]. [2017]. URL: https://ru.wikipedia.org/wiki/Электронная_подпись
  5. Распределённая база данных [электронный ресурс] // Википедия – свободная энциклопедия: [сайт]. [2017]. URL: https://ru.wikipedia.org/wiki/Распределённая_база_данных