Проблема заключается в следующем: мне нужно убедиться, что после того, как определенное шифрование данных завершено, нет способа извлечь ключ из паролей/производных из памяти приложений (существующие пароли/ключи были отменены). Я знаю, что это непростая задача. Я думаю, что я все еще могу сделать это в основной части приложения, которое я реализую сам.Очистка памяти после шифрования данных с использованием JCA/JCE
Но как насчет вызовов внешних библиотек, подобных тем, которые реализуют JCA/JCE, я не могу делать шифрование без (скажем, Bouncy Castle). Насколько я уверен, что библиотека не создает клоны или другие объекты, о которых я ничего не знаю, это могло бы открыть пароль после того, как кто-то выгрузит память, чтобы проанализировать ее с линии.
Могу я просто сказать библиотеке, чтобы очистить память, которую он использовал? Или, может быть, есть другие способы решения этой проблемы?
Этот тип библиотеки должен использовать 'char []' вместо строк (проверьте его, если у вас есть доступ к исходному коду). Это позволяет очистить его содержимое. Следовательно, вам все равно, останется ли этот символ [char []] в памяти. –
Спасибо, скорее всего, это будет так. Но мне нужно хотя бы знать, что такие объекты созданы, чтобы переопределить содержимое. Без спецификации библиотеки этот случай выглядит безнадежным для меня. –
К сожалению, в настоящее время это практически невозможно. Надеюсь, ситуация изменится в Java 9: https://bugs.openjdk.java.net/browse/JDK-6387296 – ntoskrnl