Использование безопасной строки и ее сохранение

Таким образом.NET Framework предоставляет класс SecureString для безопасного хранения строк. Но чтобы прочитать информацию и поработать с ней, вы должны вернуть ее в стандартную строку. Посмотрите этот пример реализации.

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

редактировать

Цель этого вопроса состояла в том, чтобы обсудить методы, чтобы УМЕНЬШИТЬ площадь поверхности потенциальной атаки при использовании SecureStrings и затем работать со значениями. Не "почему" относительно "дубликата" ссылки.

1 ответ

Решение

При размещении содержимого SecureString обратно в String, вы вновь представляете проблемы использования строк, перечисленных здесь:

http://blogs.msdn.com/shawnfa/archive/2004/05/27/143254.aspx

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

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

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

Другие вопросы по тегам