Чувствительные данные в памяти

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

Является ли это угрозой безопасности? Я особенно обеспокоен тем, что кто-то "демпинг" или каким-то образом считывает компьютерную память и находит голые данные пользователя.

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

Ответы

Ответ 1

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

Если ваш противник имеет возможность точно читать память на расстоянии (т.е. TEMPEST), вы все ввернуты.

Защитите данные в пути и в памяти (на проводе и на диске), но не беспокойтесь * о данных в памяти.

* Хорошо, есть классы программ, которые нужно беспокоиться. 99,99% всех приложений не делают, я делаю ставки на вас.

Ответ 2

Да, это конечно, тем более, что вы довольно тривиально можете отлаживать приложение. В большинстве случаев, когда шифрование и небезопасные данные используют массивы char вместо строк. Используя массивы char, вы можете переписать память на конфиденциальные данные, ограничивая время жизни конфиденциальных данных.

Ответ 3

В теории вы не можете полностью защитить что-либо в памяти. Некоторым группам удалось заморозить чипы памяти и прочитать их содержимое через 4 часа после выключения компьютера. Даже не доходя до такой длины, отладчик и точка останова в нужный момент будут делать трюк.

Практически, однако, просто не держите открытый текст в памяти дольше, чем это абсолютно необходимо. Определенный достаточно атакующий достигнет этого, но хорошо.

Ответ 4

Стоит отметить, что ОС может решить заменить память на диск, где она может оставаться довольно долгое время. Конечно, чтение файла подкачки требует сильных привилегий, но кто знает? Пользовательский ноутбук может быть украден...