Season 1/기술 보안

[ Android ] 기초 정리 - Build & SandBox & 서명

작성자 - LRTK

Build

DEX (Dalvik Executable)

Android 어플리케이션은 Dalvik VM에서 더 효과적으로 실행되기 위해 개발자가 JDK로 코드를 컴파일하여 만든 바이트 코드입니다.

Dalvik VM에서 DEX 파일로 변환되어 실행됩니다.

Smali

Dalvik의 바이트 코드를 위한 어셈블리 언어입니다.

기계어 형태로 되어 있으며, 원하는 부분의 코드 패치가 가능합니다.

SandBox

Android의 모든 앱은 자체 프로세스와 파일 시스템 공간에 SandBox로 되어 있으며, Linux 커널의 프로세스 공간 보호 메커니즘을 이용하여 설치된 각 앱에 고유한 UID를 할당합니다.

 

기존 데스크톱 운영 체제(Linux, Windows, Mac 등)와 달리 Android는 UID 개념을 사용자 구분을 위해 사용하는 것이 아닌 앱을 구분하는 것으로 사용합니다.

이를 통해 커널은 애플리케이션을 메모리, 기본 하드웨어 또는 서비스에 대한 액세스를 제한하며, 디바이스의 파일 시스템에 대한 액세스를 제한할 수 있습니다.

 

기본적으로 각 앱의 데이터와 리소스는 앱과 핵심 프레임워크만 액세스할 수 있습니다.

 

Application 코드 서명

Android에서는 인증서를 사용해 디지털 방식으로 서명된 APK만 기기에 설치하거나 업데이트할 수 있습니다.

이러한 이유는 악의적인 사용자가 패치한 앱의 배포를 막기 위한 목적으로 이루어집니다.

 

KeyStore Service

Android Keystore 시스템을 사용하면 암호화 키를 컨테이너에 저장하여 기기에서 키를 추출하기 어렵게 할 수 있습니다.

키 저장소에 키가 저장되면, 키 자료는 내보낼 수 없는 상태로 유지하면서 키를 암호화 작업에 사용할 수 있습니다.

keystore

Java의 keystore 파일으로 인증서와 비공개 키의 저장소 역할을 수행하는 바이너리 파일입니다.

KeyStore

AndroidKeyStore이라고도 불리며, App 자체에서 사용하는 암호키를 보다 안전하게 보관하기 위한 서비스입니다.

Keystore

Android에서 제공하는 KeyStore 서비스를 제공하기 위해 만들어진 하드웨어 장치로 Android Device에서 암호키를 안전하게 저장하기 위해 사용됩니다.

 

Contents

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.