Защитите конфиденциальные данные в памяти с помощью C#C#

Место общения программистов C#
Ответить
Anonymous
 Защитите конфиденциальные данные в памяти с помощью C#

Сообщение Anonymous »

У меня есть приложение C#, которое инициализирует некоторые переменные с конфиденциальными данными. Они не являются паролями, но мы считаем их конфиденциальными. Все значения переменных, которые я хочу защитить, имеют строковый тип.
Я пытаюсь найти механизм (я знаю, что не существует 100%-ного механизма), который позволит мне защитить значения переменных в памяти или, по крайней мере, чтобы злоумышленникам было немного сложнее их прочитать. Таким образом, я могу защитить конфиденциальные данные в памяти моего приложения и сделать их более «нечитаемыми» для любого другого приложения, которое может отслеживать, выгружать или читать мое приложение во время выполнения.
Я вижу, что такое существует. API защиты данных Microsoft (DPAPI), у которого есть класс ProtectedMemory, который предлагает два метода: защитить и снять защиту, вот пример.
В любом случае, похоже, что MS перестала использовать ProtectedMemory, как какой-то парень говорит здесь, поскольку это бесполезно.
Другие люди вместо этого предлагают хэшировать их с помощью хорошей функции (например, SHA1/2) и сохранять дайджест.
Я бы мне нравится использовать частные свойства (поскольку они используются только внутри моего класса) вместо простой переменной, свойство set которой шифрует ее в памяти, а свойство get расшифровывает ее. Как показано ниже:
public static MyClass
{
private string MyVariable
{
get
{
return Encoding.UTF8.GetString(ProtectedMemory.Unprotect(_myVariable, MemoryProtectionScope.SameLogon));
}
set
{
_myVariable = Encoding.UTF8.GetBytes(value);
ProtectedMemory.Protect(_myVariable, MemoryProtectionScope.SameLogon);
}
}

private byte[] _myVariable;
}
< /code>
и то же самое для остальной части моих строковых переменных. < /p>
Я хотел сделать то же самое, что и этот парень в его посте, но некоторые люди там говорят Перемещение защищенной памяти из частного поля поддержки в свойство не поможет (я не уверен, на что он ссылается, если использование свойства не защищено еде?). Не могли бы вы также подтвердить меня, если использование частного свойства для моих переменных будет защищено в памяти или нет? < /P>
Так как же я могу это сделать? Может ли кто -нибудь предоставить простой фрагмент кода? Процесс шифрования/дешифрования должен быть относительно быстрым.
Я не хочу использовать какую-либо стороннюю помощь, только справка ОС и .NET Framework.

Подробнее здесь: https://stackoverflow.com/questions/759 ... ng-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»