我正在研究如何在Android设备上安全存储敏感数据的主题。当然,没有100%安全的方法,我希望尽可能安全。
我已经通读了官方的建议。
举个例子,我有一个存储文本的应用程序(例如私人日记(。文本存储在一个xml文件中,该文件使用存储在Android KeyStore中的密钥进行加密(aes256(。
这意味着数据被安全地存储在加密的xml文件中。根用户仍然可以从KeyStore访问密钥并对其进行解密,或者在应用程序解密后获取数据。
然而,这也意味着每个应用程序都使用相同的密钥。因此,我可以在手机上安装该应用程序,并使用我的密钥解密其他手机的xml日记文件。
问题是,如何创建每个应用程序安装都唯一的密钥,或者至少创建salt?
密钥导出函数KFS仅用于此
来自维基百科;
在密码学中,密钥派生函数(KDF(使用伪随机函数从密钥值(如主密钥、密码或密码短语(派生一个或多个密钥。
您可以使用Argon2是密码哈希比赛的获胜者。
从手机中选择IMEI号码作为参数之一、用户密码和随机数字。