2010-08-01 2 views
6

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

  1. В целом, независимо от приложения взлома таким образом, как я могу начать писать алгоритм, чтобы принять определенный Serial или String или комбинация. (например, это то, что правильно, например: первое число от 3 до 9, второе должно быть первым - 3, в то время как третье число должно быть вторым * + .... независимо ...?)

  2. Каков наилучший подход для защиты настольного приложения от пиратства без использования Интернета. Это алгоритм (сделать его сложнее для обратного проектирования), защитить исходный код от видимости после того, как приложение установлено где-то? ... ??

PS: Возможно, стоит упомянуть, что я использую Java в качестве языка разработки. Благодаря

ответ

2
  1. Это звучит, как вы могли бы извлечь выгоду из public-key cryptography подхода.

  2. Это может быть разбита на две подгруппы точек:

    • A. Вы читали this thread here on SO? Это может дать вам некоторую широту по этому вопросу.
    • B. Как сказал @Jaka, это не большой вызов (из того, что я прочитал) для создания читаемого человеком кода из байт-кода Java. Вы можете запустить свой код через an obfuscator, чтобы сделать его более трудным для того, чтобы кто-то мог получить от него читаемый человеком код, но если кто-то действительно хочет прочитать ваш код, они почти всегда найдут способ. Лучший подход к борьбе с этим - взять совет в SO-нить, к которой я привязался: сделать так, чтобы кто-то мог купить ваше приложение, чем кому-то, чтобы украсть его.

(отредактирован после заявил, что он использует Java)

+0

Он составлен. Приложение JAVA Desktop. –

+0

@Saher, обновил мой ответ. – labratmatt

+0

Проблема с криптографией с открытым ключом для генерации серийных номеров заключается в том, что она создает невероятно длинные коды, которые трудно вводить пользователю. 1024-битный ключ генерирует код длиной примерно 200 символов, если кодировка base32. Это даже не учитывает проблемы человеческого восприятия, такие как ошибки 1 (один) и l (нижний регистр L). –

0

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

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

1

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

редактировать: labratmatt был быстрее с государственно-частным ключом ответа :)

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

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

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

Много коммерческого программного обеспечения использует пакеты как FlexNet, HASP, Wibu-ключа

0

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

+0

уверен, что я буду считать, что –

0

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

Как поставщик таких систем у нас есть как личный интерес для объявления, но у нас также есть данные - мы видим много компаний, которые доверяют разработчику, который говорит, что может собрать систему лицензирования, а затем они вернитесь к нам, поскольку он никогда не делал то, что им нужно. Эта статья (моя) расширяется по вопросам: http://knol.google.com/k/dominic-haigh/issues-to-consider-before-building-your/2zijsseqiutxo/6#

0

https://superuser.com/questions/14224/how-to-explain-drm-cannot-work/14254#14254

Даже если вы сделали положить очень мощный замок на ваше программное обеспечение, пираты до сих пор найти способ взломать его и положил его на торрент-сайт , (пример: Spore)

Вы говорите о DRM, и нет простого способа (если есть) блокировать пиратов от пиратства вашего программного обеспечения. Кроме того, вы конкурируете со свободными продуктами, которые могут делать то, что делает ваше программное обеспечение (всегда так), поэтому вам следует больше сосредоточиться на том, чтобы ваше программное обеспечение было легко установить и использовать, а не сложно установить и использовать для большего, чем вы предполагали.

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