iOS

키 체인(Key Chain)

jangsilverbaby 2021. 12. 10. 21:30

키 체인은 애플 계열의 운영체제에서 동작하는 다양한 응용 프로그램에서 비밀번호나 계정 등 보안이 필요한 요소를 저장하는 데 사용되는 암호화된 저장소이다.

 

특징

1. 기본적으로 애플리케이션은 자기 자신의 키 체인에만 접근할 수 있다.

2. iOS에서 키 체인의 위치는 샌드박스(외부에서 받은 파일을 바로 실행하지 않고 보호된 영역에서 실행시켜 봄으로써 잘못된 파일과 프로그램이 내부시스테 전체에 악영향을 주는 것을 미연에 방지하는 기술) 외부이므로, 앱을 삭제해도 키 체인에 저장된 정보는 삭제되지 않는다.

3. 앱의 프로비저닝 파일을 이용해서 앱 간의 사용 졍로를 구분하기 때문에, 동일한 앱이라도 프로비저닝 파일을 변경해서 빌드하면 기존 벙보를 더 이상 조회할 수 없다.

4. 키 체인 그룹을 사용하여 서로 다른 앱에서도 저장된 데이터를 공유할 수 있다.

5. 비밀번호 또는 개인 키(비대칭 암호화에서 사용되는 짧은 바이트 문자열)처럼 보호가 필요한 항목은 암호화되어 키 체인으로 보호되며, 인증서처럼 보호가 필요하지 않은 항목은 암호화되지 않은 채로 저장된다.

6. 키 체인은 잠글 수 있어서, 일단 잠기면 해체하기 전까지 저장된 데이터를 접근할 수 없지만 iOS에서는 기기의 잠금이 해제되는 순간 키 체인의 잠금도 함께 해제됩니다.

구조

키 체인 아이템(Keychain Item)  키 체인 안에 저장되는 데이터로, 키 체인은 여러 개의 키 체인 아이템을 가질 수 있다.

아이템 클래스(Item Class) 저장할 데이터의 종류이다. ID/PW, 인증서, 인터넷 비밀번호 및 일반 비밀번호 등을 선택할 수 있으며 임의로 아이템 클래스를 추가할 수는 없다.

어트리뷰트(Attributes) 아이템 클래스에 대한 속성이다. 아이템 클래스에 따라 설정할 수 있는 어트리뷰트의 종류가 달라진다.

 

참고 : 꼼꼼한 재은씨의 Swift 실전편