什么是UEFI签名认证?UEFI签名有什么好处?

news2024/10/5 21:19:23

为了防御恶意软件攻击,目前市面上所有电脑设备启动时默认开启安全启动(Secure Boot)模式。安全启动(Secure Boot)是UEFI扩展协议定义的安全标准,可以确保设备只使用OEM厂商信任的软件启动。UEFI签名认证就是对运行在 UEFI 系统下的 efi 驱动和通过 UEFI 启动的 shim(垫片)进行测试审查后,获得微软 UEFI 签名。UEFI签名认证能够解决固件在启动时加载不了,无法正常工作等问题。

什么是BIOS、EFI和UEFI

BIOS是固化在电脑主板上一个程序,主要用于开机系统自检和引导加载操作系统。而现在的新型电脑用的基本都是UEFI启动,从EFI启动过渡而来,基本功能上都和BIOS差不多,都是完成系统自检、完成硬件初始化、加载操作系统。

EFI,是Extensible Firmware Interface的词头缩写,直译过来就是可扩展固件接口,它是用模块化、高级语言(主要是C语言)构建的一个小型化系统,它和BIOS一样,主要在启动过程中完成硬件初始化,但它是直接利用加载EFI驱动的方式,识别系统硬件并完成硬件初始化,彻底摒弃读各种中断执行。当EFI发展到1.1的时候,英特尔决定把EFI公之于众,EFI在2.0后也遂改称为UEFI。

UEFI 即统一可扩展固件接口,UEFI 用于替代较旧的 BIOS 固件接口和可扩展固件接口 (EFI) 1.10 规范。目前的计算机硬件基本上都集成了 UEFI 的固件,并逐步形成和推广成统一可扩展接口,负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。

UEFI具有一个独特的功能——安全启动(secure boot),而EFI是没有安全启动的。安全启动是UEFI扩展协议定义的安全标准,旨在帮助确保设备仅使用原始设备制造商 (OEM) 信任的软件启动,通俗的解释是叫做固件验证,开启UEFI的安全启动后,主板会根据TPM芯片(或者CPU内置的TPM)记录的硬件签名对各硬件判断,只有符合认证的硬件驱动才会被加载。而Win8以后的Windows则是在操作系统加载的过程中对硬件驱动继续查签名,符合Windows记录的硬件才能被Windows加载。

如何进行UEFI签名认证

开发者需要通过“Windows合作伙伴中心硬件仪表板”对UEFI 固件二进制文件进行数字签名,使其能够安装在 Windows 设备上。“Windows合作伙伴中心硬件仪表板”注册以及UEFI 固件签名都需要使用扩展验证(EV)代码签名证书。

UEFI 签名是 Windows 硬件开发人员中心仪表板提供的一项服务,开发人员通过该服务提交面向 x86、x86-64 或 ARM 计算机的 UEFI 固件二进制文件,通过手动审查批准这些二进制文件后,即可在启用安全启动且允许微软第三方UEFI CA的电脑上安装。

沃通CA提供微软指定证书颁发机构DigiCert、Sectigo等品牌EV代码签名证书,支持为驱动程序、UEFI固件、LSA插件进行签名,支持用于Windows合作伙伴中心硬件仪表板门户帐号注册。

微软最新UEFI签名要求

以下为微软对UEFI 签名认证的最新要求(2021年1月发布):

(1)UEFI 提交需要 EV 代码签名证书和 Azure Active Directory (AAD) 帐户。

(2)只有将发布给客户的生产质量代码(例如,“发布到制造”代码,而不是测试或调试模块)(没有仅限内部的代码或工具)才有资格进行 UEFI 签名。对于内部使用的代码,应将自己的密钥添加到安全启动数据库 UEFI 变量,或在开发和测试期间关闭安全启动。

(3)Microsoft UEFI CA 仅对那些供公众使用的产品进行签名,并且是跨所有 UEFI 安全启动支持的设备实现互操作性所必需的产品。如果产品特定于特定 OEM 或组织,并且外部不可用,则应使用私钥对其进行签名,并将证书添加到安全启动数据库。

(4)提交用于 UEFI 签名的代码不得受 GPLv3 或任何旨在赋予某人要求授权密钥的权利以便能够在设备上安装修改后形式的代码的许可证的约束。受已签名的此类许可证约束的代码可能会吊销该签名。例如,GRUB 2 在 GPLv3 下获得许可,不会被签名。

(5)如果存在与使用某些技术的代码相关的已知恶意软件向量,则该代码将不会签名,并且可能会被吊销。例如,使用未启用安全启动的 GRUB 版本将不会进行签名。

