我正在阅读有关存储秘钥(用于加密/解密数据)的内容,似乎没有办法实现。只能增加攻击者实现此操作的难度。
是真的吗?
目前我了解到的:
存储在共享首选项(私有模式)中 - 获取root权限的手机可以检索它。
使用NDK C / C ++本地代码创建.so文件 - 很难反编译,但是可以调用此.so文件并检索它。
使用Web服务器存储密钥看起来毫无用处,如果必须发送凭据,则恶意软件可以记录按键。
我太过多疑吗?
我正在阅读有关存储秘钥(用于加密/解密数据)的内容,似乎没有办法实现。只能增加攻击者实现此操作的难度。
是真的吗?
目前我了解到的:
存储在共享首选项(私有模式)中 - 获取root权限的手机可以检索它。
使用NDK C / C ++本地代码创建.so文件 - 很难反编译,但是可以调用此.so文件并检索它。
使用Web服务器存储密钥看起来毫无用处,如果必须发送凭据,则恶意软件可以记录按键。
我太过多疑吗?
为什么不使用Android Keystore?它是专门为此目的设计的https://developer.android.com/training/articles/keystore.html
Android Keystore系统让您将加密密钥存储在容器中,使其更难从设备中提取
与共享首选项或私有文件(如提取预防或密钥使用授权)相比,它具有明显的优势。我不认为在服务器上存储私有密钥是一个好主意。
安全特性
Android Keystore系统保护密钥材料免受未经授权的使用。首先,Android Keystore通过防止应用程序进程和整个Android设备从密钥材料中提取密钥材料来减轻密钥材料在Android设备之外的未经授权的使用。其次,Android KeyStore通过让应用程序指定其密钥的授权用途,然后在应用程序进程之外强制执行这些限制,来减轻在Android设备上未经授权的密钥材料的使用。
在一些带有专用硬件的设备上,它是在其上实现的。作为程序员,您可以知道密钥是否受到硬件保护。
这个概念类似于iOS的KeyChain,但与iOS KeyChain可以存储密码、生成和导入加密密钥不同,Android KeyStore仅允许应用程序生成加密秘密密钥(没有导入功能)。