System Guard: 하드웨어 기반 신뢰 루트가 Windows를 보호하는 방법

Windows 인증 스택, Single Sign-On 토큰, Windows Hello 생체 인식 스택 및 가상 신뢰할 수 있는 플랫폼 모듈과 같은 중요한 리소스를 보호하려면 시스템의 펌웨어 및 하드웨어를 신뢰할 수 있어야 합니다.

System Guard 기존 Windows 시스템 무결성 기능을 한 지붕 아래에 다시 구성하고 Windows 보안에 대한 다음 투자 집합을 설정합니다. 다음과 같은 보안을 보장하도록 설계되었습니다.

  • 시스템 시작 시 시스템의 무결성 보호 및 유지 관리
  • 로컬 및 원격 증명을 통해 시스템 무결성이 진정으로 유지되었는지 확인합니다.

시스템 시작 시 무결성 유지 관리

SRTM(측정을 위한 정적 신뢰 루트)

Windows 7을 사용하면 공격자가 탐지를 지속 및 회피하는 데 사용하는 수단 중 하나는 시스템에 부트킷 또는 루트킷이라고도 하는 것을 설치하는 것이었습니다. 이 악성 소프트웨어는 Windows가 시작되기 전에 또는 부팅 프로세스 자체 중에 시작되므로 최고 수준의 권한으로 시작할 수 있습니다.

최신 하드웨어에서 실행되는 Windows 10 하드웨어 기반 신뢰 루트를 사용하면 Windows 부팅 로더 전에 권한 없는 펌웨어 또는 소프트웨어(예: 부트킷)를 시작할 수 없도록 하는 데 도움이 됩니다. 이 하드웨어 기반 신뢰 루트는 UEFI(Unified Extensible Firmware Interface)의 일부인 디바이스의 보안 부팅 기능에서 제공됩니다. 정적 초기 부팅 UEFI 구성 요소를 측정하는 이 기술을 SRTM(Static Root of Measurement)이라고 합니다.

UEFI BIOS 버전이 다른 많은 모델을 생산하는 수천 개의 PC 공급업체가 있으므로 부팅 시 매우 많은 수의 SRTM 측정값이 생성됩니다. 알려진 '나쁜' SRTM 측정 목록(차단 목록이라고도 함) 또는 알려진 '양호한' SRTM 측정 목록(허용 목록이라고도 함)을 유지 관리하는 두 가지 기술이 있습니다.

각 옵션에는 단점이 있습니다.

  • 알려진 '잘못된' SRTM 측정 목록을 사용하면 해커가 구성 요소에서 1비트만 변경하여 나열해야 하는 완전히 새로운 SRTM 해시를 만들 수 있습니다. 즉, SRTM 흐름은 본질적으로 부서지기 쉽습니다. 사소한 변경으로 전체 신뢰 체인이 무효화됩니다.
  • 알려진 '좋은' SRTM 측정 목록에는 각각의 새로운 BIOS/PC 조합 측정을 신중하게 추가해야 하며 속도가 느립니다. 또한 UEFI 코드에 대한 버그 수정은 디자인, 빌드, 다시 테스트, 유효성 검사 및 다시 배포하는 데 오랜 시간이 걸릴 수 있습니다.

보안 시작 - DRTM(측정을 위한 동적 신뢰 루트)

Windows 10 버전 1809에 처음 도입된 System Guard 보안 시작은 DRTM(Dynamic Root of Trust of Measurement)이라는 기술을 활용하여 이러한 문제를 완화하는 것을 목표로 합니다. DRTM을 사용하면 처음에는 시스템이 신뢰할 수 없는 코드로 자유롭게 부팅할 수 있지만, 곧 모든 CPU를 제어하고 잘 알려진 측정된 코드 경로를 강제로 실행하여 시스템을 신뢰할 수 있는 상태로 전환합니다. 이는 신뢰할 수 없는 초기 UEFI 코드가 시스템을 부팅하도록 허용하지만 신뢰할 수 있고 측정된 상태로 안전하게 전환할 수 있다는 이점이 있습니다.

보안 시작을 System Guard.

