Я пытаюсь найти способ для моего приложения хранить имя пользователя и пароль (которые должны быть получены позже в необработанном виде после дешифрования - хеширование не является вариантом). На первый взгляд, я подумал о некотором простом алгоритме шифрования.Сохранение пароля на машине в этом сценарии?
Однако большинство алгоритмов шифрования (даже те, которые используют SALT или PEPPER) являются ошибочными в том, что декомпиляция исполняемого файла C# может легко определить, что такое SALT и PEPPER, и как дешифровать коды. Это можно устранить, запутывая код, однако, в конечном счете, даже это может быть нарушено.
Я понимаю, что я могу вдаваться в крайности здесь. Однако мое приложение будет использоваться крупными компаниями по всему миру, а безопасность очень важна (о, и я также гипотетически интересуюсь решением).
Программа будет работать только в Windows 7 или более поздней версии.
Первоначально я просмотрел ProtectedData class в C#, что делает пароль защищенным для текущего пользователя. Тем не менее, я хочу, чтобы безопасность для текущей программы также (если возможно), так что другие программы, запущенные на одном и том же пользователе, не могут получить пароль.
Тогда, наконец, я понял, что Windows 7 и более поздние версии имеют диспетчер учетных данных на панели управления и что приложения могут взаимодействовать с этим (and so can C#).
Однако является ли Credentials Manager доступным для текущего пользователя и для текущей программы? Могут ли другие программы одного и того же пользователя получить доступ к учетным данным?
Если да, существует ли вообще способ обеспечения безопасности этих данных? Я верю, что в диспетчере учетных данных Windows 7 будет достаточно безопасным, но я просто обеспокоен тем, что другие приложения могут свободно принимать данные моего приложения.
Редактировать - возможно, следует упомянуть, что у меня есть сертификат подписи кода из StartSSL, если это применимо. Не уверен, как это поможет, но, может быть, у вас есть ключ.