Я работаю над менеджером паролей Java, и у меня в настоящее время есть все данные пользователя, будучи дешифрованным из файла, сидя без дела в памяти в любом случае и сохраненный явно как Строка для отображения в UI и т.д.
Действительно ли это - угроза безопасности всегда? Я особенно обеспокоен кем-то "дамп" или чтение памяти компьютера в некотором роде и нахождение явных данных пользователя.
Я рассмотрел хранение всех чувствительных частей данных (пароли) зашифрованный и только дешифрование каждой части по мере необходимости и уничтожение после этого..., но я не прошел бы и изменил бы много кода суеверия.
Если ваш противник имеет возможность запускать произвольный код на вашей целевой машине (с правами отладчика, необходимыми для дампа образа процесса), то вы все в порядке.
Если ваш противник имеет возможность точно считывать память на расстоянии (т.е. TEMPEST), то вы все равно окажетесь в полной заднице.
Защитите данные при транспортировке и хранении (на проводе и на диске), но не беспокойтесь* о данных в памяти.
*Хорошо, есть классы программ, о которых нужно беспокоиться. 99.99% всех приложений - нет, я ставлю на то, что ваша - нет.
Теоретически, вы не можете полностью защитить что-либо в памяти. Некоторая группа там смогла глубоко заморозить чипы памяти и прочитать их содержимое через 4 часа после того как компьютер был выключен. Даже без того, чтобы не идти на такие длины, отладчик и точка останова в нужное время сделают трюк.
Практически, однако, просто не держите чистый текст в памяти дольше, чем это абсолютно необходимо. До него доберется достаточно решительный атакующий, но хорошо.
Да, конечно, так и есть, тем более, что вы довольно тривиально можете отлаживать приложения. Большинство кода, имеющего дело с шифрованием и опасными данными, использует вместо строк char-массивы. Используя char-массивы, можно перезаписать память с чувствительными деталями, ограничив время жизни конфиденциальных данных.
Стоит отметить, что операционная система может принять решение о замене памяти на диск, где она может оставаться довольно долго. Конечно, для чтения файла подкачки требуются сильные приватности, но кто знает? Ноутбук пользователя может быть украден ...