Зашифровать файловую базу по предварительно сгенерированному «ключу» C # - PullRequest
0 голосов
/ 27 марта 2010

Я пытаюсь определить наилучший вариант действий по внедрению простой системы «лицензирования» с моим партнером. Концепция:

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

У меня есть первая часть, все сделано. В следующей части я попытаюсь выяснить, какую методологию шифрования мне нужно использовать. Я уже знаю, что Симметричное Шифрование - практически единственный путь, который я могу выбрать. Большая часть информации, которую я нашел, включает в себя .NET, уже создающую ключ из своих собственных внутренних методов.

Это немного предыстории, мой вопрос: «Какой метод шифрования я мог бы использовать, который позволил бы мне зашифровать ограничения на основе« идентификатора », который я получил от компьютера клиента?» Кстати, я пишу это в C #.

Ответы [ 2 ]

0 голосов
/ 27 марта 2010

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

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

0 голосов
/ 27 марта 2010

Я недавно сделал что-то очень похожее на это. Я использовал AES для генерации значения на основе закрытого ключа с использованием внутреннего идентификатора клиента или номера заказа в качестве IV, используемого для шифрования значения.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...