Управление функциями на основе лицензии для приложения C++

Мы пытаемся предложить механизм лицензирования для каждой функции, в которой работает наше приложение Linux, и мы планируем централизованно управлять им с помощью сервера лицензий:

Наша цель лицензирования:

  1. Запретить черты оператор не купил.
  2. Предложение испытаний (функции, срок действия которых истекает, если они не куплены).
  3. Активируйте функции на некоторое время и сделайте их доступными только на определенный период времени.

Существует ли какая-либо серверная лицензия, которая позволяет нам делать это (в основном, мы будем использовать сокеты для связи с нашим приложением)? Что еще мы можем сделать (например, использовать программное обеспечение с открытым исходным кодом, прочитать и т. Д.), Чтобы начать?

8 ответов

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

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

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

Вам действительно нужно "позвонить домой"?

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

Поставщик может предоставить новые лицензии клиенту при необходимости.

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

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

FLEXnet (ранее известный как FLEXlm) - это лицензионный пакет, который обычно используется высокопроизводительными или специализированными программными пакетами, например, на рынке автоматизации электронного проектирования. Вы можете привязать лицензию к одной машине (через хост, обычно это MAC-адрес Ethernet) или к переносному аппаратному ключу, или иметь сетевой серверный дескриптор, разделяющий ограниченный пул одновременных лицензий с клиентами, работающими с вашим программным обеспечением. Лицензии могут быть предоставлены на ограниченное время или навсегда, а также могут быть ограничены номером версии. Файл лицензии описывает функции, которые лицензируются.

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

Разумеется, вы платите ежегодную лицензионную плату за использование FLEXnet в своих продуктах, начиная с 1 тыс. Долларов США. Плата зависит от выручки вашей компании и количества платформ (комбинация ОС / ЦП), на которых вы хотите, чтобы ваша схема лицензирования могла работать.

Я бы сказал, что не стоит использовать что-то вроде FLEXnet, если ваш продукт продается менее чем за несколько тысяч долларов США за место. Его использование является обременительным (источник значительного процента обращений в службу поддержки нашей компании), но корпоративные клиенты могут уже быть знакомы с его использованием, в зависимости от рынка.

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

Если вы планируете что-то кодировать самостоятельно, то обычный механизм, который я видел, заключается в том, чтобы привязать лицензию к MAC-адресу.

Это такой дильбертовский способ ведения дел. Просто сказать нет.

Несмотря на ненависть, это стандартная функция в специализированном программном обеспечении высокого класса, которое стоит десятки тысяч долларов. Подумайте, 3D-сканеры и чпу.

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

Распространенным лицензионным программным обеспечением является flexlm. Однако я бы дважды подумал, если бы я наложил эти ограничения на моих пользователей. Многие пользователи их не любят; особенно из среды FOSS/Linux.

Другие вопросы по тегам