서명된 시스템 볼륨 보안
macOS 10.15에서 Apple은 시스템 콘텐츠 전용으로 격리된 읽기 전용 시스템 볼륨을 도입했습니다. macOS 11 이상 버전은 SSV(서명된 시스템 볼륨)가 있는 시스템 콘텐츠에 강력한 암호화 보호 기능을 추가합니다. SSV는 런타임 시 시스템 콘텐츠의 무결성을 확인하고 Apple의 암호 서명이 유효하지 않은 데이터(코드 및 비코드 포함)를 거부하는 커널 메커니즘을 특징으로 합니다. iOS 15 및 iPadOS 15부터, iPhone 또는 iPad의 시스템 볼륨은 서명된 시스템 볼륨의 암호화 보호 또한 받습니다.
SSV는 운영 체제의 일부인 Apple 소프트웨어의 변조를 방지할 뿐 아니라 macOS 소프트웨어 업데이트의 신뢰성과 안전성을 높입니다. 한편 SSV는 APFS(Apple 파일 시스템) 스냅샷을 활용하므로, 업데이트를 수행할 수 없는 경우 이전 시스템 버전을 다시 설치하지 않고 복원할 수 있습니다.
SSV의 도입 이후 APFS는 내장 저장 장치의 비암호화 체크섬을 통해 파일 시스템 메타데이터 무결성을 제공해 왔습니다. SSV는 암호화 해시를 추가하고 파일 데이터의 모든 바이트를 포함하도록 이를 확장하여 무결성 메커니즘을 강화합니다. 파일 시스템 메타데이터 등 내장 저장 장치의 데이터는 읽기 경로에서 암호로 해시되며, 이후 해당 해시와 파일 시스템 메타데이터의 예상 값이 비교됩니다. 불일치가 있을 경우 시스템은 데이터가 변조되었다고 가정하고 요청한 소프트웨어에 데이터를 반환하지 않습니다.
각 SSV SHA256 해시는 그 자체로 해시되는 기본 파일 시스템 메타데이터 트리에 저장됩니다. 또한 트리의 각 노드는 반복적으로 해당 하위 항목 해시(바이너리 해시(Merkle) 트리와 유사함)의 무결성을 확인하므로 SEAL이라고 하는 루트 노드의 해시 값은 SSV 데이터의 모든 바이트를 포함합니다. 이는 암호화 서명이 시스템 볼륨 전체에 적용됨을 뜻합니다.
macOS 설치 및 업데이트가 진행되는 동안 SEAL은 기기 내 파일 시스템에서 다시 산출되며, 이 값은 Apple에서 서명한 측정 값을 기준으로 확인을 거칩니다. Apple Silicon이 탑재된 Mac의 부트로더는 제어 권한을 커널로 이전하기 전에 해당 SEAL을 확인합니다. Apple T2 보안 칩이 탑재된 Intel 기반 Mac에서 부트로더는 측정값과 서명을 커널로 전달한 다음, 루트 파일 시스템에 마운트하기 전에 직접 SEAL을 확인합니다. 두 경우 모두 확인에 실패하면 시동 프로세스가 중단되고 사용자에게 macOS를 다시 설치하라는 메시지가 표시됩니다. 사용자가 더 낮은 수준의 보안 모드에 진입하도록 설정하고 서명된 시스템 볼륨을 별도로 비활성화하도록 선택하지 않는 한 이 프로세스는 시동 시마다 반복됩니다.
iOS 및 iPadOS 소프트웨어 업데이트 중에 시스템 볼륨은 비슷한 방법으로 준비되고 다시 산출됩니다. iOS 및 iPadOS 부트로더는 기기가 커널을 시작하도록 허용하기 전에 SEAL이 그대로 유지되었는지와 Apple이 서명한 값과 일치하는지를 확인합니다. 시동 시 불일치가 있을 경우, 사용자에게 기기의 시스템 소프트웨어를 업데이트하도록 요청합니다. 사용자는 iOS 및 iPadOS에서 서명된 시스템 볼륨의 보호를 해제할 수 없습니다.
SSV 및 코드 서명
코드 서명은 계속해서 사용되며 커널에서 시행됩니다. 서명된 시스템 볼륨은 내장 저장 장치에서 바이트를 전혀 읽을 수 없는 경우를 보호합니다. 반대로, 코드 서명은 Mach 개체가 실행 가능한 것으로 메모리 매핑될 때 보호 기능을 제공합니다. SSV 및 코드 서명 모두 읽기 및 실행 경로 전체에서 실행 가능한 코드를 보호한다는 공통점이 있습니다.
SSV 및 FileVault
macOS 11 이상에서는 SSV가 시스템 콘텐츠에 대한 동급의 유휴 상태 보호 기능을 제공하여 시스템 볼륨이 더 이상 암호화될 필요가 없도록 합니다. 유휴 상태에서 파일 시스템이 변경되면 파일 시스템에서 읽어 들일 때 이를 탐지합니다. 사용자가 FileVault를 켠 경우 데이터 볼륨에 있는 사용자의 콘텐츠는 여전히 사용자가 지정한 비밀 키로 암호화됩니다.
사용자가 SSV를 비활성화하기로 선택한 경우 시스템이 유휴 상태일 때 변조에 취약해지며, 공격자는 이러한 공격으로 다음에 시스템이 시동될 때 암호화된 사용자 데이터를 추출할 수 있게 됩니다. 따라서 FileVault를 켠 경우 사용자는 시스템에서 SSV를 비활성화할 수 없습니다. 두 볼륨에서 유휴 상태 보호 기능은 일관되게 활성화하거나 비활성화해야 합니다.
macOS 10.15 또는 이전 버전에서 FileVault는 사용자 지정 비밀로 보호되는 키로 사용자 및 시스템 콘텐츠를 암호화하여 유휴 상태인 운영 체제 소프트웨어를 보호합니다. 이로써 기기에 물리적 접근이 가능한 공격자가 시스템 소프트웨어를 포함하는 파일 시스템에 접근하거나 실제로 이를 수정하는 것을 방지합니다.
SSV와 Apple T2 보안 칩이 탑재된 Mac
Apple T2 보안 칩이 탑재된 Mac에서 macOS만이 자체적으로 SSV의 보호를 받습니다. T2 칩에서 실행되고 macOS를 확인하는 소프트웨어는 보안 시동의 보호를 받지 않습니다.