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

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

1
Ian 4 Июл 2009 в 19:16

4 ответа

Лучший ответ

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

Поиск криптографического хеширования / подписи.

8
Marc Gravell 4 Июл 2009 в 15:38

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

1
clemahieu 4 Июл 2009 в 17:50

Если вы говорите о среде MS / .NET, я рекомендую вам DPAPI . Это API, используемый для хранения ваших данных, защищенных паролем. Затем вы можете спросить меня: «Но тогда у меня такая же проблема», ответ - нет, потому что в этом сценарии вы используете пароль пользователя для защиты ваших данных. Итак, что вам нужно сделать, чтобы получить доступ к своим данным, это запустить приложение под определенными учетными данными. В среде MS это лучшее решение.

Из документации:

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

1
VP. 4 Июл 2009 в 15:26

Все, что находится на стороне клиента системы, может быть скомпрометировано.

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

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

Тем не менее, запуск файла лицензии через шифрование AES 256 не повредит :).

1
Spence 4 Июл 2009 в 15:25