Я занимаюсь хранением некоторых конфиденциальных данных в приложении, над которым я работаю. Я смотрел класс ProtectedData
, предоставляемый Microsoft, и выглядит довольно просто. Однако у меня есть несколько вопросов относительно того, как это работает.Работает ли ProtectedData на нескольких компьютерах?
Во-первых, я вижу, что он использует «учетные данные пользователя» для генерации ключа шифрования. Я видел в документации, что только текущий пользователь сможет расшифровать данные. Это не проблема, я просто хочу знать, зарегистрирован ли тот же самый пользователь на другой машине, смогут ли они расшифровать данные? Я планирую, что сохраненная информация будет передана OneDrive, поэтому, надеюсь, она будет доступна на любом устройстве, которое использует тот же пользователь.
например:
User A logs in on desktop computer, saves encrypted file abc.txt
User A then logs in on tablet, loads file abc.txt
ли abc.txt
доступны Пользователь A на планшете?
Во-вторых, что происходит после изменения пользователем пароля? Мне кажется, что тогда ключ шифрования будет отличаться и не приведет к тому, что дешифрование данных, которые использовали предыдущий ключ шифрования, больше не может быть восстановлено?
например:
User A logs in on desktop computer, saves encrypted file abc.txt
User A changes password
User A logs in on desktop computer, loads file abc.txt
ли abc.txt
доступны Пользователь A больше ??
Я имею в виду, это может сделать больше смысла для моих целей использовать что-то вроде 'RijndaelManaged вместо этого. По крайней мере, то, что не привязано непосредственно к конкретному пользователю. Вопрос все еще стоит, будет ли 'ProtectedData' работать на нескольких рабочих станциях с одним и тем же зарегистрированным пользователем? –
Я бы сказал, 'ProtectedData' на самом деле не предназначен для использования на нескольких машинах. это больше для защиты данных «в памяти». Вам нужно использовать хороший сервис Crypto для шифрования, которое вы хотите отправить по кабелю. и я сомневаюсь, что он будет работать над мульти. потому что это не .NET - он использует DPAPI. –