我已经浏览了谷歌提供的android指纹样本。
https://github.com/googlesamples/android-FingerprintDialog
由于我是安全标准的新手,我无法理解以下内容。
- 为什么我们需要使用Keystore,key,CryptoObject等?简单就好了,请指纹管理员对用户进行身份验证,并且只需返回状态(成功/失败)
- 每次验证时是否需要生成新密钥?
我已经浏览了谷歌提供的android指纹样本。
https://github.com/googlesamples/android-FingerprintDialog
由于我是安全标准的新手,我无法理解以下内容。
为什么我们需要使用Keystore,key,CryptoObject等?它可以 就像,请指纹管理员验证用户,它可以 只需返回状态(成功/失败)
你不必。您可以在没有指纹认证的情况下进 CryptoObject
,只是通过一个 null
值。然后就不必乱用密钥库和其他东西了。
唯一的用途 CryptoObject
在指纹验证上下文中,要知道自上次用户通过指纹验证后是否添加了新指纹。
每次验证时是否需要生成新密钥?
如果添加了新指纹,您必须提示密码以验证用户的身份,然后生成新密钥(因为它们在添加新指纹时变为无效)。
如果你通过了,你将不会再乱用这些 null
CryptoObject
指纹认证不需要CryptoObject,事实上它恰恰相反。
在Android上进行加密操作时,可以使用以下对象之一: 暗号, 签名, 苹果电脑 (和别的)。这三个中的一个可以用来构建一个 CryptoObject。
为这些对象生成键时,会有一个方法被命名 setUserAuthenticationRequired(boolean)
它设法获得键值 只要 如果用户之前通过指纹进行了身份验证。
因此,在客户端/服务器通信的情况下,例如,如果客户端可以使用密钥,则意味着他通过指纹进行认证并且他的身份是已知的。
也就是说,您可能想要检查我的库,这使整个事情变得更加容易:
回答你的一个问题,
我们将使用别名创建一个键,并使用别名来检索键。别名是密钥的关键。将存储为应用程序沙箱存储的别名列表。它会在尝试生成具有相同别名的密钥的后续尝试时检索密钥。
为什么我们需要使用Keystore,key,CryptoObject等?简单地说,就像是,请指纹管理员对用户进行身份验证,它可以>简单地返回状态(成功/失败)
当我第一次阅读有关android的指纹时,我也想到了同样的事情。通过我的研究,我想我可以用简单的英语为您总结CryptoObject,这正是您所寻找的,因为技术描述无助于理解概念:
CryptoObject是由你的android密钥库中的密钥创建的,它本身被认为是“安全的”[1]。因此,将CryptoObject传递给指纹管理器可让管理器有一个锚点,确认指纹验证结果未被篡改,这在理论上是可行的[2]。
可以这样想,如果传入null,指纹管理器会盲目地信任指纹匹配结果的结果。如果你传入一个加密对象,该对象是由一个只有你的应用程序可以访问的密钥创建的密钥库,那么返回的结果可能会有这个只有你的应用才能成功识别的cryptoObject。这是另一个更常识的引用。
“CryptoObject使这个过程更加安全,因为如果KeyStore不支持该对象,它总会失败。” [3]
[4]链接中的图片也为您提供了一个想法。
[1] https://developer.android.com/training/articles/keystore
[3]https://medium.com/@manuelvicnt/android-fingerprint-authentication-f8c7c76c50f8
[4]https://infinum.co/the-capsized-eight/android-fingerprint-security