1

完整问题:当从设备中删除已注册的(一个)指纹并且存储在 TEE 中的相关加密密钥(特定于应用程序)永久失效时,加密的应用程序特定数据会发生什么?

我不是 Android 开发人员,所以我没有太多的编码知识。我正在经历 Android Cryptography 的工作,尤其是本地身份验证机制,并以这种方式理解它:

简而言之:来自OWASP 移动安全测试指南的以下信息:

  1. 应用程序可以使用用户的指纹来解锁自己(在一段时间不活动之后)。
  2. 密码学应支持此身份验证机制,以证明其强大/安全。
  3. 我们需要创建一个加密密钥,该密钥应使用属性 setUserAuthenticationRequired(true) 进行设置,以便仅在指纹或设备 PIN 验证后使用。
    1. 该密钥可用于对特定于应用程序的数据进行签名/加密解密,从而使整个过程实现加密原语。

我脑海中的麻烦在于Android文档中的以下内容:

这仅发生在仅当用户已通过身份验证时才被授权使用的密钥。一旦安全锁定屏幕被禁用(即,重新配置为无、滑动或其他不验证用户身份的模式)或当安全锁定屏幕被强制重置(例如,由设备管理员),此类密钥将永久且不可逆转地失效。此外,配置为要求对每个密钥进行用户身份验证的密钥也将在注册新指纹或不再注册指纹时永久失效。

问题是,如果我的设备注册了指纹并且我的应用程序设置了指纹身份验证,那么在这种情况下,将创建一个密钥并用于执行加密操作(比如加密解密)。然后,此加密数据将存储在应用程序的本地存储中。在某种情况下,根据 Android 文档,用户从设备中删除他的指纹时,密钥将失效。在这种情况下,我的应用程序的加密数据将如何被解密以供进一步使用?因为你需要相同的密钥来解密数据,现在已经不可逆转地失效了。

我知道回退机制,如果未找到指纹,Android 将回退到 PIN 或模式设备身份验证。但这又不会创建新密钥,不是吗?或者提供对指纹身份验证使用的相同旧密钥的访问权限(因为它已失效)。

那么,App 的数据会发生什么变化呢?它会被删除吗?用户是否必须重新开始,设置帐户和偏好?

4

0 回答 0