![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/ko_KR/52d714626638d3391623c853be0c593b.png)
키체인 데이터 보호
대부분의 앱은 키 및 로그인 토큰 같은 작지만 민감한 데이터와 암호를 안전하게 처리해야 합니다. 키체인은 이러한 항목을 안전하게 저장하는 방법을 제공합니다. 다양한 Apple 운영 체제는 서로 다른 메커니즘을 사용하여 여러 키체인 보호 클래스와 관련된 보증을 시행합니다. macOS(Apple Silicon이 탑재된 Mac 포함)에서 이러한 보증을 시행하는 데 데이터 보호가 직접 사용되지 않습니다.
개요
키체인 항목은 서로 다른 두 개의 AES-256-GCM 키인 테이블 키(메타데이터) 및 행별 키(비밀 키)를 사용하여 암호화됩니다. 키체인 메타데이터(kSecValue를 제외한 모든 속성)는 검색 속도를 높이기 위해 메타데이터 키로 암호화되고 비밀 값(kSecValueData)은 비밀 키로 암호화됩니다. 메타데이터 키는 Secure Enclave로 보호되지만 빠른 키체인 쿼리를 위해 응용 프로그램 프로세서에 캐시됩니다. 비밀 키는 Secure Enclave 내에서 항상 왕복으로 움직여야 합니다.
키체인은 파일 시스템에 저장되어 있는 SQLite 데이터베이스로 구현되어 있습니다. 데이터베이스는 단 하나이며, securityd
데몬이 각 프로세스 또는 앱의 키체인 항목 접근 권한을 결정합니다. 결과적으로 키체인 접근 API가 데몬으로 요청되고 데몬은 앱의 ‘Keychain-access-groups’, ‘application-identifier’, ‘application-group’ 권한을 쿼리하는 방식입니다. 단일 프로세스로 접근을 제한하는 대신에 접근 그룹을 통해 앱 간에 키체인 항목이 공유될 수 있습니다.
키체인 항목은 같은 개발자가 개발한 앱 사이에서만 공유될 수 있습니다. 키체인 항목을 공유하기 위해 타사 앱은 해당 응용 프로그램 그룹의 Apple Developer Program을 통해 할당받은 접두사가 지정된 접근 그룹을 사용합니다. 접두사 요구 사항 및 응용 프로그램 그룹 특정성은 코드 서명, 권한 설정 프로파일 및 Apple Developer Program을 통해 강제로 적용됩니다.
키체인 데이터는 파일 데이터 보호에 사용했던 것과 비슷한 클래스 구조를 사용해 보호됩니다. 이러한 클래스는 파일 데이터 보호 클래스와 동일하게 동작하지만 고유한 키와 기능을 사용합니다.
사용 가능 시기 | 파일 데이터 보호 | 키체인 데이터 보호 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
잠금 해제한 경우 | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
잠겨 있는 경우 | NSFileProtectionComplete UnlessOpen | ||||||||||
처음 잠금 해제한 경우 | NSFileProtectionComplete UntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
항상 | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
암호 활성화됨 | kSecAttrAccessibleWhen PasscodeSetThisDeviceOnly |
백그라운드 새로 고침 서비스를 활용하는 앱은 백그라운드 업데이트 중에 접근해야 하는 키체인 항목에 대해 kSecAttrAccessibleAfterFirstUnlock 클래스를 사용할 수 있습니다.
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly 클래스는 kSecAttrAccessibleWhenUnlocked 클래스와 똑같이 동작하지만 기기의 암호가 구성된 경우에만 사용 가능합니다. 이 클래스는 System Keybag에만 존재하기 때문에 다음과 같은 제한 사항이 있습니다.
iCloud 키체인과 동기화되지 않음
백업되지 않음
Escrow keybag에 포함되지 않음
암호가 제거되거나 재설정된 경우 이 클래스 키를 삭제하여 이 항목을 사용할 수 없는 것으로 간주합니다.
다른 키체인 클래스는 ‘이 기기에서만’의 대응 항목을 가지고 있습니다. 대응 항목은 백업 중에 기기에서 복사되는 경우 UID로 항상 보호되며, 백업이 다른 기기에 복원되는 경우에는 사용할 수 없습니다. Apple은 보호되는 정보의 종류와 iOS 및 iPadOS에서 필요로 하는 경우에 따라 달라지는 키체인 클래스를 선택함으로써 보안성과 사용성의 균형을 맞추었습니다.
키체인 데이터 클래스 보호
아래에 나열된 클래스 보호는 키체인 항목을 대상으로 시행됩니다.
항목 | 접근 가능 시기 |
---|---|
Wi-Fi 암호 | 처음 잠금 해제한 경우 |
Mail 계정 | 처음 잠금 해제한 경우 |
Microsoft Exchange ActiveSync 계정 | 처음 잠금 해제한 경우 |
VPN 암호 | 처음 잠금 해제한 경우 |
LDAP, CalDAV, CardDAV | 처음 잠금 해제한 경우 |
소셜 네트워크 계정 토큰 | 처음 잠금 해제한 경우 |
Handoff 알림 암호화 키 | 처음 잠금 해제한 경우 |
iCloud 토큰 | 처음 잠금 해제한 경우 |
iMessage 키 | 처음 잠금 해제한 경우 |
홈 공유 암호 | 잠금 해제한 경우 |
Safari 암호 | 잠금 해제한 경우 |
Safari 책갈피 | 잠금 해제한 경우 |
Finder/iTunes 백업 | 잠금 해제한 경우, 이동할 수 없음 |
VPN 인증서 | 처음 잠금 해제한 경우, 이동할 수 없음 |
Bluetooth® 키 | 항상, 이동할 수 없음 |
APNS(Apple 푸시 알림 서비스) 토큰 | 항상, 이동할 수 없음 |
iCloud 인증서 및 개인 키 | 항상, 이동할 수 없음 |
SIM PIN | 항상, 이동할 수 없음 |
나의 찾기 토큰 | 항상 |
음성 메시지 | 항상 |
macOS에서는 구성 프로파일을 통해 설치된 모든 키체인 항목을 항상 사용할 수 있습니다. iOS 및 iPadOS에서는 구성 프로파일을 통해 설치된 키체인 항목이 유형, 참조 방식 및 설치 날짜에 따라 다른 접근성을 가지고 있습니다. 기본적으로, 구성 프로파일을 통해 설치된 키체인 항목은 처음 잠금을 해제한 후에 사용할 수 있고, 이동할 수 없습니다. 그러나 다음 경우에는 구성 프로파일을 통해 설치된 키체인 항목을 항상 사용할 수 있습니다.
iOS 15 또는 iPadOS 15 이상으로 업그레이드하기 전에 설치되었을 경우
신원이 아닌 인증서일 경우
com.apple.mdm
페이로드의IdentityCertificateUUID
에 의해 참조된 신원일 경우
키체인 접근 제어
키체인은 접근 제어 목록(ACL)을 통해 접근성과 인증 요구 사항에 대한 정책을 설정할 수 있습니다. Face ID 및 Touch ID 또는 기기 암호 입력을 통해 인증하는 경우에만 키체인 항목에 접근할 수 있도록 명시하여 사용자의 직접 입력이 필요한 조건을 확립할 수 있습니다. 또한, 항목이 추가된 이후에 Face ID 및 Touch ID 등록이 변경되지 않도록 명시하여 항목 접근을 제한할 수도 있습니다. 이러한 제한 사항 덕분에 해커가 지문을 추가해도 키체인 항목에 접근할 수 없습니다. ACL은 Secure Enclave 내에서 평가되어 명시된 제약 조건이 충족되는 경우에만 커널에 공개됩니다.
macOS의 키체인 아키텍처
또한 macOS에서는 키체인에 접근 권한을 제공하여 사용자 이름과 암호, 디지털 ID, 암호화 키, 보안 메모를 편리하고 안전하게 저장할 수 있습니다. 키체인에는 /응용 프로그램/유틸리티/에 위치한 키체인 접근 앱을 열어서 접근할 수 있습니다. 키체인을 사용하면 출처별로 자격 증명을 입력하거나 기억할 필요가 없습니다. Mac의 사용자별로 최초 기본 키체인이 생성되지만 사용자는 특정한 용도로 사용할 키체인을 별도로 생성할 수 있습니다.
macOS는 사용자 키체인 외에도 다양한 시스템 수준의 키체인을 활용해 네트워크 자격 증명과 PKI(공개 키 인프라) ID 등 사용자별로 특정하지 않은 인증 자산을 유지합니다. 이러한 키체인 중 하나인 시스템 루트는 변경이 불가능하며 인터넷 PKI 루트 인증 기관(CA) 인증서를 저장해 온라인 뱅킹과 전자상거래 등의 일반적인 작업을 보조합니다. 사용자는 내부에서 권한이 설정된 CA 인증서를 관리되는 Mac 컴퓨터에 이와 유사하게 배포해 내부 사이트와 서비스를 검증하는 데 도움을 얻을 수 있습니다.