前面介绍了Intel Bios Guard,Intel Boot Guard区别于BIOS Guard的是Boot Guard是针对BIOS启动执行过程的安全保护,BIOS Guard是针对flash的保护机制。避免混淆概念,在此特别强调一下。
我们都知道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)。
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
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中数字签名
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 |
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
透过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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号