Насколько PasswordVault защищает и изолирует данные?
Я рассматриваю возможность использования PasswordVault для хранения конфиденциальных данных в моем приложении Windows Store.
Я уже провел некоторые фундаментальные исследования по изучению защиты, которую обеспечивает этот класс. Я написал два примера приложений: первое записывает немного данных в хранилище, а второе пытается получить эти данные.
Похоже, что хотя второе приложение использует тот же ключ, что и первое приложение, использованное для сохранения данных; второе приложение не может получить эти данные. Это хорошо.
Кто-нибудь знает, как PasswordVault изолирует данные в одном приложении? Чтобы другое приложение могло получить данные PasswordVault моего приложения, оно должно было бы выдавать себя за sid моего приложения?
Для ясности:
App1 делает это
const string VAULT_RESOURCE = "App1 Credentials";
var vault = new PasswordVault();
vault.Add(new PasswordCredential(VAULT_RESOURCE, "Foo", "Bar"));
App2 делает это
var vault = new PasswordVault();
const string VAULT_RESOURCE = "App1 Credentials";
try
{
var creds = vault.FindAllByResource(VAULT_RESOURCE).FirstOrDefault();
if (creds != null)
{
UserName = creds.UserName;
Password.Text = vault.Retrieve(VAULT_RESOURCE, "Foo").Password;
}
}
catch (COMException)
{
// this exception likely means that no credentials have been stored
}
Теперь App2 получает исключение, указывающее, что таких учетных данных не существует. Это хорошо. Что я хочу понять, так это то, в какой степени App2 потребуется, чтобы получить данные, хранящиеся в App1.