Button Up

DRM для защиты и лицензирования Android-приложений

Яшенкова Наталья
Яшенкова Наталья
Более 12 лет работает в ИТ-отрасли. С 2004 по 2006 год в интеграторе «Вимком-Оптик» отвечала за продвижение инновационных решений в области цифрового телевидения. В 2006 году возглавила отдел маркетинга в компании «Нетрис», российском разработчике ПО в области OTT/IPTV и видеонаблюдения.

К StarForce присоединилась в 2013 году. Занимается разработкой требований к существующим и новым продуктам компании, а также продвижением решений StarForce по всему миру.

Образование: кандидат экономических наук, Финансовый университет при Правительстве РФ.
30 Мар 2016

В 2015 году проникновение мобильного интернета превысило по количеству пользователей половину населения Земли. Это значит, что у каждого второго есть мобильное устройство, позволяющее выходить в Интернет и устанавливать различные приложения. В основном это игры, а также мессенджеры, бизнес-приложения, навигационные программы, приложения социальных сетей, бонусные программы и т.д. Статистика говорит о том, что количество Android-приложений хоть незначительно, но превышает количество приложений для iOS. В мае 2015 года Google Play насчитывал около 1,5 миллиона приложений, тогда как Apple Store – около 1,4 млн.

Источник: http://emberify.com/blog/app-markets/

Считается, что приложения для мобильных устройств разрабатывать легче, чем для компьютеров и, соответственно, дешевле. Отчасти именно с этим связывают появление такого большого количества программ для мобильных устройств. Однако приложения создаются не для самоутверждения – они являются источником дохода. На чем могут заработать разработчики Android-приложений? Есть всего три направления:

  • продажа платных приложений;
  • реклама в бесплатных приложениях (демонстрация рекламных баннеров);
  • предоставление платных опций в бесплатных приложениях.

Последние два можно комбинировать в одном приложении.

Только в ожидании больших прибылей нужно учитывать несколько фактов. Россия является четвертой в мире страной по использованию Android приложений. Однако никто не учитывает, столько взломанных версий игр и других программ было скачено с форума 4PDA и других подобных ресурсов. Взлом APK-файлов для последующего свободного распространения – это обычное дело в настоящее время. Тем более, что особых усилий прилагать не требуется.

Магазин Google Play предоставляет авторизацию, витрину, систему расчетов и доставки файлов. При покупке приложения пользователь получает стандартный файл без персонализации или привязки к устройству. Таким образом, если разработчик проигнорировал вопрос защиты, APK файл из Google Play может быть скопирован на различные устройства без ограничений и в дальнейшем распространяться свободно.

Проблема использования пиратских приложений актуальна и для корпоративного сегмента. В связи с всеобщим проникновением BYOD в бизнес, также появились приложения, которые выступают частью корпоративного решения, например, электронного документооборота или CRM. Такие приложения обычно распространяются бесплатно, но разработчики хотят контролировать их распространение с помощью надежных инструментов, например системы DRM.

Сейчас мы рассмотрим несколько DRM-систем и проведем их сравнительный анализ. Некоторые из них используются ведущими магазинами Android-приложений, а другие предложены сторонними разработчиками систем защиты и лицензирования программного обеспечения.

Google Play Licensing

Google Play Licensing - это инструмент для защиты приложений, продаваемых через Google Play от несанкционированного распространения. Точнее, речь идет о программной библиотеке Google Play Licensing Verification Library или сокращенно LVL, позволяющей запросить у магазина информацию о факте приобретения приложения с текущего пользовательского аккаунта. Подробнее о DRM Google Play Licensing можно посмотреть здесь. Кстати, напоминает первый способ защиты в Steam.

По результатам проверки лицензии система выдает один из трех возможных вариантов:

1. Подтверждается наличие лицензии, и приложение запускается.
2. Не подтверждается покупка лицензии и блокируется запуск приложения.
3. Система не может дать определенный ответ и выдает ошибку (если, например, нет интернет-соединения).

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

LVL допускает привязку приложения к конкретному устройству, но она должна быть реализована разработчиком самостоятельно. В документации предлагается использовать сторонний сервер разработчика/издателя, который бы вёл базу регистрационных идентификаторов устройства. Способы получения уникального идентификатора устройства также предлагается разработать самостоятельно.

Таким образом, LVL - это отдельный высокоуровневый компонент, встроить который разработчик должен сам, параллельно проработав реализацию необходимой логики. LVL не предоставляет механизмов защиты непосредственно для кода приложения и самой библиотеки LVL. Реализация этой DRM выполнена на Java, поставляется в виде исходного кода и может быть легко декомпилирована, изучена и модифицирована для преодоления лицензионных ограничений. Google рекомендует использовать сторонние средства для защиты кода, например различные обфускаторы.

Несколько слов о взломостойкости. Система не использует защиту для своего кода, поэтому ее достаточно легко проанализировать и нейтрализовать. И в сети существует как минимум один проект, который позволяет снимать ограничения DRM в автоматическом режиме – программа ищет LVL код в APK-файлах и нейтрализует его.

