在Android应用程序中存储条形码签名的私钥最合适的方法是什么?也许这里的大多数专家会说-别这么做,因为它不安全.
但我想了解“不安全”的程度以及所提出的解决办法所面临的风险。
假设是商品智能手机。
我们可以不太频繁地交换钥匙。应用程序后端API可以根据需要设计。但是永久的互联网连接和服务器端的签名变体是不可能的。
发布于 2020-12-21 15:40:23
所有安卓7+设备都配备了可信执行环境(TEE),这是谷歌应用授权的强制性要求。它是一个硬件支持密钥存储库,为加密块提供独立的存储和数据处理。在高通(QualcommSnap龙)和三星( Samsung )中,TEE是基于ARM Trustzone的。一些设备,如Pixel和iPhone,都有自己的离散TEE (谷歌的泰坦M和苹果的T2芯片),这被称为strongbox。离散三通比ARM Trustzone更加隔离,并且独立于所使用的SoC。
您可以使用提供程序API
密钥库中存储的每个密钥都可以设置以下参数:
您还可以使用它加密用于登录的身份验证令牌,存储密码并加密加密应用程序的大敏感数据的密钥。
“密钥是否应该受到StrongBox硬件安全模块的保护?(API 28)”在总体安全级别上似乎非常重要。
对于android 9+,应用程序可以通过调用setIsStrongBoxBacked(true)
setIsStrongBoxBacked(true)
来设置将密钥存储在强盒中的首选项。如果它抛出StrongBoxUnavailableException
,那么应用程序就会退回到硬件支持的密钥存储库。Strongbox不受SoC CPU中可能影响硬件支持的密钥存储库( keystore )的关键侧通道漏洞的影响。硬件支持的密钥存储系统的安全性落在了SoC:高通安全世界移动保险库漏洞泄露敏感数据的芯片制造商身上。
您的关键身份验证有多安全? (过时,在android 10发布之前发布)
https://security.stackexchange.com/questions/242385
复制相似问题