보안 부팅: 작동 방식

카테고리 보기

보안 부팅: 작동 방식

보안 부팅(Secure Boot)은 부팅 과정에서 신뢰할 수 있는 소프트웨어만 실행되도록 보장하는 중요한 보안 기능입니다. 하지만 취약점이 발견됨에 따라 보안 부팅 고급 타겟팅(SBAT) 과 같은 더욱 정교한 메커니즘이 도입되어 보안을 강화하고 있습니다. 이 글에서는 SBAT의 핵심 개념과 부팅 과정의 무결성을 유지하기 위한 작동 방식을 설명합니다.

기존 보안 부팅 작동 방식 #

보안 부팅은 부트로더를 검증하는 펌웨어부터 시작하여 부트 프로세스의 각 구성 요소를 검증하여 작동합니다. 부트로더는 커널을 검증하는 식으로 진행됩니다. 이 신뢰 체인은 검증되고 서명된 구성 요소만 실행되도록 합니다. 취약점이 발견되면 시스템은 블랙리스트에 해시를 추가하여 신뢰할 수 없는 구성 요소를 취소합니다. 이 방법은 효과적이었지만 현대 부트 환경의 규모와 복잡성을 처리하는 데 어려움이 있습니다.

보안 부팅 프로세스

높은 수준에서 보안 부팅 프로세스는 신뢰 체인 모델을 따릅니다.
1. UEFI 펌웨어: 부트로더 서명을 확인합니다.
2. 부트 로더: 커널 서명을 확인합니다.
3. 핵심: 동적으로 로드된 모듈과 추가 커널 코드를 검증합니다.
4. 런타임 환경: 신뢰를 바탕으로 시스템의 실행 환경을 확보합니다.

이 모델은 신뢰할 수 있는 키로 서명된 구성 요소만 실행되도록 보장합니다. 그러나 이러한 구성 요소(예: 부트로더)에서 취약점이 발견되면 기존의 보안 부팅 구현에서는 해당 구성 요소의 해시를 블랙리스트에 추가하여 향후 해당 바이너리가 실행되지 않도록 합니다. 문제는 확장성 입니다.

문제: 많은 수의 바이너리 관리 #

예를 들어, 각 Linux 배포판은 부트로더의 자체 버전(예: GRUB)을 컴파일하여 고유한 해시를 가진 여러 개의 개별 바이너리를 생성할 수 있습니다. 기본 부트로더 코드에서 취약성이 식별되면 영향을 받는 모든 바이너리를 개별적으로 해지해야 합니다. 해지 해시에 사용할 수 있는 저장소(일반적으로 NVRAM에 저장됨)가 제한되어 있기 때문에 이 접근 방식은 대규모 환경에서 지속 가능하지 않습니다.

SBAT: 보안 부팅 확장성 향상 #

보안 부팅 고급 타겟팅(SBAT)은 개별 바이너리 해시를 취소하는 것에서 벗어나 보안 세대를 도입하여 이 확장성 문제를 해결하도록 설계되었습니다. SBAT 메커니즘은 다음과 같이 작동합니다.
1. 보안 생성 번호: 각 부트 구성 요소(부트로더, 커널 등)에는 세대 번호가 지정됩니다. 이 번호는 빌드 프로세스 중에 서명된 바이너리에 내장됩니다.
2. SBAT 변수: 각 구성 요소에 허용되는 최소 보안 생성을 저장하기 위해 새로운 펌웨어 변수가 도입되었습니다.
3. 검증 논리: 부팅 프로세스 동안 시스템은 다음 구성 요소의 보안 세대 번호를 SBAT 변수에 정의된 최소 세대와 비교합니다. 구성 요소의 세대가 임계값보다 낮으면 거부되고 부팅 프로세스가 중단됩니다.

SBAT 흐름 #

  • 펌웨어는 부트로더를 시작하고 SBAT 보안 생성을 확인합니다.
  • 부트로더는 커널의 세대 번호를 검증합니다.
  • 커널은 필요에 따라 다른 모듈의 보안 생성 번호를 검증할 수 있습니다.

이 접근 방식을 사용하면 개별 해시를 저장할 필요 없이 SBAT 변수에서 최소 세대 번호를 높이는 것만으로 취약한 바이너리의 여러 버전을 해지할 수 있습니다.

SBAT 구현: 핵심 구성 요소 #

Signed Binaries의 SBAT 섹션 #

부트 체인의 모든 구성 요소에는 다음이 포함된 SBAT 메타데이터 섹션이 포함되어야 합니다.

  • 구성요소의 이름.
  • 구성 요소의 현재 보안 세대 번호입니다.

펌웨어 통합 #

시스템 펌웨어는 SBAT 변수를 인식하고 처리하기 위해 업데이트되어야 합니다. 여기에는 다음이 포함됩니다.

  • NVRAM에 SBAT 변수를 저장합니다.
  • 부팅 구성 요소에서 SBAT 메타데이터를 확인합니다.
  • 오래된 세대 번호가 있는 구성 요소를 거부합니다.

보안 정책 관리 #

SBAT 변수를 업데이트하는 것은 시스템의 전반적인 보안 정책 관리의 일부입니다. 모든 업데이트는 지속적인 보호를 보장하기 위해 부트 체인의 모든 관련 구성 요소에서 세대 번호를 증가시켜야 합니다.

SBAT 및 보안 부팅 강화 #

SBAT를 채택하면 조직은 다음을 수행할 수 있습니다.
1. 취소 오버헤드 감소: 취약한 바이너리의 해시를 많이 저장하는 대신, 생성 번호만 업데이트하면 됩니다.
2. 보안 강화: 취약한 구성 요소를 더 효율적으로 차단하여 펌웨어 저장소를 소진하지 않고도 위험을 완화할 수 있습니다.
3. 더 쉬운 롤아웃: 시스템 관리자는 펌웨어 업데이트 및 보안 부팅 구성을 보다 쉽게 ​​관리하여 취약점에 대한 대응 시간을 단축할 수 있습니다.

맺음말 #

보안 부팅 고급 타겟팅(SBAT)은 시스템의 스토리지나 보안 인프라를 과부하시키지 않고도 보안 부팅 체인에서 보안 업데이트를 처리하는 효과적인 방법입니다. 각 부팅 구성 요소에 세대 번호를 내장하고 단일 업데이트 메커니즘을 사용하여 해당 세대를 적용함으로써 SBAT는 끊임없이 진화하는 부팅 보안 환경을 관리하기 위한 확장성과 유연성을 제공합니다.

최신 Linux 및 Windows 시스템의 경우 SBAT는 최소한의 운영 오버헤드로 위협에 신속하게 대응할 수 있는 더 강력하고 복원력 있는 보안 부팅 환경을 보장합니다.

📄 이 문서를 PDF 형식으로 다운로드하세요 #

    이메일 : *

    BetterDocs 제공