애플 개발자들에게 가장 중요한 요소중 하나는 메타 데이터 및 민감한 정보를 저장하는 특별한 데이터베이스인 iOS 키체인(iOS Keychain) 입니다. **키체인(Keychain)**을 사용하는 것은 앱에서 비밀번호 같은 작은 데이터를 저장하는 가장 좋은 방법입니다.

스크린샷 2023-07-27 14.12.57.png

사용자를 대신해 암호화된 database에 item 또는 작은 데이터 덩어리를 안전하게 저장할 수 있게 도와준다.

키체인을 사용하는 이유

UserDefault에 저장되는 정보들은 모두 base64 로 인코딩되어 plist형식으로 저장됩니다. 이렇게되면 복구하는것이 쉽고, UserDefault는 앱이 삭제됨과 동시에 정보가 삭제되지만 키체인은 정보를 직접 삭제하기전까지 삭제되지 않습니다. 따라서 보안이 필요하거나 앱이 삭제되어도 유지가 필요한 정보는 키체인을 사용하는 것이 적절하다. swift 로 키체인을 직접 작업하는것은 복잡하다 왜냐하면 대부분 c언어로 작성된 보안 프레임 워크를 사용해야하기 때문. 이 점을 보완해서 GenericKeyChain에서 swift 로 감싸놓아 사용하기 쉬운 인터페이스를 제공하고 시작 프로젝트에 이미 포함되어 있다.

구현방법

키체인에 정보를 저장할때는 키체인 아이템으로 패키징해야한다. 키체인 아이템은 정보와 속성으로 구성되어있다. 키체인 서비스 API는 아이템을 삽입하기 전에 정보를 암호화하고 속성과 함께 패키징한다. 정보는 말그대로 저장하고자 하는 정보이고, 속성을 사용해 정보를 식별하고 저장하거나 저장된 항목에 대한 접근을 제어한다.

구현을 위해서는 Security 프레임워크가 필요하다. 키체인 아이템은 모두 CFDictionary를 사용해 접근할 수 있다.