每个应用安装生成唯一的加密密钥或盐

时间:2018-11-07 11:27:47

标签: android encryption aes keystore key-management

我正在研究如何在Android设备上安全存储敏感数据的主题。当然,没有100%安全的方法,我想尽可能地安全。

我已经读完the official recommendations

仅作为示例,我有一个存储文本的应用程序(例如私人日记)。文本存储在一个XML文件中,该文件使用密钥加密(aes256),该密钥存储在Android KeyStore中。

这应该意味着数据已安全地存储在加密的xml文件中。 root用户仍然可以从KeyStore中访问密钥并对其进行解密,或者一旦应用程序解密了数据即可获取数据。

但是,这也意味着每个应用程序都使用相同的密钥。因此,我可以在手机上安装该应用程序,并使用密钥解密其他手机上的xml日记文件。

问题是,如何创建一个密钥或至少一个盐,这对于每个应用程序安装都是唯一的?

1 个答案:

答案 0 :(得分:1)

Key Derivation Function KFS仅用于此

来自维基百科;

  

在密码学中,密钥派生函数(KDF)使用伪随机函数从诸如主密钥,密码或密码短语之类的秘密值中得出一个或多个秘密密钥。

您可以使用Argon2Password Hashing Competition的赢家。

选择IMEI号码作为参数之一,用户密码和电话中的随机号码。