Исследование методов и средств защиты авторского права в области разработки программного обеспечения для распределённых систем
Авторы: Д.В. Кубашевский, А.В. Чернышова
Источник: II Международная научно-практическая конференция "Программная инженерия: методы и технологии разработки информационно-вычислительных систем (ПИИВС-2018)" / Сборник научных трудов II Международной научно-практической конференции, Том 1. — Донецк, ДонНТУ — 2018, с. 87-92.
Аннотация
В статье представлено исследование недостатков существующих методов и средств защиты авторского права в области разработки программного обеспечения для распределённых систем. Предложен новый комбинированный подход к реализации распределённой системы защиты авторского права на программное обеспечение.
Введение
В настоящий момент проблема нелегального копирования и распространения программного обеспечения сохраняет свою актуальность. Каждый месяц появляются новые продукты, на создание которых разработчики тратят достаточно усилий и средств. Если затраченные средства не возместятся за счёт покупки данных программных продуктов их пользователями, разработчик несёт убытки, и это чаще всего ведёт к закрытию проекта по разработке и сопровождению такого программного продукта [1].
Для предотвращения подобных ситуаций разработчик вынужден использовать программную защиту авторского права, которая не позволит использовать функционал программного продукта пользователям, которые не приобрели у разработчика лицензию на использование такого ПО.
Анализ недостатков метода автономной активации лицензии
Применение метода автономной активации лицензии на использование программного продукта (так называемой оффлайн-активации) теперь стало неэффективно, поскольку сегодня существует огромное количество инструментов, которые позволяют исследовать и нейтрализовать защиту. Этим успешно занимаются так называемые варез-группы (англ. warez group) — группы лиц, специализирующиеся на взломе технических средств защиты авторских прав (англ. DRM — digital rights management). Наиболее популярными на текущий момент являются 3DM, RELOADED, CPY, SKIDROW, CODEX [2].
Таким образом, какой бы сложностью ни обладала автономная система защиты, в конечном итоге она всё равно может быть взломана и устранена; вопрос лишь во времени, которое на это потребуется.
В связи с этим возникает необходимость использования другого метода, метода так называемой онлайн-активации с применением внешнего сервера лицензий.
Анализ недостатков метода онлайн-активации лицензии
Так как злоумышленник не имеет доступа к внешнему серверу, при условии его надлежащей защищённости, следовательно, подменить ответ об успешности активации лицензии по предоставленным лицензионным данным не представляется возможным. В результате такой организации системы защиты по-прежнему остаётся уязвимость, позволяющая хакеру модифицировать бинарный код исполнимого модуля системы защиты таким образом, чтобы вне зависимости от успешности результата активации лицензии программный продукт полностью функционировал.
Устранить подобного рода уязвимость можно, применив метод защиты исполнимых данных, при котором важная часть функционала программного продукта остаётся неработоспособной без наличия на клиентской машине вспомогательного (или дополнительного) исполнимого модуля до момента успешной активации лицензии на приобретённое ПО [3].
Анализ недостатков нераспределённых систем лицензирования
Для полноценного функционирования программного продукта, защищённого с использованием подсистемы защиты авторского права с применением одного сервера лицензий, необходимо обеспечить полную отказоустойчивость такого сервера. В случае потери соединения с сервером лицензий программный продукт перестанет работать до тех пор, пока соединение не восстановится.
В распределённой системе лицензирования одновременно работают несколько серверов лицензий. При отказе одного из серверов остальные продолжают работу. И в таком случае пользователи, которые потеряли соединение с отказавшим сервером, смогут переподключиться к остальным работоспособным серверам автоматически.
Кроме того, если разработчик имеет множество программных продуктов, каждый из которых в свою очередь имеет огромное количество пользователей, необходимо обеспечить надлежащий уровень производительности для сервера лицензий. Для решения данной проблемы также необходимо применение системы, в которой нагрузка будет распределяться между различными вычислительными машинами. Это касается и хранилищ данных, и вычислительных кластеров [4].
Исследование методов и средств защиты авторского права в области разработки программного обеспечения для распределённых систем
Неудивительно, что, к сожалению, в открытых источниках информации отсутствуют сведения о внутренней организации защиты в существующих решениях по защите авторского права. Однако, можно исследовать принципы работы такой системы с точки зрения обычного пользователя. Проанализировав эту информацию и сопоставив её с современными методами и средствами защиты, которые используются в распределённых системах в целом, можно сделать выводы относительно их эффективности применительно к системе защиты авторского права на использование программного обеспечения.
Обычно для различных типов программного обеспечения используются разные подходы к защите авторского права. Например, для защиты современных компьютерных игр разработчики чаще всего применяют методы онлайн-активации с ограничением функционала мультиплеерного режима, если активация не была успешно выполнена. Кроме того, часто выполняется привязка игрового продукта к аккаунту пользователя, который содержит информацию о том, был ли приобретён данный продукт.
Например, в онлайн-сервисе цифрового распространения компьютерных игр Steam (см. рис. 1) пользователь может купить компьютерную игру и после оплаты данный игровой продукт будет зарегистрирован на аккаунте пользователя Steam [5].
Игры, которые распространяются в Steam, тесно интегрированы с его сервисами, поэтому даже в случае, если злоумышленник сможет обойти локальную защиту, сетевые сервисы, которые необходимы для функционирования мультиплеерного режима игры, всё равно останутся недоступными по причине того, что удалённые сервера Steam содержат информацию о том, что данный пользователь не покупал запущенный программный продукт.
Сравнение существующих систем управления лицензиями
Система управления лицензиями (или менеджер лицензий) — инструмент, используемый разработчиком программного обеспечения, который контролирует, где и как программные продукты могут быть запущены.
Keygen — облачная служба лицензирования и распространения программного обеспечения для настольных приложений, серверных приложений и других цифровых продуктов (см. рис. 2). Keygen предоставляет API для разработчиков, с помощью которого можно интегрировать данную службу в свой программный продукт. Keygen поддерживает несколько видов лицензий: бессрочная, подписка, плавающая с ограничениями на количество устройств, плавающая с ограничениями на функциональные возможности, временные и комбинированные.
Как заявляет разработчик, данные внутри Keygen защищены и хранятся «настолько безопасно, насколько это возможно» [6]. Пароли всегда хешируются с применением криптографической функции bcrypt [7]. Все соединения с серверами шифруются через SSL, базы данных также зашифрованы, в том числе и их резервные копии — бэкапы (англ. — backup copy).
Nalpeiron Licensing Service — облачная служба лицензирования, которая поддерживает также несколько видов лицензий: бессрочная, подписка, плавающая с ограничениями на количество устройств, с ограничениями на функциональные и вычислительные возможности, лицензия с указанным сроком действия, многопользовательская лицензия.
Разработчик утверждает, что Nalpeiron Licensing Service предоставляет возможность оффлайн активации, однако на самом деле подразумевается возможность активировать программный продукт для устройства, которое не имеет доступа к интернету, с другого устройства, у которого есть доступ к интернету. Для такой активации достаточно будет обычного браузера, с помощью которого необходимо перейти на сайт Nalpeiron Licensing Service и ввести необходимые лицензионные данные [8].
License4J предоставляет решения для лицензирования и защиты программного обеспечения, написанного под платформу Java. License4J включает Java API, инструмент менеджера лицензий, сервера для генерации и активации лицензий. Представляет собой небольшую Java-библиотеку, предоставляющую статические методы для проверки лицензии, онлайн-активации и деактивации.
Кроме стандартных типов лицензий, которые поддерживают Keygen и Nalpeiron, License4J также поддерживает четыре различных идентификатора оборудования: имя хоста, физический адрес сетевой карты, идентификатор системного диска UUID и серийный номер жёсткого диска. Эти идентификаторы могут быть использованы для генерации лицензии (см. рис. 3). Во время проверки лицензии License4J может выполнять проверку локальной даты и времени и сравнивать значения с такими, которые предоставляет удалённый NTP-сервер или веб-сервер License4J [9].
SafeGuard LM — решение для лицензирования программного обеспечения, которое, подобно уже рассмотренным инструментам, предоставляет API для защиты авторского права и несколько видов системы лицензий. Для генерации лицензий существует инструмент SafeGuard Manager (см. рис. 4), написанный на Java, который создаёт лицензии и сохраняет в них информацию о покупателе.
Описывая безопасность своего решения, автор SafeGuard указывает на возможность применения шифрования таким образом, что никакой другой разработчик программного продукта не будет иметь возможности сгенерировать лицензию для защищаемого программного обеспечения. Также предоставляется модуль антихакинга (с исходным кодом), который разработчик программного продукта может использовать для защиты от таких мощных инструментов исследования бинарного исполнимого кода как IDA Pro [10], OllyDbg [11] и других, которые используют методы внедрения в бинарный исполнимый модуль программного обеспечения процессорных инструкций NOP или JMP [12].
Для платформы Windows SafeGuard предоставляет два уникальных сервера лицензий. Один осуществляет регулярную проверку на предмет перевода локального времени системы назад. Это самый распространённый пользовательский метод обмануть систему защиты. Другой сервер лицензий осуществляет расширенную проверку локальной даты и времени, чтобы противостоять таким хакерским инструментам, как Date Cracker 2000 [13].
Исходя из описания разработчиков вышеперечисленных продуктов, характерной отличительной чертой Reprise License Manager (см. рис. 5) являются высокодоступные (или отказоустойчивые) распределённые сервера, которые способны одновременно обрабатывать множество запросов на активацию и проверку лицензии от пользователей. Кроме того, все лицензии подписаны электронной цифровой подписью (ЭЦП) с использованием открытого криптографического ключа, чтобы защитить доступ к лицензируемому программному продукту [14].
В описанных решениях по защите авторского права на программное обеспечение присутствует описанная выше уязвимость, связанная с возможностью полностью нейтрализовать систему защиты и получить доступ ко всем функциональным возможностям программного продукта. Для этого нужно всего лишь единожды купить одну копию защищаемого программного продукта, исследовать исполнимый бинарный код и модифицировать его таким образом, чтобы система защиты даже не осуществляла попыток проверить лицензию, либо же чтобы программное обеспечение игнорировало результат проверки и запускалось в любом случае.
Комбинированный подход к защите авторского права
Комбинированный подход к реализации распределённой системы защиты авторского права на программное обеспечение предполагает объединение двух основных методов:
- использование сервера лицензий, который будет передавать клиенту лицензируемый функционал в виде модуля исполнимого кода только после успешной активации лицензии;
- реализация сервера в виде распределённой системы, которая обеспечит надёжность и отказоустойчивость.
Согласно реализованному ранее алгоритму активации лицензии (см. рис. 6), после запуска клиентская часть системы защиты отправляет на сервер данные лицензии. После успешной проверки данных сервер подготавливает лицензируемый функционал программного продукта в виде модуля исполнимого кода, зашифровывает его уникальным ключом и отправляет клиенту. Клиент расшифровывает полученный модуль исполнимого кода и получает доступ к лицензируемому функционалу [4].
Для реализации распределённой системы планируется использование свободно распространяемого фреймворка для разработки и выполнения распределённых программ Apache Hadoop [15]. Дистрибутив Cloudera Distribution for Hadoop (CDH) [16] включает в себя встроенные средства, которые позволяют обеспечить защиту кластеров, используя шифрование данных, аутентификацию пользователя и механизмы авторизации. Для хранения информации о лицензируемых программных продуктах, версиях, пользователях и лицензиях планируется использовать Apache HBase — нереляционную распределённую базу данных, которая также входит в состав CDH.
Выводы
Существующие распространённые методы и средства защиты авторского права в области программного обеспечения имеют ряд недостатков. Алгоритм проверки успешности активации лицензии не защищён от модификации, а серверная часть подобных систем не всегда обеспечивает требуемый уровень производительности и отказоустойчивости.
Для повышения эффективности распределённой системы защиты авторского права на программное обеспечение необходимо использовать комбинированный подход, объединив метод удалённой защиты лицензируемого функционала и метод распределённых вычислений для обеспечения отказоустойчивости системы защиты в целом.
Литература
- Чернышова, А.В. Подсистема защиты авторского права в программном обеспечении / А.В. Чернышова, Д.В. Кубашевский // Информатика и кибернетика. – 2016. – № 2(4). – С. 68-72.
- All Scene Groups and Crackers [Электронный ресурс] // CrackWatch. – Режим доступа: https://crackwatch.com/groups – Загл. с экрана.
- Чернышова, А.В. Подсистема защиты авторского права в программном обеспечении [Текст] / А.В. Чернышова, Д.В. Кубашевский // Сборник материалов VIII Международной научно-технической конференции «Информатика, управляющие системы, математическое и компьютерное моделирование» (ИУСМКМ–2017). - Донецк: ДонНТУ, 2017. – С. 110-114.
- Чернышова, А.В. Подсистема защиты авторского права в сфере программного обеспечения / А.В. Чернышова, Д.В. Кубашевский // Информатика и кибернетика. – 2017. – № 4(10). – С. 84-90.
- Steam [Электронный ресурс] // Steam. – Режим доступа: https://store.steampowered.com/about/ – Загл. с экрана.
- Keygen [Электронный ресурс] // Keygen. – Режим доступа: https://keygen.sh/ – Загл. с экрана.
- Secure Salting Password Hashing - How to do it Properly [Электронный ресурс] // CrackStation. – Режим доступа: https://crackstation.net/hashing-security.htm – Загл. с экрана.
- Software Licensing Cloud-Based [Электронный ресурс] // Nalpeiron. – Режим доступа: https://www.nalpeiron.com/ – Загл. с экрана.
- License4J [Электронный ресурс] // License4J. – Режим доступа: https://www.license4j.com/ – Загл. с экрана.
- IDA: About [Электронный ресурс] // Hex-Rays. – Режим доступа: https://www.hex-rays.com/products/ida/ – Загл. с экрана.
- OllyDbg [Электронный ресурс] // OllyDbg. – Режим доступа: http://www.ollydbg.de/ – Загл. с экрана.
- Tech [Электронный ресурс] // Persistent Security. – Режим доступа: https://www.persistentsecurity.com/tech/ – Загл. с экрана.
- Date Cracker 2000 2.0 [Электронный ресурс] // Brothersoft. – Режим доступа: http://www.brothersoft.com/date-cracker-2000-45650.html – Загл. с экрана.
- RLM [Электронный ресурс] // Reprise Software. – Режим доступа: http://www.reprisesoftware.com/products/software-license-management.php – Загл. с экрана.
- Apache Hadoop [Электронный ресурс] // Apache Hadoop. – Режим доступа: https://hadoop.apache.org/ – Загл. с экрана.
- Overview of Cloudera and the Cloudera Documentation Set [Электронный ресурс] // Cloudera Documentation. – Режим доступа: https://www.cloudera.com/documentation/enterprise/5-13-x/topics/introduction.html – Загл. с экрана.