Подтвердить что ты не робот

Реализация ключей продукта

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

Однако проблема заключается в том, что я не совсем уверен, как реализовать проверку ключа продукта. Что я имею в виду, так это то, что клиент может зарегистрироваться на моей веб-странице (после некоторого времени попробовать продукт), заплатить за продукт и получить ключ продукта в виде aaaaa-bbbbb-ccccc-ddddd-eeeee через e -mail (или, возможно, доступный через его профиль на моем сайте). Пока нет проблем. Он/она затем бросает ключ в соответствующие ключевые поля в моем приложении и бум приложение зарегистрировано.

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

Итак, я думаю, что RSA будет способ пойти? Но разве RSA не производит довольно длинные ключи (по крайней мере, дольше, чем требуемые 25 символов сверху)?

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

Какой самый быстрый, простой и безопасный способ пойти сюда?:-) Образцы кода были бы сахаром!

Привет,

Себастьян

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

4b9b3361

Ответ 1

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

По этой причине асимметричная криптология - это путь. Основная предпосылка заключается в следующем:

  • Когда пользователь приобретает у вас лицензию, вы собираете определенные идентификационные данные о пользователе и/или их окружении (как правило, это просто полное имя, а иногда и компания).
  • Вы делаете 128-битный хэш MD5 этой информации.
  • Используя 128-битный Elliptic Curve, зашифруйте этот хэш с помощью закрытого ключа на сервере.
  • 128-битный шифрованный текст может быть представлен пользователю в виде 25-символьной строки, состоящей из букв и цифр (плюс разделение тире для удобства чтения). Обратите внимание, что 26 букв + 10 цифр = 36 дискретных значений и 36 ^ 25 > 2 ^ 128.
  • Пользователь вводит этот ключ продукта в ваш диалог регистрации. Клиентское программное обеспечение преобразует его обратно в 128-разрядное число (16 байт), расшифровывает его с использованием открытого ключа вашего криптоанализа EC и сравнивает результат с хешем MD5 персональной информации пользователя, которая должна соответствовать тому, что использовалось для регистрации.

Это, конечно, основная идея. Более подробную информацию и исходный код см. В разделе Ключи продуктов на основе криптографии с эллиптической кривой.

Ответ 2

Жизнь проще, если вы просто купите решение.

http://www.kagi.com/kagisolutions/index.php

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

Ответ 4

Да, RSA и AES - две разные вещи:

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

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

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

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

Ответ 5

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