Есть ли способ заблокировать класс от размышлений? - PullRequest
4 голосов
/ 09 февраля 2012

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

Раньше я использовал отражение, чтобы обойти частные переменные и методы (не горжусь этим), поэтому я знаю, что это можно сделать. Есть ли способ полностью запретить рефлексии работать на весь класс - или даже на его части, или это идет вразрез с java - точнее, с точки зрения API безопасности?

Ответы [ 2 ]

10 голосов
/ 09 февраля 2012

Это называется безопасность по неизвестности - если подробности вашего известного алгоритма шифрования сделают его небезопасным, он уже небезопасен.

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

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

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

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

2 голосов
/ 09 февраля 2012

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

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