Народ, кто действительно каким-то образом защищал свои .net приложения, поделитесь опытом!
Насколько я понял,после прочтения MSDN Magazine, статей на cracklab и другого, запрятать внутри сполняемого кода строку подключения к базе данных — нереально. А если мне необходимо запрятать пароль на закрытый ключ сертификата X509, чтобы мое приложение-сервис могло подписывать свои сообщения серверу? Получается что фиг сделаешь безопасное приложение...
Из всего изученного следует, что кроме обфускации графа управления и кода ничего не может остановить(точнее замедлить) крекера. Ну может еще NGen, хотя в моем случае он не прокатит, т.к. я использую такие прелести, как Remoting, Reflection. Как тогда быть??? Научите?
Re: Многократно поднятая тема: защита исполняемого кода от п
Здравствуйте, d4u, Вы писали:
d4u>Из всего изученного следует, что кроме обфускации графа управления и кода ничего не может остановить(точнее замедлить) крекера. Ну может еще NGen, хотя в моем случае он не прокатит, т.к. я использую такие прелести, как Remoting, Reflection. Как тогда быть??? Научите?
Интересно, каким образом ремотинг и рефлекшн препятствуют использованию NGen?
Re: Многократно поднятая тема: защита исполняемого кода от п
Здравствуйте, d4u, Вы писали:
d4u>Насколько я понял,после прочтения MSDN Magazine, статей на cracklab и другого, запрятать внутри сполняемого кода строку подключения к базе данных — нереально. А если мне необходимо запрятать пароль на закрытый ключ сертификата X509, чтобы мое приложение-сервис могло подписывать свои сообщения серверу? Получается что фиг сделаешь безопасное приложение...
А зачем тебе подписывать данные, идущие к серверу?
1. Если нужна авторизация, то это делается по другому и никаких ключей, вшитых в код не нужно
2. В целях защиты от посылки данных от других программ. Дак кто мешает это сделать через авторизацию пользователя, то бишь, какая разница чем правильный пользователь посылает правильные данные
3. Если нужна защита самой программы, тогда речь идёт не только о защите конкретной строки. Верно?
Re[2]: Многократно поднятая тема: защита исполняемого кода о
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, d4u, Вы писали:
d4u>>Из всего изученного следует, что кроме обфускации графа управления и кода ничего не может остановить(точнее замедлить) крекера. Ну может еще NGen, хотя в моем случае он не прокатит, т.к. я использую такие прелести, как Remoting, Reflection. Как тогда быть??? Научите?
N>Интересно, каким образом ремотинг и рефлекшн препятствуют использованию NGen?
Не знаю, я лично сам пока не пробовал... встречал где-то на форуме эту тему... а что, не так? В каком тогда случае NGen сработает?
Просто тогда отпадет вопрос защиты. На native Exe'шник можно будет навесную защиту сделать
Re[2]: Многократно поднятая тема: защита исполняемого кода о
Здравствуйте, FDSC, Вы писали:
FDS>Здравствуйте, d4u, Вы писали:
d4u>>Насколько я понял,после прочтения MSDN Magazine, статей на cracklab и другого, запрятать внутри сполняемого кода строку подключения к базе данных — нереально. А если мне необходимо запрятать пароль на закрытый ключ сертификата X509, чтобы мое приложение-сервис могло подписывать свои сообщения серверу? Получается что фиг сделаешь безопасное приложение...
FDS>А зачем тебе подписывать данные, идущие к серверу?
FDS>1. Если нужна авторизация, то это делается по другому и никаких ключей, вшитых в код не нужно FDS>2. В целях защиты от посылки данных от других программ. Дак кто мешает это сделать через авторизацию пользователя, то бишь, какая разница чем правильный пользователь посылает правильные данные FDS>3. Если нужна защита самой программы, тогда речь идёт не только о защите конкретной строки. Верно?
1. Мне нужна аутентификация клиента. Сейчас она осуществляется по имени + ЦП. Поэтому мне и надо подписывать данные, идущие к сервру.
Чтобы я мог гарантировать, что они идут именно с этого компьютера.
2. Разница есть. Моя программа просто собирает информацию о системе. Если кто-то может взть мою ЦП и подписать пакет, я его рассмотрю как "валидный" и информацию о нем помещу в БД. Т.е. можно подделывать ту самую информацию, которуя я собираю.
3. Да. Согласен. Нужна защита самой программы. Хотя бы для того, чтобы затруднить ее анализ (таким способом можно выдрать вид сообщений внутри системы и скомпрометировать безопасность системы).
Re[3]: Многократно поднятая тема: защита исполняемого кода о
Здравствуйте, d4u, Вы писали:
d4u>>>Насколько я понял,после прочтения MSDN Magazine, статей на cracklab и другого, запрятать внутри сполняемого кода строку подключения к базе данных — нереально. А если мне необходимо запрятать пароль на закрытый ключ сертификата X509, чтобы мое приложение-сервис могло подписывать свои сообщения серверу? Получается что фиг сделаешь безопасное приложение...
Я конечно не являюсь специалистом по Security, но что-либо "запрятывать" в исходный код не нужно ни в managed, ни в unmanaged код — в его случае подобные запрятанные строки можно вытащить например dumpbin'ом. Что касается X509, он используется для безопасной передачи данных, чтобы по дороге их не утянули.
d4u>2. Разница есть. Моя программа просто собирает информацию о системе. Если кто-то может взть мою ЦП и подписать пакет, я его рассмотрю как "валидный" и информацию о нем помещу в БД. Т.е. можно подделывать ту самую информацию, которуя я собираю.
Помоему вы слишком параноидальны сертификаты нужны для аутентификации и установки SSL-соединения, а не проверки валидности передаваемых пользователем данных, кто например гарантирует что пользователь не вмешается в процесс формирования программой информации еще до подписания? Также вы его рассмотрите как валидный.
Re: Многократно поднятая тема: защита исполняемого кода от п
Здравствуйте, d4u, Вы писали:
d4u>Народ, кто действительно каким-то образом защищал свои .net приложения, поделитесь опытом! d4u>Насколько я понял,после прочтения MSDN Magazine, статей на cracklab и другого, запрятать внутри сполняемого кода строку подключения к базе данных — нереально. А если мне необходимо запрятать пароль на закрытый ключ сертификата X509, чтобы мое приложение-сервис могло подписывать свои сообщения серверу? Получается что фиг сделаешь безопасное приложение... d4u>Из всего изученного следует, что кроме обфускации графа управления и кода ничего не может остановить(точнее замедлить) крекера. Ну может еще NGen, хотя в моем случае он не прокатит, т.к. я использую такие прелести, как Remoting, Reflection. Как тогда быть??? Научите?
1. Ни строки подключения, ни пароли, ни криптографические ключи не хранят в коде программы. Для каждого из этих кейсов платформа .Net предлагает стандартные решения (protecteddataсертификатыстроки подключения).
2. Сокрытие кода, как известно, не улучшает безопасность программы. Наилучшую зашиту обеспечивают стандартизированные средства и алгоритмы, код которых открыт и всем известен.