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

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

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

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 был гораздо более общим.

Rasmus Faber 03.11.2008 19:31

Открыт снова. Это похоже, но не дублирует ссылки, которые я предоставил.

Thomas Owens 03.11.2008 20:20

Это серьезно неправильно понятый вопрос. Парень не спрашивает, как скрыть общение от АНБ.

Echostorm 24.12.2008 18:21

Я использую SLP-сервер. Это бывший продукт Microsoft, который сейчас продается здесь: inishtech.com/…

halfbit 20.01.2011 01:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
5
5 434
6

Ответы 6

Здесь также уместны ответы на другой ваш вопрос: Какой встроенный алгоритм шифрования .NET является наиболее безопасным?

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

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

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

Ха, ха, ха, «очень просто декомпилировать и просто заставить приложение пропустить этап проверки». Так как это очень просто, взломайте последнюю версию HP Loadrunner или последнюю версию Люкс Burp и покажите нам, что это очень просто. В качестве доказательства будет достаточно сообщения в блоге, например вот один для (очень) старой версии Burp Suite. Вопрос настоящий в том, сколько ценных программ вы реконструировали?

Pacerier 13.04.2016 20:41

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

Pacerier 13.04.2016 20:41

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

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

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

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

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

MD5 - это неработающий алгоритм хеширования, и его не следует использовать.

Nayef 31.08.2015 19:08

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

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

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

Эквивалентом .Net Framework являются классы RSAPKCS1ПодписьFormatter и RSAPKCS1 Подпись.

Другие вопросы по теме