Pon*_*rai 16 android android-fingerprint-api
我已经浏览了谷歌提供的android指纹样本.
https://github.com/googlesamples/android-FingerprintDialog
由于我是安全标准的新手,我无法理解以下内容.
Oma*_*lak 14
为什么我们需要使用Keystore,key,CryptoObject等?简单就像,请指纹管理员对用户进行身份验证,它只需返回状态(成功/失败)
你不必.您可以在没有a的情况下进行指纹认证CryptoObject,只需传递一个null值.然后就不必乱用密钥库和其他东西了.
CryptoObject在指纹验证上下文中唯一使用的是知道自上次用户通过指纹验证后是否添加了新指纹.
每次验证时是否需要生成新密钥?
如果添加了新指纹,则必须提示密码以验证用户的身份,然后生成新密钥(因为它们在添加新指纹时变为无效).
如果你通过了,你将不会再乱用这些 null CryptoObject
指纹认证不需要CryptoObject,事实上它恰恰相反.
在Android上进行加密操作时,可以使用以下对象之一:Cipher,Signature,Mac(和其他).这三个中的一个可用于构建CryptoObject.
当您为这些对象生成密钥时,有一个方法setUserAuthenticationRequired(boolean)nammed 只有在用户之前通过指纹进行身份验证时才设法获取密钥值.
因此,例如,在客户端/服务器通信的情况下,如果客户端可以使用密钥,则意味着他通过指纹进行认证并且他的身份是已知的.
也就是说,您可能想要检查我的库,这使得整个事情变得更加容易:
https://github.com/OmarAflak/Fingerprint
为什么我们需要使用 Keystore、key、CryptoObject...等?简单地它可以>就像,要求指纹管理器对用户进行身份验证,它可以>简单地返回状态(成功/失败)
当我第一次阅读 Android 的指纹时,我也是这么想的。通过我的研究,我想我可以用简单的英语为您总结 CryptoObject,这正是您正在寻找的,因为技术描述无助于理解概念:
CryptoObject 由您的 android 密钥库中的密钥创建,该密钥本质上被认为是“安全的”[1]。因此,将 CryptoObject 传递给指纹管理器可以让管理器拥有一个锚点,以确认指纹认证结果未被篡改,这在理论上是可能的 [2]。
这样想,如果传入null,指纹管理器会盲目相信指纹匹配结果的结果。如果您传入一个由密钥创建的加密对象,由于密钥库只有您的应用程序可以访问该密钥,那么返回的结果可能会包含这个只有您的应用程序可以成功识别的加密对象。这是另一个更符合常识的引用。
“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
您的一个问题的答案,
我们将使用别名创建一个密钥,并使用别名来检索该密钥。别名是键中的键。将为应用程序沙箱存储别名列表。它会在后续尝试生成具有相同别名的密钥时检索密钥。
| 归档时间: |
|
| 查看次数: |
6498 次 |
| 最近记录: |