Хранение зашифрованных данных в памяти - PullRequest
3 голосов
/ 27 февраля 2010

Я работаю с элементом управления listview, который сохраняет данные с использованием шифрования AES в файл. Мне нужно хранить данные каждого элемента в listview в классе std :: list std :: string. я должен просто хранить данные в зашифрованном виде в std :: list и расшифровывать в локальную переменную, когда это необходимо? или достаточно сохранить его только в зашифрованном виде?

Ответы [ 4 ]

6 голосов
/ 27 февраля 2010

Чтобы ответить на этот вопрос, вам нужно подумать, кто ваши злоумышленники (то есть, от кого вы пытаетесь скрыть данные?).

Для этой цели полезно, если вы работаете над простой моделью угроз (в основном: кого вы беспокоите, что вы хотите защитить, типы атак, которые они могут выполнять, и риски их).

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

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

0 голосов
/ 27 февраля 2010

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

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

0 голосов
/ 27 февраля 2010

Неясно, от какой атаки вы пытаетесь защищаться. Если злоумышленник имеет локальный доступ к системе, он может подключить к процессу отладчик, такой как OllyDBG, для наблюдения за его памятью. Атака будет состоять в том, чтобы установить точку останова при вызове AES, а затем наблюдать, как данные передаются и возвращаются, очень просто.

0 голосов
/ 27 февраля 2010

Будете ли вы расшифровывать один и тот же предмет более одного раза? Если вас не беспокоят атаки в памяти, другой проблемой может быть производительность.

Если у вас есть время, возможно, стоит написать свое решение, чтобы учесть обе ситуации. Поэтому, если вы решите кешировать зашифрованные данные, то в случае проблем с производительностью не так уж и сложно перейти на дешифрованное решение в оперативной памяти.

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