Лицензирование оценки программного обеспечения

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

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

Мне интересно, какой хороший способ создать лицензионный ключ с различной информацией, встроенной в него, например, срок действия лицензии, MAC-адрес и различные ограничения программного обеспечения?

Ответы

Ответ 1

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

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

О, я также должен указать, что вы захотите указать дату истечения срока действия (и любую другую информацию, которую вы, возможно, захотите прочитать сами), в виде обычного текста (или слегка запутанного) как часть ключа, если вы пойдете вниз по этому пути. md5 - это просто остановить конечного пользователя от изменения даты истечения срока действия для продления лицензии.

Проще всего будет ключевой файл, подобный этому...

# License key for XYZZY
expiry-date=2009-01-01
other-info=blah
key=[md5 has of MAC address, expiry date, other-info]

Ответ 2

Я использовал как FLEXlm от Macrovision (ранее Globetrotter), так и новый RLM от Reprise Software (как я понимаю, написанные авторами FlexLM). Оба могут отключить либо MAC-адрес, либо физический ключ, могут быть либо node -блокированы (привязаны только к одному компьютеру), либо "плавающие" (любой авторизованный компьютер в сети может получить лицензию, выданную центральным сервером лицензий, до максимального количества одновременно выписанных копий, определяемых тем, сколько они заплатили). Существует множество гибких способов его настройки, включая даты истечения срока действия, отдельные суб-лицензированные функции и т.д. Интеграция в приложение не очень сложна. Это только те два, которые я использовал, я уверен, что есть и другие, которые тоже выполняют эту работу.

Эти программы легко взламываются, что означает, что существуют известные эксплойты, которые позволяют людям либо обойти безопасность вашего приложения, которое их использует, либо разрезая свои собственные лицензии, чтобы обманывать сервер лицензий, либо просто исправляя ваш двоичный файл, чтобы обойти (по существу заменяя вызов подпрограммы на свою библиотеку кодом, который просто говорит "return" true ". Это сложнее, чем это, но то, к чему это в основном сводится. Вы увидите взломанные версии вашего продукта, Warez. Это может быть очень неприятно и деморализовать, тем более, что они часто заинтересованы в растрескивании ради взлома, и даже не используют ваш продукт или не знают, что с ним делать. (Это очевидно, если у вас есть достаточно специализированная программа.)

Из-за этого некоторые люди скажут, что вы должны написать свой собственный, возможно, даже часто меняете схему шифрования. Но я не согласен. Верно, что использование ваших собственных средств означает, что известные эксплойты против FLEXlm или RLM не будут мгновенно работать для вашего приложения. Однако, если вы не являетесь экспертом по такой безопасности (что явно не так, или вы не зададите вопрос), весьма вероятно, что в вашей неопытности вы в конечном итоге напишите гораздо менее безопасный и более разрешимый чем лидеры рынка (слабые, как они могут быть).

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

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

Ответ 3

Мы использовали следующий алгоритм в моей компании в течение многих лет без единого инцидента.

  • Определите нужные поля в коде. Бит-пакет как можно больше. Например, датами могут быть "количество дней с 2007 года", а затем вы можете уйти с 16 бит.
  • Добавьте дополнительное поле контрольной суммы. (Вы увидите, почему через секунду.) Значение этого поля является контрольной суммой упакованных байтов из других полей. Мы используем "первые 32 бита из MD5".
  • Шифровать все, используя TEA. Для ключа используйте то, что идентифицирует клиента (например, название компании + персональный адрес электронной почты), таким образом, если кто-то хочет опубликовать ключ на веб-сайте, они должны включить свою контактную информацию в обычный текст.
  • Преобразуйте шестнадцатеричную строку в какой-то разумный путь. Вы можете делать прямые шестнадцатеричные цифры, но некоторым людям нравится выбирать другой набор из 16 символов, чтобы сделать его менее очевидным. Также включайте тире или что-то регулярно, чтобы было легче читать его по телефону.

Чтобы расшифровать, преобразуйте hex в строку и расшифруйте с помощью TEA. Но тогда есть этот дополнительный шаг: вычислите собственную контрольную сумму полей (игнорируя поле контрольной суммы) и сравните с данной контрольной суммой. Это шаг, который гарантирует, что никто не подделает ключ.

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

Является ли это взломанным? Конечно! Почти все, но это достаточно сложно и просто реализовать.

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

Ответ 4

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

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

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

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

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

  • получить хорошую стороннюю систему лицензирования
  • перепроверьте свой код с помощью проверок с указанием объема (например, ни одна глобальная переменная, как fIsLicensed, не проверяйте статус функции рядом с кодом, реализующим эту функцию).
  • используйте серьезную обфускацию в случае .NET или Java-кода.

Ответ 5

Компания, с которой я работал, фактически использовала usb dongle. Это было удобно, потому что:

  • Наше программное обеспечение также было установлено на USB Stick
  • Программа запускается только в том случае, если она найдет (уникальный) аппаратный ключ (любой стандартный USB-ключ имеет это, поэтому вам не нужно покупать что-то особенное, любая палка будет делать)
  • он не ограничивался только компьютером, но при желании мог быть установлен на другой системе

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

Ответ 6

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

Это также далека от совершенства, но может сохраняться в течение некоторого времени.

Ответ 7

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

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

Если вам нужно заплатить деньги за людей, пожалуйста.

Ответ 8

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

Темы, на которые вы должны сосредоточиться, для создания собственных лицензионных ключей...

Формирование HEX, криптография с эллиптическими кривыми и любые алгоритмы шифрования, такие как AES/Rijndael, DES, Blowfish и т.д. Они отлично подходят для создания лицензионных ключей.

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

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

Моим любимым пока является лицензионное хранилище от SpearmanTech, но я также попробовал FlexNet (дорого), XHEO (требуется слишком много программирования) и SeriousBit Ellipter.

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

Ответ 9

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

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

В прошлом я использовал Armadillo (теперь Software Passport) для проектов на С++. В настоящее время я использую проекты XHEO для С#.

Ответ 10

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

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

Мы использовали: http://www.aspack.com/asprotect.aspx

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

Хорошая компания, хотя явно не носители английского языка, так как их первый продукт назывался "AsPack".