보안 실행은 이제 시작 코드가 특정 하드웨어 구성과 관련이 없으므로 SRTM 측정의 관리를 간소화합니다. 즉, 유효한 코드 측정 수는 적으며 향후 업데이트를 보다 광범위하고 빠르게 배포할 수 있습니다.

SMM(시스템 관리 모드) 보호

SMM(시스템 관리 모드)은 전원 관리, 하드웨어 구성, 열 모니터링 및 제조업체가 유용하다고 판단하는 기타 모든 것을 처리하는 x86 마이크로 컨트롤러의 특수 용도 CPU 모드입니다. 이러한 시스템 작업 중 하나가 요청될 때마다 런타임에 SMI(마스크할 수 없는 인터럽트)가 호출되어 BIOS에 의해 설치된 SMM 코드를 실행합니다. SMM 코드는 가장 높은 권한 수준에서 실행되며 OS에 보이지 않으므로 악의적인 활동의 매력적인 대상이 됩니다. System Guard 보안 시작을 늦은 시작에 사용하는 경우에도 SMM 코드는 잠재적으로 하이퍼바이저 메모리에 액세스하고 하이퍼바이저를 변경할 수 있습니다.

이를 방어하기 위해 다음 두 가지 기술이 사용됩니다.

  • 코드 및 데이터에 대한 부적절한 액세스를 방지하기 위한 페이징 보호
  • SMM 하드웨어 감독 및 증명

변조를 방지하기 위해 특정 코드 테이블을 읽기 전용으로 잠그기 위해 페이징 보호를 구현할 수 있습니다. 이렇게 하면 할당되지 않은 메모리에 액세스할 수 없습니다.

감독자 SMI 처리기로 알려진 하드웨어 적용 프로세서 기능은 SMM을 모니터링하고 필요하지 않은 주소 공간의 일부에 액세스하지 않는지 확인할 수 있습니다.

SMM 보호는 보안 시작 기술을 기반으로 하며 작동해야 합니다. 향후 Windows 10 이 SMI 처리기의 동작을 측정하고 OS 소유 메모리가 변조되지 않았는지를 확인합니다.

Windows가 실행된 후 플랫폼 무결성 유효성 검사(런타임)

System Guard 부팅 시 및 런타임에 플랫폼의 무결성을 보호하고 유지하는 데 도움이 되는 고급 보호를 제공하지만, 현실은 가장 정교한 보안 기술조차도 "위반 가정" 정신을 적용해야 합니다. 우리는 기술이 성공적으로 작업을 수행하고 있다고 신뢰할 수 있지만 목표를 달성하는 데 성공했는지 확인할 수 있는 능력도 필요합니다. 플랫폼 무결성을 위해 잠재적으로 손상될 수 있는 플랫폼을 신뢰하여 보안 상태를 자체적으로 증명할 수 없습니다. 따라서 System Guard 디바이스의 무결성을 원격으로 분석할 수 있는 일련의 기술을 포함합니다.

Windows가 부팅되면 디바이스의 신뢰할 수 있는 플랫폼 모듈 2.0(TPM 2.0)을 사용하여 System Guard 일련의 무결성 측정을 수행합니다. System Guard 보안 시작은 TPM 1.2와 같은 이전 TPM 버전을 지원하지 않습니다. 이 프로세스와 데이터는 Windows에서 하드웨어로 격리되어 측정 데이터가 플랫폼이 손상된 경우 발생할 수 있는 변조 유형이 적용되지 않도록 합니다. 여기에서 측정값을 사용하여 디바이스의 펌웨어, 하드웨어 구성 상태 및 Windows 부팅 관련 구성 요소의 무결성을 확인할 수 있습니다.

부팅 시간 무결성.

시스템이 부팅된 후 System Guard TPM을 사용하여 이러한 측정값에 서명하고 봉인합니다. 요청 시 Intune 또는 Microsoft Configuration Manager 같은 관리 시스템에서 원격 분석을 위해 이를 획득할 수 있습니다. System Guard 디바이스에 무결성이 부족하다는 것을 나타내는 경우 관리 시스템은 리소스에 대한 디바이스 액세스 거부와 같은 일련의 작업을 수행할 수 있습니다.

