본문 바로가기
Security

리눅스 시스템에서의 DM-Verity란?

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

안드로이드 4.4의 보안기능으로 들어간 Security 기능중 하나이다. 



특히 안드로이드 4.4에는 SELinux가 강제 모드(Enforcing Mode)로 동작 가능하며 이 동작에의한 부팅도 검증이 되어 릴리즈 됩니다.
Android의 Verified Boot 구현은 dm-verity Device - Mapper 무결성 검사 대상을 기반으로합니다. 
Device-mapper는 가상 블록 장치를 구현하기위한 일반적인 방법을 제공하는 Linux 커널 Framework입니다. 볼륨 관리 (LVM) 및 전체 디스크 암호화 (dm-crypt)를 구현하는 데 사용됩니다. Device - Mapper는 기본적으로 가상 블록 장치(Virtual block device)를 하나 이상의 물리적 블록 장치에 매핑하고 선택적으로 전송되는 전송 된 데이터를 수정함으로써 작동합니다. 예를 들어, dm-crypt는 물리적 블록을 읽고 디스크에 Commit하기 전에 기록 된 블록을 암호화합니다. 따라서 디스크 암호화는 가상 DM-Crypt 블록 장치의 사용자에게는 투명합니다.  Device - Mapper 대상을 서로 위에 쌓아 놓으면 복잡한 데이터 변환을 구현할 수 있습니다.
이 맥락에서 dm-verity는 Block 무결성 검사 대상입니다. 처음에는 Read-Only File System에 포함 된 데이터 블록의 유효성을 검사 할 수있는  Device - Mapper 대상을 구현하는 목적으로 Google의 Chromium OS 프로젝트의 일부로 개발되었습니다. 즉, 디스크에서 읽는 동안 각 장치 Block의 무결성을 확인합니다. 블록이 체크 아웃하면 읽기가 성공하고, 읽지 않으면 블록이 물리적으로 손상된 것처럼 I/O 오류를 생성합니다. dm-crypt의 경우,이 프로세스는 해당 블록을 읽는 응용 프로그램에 투명합니다.
dm-verity의 최종 목적은 부패 나 임의의 악의적 인 공격으로부터 볼륨의 무결성을 보장하는 것입니다.

말이 너무 어려운가요? 쉽게 압축해서 설명해 보면 다음과 같습니다.

signed meta-data hash tree 사용해서 run-time으로 partition 무결성을 검증하는 Linux 커널 드라이버다.

'Security' 카테고리의 다른 글

안드로이드 Device측면의 security  (0) 2019.02.20
Android에서 DM-Verity 동작되는 원리 이해  (0) 2019.02.18
SELinux 소개  (0) 2019.01.28
CIA Triad - Security policy의 Base model  (0) 2018.10.29
SMACK 넌 도대체 무엇이냐~~!  (0) 2017.12.04

댓글