首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android应用程序中保存私钥的安全方法

在Android应用程序中保存私钥的安全方法
EN

Security用户
提问于 2020-12-21 11:35:22
回答 1查看 5.7K关注 0票数 14

在Android应用程序中存储条形码签名的私钥最合适的方法是什么?也许这里的大多数专家会说-别这么做,因为它不安全.

但我想了解“不安全”的程度以及所提出的解决办法所面临的风险。

假设是商品智能手机。

我们可以不太频繁地交换钥匙。应用程序后端API可以根据需要设计。但是永久的互联网连接和服务器端的签名变体是不可能的。

EN

回答 1

Security用户

发布于 2020-12-21 15:40:23

所有安卓7+设备都配备了可信执行环境(TEE),这是谷歌应用授权的强制性要求。它是一个硬件支持密钥存储库,为加密块提供独立的存储和数据处理。在高通(QualcommSnap龙)和三星( Samsung )中,TEE是基于ARM Trustzone的。一些设备,如Pixel和iPhone,都有自己的离散TEE (谷歌的泰坦M和苹果的T2芯片),这被称为strongbox。离散三通比ARM Trustzone更加隔离,并且独立于所使用的SoC。

您可以使用提供程序API

密钥库中存储的每个密钥都可以设置以下参数:

  • 别名-用来识别密钥的。
  • 密钥大小(API 23)。
  • 目的-加密/解密(API 23)。
  • 加密模式、算法和填充(API 23)。
  • 在使用前,是否应该用密钥库对密钥进行身份验证?(API 23)
  • 在成功的身份验证(API 23)之后可以使用密钥的持续时间。
  • 新指纹注册的钥匙是否无效?(API 24)
  • 密钥存储库应该在执行加密操作之前要求解锁屏幕吗?(API 28)
  • 密钥应该由StrongBox硬件安全模块来保护吗?(API 28)

您还可以使用它加密用于登录的身份验证令牌,存储密码并加密加密应用程序的大敏感数据的密钥。

“密钥是否应该受到StrongBox硬件安全模块的保护?(API 28)”在总体安全级别上似乎非常重要。

对于android 9+,应用程序可以通过调用setIsStrongBoxBacked(true)setIsStrongBoxBacked(true)来设置将密钥存储在强盒中的首选项。如果它抛出StrongBoxUnavailableException,那么应用程序就会退回到硬件支持的密钥存储库。Strongbox不受SoC CPU中可能影响硬件支持的密钥存储库( keystore )的关键侧通道漏洞的影响。硬件支持的密钥存储系统的安全性落在了SoC:高通安全世界移动保险库漏洞泄露敏感数据的芯片制造商身上。

硬件安全最佳实践推荐强盒密钥管理器。该模块包含以下内容:

  • 它自己的CPU
  • 安全存储
  • 一个真正的随机数发生器。
  • 额外的机制,以防止包篡改和未经授权的副业应用程序。

Android密钥存储系统

您的关键身份验证有多安全? (过时,在android 10发布之前发布)

票数 31
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/242385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档