UEFI Secure Boot

news2025/1/25 4:45:10

一、前言

  在计算机世界,安全是一个永恒的话题。微软的Windows的安全性一直深受诟病,但随着操作系统层面的漏洞逐渐减少,黑客们盯上了BIOS固件。那如何保证从开机到进入操作系统这个过程中的安全呢?下图是Intel CPU的整个UEFI安全启动链条,涉及到了Boot Guard、Secure Boot等技术。
在这里插入图片描述
Microcode验证ACM, ACM验证IBB,IBB验证OBB,而OBB后面就是本文的主题UEFI Secure Boot。
在这里插入图片描述

二、Secure Boot简介

  UEFI Secure Boot是UEFI规范中所定义的一个功能。它保证了只有合法的第三方固件代码才能运行在OEM固件环境中。UEFI Secure Boot认为系统固件也就是BIOS是安全可信的。而任何第三方固件代码是不可信的,包括操作系统供应商(Operating System Vendor,OSV)安装的bootloader和独立的硬件供应商(Independent Hardware Vendor,IHV)提供的外围设备。终端用户可以选择注册和撤销UEFI安全引导映像安全数据库中的条目,作为管理验证策略的一部分。
  UEFI安全引导包括两部分——引导映像的验证和映像安全数据库更新的验证。

下图展示了UEFI Secure Boot验证的流程。
在这里插入图片描述
Key Usage in UEFI Secure Boot
在这里插入图片描述

安全启动相关密钥如下:
在这里插入图片描述
自签名证书:由与证书公钥匹配的私钥签名的证书称为自签名证书。根证书颁发机构(CA)证书属于这种类别的证书。

2.1 Platform Key(PK)

平台密钥PK在平台所有者(OEM)和平台固件之间建立信任关系。平台所有者将密钥的公钥部分PKpub注册到平台固件中。此步骤将平台从设置模式转为用户模式。Microsoft建议平台密钥的类型为EFI_CERT_X509_GUID,公钥算法为RSA,公钥长度为2048位,签名算法为sha256RSA。

2.2 Key Exchange Key(KEK)

密钥交换密钥(KEK)建立了操作系统与平台固件之间的信任关系。每个操作系统(以及可能需要与平台固件通信的每个第三方应用程序)都会在平台固件中注册一个公钥(KEKpub)。

  • db
    EFI _IMAGE_SECURITY_DATABASE db 的内容控制在验证加载的映像时信任哪些映像。 数据库可以包含多个证书、密钥和哈希,以识别允许的映像。
  • dbx
    在检查 db 之前验证映像时,必须检查EFI_IMAGE_SIGNATURE_DATABASE1 dbx 的内容,一旦存在任何匹配项,就必须阻止映像的执行。 数据库可以包含多个证书、密钥和哈希,以识别禁止的映像。 Windows 硬件认证要求规定必须存在一个dbx。

下图展示了使用db/dbx的验证流程
在这里插入图片描述
下图展示了一个引入dbt的验证流。需要基于dbx签名进行额外的检查。
在这里插入图片描述

2.3 Secure Boot Modes

  • Setup Mode
    Setup Mode 即设置模式,在尚未安装 PK 时将处于此模式,此模式允许操作 PK、 KEK、DB 和 DBX,系统所有者可以添加、删除或修改这些值,以控制允许在启动时执行的文件。一旦建立 PK,系统会在下次启动时自动退出设置模式并进入用户模式。

  • User Mode
    User Mode 即用户模式,是指在注册 PK 后生效的 Secure Boot 操作模式,Secure Boot 策略会被强制执行。用户模式是 Secure Boot 的默认模式,通常用于生产环境中。在用户模式下,通常无法修改 Secure Boot 策略。如果需要更改策略,需要进入设置模式或审核模式。

  • Audit Mode
    Audit Mode 即审核模式,其目的是收集有关 Secure Boot 检查结果的调试信息。进入审核模式后,仍然执行签名检查,但不会被禁止未授权的程序启动。管理员可以使用此模式来查看哪些启动过程部分被验证了、验证结果如何、是否存在与启动组件和策略相关的问题。

  • Deployed Mode
    部署模式是最安全的模式。用户模式和审计模式支持未经身份验证就转换到部署模式。但是,要从部署模式转换成任何其他模式,需要使用特定于平台的安全方法,或者删除经过身份验证的PK。

Secure Boot Modes Transition

参考

Understanding_UEFI_Secure_Boot_Chain
UEFI Spec2.10-32_Secure_Boot_and_Driver_Signing
什么是Boot Guard?电脑启动中的信任链条解析-老狼​
UEFI安全启动
安全技术篇 – Secure Boot(上)
安全技术篇 – Secure Boot(下)
Windows 安全启动密钥创建和管理指南
趣话安全启动:迷思与启示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python绘图-9饼图(下)

9.6饼图添加阴影 9.6.1图像呈现 9.6.2绘图代码 # 导入相关库 import numpy as np # 导入numpy库,用于处理数组和数值计算 import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化 import matplotlib.patheffects as path_effects …

小程序管理平台:助力企业数字化转型

微信小程序生态近年来发展迅猛,已成为中国互联网不可忽视的力量。截至2023年6月,微信小程序数量已超过300万,同比增长25%,涵盖了电商、生活服务、教育、金融等众多行业。微信小程序内容生态已经日趋完善,并满足各领域用…

