首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android上使用生物识别或应用程序密码保护私钥

在Android上使用生物识别或应用程序密码保护私钥
EN

Stack Overflow用户
提问于 2020-05-22 13:23:35
回答 1查看 364关注 0票数 1

对于一个将数据签名到服务器的应用程序,我正在研究如何保护用于签名的私钥。理想情况下,这个私钥的材料不应该暴露在应用程序中,签名应该在Android的可信执行环境(TEE)中完成。

该应用程序需要通过生物识别或应用密码来保护对密钥的访问。应用密码,而不是设备PIN/模式/密码,因为我可以对强度施加限制,而设备PIN/模式/密码可能很弱。

当添加另一个生物识别指纹/人脸时,应用程序会提醒用户,并要求应用密码对数据进行签名,并允许重新启用生物特征。应用密码将作为后盾,并授权那些不想在自己的设备上使用生物识别技术的用户。

目标平台将是Android 8及以上版本。

我从这里了解到,使用生物识别技术保护关键材料是(相对地)直接的:

  • 使用keystore实例"AndroidKeyStore“创建密钥
  • 使用setUserAuthenticationRequired(true)使用生物识别提示保护私钥。
  • 在密钥上使用setUserAuthenticationValidityDurationSeconds(-1),以避免使用(潜在的弱)设备模式/密码/引脚访问密钥。
  • 时,使用setInvalidatedByBiometricEnrollment(true)使密钥无效 另一个指纹/人脸被注册到生物识别装置中。
  • 最后,使用CryptoObject回调中的onAuthenticationSucceded对数据进行签名。

关键材料从来没有直接暴露在应用程序和坐在很好地保护在T恤上。

现在,对于使用应用程序密码保护私钥的部分,我被击中了:有没有办法保护密钥--保护密钥(因此我们有一个非生物特征备份)--具有类似的保护特性,即私钥材料保留在安全的TEE KeyStore中,并且不暴露于应用程序中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 16:14:39

你不能这么做,因为那个密匙店没有密码。您唯一的选择是添加两个密钥(它们可能需要相同的密钥材料);一个使用setUserAuthenticationRequired(true),另一个使用setUserAuthenticationRequired(false) ...else,您总是需要提供生物认证才能继续进行,因为一旦设置了这个标志就不是可选的。

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

https://stackoverflow.com/questions/61956110

复制
相关文章

相似问题

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