Конфиденциальные данные в памяти - PullRequest
18 голосов
/ 07 января 2010

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

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

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

Ответы [ 4 ]

23 голосов
/ 07 января 2010

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

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

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

* Хорошо, есть классы программ, которые ДОЛЖНЫ беспокоиться. 99,99% от всех заявлений не делают, я держу пари, что ваши нет.

5 голосов
/ 07 января 2010

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

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

5 голосов
/ 07 января 2010

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

4 голосов
/ 07 января 2010

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

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