我已经研究了谷歌提供的Android指纹示例。
https://github.com/googlesamples/android-FingerprintDialog
由于我对安全标准不太了解,因此我无法理解以下内容:
- 为什么我们需要使用Keystore、key、CryptoObject等?简单来说,我们可以要求指纹管理器对用户进行身份验证,并且它只需返回状态(成功/失败)即可。
- 每次身份验证时是否需要生成新密钥?
我已经研究了谷歌提供的Android指纹示例。
https://github.com/googlesamples/android-FingerprintDialog
由于我对安全标准不太了解,因此我无法理解以下内容:
setUserAuthenticationRequired(boolean)
的方法,该方法管理获取仅在用户之前通过指纹进行身份验证的密钥有效。CryptoObject
的唯一用途是知道自上次用户通过指纹进行身份验证以来是否添加了新指纹。这肯定不是唯一的用途。仅仅监听 onAuthenticationSucceeded
并将其作为是否允许用户执行某些操作的条件(true
/false
)并不提供特别强的安全性。 - Michael你的一个问题的答案:
我们将创建一个带有别名的密钥,并使用别名检索密钥。别名是密钥的键。应用沙盒中存储别名列表。在尝试使用相同别名生成密钥的后续尝试中,它将检索密钥。
因此,原始图像和处理后的指纹特征不得在不受信任的内存中传递。所有这些生物识别数据都需要在传感器硬件或可信内存中进行安全保护。(TEE内部的内存被视为可信内存;TEE外部的内存被视为不受信任的内存。)
- Omar Aflak