.NET криптография для лицензионных ключей?

Я хочу создать лицензионный ключ, какой алгоритм криптографии вы бы порекомендовали?

В основном входы будут:

название компании
номер основной версии
дата создана
дата истечения срока действия
имеет feature1:
имеет feature2:
имеет функцию3:

например. Acme Inc 5.0 20081102 20081102 0 1 0

Связанный: Какой встроенный алгоритм криптографии .NET является наиболее безопасным?

Ответы

Ответ 1

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

Ответ 2

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

Если вы выполняете проверку на стороне сервера, я бы выбрал HMAC на основе SHA-256.

Ответ 3

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

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

Основная функция CryptoAPI для подписи и проверки CryptSignHash и CryptVerifySignature, см. Пример C: Подписание хэша и проверка подписи хеша.

эквивалент .Net Framework - это RSAPKCS1SignatureFormatter и RSAPKCS1SignatureDeformatter.

Ответ 5

Вам нужно сделать 4 вещи:
Нет 1: Контрольная сумма для вашей заявки (MD5, с пользовательским контекстом md5)
    - Контекст MD5 должен быть зашифрован инициализирован |     - Сравнить снова закрытый/открытый ключ зашифрованной контрольной суммы
№ 2: контрольная сумма вашего сегмента текста приложения, использующего приложение,
Нет 3: использование шифрования с открытым ключом 4096 бит RSA для лицензии

Нет 4: Зашифруйте любые важные строки, например "Неверный ключ" или "Ключ ok"

Ответ 6

Если вы хотите увидеть пример шифрования Triple DES, вы можете взглянуть на мой пост в блоге об шифровании данных в база данных.

Сообщение в блоге содержит видео и исходный код.

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

Исходный код написан на С# и использует алгоритмы Triple DES.