(6)如果提交代码中存在已知的安全漏洞,则不会对提交进行签名,即使你的功能未公开该代码也是如此。例如,OpenSSL 的最新已知安全版本是 0.9.8za 和 1.0.1h,因此,如果提交包含包含已知漏洞的早期版本,则不会对提交进行签名。

(7)在提交签名之前,您必须按照提交预测试文档(对于 UEFI 提交)测试您的产品。

(8)微软不会签署使用 EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 的 EFI 提交。相反,建议过渡到EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER。这可以防止不必要地使用运行时 EFI 驱动程序。

(9)使用 EFI 字节码 (EBC):Microsoft 不会签署基于 EBC 的提交的 EFI 提交。

(10)如果你的提交是 DISK 加密或基于文件/卷的加密,则必须确保不加密 EFI 系统分区,或者如果加密,请确保对其进行解密,并在 Windows 准备好启动时使其可用。

(11)如果你的提交由许多不同的 EFI 模块、多个 DXE 驱动程序和多个启动应用程序组成,Microsoft 可能会要求你将 EFI 文件合并为最小格式。例如,每个体系结构可能只有一个启动应用程序,并将 DXE 驱动程序合并到一个二进制文件中。

(12)如果你的提交是 SHIM(将执行移交给另一个引导加载程序),那么您必须首先提交给 SHIM 审查委员会并获得批准,然后才能签署提交。该审查委员会将检查以确保以下内容:

代码签名密钥必须仅由具有受信任角色的人员备份、存储和恢复,并在物理安全环境中至少使用双因素授权。

私钥必须使用硬件加密模块进行保护。这包括但不限于 HSM、智能卡、类似智能卡的 USB 令牌和 TPM。

操作环境必须达到至少等于 FIPS 140-2 级别 2 的安全级别。

如果嵌入式证书是 EV 证书,则应满足上述所有要求。我们建议您使用 EV 证书,因为这将加快 UEFI CA 签名周转速度。

提交者必须为填充程序加载的所有内容设计和实现强大的吊销机制,无论是直接的还是随后的。

如果您丢失密钥或滥用密钥,或者密钥泄露,则任何依赖该密钥的提交都将被撤销。

已知某些填充程序会给安全启动系统带来弱点。为了更快地完成签名,建议使用 shim - GitHub 分支中的 0.8 或更高版本的源代码。

(13)如果提交包含 iPXE 功能,则需要执行其他安全步骤。此前,微软已经完成了对2Pint的iPXE分支的深入安全审查。

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

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

相关文章

IT行业就业趋势显示:二季度平均月薪超8千

我国的IT互联网行业在近些年来规模迅速扩大,技能和技术水平也明显提升,目前IT互联网行业已经成为社会发展中新型产业的重要组成部分,行业的人才队伍也在不断的发展壮大,选择进入入互联网行业工作的人也越来越多。 根据58同城前段…

arcgispro3.1(账号登陆)

ArcGIS Pro 3.1 更新中文概览专注于 制图、GIS、Python前言:本次更新给了我两个惊喜,一个是本来 ArcMap 就有的功能,另一个明显是学习的 QGIS,嘿嘿,大家往下看吧。整理翻译了一下官方的 ArcGIS Pro 3.1 新特性更新概览…

远程桌面瘦客户机的优点和缺点

微软为 Windows 配备了本地远程桌面客户端,以通过远程桌面协议会话访问虚拟桌面环境或集中式服务器。但是,Windows 远程桌面客户端并不是唯一选项。另一个流行的选择是远程桌面瘦客户机。 一、什么是瘦客户机 瘦客户机是一种无硬盘的台式计算机&#x…

基数排序算法

目录:什么是基数排序?基本原理核心思想实现逻辑代码实现复杂度分析总结什么是基数排序? 基数排序:基数排序(Radix sort)是一种非比较型整数排序算法, 基本思想主要是通过关键字间的比较和移动记…

苹果笔不用原装可以吗?Apple Pencil平替笔推荐

近些年来,不管是学习还是画画,都有不少人喜欢用ipad。而ipad的用户,也是比较重视它的实用价值,尤其是不少人都想要好好利用来进行学习记笔记。事实上,有很多替代品都能替代Apple Pencil,仅仅用于记笔记就没…

Linux信号详解

文章目录Linux信号什么是信号**从生活角度理解: **技术应用角度的信号进程的注意事项信号概念用kill -l命令可以察看系统定义的信号列表信号处理常见方式概览信号产生通过终端按键产生信号使用signal函数自定义SIGINT信号的处理方式使用sigprocmask函数阻塞2号信号和40号信号vo…

