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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

Это такой способ Dilbert-esque. Просто скажите "нет".

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

Ответ 5

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

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

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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