Windows 버전 및 라이선싱 요구 사항

다음 표에는 System Guard 지원하는 Windows 버전이 나와 있습니다.

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education

System Guard 라이선스 자격은 다음 라이선스에 의해 부여됩니다.

Windows Pro/Pro Education/SE Windows Enterprise E3 Windows Enterprise E5 Windows Education A3 Windows Education A5

Windows 라이선싱에 대한 자세한 내용은 Windows 라이선싱 개요를 참조하세요.

System Guard 대한 시스템 요구 사항

이 기능은 다음 프로세서에서 사용할 수 있습니다.

  • Intel 커피레이크, 위스키레이크 또는 이후 실리콘으로 시작하는 Intel®® vPro™ 프로세서
  • Zen2 이상 실리콘으로 시작하는 AMD® 프로세서
  • SD850 이상 칩셋을 사용하는 퀄컴® 프로세서

Intel Coffeelake, Whiskeylake 또는 이후 실리콘으로 시작하는 Intel®® vPro™ 프로세서에 대한 요구 사항

이름 설명
64비트 CPU 하이퍼바이저 및 VBS(가상화 기반 보안)에는 최소 4개의 코어(논리 프로세서)가 있는 64비트 컴퓨터가 필요합니다. Hyper-V에 대한 자세한 내용은 Windows Server 2016 Hyper-V 또는 Windows 10Hyper-V 소개를 참조하세요. 하이퍼바이저에 대한 자세한 내용은 하이퍼바이저 사양을 참조하세요.
TPM(신뢰할 수 있는 플랫폼 모듈) 2.0 플랫폼은 개별 TPM 2.0을 지원해야 합니다. TPM 2.0 사양을 충족하는 통합 하드웨어 TPM 유형인 PTT(플랫폼 신뢰 기술)를 지원하는 Intel 칩을 제외하고 통합/펌웨어 TPM은 지원되지 않습니다.
Windows DMA Protection 플랫폼은 Windows DMA 보호 사양을 충족해야 합니다(OS가 명시적으로 권한을 부여할 때까지 모든 외부 DMA 포트는 기본적으로 꺼져 있어야 합니다).
SMM 통신 버퍼 모든 SMM 통신 버퍼는 EfiRuntimeServicesData, EfiRuntimeServicesCode, EfiACPIMemoryNVS 또는 EfiReservedMemoryType 메모리 형식에서 구현되어야 합니다.
SMM 페이지 테이블 EfiConventionalMemory에 대한 매핑을 포함하지 않아야 합니다(예: OS/VMM 소유 메모리 없음).
EfiRuntimeServicesCode 내의 코드 섹션에 대한 매핑을 포함하지 않아야 합니다.
동일한 페이지에 대한 실행 및 쓰기 권한이 없어야 합니다.
TSEG 페이지를 실행 파일로 표시할 수 있도록 허용해야 하며 메모리 맵은 TSEG EfiReservedMemoryType을 보고해야 합니다.
모든 SMM 항목에서 SMM 페이지 테이블이 잠겨 있도록 BIOS SMI 처리기를 구현해야 합니다.
최신/연결된 대기 상태 플랫폼은 최신/연결된 대기를 지원해야 합니다.
TPM AUX 인덱스 플랫폼은 데이터 크기가 정확히 104바이트(SHA256 AUX 데이터의 경우)인 TXT DG에 지정된 AUX 인덱스에 정확히 해당하는 인덱스, 특성 및 정책을 사용하여 AUX 인덱스를 설정해야 합니다. (NameAlg = SHA256)
플랫폼은 다음을 사용하여 PS(플랫폼 공급자) 인덱스를 설정해야 합니다.
  • 정확히 "TXT PS2" 스타일 다음과 같이 생성할 때의 특성입니다.
    • AuthWrite
    • PolicyDelete
    • WriteLocked
    • WriteDefine
    • AuthRead
    • WriteDefine
    • 노다
    • 작성
    • PlatformCreate
  • 정확히 PolicyCommandCode(CC = TPM2_CC_UndefineSpaceSpecial)의 정책(SHA256 NameAlg 및 Policy)
  • 정확히 70바이트 크기
  • NameAlg = SHA256
  • 또한 OS를 시작할 때 초기화되고 잠겨 있어야 합니다(TPMA_NV_WRITTEN = 1, TPMA_NV_WRITELOCKED = 1).
