Apple Silicon이 탑재된 Mac의 시동 프로세스
Apple Silicon이 탑재된 Mac이 켜져 있으면 Mac은 iPhone 및 iPad와 매우 유사한 시동 프로세스를 수행합니다.
이 칩은 신뢰 체인의 첫 번째 단계에 Boot ROM에서 코드를 실행합니다. Apple Silicon이 탑재된 Mac의 macOS 보안 시동은 운영 체제 코드 자체뿐만 아니라 인증된 사용자가 구성한 보안 정책 및 KEXT(지원되지만 권장되지는 않음)도 확인합니다.
LLB(저레벨 부트로더를 의미함)가 실행되면 서명을 확인하고 저장 장치, 디스플레이, 시스템 관리, Thunderbolt 컨트롤러와 같은 내부 SoC 코어에 대한 시스템 페어링 펌웨어를 로드합니다. 또한 LLB는 Secure Enclave 프로세서가 서명한 파일인 LocalPolicy의 로드도 담당합니다. LocalPolicy 파일은 시스템 시동 및 런타임 보안 정책과 관련하여 사용자가 선택한 구성을 설명합니다. LocalPolicy는 다른 모든 시동 개체와 동일한 데이터 구조 형식을 띄지만, 소프트웨어 업데이트처럼 Apple 중앙 서버에서 서명되는 것이 아니라 특정 컴퓨터의 Secure Enclave 내에서만 지원되는 개인 키를 통해 로컬로 서명됩니다.
이전 LocalPolicy의 재전송을 방지하기 위해 LLB는 Secure Enclave에 연결된 보안 저장 장치 구성 요소에서 재전송 방지 값을 찾습니다. 이를 위해 Secure Enclave Boot ROM을 사용하며 LocalPolicy의 재전송 방지 값이 보안 저장 장치 구성 요소의 재전송 방지 값과 일치하는지 확인합니다. 이를 통해 보안 업그레이드 후 더 낮은 보안 수준으로 구성되었을 수 있던 이전 LocalPolicy가 시스템에 재적용되지 않도록 합니다. 그 결과 Apple Silicon이 탑재된 Mac의 보안 시동은 운영 체제 버전의 롤백뿐만 아니라 보안 정책의 다운그레이드로부터 보호하는 데 도움이 됩니다.
LocalPolicy 파일은 운영 체제가 완전 보안, 부분 보안 또는 최소 보안 중 어떤 모드로 구성될지를 결정합니다.
완전 보안: 시스템은 iOS 및 iPadOS와 같이 작동하며, 설치 시 지원되는 가장 최신 소프트웨어의 시동만을 허용합니다.
부분 보안: LLB는 운영 체제와 함께 제공되는 ‘전역’ 서명을 신뢰하도록 지정됩니다. 이를 통해 시스템은 이전 macOS 버전을 실행할 수 있게 됩니다. 이전 macOS 버전은 불가피하게 패치되지 않은 취약성을 내포하며, 이 모드가 부분 보안으로 설명되는 것도 이와 같은 이유에서입니다. 이는 시동 KEXT(커널 확장 프로그램)를 지원하는 데 필요한 정책 수준이기도 합니다.
최소 보안: iBoot 이상에 대해 전역 서명 확인을 사용한다는 점에서 시스템이 부분 보안처럼 작동하지만, 이 모드는 LocalPolicy에 서명하는 데 사용된 동일한 키로 Secure Enclave에서 서명하는 일부 시동 개체를 허용해야 함을 iBoot에 알립니다. 이 정책 수준은 사용자가 자신의 사용자 설정 XNU 커널을 빌드하고, 서명하고, 시동할 수 있도록 지원합니다.
선택한 운영 체제가 완전 보안에서 실행된다고 LocalPolicy가 LLB에 표시하면 LLB는 iBoot의 개인 맞춤화된 서명을 평가합니다. 부분 보안 또는 최소 보안에서 실행 중인 경우 전역 서명을 평가합니다. 서명 확인에 오류가 있으면 시스템이 복구용 OS로 시동되어 복구 옵션을 제공합니다.
LLB에서 iBoot로 전달되고 나면 보안 뉴럴 엔진, 항상 켬 프로세스용 펌웨어 및 기타 펌웨어처럼 macOS와 페어링된 펌웨어가 로드됩니다. iBoot는 LLB에서 넘겨받은 LocalPolicy 관련 정보도 확인합니다. LocalPolicy에서 AuxKC(보조 커널 모음)가 있어야 한다고 표시되면 iBoot는 파일 시스템에서 AuxKC를 찾아 LocalPolicy와 동일한 키로 Secure Enclave에서 서명했는지 확인하고 해당 해시가 LocalPolicy에 저장된 해시와 일치하는지 검증합니다. AuxKC가 확인되면 iBoot는 이를 시동 커널 모음의 메모리에 저장한 후, SCIP(시스템 보조 프로세서 무결성 보호)로 시동 커널 모음과 AuxKC를 아우르는 전체 메모리 영역을 잠급니다. 정책에 AuxKC가 있어야 하지만 찾을 수 없다고 표시되는 경우 시스템은 AuxKC 없이 계속 macOS로 시동됩니다. 또한 iBoot는 SSV(서명된 시스템 볼륨) 루트 해시를 확인하여 커널이 마운트할 파일 시스템의 전체 무결성이 검증되었는지 확인합니다.