Как запретить виртуальной машине Java создавать дамп при сбой / запись конфиденциальных данных на диск

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

Можно ли предпринять какие-либо шаги для снижения этих рисков? Этот вопрос относится к POSIX, но дает мне ответ для этих платформ. У меня была одна идея, не зависящая от платформы, которая включала установку UncaughtExceptionHandler ( как этот ) в класс, который перезаписывал бы конфиденциальные данные. Но как насчет того, чтобы память выгружалась? Что делать, если JVM дает сбой (например, ошибка сегментации) из-за ошибки JVM / JNI? Я знаю, что Linux может препятствовать передаче данных на диск, но есть ли код Java для этого кроссплатформенного? В основном меня беспокоит возможность восстановления данных на магнитных устройствах хранения, поэтому любая помощь приветствуется.

8
задан Community 23 May 2017 в 12:25
поделиться