키체인 (소프트웨어)

**키체인**(Keychain)은 애플이 macOS용으로 개발한 비밀번호 관리 시스템이다. Mac OS 8.6에 도입되었으며, 이후 모든 운영 체제 버전과 iOS에 포함되었다. 키체인은 다양한 유형의 데이터를 포함할 수 있다: 비밀번호(웹사이트, FTP 서버, SSH 계정, 네트워크 공유, 무선망, 그룹웨어 애플리케이션, 암호화된 디스크 이미지용), 개인 키, 인증서, 보안 노트. 키체인에 있는 일부 데이터, 주로 비밀번호는 macOS 세쿼이아 및 IOS 18에 내장된 앱인 패스워드에서 사용자 친화적인 인터페이스를 통해 보고 편집할 수 있으며, 이전 버전의 애플 운영 체제에서는 시스템 설정/설정에서 사용할 수 있다.

## 역사
키체인은 1990년대 초 애플의 이메일 시스템인 파워토크를 위해 처음 개발되었다. 파워토크는 다양한 기능을 가지고 있었는데, 그 중 플러그인을 사용하여 다양한 메일 서버와 온라인 서비스에서 메일을 검색할 수 있었다. 키체인 개념은 이 코드에서 자연스럽게 "파생"되었고, 파워토크가 연결할 수 있는 다양한 이메일 시스템에 대한 사용자의 다양한 로그인 자격 증명을 관리하는 데 사용되었다.

비밀번호는 암호화로 인해 쉽게 검색할 수 없었지만, 단순한 인터페이스 덕분에 사용자는 파일 하나만 열면 모든 비밀번호를 얻을 수 있었기 때문에 잊어버릴 걱정 없이 모든 시스템에 다른 비밀번호를 선택할 수 있었다. 당시 다른 플랫폼에서는 이러한 개념의 구현을 사용할 수 없었다. 키체인은 파워토크의 몇 안 되는 분명히 "독자적으로" 유용한 부분 중 하나였으며, 이는 키체인이 기본 맥 OS의 일부로 승격되어야 함을 시사했다. 그러나 내부 정치로 인해 파워토크 시스템 내부에 유지되었고, 따라서 소수의 Mac 사용자만이 사용할 수 있었다.

1997년 스티브 잡스가 복귀하고 나서야 지금은 단종된 파워토크에서 키체인 개념이 부활했다. 이때쯤에는 이 개념이 더 이상 그렇게 특이하지는 않았지만, 일반적으로 웹 브라우저와 같은 특정 애플리케이션 소프트웨어와 관련이 없는 키체인 시스템은 여전히 드물었다. 키체인은 나중에 Mac OS 9의 표준 부분이 되었고, 첫 상용 버전의 Mac OS X에 포함되었다.

## 저장 및 접근
macOS에서 키체인 파일은 `~/Library/Keychains/`(및 하위 디렉토리), `/Library/Keychains/`, `/Network/Library/Keychains/`에 저장되며, 키체인 접근 GUI 애플리케이션은 응용 프로그램 폴더의 유틸리티 폴더에 있다. 자유 오픈 소스 소프트웨어이며, APSL-2.0 조건에 따라 배포된다. 키체인 접근의 명령줄 버전은 `/usr/bin/security`이다.

키체인 데이터베이스는 AES-256-GCM으로 테이블별 및 행별로 암호화된다. 각 자격 증명이 해독되는 시점, 해독 상태로 유지되는 기간, 그리고 암호화된 자격 증명이 iCloud에 동기화되는지 여부는 저장된 데이터 유형에 따라 다르며, 애플 지원 웹사이트에 문서화되어 있다.

## 잠금 및 잠금 해제
기본 키체인 파일은 `로그인` 키체인으로, 일반적으로 사용자의 로그인 비밀번호로 로그인 시 잠금 해제된다. 하지만 이 키체인의 비밀번호는 사용자의 로그인 비밀번호와 다를 수 있어 편리성을 희생하는 대신 보안을 강화할 수 있다. 키체인 접근 애플리케이션은 키체인에 빈 비밀번호를 설정하는 것을 허용하지 않는다.

