Android 中的 SharedPreferences 加密
Encryption of SharedPreferences in Android
与仅存储 SharedPreferences 项目相比,存储加密的 SharedPreferences 项目有什么附加价值。
我只认为加密是一种缓解技术,这样用户就无法轻易操纵 XML 文件。
问题:加密还是明文 SharedPreferences 存储?
加密的有用性取决于加密密钥的来源。
如果加密密钥来自用户(例如,从用户输入的密码派生),那么该值是任何试图读取 SharedPreferences
XML 中的数据的人都会需要该密码或满足于尝试暴力解密。
如果加密密钥不是来自用户,则该值会降低。攻击者(包括用户)可以尝试找到密钥并找到加密算法。两者都必须存在于设备上,否则应用程序无法解密数据(更不用说加密了)。在大多数简单的情况下,比如密钥作为常量被烘焙到应用程序中,专家不需要花费大量的工作就可以找到密钥,找到算法,并能够解密数据。
与仅存储 SharedPreferences 项目相比,存储加密的 SharedPreferences 项目有什么附加价值。
我只认为加密是一种缓解技术,这样用户就无法轻易操纵 XML 文件。
问题:加密还是明文 SharedPreferences 存储?
加密的有用性取决于加密密钥的来源。
如果加密密钥来自用户(例如,从用户输入的密码派生),那么该值是任何试图读取 SharedPreferences
XML 中的数据的人都会需要该密码或满足于尝试暴力解密。
如果加密密钥不是来自用户,则该值会降低。攻击者(包括用户)可以尝试找到密钥并找到加密算法。两者都必须存在于设备上,否则应用程序无法解密数据(更不用说加密了)。在大多数简单的情况下,比如密钥作为常量被烘焙到应用程序中,专家不需要花费大量的工作就可以找到密钥,找到算法,并能够解密数据。