脾胃,胃肠中医笔记

目录 脾胃的功能思伤脾,脑力工作者过度思考会伤脾胃焦虑会导致脾胃受伤按摩肚子顺时针还是逆时针,顺时针促消化/逆时针促排便脾胃生病症状舌苔腹胀、滞气的原因为什么大便稀?湿气重的原因及解决方案自测湿气重的方法 治疗脾胃药物总结补中益气…

Java开发中遇到最难的问题,多线程面试题高并发

开篇介绍 个人背景: 不说太多废话,但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了&#xff0…

Java项目:39 springboot008房屋租赁系统

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 房屋租赁系统的设计基于现有的网络平台,主要有管理员、房东、用户三个角色 管理员可以在线查看系统已有的人中心、房屋类型管理、…

STM32FreeRTOS信号量(STM32cube高效开发)

一、信号量 (一)信号量概括 信号量是操作系统中重要的一部分,信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 FreeRTOS 提供了多种信号量,按信号量的功能可分为二值信号量、计数型信号量、互斥信…

python文本分析与贝叶斯算法

一、python文本分析概念 文本分析中第一个概念是停用词,这种词有三个特点:(1)语料中大量出现;(2)没啥用;(3)留着没用。比如符号(!#&a…

2024年最全洗地机选购攻略盘点丨希亦、小米、云鲸、海尔洗地机哪款值得入手?

在现代家居清洁中,洗地机是不可或缺的得力助手,它融合了吸尘、拖地等多种功能。面对市场上琳琅满目的洗地机品牌和型号,选择一个可靠的品牌至关重要。优质的品牌能够提供高品质的产品,使您的清洁工作更加轻松高效。本文将向您推荐…

Android开发基础面试题,PDF超过6000页

前言 从毕业到现在面试也就那么几家公司,单前几次都比较顺利,在面到第三家时都给到了我offer!前面两次找工作,没考虑到以后需要什么,自己的对未来的规划是什么,只要有份工作,工资符合自己的要求…

阿里云域名优惠口令2024年最新,com、cn和域名注册续费使用

2024年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,cn域名注册优惠口令“互联网上的中国标识”,阿里云优惠口令是域名专属的优惠码,可用于域名注册、续…

领到了腾讯云服务器红包,可以用于购买服务器,开心!

在2024年腾讯云新春采购节优惠活动上,可以领取新年惊喜红包,打开活动链接 https://curl.qcloud.com/oRMoSucP 会自动弹出红包领取窗口,如下图: 腾讯云2024新春采购节红包领取 如上图所示,点击“领”红包,每…

[C语言]——C语言常见概念(1)

目录 一.C语言是什么、 二.C语言的历史和辉煌 三.编译器的选择(VS2022为例) 1.编译和链接 2.编译器的对比 3.VS2022 的优缺点 四.VS项目和源文件、头文件介绍 五.第⼀个C语言程序 ​​​​​​​ 一.C语言是什么、 ⼈和⼈交流使⽤的是⾃然语⾔&…

20 easy 70. 爬楼梯

//假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 // // 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? // // // // 示例 1: // // //输入:n 2 //输出:2 //解释:有两种方法可以爬到楼顶。 /…

cuda WSL2 无需单独安装

https://docs.nvidia.com/cuda/wsl-user-guide/index.html 这个写的很详细

Day27-Linux系统服务管理

Day27-Linux系统服务管理 1. ltrace:跟踪进程调用库函数2. 进程管理总结3. 什么是平均负载4. 可运行状态和不可中断状态是什么5. 平均负载其实就是【单位时间内的活跃进程数】。6. 如何查看Linux系统的cpu核数和颗数?7. 平均负载案例分析实战7.1 场景一&…

Pandas 之 merge

merge的作用: merge函数在Python的pandas库中的作用是用来合并两个或多个DataFrame数据表,依据指定的一个或多个键(通常是列名)进行连接操作[1]。 merge函数可以有多种连接类型(如内连接inner、左连接left、右连接ri…

SmartX 携手 openGauss 社区发布联合方案评测与性能最佳实践 | 附优化方法与测试数据

近日,北京志凌海纳科技有限公司(以下简称 “SmartX”)携手 openGauss 社区完成了 openGauss 数据库基于 SmartX 超融合平台(SMTX OS)和 SmartX 分布式存储平台(SMTX ZBS)的性能测试和调优。 结…

13. C++类使用方式

【类】 C语言使用函数将程序代码模块化,C通过类将代码进一步模块化,类用于将实现一种功能的全局数据、以及操作这些数据的函数集中存储在一起,同时可以设置类成员的访问权限,禁止外部代码使用和篡改本类成员,类成员访…

Vue开发实例(六)实现左侧菜单导航

左侧菜单导航 一、一级菜单二、二级菜单三、三级菜单1、加入相关事件 四、菜单点击跳转1. 创建新页面2. 配置路由3. 菜单中加入路由配置4、处理默认的Main窗口为空的情况 五、动态左侧菜单导航1、动态实现一级菜单2、动态实现二级菜单 一、一级菜单 在之前的Aside.vue中去实现…

Dynamo初学尝试梳理(五)-代码块上

“学而时习之,不亦说乎”,今天接着来,稍微提高点难度(高手直接忽略就行)。 代码块(Code Block),是 dynamo 中可以直接输入 DesignScript 的节点。可以通过双击鼠标左键,快…