Kafka 消息不丢失

Kafka 消息不丢失生产者丢失消费者丢失不丢失配置Kafka 保证消息不丢失:只对已提交的消息 (committed message) 做有限度的持久化保证 已提交的消息:当 n 个 Broker 成功接收到该消息并写入到日志文件后,就告诉生产者该消息已成功提交有限度…

Android 动态调用SD卡内jar包

背景:jar包不放在项目路径,而是放在SD卡目录内,需要动态调用jar包内函数实现自己的业务逻辑。全部流程新建一个项目用来打包jar。打包jar定义接口,规范函数定义实现类,实现方法,并实现函数的业务逻辑&#…

大数据 | (一)Hadoop伪分布式安装

大数据原理与应用教材链接:大数据技术原理与应用电子课件-林子雨编著 Hadoop伪分布式安装借鉴文章:Hadoop伪分布式安装-比课本详细 大数据 | (二)SSH连接报错Permission denied:SSH连接报错Permission denied 哈喽&a…

社科院与杜兰大学金融管理硕士项目——人生没有太晚的开始,不要过早的放弃

经常听到有人问,“我都快40了,现在学车晚不晚呢”“现在考研晚不晚?”“学画画晚不晚?”提出这些疑问的人,往往存在拖延,想法只停留在想的阶段,从来不去行动。当看到周边行动起来的人开始享受成…

JAVA JDBC连接mysql数据库

什么是驱动?驱动是指计算机系统中的一种软件程序,它用于控制硬件设备的操作。每个硬件设备都需要与操作系统进行通信,而操作系统需要知道如何与每个设备进行通信,这就是驱动程序的作用。什么是jdbc?JDBC 是 Java 数据库…

java中的LinkedList和ArrayList的选择和区别

一、LinkedList LinkedList同时实现了List接口和Deque对口,也就是收它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(stack),这样看来,linke…

操作系统面试题

操作系统一、简介篇1.解释一下什么是操作系统2.操作系统的主要功能3.软件访问硬件的几种方式4.操作系统的主要目的是什么5.为什么Linux系统下的应用程序不能直接在Windows下运行6.什么是用户态和内核态7.用户态和内核态如何切换8.什么是内核二、进程和线程篇1.多处理系统的优势…

Raft分布式共识算法学习笔记

1. Raft算法 Raft算法属于Multi-Paxos算法,它是在Multi-Paxos思想的基础上,做了一些简化和限制,比如增加了日志必须是连续的,只支持领导者、跟随者和候选人三种状态,在理解和算法实现上都相对容易许多 从本质上说&am…

HTML 扫盲

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录前言HTML 结构快速生成代码框架HTML 常见标签注释标签标题标签: h1-h6段落标签:p换行标签:br格式化标签…

MySQL优化策略

1、 sql优化 1.1 SQL 语句简化,简化是 SQL 优化的一大利器,因为简单,所以优越。 1.2 尽可能避免或者杜绝多表复杂关联,大表关联是大表处理的噩梦,一旦打开了这个口子,越来越多的需求需要关联,…

HTTPS协议之SSL/TLS详解(下)

目录 前言: SSL/TLS详解 HTTP协议传输安全性分析 对称加密 非对称加密 证书 小结: 前言: 在网络世界中,存在着运营商劫持和一些黑客的攻击。如果明文传输数据是很危险的操作,因为我们不清楚中间传输过程中就被哪…

Spring从精通到入门

Spring1.spring了解2. Spring实现2.1 添加依赖2.2 Spring实现2.2.1 xml配置实现2.2.1.1 Bean标签属性1.spring了解 spring重要性 在当前的系统中,spring的重要性and占比性高达50%,无论是在ssm、ssh等框架中,spring始终屹立在前方,…

Postman创建Elasticsearch(2.4版本)索引

一、创建索引二、删除索引三、其他1、查看es信息2、查看索引test信息3、test索引下mapping查看4、elasticsearch 2.2.1下载一、创建索引 1、请求方式:PUT2、请求地址:地址 索引名3、请求数据 {"settings": {"number_of_shards": …

C语言offsetof(TYPE, MEMBER)全解

offsetof(TYPE, MEMBER) 是一个宏定义,用于计算一个结构体中某个成员的偏移量。 其第一个参数 TYPE 是一个结构体类型,第二个参数 MEMBER 是 TYPE 中的一个成员变量名。 它将返回类型为 size_t 的整数,表示 MEMBER 相对于 TYPE 起始地址的偏…