什么是UEFI签名认证?UEFI签名有什么好处?
为了防御恶意软件攻击,目前市面上所有电脑设备启动时默认开启安全启动(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分支的深入安全审查。
相关文章:
什么是UEFI签名认证?UEFI签名有什么好处?
为了防御恶意软件攻击,目前市面上所有电脑设备启动时默认开启安全启动(Secure Boot)模式。安全启动(Secure Boot)是UEFI扩展协议定义的安全标准,可以确保设备只使用OEM厂商信任的软件启动。UEFI签名认证就是对运行在 UEFI 系统下的 efi 驱动和通过 UEFI …...
案例14-课程推送页面逻辑整理--vue
目录一级目录二级目录三级目录一、背景介绍二、问题分析问题1:逻辑边界不清晰,封装意识缺乏问题问题2:展示效果上的问题三、解决过程问题一 代码结构混乱问题解决问题二 代码结构混乱问题解决问题三 展示效果上的细微问题四、总结一级目录 二…...
5大GPU厂商共建 | openKylin社区GPU SIG首次例会召开!
3月8日,openKylin社区GPU SIG首次例会以线上形式召开。此次会议由长沙景美集成电路设计有限公司、摩尔线程智能科技(北京)有限责任公司、格兰菲智能科技有限公司、象帝先计算技术(重庆)有限公司等GPU厂商的多位SIG Mai…...
SpringBoot读取配置文件
目录一、简介1、SpringBoot 中常用读取配置方法2、 ConfigurationProperties和Value的区别二、使用 ConfigurationProperties 读取配置三、使用 Value 读取配置一、简介 在日常开发使用 SpringBoot 框架时,经常有一些配置信息需要放置到配置文件中,我们…...
51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信
51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信NRF24L01一、简介二、引脚功能描述程序设计一、对 24L01 的程序编程的基本思路如下:二、Tx 与 Rx 的配置过程1、Tx 模式初始化过程:2、Rx 模式初始化过程:三、基本程序函数通信…...
C++友元
欢迎来观看温柔了岁月.c的博客 目前 设有C学习专栏 C语言项目专栏 数据结构与算法专栏 目前主要更新C学习专栏,C语言项目专栏不定时更新 待C专栏完毕,会陆续更新C项目专栏和数据结构与算法专栏 一周主要三更,星期三,星期五&#x…...
MySQL内置函数
文章目录日期函数字符串函数数学函数其他函数日期函数 获取年月日: mysql> select current_date(); ---------------- | current_date() | ---------------- | 2023-02-01 | ---------------- 1 row in set (0.00 sec)获得时分秒: mysql> se…...
mysql数据库之innodb存储引擎架构之内存架构
一、逻辑存储结构 mysql5.5版本开始,默认使用innodb存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。 架构图(左侧为内存架构,右侧为磁盘架构) 二、 内存架构。 1、缓冲…...
Vue:(三十五)路由vue-router
今天,我们开始学习vue中一个很关键的知识点,路由。理解vue的一个插件库,专门用来实现SPA应用单页web应用整个应用只有一个完整的页面点击页面中的导航连接不会刷新页面,只会做页面的局部更新数据需要通过ajax请求获取下来…...
Dynabook笔记本电脑无法开机怎么重装新系统?
Dynabook笔记本电脑无法开机怎么重装新系统?有用户使用Dynabook笔记本电脑出现了无法正常开机的情况。遇到这样的问题是我们的电脑系统出现了损坏,可以尝试进行系统修复。如果无法修复的话,就需要进行系统重装了。以下为大家带来Dynabook笔记…...
React Native基础知识点
1、组件 与react编写web应用不同,不是使用div、span等标签。而是使用RN官方提供的组件,如View、Text等组件来搭建页面 2、宽高 React Native 中的尺寸都是无单位的,表示的是与设备像素密度无关的逻辑像素点。默认值为auto <View style{{…...
nginx 平滑升级
背景介绍 因为一些原因,比如说 Nginx 发现漏洞、应用一些新的模块等等,想对 Nginx 的版本进行更新,最简单的做法就是停止当前的 Nginx 服务,然后开启新的 Nginx 服务。但是这样会导致在一段时间内,用户是无法访问服务…...
数据结构——链表OJ题目讲解(2)
作者:几冬雪来 时间:2023年3月10日 内容:数据结构链表OJ题目讲解 来源:牛客网和力扣 目录 前言: 刷题: 1.反转链表: 1.改变指向的解法: 2.取头结点插入到新链表: …...
GitHub上线重量级分布式事务笔记,再也不怕面试官问分布式了
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式…...
C++语法规则1(C++面向对象 )
C面向对象 面向对象的三大特征是继承,多态和封装,C重面向对象重要的就是这些,我们下面通过一些简单的实例加以理解,从这小节开始,我们将开启新的编程旅途。与 C 语言编程的思想完全不同了,这就是 C!理解概…...
Web漏洞-CSRF漏洞
CSRF漏洞介绍:CSRF(Cross-Site Request Forgery),中文名称:跨站请求伪造,是一种劫持用户在当前已登录的Web应用程序上执行非本意操作一种攻击.原理:攻击者利用目标用户的身份,执行某…...
Python3-面向对象
Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象…...
拐点!新能源车交付均价首次「低于」燃油车,智能电动成新爆点
2023年开局,随着特斯拉打响新能源汽车市场的「价格战」首炮,除部分燃油车品牌(仍依赖自身多年的用户和品牌积累的溢价能力)没有跟进之外,几乎所有的新能源车型都在进行车型价格的下调。 而数据也在反映市场的拐点即将来…...
JavaScript String 字符串对象实例合集
文章目录JavaScript String 字符串对象实例合集返回字符串的长度为字符串添加样式返回字符串中指定文本首次出现的位置 - indexOf()方法查找字符串中特定的字符,若找到,则返回该字符 - match() 方法替换字符串中的字符 - replace()JavaScript String 字符…...
实习生培养计划
部门最近入职了实习生,为了更好的帮助实习生完成由学生向职业人的转变,并尽快融入企业稳步成长,现提出实习生培养计划,具体方案如下: 1、方案目的 1、使实习生快速转换角色与心态,适应从校园到企业的坏境…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...
RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
