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

0
kevin52408 24 Янв 2010 в 06:28
Вы можете найти здесь некоторую помощь: stackoverflow.com/questions/892314/…
 – 
Mark Elliot
24 Янв 2010 в 06:30
Спасибо за ссылку, Марк. Я прочитал этот вопрос перед тем, как опубликовать этот. Поскольку это было 8 месяцев назад, я надеялся, что, задав один и тот же вопрос, разные люди ответят по-разному.
 – 
kevin52408
24 Янв 2010 в 19:36

2 ответа

Лучший ответ

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

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

Например, если вы возьмете SHA1 «1» (ваш первый лицензионный ключ) и суперсекретную соль «stackoverflow8as7f98asf9sa78f7as9f87a7», вы получите ключ «95d78a6331e01feca457762a092bdd4a77ef1de1». При желании вы можете добавить к нему номера версий.

Если вам нужна онлайн-авторизация, вам понадобятся три вещи:

  1. Чтобы гарантировать, что ответ нельзя подделать
  2. Чтобы гарантировать, что запрос не может быть подделан
  3. Чтобы гарантировать, что если Интернет недоступен, вы предпримете соответствующие действия.

Криптография с открытым ключом может помочь с первым и вторым пунктами. Даже в Photoshop CS4 есть проблемы с пунктом 3, это непростой вопрос.

1
Eli 24 Янв 2010 в 06:50
Обязательно должны быть уникальный идентификатор и соль. Меня беспокоит то, что если я провожу офлайн-проверку, мой секрет должен быть в коде.
 – 
kevin52408
24 Янв 2010 в 20:01
1
Да, и офлайн-проверка затрудняет изменение вещей позже (например, добавление и удаление серийных номеров). Если возможно, я бы попробовал сделать онлайн. Просто помните, если люди достаточно сильно постараются, они поймут, как взломать код. Photoshop - самая большая дойная корова Adobe, и ее обычно взламывают почти сразу после запуска. Я считаю, что быть вежливым со своими пользователями, взимать разумные цены и предлагать хорошую поддержку клиентов - лучшие методы борьбы с пиратством.
 – 
Eli
24 Янв 2010 в 21:06

Я предвзято - учитывая, что компания, соучредителем которой я являюсь, разработала решение для лицензирования программного обеспечения Cobalt для .NET - но я бы посоветовал вам использовать стороннее решение, а не использовать собственное.

Прочтите статью Разработка для защиты и лицензирования программного обеспечения, в которой говорится следующее:

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

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

Если вы твердо настроены на то, чтобы использовать свою собственную, небольшой совет: протестируйте максимально широкий спектр клиентских систем. Реальное оборудование странно , а поведение Windows в разных версиях сильно различается.

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

0
Duncan Bayne 27 Янв 2010 в 07:42
Поскольку прямо сейчас я просто пытаюсь провести опрос, для меня не имеет значения, если вы предвзяты. ;) Спасибо за ссылки и информацию.
 – 
kevin52408
27 Янв 2010 в 20:33