UEFI 제출물에 대한 제출 전 테스트

1 소개

이 글에서는 Microsoft UEFI CA 서명을 받기 위해 UEFI 모듈을 제출하기 전에 테스트 서명을 하여 검증하는 방법을 알려줍니다. Windows 개발자 센터 하드웨어 대시보드를 사용하여 UEFI 드라이버나 앱을 서명하기 전에, 여기에 소개된 지침에 따라 UEFI 드라이버나 앱을 테스트 서명하여 검증해야 합니다. 이렇게 하면 UEFI 드라이버나 앱이 서명 가능한지, 그리고 서명 후 작동할지 사전에 확인하는 데 도움이 됩니다.

Microsoft UEFI CA의 서명을 받기 전에 제품 QA를 실시하면 반복 제출 가능성을 낮출 수 있어 Windows 개발자 센터 하드웨어 대시보드의 서명 처리 시간이 빨라집니다. 이는 한 번 제출할 때마다 대시보드에서 상당한 검토 리소스가 필요하기 때문입니다.

참고: 테스트 서명한 UEFI 모듈은 대시보드에 제출하지 마십시오. 서명한 모듈을 제출하면 통과되지 않습니다.

2 UEFI 모듈 테스트 서명 및 확인

다음 단계에 따라 Microsoft UEFI CA의 서명을 받기 전에 UEFI 제품을 사용 및 테스트하십시오.

1. 인증서(또는 테스트 인증서)로 제품을 서명합니다.   
2. 이 인증서를 SecureBoot 데이터베이스에 추가합니다.

3 Windows HCK를 사용하여 UEFI 모듈 테스트 서명 및 확인

다음 단계에 따라 Windows를 실행하는 장치에서 Windows HCK를 사용할 수 있습니다.

1. 테스트 시스템을 준비합니다.

2. UEFI 모듈을 테스트 서명합니다.

3. “Lost” 테스트 인증서를 보안 부팅 허용 데이터베이스에 설치합니다.

4. 테스트 서명한 UEFI 모듈이 성공적으로 로드되고 실행되는지 확인합니다.

3.1 테스트 시스템 준비

UEFI 보안 부팅 시스템에 “Lost CA” 등의 테스트 인증서를 설치하여 테스트 서명한 UEFI 모듈을 테스트할 준비를 하려면 다음 단계를 따르십시오.

1. 테스트할 UEFI 보안 부팅 기능의 시스템을 마련합니다. 펌웨어는 UEFI 2.3.1 Errata C 이상을 준수해야 합니다.

2. BIOS 구성에서 보안 부팅 사용자 지정 모드를 설정하고 모든 보안 부팅 키와 인증서를 지웁니다. 일부 펌웨어는 옵션 ROM과 같은 특정 이미지 경로 인증을 무시합니다. 이 이미지 경로들을 테스트하는 경우 이것을 다시 설정해야 합니다.

3. USB 드라이브에 UefiSecureBootManualTests.zip의 압축을 풉니다. (이 파일은 이 블로그 게시물에 첨부되어 있습니다.) 하드웨어 인증 키트를 설치했다면 이 파일은 C:\Program Files (x86)\Windows Kits \8.0\Hardware Certification Kit\Tests\amd64\secureboot\UefiSecureBootManualTests.zip에도 있습니다.

4. 테스트 시스템에서 Windows로 부팅하고 Powershell을 관리자로 시작한 후 Set-ExecutionPolicy Bypass –force를 실행합니다.

5. ManualTests\tests\00-EnableSecureBoot\EnableSecureBoot.ps1을 실행하고 시스템을 재부팅합니다. 이렇게 하면 나중에 데이터베이스에 "Lost" 테스트 키를 설치할 때 사용할 테스트 KEK로 보안 부팅을 할 수 있습니다.

3.2 UEFI 모듈 테스트 서명

ManualTests\generate\TestCerts\Lost\signApps.bat의 예에 따라 Lost 인증서 체인을 사용하여 UEFI 모듈을 서명하는 방법에 대해 알아보십시오.

