Схема лицензирования, защита от подделки и возможность отзыва - PullRequest
6 голосов
/ 06 августа 2010

это мой первый вопрос, поэтому, пожалуйста, будьте осторожны ...

Я работаю над программным обеспечением, которое я хотел бы защитить, используя какую-то схему лицензирования. Базовая схема будет состоять в том, чтобы сгенерировать некоторый «уникальный» ключ для пользователя. Пользователь отправляет этот ключ и регистрационный код, когда хочет зарегистрировать программное обеспечение и получает код активации.

Когда приложение запускается, оно проверяет код активации, сравнивая «уникальный» ключ и блок данных, полученный при расшифровке кода активации.

Это справедливо и довольно просто для реализации, можно выбирать разные криптоалгоритмы и т. Д., Однако в этой схеме отсутствуют два свойства:

  1. Если пользователю удастся подменить аппаратную подпись и т. Д. Для создания того же «уникального» ключа на другом компьютере, он может использовать те же данные лицензии.
  2. Если пользователь решает удалить приложение и хочет переместить его на другой компьютер, ничто не мешает ему снова использовать старые лицензионные данные на старом компьютере и по-прежнему получать новые лицензионные данные для новой установки.

У вас есть предложения по решению этих проблем?

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

Снова и снова, пока ...

EDIT: В настоящее время у меня есть схема, которая работает, и я должен упомянуть, что наиболее распространенный продукт устанавливается во встроенной среде, где аппаратные изменения происходят очень редко, и если происходит сбой оборудования, то, скорее всего, машина сломана. Но я мог бы изменить схему аппаратных ключей, чтобы учесть и внести некоторые изменения.

Кроме того, из-за этого программное обеспечение, скорее всего, не будет работать внутри виртуальной машины, но это хороший момент, и я не думал об этом.

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

Я ищу хорошие / выполнимые решения для 2 пунктов. Подмена оборудования, отзыв лицензионных ключей, т. Е. Чтобы пользователь не мог использовать один и тот же код regcode + код активации.

Спасибо за ваши отзывы

Не нужно

Ответы [ 5 ]

3 голосов
/ 07 августа 2010

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

Вы предлагаете использовать аппаратную подпись как часть уникального ключа каждого пользователя.,Что произойдет, если произойдет сбой моего оборудования (например, сломался жесткий диск)?Я, конечно, не буду покупать ваше приложение, если не смогу продолжать использовать его после аппаратной проблемы, поэтому вы должны быть готовы как минимум обрабатывать запросы на изменение ключа.Вы бы лучше ответили быстро, потому что, если ваше приложение важно, я хочу минимизировать время простоя.И я не приглашаю вас проверить, что мое оборудование вышло из строя, так что вам придется поверить мне на слово.Это означает, что любой пользователь может время от времени получать бесплатные лицензии, ссылаясь на аппаратный сбой.

А виртуальные машины?Вероятно, выполнимо обнаружить все существующие на данный момент конфигурации виртуальных машин, рискуя получить несколько ложных срабатываний время от времени.Если вы запрещаете виртуальные машины, как вы можете объяснить это пользователям?Если вы разрешите виртуальные машины, как вы запретите пользователю делать несколько копий всей виртуальной машины?(Это может произойти даже с физическими машинами, с режимом гибернации).

Будет ли приложение перезванивать вам при каждом запуске?Наверное, из твоей схемы деинсталляции.Это пропускная способность и доступная стоимость, а также отталкивают некоторых пользователей - не все подключены к сети, особенно в чувствительных средах.Но тогда вам не понадобится такая сложная схема: ваш сервер может отслеживать, сколько копий приложения запущено, хотя вы должны справиться со случаем, когда приложение не завершается чисто по какой-либо причине (сбой приложения,Сбой ОС, сбой питания, потеря связи ...).

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

1 голос
/ 16 августа 2010

Будучи автором условно-бесплатного программного обеспечения и давним участником ASP , я думаю, что вы идете в неверном направлении с вашим решением.Единственный способ сделать это работоспособным - использовать аппаратное устройство, как уже предлагалось.Эта или постоянная онлайн-активация - единственный способ, если вы хотите быть уверены, и ваш продукт настолько хорош и без конкурентов, что ваши клиенты все равно будут его использовать.

Но то, что мы (организованные небольшие независимые разработчики ПО) узнали из практики, так эточто вы не должны делать то, что пытаетесь сделать.Не связывайте это с оборудованием.Продайте одну лицензию на человека, а не одну лицензию на компьютер.В конце вы сделаете больше продаж из-за смягченной лицензии.

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

Сначала я использовал некоторые из лучших программ защиты окон, но у них у всех были серьезные проблемы с моим кодом.И они зовут взломать рано или поздно.Поэтому я отказался от всех из них.

PS: Я использую аппаратную схему отпечатков пальцев в Windows, где я не ограничиваю программу, а просто не позволяю людям получать новые пробные ключи каждые 30 дней.Кажется, что вместе с ворчливым экраном это работает.Отпечаток пальца - это имя пользователя, время установки Windows, метка времени изменения системных файлов и серийный идентификатор жесткого диска.

1 голос
/ 10 августа 2010

Поместите свое программное обеспечение в аппаратное обеспечение устройства и установите на него навесной замок. Отправьте прибор клиенту.

Если вы считаете, что покупатель вскроет устройство, чтобы получить ваш код, подумайте о шифровании носителя ... Затем ему нужно порезать коробку и найти ключи. Чип TPM или безопасный USB-токен могут помочь с последним.

0 голосов
/ 16 августа 2010

Я думаю, что единственное решение вашей проблемы - это криптографическое оборудование ключ . Обычно это USB-ключ, защищенный от несанкционированного доступа, который можно легко передавать между компьютерами.

Эти устройства стоят менее 1 доллара США при больших количествах и не более 10 долларов США при очень небольших количествах. Хорошие из них очень трудно подделать, их очень легко встроить в ваше приложение, и обычно они поставляются с бесплатным EXE-шифратором, который также содержит функции анти-отладки и анти-обратной инженерии.

0 голосов
/ 10 августа 2010

Пусть регистрационный код также будет кодом активации.

Вы генерируете уникальный регистрационный код в торговой точке или в комплекте с продуктом.Клиент регистрируется / активируется / деактивируется с вами (или вашим сервером) за один шаг, используя этот единственный код.Аппаратные средства клиента не должны генерировать какие-либо ключи.

Для повторной регистрации / повторной активации по-прежнему требуется контакт с вами, поэтому вы знаете о попытках переустановки.

...