Я хочу создать лицензионный ключ, какой алгоритм криптографии вы бы порекомендовали?
В основном входы будут:
company name
major version number
date created
expirey date
has feature1:
has feature2:
has feature3:
например Acme Inc 5.0 20081102 20081102 0 1 0
Связанный: Какой встроенный алгоритм шифрования .NET является наиболее безопасным?
Почему это было закрыто? Другие вопросы не дают ответа на этот вопрос, а другой вопрос ASDFdotASPX был гораздо более общим.
Открыт снова. Это похоже, но не дублирует ссылки, которые я предоставил.
Это серьезно неправильно понятый вопрос. Парень не спрашивает, как скрыть общение от АНБ.
Я использую SLP-сервер. Это бывший продукт Microsoft, который сейчас продается здесь: inishtech.com/…





Здесь также уместны ответы на другой ваш вопрос: Какой встроенный алгоритм шифрования .NET является наиболее безопасным?
Если вы выполняете проверку на стороне клиента, вы хотите использовать асимметричное шифрование. Таким образом, вам не нужно передавать закрытый ключ клиенту. Я бы сгенерировал подпись RSA, используя SHA-256 и 2048-битный ключ. Если вы это сделаете, криптографические операции не будут слабым звеном. Взломщик, конечно, может изменить код, чтобы пропустить этап проверки, но никакой криптографический алгоритм в этом не поможет.
Если вы выполняете проверку на стороне сервера, я бы выбрал HMAC на основе SHA-256.
Я бы порекомендовал: не тратьте слишком много времени на защиту ключей. С помощью байтовых компилируемых языков очень легко декомпилировать и просто заставить приложение пропустить этап проверки. Независимо от того, насколько безопасны ваши ключи, они не имеют значения, если ваша функция проверки всегда возвращает true. Серийные ключи нужны, чтобы честные люди были честными.
Ха, ха, ха, «очень просто декомпилировать и просто заставить приложение пропустить этап проверки». Так как это очень просто, взломайте последнюю версию HP Loadrunner или последнюю версию Люкс Burp и покажите нам, что это очень просто. В качестве доказательства будет достаточно сообщения в блоге, например вот один для (очень) старой версии Burp Suite. Вопрос настоящий в том, сколько ценных программ вы реконструировали?
«Серийные ключи нужны, чтобы честные люди были честными.» Неправильный. Честным людям не нужны серийные ключи, честно говоря, сообщения типа «не используйте эту функцию, если вы не заплатите мне сначала» будет достаточно. Серийные ключи нужны, чтобы нечестные люди оставались честными. Нечестно, но дешевый. Сначала Безопасность - это экономическая проблема, потом технологическая проблема.
Если вы хотите увидеть пример шифрования Triple DES, вы можете взглянуть на мой пост в блоге по шифрованию данных в базе данных.
Сообщение в блоге содержит видео и исходный код.
Хотя он ориентирован на шифрование строковых столбцов в базе данных, вы определенно можете изменить его для работы с полями лицензирования.
Исходный код написан на C# и использует алгоритмы Triple DES.
Вам нужно сделать 4 вещи:
№ 1: Контрольная сумма вашего приложения (MD5, с настраиваемым контекстом md5)
- Контекст MD5 необходимо инициализировать в зашифрованном виде
- Сравнить с зашифрованной контрольной суммой с закрытым / открытым ключом
№ 2: Контрольная сумма текстового сегмента вашего запущенного приложения
№ 3: Используйте 4096-битное шифрование закрытого и открытого ключа RSA для лицензии
№ 4: зашифруйте все важные строки, например «Неверный ключ» или «Ключ в норме»
MD5 - это неработающий алгоритм хеширования, и его не следует использовать.
Для лицензионного ключа вас интересует не столько его шифрование, сколько его подписание. Подписав его, вы можете подтвердить, что срок действия и список включенных функций не соответствуют подделанный. Нет необходимости скрывать (шифровать) лицензионный ключ, поскольку нет угрозы, которую вы хотите уменьшить, скрывая лицензию от конечного пользователя.
Криптографические подписи выполняются путем хеширования лицензии и последующего шифрования хеш-кода с помощью закрытого ключа. Поскольку любой может расшифровать этот хэш с помощью соответствующего открытого ключа, любой может проверить, не была ли подделана лицензия.
Основные функции CryptoAPI для подписи и проверки - это CryptSignHash и CryptVerifySignature, см. Пример программы C: подпись хэша и проверка подписи хэша.
Эквивалентом .Net Framework являются классы RSAPKCS1ПодписьFormatter и RSAPKCS1 Подпись.
Есть связанные вопросы по SO: stackoverflow.com/questions/79064/cryptography-algorithm и stackoverflow.com/questions/179220/best-cryptography-algorit хм и stackoverflow.com/questions/258721/…