2016-07-04 6 views
1

KeyInfo의 isInsideSecureHardware-method의 반환 값은 장치 모델, OS 버전 및 기타 임의의 요소에 의존하는 것으로 보입니다.안드로이드에서 비공개 키가 보안 하드웨어 내에 저장되는 것을 보장하는 방법

예를 들어 오래된 OS 버전 인 isInsideSecureHardware()가있는 Sony xperia z5 compact를 사용하면 잠시 동안 true를 반환 한 다음 갑자기 동일한 개인 키에 대해 false를 반환하기 시작할 수 있습니다. 최신 os 버전 (32.2.A.0.224)에서는 false 만 반환하는 것으로 보입니다. Huawei Nexus 6P는 항상 true를 반환합니다.

키가 보안 하드웨어에 저장되어 있는지 확인하는 방법이 있습니까?

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore"); 
keyPairGenerator.initialize(new KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_DECRYPT | KeyProperties.PURPOSE_ENCRYPT) 
            .setUserAuthenticationRequired(true) 
            .setBlockModes(KeyProperties.BLOCK_MODE_ECB) 
            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1) 
            .build()); 
KeyPair keyPair = keyPairGenerator.generateKeyPair(); 
// Check that private key is inside secure hardware 
KeyFactory factory = KeyFactory.getInstance(key.getAlgorithm(), "AndroidKeyStore"); 
KeyInfo keyInfo = factory.getKeySpec(key, KeyInfo.class); 
boolean secure = keyInfo.isInsideSecureHardware(); // this usually returns false 

감사 :

여기에 내 현재 코드입니다!

편집 : https://talk.sonymobile.com/t5/Android-development/hardware-backed-keystore/td-p/1154124

그것은 언급 한 다음과 같은 경고가 로그에 인쇄됩니다 :

W 키 스토어 : 1 차 keymaster 장치 실패 소니 지원 포럼에서 같은 문제에 대한 항목이 키를 생성하여 SW로 떨어집니다.

답변

0

Android API에 따르면, 먼저 키를 생성 한 다음 하드웨어 기반 정보인지 확인하는 유일한 방법이 있습니다.

휴대 전화의 사양을 보면 원래 Lollipop에서 출시되었습니다. 공식 Marshmallow Fingerprint API/하드웨어 사양과 제조사가 자체적으로 일을하기 전이었습니다. 이 문서에서는 특별히 사용중인 장치에 대해 설명합니다 (http://blog.elcomsoft.com/2016/06/fingerprint-unlock-security-ios-vs-google-android-part-ii/). 나는 당신이 돌아오고있는 진정한 가치가 부정확한지 그리고 당신의 O/S 업그레이드로 인해 그것이 로직을 고정 시켰는지 (또는 부러 뜨 렸는지) 궁금합니다. 오은/S는 당신이 언급 버전은 제가 몇 가지 질문이 "2016년 4월 1일 구글 보안 패치"

포함 업그레이드 :

  1. 무엇합니까 지금 당신의 장치에 isUserAuthenticationRequirementEnforcedBySecureHardware() 반환은? 가치는 일관성이 있습니까? 지문 판독기가 안전하지 않다고 (또는 O/S 결함이 있다고) 말할 수있는 거짓 인 경우

  2. 이전 OS 버전은 무엇을 의미합니까? 사탕 과자? 공장 기본값으로 재설정을 시도 했습니까?

+0

설명을 요청할 때 질문에 대한 답을 쓰지 마십시오. 댓글이 더 좋습니다. – payala

+0

안녕하세요, 답변을 오래 받아서 죄송합니다. isUserAuthenticationRequirementEnforcedBySecureHardware()는 현재 버전에서 false를 반환합니다. 일관성이있는 것 같습니다. 이전 버전은 32.1.A.1.185입니다. 이 버전에서는 isUserAuthenticationRequirementEnforcedBySecureHardware()가 true를 반환합니다. 공장 출하 상태로 복원해도 문제가 해결되지 않았습니다. 지문 스캐너 정보 : UserAuthenticationRequired를 false로 설정하면 같은 문제가 발생합니다. 지문 스캐닝과 관련된 것이 더 이상 없습니다. – KaPa