Неотъемлемой частью любой программной платформы является ПО для неё. Для таких широко распространенных пользователе-ориентированных платформ, как Android, iOS, на первое место выходит удобство получения, установки и обновления прикладного ПО.
Дмитрий Гусев, Протекшен Технолоджи Ресеч
Неотъемлемой частью любой программной платформы является ПО для неё. Для таких широко распространенных пользователе-ориентированных платформ, как Android, iOS, на первое место выходит удобство получения, установки и обновления прикладного ПО. С этой целью держатели платформ встраивают в них развитую поддержку системы распространения контента. В случае Android основным таким провайдером контента служит Google Play (ранее назывался Android Marketplace). Google Play (GP) является посредником между производителем контента (авторами программ или аудиовизуальных произведений) и конечными потребителями (пользователями устройств.) Так как значительная часть подобного контента подразумевает его оплату потребителем, провайдер и производители используют ту или иную систему DRM для контроля распространения контента.
В статье рассмотрены пять наиболее популярных в мире решений для защиты мобильного ПО и контента от взлома и нелегального распространения. В силу того, что статья подготовлена специалистом компании Протекшен Технолоджи Ресеч (StarForce), которая выпускает собственное DRM решение для защиты приложений под Андроид, названия рассматриваемых решений изменены на условные. Решение StarForce в статье не рассматривается.
Основная цель статьи - предоставить разработчикам первоначальные сведения об уровне защиты приложений и возможностям лицензирования в существующих на рынке популярных сервисах защиты.
Приложения под Android представляют собой самодостаточные файлы-контейнеры с расширением .apk.
Android_DRM_1
Первое рассматриваемое нами решение, в общем случае, выступает обычным продавцом контента. Для конечного пользователя система обеспечивает ведение пользовательских аккаунтов, биллинг, витрину и систему доставки файлов. При покупке контента пользователю присылается обычный неперсонофицированный файл, никак не привязанный к конечному оборудованию.
Таким образом, единожды купленное приложение в общем случае можно беспрепятственно скопировать на различные устройства или распространять иным образом.
Для контроля за использованием контента и предотвращения его несанкционированного использования Android_DRM_1 предлагает Программную Библиотеку, которая позволяет запросить у Android_DRM_1 информацию о факте приобретения приложения с текущего пользовательского аккаунта.
Условно, данная DRM представляет собой обычную функцию, которая возвращает одно из трёх значений:
Ответы сервера подписаны с помощью уникального (для продавца) приватного ключа, публичный содержится в приложении. Чтобы можно было запустить приложение при отсутствии доступа к сети, система допускает кеширование ответов сервера.
Программная Библиотека Android_DRM_1 допускает (хотя и настоятельно не рекомендует) привязку программы к конкретному устройству, но она должна быть реализована разработчиком самостоятельно. В документации предлагается использовать сторонний сервер (разработчика/издателя), который бы вёл базу регистрационный-идентификатор - идентификатор-устройства. Способы получения уникального идентификатора устройства также предлагается разработать самому.
Таким образом, Программная Библиотека Android_DRM_1 - это отдельная высокоуровневая компонента, которую разработчик должен самостоятельно встроить в приложение и реализовать необходимую логику. Программная Библиотека Android_DRM_1 не предоставляет какой-либо непосредственной защиты кода приложения и самой себя. Реализация DRM выполнена на Java, поставляется в виде исходного кода и может быть легко декомпилирована, изучена и модифицирована для преодоления лицензионных ограничений. Производитель Android_DRM_1 рекомендует использовать сторонние средства для защиты кода.
Взломостойкость Android_DRM_1
Android_DRM_2
Является собственным решением сетевого магазина, продающего приложения под Android. Основной принцип работы системы идентичен Android_DRM_1 (приложение проверяет факт покупки на удалённом сервере), однако, в отличии от Программной Библиотеки Android_DRM_1 процесс встраивания DRM в приложение автоматизирован. Разработчик/издатель просто закачивает своё готовое приложение на сервер сетевого магазина и в него автоматически встраивается модуль защиты.
При защите приложения к нему добавляются дополнительные классы, осуществляющие DRM-функционал. Готовый код приложения разбирается и в него (скорее всего автоматически) встраиваются вызовы функций проверки из этих классов. Судя по отзывам разработчиков, это не всегда работает корректно и в некоторых случаях приложение может "упасть" с ошибкой верификации в JVM.
Взломостойкость Android_DRM_2
Поскольку такой тип защиты встраивается в приложение без глубокой интеграции с его кодом, защиту так же несложно нейтрализовать модификацией кода. Это можно сделать проделав операции обратные установке - разобрать код приложения, найти вызовы защиты и удалить их. Ещё более простой способ - просто отключить проверки в ядре защиты или заменить его целиком "пустышкой".
Android_DRM_3
Android_DRM_3представляет собой упрощённую альтернативу Android_DRM_1 и Android_DRM_2.
В отличии от Android_DRM_1, для покупки приложения не требуется иметь установленным на конечном устройстве приложение-магазин. Покупка осуществляется непосредственно с web-страницы Android_DRM_3. При покупке пользователь сразу производит оплату через PayPal или GoogleCheckout и получает персональную ссылку для скачивания приложения. Никакой модификации готового приложения не требуется.
Другой предоставляемый сервис - Программная Библиотека Android_DRM_3. Она является альтернативой Программной Библиотеки Android_DRM_1. При покупке приложения (способом, описанным выше, или, например, через сайт другого провайдера) пользователь также получает на электронную почту активационный ключ. При запуске приложения пользователь должен активировать его, введя этот активационный ключ. Проверка ключа осуществляется на сервере Android_DRM_3. Система крайне проста и поставляется с исходным кодом.
Взломостойкость Android_DRM_3
Android_DRM_4
Android_DRM_4 представляет собой встраиваемую библиотеку DRM и серверную часть. Функционально Android_DRM_4 повторяет Android_DRM_3 - при покупке приложения через сетевой магазин или иную систему распространения, в базе данных на серверной части заводится уникальный аккаунт покупки. Одновременно с этим покупатель получает от сервера письмо с кодом активации приложения. При запуске защищённого приложения пользователь вводит этот код, он сравнивается с зарегистрированным на сервере и, при совпадении, приложение успешно запускается. В отличии от Android_DRM_3, при развёртывании этой системы потребуется отдельный сервер, чтобы содержать на нём серверную часть защиты.
Система поставляется с открытым кодом по лицензии GNU GPL2.
Взломостойкость Android_DRM_4
Android_DRM_5
Компания, производящая Android_DRM_5 производит широкий спектр продуктов для защиты кода приложений и обеспечения DRM-функционала. К сожалению, ни одного "живого" приложения, защищенного Android_DRM_5найти не удалось, поэтому дальнейшая информация базируется на пресс-материалах разработчиков.Исходя из вышеперечисленного, можно сделать вывод, что данный продукт позиционируется как средство защиты кода программ от анализа и модификации.
Взломостойкость Android_DRM_5
Как уже говорилось выше, не удалось обнаружить ни одного защищенного приложения, для оценки взломостойкости.
Сравнительная таблица систем DRM
|
Android_DRM_1 |
Android_DRM_2 |
Android_DRM_3 |
Android_DRM_4 |
Android_DRM_5 |
DRM-функционал |
Да |
Да |
Да |
Да |
Нет |
Защита Java кода |
Нет |
Нет* |
Нет |
Нет |
Нет |
Защита Native кода |
Нет |
Нет |
Нет |
Нет |
Да |
Требует исходный код для защиты |
Да |
Нет |
Да |
Да |
Да |
Открытая система |
Да |
Нет |
Да |
Да |
Нет |
* Сам код не защищается, но в него встраиваются многочисленные вызовы ядра защиты.
Все рассмотренные решения предлагают примерно схожий функционал. Кроме, пожалуй, Android_DRM_5, которое исключительно защищает код мобильного приложения от анализа и взлома и не предлагает каких-то опций по лицензированию.
Очевидно, что на данный момент, среди наиболее популярных решений на рынке не присутствует ни одной сколько-нибудь надежной защиты приложений от пиратства для платформы Android. Взломать такую защиту не составит труда хакеру средней руки. Поэтому борьба с пиратством на платформе Android пока откладывается до лучших времен.
Первое — находим постоянно, второе — ждем вас