По статистике, приведенной в исследовании 2018 BSA Global Software Survey:
- Нелицензированное (пиратское) ПО составляет 37% от всего объема программного обеспечения, установленного на персональных ПК по всему миру.
- Стоимость контрафактного ПО оценивается в $46 млрд.
- Malware, которыми заражены многие пиратские программы, загружаемые из сторонних источников, обходятся бизнесу в $359 млрд в год.
- Потери от взлома лицензионного ПО составляют порядка $600 млрд ежегодно.
Все мы знаем, что среди пользователей есть те, кто честно покупает программу и использует ее по назначению, а есть и те, кто взламывает ПО тем или иным образом и работает с ним сам либо же продает.
Skillbox рекомендует: двухлетний практический курс «Я — веб-разработчик PRO».Разработчики программного обеспечения, которые создают платные продукты, вряд ли хотят потратить несколько лет своей жизни на программу, которую тут же взломают и станут использовать бесплатно. Проблемой могут стать и репутационные потери: например, при загрузке взломанного ПО определенной компании, которое заразит ПК пользователя внедренным злоумышленником вирусом, жертва, вероятно, будет обвинять в происшедшем не взломщика, а производителя.
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
Что касается доходов, то по данным BSA бизнес, который решит серьезно отнестись к защите своих программных продуктов, может рассчитывать на повышение прибыли примерно на 11% (впрочем, важно понимать, что это среднее значение).
Но что можно сделать для защиты своего ПО?
Есть много различных решений для лицензирования и защиты программного обеспечения. Прежде чем выбрать какой-то для себя, стоит ответить на несколько важных вопросов.
Во-первых, необходимо определиться с тем, какой уровень защиты может понадобиться вашему конкретному проекту. Не стоит палить из пушки по воробьям, выбор должен быть адекватным. Многие разработчики совершают здесь ошибку, используя более мощную (и дорогую) защиту, чем в действительности нужно.
Во-вторых, нужно спросить себя, сколько вы готовы потратить на защиту. Ответ может быть сложным, поэтому, чтобы сделать правильный выбор, стоит проанализировать то, что может понадобиться именно вам.
Затем, когда вы со всем определитесь, можно начинать выбирать защиту, исходя из стратегии использования программного продукта.
Ключевые элементы защиты
Все начинается с выбора принципа лицензирования: необходимо выбрать, как за ваш продукт будут платить. Существует множество разновидностей, в целом их можно разделить на четыре типа:
- Одноразовый платеж. За ваше ПО платят раз, после чего могут пользоваться неограниченное время.
- Функциональные ограничения. Дополнительные возможности пользователь может открыть за дополнительную плату.
- Временная лицензия. Вы «сдаете приложение в аренду», то есть речь идет о подписке.
- Многоуровневая. Представляет собой комбинацию названных методов. Пользователь получает Silver-, Gold- или Platinum-версию ПО при соответствующей оплате.
После того как вы определились со стратегией лицензирования, пора начать поиски программных технологий защиты. И здесь стоит помнить о таких нюансах, как возможность подключения ПО к интернету, его специализация, вид платформы, для которой предназначен софт, и прочее.
Еще раз подчеркнем важность выбора адекватной защиты. Если вы собираетесь защитить свой велосипед методом, который применяется в Форт-Ноксе, это вряд ли можно назвать разумным. Есть и обратная зависимость: если хотите защитить Форт-Нокс, не используйте для этого велосипедный замок, это бесполезно, взлом гарантирован. В целом, стратегия лицензирования должна соответствовать цене самого продукта.
Виды защит
Как и говорилось выше, есть различные опции для защиты ПО от взлома и копирования. Эти опции могут отличаться по стоимости, уровню защиты и специализации.
Защита по «доверию». Здесь вы рассчитываете на то, что пользователи будут платить без всяких проблем. Один пользователь — одна лицензия, вечная. В принципе, затрат с вашей стороны практически нет. Как только приложение скомпилировано, его можно начать распространять. Но проблема в том, что если ваш продукт станет популярным, то кто-то точно его взломает, начав раздавать. Защиты от взлома в таком случае нет, она нулевая.
Офлайн-программная защита
Речь идет о защите без подключения к интернету. Обычно реализуется такая схема сразу после компиляции программы. Чаще всего используется программная оболочка с определенными настройками. Защищенная программа не подключается для проверки целостности ни к каким внешним серверам. В принципе, обойти такую защиту можно без всяких проблем.
Онлайн-программная защита
Здесь уже речь идет о более серьезном методе — проверке лицензии при помощи сервера лицензирования. В этом случае требуются относительно высокие затраты в начале и периодические расходы позже. Как и в предыдущем варианте, используется программная оболочка, но параметры лицензирования чекаются и настраиваются в онлайне.
При желании можно добавить опции проверки ПО: как используется, есть лицензия или нет. Если требуется постоянное подключение к сети, то продукт, скорее всего, будет работать не всегда и не везде.
Степень серьезности такой защиты — между средним и высоким уровнем.
Аппаратная защита
Один из наиболее надежных методов, который сочетает в себе преимущества всех прочих стратегий. За лицензирование отвечает электронный USB-ключ, которому не требуется подключение к сети. Цена каждого ключа для разработчика низкая, нет периодических дополнительных трат. Реализовать можно как при помощи API, так и посредством программной оболочки.
Достоинством такого метода является то, что лицензию можно убрать за пределы операционной системы, ключ хранится вне ПК. Ключ либо очень сложно, либо вообще невозможно скопировать. ПО, которое защищено при помощи аппаратного ключа, может использоваться на тех системах, где нет подключения к сети. Это, к примеру, правительственные объекты или промышленность. Еще один плюс в том, что электронному ключу не требуются различные решения для разных программных сред, а возможности лицензирования очень гибкие.
Решения на основе аппаратного ключа можно развернуть буквально за минуты, они поддерживаются практически любыми версиями операционных систем.
Правда, помните, что поставщик решения (если вы не можете создать аппаратный ключ самостоятельно) должен делать все быстро, чтобы не возникла необходимость ожидать партии ключей и, соответственно, переноса старта продаж вашего ПО. Также поставщик должен предоставить простое и эффективное решение, которое быстро разворачивается. Конечно, вы должны доверять поставщику — в противном случае его услугами пользоваться не стоит.
О защите ПО стоит подумать еще на стадии проектирования: после того как проект готов частично или полностью, изменить что-то будет непросто.
Skillbox рекомендует:
- Прикладной онлайн-курс «Аналитик данных Python».
- Онлайн-курс «Профессия frontend-разработчик».
- Практический годовой курс «PHP-разработчик с 0 до PRO».
Комментарии (41)
gibson_dev
19.02.2019 12:26+5// Сарказм
А Рами Малек у вас чтоли учился? А настоящее имя — Максим Ковалев? И он с этим согласен? Обучался на веб-разработчика а стал актером, процесс обучения видимо завернул не туда. Точно на веб-разработчика то учите?
skillbox Автор
19.02.2019 13:30-1Охотно бы приняли его на учебу :) Сейчас поправим, спасибо!
technomancer
19.02.2019 14:42Вы ведь в курсе, что в РФ действует временный запрет на клонирование человека?
orion76
19.02.2019 12:35-1Не знаю ни одной «программки», которую спасла от взлома какая либо «защита».
Имхо, метод «монетизации» софта, при котором необходима подобная «защита», сильно устарел.DMGarikk
19.02.2019 12:52+1Это вы про программки для обычных людей говорите. а защита в корпоративном софте очень даже применяется, и частенько способов взлома в интернете нет. 1С тут самый яркий пример, и если её hasp давным давно поломали, то есть некоторые конфигурации с ключами других производителей… на которых найти «ломалку» невозможно или самому ковырять или никак.
плюс есть некоторые промышленное оборудование с ключами, так там вообще темный лес с поиском возможности взломаEvengard
19.02.2019 13:27Ну кстати есть ещё один метод защиты, на который вы намекнули — и который вполне успешно применяется в том числе в потребительском секторе! Выполнение на своём, нестандартном железе. Пример потреб-сегмента — различные игровые приставки.
Daar
19.02.2019 14:07Для своего первого XBox покупал у китайцев как раз аппаратную ломалку :) которая ставилась вместо CD-ROMа и эмулировала его, загружая игры из образов на жестком. Было просто супер :)
Ghool
19.02.2019 19:13Iphone тоже хороший пример специфичного железа (и os).
Джейла на современные версии нет, взломы, которые есть имеют проблемы
Oldster
20.02.2019 09:39тут скорее вопрос в популярности ПО, если оно популярно — сломают все, вопрос времени.
AkshinM
19.02.2019 13:40А что если защищать программы используя Denuvo? Правда это стоить будет дорого, но сейчас не о об этом
trolley813
19.02.2019 13:54+1Мне кажется, будет то же самое, что и сейчас с играми — чем популярнее и нужнее программа, тем быстрее взломают. Вообще, как показала практика, Denuvo — довольно легко взламываемая защита.
EvgeniyNuAfanasievich
19.02.2019 15:35Я бы по-максимуму старался не покупать программы и игры с такой (или аналогичной) защитой. Учитывая славу этого софта и истории о проблемах в ОС после/во время использования этим поделием.
voted
19.02.2019 13:52Я как то встречал программку в которой ключевая часть логики была вынесена в аппаратный ключ (тот был на базе одноразово-программируемой ПЛИС) и реально «взломать» такую систему было равноценно написанию своего аналога с нуля (ну не с нуля, купленную версию можно было в качестве ТЗ использовать).
ValdikSS
19.02.2019 17:36Сейчас возможность исполнения кода на донгле предоставляют некоторые поставщики. У Senselock, например, такое есть.
Oldster
20.02.2019 09:44насколько я помню, такие возможности были давно в ключах, но как показывает практика ими мало кто пользовался для защиты, чаще всего делалась просто проверка на наличие ключа и все. Ну и эмуляторы этих ключей были, как общедоступные, так и за деньги.
Ghool
19.02.2019 19:10Ключ в слове «не знаю». Да, винду, офис, фотошоп взломают с любой защитой — из-за огромной популярности.
Программы более нишевые защищаются и могут стоить миллионы рублей или евро — и их будут покупать в половине случаев именно из-за этого.
Пример — HP LoadRunner, ПО для тестирования ПО. Последний взлом, что есть — на очень древнюю версию, которую без бубна на свежие OS не установишь, да и работает так себе.
======
Вопрос второй — что значит «спасла от взлома»
Да, при достаточном желании и количестве ломателей взломают что угодно.
Но если из-за защиты половина пользователей пиратской версии купила лицензию — это уже прибыль.
VBKesha
19.02.2019 14:00+1Четыре рекламные ссылке в одной статье, причем совсем не по теме статьи.
Flux
19.02.2019 15:16Так рекламные ссылки — это основной контент статьи, остальное содержимое — лишь повод для того чтобы вставить эти ссылки.
Вообще, ситуация на хабре такова что если видишь на статье тег «Блог компании ...» то её можно не читать — это гарантированно не статья, а реклама замаскированная под статью. Исключением наверное являются только блоги довольно крупных компаний типа Яндекса и Гугла.
Вообще, корпоративные блоги — это рак хабра который убивает его как технический ресурс (хотя, наверняка, приносит солидную часть прибыли). Было бы замечательно иметь возможность исключить из своей ленты все посты из корпоративных блогов, но мы-то знаем что такое никогда не реализуют.VBKesha
19.02.2019 15:20Хрен бы с тем что статья из блога компании была рекламой. Но блин была бы хотя бы реклама по теме статьи. А то в статье защита софта а реклама питона да пхп… срамота в общем.
firedragon
19.02.2019 14:03+1Все защиты которые я видел ломались очень быстро. Причем самые сильные стоят на системах САПР, CAM, CAD.
На самом деле самый правильный путь это подсаживать всех на по, начиная со школы, а потом включать лицензии за поддержку (а не за копии).
И самое главное это конечно облака. Ломать стало нечего, все далеко на сервере
s7106500
19.02.2019 14:10Спасение в онлайн сервисе. Совсем базовый функционал у клиента на десктопе. Все ключевые функции реализуются на сервере. Без связи с сервером, софт работать не будет.
DMGarikk
19.02.2019 14:34не везде применимо. например станок на заводе
Stanislavvv
20.02.2019 11:26Вот как раз на станки-то уже применяют :-)
Причём с gps, дабы не перепродавали.
LAutour
19.02.2019 14:38+1И при любых сбоях интернета или ваших серверов пользователи будут вспоминать вас «добрым словом».
technomancer
19.02.2019 14:44Пока платят — какая разница, каким словом будут вспоминать?
Flux
19.02.2019 15:18Отличный подход.
Я, например, принципиально не пользуюсь продуктами компаний позволяющих себе такое отношение к пользователю.technomancer
19.02.2019 15:31Уважаю Ваш подход и согласен с Вами, но. Машину чем заправляете?
avacha
19.02.2019 16:39Тем что может.
Хотелось бы напомнить разработчикам, что если их говноподелиям требуется для работы интернет — пусть они этот канал оплачивают и обеспечивают бесперебойность его работы.
Как например было реализовано в читалках у Амазона.
Ничего личного, просто бизнес.
d_ilyich
19.02.2019 19:07В силу специфики, мы с коллегами выбрали следующий подход: защитить не программу от взлома, а себя от халявщиков. Подобрали аппаратный ключ, умеющий исполнять код, придумали алгоритм (де)кодирования идентификатора. При каждом запросе ключ отдавал разный серийник. Т.е. можно несолько раз подряд открыть окно «О программе», каждый раз получая новый серийник. Службе поддержки хватало нескольких символов, чтобы определить подлинность.
mihavxc
19.02.2019 19:07Когда-то давно софта на рынке было мало, поэтому его активно ломали. Сейчас на рынке очень много решений и вопрос пиратсва отходит на второй план. а на первый план выходит задача по его лицензированию — как продать софт так, чтобы это понравилось пользователю — может быть продавать более гибко каждые модули по отдельности, может быть по подписке, а может с оплатой за использование и так далее. Плюс нужно автоматизировать весь жизненный цикл лицензии, сделать так, чтобы лицензия помогала продавать продукт, а не мешала этому:) Конечно в каких-то определенных сфера(ПО для игровых автоматов пиратство все еще актуально), но например для того же 1С пиратство это по сути просто демо-версия и бизнес либо вырастет и купит лицензию, либо загнется.
Последние 9 лет я работаю сфере защиты и лицензирования ПО(Sentinel LDK), если кому интересно, можете в личку писать, можем помочь чем смогу.
ALF_Zetas
19.02.2019 20:58надежно защищать имеет смысл только абсолютно уникальный софт, у которого нет альтернатив. Если у софта есть хоть одна альтернатива и ту взломают, то падение продаж будет у обоих производителей — причем тому, кто потратился на более надежную защиту, будет обиднее ;)
kelevra
22.02.2019 06:31«Если программа запускается, то она ломаема» © RU.CRACK. Правильные разработчики это понимают и всю логику приложения делают на сервере. Клиентской части достаётся только отображение, которое ломать бесполезно. Всё остальное от лукавого.
Никогда не покупал и не буду покупать игры и программы. Однако, онлайн игры и сервисы оплачиваю легко и непринуждённо. В случае одноразового платежа за продукт деньги уже оплачены и разработчику насрать на пользователя. Сервис же, напротив, заинтересован удержать пользователя и поэтому активно исправляет баги и развивается.
SandroSmith
22.02.2019 10:44- Стоимость контрафактного ПО оценивается в $46 млрд.
- ...
- Потери от взлома лицензионного ПО составляют порядка $600 млрд ежегодно.
Это как вообще? Даже если посчитать мифическую «упущенную прибыль», откуда ещё 550 лярдов?
DrunkBear
Помнится, лет 15 назад встречал взломы аппаратных ключей для 1с и autocad.
Не думаю, что сейчас ситуация изменилась.
vladkorotnev
Более того, у некоторых вендоров инфраструктура вполне себе позволяет ещё и «вечные» хардварные ключи копировать, имея вторую болванку пустую от того же вендора (если вкратце: подписываются и генерятся лицензии автоматом, при этом сервер не проверяет сертификат ключа на соответствие тому, лицензии для которого просим подписать) :-)
Daar
У 1С по-моему до сих пор так, правится несколько байт в DLLке и она больше не просит аппаратный ключ.