Меня попросили разработать систему генерации / проверки ключей для некоторого программного обеспечения. Они также будут открыты для разработанной системы с открытым исходным кодом или коммерческой системы, но предпочтут систему с нуля. Онлайн-активация необязательна, поскольку некоторые установки могут быть выполнены на изолированных серверах. Я знаю, что есть своего рода комплекс «пользователь / безопасность» с множеством методов борьбы с пиратством. Итак, я думаю, я спрашиваю, какое программное обеспечение, библиотеки и методы существуют? Я был бы признателен за личные знания, веб-сайты или книги.
2 ответа
Если вы возьмете хеш чего-то, это приведет (в идеале) к непредсказуемой строке символов.
У вас может быть алгоритм, заключающийся в том, чтобы взять SHA1 чего-то предсказуемого (например, последовательных чисел), соединенного с достаточно длинной солью. Ваши ключи будут действительно безопасными, пока ваша соль остается постоянным секретом, а SHA1 никогда не будет взломан.
Например, если вы возьмете SHA1 «1» (ваш первый лицензионный ключ) и суперсекретную соль «stackoverflow8as7f98asf9sa78f7as9f87a7», вы получите ключ «95d78a6331e01feca457762a092bdd4a77ef1de1». При желании вы можете добавить к нему номера версий.
Если вам нужна онлайн-авторизация, вам понадобятся три вещи:
- Чтобы гарантировать, что ответ нельзя подделать
- Чтобы гарантировать, что запрос не может быть подделан
- Чтобы гарантировать, что если Интернет недоступен, вы предпримете соответствующие действия.
Криптография с открытым ключом может помочь с первым и вторым пунктами. Даже в Photoshop CS4 есть проблемы с пунктом 3, это непростой вопрос.
Я предвзято - учитывая, что компания, соучредителем которой я являюсь, разработала решение для лицензирования программного обеспечения Cobalt для .NET - но я бы посоветовал вам использовать стороннее решение, а не использовать собственное.
Прочтите статью Разработка для защиты и лицензирования программного обеспечения, в которой говорится следующее:
Мы считаем, что большинству компаний будет лучше, если вы купите качественную стороннюю систему лицензирования. Такой подход освободит ваших разработчиков для работы над основными функциями и снизит расходы на обслуживание и поддержку. Это также позволяет вам воспользоваться опытом специалистов в области лицензирования и избежать выпуска программного обеспечения, которое легко взломать.
Еще одно преимущество покупки стороннего решения состоит в том, что вы можете быстро и легко оценить его пригодность; с внутренней системой вы должны платить заранее за разработку системы, которая может оказаться неадекватной для ваших нужд. Выбор высококачественной сторонней системы значительно снижает риск, связанный с разработкой решения собственными силами.
Если вы твердо настроены на то, чтобы использовать свою собственную, небольшой совет: протестируйте максимально широкий спектр клиентских систем. Реальное оборудование странно , а поведение Windows в разных версиях сильно различается.
Вам почти наверняка придется потратить много времени на разглаживание складок любой системы идентификации оборудования, которую вы внедрите.
Похожие вопросы
Связанные вопросы
Новые вопросы
security
Темы, касающиеся безопасности приложений и атак на программное обеспечение. Пожалуйста, не используйте этот тег в одиночку, что приводит к неоднозначности. Если ваш вопрос не о конкретной проблеме программирования, попробуйте вместо этого задать ее на информационной безопасности SE: https://security.stackexchange.com