Intel Boot Guard

前面介绍了Intel Bios Guard,Intel Boot Guard区别于BIOS Guard的是Boot Guard是针对BIOS启动执行过程的安全保护,BIOS Guard是针对flash的保护机制。避免混淆概念,在此特别强调一下。

为什么引入Boot Guard

我们都知道BIOS 启动保护机制有TPM, UEFI Secure Boot等,但是这些安全启动机制的信任根都建立在BIOS开机的早期初始化部分,比如legacy BIOS时代的Boot Block,UEFI BIOS的SEC,PEI等阶段。因此,缺乏对Bios 早期初始化部分的安全验证,由此引入Boot Buard。
也就是Boot Guard的主要目的是实现对Boot Block的保护,确保Boot Block也是可信的,安全的。Boot Guard针对Boot Block部分称为IBB (Initial Boot Block)


Scope of Boot Guard

Boot Guard保护架构


Boot Guard 验证流程


什么是ACM?

ACM是Intel针对特定的CPU/Chipset提供的signed的binary
ACM binary由BIOS放到BIOS ROM中
ACM由CPU的uCode authenticate
CPU加载ACM到AC-RAM并执行
针对Boot Guard所使用的ACM也叫Startup ACM
其它用途的ACM例如BIOS ACM for TXT, SINIT ACM for TXT

CPU Verify S-ACM

ACM如何验证IBB呢?


Arhiteture of Keys in Boot Guard

PCH中的 Root Public Key Hash用来校准Key Manifest中的OEM Root Public Key
的完整性,正确性。
同理,Ke Manifest中的BPM Public Key Hash用来校准Boot Policy Manifest中的
BPM Public Key的完整性,正确性。
OEM Root Public Key用来解密KeyManifest数字签名
BPM Public Key用来解密Boot Policy Manifest中数字签名

Boot Guard Key Flow

什么是Key Manifest (KM)

Signed by OEM Root Private Key
主要包含OEM Root Public Key, Boot Policy Manifest Public Key Hash
BpmGen2 Tool产生 Key Manifest Binary
$ bpmgen2 KMGEN - KEY BPM_Public_Key.pem BPM

- KM KeyManifest.bin

- SIGNKEY OEM_Root_Private_Key.pem

- SIGHASHALG SHA384

- SCHEME RSAPSS

- KMKHASH SHA384

- KMID 1

- SVN
Key Manifest Format:

Name

Size

Description

StructureID

8

__KEYM__

Structure Version

1

0x21

Reserved

3


KeySignatureOffset

2

Key Manifest Signature offset

Reserved2

3


Key Manifest Revision

1


KMSVN

1


Key Manifest ID

1

The key Manifest Identifier(KMID)

KmPublicHashAlg

2

Hash algorithm or OEM public key

KeyCount

2

Count of Key Hash structures

KeyHash

Variabvle


Key Manifest Signature

sizeof (KSS)

Key Manifest Signature

什么是Boot Policy Manifest(BPM)

BPM也是一个signed structure,主要包含S-ACM处理的一些elements,其中包含 Hashed IBB Segments。
BpmGen2 Tool产生 Boot Policy Manifest Binary
$ bpmgen2 GEN ClientBios.fd bpmgen2.params

-BPM Manifest.bin

-U ClientBios_MBIOS.fd

-KM KeyManifest.bin

以上这些KM, BPM,S-ACM等都存在于BIOS flash中,那么如何让处理器知道在哪里呢?这是个问题

透过Firmware Interface Talbe (FIT)来告知处理器

FIT table必须是非压缩的数据格式
FIT table存在于(4GB-40h)固定位置
CPU在执行reset vector(0xFFFFFFF0h)之前首先处理FIT table
FIT table由一些类型的entry组成例如:

FIT ENTRY TYPE

DESCRIPTION

0x00

FIT Header Entry

0x01

Microcode Update Entry

0x02

Boot Guard ACM Entry

0x0B

Key Manifest Entry

0x0C

Boot Policy Manifest Entry

FitGen Utility产生FIT table,例如:
$ FitGen.exe

-D ClientBios.fd ClientBios.fd

-F 0x40

-NA

-L 0x3B000 197DB236-F856-4924-90F8-CDF12FB875F3

-I 4A4CA1C6-871C-45bb-8801-6910A7AA5807

-S 26fdaa3d-b7ed-4714-8509-eecf1593800d

-O 0x0C RESERVE 0x600

-O 0x0B RESERVE 0x400

-P 0xA 0x70 0x71 0x1 0x4 0x2a


时间仓促,欢迎指正错误!

唐爱六.2023.5.17

展开阅读全文

页面更新:2024-05-03

标签:数字签名   正确性   仓促   初始化   可信   架构   处理器   完整性   是非   机制

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top