Как обезопасить статическую строку в приложении Windows .net? - PullRequest
3 голосов
/ 28 апреля 2011

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

Спасибо за любые советы.

Ответы [ 3 ]

1 голос
/ 28 апреля 2011
  • Используйте SecureString для постоянной работы с токеном.Таким образом будет намного сложнее извлечь токен из памяти.
  • Сохраните токен в виде строки подключения в app.config и зашифруйте раздел «connectionStrings».Таким образом, токен будет защищен от всех, кроме учетной записи пользователя (через DPAPI).
  • Используйте SslStream для связи клиент-сервис.Таким образом, ваше соединение будет зашифровано.В сочетании с токеном ваши сообщения теперь будут аутентифицированы (т.е. вы знаете своего клиента) и защищены.
0 голосов
/ 28 апреля 2011

Это называется шифрованием с открытым ключом.

  • ваше приложение отправляет свой открытый ключ на сервер
  • сервер возвращает зашифрованную строку, которая должна быть добавлена ​​к некоторому префиксу
  • ваше приложение запрашивает у сервера его открытый ключ
  • ваше приложение расшифровывает строку, добавляет префикс
  • шифруется с помощью открытого ключа сервера
  • отправить ключ на сервер
  • сервер проверяет

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

Если вы считаете, что это слишком много работы, вы можете использовать SecureString и зашифрованные строки подключения. Но это наверняка можно взломать, если у вас есть какое-то время, потому что все необходимое находится на стороне клиента, и хакеру не нужны x * 2 bruteforce decrypt-ion.

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