硬件驱动为什么要有WHQL数字签名

硬件驱动要有WHQL数字签名才能实现正常安装、启动、运行,并实现驱动静默安装。

目前的桌面操作系统中,Windows系统市场占有率处于优势,Windows 的各个版本的系统加起来几乎占领了大部分市场。所以很多工业和行业的硬件设备都要考虑兼容在Windows系统上使用,这个使用过程中难免涉及设备的驱动使用(驱动是硬件设备和Windows系统联接传输数据的桥梁,没有驱动的硬件设备是无法正常工作的),但Windows系统对驱动的安装、启动、运行有一个较重要的要求,那就是相关的驱动文件需要加上数字签名。

如果该驱动程序文件在沃通CA做过 WHQL,则右键属性弹出的窗口中有一个选项卡“数字签名”,点击详细信息会看到具体的数字签名证书详情。

假设驱动安装时没有数字签名会怎样?我们看以下截图:

没有WHQL签名驱安装时提示“Windows 无法验证此驱动程序软件的发布者”或驱动没有效数字签名之类的警告:

而且,没有数字签名的驱动程序安装到 Windows中后,在设备管理器里,设备会显示感叹号,无法启动工作,如下图:

所以,如果一个硬件驱动没有微软发布的数字签名,则会在安装时会被Windows 拦截警告,提示没有数字签名或者驱动没有发布者,而且更可能的是导致设备驱动启动不了不工作。这一切源于微软对Windows系统保护,防止没有进行数字签名认证的驱动对Windows造成的破坏,因为驱动会涉及到系统内核中一些重要的指令,稍有不慎就造成Windows系统的死机和蓝屏。

可能有驱动开发者要问,我可以用代码签名证书为驱动进行数字签名,为什么要WHQL签名?

因为根据微软新政策,受微软信任的第三方内核模式代码签名交叉证书,将于2021年4月全部到期。此后,微软将成为Windows内核模式代码(驱动程序)签名的提供商。也就是说,以前第三方CA颁发的代码证书可以签名驱动使用,是因为签名时有微软给的交叉证书,现在微软给的交叉证书到期了,以后驱动签名规则其实是变了,驱动是在系统内核模式下工作的,所以绝大数驱动都是要经过WHQL测试认证,从而获得微软官方发布的数字签名才可以正常工作。

如下是微软给第三方CA颁发的可信交叉证书到期时间:

同时,经过WHQL测试认证签名后的硬件驱动安装时会实现驱动静默安装,不会弹出任何警告,可以给用户很好的使用体验,让驱动有很好的稳定性,不会像用代码签名证书签名后的驱动安装时会弹出如下弹窗(Trusted publishers警告):

WHQL签名认证其实是有其自身复杂性,具有一定的技术门槛,不管是在认证平台搭建环节,或者对微软签名策略的了解,以及驱动签名对各版本Windows系统的适配性,甚至认证过程中对驱动的必要修改,这对很多驱动开发者或驱动开发企业的开发人员来说,很难详细掌握。沃通CA作为一家专注于数字证书领域多年的企业,拥有成熟的WHQL测试经验和相关技术,根据市场需求,为广大驱动开发者提供了多种WHQL认证方案。

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

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

相关文章

服务器数据恢复—raid5上层NTFS分区误删除/格式化的数据恢复案例

NTFS是windows操作系统服务器应用最为广泛的文件系统之一。理论上,NTFS文件系统格式化操作虽然不会对数据造成太大的影响,但是有可能会出现部分文件目录结构丢失的情况。下面介绍一台服务器误操作导致raid5阵列上层的NTFS分区被格式化后如何逆向操作恢复…

【接口自动化测试】HTTP协议详解

协议 简单理解,计算机与计算机之间的通讯语言就叫做协议,不同的计算机之间只有使用相同的协议才能通信。所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合。 OSI模型 1978年国际化标准组织提出了“开放系统互联网…

了解JVM的相关概述,发现很多全忘了(文末福利)

1、学之前存在的问题 1、你被JVM伤害过吗? 你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM!想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一…

clusterProfiler包学习

&#x1f4d6; Introduction | Biomedical Knowledge Mining using GOSemSim and clusterProfiler (yulab-smu.top) 部分使用 #GO classificationlibrary(clusterProfiler) data(geneList, package"DOSE") gene <- names(geneList)[abs(geneList) > 2]# Entre…

在Spring Boot中使用Thymeleaf开发Web页面

引言&#xff1a; 为啥写这篇文章呢&#xff1f;我明明就没怎么用过这个Thymeleaf进行web开发&#xff0c;用JSP也行&#xff0c;三剑客也行&#xff0c;或者Vue&#xff0c;React&#xff0c;PHP等等&#xff0c;不好吗&#xff1f; 那我为啥写这篇博客呢&#xff1f;这个写了…

基于安卓android微信小程序的刷题系统

项目介绍 面试刷题系统的开发过程中&#xff0c;采用B / S架构&#xff0c;主要使用jsp技术进行开发&#xff0c;中间件服务器是Tomcat服务器&#xff0c;使用Mysql数据库和Eclipse开发环境。该面试刷题系统包括会员、答题录入员和管理员。其主要功能包括管理员&#xff1a;个…

