Keychain Service API는 Keychain이라고 부르는 암호화된 데이터베이스 안에 user data를 저장하는 메카니즘을 제공한다.

Untitled

위에서 보는 것처럼 키체인은 비밀번호로 한정되지 않는다. 신용카드 정보나 짧은 노트들도 저장 가능!

위 뿐 아니라 유저가 평소엔 잘 인지하지 못하지만 일상생활에 필요한 아이템들을 저장할 수 있다. 이렇게 저장한 cryptographic key나 인증서로 다른 유저들과 암호화된 커뮤니케이션을 할 때 신뢰를 받을 수 있다.

Keychain Items

패스워드나 암호화된 키 같이 secret을 저장하고 싶을 때, 그것을 keychain item으로 패키징해야 한다.

아이템의 접근성을 제어하기 위해, 그리고 아이템을 검색할 수 있게 하기 위해 data와 함께, 퍼블릭하게 볼 수 있는 attribute를 제공해야 한다.

Untitled

키체인 서비스는 keychain 안에서 data encryption과 data attributes를 포함한 storage를 다룬다.

나중에 권한을 부여받은 프로세스는 아이템을 찾고 데이터를 복호화하기 위해 키체인 서비스를 이용한다.

Keychain 아이템을 인터넷 패스워드를 저장하기 위해 사용하는 경우 플로우 차트

Untitled

첫 실행시 키체인에 패스워드가 없다. 따라서 오른쪽 브랜치를 따라감. 유저가 정보를 제공하면 SecItemAdd 를 통해 키체인에 저장.

SecItemAdd : autehticated credential을 저장한다.

Apple Developer Documentation