제 질문은 iOS (iPhone, iPad 등)의 키 체인에 관한 것입니다. Mac OS X에서 키 체인을 구현하면 같은 대답으로 같은 질문이 제기된다고 생각합니다 (확실하지 않습니다).
iOS는 5 가지 유형 (클래스)의 키 체인 항목을 제공합니다. kSecClass
유형을 결정하려면 키 에 대해 다음 5 개 값 중 하나를 선택해야합니다 .
kSecClassGenericPassword used to store a generic password
kSecClassInternetPassword used to store an internet password
kSecClassCertificate used to store a certificate
kSecClassKey used to store a kryptographic key
kSecClassIdentity used to store an identity (certificate + private key)
오랜 시간 동안 사과 문서, 블로그 및 포럼 항목을 읽은 후 유형의 키 체인 항목이 kSecClassGenericPassword
속성 kSecAttrAccessGroup
, kSecAttrAccount
및 에서 고유성을 얻는다는 것을 알게되었습니다 kSecAttrService
.
요청 1의 세 속성이 요청 2와 같으면 다른 속성에 관계없이 동일한 일반 비밀번호 키 체인 항목을받습니다. 이 속성 중 하나 (또는 둘 또는 모두)가 해당 값을 변경하면 다른 항목을 얻게됩니다.
그러나 kSecAttrService
유형의 항목에만 사용할 수 kSecClassGenericPassword
있으므로 다른 유형의 항목의 "고유 키"의 일부가 될 수 없으며 어떤 속성이 키 체인 항목을 고유하게 결정하는지 명확하게 나타내는 문서가없는 것 같습니다.
"GenericKeychain"의 "KeychainItemWrapper"클래스에있는 샘플 코드는 속성 kSecAttrGeneric
을 사용하여 항목을 고유하게 만들지 만 이는 버그입니다. 이 예의 두 항목 kSecAttrAccessGroup
은 서로 다르기 때문에 두 개의 개별 항목으로 만 저장됩니다 (하나는 액세스 그룹 세트가 있고 다른 하나는 해제 할 수 있음). 액세스 그룹없이 Apple의을 사용하여 두 번째 비밀번호를 추가하려고 KeychainItemWrapper
하면 실패합니다.
제 질문에 답해주세요.
- 그것은 사실이다의 조합
kSecAttrAccessGroup
,kSecAttrAccount
그리고kSecAttrService
kSecClass는 키 체인 항목의 "고유 키가"kSecClassGenericPassword
? - 키 체인 항목이 고유
kSecClass
하지 않은 경우 고유하게 만드는 속성은kSecClassGenericPassword
무엇입니까?