
1. iOS 소개
- 애플의 모바일 운영체제
- 애플에서 개발한 오픈소스 Unix 운영체제인 Darwin 기반
- iOS 버전에 따라 지원 모델이 다르기 때문에, 유의하고 단말기 준비
2. iOS 애플리케이션 구조
1) 구조
- 계층 구조로 앱은 하드웨어와 직접 통신하지 않음
- 정의된 시스템 인터페이스를 통해 하드웨어와 통신
- Cocoa Touch : 모든 애플리케이션에 인프라 제공 (주로 앱 인터페이스 담당)
- Media Layer : 그래픽, 오디오 비디오를 표시하는 라이브러리
- Core Services : 시스템의 다른 서비스를 애플리케이션에 제공(네트워크, 위치), 앱의 필수 기능제공
- Core OS : 나머지 상위계층에서 작업을 실행하는데 사용되는 라이브러리
3. iOS 보안 모델
1) 주요기능
- 보안 구조를 하드웨어, 운영체제, 애플리케이션 레벨로 계층화
- 애플리케이션 샌드박스
- 하드웨어/펌웨어 레벨에서 바로 암호화
- 암호화를 통한 데이터 보호
- 코드 서명
2) iOS 보안 부트 체인
- 보안 부트 체인 매커니즘을 사용하여 부트 프로세스에서 보안을 제공
- 부트 수준에서 감염 가능성 때문
- 각 단계별로 검사를 통해 위변조 검증
- iOS 가 확인된 애플 디바이스에서만 실행될 수 있음

3) 보안 부트 체인의 상세 과정
1. Boot ROM
- 초기단계이며 업데이트 또는 변경이 불가
- 애플 루트 인증서가 포함되어 있어 LLB가 올바르게 서명되어 있는지 검증
- LLB가 검증되지 못하면 DFU(공장 초기화?) 모드로 진입/ 탈옥이 잘못되었을 경우
2. LOW Level Bootloader
- Boot ROM 단계에서 LLB 서명 유효한 이후 실행되는 단계
- 업데이트 가능 / 하드웨어와 가까운 코드
- iBoot를 로드하기 전에 펌웨어 서명 검증함
- iBoot가 검증되지 못하면 Recovery(파일 유지 + 업그레이드/재설치)모드 진입
3. iBoot
- LLB단계에서 iBoot 서명이 유효하면 실행
- 커널을 시작하기 전 서명 검증 / 실패하면 Recovery 모드 진입
4. 샌드박스와 코드서명
1) 샌드박스
- 샌드박스는 ios접근 제어 기술로 커널에서 실행
- 앱 손상 시 시스템과 사용자의 데이터 손상을 방지하는 목적
- 애플리케이션이 관련 없는 다른 데이터에 접근 방지 , 권한 분리 (탈옥 할 경우 취약하게 됨)
- 앱이 손상될 경우 중요한 시스템까지 영향 및 손상을 줄 수 있기때문에, 샌드박스를 이용해 보안함
2) 앱 코드서명
- 애플이 서명한 코드만 실행되도록 DRM 시스템 구현
- 앱 스토어에서 서명하지 않은 앱은 설치 불가 (앱 설치는 런타임 시 코드서명 검사 실행)
- Xcode를 사용해 앱 코드 서명을 수행
- 애플 스토어에 앱을 출시하기 위해서는 애플 서명 인증서 구매 필수 !
5. iOS 생명주기
- Not running (실행 중 아님)
- Inactive (비활성)
- Active (활성)
- Background (백그라운드)
- Suspended (일시중단)
- 백그라운드 상태로 메모리 존재하지만 코드 실행하지 않음