PS 인덱스 데이터 DataRevocationCounters, SINITMinVersion 및 PolicyControl은 모두 0x00
AUX 정책 필요한 AUX 정책은 다음과 여야 합니다.
  • A = TPM2_PolicyLocality(Locality 3 & Locality 4)
  • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpecial)
  • authPolicy = {A} 또는 {{A} 및 {B}}
  • authPolicy digest = 0xef, 0x9a, 0x26, 0xfc, 0x22, 0xd1, 0xae, 0x8c, 0xec 0xff, 0x59, 0xe9, 0x48, 0x1a, 0xc1, 0xec, 0x53, 0x3d, 0xbe, 0x22, 0x8b, 0xec, 0x6d, 0x17, 0x93, 0x0f, 0x4c, 0xb2, 0xcc, 0x5b, 0x97, 0x24
TPM NV 인덱스 플랫폼 펌웨어는 다음을 사용하여 OS에서 사용할 TPM NV 인덱스 를 설정해야 합니다.
  • 핸들: 0x01C101C0
  • 특성:
    • TPMA_NV_POLICYWRITE
    • TPMA_NV_PPREAD
    • TPMA_NV_OWNERREAD
    • TPMA_NV_AUTHREAD
    • TPMA_NV_POLICYREAD
    • TPMA_NV_NO_DA
    • TPMA_NV_PLATFORMCREATE
    • TPMA_NV_POLICY_DELETE
  • 다음의 정책:
    • A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
    • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
    • authPolicy = {A} 또는 {{A} 및 {B}}
    • 0xcb, 0x45, 0xc8, 0x1f, 0xf3, 0x4b, 0xcf, 0x0a, 0xfb, 0x9e 다이제스트 값 0x1a, 0x80, 0x29, 0xfa, 0x23, 0x1c, 0x87, 0x27, 0x30, 0x3c, 0x09, 0x22, 0xdc, 0xce, 0x68, 0x4b, 0xe3, 0xdb, 0x81, 0x7c, 0x20, 0xe1
플랫폼 펌웨어 플랫폼 펌웨어는 Intel® 신뢰할 수 있는 실행 기술 보안 시작을 실행하는 데 필요한 모든 코드를 수행해야 합니다.
  • Intel® SINIT ACM은 OEM BIOS에서 수행해야 합니다.
  • 플랫폼은 플랫폼에 대한 올바른 프로덕션 Intel® ACM 서명자가 서명한 프로덕션 ACM과 함께 제공되어야 합니다.
플랫폼 펌웨어 업데이트 시스템 펌웨어는 Windows 업데이트 UpdateCapsule을 통해 업데이트하는 것이 좋습니다.

Zen2 이상 실리콘으로 시작하는 AMD® 프로세서에 대한 요구 사항

