2016-06-14 5 views
1

나는 안드로이드 지문 인식 네이티브 API를 며칠 동안 작업하고 있는데 두 가지가 혼동 스럽다. 설명서에 예제가 있지만 을 설명하지 않은 이유는입니다.이 방법으로 작업해야합니다. 그렇다면 보안 전문가는 누구입니까? CryptoObjectHandler :안드로이드 지문 API 이해하기 심도 깊음

나는 깊이있는 API 년대의 authenticate() 기능을 이해하기 위해, 또는 걸리는 매개 변수이 이해하기 더 구체적으로합니다. 이 매개 변수 모두에 null을 전달할 때 내 POV에서 "perfect"이 작동합니다. 실제로 두 가지 질문이 있습니다. 인증을 위해 호출하는 동안 CryptoObject 및/또는 Handler를 사용해야하는 이유 (어떤 상황에서 우리가 인코딩하고 메인 처리기를 사용하지 않아야합니까?) 어쩌면 몇 가지 예 (코드가 아닌 사용 사례). 미리 감사드립니다. 이 사이트를 좋아하십시오.

답변

1

CryptoObject 데이터에 서명 할 수 있습니다. 데이터에 서명하는 키는 장치의 보안 하드웨어 (보안 요소)에 저장됩니다. 데이터는이 보안 요소에 의해 서명됩니다. 보안 요소는 지문 인식시에만 데이터에 서명 할 수 있습니다. 열쇠는 절대로 보안 요소 밖으로 나가지 않습니다. 읽으십시오 http://android-developers.blogspot.fr/2015/10/new-in-android-samples-authenticating.html

사용자 인증을 원하면 CrytoObject은 필요하지 않습니다. 보안 저장소 (하드웨어의 보안 요소)에 저장된 키로 데이터를 암호화 또는 암호 해독하려면 CryptoObject을 사용할 수 있습니다. 이 보안 키는 인증 후에 만 ​​데이터를 암호화하거나 해독 할 수 있습니다.

처리기 선택적으로 Handler을 제공 할 수 있습니다. 제공되는 경우 FingerprintManager은 내부 MyHandler 인스턴스에이 Handler의 루퍼를 사용합니다.

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

+0

아름다운 설명, 감사를 읽어 보시기 바랍니다! –

+0

여전히'CryptoObject'의 사용법을 이해하고 있는지 확실하지 않습니다. OS가 사용자의 지문을 인식하여 일부 데이터 나 기능을 잠금 해제하는 것으로 충분하지 않은 이유는 무엇입니까? 이 보안 계층을 사용할 수있는 이유는 무엇이며 단순히 null을 전달하는 것보다 더 선호하는 이유는 무엇입니까? @ laurenty, 이것에 대해 자세히 설명해 주시겠습니까? –

+0

@AlexFu, 내 대답 업데이트 – LaurentY