Cstyle的UEFI导读:Secure Boot简介

安全启动(SecureBoot)使用非对称加密与数字签名技术提供了一种从硬件到操作系统的安全启动信任链。本文介绍了系统固件、OS Loader、证书、密钥及之间的沟通流程。在windows下下可以使用如下命令获取PK,KEKdb、dbx、SetupMode、SecureBoot、PKDefault、KEKDefault、dbDefault、dbt、dbtDefault等全局变量的值。

例如:当前系统的SetupMode的NV值是0,表示工作在user模式。

平台密钥Platform Key (PK):

  1. PK分为PKpub 和PKpriv,前者保存在系统固件用来验证其他模块,后者用来对其他模块签名。
  2. 公钥作为机器所有者与系统固件之间信任链。也作为系统所有者身份证明,系统固件里面注入PK就意味着PK的所有者就拥有对机器的控制权。
  3. PK可以被注入到系统固件,注入之后就从设置模式(SetupMode)变成用户模式(UserMode)
  4. 微软建议使用2048 bit RSA算法, PK名为EFI_CERT_X509_GUID或EFI_CERT_RSA2048_GUID
  5. 修改PK之前必须先关闭SecureBoot否则不能操作。
  6. PK分为平台PK和安全固件更新PK,一个使用来验证KEK一个用来验证固件更新,二者需不同。
  7. 通过使用SetVariable()服务来注入和修改PK,重启后生效,修改PK时候需要确保KEK, db, and dbx不被修改和删除。
  8. 若系统处于User模式被当前PKpriv签名的“新PKpub”才允许对当前PKpub进行更新,此时PKpub是可读可写;
  9. 若处于Setup模式PKpub也是可读可写,则不需要使用当前PKpriv签名。在任何其他状态PKpub是只读。PKpriv还被用来对Key Exchange Key进行签名。
  10. PK可以选择每UUT/Model/ProductLine/OEM使用同样的值。

 

交换密钥Key Exchange Key (KEK):

  1. KEK是操作系统与系统固件信任链,KEK决定机操作系统与系统固件的关系,系统固件里面注入KEK就意味着KEK的所有者就拥有对操作系统的控制权。
  2. 任何需要与系统固件沟通的操作系统loader或APP需要往系统固件里注入其KEKpub。
  3. 操作系统能够合法启动的前提是要先在系统固件里面注入对应的KEK及db数据库。
  4. 使用UEFI的SetVariable()服务写入NVRAM区域,当处于用户模式时,写入的KEKpub必须是被当前系统已存的PKpriv签名。
  5. KEKpri用来更新db和dbx
  6. 微软提供的KEK包含Microsoft Corporation KEK CA 2011 in the KEK database,用来禁止某些不合法的OS加载以及添加新版OS的支持。
  7. 可以在微软官网下载 https://go.microsoft.com/fwlink/?LinkId=321185.

 

默认交换密钥KEKDefault 

  1. UEFI Spec默认的KEK仅作为测试使用。

 

第三方交换密钥OEM/3rd party KEK

  1. 第三方用户添加的KEK,一般不使用。
  2. 安全固件更新密钥Secure Boot firmware update key(Ksbfu)
  3. RSA-2048格式的证书,用来对进行系统升级的固件进行签名,确保被固件更新
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值