Почти всю свою карьеру я работал над созданием решений (индивидуальных приложений для одного клиента). Теперь, когда моя компания занимается разработкой программного обеспечения для масс, нас ждет много упаковки.
Я хочу спросить о лицензировании программного обеспечения. Как генерировать серийные номера и номера активации. Каковы мои варианты лицензирования программного обеспечения в целом.
Я понимаю, что это общий вопрос, но это начало разговора.
Наша модель лицензии работает с использованием криптографии с открытым / закрытым ключом. Они высылают нам свое имя и контактные данные, которые мы шифруем с помощью нашего личного ключа. Зашифрованный файл затем отправляется обратно лицензиату, которого они вводят в приложение. Приложение имеет наш открытый ключ, встроенный в двоичный файл (или, если у него есть соединение с сетью, оно вытаскивает его с нашего сайта), и оно использует его для расшифровки информации о лицензии. Если расшифрованная лицензия соответствует введенным данным, то они получают лицензию на использование продукта!
Используя криптографию с закрытым / открытым ключом, мы даем нашему приложению уверенность в том, что данные в лицензионном ключе на самом деле от нас (подлинность лицензии)
Есть и другие полезные вещи, которые вы можете сделать с этим, например, кодирование уровней подписки в лицензионный ключ. Приложение расшифрует лицензионный ключ и увидит, что ему разрешено использовать только определенные функциональные возможности.
Это может быть атаковано, хотя. Например, blackhat может либо удалить весь двоичный ключ, проверяющий лицензионный ключ, либо обновить сохраненный открытый ключ в приложении до сгенерированного ими ключа. Затем они смогут заставить его принять свою собственную лицензию. Однако, поскольку наши приложения не так популярны, мы не считаем это серьезной угрозой.
Если вы используете .Net для создания своих решений, возможно, стоит попробовать Xheo . Я использовал их раньше для реализации лицензирования, и они прекрасно интегрируются с решениями .net. Вы можете сделать что-то, например, требовать, чтобы основные серийные ключи активировали продукты, вплоть до настройки сервера активации, и требовать, чтобы люди активировали и деактивировали свои продукты для использования и переноса их между компьютерами.
Эта статья о пиратстве, сделанная парнем, который создал и продал небольшое приложение .NET, очень информативна. Его приложение было пиратским, что дает ему интересную перспективу:
http://kalzumeus.com/2006/09/06/yo-ho-me-hearties-yo-ho/
Он в основном говорит о том, что вам нужно сделать систему активации барьером для обычных пользователей - вы ничего не можете сделать, если ваше приложение достаточно популярно, чтобы его взломали взломщики. Самое главное - убедиться, что взломанная версия вашей программы, если она существует, невидима для 99% публики.