加密工具

加密工具提供用于代码签名、签名验证和其他加密任务的命令行工具。

代码签名简介

软件行业必须为用户提供信任代码的方法,包括 Internet 上发布的代码。 许多网页仅包含可下载且风险很小的静态信息。 但是,某些页面包含要下载并在用户计算机上运行的控件和应用程序。 下载和运行这些可执行文件可能会有风险。

打包的软件使用品牌和受信任的销售网点来确保用户的完整性,但是当代码在 Internet 上传输时,这些保证不可用。 此外,Internet 本身无法对软件创建者的身份提供任何保证。 它也不能保证下载的任何软件在创建后不会更改。 浏览器可能会显示一条警告消息,说明下载任何类型的数据可能的危险,但浏览器无法验证代码是否是它声称的。 必须采取更积极的方法,使 Internet 成为分发软件的可靠媒体。

保证文件的真实性和 完整性 的一种方法是将 数字签名 附加到这些文件。 附加到文件的数字签名可以肯定地标识该文件的分发服务器,并确保创建签名后文件的内容不会更改。

可以使用 Microsoft 的加密 API 创建和验证数字签名。 有关加密和 CryptoAPI 函数的背景信息,请参阅 加密概要

有关 数字签名证书证书存储的详细信息,请参阅以下主题:

目前,CryptoAPI 工具支持 Microsoft Authenticode 技术,允许软件供应商签署以下类型的文件进行 Authenticode 验证。

文件扩展名 目录
.appx、.msix、.appxbundle、.msixbundle
打包的 Windows 应用。
.cab
用于应用程序安装和设置的独立文件。 在一个文件柜文件中,多个文件被压缩为一个文件。 它们通常位于 Microsoft 软件分发磁盘上。
.cat
包含多个文件的数字 指纹 的文件。 .cat 文件可用于确保其指纹包含的文件的完整性。
.dll
包含可执行函数的文件。
.exe
包含可执行程序的文件。
.js
.vbs
.wsf
适用于 JScript 或 Microsoft Visual Basic Scripting Edition 的 Windows shell 文件 (VBScript) 。
.msi
.msp
.mst
Windows 安装程序文件。
.ocx
包含 Microsoft ActiveX 控件的文件。
.ps1
包含 PowerShell 脚本的文件。
.stl
包含 证书信任列表 的文件 (CTL) 。
.sys
包含驱动程序二进制文件的文件。

 

有关数字签名的信息,请参阅以下文档:

  • CCITT,建议X.509, Directory-Authentication框架,咨询委员会,国际电话和电报,国际电信联盟,1989年,日内瓦。
  • RSA 实验室, PKCS #7:加密消息语法标准。 版本 1.5,1993 年 11 月。
  • Schneier, Bruce, Applied Cryptography, 2d ed. 纽约:约翰·威利 & ·儿子,1996年。
  • https://www.rsa.com

注意

某些语言和国家/地区可能不提供这些资源。

 

Microsoft 加密工具

发布工具和签名 DLL 安装在 Microsoft SDK 安装的 \Bin 目录中。 它们包括以下文件。

文件名 备注
Cert2SPC.exe (SPC) 创建 软件发布者证书 ,仅用于测试目的。
CertMgr.exe 管理证书、CTL 和 证书吊销列表 (CRL) 。
MakeCat.exe 创建一个无符号目录文件,该文件包含一组文件的哈希以及每个文件的关联属性。
MakeCert.exe 创建 X.509 证书仅用于测试目的。
Pvk2pfx.exe 将软件发布者证书文件 (.spc) 或私钥文件 (.pvk) 转换为个人信息交换 (PFX) 文件格式。
SetReg.exe 设置用于控制证书验证的注册表项。
SignTool.exe 对文件进行签名和时间戳。 此外,检查文件的签名。