Android Keystore是否足以保存用户名/密码?

时间:2018-05-23 20:07:34

标签: java android security xamarin keystore

我想在应用中存储我的用户用户名密码。

我的疑问/恐惧是我已经阅读了一些类似于this的答案,这些答案解释了恶意用户是否获得了对设备的物理访问权限,他可以在共享中以纯文本格式读取用户名/密码偏好文件。 KeyStore比这更安全,我不必担心。

如果有人想知道为什么我正在尝试使这个HIPPA兼容的额外预防措施。并且无法找到任何关于使用何种加密或者是否可以以纯文本和逆向工程存储的方式。

除了将其用作key/value存储选项之外,我应该在存储之前加密/解密它们吗?什么是最好的方法?

欢迎使用Keystore上有关如何实施安全性的Google文档/视频的任何链接。

这是我目前采取的方法。借口C#我在Xamarin中实现了这一点。

private KeyStore _keyStore;
_keyStore = KeyStore.GetInstance(KEYSTORE_KEY);
_keyStore.Load(null);

KeystoreEntry entry = new KeystoreEntry(Username, Password);
_keyStore.SetEntry(ServerURL, entry, null);

KeystoreEntry.cs

public class KeystoreEntry : Java.Lang.Object, IEntry {

    EntryAttribute _usernameAttribute;
    EntryAttribute _passwordAttribute;

    public string Username {
        get {
            return _usernameAttribute.Value;
        }
    }

    public string Password {
        get {
            return _passwordAttribute.Value;
        }
    }

    public KeystoreEntry(string username, string password) {
        _usernameAttribute = new EntryAttribute("Username", username);
        _passwordAttribute = new EntryAttribute("Password", password);
    }

    internal class EntryAttribute : Java.Lang.Object, IEntryAttribute {

        private string _name;
        private string _value;

        public string Name {
            get { return _name; }
            set { _name = value; }
        }

        public string Value {
            get { return _value; }
            set { _value = value; }
        }

        public EntryAttribute(string name, string value) {
            _name = name;
            _value = value;
        }
    }
}

正如你可以看到一个非常简单的方法,只是强调它的安全性。

0 个答案:

没有答案