微软代码签名使用Authenti code技术和数字证书来验证软件发布者的身份和代码完整性它通过确保代码(如.exe、.dll、驱动程序、脚本)未被篡改来防止恶意软件;它依赖于受信任的证书颁发机构(CA)和SignTool.exe等工具,而Azure Artifact Signing(以前称为Trusted Signing)等更新的托管服务则简化了开发人员的安全签名。

核心概念

Authenticode:微软用于二进制文件数字签名的标准,用于确认代码的创建者以及代码是否已更改。

微软代码签名数字证书:由受信任CA颁发或提供商签发(例如Gworg),包含发布者信息和公钥,与发布者的私钥一起使用来签署代码。

完整性:生成代码的加密哈希(摘要);对代码的任何更改都会改变哈希值,使签名无效。

主要工具和服务

SignTool.exe:Windows SDK中的一个命令行实用程序,用于对文件进行签名和验证。

Microsoft Artifact Signing(以前称为Trusted Signing):一项托管的Azure服务,用于端到端代码签名,简化开发人员的流程。

VBA/Office:数字签名可以应用于Office文档,例如Excel工作簿(例如.xlsx),用于宏和组件。

为什么这很重要

建立信任:用户和系统更信任已签名的软件,因为它能显示真实性。

安全性:降低恶意软件风险,避免Windows Defender等防病毒软件的误报。

合规性:有助于满足软件分发的安全标准和要求,特别是驱动程序和内核组件。

工作原理(简化版)

开发者签名:发布者使用其私钥(通常存储在安全的硬件安全模块-HSM中)对代码进行签名。

验证:当用户运行代码时,Windows会将签名与证书中的公钥进行比对,以确保其来自可信来源且未被修改。

打开网易新闻 查看精彩图片