2 분 소요


img

iOS 보안 아키텍쳐

  • iOS 보안 모델



iOS 보안 모델

img

애플은 보안 아키텍쳐에 대해 중점적으로 강조하며, 이를 개발자들에게 설명하고 있다.

iOS는 Darwin(Unix 계열)에 기반하며, 커널은 MachFreeBSD를 결합한 구조다.

데스크탑 운영체제 (X OS, MacOS)에 비해서는 좀 더 제한된 환경에서 구동되는데, 파일 시스템 수준에서 앱이 서로 격리되어 있으며, 시스템 API 호출제약을 많이 받도록 되어 있다.

애플은 구동되는 앱을 제한하여 악성 앱으로부터 보호하는데, 오직 단일 애플 공식 앱스토어에서만 앱을 배포하고 다운로드 받을 수 있다. 이러한 부분이 안드로이드와 다른데, 애플 MDM에 의해 별도로 설치하는 방법을 예외로 하고 있다.

iOS 앱은 샌드박스에 의해 서로 격리되는데, MAC(강제 접근 제어) 방식으로 앱이 접근할 수 있는 자원을 제한하는 구조다. 앱 간 통신, 즉 IPC 경우에도 안드로이드 보다 더 제한적이다.

하드웨어의 경우에도 단일 제조사라는 이점을 활용해 H/W와 S/W 간 결합을 강화시켰고, 시큐어부트 하드웨어 기반 키체인, 파일 시스템 암호화 등의 보안 구조를 강화했다.

애플은 iOS 보안 아키텍처를 다음과 같이 6가지 핵심 컨셉으로 구성했다.


하드웨어 보안

image-20221218221902343

애플은 단일 제조사로부터 하드웨어 기반 보안 기능을 충분히 활용하고 있다.

단말이 공장으로부터 출시될 때부터 하드웨어 기반 AES 256 비트 암호 키를 제공하는데, 이를 S/W 적으로 추출하기 힘든 구조로 되어 있다.

또한, 이러한 키는 파일 시스템 상의 암호화 시 범용적으로 사용되며, 키 관리 보안수준을 높여준다.


시큐어 부트

단말기의 전원을 켜면 부트 롬(ROM) 영역에서 초기 명령어를 읽는데, 부트 롬은 변형 불가 코드애플 루트 CA를 포함하며, 하드웨어 에 심어져 있어 보안을 강화한다.

부팅 이후 절차에서도 LLB(Low Level Bootloader)의 서명을 검증하고, iOS 커널의 서명도 검증하면서 변조 여부를 검사한다. 이 때 실패하는 경우 DFU(Device Firmware Upgrade) 모드로 진입하여 정상적인 펌웨어 이미지로 복구할 수 있도록 하였으며, 이 상태에서는 아무 기능도 사용할 수 없다.

이러한 일련의 부팅 절차를 시큐어 부트 체인(Secure Boot Chain)이라고 부르며, 커널, 부트로더, 펌웨어 등의 무결성을 하드웨어 적으로 검사하는 것이 목적이다.


코드 서명

애플은 정교한 DRM 시스템을 고안하여 애플에서 승인한 코드만 단말에서 시행할 수 있도록 설계하는데, 즉 애플 앱 스토어에서 내려받지 않은 코드는 기본적으로 실행이 불가하다.

앱을 구동하기 위해서는 개발자 프로파일과 애플에서 서명한 인증서가 필요한데, 앱이 스토어에 배포할 때 정식으로 등록된 코드 서명을 하게 되며, 사용자가 다운로드 받아 설치할 때 이를 검증하게 된다.


암호화 및 데이터 보호

앱 스토어에서 다운로드 받는 앱은 FairePlay Code 암호화가 적용된다. 페어플레이(FairPlay)는 원래 미디어 컨텐츠를 구입할 때 DRM 용으로 개발된 건데, 실행 파일에도 응용하게 된 것이다.

이는 애플 계정 등록 시 키가 생성되는데, 개인 키단말에 저장하고 페어플레이가 적용된 코드복호화시켜 정상적으로 구동될 수 있게 하는 것이다.

단말기는 출시부터 하드웨어 기반 AES, SHA 등의 암호 알고리즘을 제공하는 암호화 엔진을 제공한다. AP(Application Processor)에응 UID(Unique Idenrifier)가 심어져 있어 외부에서 추출이 불가하며, 오직 암호화 엔진에서만 접근이 가능하도록 설계되어 있다. 이를 기반으로 용도 별 키를 생성하고 관리하는데 이용하며, 데이터 보호의 목적을 실현하고 있다.


샌드박스

appsandbox는 iOS 접근 제어 기술이다. 커널 수준에서 강제되며, 앱이 위/변조 되었을 때 시스템과 사용자 데이터에 영향을 줄 수 있는 피해를 최소화한다.

샌드박스는 보안의 핵심이라고 할 수 있으며, 시스템 어플리케이션과 달리 사용자 어플리케이션은 각자의 유일한 사용자 계정으로 구동하게되며, 일부 시스템 API와 자신의 파일에 대한 접근만 허용되는 컨테이너(Container)에 구속된다. 이외의 모든 자원에 접근하는 것은 샌드박스에 의해 제어된다.


기타

iOS 운영체제는 ASLR(Address Space Layout Randomization)과 XN(eXecute Never) 비트를 구현하여 해킹 시도를 방어하고 있다.

ASLR은 프로그램이 실행될 때마다 실행 파일, 데이터, 힙 스택 등의 메모리 상에 적재되는 위치를 바꾸는 보안 기술인데, 메모리 해킹 공격(ex.return-to-libc 공격) 방지에 효과가 있다.

XN 메커니즘은 프로세스의 선택한 메모리 영역을 실행불가로 마킹할 수 있도록 한다. 이 기술을 이용하면 스택(Stack)이나 (Heap)에 기계어 코드를 삽입하는 공격을 막을 수 있다.

업데이트: