深入了解 Android 指纹 API authenticate()

Understanding Android Fingerprint API authenticate() in depth

我正在研究 Android FingerPrint native API 几天,有两件事让我感到困惑。该文档有示例,但没有解释为什么我们需要这样工作,所以请问这里有安全专家吗?

我想深入了解 API 的 authenticate() 功能,或者更具体地了解它采用的两个参数:CryptoObjectHandler。当将 null 传递给这两个参数时,它在我的 POV 上工作“perfect”。所以其实有两个问题: 为什么我们需要在调用认证时使用 CryptoObject and/or Handler(在什么情况下我们要编码而不使用主处理程序)?也许一些例子(甚至不是代码 - 但用例)。提前致谢。喜欢这个网站。

CryptoObject 让您签署数据。用于签署数据的密钥存储在设备上的安全硬件(安全元素)中。数据由此安全元件签名。 Secure Element 只有在指纹被识别时才能签署数据。密钥永远不会超出安全元件。 请阅读此 http://android-developers.blogspot.fr/2015/10/new-in-android-samples-authenticating.html

如果你只是想验证一个用户 CrytoObject 是不必要的。如果您想使用存储在安全存储(硬件中的安全元素)中的密钥来加密或解密数据,那么您可以使用 CryptoObject。此安全密钥仅在身份验证后才可用于加密或解密数据。

Handler 您可以选择提供一个 Handler。如果提供,FingerprintManager 将使用此 Handler 中的 Looper 作为其内部 MyHandler 实例。

private void useHandler(Handler handler) { 
    if (handler != null) { 
        mHandler = new MyHandler(handler.getLooper()); 
    } else if  (mHandler.getLooper() != mContext.getMainLooper()) { 
        mHandler = new MyHandler(mContext.getMainLooper()); 
    } 
}

提供循环程序允许我们定义 运行 在哪个线程上并侦听消息日志记录。

Looper looper = Looper.getMainLooper(); 
looper.setMessageLogging(new Printer() { 
    @Override 
    public void println(String x) { 
        Log.d(TAG, x); 
    } 
}); 
mFingerprintManager.authenticate(cryptoObject, mCancellationSignal, 0, this, new Handler(looper)); 

请阅读本文https://www.captechconsulting.com/blogs/introducing-androids-fingerprint-api