Оцените уместность способов защиты

Опыта ни в защите, ни в реверсинге нет, поэтому прошу оценить уместность решений:

1. Шифровать аппаратным алгоритмом значения параметров при передаче в метод. Внутри метода расшифровывать.

2. Шифровать аппаратным алгоритмом часть файла проекта, который приложение сохраняет/открывает.

На сколько сложно и то и другое будет обходиться потенциальным взломщиком?
Каких очевидных ошибок не допустить при реализации (.net) ?

Заранее спасибо.

Re: Оцените уместность способов защиты

Здравствуйте.

mamitko пишет:

Опыта ни в защите, ни в реверсинге нет, поэтому прошу оценить уместность решений:
1. Шифровать аппаратным алгоритмом значения параметров при передаче в метод. Внутри метода расшифровывать.
2. Шифровать аппаратным алгоритмом часть файла проекта, который приложение сохраняет/открывает.
На сколько сложно и то и другое будет обходиться потенциальным взломщиком?
Каких очевидных ошибок не допустить при реализации (.net) ?

В случае с .Net - приложениями в основном справедливы те же рекомендации по защите которые применяются и для Native - приложений (максимальное задействование потенциала электронного ключа, сложная и периодически обновляемая схема защиты, основанная на проверке и работе с ключом и.тд)
Однако основной рекомендацией все-таки будет использование автоматических средств защиты кода и обфускации, т.к. .Net является открытым для изучения языком.
Также если Вас интересует наша оценка применяемых Вами схем защиты, то разумнее будет написать нам письмо (почта: hotline@guardant.ru) с максимально подробным описанием логики Вашей защиты.

Re: Оцените уместность способов защиты

Антон Тихиенко пишет:

Здравствуйте.
Однако основной рекомендацией все-таки будет использование автоматических средств защиты кода и обфускации, т.к. .Net является открытым для изучения языком.

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

Сейчас использую "Выбирать защищаемые функции" -> "На основе профилирования".
На сколько я понимаю, не все функции, отмеченные галками (перечисленные в *.ipf-файле) попадут в этот контейнер(?)

Re: Оцените уместность способов защиты

Антон Тихиенко пишет:

Также если Вас интересует наша оценка применяемых Вами схем защиты, то разумнее будет написать нам письмо (почта: hotline@guardant.ru) с максимально подробным описанием логики Вашей защиты.

В дополнение по вопросу стойкости схемы защиты для .Net:

Как и было упомянуто ранее в целом надежность защиты для .Net-приложения в большей степени зависит от того выполняется ли защита и обфускация важных (для корректного функционирования приложения) методов автоматическими средствами защиты.

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

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

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

Re: Оцените уместность способов защиты

Антон Тихиенко пишет:

Также если Вас интересует наша оценка применяемых Вами схем защиты, то

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

Re: Оцените уместность способов защиты

mamitko пишет:

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

Да, такая возможность имеется и, как указанно в документации, инструментами для ее реализации являются утилиты ExclusionUtility и DotNetProfilerGUI.
Более подробно о том, как гарантированно защитить только выбранные методы, написано здесь.