ref. 1 의 System Security 의 일부를 번역했다. 자세한 내용은 ref. 1을 보도록 하자.
iOS 보안-시스템 보안
기기암호화(device encryption) 는 기본적으로 설정되어 있으며, 설정을 변경할 수 없다.
Secure Boot Chain
- iOS 켜기
- --> AP 가 Boot ROM 의 code 를 실행
- the hardware root of trust 라고 알려져 있다.
- the chain of trust 의 첫번째 단계(first step) 이다.
- 이 code 는 변경불가능(immutable code)
- 칩제조(chip fabrication) 때 만들어 진다.
- implicitly trusted
- Apple Root CA public key 를 가지고 있다.
- 이 public key 는 iBoot bootloader 가 load 되기 전에 Apple 에 의해 서명(sign) 됐다는 것을 확인(verify) 하는데 사용된다.(아래 boot-time verification 참고.)
- Boot ROM 에 의해 추가적인 Low-Level Bootloader(LLB) stage 가 load 되고, 확인(verify) 된다.
- A9를 포함한 A9 이전의 A시리즈 processor 에만 존재.
- 만약 Boot ROM 이 LLB 또는 iBoot 을 load 하는 것을 실패하면, 기기는 DFU mode (Device Firmware Upgrade)로 들어가게 된다.
- 오래된 기기들에서 LLB 를 load 하는 것을 실패 하거나,
- 새로운 기기들에서 iBoot 을 load 하는 것을 실패하는 것
- LLB 나 iBoot 이 다음 작업(next step) 을 load 하거나 verify 하는 것을 실패하는 경우
- startup 은 멈춰지고(halt) iTunes 에 접속하라는 화면이 보여진다.
- --> recovery mode 이다.
- DFU mode 로 가거나, recovery mode 로 들어가면, USB 를 이용해서 iTunes 에 접속해서 "공장 기본 세팅(factory default settings)" 로 복구되어 져야만 한다.
- 기기가 Recovery Mode 와 DFU Mode 로 들어가기 전에 The Boot Progress Register (BPR) 가 update 된다. 이 update 된 값을 보고 Secure Enclave 가 user data 에 대한 접근제한을 하게 된다.
- Recovery Mode
- A10, S2 그리고 최신의 SoCs 를 가진 기기에서 iBoot 에 의해 BPR 이 set.
- DFU Mode : A12 SoC 를 가진 기기에서 Boot ROM 에 의해 BPR 이 set.
- --> iBoot 이 일들을 마치면
- --> iBoot 은 iOS kernel 을 확인(verify) 하고, 실행한다.
baseband subsystem 또한 이것과 비슷한 자신의 secure booting 을 이용한다.
Secure Enclave coprocessor 또한 secure boot process 를 이용하고, 그로인해 그것의 분리되 소프트웨어가 verified and signed by Apple 되었다는 것을 확신시켜준다.
secure boot |
시스템 소프트웨어 권한부여(System Software Authorization)
만약 과거버전의 iOS의 설치가 가능하다면 해커는 과거버전의 iOS를 깔고 권한을 가져올 수 있다. 이것을 막기 위해서 iOS는 System Software Authorization 을 이용한다. Secure Enclave 도 이것을 이용한다.iOS update
iOS update 는 2가지 방식(iTunes, OTA) 으로 가능하다.- iTunes 로 업데이트를 할 때
- iOS image 전체를 download
- Content Caching 옵션을 켠 macOS High Sierra 를 돌리는(run) Mac 을 사용한다면, 미리 cache 되어서, iOS 의 update 를 바로 할 수 있게 해준다.
- OTA 로 할 때: patch 를 할 내용만 다운로드한다.
installation authorization server
iOS update 할때 기기는 Apple 의 installation authorization server 에 접근한다.그리고 다음 3가지를 확인 한다.
- bundle의 measurements: 설치될 installation bundle들에 대한 암호화된 measurements(측정)
- installation bundle : iBoot, kernel, iOS Image
- nonce : signed data 를 가져다 다른 기기에 쓰는 것을 막아주고, system software 를 변경하지 못하게 막는다.
- ECID: 기기의 고유한 ECID(Exclusive Chip Identification) 를 서버로 보내게 된다.
installation authorization server 에서 하는일
서버에서는 이 installation bundle 의 버전들이 맞는 구성인지를 확인한다. 예를 들면 특정버전의 iBoot 은 특정 version 의 kernel 을 써야만 하는식이다. 이렇게 버전이 맞으면 이 measurement 에 ECID 를 더해서 sign 을 하고 이 sign 된 data 를 기기에 보내준다.sign(measurment + ECID) ---> device
boot-time verification
위에 설명한 startup process 가 "Apple 이 sign 한 code" 만 기기에 설치되는 것을 보장해 준다.- Apple 의 signature : boot time 에 일어나는 chain-of-trust evaluation 은 Apple 의 signature 를 verify 한다.
- disk 에서 load 되는 item 의 measurement: "disk 에서 load 되는 item 의 measurement (기기의 ECID를 이용해서 만들어져 있다.)"와 "signature 에 의해 감싸진 measurement(위의 installation authorization server 에서 받은)"가 맞는지를 verify 한다.
Secure Enclave
- Secure Enclave 는 보조 프로세서이다.
- SoC 안에 들어있다.(fabricated)
- 암호화된 메모리를 사용
- 하드웨어 난수발생기(random number generator) 를 포함.
- Secure Enclave Boot ROM
- application processor Boot ROM 과 비슷하게, Secure Enclave Boot ROM 은 변경이 불가능한 code (immutable code) 이다. Secure Enclave 를 위한 "하드웨어 root of trust" 를 확립한다.(establish)
- device 가 시작될 때, Secure Enclave Boot ROM 이 수명이 짧은 메모리 보호 키(ephemeral memory protection key)를 만든다.
- Secure Enclave 는 데이터 보호 키 관리에게 (Data Protection key management) 모든 암호화 기능(cryptographic operations)들을 제공
- 심지어 커널이 허락한 상태에도(kernel has been compromised) Data Protection 의 integrity (데이터가 변경, 파괴되지 않은 상태)을 유지.
- AP(Application processor) 와 Secure Enclave 사이의 통신은 interrupt-driven mailbox 와 shared memory data buffer 들과 분리되어 있다.
- Secure Enclave OS 를 실행
- Secure Enclave OS
- "L4 마이크로 커널의 Apple-customized version" 에 기초해서 만들어진 OS
- Apple 에 의해 sign 된다.
- Secure Enclave Boot ROM 가 verify
- 개인의 소프트웨어 업데이트 프로세스를 통해 update 된다.
- device 가 시작될 때, Secure Enclave Boot ROM 이 수명이 짧은 메모리 보호 키(ephemeral memory protection key)를 만든다.
- 이 키(memory protection key)는 기기의 UID 와 얽히게 만들고(entangle), 기기의 memory space 의 "Secure Enclave 부분"을 암호화 할 때 사용된다.
- 예외적으로 Apple 의 A7 에선, Secure Enclave memory "memory protection key" 로도 인증(authenticated) 이 가능하다. A11과 A11 이후 그리고 S4 SoC 들에서는 "memory protection key" 와 on-chip SRAM 에 저장된 nonce 들에 의해 인증된다.(authenticated)
- 그리고, A11과 A11 이후 그리고 S4 SoC 들에서 integrity tree 는 보안이 중요한 Secure Enclave memory 의 replay 를 막기위해 사용되어진다.
A12 와 S4 SoC 들이 있는 기기들에서, Secure Enclave 는 anti-replay counter storage 를 위해 secure storage IC 와 짝을 이룬다. secure storage IC 는 immutable ROM code, 하드웨어 random number generator, 암호화엔진들, physical tamper detection(물리적인 조작 감지) 과 함께 디자인됐다. counter 들을 읽고 업데이트 하기 위해서, Secure Enclave 와 storage IC 는 counter 들에게 exclusive access 를 보장하는 '안전한 protocol '를 사용한다.
Secure Enclave 의 "anti-replay 서비스"들은 event 에 사용된 data 의 철회(revocation of data over events)를 위해 사용되어진다.
이 이벤트들은 anti-replay 의 경계들(boundaries)을 표시 해 준다.
이벤트는 다음것들을 포함한다. 하지만 제한되진 않는다.
- Passcode change
- Touch ID or Face ID enable/disable
- Fingerprint add/delete
- Face ID reset
- Apple Pay card add/remove
- Erase All Content and Settings
댓글 없음:
댓글 쓰기