Защита программного обеспечения шифрованием - PullRequest
13 голосов
/ 23 октября 2008

Для нашего программного обеспечения мы используем аппаратные ключи для защиты программного обеспечения. Защита не идеальна, но это коммерческое решение доступно и позволяет честным людям оставаться честными (как упоминалось в другой ветке). Преимущество - это 128-битный ключ, который хранится в «нечитаемом» ключе оборудования.

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

Мне бы хотелось простое решение, которое нельзя взломать, просто используя Reflector.

Или я задаю очень глупый вопрос?


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

Большое спасибо !!

Ответы [ 14 ]

0 голосов
/ 23 октября 2008

Создайте хеш (SHA1, MD5 и т. Д.) Для ключа и жестко закодируйте хеш в вашем приложении. Раздайте ключ вашим пользователям. В вашем исполняемом файле можно проверить хеш указанного пользователем ключа по жестко закодированному хешу:

bool CheckKey(string keyFromUser) 
   return SHA1(key) == "ABC2983CF293892CD298392FG";
}

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

Это явно не очень сильная защита.

0 голосов
/ 23 октября 2008

Если вы храните ключ на локальном компьютере пользователя, взломщик сможет получить к нему доступ независимо от того, как сильно вы пытаетесь предотвратить это.

Почему бы не сохранить ключ или важную часть кода защиты от копирования удаленно и, возможно, обработать его удаленно?

0 голосов
/ 23 октября 2008

Являются ли эти данные просто коммерческими вещами или вещами, которыми вы делитесь с работниками и так далее?

Если это последнее, возможно, вы можете написать быструю программу на С ++, чтобы переписать ее. По сути, если длина ключа равна длине документа, она должна быть «неразрывной». Что я делаю в c ++, так это создаю буфер случайных символов размером с документ, затем переписываю его, затем просто отдельно отправляю файл документа и ключа, а затем другой человек переписывает их вместе, чтобы получить документ.

Не знаю, поможет ли это тебе.

0 голосов
/ 23 октября 2008

Хотя ничего не может быть идеальным, проверьте API CryptProtectData , если вы хотите сделать это самостоятельно.

Честно говоря, вы, скорее всего, испытываете меньше головной боли, просто купив решение.

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