· 시스템 클럭을 다시 1/1/2012로 설정해야 Lost 인증서 C:\WINDOWS\system32>date 1-1-12를 사용하여 서명할 수 있습니다.

· Lost*.cer을 인증서 스토어에 가져와야 합니다. 이렇게 하려면 파일 탐색기에서 ManualTests\generate\TestCerts\Lost\로 이동하여 각 .cer 파일을 마우스 오른쪽 단추로 클릭하고 설치를 클릭하십시오.

· Windows SDK의 일부로 제공되는 signtool.exe를 받으십시오.

· signtool.exe sign /fd sha256 /a /f “ManualTests\generate\TestCerts\Lost\Lost.pfx” <your_module.efi>를 실행하십시오.

서명할 때 Windows 8 또는 Windows 8.1을 실행하는 컴퓨터를 사용하는 것이 좋습니다. 사용 중인 시스템이 Windows Vista 또는 이전 Windows 운영 체제를 실행하고 있는 경우, signtool.exe를 설치된 SDK 디렉터리에서 실행해야 합니다. 이러한 버전의 운영 체제에서는 /fd 옵션의 해당 SDK 디렉터리의 매니페스트와 DLL에 따라 signtool.exe가 제대로 작동할지 결정됩니다.

보안 부팅이 설정되어 있는지 확인: 위 "테스트 시스템 준비" 단계를 마치면 보안 부팅이 설정되어야 하지만 Lost 키는 아직 데이터베이스에 설치되지 않았습니다. 테스트 서명된 UEFI 드라이버 또는 앱을 로드하려고 시도하면 실행이 차단됩니다. 일부 BIOS 시스템에서는 경고 메시지가 표시되지만 어떤 시스템에서는 아무런 메시지 없이 실패합니다. 실행이 차단되면 모듈 로드 경로에 보안 부팅이 올바로 설정된 것입니다. 테스트 서명한 UEFI 모듈이 실행되면 보안 부팅이 올바로 설정되지 않은 것입니다.

3.3 Lost 테스트 인증서를 보안 부팅 허용 데이터베이스에 설치

PowerShell을 관리자로 열고 다음 명령어를 실행하십시오.

ManualTests\tests\01-AllowNewCertificate\append_LostCA_db.ps1

 

이렇게 하면 "Lost" 테스트 인증서 체인이 허용 데이터베이스에 추가됩니다. UEFI 셸을 통해 HCK의 UEFI 테스트 모듈(예를 들면, ManualTests\apps\<ARCH>\pressanykey1.efi)을 실행하여 시스템이 제대로 구성되었는지 확인할 수 있습니다. 그렇게 하면 테스트 이름이 표시되고 키보드의 아무 키나 누르라는 메시지가 표시됩니다.

3.4 테스트 서명한 UEFI 모듈이 성공적으로 로드되고 실행되는지 확인

보안 부팅 시스템이 테스트할 테스트 인증서와 UEFI 모듈이 테스트 인증서에 의해 서명되었음을 신뢰하도록 구성되고 나면 테스트를 시작할 준비가 된 것입니다. UEFI 모듈을 설치하고 재부팅한 후 모듈이 성공적으로 로드 및 실행되는지 확인하십시오. 하드웨어의 UEFI 드라이버를 옵션 ROM에 설치하거나 DRIVER#### UEFI 변수를 통해 테스트할 수 있습니다.

4 다른 도구 사용

다음은 도움이 될 수 있는 몇 가지 링크입니다.

Sourceforge - SecurityPkg

UEFI 보안 부팅을 위한 UEFI 응용 프로그램 및 드라이버 서명

단, BIOS에서 보안 부팅을 지운 후, Linux로 부팅하여 Linux 도구를 실행하거나 MokManager UI(시스템이 SetupMode 상태일 때 데이터베이스를 설정할 수 있는 UI)가 포함된 SHIM을 사용해야 합니다.

UefiSecureBootManualTests.zip