Статический или случайный IV для файла лицензии.
-
02-10-2019 - |
Вопрос
Я сделал небольшую программу, которая позволит мне отправлять пользователям лицензии в зашифрованном виде.
На данный момент у меня есть
- Закрытый ключ RSA, который шифрует мой ключ AES.
- Один ключ AES/CBC, который шифрует данные.
- Открытый ключ RSA
И AES, и открытый ключ жестко запрограммированы на устройстве.
Как мне поступить с IV, когда запрашивается лицензия: следует ли мне создавать статическую лицензию на устройстве или отправлять новую с каждой новой создаваемой лицензией?
Решение
Если я понимаю, что вы пытаетесь сделать, то, как и большинство схем лицензирования, это, по сути, УЦП схема.Я коснусь только проблемы криптографии, но, конечно же, существует и проблема игры в прятки от хакеров.Ты должен знать что нет Схема DRM обеспечивает любую измеримую безопасность (если только не задействовано оборудование безопасности) в криптографическом смысле, но они все еще распространены, и некоторых разработчиков устраивает их логика.
Что вам нужно сделать, так это сгенерировать данные лицензии и включить некоторую информацию, которая не позволит пользователю просто скопировать действительный файл лицензии у законного пользователя.Примерами могут быть MAC-адрес, номер телефона и т. д.Затем вы знак эти данные.В этом случае лицензия состоит из незашифрованной лицензии и байтов подписи.На стороне пользователя ваше установочное программное обеспечение проверит подпись с помощью жестко запрограммированного открытого ключа и выполнит любые другие проверки (совпадение MAC-адресов, совпадений номеров телефонов и т. д.).
Это будет ядром вашей схемы, и этого будет достаточно для большинства разработчиков.Вы можете взять это ядро и дополнительно запутать его, используя специальное шифрование, разделение и т. д., в зависимости от того, как далеко вы хотите зайти в игре в прятки.
РЕДАКТИРОВАТЬ:
Если я могу сделать предложение, я думаю, что книга Начало криптографии с Java было бы разумной инвестицией.Он включает примеры использования библиотеки Bouncycastle.Вы можете бесплатно загрузить примеры с того же сайта.
Другие советы
Разве это не это предложение совершенно глупо?
Вы должны шифровать с помощью открытых клавиш RSA не с закрытым ключом. Если вы шифруете с закрытым ключом, поскольку вы предлагаете, то все с доступом к открытому ключу узнают ключ AES и смогут расшифровать или делать что-либо. Конечно по той же причине вы также должны не использовать один и тот же ключ AES для отдельных приемников.
И ответить на вопрос, вы должны использовать новый случайный IV для каждого шифрования AES / CBC.