2010-07-30 1 views
4

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

Обратите внимание, что я использую слово , распространяя в том смысле, что приложение поставляется для запуска на компьютере пользователя, а не в облаке или кластере.

+0

Что вы пытаетесь достигнуть? Возможно, есть альтернативы, которые вы не рассматривали. –

+0

@Lasse Я хочу, чтобы только подмножество компьютеров имело доступ к веб-сервису. Их можно идентифицировать по серийным номерам оборудования, доступным через клиентское приложение. –

+1

Проблема здесь заключается не в том, чтобы передать ключ, а для обнаружения того, что приложение/пользователь лжет вам. Я думаю, вы поймете, что это невозможно сделать на 100%. Все, на что вы можете надеяться, - это «достаточно хорошее» решение. –

ответ

6

Все, что доступно в приложении, может быть доступно достаточно квалифицированному пользователю.

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

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

+0

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

+0

Ничто не идеально. Это гонка вооружений в мире разработки игр, и тот, который производители игр проигрывают по разным причинам. Обычно, если они наносят ключ, первоначальный владелец может связаться с ним и, используя некоторое время по телефону, получить новый рабочий ключ. 99,99% времени, простой замок - это путь. Иногда прикрепление ключа - это «путь», но я нахожу это очень, очень, очень раздражающим и поэтому не рекомендую их. – Caladain

+0

Хороший ответ. Безопасность редко связана с созданием сверхбезопасной системы, зачастую это делает невозможным время и усилия – zebrabox

1

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

1

Не совсем. Вы можете сделать это annoying, чтобы извлечь ключ, но если он может быть использован программой, пользователь может также его прочитать.

2

Есть два общих ответа на ваш вопрос.

Если ваш вопрос заключается в следующем:

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

Тогда ответ таков: нет, вы не можете.

Все, что может сделать ваш код, может также сделать пользователь.

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


Если ваш вопрос заключается в следующем:

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

Тогда ответ таков: см. Ответ на первый случай, в частности часть о том, как сделать его трудным для пользователя.

 Смежные вопросы

  • Нет связанных вопросов^_^