1. 개요
IMA(Integrity Measurement Architecture)는 리눅스 커널의 보안 서브시스템 중 하나로, 파일이 실행되거나 읽히기 전에 파일의 무결성을 측정(Measure)하고 검증(Appraise)하는 역할을 수행한다.임베디드 시스템이나 서버 환경에서 보안 부팅(Secure Boot)이 부트로더와 커널 이미지 자체의 무결성만 보장한다면, IMA는 커널이 로드된 이후 유저스페이스(Userspace)의 파일(루트 파일 시스템, 공유 라이브러리, 커널 모듈 등)에 대한 신뢰 체인(Chain of Trust)을 확장하는 핵심적인 역할을 담당한다.
2. 상세
IMA는 파일의 해시값(Hash)을 계산하여 커널 메모리 내의 측정 목록(Measurement List)에 저장하며, 이를 사전에 정의된 '정상적인 값(Good value)'과 비교하여 접근을 제어한다.이러한 해시값 등의 무결성 데이터는 리눅스 파일 시스템의 확장 속성(Extended Attributes, xattr)인
security.ima에 저장된다.- 측정 (Collect/Measure): 파일에 접근하기 전 파일 내용의 해시를 계산한다.
- 저장 (Store): 측정된 해시값을 커널 메모리 리스트에 추가하며, 시스템에 하드웨어 TPM(Trusted Platform Module)이 존재할 경우 PCR(Platform Configuration Register) 값을 확장(Extend)하여 하드웨어 기반의 보안을 제공한다.
- 검증 (Appraise): 파일의 확장 속성(
security.ima)에 저장된 기존 해시값 또는 서명과 현재 측정한 해시값을 비교한다. 값이 일치하지 않으면 해당 파일의 실행이나 읽기를 차단(Permission denied에러 발생)한다. - 감사 (Audit): 파일의 해시를 시스템 감사(Audit) 로그에 기록하여 사후 포렌식에 활용할 수 있게 한다.
3. EVM (Extended Verification Module)과의 관계
IMA가 파일의 내용(Content)에 대한 무결성을 검증한다면, EVM(Extended Verification Module)은 파일의 메타데이터(Metadata) 무결성을 보호한다. 보통 이 둘은 한 세트로 묶여(IMA/EVM) 사용된다.- 파일의 소유자(Owner), 권한(Mode bits), 확장 속성(xattr) 등이 오프라인 상태에서 변조되는 것을 막기 위해 EVM은 이러한 메타데이터를 해싱하거나 서명하여
security.evm확장 속성에 저장한다. - 공격자가 디스크를 분리해 다른 시스템에 마운트한 뒤 악의적으로
security.ima값을 수정하는 형태의 오프라인 공격(Evil Maid Attack)을 방어하기 위해 필수적으로 결합된다.
4. 요구 사항 및 적용
IMA/EVM을 제대로 사용하기 위해서는 커널 컴파일 옵션(CONFIG_IMA=y 등)뿐만 아니라 파일 시스템의 지원도 필수적이다.- 파일 시스템 지원: ext4, btrfs, xfs 등 확장 속성(xattr)을 지원하는 파일 시스템이어야 한다.
- i_version 마운트 옵션: 파일이 수정되었을 때 IMA가 이를 감지하고 해시를 재측정하기 위해서는 커널 및 파일 시스템이
i_version마운트 옵션을 지원해야 한다. - 유틸리티: 서명 생성 및 무결성 도구 관리를 위해
evmctl유틸리티(ima-evm-utils 패키지)가 주로 사용된다.
부팅 시 U-Boot나 GRUB 같은 부트로더에서
ima_appraise=fix, ima_policy=tcb, evm=fix 같은 커널 파라미터를 넘겨주어 정책을 활성화하고 파일 시스템 전체에 레이블링을 수행할 수 있다.5. 한계점 및 단점
- 성능 저하: TPM과 연동하여 측정 모드를 사용할 경우, TPM 버스(일반적으로 속도가 느린 SPI 통신)를 거치면서 시스템 콜(System Call) 처리 성능에 병목이 발생할 수 있다. 또한 검증(Appraise) 모드에서 비대칭 키 암호화 연산이 동반되면 시스템 부하가 증가한다.
- 설정의 복잡성: 초기 셋업 시 모든 파일의 해시/서명을 계산하여 xattr에 주입해야 하며(Fix 모드), 이 과정에서 키 관리(Key Management)와 마스터 키링(Master Keyring) 설정이 까다로운 편이다.