# iOS 18 비활성화 재부팅 리버스 엔지니어링

> Clean Markdown view of GeekNews topic #17829. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17829](https://news.hada.io/topic?id=17829)
- GeekNews Markdown: [https://news.hada.io/topic/17829.md](https://news.hada.io/topic/17829.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-11-18T15:33:21+09:00
- Updated: 2024-11-18T15:33:21+09:00
- Original source: [naehrdine.blogspot.com](https://naehrdine.blogspot.com/2024/11/reverse-engineering-ios-18-inactivity.html)
- Points: 3
- Comments: 1

## Topic Body

- iOS 18은 새로운 비활성화 재부팅 보안 기능을 도입했음 : "3일간 잠금 해제 되지 않으면 자동 재부팅"  
- 아이폰을 켜고 처음으로 암호를 입력하는 것과 나중에 잠금을 해제하기 위해 암호를 입력하는 것은 매우 다름  
- iPhone을 처음 시작할 때 암호를 입력하면 Secure Enclave Processor(SEP)의 키 저장소가 열리며, 이는 iPhone의 데이터를 암호화함  
  - **첫 번째 잠금 해제 전(BFU)** 상태에서는 사용자 데이터가 암호화되어 있으며, Face ID와 Touch ID가 작동하지 않고 암호 입력이 필요함. Wi-Fi 비밀번호가 암호화되어 있어 Wi-Fi 연결이 불가능하지만, SIM이 PIN으로 보호되지 않은 경우 셀룰러 네트워크에는 연결 가능함. 알림 내용 미리 보기 표시 안 됨.  
  - **첫 번째 잠금 해제 후(AFU)** 상태에서는 사용자 데이터가 복호화됨. iOS가 실행되는 동안 키 저장소가 열려 있어 Wi-Fi 연결과 메시지 알림 미리보기가 가능함. 그러나 이 상태는 공격에 더 취약함.  
- AFU 상태의 보안 약점: 공격자가 잠금 화면 우회 시 복호화된 데이터에 접근 가능. 물리적 접근 시 USB, Wi-Fi, Bluetooth, 또는 하드웨어 공격 취약점 이용 가능성 증가  
  
#### iPhone 재부팅에 대한 소문  
  
- 법 집행 기관은 AFU 상태에서 포렌식적으로 중요한 데이터를 얻기 위해 iPhone을 인터넷에서 격리된 상태로 유지함.  
- iOS 18에서는 iPhone이 무선 네트워크와 완전히 격리되어 있어도 재부팅된다는 소문이 있음  
- 또한, iOS 18의 iPhone이 더 낮은 iOS 버전의 iPhone에 무선으로 재부팅을 지시할 수 있다는 주장도 있음(기술적으로 가능성 낮음)  
  
#### 비활성화 재부팅 기능 발견  
  
- Apple은 새로운 기능을 추가할 때 디버그 문자열을 통해 힌트를 남김  
  - iOS 18.1부터 `inactivity_reboot` 문자열 등장. iOS 18.2에서 `inactivity_reboot_enabled`로 변경  
- 테스트 결과, **3일(72시간) 동안 잠금 해제되지 않을 경우 비활성화 재부팅 발생하는 것**을 확인  
  
#### 비활성화 재부팅 리버스 엔지니어링  
  
- Secure Enclave Processor(SEP)는 마지막 잠금 해제 시간을 추적하며, 3일이 초과되면 AppleSEPKeyStore 커널 모듈에 알림.  
- AppleSEPKeyStore 커널 모듈은 사용자 공간에 재부팅을 시작하도록 알림. SpringBoard는 모든 사용자 공간 프로세스를 안전하게 종료함.  
- 재부팅 후, keybagd는 NVRAM 변수 "aks-inactivity"를 읽고, 설정된 경우 Apple에 분석 이벤트를 보냄.  
- 재부팅 실패 시 커널 패닉 발생  
  
#### Secure Enclave Processor 역공학  
  
- SEP는 Apple의 가장 보호된 비밀 중 하나이며, 펌웨어는 암호화되어 있음.  
- SEP 펌웨어는 여러 앱으로 구성되어 있으며, SEPKeyStore와 관련된 앱은 "sks"로 불림.  
- SEP는 3일(72시간)을 초과할 경우 메시지를 생성하여 SEPKeyStore 커널 확장에 보냄.  
  
#### 경찰만을 겨냥한 대책인가?  
  
- **보안 개선 효과**: 언론에서는 이 기능이 주로 법 집행 기관을 겨냥한 것으로 보도했지만, 도난 방지 측면에서 큰 보안 향상이 이루어짐.   
  - 구형 법 집행 장비는 종종 eBay 같은 플랫폼에서 저렴하게 판매되는데, 도둑들이 이를 이용해 iPhone 데이터를 접근하는 사례를 줄임.  
  - 도둑들이 최신 해킹 도구를 구하거나 3일 내 기기를 해제할 재원을 확보하는 것은 현실적으로 어려움.  
- **기기 업데이트의 중요성**: 최신 iOS 버전을 유지하는 것은 개인 데이터를 안전하게 보호하는 데 매우 중요함.  
- **법 집행 기관의 적응 필요**:   
  - 법 집행 기관은 데이터 추출 절차를 3일 내에 완료하도록 조정할 필요가 있음.  
  - 일부 포렌식 도구 제조업체들은 이미 24시간 내 데이터 추출 절차를 조율할 수 있다고 발표.  
  - 이는 AFU 상태에서만 데이터를 추출할 수 있는 한계를 보여줌.  
- **보안 위협 비대칭성**:   
  - 도둑들에게는 이 기능이 사실상 데이터를 얻기 어렵게 만들어 주요 보안 장벽으로 작용.  
  - 반면, 법 집행 기관은 프로세스를 간소화하고 더 빠르게 대응해야 하는 부담이 있음.  
  
#### 주요 요점  
  
- **무선 활동과는 무관함**:   
  - 이 기능은 무선 네트워크 활동과 관련이 없음.   
  - 법 집행 기관 문서에서 언급된 "기기간 무선 통신으로 인한 재부팅" 주장은 신뢰하기 어려움.  
  - iOS 18 이전 기기의 재부팅은 소프트웨어 버그 때문일 가능성이 높음.  
- **SEP의 역할**:   
  - 비활성 상태 시간 측정과 재부팅 트리거는 SEP에서 수행.  
  - SEP는 SEPKeyStore 커널 확장과 통신하여 재부팅 명령을 실행.  
  - 인터넷 또는 셀룰러 네트워크를 통한 외부 시간 조작이 3일 타이머에 영향을 미치지 않을 가능성이 높음.  
- **강력한 보안 기능**:   
  - 공격자가 비활성 재부팅을 막으려면 커널 코드 실행 권한이 필요.  
  - 포렌식 분석가는 데이터 추출을 위해 재부팅을 지연시킬 수 있을지라도, 최초 해킹은 3일 내에 이루어져야 함.  
- **위협 환경의 변화**:  
  - 도둑과 포렌식 분석가 모두에게 새로운 도전 과제를 제시.  
  - 도둑들에게는 iPhone에 저장된 은행 계좌 및 기타 민감한 데이터 접근을 사실상 차단함.  
  - 법 집행 기관은 데이터 접근을 위해 더 빠르게 대응해야 하는 압박을 받게 됨.

## Comments



### Comment 31449

- Author: neo
- Created: 2024-11-18T15:33:22+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42167633) 
- AFU 상태에서 사용자 데이터가 해독됨. 개발자는 데이터 보호를 위해 다양한 키를 선택할 수 있음. Apple은 사용자의 건강 데이터와 같은 민감한 정보를 보호하기 위해 특정 키를 사용함
  - Apple의 데이터 보호 클래스에 대한 정보는 [여기](https://support.apple.com/guide/security/data-protection-classes-secb010e978a/web)에서 확인 가능함

- 네트워크에 연결되지 않는 부분에 너무 많은 강조가 있는 이유에 대한 의문이 제기됨. GrapheneOS는 이미 일정 시간 후 자동 재부팅 기능을 제공하고 있으며, 이는 데이터 유출 방지에 효과적임

- 두 가지 질문이 제기됨:
  - 1. 잠긴 iPhone을 3일마다 무조건 재부팅하면 합법적인 사용 사례에서 문제가 발생할 수 있음
  - 2. 기사가 맞다면, 보안을 위해 "Before First Unlock" 상태로 돌아가기 위해 재부팅한다고 함. 왜 재부팅 없이 이 상태로 전환할 수 없는지에 대한 의문이 있음
  - 보너스 질문: Android 폰은 몇 시간 동안 움직임이 없을 때 재부팅 후처럼 비밀번호를 요구함. 이는 iPhone의 "Before First Unlock" 상태와 다른지에 대한 궁금증이 있음

- Apple이 SEP 펌웨어를 암호화하는 이유에 대한 궁금증이 제기됨. 보안 모델에 필수적이지 않다면 지적 재산 보호를 위한 것일 수 있음

- Apple이 기기 보안에서 앞서 나가는 모습을 보여주는 훌륭한 글임

- iOS 18이 다른 폰에 무선으로 재부팅을 지시할 가능성에 대해 언급했으나, 이후 다시 다루지 않은 것 같음

- AOSP의 BFU와 AFU 잠금 해제 방식과 유사하다는 의견이 있음

- Secure Enclave에서 관리되고 있을 것이라고 의심됨. 이는 iOS가 완전히 손상되더라도 비활성화하기 매우 어려울 것임

- 왜 3일이라는 특정 시간이 설정되었는지, 사용자 설정 가능한 지연이 아닌 이유에 대한 질문이 있음

- 훌륭한 글에 감사하며, 훌륭한 분석임