【Linux系统化学习】进程的状态 | 僵尸进程 | 孤儿进程

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 目录 操作系统进程的状态 运行状态 阻塞状态 进程阻塞的现象 挂起阻塞状态 Linux进程状态 Linux内核源代码怎么说 R&#xff08;running状态&#xff09;运行状态 S&#xff08;sl…

关于漏洞:检测到目标SSL证书已过期【原理扫描】

这个漏洞是监听443端口的&#xff0c;如果我们是正式的网站且使用了https那么更新证书即可。 但是我的服务器上面几乎是个空服务器&#xff0c;谁会用443呢&#xff1f; 找不到谁用了那我就部署一个nginx&#xff0c;用nginx代理443&#xff0c;找个证书配一下呗。 然而当我…

rabbit MQ的延迟队列处理模型示例(基于SpringBoot)

说明&#xff1a; 生产者P 往交换机X&#xff08;typedirect&#xff09;会发送两种消息&#xff1a;一、routingKeyXA的消息&#xff08;消息存活周期10s&#xff09;&#xff0c;被队列QA队列绑定入列&#xff1b;一、routingKeyXB的消息&#xff08;消息存活周期40s&#xf…

Prolog 中的逻辑探险:学习9组逻辑蕴涵公式

引言 上次写了16组等价公式定律,今天继续用Prolog写9组逻辑蕴涵公式。 感觉这些公式的名称与公式挺难一一对应来记忆的,只能多练习了. 1. 附加律 (Addition) A ⇒ A∨B 当你拿到一个苹果&#xff08;A&#xff09;&#xff0c;突然你知道&#xff0c;即使有了梨&#xff08;…

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制商业文案助手

随着智能助手的不断普及和发展,商业文案的创作也变得更加智能化和定制化。在这个信息爆炸的时代,商业文案的撰写已经不再是简单的文字表达,而是需要结合大数据分析和人工智能技术,以更好地满足目标客群的需求。在本文中,我们将介绍如何利用向量数据库Milvus Cloud搭建GPT大…

Nosql的redis概述及基本操作

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言&#xff0c;用于执行对关系型…

tokenizers Tokenizer 类

Tokenizer 类 依赖安装 pip install tensorflow pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple基类原型 tokenizers.Tokenizer(model)基类说明 Tokenizer 函数构造一个分词器对象。分词方式主要有word-level、subword-level、char-level三种&#x…

软件测试/人工智能丨人工智能取代软件测试团队

在数字时代&#xff0c;人工智能&#xff08;AI&#xff09;和软件测试如同两位不同领域的英雄&#xff0c;各自拥有独特的技能和力量。然而&#xff0c;当这两者碰撞在一起时&#xff0c;究竟会擦出怎样的火花呢&#xff1f;让我们进入这场奇妙的对决&#xff0c;探索AI如何改…

MFC项目添加CUDA支持

文章目录 前言一、开启项目CUDA支持二、链接CUDA库三、链接cu文件 前言 我目前的项目状况是&#xff1a; 拥有一个MFC项目&#xff1b;拥有现成的 .cuh文件 和 .cu文件。 我想做的是&#xff1a;将.cuh和.cu文件放到我的项目中&#xff0c;并且编译成功跑起来 一、开启项目C…

Halcon (0):C# 联合Halcon方式简介和就业市场说明

文章目录 文章专栏视频资源前言相关视频联合C#开发直接导出C#代码Halcon引擎调用开发函数封装库工程导出 总结就业市场 文章专栏 Halcon开发 视频资源 机器视觉之C#联合Halcon 前言 根据我的测试&#xff0c;我发现Halcon和WPF中的halcon插件&#xff0c;代码具有对应性。就是…

Unity - 实现模型动态伸长缩短,贴图不变形(材质球参数篇)

思路为修改模型材质球的Tiling参数&#xff0c;根据与自身localScale的值得到合适的比例&#xff0c;再修改Tiling值 var mat target.transform.GetComponent<Renderer>().material; var oriValue mat.mainTextureScale;//沿着Y轴伸缩 oriValue.y 1 * target.transfo…

HCIP-二、MSTP+Eth-trunk

二、MSTPEth-trunk 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.如图所示&#xff0c;配置设备名称和 IP 地址。 //2.在 SW1 与 SW2 之间配置链路聚合协议 LACP&#xff0c;完成以下需求&#xff1a; //2.1 SW1 作为主动端&#xff0c;设置系统优先级为最高。 [SW1]l…

报错!Jupyter notebook 500 : Internal Server Error

Jupyter notebook 报错 500 : Internal Server Error 问题背景 tensorflow-gpu环境&#xff0c;为跑特定代码专门开了一个环境&#xff0c;使用conda安装了Jupyter notebook&#xff0c;能够在浏览器打开Jupyter notebook&#xff0c;但是notebook打开ipynb会报错。 问题分析…

Android——Gradle插件项目根目录settings.gradle和build.gradle

一、settings.gradle结构分析 项目根目录下的settings.gradle配置文件示例&#xff1a; pluginManagement {/*** The pluginManagement.repositories block configures the* repositories Gradle uses to search or download the Gradle plugins and* their transitive depen…