이름 설명
64비트 CPU 하이퍼바이저 및 VBS(가상화 기반 보안)에는 최소 4개의 코어(논리 프로세서)가 있는 64비트 컴퓨터가 필요합니다. Hyper-V에 대한 자세한 내용은 Windows Server 2016 Hyper-V 또는 Windows 10Hyper-V 소개를 참조하세요. 하이퍼바이저에 대한 자세한 내용은 하이퍼바이저 사양을 참조하세요.
TPM(신뢰할 수 있는 플랫폼 모듈) 2.0 플랫폼은 개별 TPM 2.0 또는 Microsoft Pluton TPM을 지원해야 합니다.
Windows DMA Protection 플랫폼은 Windows DMA 보호 사양을 충족해야 합니다(OS가 명시적으로 권한을 부여할 때까지 모든 외부 DMA 포트는 기본적으로 꺼져 있어야 합니다).
SMM 통신 버퍼 모든 SMM 통신 버퍼는 EfiRuntimeServicesData, EfiRuntimeServicesCode, EfiACPIMemoryNVS 또는 EfiReservedMemoryType 메모리 형식에서 구현되어야 합니다.
SMM 페이지 테이블 EfiConventionalMemory에 대한 매핑을 포함하지 않아야 합니다(예: OS/VMM 소유 메모리 없음).
EfiRuntimeServicesCode 내의 코드 섹션에 대한 매핑을 포함하지 않아야 합니다.
동일한 페이지에 대한 실행 및 쓰기 권한이 없어야 합니다.
모든 SMM 항목에서 SMM 페이지 테이블이 잠겨 있도록 BIOS SMI 처리기를 구현해야 합니다.
최신/연결된 대기 상태 플랫폼은 최신/연결된 대기를 지원해야 합니다.
TPM NV 인덱스 플랫폼 펌웨어는 다음을 사용하여 OS에서 사용할 TPM NV 인덱스 를 설정해야 합니다.
  • 핸들: 0x01C101C0
  • 특성:
    • TPMA_NV_POLICYWRITE
    • TPMA_NV_PPREAD
    • TPMA_NV_OWNERREAD
    • TPMA_NV_AUTHREAD
    • TPMA_NV_POLICYREAD
    • TPMA_NV_NO_DA
    • TPMA_NV_PLATFORMCREATE
    • TPMA_NV_POLICY_DELETE
  • 다음의 정책:
    • A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
    • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
    • authPolicy = {A} 또는 {{A} 및 {B}}
    • 0xcb, 0x45, 0xc8, 0x1f, 0xf3, 0x4b, 0xcf, 0x0a, 0xfb, 0x9e 다이제스트 값 0x1a, 0x80, 0x29, 0xfa, 0x23, 0x1c, 0x87, 0x27, 0x30, 0x3c, 0x09, 0x22, 0xdc, 0xce, 0x68, 0x4b, 0xe3, 0xdb, 0x81, 0x7c, 0x20, 0xe1
플랫폼 펌웨어 플랫폼 펌웨어는 보안 시작을 실행하는 데 필요한 모든 코드를 수행해야 합니다.
  • AMD® Secure Launch 플랫폼은 AMD DRTM 드라이버가 노출되고 AMD®® DRTM 드라이버가 설치된 상태에서 제공되어야 합니다.

플랫폼에는 AMD® 보안 프로세서 펌웨어 롤백 방지 보호가 사용하도록 설정되어 있어야 합니다.
플랫폼에는 AMD® Memory Guard를 사용하도록 설정해야 합니다.
플랫폼 펌웨어 업데이트 시스템 펌웨어는 Windows 업데이트 UpdateCapsule을 통해 업데이트하는 것이 좋습니다.

SD850 이상 칩셋을 사용하는 Qualcomm® 프로세서에 대한 요구 사항

이름 설명
모니터 모드 통신 모든 모니터 모드 통신 버퍼는 메모리 특성 테이블, EfiACPIMemoryNVS 또는 EfiReservedMemoryType 메모리 형식에 설명된 대로 EfiRuntimeServicesCode의 EfiRuntimeServicesData(권장), 데이터 섹션 중 하나에서 구현되어야 합니다.
모니터 모드 페이지 테이블 모든 모니터 모드 페이지 테이블은 다음을 수행해야 합니다.
  • EfiConventionalMemory에 대한 매핑을 포함하지 않음(예: OS/VMM 소유 메모리 없음)
  • 동일한 페이지에 대한 실행 및 쓰기 권한이 없어야 합니다.
  • 플랫폼은 실행 파일로 표시된 모니터 모드 페이지만 허용해야 합니다.
  • 메모리 맵은 모니터 모드를 EfiReservedMemoryType으로 보고해야 합니다.
  • 플랫폼은 모니터 모드 페이지 테이블을 수정하지 못하도록 보호하는 메커니즘을 제공해야 합니다.
최신/연결된 대기 상태 플랫폼은 최신/연결된 대기를 지원해야 합니다.
플랫폼 펌웨어 플랫폼 펌웨어는 시작하는 데 필요한 모든 코드를 수행해야 합니다.
플랫폼 펌웨어 업데이트 시스템 펌웨어는 Windows 업데이트 UpdateCapsule을 통해 업데이트하는 것이 좋습니다.