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

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

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

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

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

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

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

С Уважением,

Себастьян

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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