(Почему) я должен использовать запутывание?

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

Тем не менее, я, кажется, единственный в нашей команде разработчиков, который чувствует это, поэтому я либо ошибаюсь, либо мне просто нужны убедительные аргументы. Наш продукт использует .NET, и один разработчик предложил .NET Reactor (который, кстати, был предложен в этом ТАК что нить тоже ).

  

.NET Reactor полностью останавливает любую декомпиляцию, смешивая любую чистую сборку .NET (написанную на C #, VB.NET, Delphi.NET, J #, MSIL ...) с собственным машинным кодом.

Итак, в основном, вы отбрасываете все преимущества байт-кода за один раз?

Есть ли хорошие инженерные преимущества для запутывания?

8 голосов | спросил Sören Kuklau 28 PM00000010000004331 2008, 13:08:43

5 ответов


0

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

ответил John Sibly 28 PM00000020000004731 2008, 14:26:47
0

Вы спрашивали по инженерным причинам, так что это не является строго говоря ответом на вопрос. Но я думаю, что это правильное разъяснение.

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

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

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

Как сказал GateKiller, запутывание не помешает определенной команде декомпилировать команду, но (и это зависит от того, какой у вас продукт), насколько решительно команда может вас атаковать?

Итак, это не техническое решение социальной проблемы, это техническое решение, которое добавляет одно влияние к сложной социальной структуре.

ответил Leigh Caldwell 28 PM00000010000001131 2008, 13:28:11
0

Одно потенциальное инженерное преимущество состоит в том, что в некоторых случаях запутывание может создавать меньшие исполняемые файлы или другие артефакты, например запутывание javascript приводит к уменьшению размера файлов (поскольку все переменные называются «a» и «b» вместо «descriptiveNameOne», а весь пробел удаляется и т. д.). Это приводит к более быстрому времени загрузки веб-страниц, которые используют запутанный JavaScript. Очевидно, что это не относится (в той же степени) к миру .NET, но это пример ситуации, в которой есть прямое инженерное преимущество.

ответил John 28 PM00000010000003531 2008, 13:13:35
0

Основная причина использования запутывания - защита интеллектуальной собственности, как вы указали. Как правило, для бизнеса гораздо выгоднее приобрести продукт для запутывания, например .NET Reactor, чем пытаться юридически защищать ваши авторские права.

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

ответил John Hunter 28 PM00000010000001831 2008, 13:17:18
0

Используйте шифрование для защиты информации в пути.

Используйте запутывание для защиты информации, пока ваша программа все еще имеет ее.

ответил Jorge Córdoba 28 PM00000010000001231 2008, 13:41:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132