2016-09-27 2 views
0

저는 SecKeyGeneratePair를 사용하려고합니다. 그리고 속성을 kSecAttrTokenIDSecureEnclave로 설정하고 비워 둡니다. 에 따르면 kSecAttrTokenID가 설정되지 않은 경우 항목을 일반 키 체인 DB에 저장해야합니다. 그러나 설정 여부에 관계없이 keychain-2.db 파일 크기는 변경되지 않습니다. 하지만 SecKeyRawSign()을 생성 된 개인 키와 함께 오류없이 사용할 수 있습니다. 그런 다음 개인 키가 저장된 위치는 어디입니까?SecKeyGeneratePair는 키 쌍을 어디에 저장합니까?

답변

0

kSecAttrTokenIDSecureEnclave를 설정하면 실제 개인 키가 보안 인클로저의 어딘가에 저장되며 반환되는 개인 키는 보안 인클로저의 실제 개인 키를 참조하는 것입니다. 그러나 키를 사용하는 한 아무런 차이가 없습니다. 받은 SecKey는 정확히 같은 방식으로 사용합니다.

응용 프로그램의 연속 실행에서 동일한 키 쌍을 사용하려는 경우 가장 가능성이있는 것처럼받은 키 체인에 저장 한 비공개 키를 저장하고 응용 프로그램이 다시 시작될 때 키 체인에서 검색해야합니다. 당신이이 토큰을 사용하는지 여부. 그렇게하지 않으면 SecKey가 없기 때문에 비밀 키는 여전히 보안 영역에 있지만 어쨌든 액세스 할 수 없습니다.

다음과 같이보십시오. 일반적으로 SecKey는 내부에 도어 키 또는 자동차 키가있는 상자입니다. 그러나 kSecAttrTokenIDSecureEnclave를 사용하면 SecKey는 실제 키가 보안 영역에있는 부분을 알려주는 종이 조각이있는 상자입니다. iOS는 두 종류의 상자를 동일하게 처리 할만큼 충분히 똑똑합니다. 그러나 각 종류의 상자를 키 체인에 직접 저장해야합니다. 상자를 돌보지 않으면 앱이 다시 시작될 때 사라졌습니다.

관련 문제