Amazon EC2 인스턴스에서 UEFI Secure Boot가 동작하는 방식

Amazon EC2 인스턴스에서 UEFI Secure Boot가 동작하는 방식

UEFI Secure Boot는 UEFI 규격에 정의된 기능으로, 부팅 체인(boot chain)의 상태를 검증해 줘요. 펌웨어의 자기 초기화가 끝난 뒤에는 암호화로 검증된 UEFI 바이너리만 실행되도록 보장하는 게 목적이에요. 여기에는 UEFI 드라이버와 메인 부트로더, 그리고 체인 로딩되는 구성 요소들이 포함됩니다.

출처: 문서

본문

UEFI Secure Boot는 신뢰 체인(chain of trust)에 사용되는 네 가지 핵심 데이터베이스(db)를 규정하며, 이들은 UEFI 변수 저장소(UEFI variable store)에 저장됩니다.

신뢰 체인 구성

  • 플랫폼 키(PK) 데이터베이스 — 신뢰 체인의 루트(root of trust)예요. 키 교환 키(KEK) 데이터베이스를 갱신하는 신뢰 체인에 쓰이는 단일 공개 PK 키를 담고 있어요. PK 데이터베이스를 변경하려면 갱신 요청에 서명할 수 있는 개인 PK 키가 필요해요. 여기에는 빈 PK 키를 써서 PK 데이터베이스를 삭제하는 것도 포함됩니다.
  • 키 교환 키(KEK) 데이터베이스 — 서명(db) 및 차단 목록(dbx) 데이터베이스를 갱신하는 신뢰 체인에 쓰이는 공개 KEK 키 목록이에요. 공개 KEK 데이터베이스를 변경하려면 개인 PK 키로 갱신 요청에 서명해야 해요.
  • 서명(db) 데이터베이스 — 모든 UEFI 부팅 바이너리를 검증하는 신뢰 체인에 쓰이는 공개 키와 해시 목록이에요. db 데이터베이스를 변경하려면 개인 PK 키 또는 개인 KEK 키 중 하나로 갱신 요청에 서명해야 해요.
  • 서명 차단 목록(dbx) 데이터베이스 — 신뢰할 수 없는 공개 키와 바이너리 해시 목록으로, 신뢰 체인에서 폐기 파일(revocation file)로 사용돼요. dbx 데이터베이스는 항상 다른 모든 키 데이터베이스보다 우선하며, 변경하려면 개인 PK 키 또는 개인 KEK 키로 갱신 요청에 서명해야 해요.

UEFI Forum은 알려진 유해 바이너리와 인증서에 대한 dbx를 공개적으로 유지·관리하며, 이를 https://uefi.org/revocationlistfile 에서 볼 수 있어요.

중요 — UEFI Secure Boot는 모든 UEFI 바이너리에 서명 검증을 적용해요. UEFI Secure Boot에서 바이너리 실행을 허용하려면 위에서 설명한 개인 db 키 중 하나로 서명하면 됩니다.

기본적으로 UEFI Secure Boot는 비활성화되어 있고 시스템은 SetupMode 상태예요. SetupMode에서는 모든 키 변수를 암호화 서명 없이도 갱신할 수 있어요. PK가 설정되면 UEFI Secure Boot가 활성화되고 SetupMode가 종료됩니다.

더 알아보기 (Learn more)