-
[iOS] Keychain 개론👻 iOS 2021. 1. 24. 21:57
지금까지 Keychain 을 알고 있기를 애플에서 제공하는 보안처리된 스토어 정도로만 이해하고 있었고,
iOS로 개발이야 써볼일이 없었으니 사실 깊이 알아볼 생각을 못했다. (반성 ㅠㅠ)
지금이라도 알아간다는 것을 다행으로 생각하며;;;
오늘도 기록 시작!
1. 개요
- iOS앱은 단일 Keychain에 접근할 수 있다.
- 사용자가 기기를 잠금 상태에 따라 Keychain의 잠금 상태도 동일하다. (기기 잠금해제 = 키 체인 잠금해제)
- 앱은 자체 Keychain이나 앱이 속한 그룹의 공유된 Item에만 접근 가능하다.
- Keychain 체인 컨테이너 자체는 관리 할 수 없다.
- macOS 에서는 임의의 수 키 체인을 지원한다.
2. Keychain Service
- Keychain Service API 는 Keychain이라는 암호화된 DB에 사용자 데이터를 저장.
- 암호와 같은 중요정보 뿐 아니라 신용카드 정보, 메모 등 다양하게 저장 가능하다.
3. Keychain Item
- 암호 또는 암호화 키를 저장하려면 Keychain Item으로 패키징한다.
- 데이터와 함께 Item의 접근성을 제어하고 검색 할 수 있도록 공개적으로 표시되는 Attributes 를 제공한다.
4. Keychain 을 사용하여 사용자 비밀 관리
- 데이터를 암호화하지 않고 저장하면 보안 위험이 발생한다.
- 키체인을 이용해서 사용자에게 좋은 경험을 제공할 수 있다. (반복적으로 암호를 요구한다던가 하면 비밀번호를 간단하게 하여 사용하는 나쁜 경험이 되기에)
- 필요할 때 사용자가 참여하게 하고(Add Sub-flow), 일반적인 경우에 사용자를 귀찮게 하지 말아라(Central one). 변경 사항이 발생한다면 적절하게 처리하라(Update sub-flow).
실제 구현은 다음에 알아볼게요
참고링크
- developer.apple.com/documentation/security/keychain_services/keychains
- developer.apple.com/documentation/cryptokit/storing_cryptokit_keys_in_the_keychain