我正在研究如何在Android设备上安全存储敏感数据的主题。当然,没有100%安全的方法,我想尽可能地安全。
我已经读完the official recommendations。
仅作为示例,我有一个存储文本的应用程序(例如私人日记)。文本存储在一个XML文件中,该文件使用密钥加密(aes256),该密钥存储在Android KeyStore中。
这应该意味着数据已安全地存储在加密的xml文件中。 root用户仍然可以从KeyStore中访问密钥并对其进行解密,或者一旦应用程序解密了数据即可获取数据。
但是,这也意味着每个应用程序都使用相同的密钥。因此,我可以在手机上安装该应用程序,并使用密钥解密其他手机上的xml日记文件。
问题是,如何创建一个密钥或至少一个盐,这对于每个应用程序安装都是唯一的?
答案 0 :(得分:1)
Key Derivation Function KFS仅用于此
来自维基百科;
在密码学中,密钥派生函数(KDF)使用伪随机函数从诸如主密钥,密码或密码短语之类的秘密值中得出一个或多个秘密密钥。
您可以使用Argon2是Password Hashing Competition的赢家。
选择IMEI号码作为参数之一,用户密码和电话中的随机号码。