2017-02-21 2 views
1

7.1.1에서 Google Pixel 기기를 테스트하고 기기에서 모든 지문을 제거하면 내 비공개 키가 무효화되지 않고 있음을 확인합니다. 필자는 데모 응용 프로그램마다 하나의 대칭 SecretKey를 사용하여 테스트했으며 예상대로 작동했지만 비대칭 키 쌍을 사용하면 새 인쇄가 등록 될 때만 KeyPermanentlyInvalidatedException이 삭제되고 모두 삭제되지는 않습니다. 그때 새로운 지문을 등록하는 경우지문이 제거 된 경우 Android 키 무효화

무엇보다, 다음, 내 지문 대화 상자를 표시하고 성공적으로 그때 그것이 KeyStoreException: Key user not authenticated 던져 Cipher 객체에 doFinal()를 호출 할 때 내 지문의 Cipher 객체를 인증 검사합니다. 그런 다음 KeyStoreException 다음에 Cipher 객체를 다시 초기화하려고하면 필요에 따라 무효 예외가 발생합니다.

삼성 S7에서 6.0.1을 사용하여 테스트했는데 인쇄가 모두 제거되면 올바르게 작동하고 KeyPermanentlyInvalidatedException이 표시됩니다. 나는 related post에서 다른 누군가가 넥서스 (OS 버전이 언급되지 않았 음)에 문제가 있었을 가능성이 있음을 발견했습니다. 특정 키를 무효화하지 않는 장치/OS의 특정 조합에 버그가있을 수 있습니까?

는 것을 보일 수있을 것입니다 : 모든 지문이 제거 될 때 픽셀 또는 7.1.1 장치에

  1. 가의 PrivateKey의 무효화되지 않습니다.
  2. 이전에 모두 제거한 후에 새 인쇄를 등록하는 경우 PrivateKey를 사용하여 데이터를 해독 할 수는 없지만 사용하려고하면 해당 키는 무효화됩니다.

나는 사용자가 이전에 내 응용 프로그램에서 지문 등록했지만 안전 장치의 비트와 같은 장치에 등록 된 어떤 지문이 지금이 없음을 감지 할 때 수동으로 키 스토어 또는 무언가를 통해 키를 무효화하는 방법이 있나요?

업데이트 : 요청시 키 생성을 보여줍니다.

mKeyPairGenerator.initialize(
      new KeyGenParameterSpec.Builder(getKeyName(), KeyProperties.PURPOSE_DECRYPT) 
         .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512) 
         .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP) 
         .setUserAuthenticationRequired(true) 
         .setRandomizedEncryptionRequired(true) 
         .build()); 
     mKeyPairGenerator.generateKeyPair(); 
+0

'setUserAuthenticationRequired'와'setUserAuthenticationValidityDurationSeconds'를 사용 했습니까? 코드를 보여주십시오. – Codo

+0

예'setUserAuthenticationRequired (true)'를 사용하고 있는데, 유효 기간을 사용하지 않고 각 키의 사용 권한을 부여하려고합니다. – rossco

+0

안녕하세요. 정확히 같은 문제가 있습니다. 당신이 그것을 해결할 수 있었습니까? 고마워;) – Venator85

답변

0

UPDATE는 것 같다 이것은 Google Issue 227919에 부분적으로 관련이있다. 2 월 17 일의 댓글 최신 N 버전의 픽스가 수정되었지만 다른 것들과 같이 재현 할 수 있다고합니다.

이 문제가있는 경우 Google 문제에 별표를 표시하시기 바랍니다.

관련 문제