Статический или случайный IV для файла лицензии.

StackOverflow https://stackoverflow.com/questions/3178367

  •  02-10-2019
  •  | 
  •  

Вопрос

Я сделал небольшую программу, которая позволит мне отправлять пользователям лицензии в зашифрованном виде.

На данный момент у меня есть

  • Закрытый ключ RSA, который шифрует мой ключ AES.
  • Один ключ AES/CBC, который шифрует данные.
  • Открытый ключ RSA

И AES, и открытый ключ жестко запрограммированы на устройстве.

Как мне поступить с IV, когда запрашивается лицензия: следует ли мне создавать статическую лицензию на устройстве или отправлять новую с каждой новой создаваемой лицензией?

Это было полезно?

Решение

Если я понимаю, что вы пытаетесь сделать, то, как и большинство схем лицензирования, это, по сути, УЦП схема.Я коснусь только проблемы криптографии, но, конечно же, существует и проблема игры в прятки от хакеров.Ты должен знать что нет Схема DRM обеспечивает любую измеримую безопасность (если только не задействовано оборудование безопасности) в криптографическом смысле, но они все еще распространены, и некоторых разработчиков устраивает их логика.

Что вам нужно сделать, так это сгенерировать данные лицензии и включить некоторую информацию, которая не позволит пользователю просто скопировать действительный файл лицензии у законного пользователя.Примерами могут быть MAC-адрес, номер телефона и т. д.Затем вы знак эти данные.В этом случае лицензия состоит из незашифрованной лицензии и байтов подписи.На стороне пользователя ваше установочное программное обеспечение проверит подпись с помощью жестко запрограммированного открытого ключа и выполнит любые другие проверки (совпадение MAC-адресов, совпадений номеров телефонов и т. д.).

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

РЕДАКТИРОВАТЬ:

Если я могу сделать предложение, я думаю, что книга Начало криптографии с Java было бы разумной инвестицией.Он включает примеры использования библиотеки Bouncycastle.Вы можете бесплатно загрузить примеры с того же сайта.

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

Разве это не это предложение совершенно глупо?

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

И ответить на вопрос, вы должны использовать новый случайный IV для каждого шифрования AES / CBC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top