2008-09-08 2 views
13

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

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

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

ответ

9

Я предлагаю вам взять фрагменты информации, которые вы хотите в ключе, и хешировать с помощью 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] 
+3

пока вы используете MD5 в качестве подписи, вы также можете использовать правильную асимметричную подпись ключа. –

+1

@ Джейсон, если вы просто используете MD5, вы можете безопасно обрезать результат, чтобы создать что-то управляемое. Подпись потребует, чтобы значительно большее количество данных было частью «ключа», поскольку это была бы полная зашифрованная подпись MD5. Если вы усекаете его, он нарушит проверку. – tylerl

0

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

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

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

1

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

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

1

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

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

Если вы заявляете, что платите деньги за людей.

2

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

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

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

8

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

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

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

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

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

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

0

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

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

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

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

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

15

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

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

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

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

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

4

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

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

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

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

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

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

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

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

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

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

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

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

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

Смежные вопросы