LocalPolicy 서명 키 생성 및 관리
생성
제조 과정에서 macOS를 처음 설치하거나 테더링된 제거 및 설치가 수행된 경우, Mac은 임시 복원 RAM 디스크의 코드를 실행해 기본 상태로 복원합니다. 이 과정에서 복원 환경은 새로운 공개 키와 개인 키 한 쌍을 생성하며 이는 Secure Enclave에 보관됩니다. 해당 개인 키는 OIK(소유자 신원 키)라고 합니다. 이미 존재하는 OIK는 이 과정에서 제거됩니다. 복원 환경은 또한 활성화 잠금에 사용된 키인 UIK(사용자 신원 키)를 초기화합니다. 해당 과정 중 Apple Silicon이 탑재된 Mac에서 독특한 부분은 활성화 잠금에 UIK 인증서가 요구되는 경우로, LocalPolicy에서 필요한 일련의 제약이 검증 시 시행되는 것을 포함합니다. 기기에서 활성화 잠금에 UIK를 인증할 수 없는 경우(예: 기기가 현재 나의 Mac 찾기 계정에 연결되어 있고 분실한 것으로 알려짐), 로컬 정책 생성을 더 이상 진행할 수 없습니다. 기기가 ucrt(사용자 신원 인증서)를 발행한 경우, 해당 ucrt는 X.509 v3 확장 프로그램에서 서버에서 요구하는 정책 제약 및 사용자 요청 정책 제한을 포함합니다.
활성화 잠금/ucrt
를 성공적으로 불러온 경우, 이는 서버 쪽의 데이터베이스에 저장되며 기기에도 반환됩니다. 기기에서 ucrt를 보유한 후에는 OIK에 대응하는 공개 키 인증 요청이 BAA(기본 증명 인증 기관) 서버로 전송됩니다. BAA는 BAA 접근 가능 데이터베이스에 저장된 ucrt의 공개 키를 사용하여 OIK 인증 요청을 확인합니다. BAA가 인증을 확인할 수 있는 경우 BAA가 서명하고 ucrt에 저장된 제약을 포함하는 OIC(소유자 신원 인증서)를 반환하며 공개 키를 인증합니다. 해당 OIC는 Secure Enclave로 다시 전송됩니다. 그때부터 Secure Enclave가 새로운 LocalPolicy에 서명할 때마다 Image4에 OIC를 연결합니다. LLB에는 BAA 루트 인증서에 대한 신뢰가 내장되어 있으며 이로 인해 OIC를 신뢰하고 전반적인 LocalPolicy 서명을 신뢰하게 됩니다.
RemotePolicy 제약
로컬 정책뿐 아니라 모든 Image4 파일은 Image4 매니페스트 평가에 제약이 있습니다. 이러한 제약은 리프 인증서의 OID(특수 개체 식별자)를 사용하여 인코딩됩니다. Image4 확인 보관함은 서명 평가 중 인증서에서 특수 인증서 제약 OID를 검색한 다음, 명시된 제약을 기계적으로 평가합니다. 제약의 형식은 다음과 같습니다.
X는 반드시 존재함
X는 반드시 존재하지 않음
X는 반드시 특별한 값을 가짐
예를 들어, ‘개인 맞춤화된’ 서명의 경우 인증서 제약에는 ‘ECID가 반드시 존재함’이 포함되며, ‘전역’ 서명의 경우 ‘ECID가 반드시 존재하지 않음’이 포함됩니다. 이러한 제약은 주어진 키로 서명된 모든 Image4 파일이 특정 요건을 준수하여 잘못 서명된 Image4 매니페스트가 생성되지 않도록 합니다.
각 LocalPolicy의 측면에서는 Image4 인증서 제약을 RemotePolicy라고 합니다. 다른 시동 환경의 LocalPolicies에 다른 RemotePolicy가 존재할 수 있습니다. RemotePolicy는 복구용 OS LocalPolicy를 제한하는 데 사용되어 복구용 OS가 시동될 때 완전 보안을 사용하여 시동되는 것처럼만 동작하도록 할 수 있습니다. 이로 인해 정책을 변경할 수 있는 장소로서 복구용 OS 시동 환경의 무결성에 대한 신뢰도가 높아집니다. RemotePolicy는 LocalPolicy가 생성된 Mac의 ECID와 해당 Mac의 보안 저장 장치 구성 요소에 저장된 특정 Remote Policy nonce 해시(rpnh
)를 포함하도록 제한합니다. rpnh
, 즉 RemotePolicy는 나의 Mac 찾기 및 활성화 잠금에 등록, 등록 해제, 원격 잠금, 원격으로 지우기 등과 같은 작업이 수행될 경우에만 변경됩니다. Remote Policy 제약은 UIK(사용자 신원 키) 인증 시 확정되고 지정되며 발급된 ucrt(사용자 신원 인증서)로 로그인합니다. ECID, ChipID 및 BoardID와 같은 일부 Remote Policy 제약은 서버에서 결정합니다. 이는 한 기기에서 다른 기기에 대해 LocalPolicy 파일을 서명하는 것을 방지하기 위한 것입니다. 기기는 다른 Remote Policy 제약을 지정하여 현재 OIK 접근에 필요한 로컬 인증 및 기기가 활성화 잠금 상태인 계정의 원격 인증을 제공하지 않고도 로컬 정책의 보안 다운그레이드를 방지할 수 있습니다.