Шифрование данных приложения Windows, которое можно расшифровать только тем же приложением с цифровой подписью - PullRequest
1 голос
/ 15 апреля 2019

Существует ли Windows API (предпочтительно с управляемой оболочкой .NET), который позволяет шифровать данные и дешифровать одни и те же данные только при вызове из того же приложения с цифровой подписью?

Например, у меня есть кэшированный токен безопасности для настольного приложения, которое отправляется на сервер. Этот токен используется при входе в систему, когда пользователь проверяет «Запомнить меня». Я хотел бы зашифровать этот токен, который приложение хранит таким образом, что только мое приложение, зашифровавшее его, может расшифровать его. У меня не может быть ключа / iv, жестко запрограммированного в приложении. Каким-то образом ОС (Windows) должна поддерживать что-то вроде этого, где она использует цифровую подпись в исполняемом файле точки входа для проверки и разрешения дешифрования.

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

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

1 Ответ

1 голос
/ 16 апреля 2019

Я не думаю, что настольные приложения Windows могут это сделать. Приложения из Магазина Windows, вероятно, могут, я думаю, что у них есть кое-что для безопасности установки.

Вероятнее всего, для настольных компьютеров класс ProtectedData из .NET. Укажите DataProtectionScope.CurrentUser, чтобы использовать предоставленный ОС криптографический ключ, специфичный для учетной записи пользователя.

Не забудьте про optionalEntropy аргумент. Я обычно использую буфер из random.org, который я жестко закодировал в источнике.

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