보안부팅 (Secure Boot)
쉽게 풀면
공항에서 탑승객이 게이트를 통과할 때마다 신분증을 확인하는 절차를 떠올려 보세요. 보안부팅은 컴퓨터가 켜질 때 실행되는 소프트웨어들이 순서대로 실행되는 각 단계마다, 그 소프트웨어가 신뢰할 수 있는 서명을 가지고 있는지 확인합니다. 서명이 확인되지 않거나 조작된 흔적이 있으면 부팅을 중단시켜, 악성코드가 운영체제보다 먼저 실행되어 시스템을 장악하는 것을 막습니다.
왜 중요한가
부트로더나 펌웨어처럼 운영체제보다 먼저 실행되는 저수준 소프트웨어가 감염되면 이후 실행되는 모든 보안 대책이 무력화될 수 있기 때문에, 보안부팅은 신뢰 체인(chain of trust)의 첫 단계를 지키는 핵심 기술로 다루어집니다. 부트킷(bootkit)이나 펌웨어 수준 공격에 대한 방어 연구에서 자주 등장하는 개념입니다.
논문에서는 이렇게 쓰입니다
보안부팅의 구체적 구현과 취약점 분석을 다루는 문장입니다.
보안부팅이 신뢰 체인 개념과 함께 설명되는 문장입니다.
조금 더 깊게 보면
보안부팅은 흔히 UEFI 표준에 정의된 기능으로 구현되며, 하드웨어에 내장된 신뢰 루트(root of trust)를 시작점으로 각 부팅 단계의 디지털 서명을 검증해 나가는 방식으로 동작합니다. 검증에 사용되는 서명 키는 TPM과 같은 별도의 보안 하드웨어와 함께 활용되어 신뢰성을 높이는 경우가 많습니다. 시큐어 부트는 펌웨어(UEFI)가 부팅 과정의 각 단계(부트로더, OS 커널 등)를 실행하기 전에 디지털 서명을 검증해, 신뢰된 인증서 체인에 포함되지 않은 코드는 로드를 거부함으로써 부팅 이전 단계에 악성코드를 심어 탐지를 피하는 루트킷·부트킷의 실행을 차단하는 것을 목표로 합니다.
주의할 점
보안부팅은 부팅 과정의 무결성만 검증할 뿐, 운영체제가 정상적으로 부팅된 이후 발생하는 모든 종류의 공격을 막아주는 것은 아니라는 점에 유의해야 합니다. 시큐어 부트는 부팅 과정의 코드 무결성만을 검증할 뿐 운영체제가 정상 부팅된 이후 발생하는 애플리케이션 수준의 공격은 방어 범위에 포함되지 않는다는 한계가 있습니다.