2015-01-05 2 views
5

Я занимаюсь хранением некоторых конфиденциальных данных в приложении, над которым я работаю. Я смотрел класс 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 больше ??

+0

Я имею в виду, это может сделать больше смысла для моих целей использовать что-то вроде 'RijndaelManaged вместо этого. По крайней мере, то, что не привязано непосредственно к конкретному пользователю. Вопрос все еще стоит, будет ли 'ProtectedData' работать на нескольких рабочих станциях с одним и тем же зарегистрированным пользователем? –

+0

Я бы сказал, 'ProtectedData' на самом деле не предназначен для использования на нескольких машинах. это больше для защиты данных «в памяти». Вам нужно использовать хороший сервис Crypto для шифрования, которое вы хотите отправить по кабелю. и я сомневаюсь, что он будет работать над мульти. потому что это не .NET - он использует DPAPI. –

ответ

4

Доступен ли пользователь abc.txt пользователю A на планшете?

«Для DPAPI корректно работать, когда он использует перемещаемые профили, пользователь домена должен быть зарегистрирован только на одном компьютере в домене. Если пользователь хочет войти на другой компьютер, который в домена, пользователь должен выйти из системы на первом компьютере до того, как пользователь войдет во второй компьютер. Если пользователь одновременно входит в систему на нескольких компьютерах, вероятно, что DPAPI не сможет расшифровать существующие зашифрованные данных правильно ". - http://support.microsoft.com/kb/309408

Доступен ли пользователь abc.txt для пользователя A? На одной машине после изменения пароля пользователь все равно должен иметь доступ к ранее зашифрованным файлам. Я понимаю, что ранее созданные ключи все еще хранятся в списке, чтобы это разрешить. (Было бы дорогостоящей операцией, чтобы расшифровывать и повторно шифровать все ранее сохраненные данные каждый раз, когда пользователь меняет свой пароль, поэтому вместо этого они просто сохраняют старые ключи.)

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

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

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

+0

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

3

API защиты данных (DPAPI) работает правильно с roaming profiles. Таким образом, это будет охватывать тот факт, что пользователь может расшифровать данные по сети. Использование IsolationStorage используется для хранения данных, которые применяются к нескольким приложениям и не привязаны к какому-либо конкретному приложению, таким как имя пользователя или информация о лицензии.

Примера для создания изолированного перемещаемого магазина:

using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null)) 
    { 
     isoStore.CreateDirectory("TopLevelDirectory"); 
     isoStore.CreateFile("abc.txt"); 
    } 

Примера, чтобы получить изолированный роуминг магазин:

IsolatedStorageFile isoFile = 
IsolatedStorageFile.GetStore(IsolatedStorageScope.User | 
    IsolatedStorageScope.Assembly | 
    IsolatedStorageScope.Roaming, null, null); 
+0

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

+0

Доступ к изолированному хранилищу также ограничен в соответствии с идентификатором, связанным с доменом и сборкой приложения, или только с сборкой. Прочтите документы MSDN. Все объяснено очень хорошо – Sievajet

Смежные вопросы