Я хотел бы безопасно хранить общий секретный ключ в Windows, но сделать этот ключ доступным для приложений, работающих под потенциально разными учетными записями пользователей. В OSX решение состоит в том, чтобы поместить ключ в системную связку ключей с соответствующим списком ACL, чтобы ограничить доступ к ключу только для различных приложений, которым требуется использование ключа.
В Windows безопасное хранилище (CryptProtectData()
и CryptUnprotectData()
) позволяет мне хранить секрет, зашифрованный для конкретного пользователя, но, похоже, не позволяет ограничить доступ к ключу для определенных процессов. Более того, невозможно использовать CryptProttectData
для защиты данных для доступа разных пользователей.
Кажется, мой единственный вариант - это служба Windows, которая (1) надежно хранит данные ключа, используя CryptProtectData()
, и (2) предоставляет данные ключа через конечную точку WCF, обрабатывая аутентификацию / авторизацию в моей службе. Это кажется довольно тяжелым (и подверженным ошибкам, чтобы получить право). Это мой единственный вариант?