보안 부팅은 통합 확장 펌웨어 인터페이스(UEFI )의 기능으로, 로딩 전에 모든 저수준 펌웨어 및 소프트웨어 구성 요소를 검증합니다. 부팅하는 동안 UEFI 보안 부팅은 UEFI 펌웨어 드라이버(옵션 ROM이라고도 함), EFI(Extensible Firmware Interface) 애플리케이션, 운영 체제 드라이버 및 이진 등 부팅 소프트웨어의 각 부분의 서명을 확인합니다. 서명이 유효하거나 원래 장비 제조업체(OEM)가 신뢰하면, 기계는 부팅되고 펌웨어가 운영체제에 제어권을 넘깁니다.
구성 요소 및 프로세스
보안 부팅은 다음과 같은 중요 구성 요소를 기반으로 합니다.
- PK(플랫폼 키) - 플랫폼 소유자(Microsoft)와 펌웨어 간의 신뢰를 설정합니다. 공용 절반은 PKpub이고 프라이빗 절반은 PKpriv입니다.
- KEK(키 등록 키) 데이터베이스 - OS와 플랫폼 펌웨어 간의 신뢰를 설정합니다. 공용 절반은 KEKpub이고 프라이빗 절반은 KEKpriv입니다.
- 서명 데이터베이스(db) - 플랫폼 펌웨어와 상호 작용할 권한이 있는 펌웨어 및 소프트웨어 코드 모듈의 신뢰할 수 있는 서명자(공개 키 및 인증서)에 대한 다이제스트를 보유합니다.
- 철회된 서명 데이터베이스(dbx) - OEM이 악의적이거나 취약하거나 손상되었거나 신뢰할 수 없다고 판단한 코드 모듈의 취소된 요약본을 보관합니다. 해시가 서명 데이터베이스에 있고 취소된 서명 데이터베이스에 있다면, 취소된 서명 데이터베이스가 우선권을 가집니다.
다음 그림과 프로세스는 OEM이 이러한 부품들을 어떻게 업데이트하는지 설명합니다:
OEM은 제조 시 컴퓨터의 NV-RAM(비휘발성 RAM)에 보안 부팅 다이제스트를 저장합니다.
- OEM은 서명 데이터베이스에 UEFI 애플리케이션의 서명기나 이미지 해시, 운영체제 로더(예: Microsoft Operating System Loader 또는 Boot Manager), 그리고 신뢰할 수 있는 UEFI 드라이버를 채웁니다.
- OEM은 더 이상 신뢰할 수 없는 모듈의 해시값으로 철회된 서명 데이터베이스(dbx)를 채웁니다.
- OEM은 서명 데이터베이스와 폐기된 서명 데이터베이스를 업데이트할 수 있는 서명 키로 키 등록 키(KEK) 데이터베이스를 채워 넣습니다. 물리적으로 현장에 있는 권한 있는 사용자는 올바른 키로 서명된 업데이트를 통해 데이터베이스를 편집하거나 펌웨어 메뉴를 사용할 수 있습니다.
- OEM이 db, dbx, KEK 데이터베이스를 추가하고 최종 펌웨어 검증 및 테스트를 완료한 후, OEM은 펌웨어의 편집을 금지하고 플랫폼 키(PK)를 생성합니다. OEM은 PK를 사용해 KEK에 업데이트를 서명하거나 Secure Boot를 끌 수 있습니다.
부팅 과정의 각 단계에서 시스템은 펌웨어, 부트로더, 운영체제, 커널 드라이버 및 기타 부트 체인 산출물의 요약을 계산하여 허용 가능한 값과 비교합니다. 시스템은 신뢰할 수 없는 펌웨어와 소프트웨어가 로드되지 않도록 합니다. Secure Boot는 저수준 악성코드 주입이나 부팅 전 악성코드 공격을 차단할 수 있습니다.
Azure 플릿에서 보안 부팅
오늘날 Azure 컴퓨트 플릿에 배포되어 고객 워크로드를 호스팅하는 모든 기계는 공장 현장에서 Secure Boot가 활성화된 상태로 공급됩니다. 하드웨어 구축 및 통합 파이프라인의 모든 단계에서 맞춤형 도구와 프로세스가 설치되어 있어 프로세스가 실수나 악의적으로 Secure Boot 활성화를 되돌리지 않도록 합니다.
db 및 .dbx 다이제스트의 유효성을 확인하는 것은 다음을 보장 합니다.
- 부트로더는 데이터베이스 항목 중 하나에 포함되어 있습니다.
- 부트로더의 서명은 유효합니다.
- 호스트는 신뢰할 수 있는 소프트웨어로 부팅됩니다.
KEKpub과 PKpub의 서명 검증은 신뢰할 수 있는 당사자만이 신뢰할 수 있는 소프트웨어 정의를 수정할 권한이 있음을 확인시켜 줍니다. 마지막으로, Secure Boot가 활성화되어 있는지 확인하는 것은 시스템이 이러한 정의를 강제하는지 검증하는 것입니다.
다음 단계
Microsoft가 플랫폼 무결성과 보안을 어떻게 추진하는지 더 알고 싶다면 다음을 참고하세요: