[iOS] iOS 소개와 구조

hack_98·2023년 1월 14일
0

iOS

목록 보기
1/6
post-thumbnail

1. iOS 소개

  • 애플의 모바일 운영체제
  • 애플에서 개발한 오픈소스 Unix 운영체제인 Darwin 기반
  • iOS 버전에 따라 지원 모델이 다르기 때문에, 유의하고 단말기 준비

2. iOS 애플리케이션 구조

1) 구조

  • 계층 구조로 앱은 하드웨어와 직접 통신하지 않음
  • 정의된 시스템 인터페이스를 통해 하드웨어와 통신
  1. Cocoa Touch : 모든 애플리케이션에 인프라 제공 (주로 앱 인터페이스 담당)
  2. Media Layer : 그래픽, 오디오 비디오를 표시하는 라이브러리
  3. Core Services : 시스템의 다른 서비스를 애플리케이션에 제공(네트워크, 위치), 앱의 필수 기능제공
  4. 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 (활성)
    • Foground 에서 실행되어 이벤트 받음
  • Background (백그라운드)
    • 사용자 상호작용 없이 코드 실행
  • Suspended (일시중단)
    • 백그라운드 상태로 메모리 존재하지만 코드 실행하지 않음
profile
Go Big or Go Home

0개의 댓글