2016-08-10 3 views
1

저는 지문과 관련된 프로젝트를 진행 중이고 지문 카탈로그 변경을 처리해야합니다. 지문 변경을 확인하기 위해 setUserAuthenticationRequired (true) 옵션을 사용하여 생성 된 비밀 키를 사용합니다. 새로운 지문이 등록되거나 더 이상 지문이 등록되지 않으면 키는 되돌릴 수 없도록 무효화되어야하며 그러한 키를 사용하여 암호화 작업을 초기화하려고하면 KeyPermanentlyInvalidatedException이 발생합니다.Google 지문 인식 API를 사용할 때 삼성 Galaxy S7 Edge가 지문 인식 카탈로그를 감지하지 못합니다.

Galaxy s7에서 작동하지만 s7 가장자리에서 작동하지 않습니다. s7 가장자리에서는 새로운 지문을 추가 할 때 키의 유효성이 계속 검사됩니다.

아래 코드는 Google FingerprintDialog 샘플 응용 프로그램입니다. 이전에이 문제를보고 해결책을 찾았습니까? 감사!

/** 
* Creates a symmetric key in the Android Key Store which can only be used after the user has 
* authenticated with fingerprint. 
*/ 
public void createKey() { 
    try { 
     mKeyStore.load(null); 
     mKeyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME, 
       KeyProperties.PURPOSE_ENCRYPT | 
         KeyProperties.PURPOSE_DECRYPT) 
       .setBlockModes(KeyProperties.BLOCK_MODE_CBC) 
         // Require the user to authenticate with a fingerprint to authorize every use 
         // of the key 
       .setUserAuthenticationRequired(true) 
       .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) 
       .build()); 
     mKeyGenerator.generateKey(); 
    } catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException 
      | CertificateException | IOException e) { 
     throw new RuntimeException(e); 
    } 
} 


/** 
* Initialize the {@link Cipher} instance with the created key in the {@link #createKey()} 
* method. 
*/ 
private boolean initCipher() { 
    try { 
     mKeyStore.load(null); 
     SecretKey key = (SecretKey) mKeyStore.getKey(KEY_NAME, null); 
     mCipher.init(Cipher.ENCRYPT_MODE, key); 
     return true; 
    } catch (KeyPermanentlyInvalidatedException e) { //It should throw this exception when adding a new fingerprint, but on s7 edge, it doesn't throw 
     return false; 
    } catch (KeyStoreException | CertificateException | UnrecoverableKeyException | IOException 
      | NoSuchAlgorithmException | InvalidKeyException e) { 
     throw new RuntimeException("Failed to init Cipher", e); 
    } 
} 

모델 번호 : SM-G935W8, 안드로이드 버전 : 6.0.1, Kenel 버전 : 3.18.14-8421152, 빌드 번호 : MMB29K. G935W8VLU1APG1, 안드로이드 보안 패치 수준 : 2016 년 7 월 1 일

답변

2

이 문제는 Samsung의 OS 업데이트로 수정되었습니다 : Kenel 버전 : 3.18.14-9105000, 빌드 번호 : MMB29K. G935W8VLU2APG1, Android 보안 패치 수준 : 2016 년 9 월 1 일

+0

안녕하세요, 삼성 Galaxy Note4에서도이 문제에 직면하고 있습니다. 커널 버전과 보안 패치가 당신이 말한 버전으로 업데이트되기를 바라는 최신 소프트웨어 업데이트를 다운로드하려고 시도했지만, 그렇지 않았습니다 ...이 장치에 지문 문제에 대한 해결책이 있는지 알고 있습니까? 감사합니다 –

+0

늦은 응답에 대한 죄송합니다. 참고 4는 Google Fingerprint API (삼성 지문)를 지원하지 않으며 지문을 사용하여 키를 보호 할 수 없습니다. http://stackoverflow.com/questions/38266406/android-fingerprint-api-ishardwaredetected-returns-false-for-samsung-note-4 –

+0

삼성의 PASS SDK에 대해 알게되었습니다. 키를 보호하는 데 사용할 수있는 충분한 보안을 제공하지 않습니다. 답변 주셔서 감사합니다. –