Что можно сделать для защиты файлов JAR, кроме обфускации? - PullRequest
5 голосов
/ 06 сентября 2011

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

Помимо обфускации кода, что можно сделать для защиты файла класса? Является ли зашифрованный загрузчик классов все еще мифом?

Ответы [ 3 ]

9 голосов
/ 06 сентября 2011

В предыдущей компании у нас были такие вопросы, в основном из-за управленческой паранойи.

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

По поводу запутывания: его можно считать первым уровнем защиты, поскольку делает код Java полностью нечитаемым. Хорошие обфускаторы, такие как ProGuard , используют запрещенные символы в именах переменных / методов, предотвращая выполнение декомпилированного кода. Теперь можно считать это достаточно хорошей мерой безопасности, поскольку декомпиляция кода не так же проста, как запуск Jad или других декомпиляторов и наличие отлично работающего кода Java. Однако можно понять большинство алгоритмов, представленных в таком коде (так как читаемый код сильно отличается от компилируемого кода).

Дополнительные меры безопасности включают в себя:

  • Запуск конфиденциального кода на сервере с помощью какого-либо веб-сервиса для отправки результатов и получения результатов (с помощью REST / SOAP / YouNameIt)
  • Загрузка конфиденциального кода с удаленного сервера с использованием HTTPS и (возможно) дополнительных уровней безопасности.

Из этих двух мер безопасности я бы честно выбрал первый. Действительно, второе может быть сорвано обычными атаками HTTPS (человек посередине, ведение журнала прокси и т. Д., ...) и имеет неудобство major , связанное с переносом кода на ненадежное оборудование, что это возможно заимствование оттуда.

1 голос
/ 19 сентября 2011

В принципе, есть четыре вещи, которые вы можете сделать со своим байт-кодом для защиты от декомпиляторов Java:

  • обфускация
  • программное шифрование
  • аппаратное шифрование
  • нативная компиляция

все рассмотрено в моей статье Защита вашего Java-кода - через обфускаторы и не только

0 голосов
/ 06 сентября 2011

Вы можете написать весь свой код с помощью native.Обратное проектирование может быть сделано в любом случае.Но это сложнее.

Хорошо, это не строго решение Java.

Как сказал nfechner в комментарии, напишите приложение с открытым исходным кодом.

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