Amazon DRM

Самый большой интернет-магазин Amazon продаёт в том числе и Android-приложения, защищённые собственной системой DRM. Основной принцип работы системы идентичен Google Play Licensing (приложение проверяет факт покупки на удалённом сервере), однако, в отличие от LVL процесс встраивания DRM в приложение автоматизирован. Разработчик/издатель просто закачивает своё готовое приложение на сервер Amazon и в него автоматически встраивается модуль защиты.

При защите приложения к нему добавляются дополнительные классы, осуществляющие DRM-функционал. Готовый код приложения разбирается, и в него встраиваются вызовы функций проверки из этих классов. Судя по отзывам, это не всегда работает корректно и в некоторых случаях приложение закрывается с ошибкой верификации в JVM.

Взломостойкость такой DRM тоже невысока. Защита встраивается в приложение без глубокой интеграции с кодом, поэтому можно либо разобрать код защиты, найти вызовы защиты и удалить, либо, что еще проще, отключить проверки в ядре защиты или заменить его целиком "пустышкой". После такой процедуры можно использовать Android приложение по своему усмотрению.

Android Licenser

Это платный сервис, который предоставляет лицензирование и защиту для Android приложений по принципу подписки. Разработчик/издатель помесячно платит за то, чтобы использовать Android Licenser (AL) как площадку для продажи своего приложения. При покупке пользователь производит оплату через PayPal или GoogleCheckout и получает персональную ссылку для скачивания приложения. Никакой модификации готового приложения не требуется.

DRM реализована на базе библиотеки AndroidLicenser. Она является альтернативой LVL. При покупке приложения (способом, описанным выше, или, например, через сайт другого провайдера, например, Google Play) пользователь получает на электронную почту активационный ключ. При запуске приложения пользователь должен активировать его, введя этот активационный ключ. Проверка ключа осуществляется на сервере AL. Система крайне проста и поставляется с исходным кодом.

Взломостойкость этой DRM также имеет несколько недостатков. Во-первых, код поставляется без защиты – его легко изучить и модифицировать. Во-вторых, проверка ключа осуществляется через незашифрованный канал, что позволяет использовать proxy-сервер для обмана защиты.

Droid Activator

Droid Activator (DA) представляет собой встраиваемую библиотеку DRM и серверную часть. Функционально DA повторяет AL - при покупке приложения через Google Play или иной магазин, в базе данных на серверной части заводится уникальный аккаунт покупки. Одновременно с этим покупатель получает от сервера письмо с кодом активации приложения. При запуске защищённого приложения пользователь вводит этот код, он сравнивается с зарегистрированным на сервере и, при совпадении, приложение запускается. В отличие от AL, при развёртывании этой системы потребуется отдельный сервер, чтобы содержать на нём серверную часть защиты.

Система поставляется с открытым кодом по лицензии GNU GPL2.

Arxan EnsureIT

В отличие от всех предыдущих систем, EnsureIT обеспечивает только защиту кода. Защита осуществляется только для Native-части кода приложений, написанных на С/С++. Java не поддерживается.

Исходный код в полуавтоматическом режиме обрабатывается с помощью Clang + LLVM в промежуточный байткод, к которому применяются последующие шаги по обфускации/чек суммированию/ и т.д., на выходе получается стандартный объектный файл. После линковки приложение ещё раз обрабатывается для вычисления и расстановки контрольных сумм.

Этот продукт предназначен для защиты кода Android приложений от анализа и модификации и не имеет DRM функционала. В качестве недостатков можно назвать работу только на Linux и Mac OS.

StarForce C++ Obfuscator

Это решение также защищает только исходный код, написанный на С/С++. Такая защита необходима, когда в коде передается важная информация, которая ни в коем случае не должна попасть к третьим лицам.

StarForce C++ Obfuscator использует более 30 методов обфускации, среди которых можно назвать:

  • преобразование кода С++ в код виртуальной машины;
  • шифрование строк и массивов;
  • преобразование кода в цифровой автомат;
  • введение ложных связей;
  • объединение участков кода.

Решение работает на Windows и Linux, а защита обеспечивается для приложений, написанных под любые операционные системы. Функционал DRM не поддерживается.

Сравнительная таблица

Результаты исследования всех вышеперечисленных систем защиты и лицензирования Android-приложений приведены в сравнительной таблице:

Функции
Google Play Licensing
Amazon DRM
Android Licenser
Droid Activator
Arxan EnsureIT
StarForce C++ Obfuscator
DRM-функционал
Да
Да
Да
Да
Нет
Нет
Защита Java кода
Нет
Нет*
Нет
Нет
Нет
Нет
Защита кода на С/С++
Нет
Нет
Нет
Нет
Да
Да
Требует исходный код для защиты
Да
Нет
Да
Да
Да
Да
Открытая система
Да
Нет
Да
Да
Нет
Нет

* Сам код не защищается, но в него встраиваются многочисленные вызовы ядра защиты.


Возврат к списку