본문 바로가기
Security

안드로이드 Device측면의 security

by 누워서 코딩 2019. 2. 20.

Layer1 즉 Device 레벨에서의 Security 관련 기능에 대해 알아보자.


부트로더(Bootloader), 복구 이미지(Recovery Image) 마지막으로 검증된 부트(Verified Boot)기능에 대해 설명한다.

Verified Boot는 임의의 악성 프로그램들로부터 system partition의 조작을 방어하는것이다.
이에 대한 솔루션으로 App와 같은 user-data가 들어있는 user partition을 암호화하는 것이다.
이 user partition을 암호화하는 방법에 대해 설명한다.

OS 부팅과 설치 제어 installer  control :
임의의 해커들은 Device에 물리적인 영역에서 접근권한만 얻는다면, filesystem이나 Directory와 같은 상위레벨의
접근은 물론이거니와 Memory와 Disc driver와 같은 하위레벨영역으로도 충분히 접근할수 있을것이다.
  
다음은 해커가 쉽게 해킹할수 있는 다양한 예들이다.
a. Device를 해체하여 usb 디버그를 통해 특정data를 읽어올수있다. 
b. Device내부의 memory만 떼어내어 원하는 data를 쉽게 들여다 볼수 있는것이다.
c. Device update 메커니즘으로 system file을 변경하거나 접근제한을 풀수있다.
d. 접근제한을 풀어 다른 운영체제를 부팅하여 원하는 data에 접근할수도있다.

하지만 다행히 안드로이드 디바이스의 경우는 기본적으로 잠금 장치가 있어 이러한 임의의 조작은 힘들게끔 되어있다. 
하지만 해당 제조사가 보유한 고유 Code서명키만 안다면 불가능한것은 아니다.

1. 부트로더(Bootloader)
부트로더는 디바이스의 전원이 인가되면 부팅을 위해 제일먼저 실행되는 프로그램이다.
이 부트로더는 램영역에 상주하는 형석으로 부팅에 필요한 기본적인 하드웨어를 초기화하는 역할을 담당한다.
최근 OS가 발전함에 따라 이 부트로더는 한개가 아닌 여러개의 부트로더를 가지며 제조사마다 고유의 프로세스로
진행되는 특수한 성격을 띄고있다.
안드로이드 디바이스의 경우는 리눅스를 근간하는 비슷하지만 조금은 다른형식의 부트로더를 가지고 있다. 
LK라고 불리는 이고유의 부트로더는 실제 커널을 적재하고 실행하는 역할을 담당한다.
또한 downlad mode와 fastboot 기능도 기본적으로 지원한다. 이 fastboot mode에서 각 파티션이미지들을 Device의 메모리영역에 저장하게된다. ADB(Android Debug Bridge)를 통해 reboot bootloader명령으로 fastboot mode로의 진입도 가능하다.
안드로이드 이외의 부트로더는 밴더와 같은 제조사에서만든 부트로더에 해당한다.
부팅단계로보면 이 LK이전 단계에 해당된다. 이 단계에서는 제조사마다의 고유의 보안 부트(Secure Boot) 메커니즘을 적용할수 있다.(Secure Boot 솔루션이 있는 경우에 해당됨)

2. 복구 이미지(Recovery Image)
부트로더와 비슷한 성격의 부트로더이다. 다운로드중 다운로드 실패, 부팅중 예상치못한 에러에 따라 부팅하지 못하는등의 치명적인 에러에 대한 복구를 위한 부트로더이다. 이 복구이미지는 OTA(Over the Air)로 배포되는 이미지에 포함되어 
사후 업데이트시에 적용되는 솔루션의 한종류이다.

3. 검증된 부트(Verified Boot)
안드로이드의 Verified Bootsms 디바이스의 무결성을 검증하는 dm-verity(Device Mapper - Verity)에 기반해서 구현되었다. Device-Mapper는 가상 블럭 디바이스(Vitual Block Device)를 구현할 수 있는 범용 기법으로 제공하는 리눅스 커널 프레임워크(Linux Kernel Framework)이다. DM은 LVM(Logical Volume Manager)에 기반하여 dm-crypt알고리즘일 이용하여 디스크전체를 암호화 한다. RAID 어레이와 DRS(Distributed Replicated Storage) 구현에도 사용된다.

'Security' 카테고리의 다른 글

ERC (Etherium Request Commnet)의 계층 구조와 디앱  (0) 2022.02.13
DM-Verity 연산  (0) 2019.02.21
Android에서 DM-Verity 동작되는 원리 이해  (0) 2019.02.18
리눅스 시스템에서의 DM-Verity란?  (0) 2019.02.18
SELinux 소개  (0) 2019.01.28

댓글