컴퓨터가 일정 시간 동안 유휴 상태였을 경우 키체인이 자동으로 "잠금"되도록 설정할 수 있으며, 키체인 접근 애플리케이션에서 수동으로 잠글 수도 있다. 잠긴 상태에서는 다음에 키체인에 접근할 때 잠금 해제를 위해 비밀번호를 다시 입력해야 한다. `~/Library/Keychains/`의 파일을 새 파일로 덮어쓰는(예: 복원 작업의 일부로) 경우에도 키체인이 잠기고 다음 접근 시 비밀번호가 필요하다.

## 비밀번호 동기화
로그인 키체인이 로그인 비밀번호로 보호되는 경우, macOS에서 로그인 세션 내에서 로그인 비밀번호가 변경될 때마다 키체인의 비밀번호도 변경된다. 공유 Mac/비Mac 네트워크에서는 사용자의 로그인 비밀번호가 비Mac 시스템에서 변경되면 로그인 키체인의 비밀번호가 동기화를 잃을 수 있다. 또한, Active Directory 또는 Open Directory와 같은 디렉토리 서비스에서 비밀번호가 변경되거나, 다른 관리자 계정(예: 시스템 환경설정 사용)에서 비밀번호가 변경된 경우에도 마찬가지다. 일부 네트워크 관리자는 이 문제에 대응하여 로그아웃 시 키체인 파일을 삭제하여 다음 로그인 시 새 파일을 생성하도록 한다. 이는 로그인 비밀번호가 변경되지 않았더라도 키체인 비밀번호가 다음 세션으로 기억되지 않음을 의미한다. 이 경우 사용자는 `~/Library/Keychains/`에 있는 키체인 파일을 백업에서 복원할 수 있지만, 이렇게 하면 키체인이 잠기게 되므로 다음 사용 시 잠금 해제를 해야 한다.

## 키체인 동기화를 위한 서드파티 소프트웨어
Mac OS X의 키체인 접근을 사용하여 생성된 개인 키체인의 동기화를 가능하게 하는 서드파티 소프트웨어 애플리케이션이 개발되었다. 이러한 표준 키체인 접근에서 생성된 사용자 키체인은 Jinx Software의 패트릭 스타인이 개발한 키체인 동기화 앱 쌍(하나1는 Mac OS X용, 다른 하나는 iOS용인 Keychain2Go)을 사용하여 장치(아이폰-데스크톱 애플 컴퓨터) 간에 동기화할 수 있었다. Keychain2Go는 개발자가 Mac OS X Sierra 10.12에서 애플이 키체인 및 키체인 접근에 적용한 제한 사항을 고려하여 성공적으로 업데이트할 수 없었다.

## 보안
키체인은 iOS와 macOS 모두에 배포된다. iOS 버전은 모바일 장치에서 실행되는 애플리케이션이 일반적으로 매우 기본적인 키체인 기능만 필요하기 때문에 더 간단하다. 예를 들어 ACL(Access Control Lists) 및 다른 앱 간에 키체인 항목을 공유하는 기능은 없다. 따라서 iOS 키체인 항목은 이를 생성한 앱만 접근할 수 있다.

Mac 사용자의 중요한 정보를 저장하는 기본 저장소인 키체인은 보안 공격의 주요 대상이다.

2019년, 18세 독일 보안 연구원 리누스 헨체(Linus Henze)는 키체인에서 비밀번호를 추출하는 자신의 해킹 기술인 KeySteal을 시연했다. 처음에 그는 애플이 macOS에 대한 버그 바운티를 설정할 것을 요구하며 해킹 세부 정보를 공개하지 않았다. 그러나 헨체가 나중에 해킹을 공개했을 때 애플은 그렇게 하지 않았다. 이 해킹은 Safari가 보안 서비스에 접근하는 것을 이용했으며, IT 관리자가 키체인을 조작할 수 있도록 하는 macOS 유틸리티로 위장했다.

## 같이 보기

* 비밀번호 관리자 목록
* 비밀번호 관리자
* 암호학

## 각주

분류:인증