行业新闻与博客

数字签名如何工作?了解 PKI 签名的工作原理

数字签名可帮助您证明某些东西(例如电子邮件、文件或可执行文件)是合法的而不是伪造的。我们将分解数字签名如何保护您组织的通信、数据和软件完整性

Netskope 2021 年 7 月的数据显示,通过云传输的恶意软件已达到新的创纪录水平。那么,促进恶意软件下载的两个最大罪魁祸首是什么?云存储应用程序 (66.4%) 和恶意 Office 文件 (43%)。

在我们处理天文数字级别的网络钓鱼和网络诈骗的时代,能够验证某人(或诸如电子邮件或软件更新之类的东西)是否合法是至关重要的。公钥签名——或所谓的 PKI 数字签名——是您武器库中的一种此类工具,可用来对抗网络犯罪分子不断演变的诈骗策略。

现在,我们不会深入探讨什么是公钥签名或 PKI 签名为何对您的业务很重要的技术细节。(我们最近在另一篇文章中介绍了该信息,我们已在上一句中链接到该文章。)这是一个快速概述,然后我们将直接讨论数字签名的工作原理:

  • 数字签名是一种将您的数字身份绑定到一段数据(即 PKI 数字证书和加密密钥)的电子签名。
  • 数字签名是使用公钥基础设施支持的加密技术创建的。
  • 您的数字签名可以应用于从软件可执行文件和 Microsoft Office 文件到电子邮件甚至网站连接的所有内容。
  • 对文件和软件进行数字签名可以识别您的身份(身份验证),并帮助您以一种确保没有人可以说不是您的方式证明您的身份(无名誉)。
  • 添加数字签名有助于保护您的文件和数据的完整性,因为它为用户提供了一种方法来验证它是否在您签名后被更改过。  

了解?好的。现在我们知道什么是 PKI 签名及其重要性,让我们来回答您来到这里的问题:数字签名是如何工作的?

让我们讨论一下。

数字签名如何工作?简要概述

简而言之,数字签名的工作原理是充当无可辩驳的数据,证明您的数字身份和通信的真实性。换句话说,它证明:

  • 作者(电子邮件、文件或其他相关项目)的数字身份,以及
  • 通信的真实性(即电子邮件、文件或软件自作者签名后未被篡改)。

数字签名很容易被收件人的电脑或服务器验证,黑客无法伪造。

数字签名是各类 PKI 数字证书的关键组成部分。举个简单的例子,看一下 SSL/TLS 证书的信任证书链。TheSSLStore.com 域的 SSL/TLS 证书使用数字签名来证明它是由合法证书颁发机构(即 DigiCert)颁发的有效证书。该域的证书由 DigiCert SHA2 扩展验证服务器 CA 进行数字签名,该 CA 由 DigiCert 的高保证 EV 根 CA 签名。

SSL/TLS 证书信任链包括数字签名
域 TheSSLStore.com 的 SSL/TLS 证书信任链信息。从右到左:叶证书(右)由中间证书(中间)进行数字签名,中间证书由公共信任的根 CA(左)进行数字签名。

但是这一切是如何运作的呢?由于这个主题可能会变得非常技术性,我们将首先快速(一般)概述数字签名的工作原理,然后再为我们的更多技术读者介绍繁重的内容。

例如,您可以使用文档签名证书来签署 Microsoft Office 文件和 PDF。让我们快速探索这个基本过程发生了什么:

  • 获取要进行数字签名的文件并对其应用哈希算法。数字签名过程的这一部分涉及生成散列值(即固定长度字符串的输出)以唯一标识文件。您可以从文件创建散列摘要,但不能从散列值创建文件。
说明散列一般如何工作的基本图
说明哈希如何工作的基本图形。
  • 使用您的文档签名证书的加密私钥来加密该哈希值。这会生成您的数字签名,其中还可以包含一个时间戳,显示您对文件进行数字签名时的准确日期和时间。
  • 将您的公钥和证书连同经过数字签名的文件发送给您的收件人。由于加密密钥成对出现,您的电子邮件收件人可以使用您的公钥来验证数字签名。然后您的计算机将生成哈希摘要并将此哈希值与签名中的哈希值进行比较。这让您知道该文件是真实的,并且自您签名后未被更改。(如果文件被更改,散列值也会更改。)

我知道,后面有很多“哈希值”和“数字证书”……我们稍后会详细讨论这些组件中的每一个。但首先,让我们考虑一个快速类比,以帮助您理解数字签名在数据完整性和身份保证方面的作用……

数字签名就像您的驾驶执照的安全措施

使用数字签名来签署您的文件或软件类似于您在美国的驾驶执照或身份证上发现的欺诈保护措施 此组件确认此身份证明是由权威机构(即您所在州的 Department of Motor Vehicles)并且它是真实的。

如果您有这张卡,其他不认识您的人就可以相信您的身份是合法的。为什么?因为他们知道在 DMV 发卡之前,您必须提供几条验证信息来证明您的身份。

这些身份证包含信息和视觉组件,可帮助您验证身份的真实性,包括:

  • 您的法定全名,
  • 身体识别信息(照片、出生日期和身高),
  • 您可核实的住址,
  • 您唯一的驾驶执照号码,
  • 卡发行日期和到期日期,以及
  • 防伪标记(全息元件、紫外线墨水等)。
佛罗里达州驾照示例的一组屏幕截图,展示了欺诈安全措施的概念。
图片来源:佛罗里达州公路安全和机动车辆 (FHSMV)。

如果您的 ID 卡缺少任何此类信息或没有防欺诈措施,您就知道该 ID 可能不真实且不可信。

这里最重要的一点是,数字签名允许与您通信的另一方(或下载您的软件或文件的人)知道它是合法的,并且没有在您不知情或未经您批准的情况下被修改。

现在,让我们来看看数字签名中涉及的组件……

现在我们对数字签名的工作原理有了大致的了解,是时候让我们自己熟悉数字签名过程的核心组件了。

  • PKI 数字证书— 这个小的数字文件用作您的数字标识符,并携带与加密密钥相关的经过验证的组织信息(我们稍后也会讨论)。PKI 数字证书有多种形式,服务于不同的目的:
    • 网站安全证书(SSL/TLS 证书):这是您用来在服务器、网站和 Web 应用程序上声明您的组织身份的证书类型。它还可以帮助您使用加密保护数据和连接。
    • 文档签名证书:此证书允许您对文档进行数字签名,以确保用户您的文件是合法的并且没有以任何方式被修改。这些证书作为个人验证和组织验证选项提供。某些文档签名证书(例如 DigiCert 提供的证书)提供双因素身份验证。这通过要求您输入密码并在对文件进行数字签名时使用 USB 令牌来证明您的身份来提供额外的安全层。
    • 代码签名证书:代码签名证书是一个漂亮的文件,使您能够对软件、脚本和其他可执行文件进行数字签名。为什么?因此,人们知道该软件——或您发布的任何更新——是由您创建的,而不是一些想要用恶意软件感染他们的设备的笨蛋。
    • 电子邮件签名证书(S/MIME 证书):这种类型的 PKI 数字证书允许您对电子邮件进行数字签名,同时还提供加密敏感电子邮件的额外好处。为此,您和您的收件人都必须使用电子邮件签名证书,并且您将使用收件人的公钥加密邮件,他们将使用相应的私钥对其进行解密。
  • 加密密钥(公钥和私钥) ——每个包含公钥和私钥的密钥对都与您的数字身份相关联。这两个密钥都是唯一的字符串,允许您执行加密、散列等加密功能。私钥是您自己保存的(秘密),而公钥是您将提供给其他方的东西(即,几乎所有人都可以使用它),因为它包含在您的数字证书中。
  • 加密—加密是一种双向加密过程,它采用明文数据(即可读信息)并使用密钥将其加密为无法识别的形式。此过程通过确保只有授权用户(即拥有解密密钥的人)才能解密和访问该信息来保护数据。即使有人获得了加密数据的访问权限,如果没有该密钥,他们也无法对其进行任何操作。
  • 哈希算法— 哈希算法,或也称为哈希函数,是一种数学方程式,它获取您的输入数据并将其映射到特定长度的数据字符串。哈希是一种经常与加密相混淆的加密过程。与加密不同,散列是一种单向函数,这意味着您可以使用它来生成散列值,但是使用该散列值对其进行逆向工程以获取原始输入是不可行的。(另一方面,加密意味着使用秘密解密密钥进行逆向。)常见散列算法的示例包括 MD5、SHA-256 和 SHA-384。
  • 哈希值— 这是一个固定长度的字符串,通过将哈希算法应用于您进行数字签名的文件或通信而生成。例如,单个单词“boomerang”将生成一个哈希值,其长度与指环王丛书中所有文本的总和相同

数字签名的工作原理:深入探索签名和验证过程

数字签名过程是加密功能的组合。在这种情况下,它使用散列和加密作为过程的一部分,以帮助您保护数据的完整性并以您的收件人可以验证的方式断言您的组织的身份。

如前所述,数字签名可应用于电子邮件通信、可执行文件和软件的代码以及各种类型的文件(如 PDF 和 Office 文件)。假设您需要为新客户生成一份合同,并希望有一种方法来证明您创建了该文档并且它是真实的。我们已经在本文前面简要介绍了数字签名过程,但现在是时候更深入地了解它的细节了。

对于此示例,我们将探讨如何对 PDF 文件进行数字签名。之后,我们将分解如何验证签名是否合法以及文件在您签名后是否未被修改。注意:前三个步骤适用于作为文件创建者的您。第四和第五步真正适用于下载您的文件并需要验证其真实性的人。)

第一步:创建您要签名的 PDF 文件

如果不首先创建它,就不能对它进行数字签名。首先创建该通信或文档,并确保它处于最佳状态。(毕竟,一旦您签署了文档,您就无法在不重新签署文件的情况下进行任何更改,因为)一旦准备就绪,请继续执行第二步。

第二步:将您的数字签名应用于您的文件或通信

对于流程的这一部分,您将获取希望进行数字签名(输入)的 PDF 文件并对其应用哈希算法。例如,您可以为此任务使用 SHA-256 哈希算法,它将生成 256 位的哈希值(输出)。这将由 64 个十六进制字符的固定长度字符串直观地表示。

说明如何对数字文件进行散列处理的基本图表
展示对 PDF 文件进行数字签名的过程的基本插图。这是回答“数字签名如何工作?”这个问题的示例。

当然,当您在 Adobe 中签署 PDF 时,加密过程会在后台发生。这有点像制作香肠的过程——你不一定需要看到过程才能知道结果是好的。(话又说回来,使用这个类比,最好不要看到这个过程,这样你就可以继续享受香肠的味道,而不用考虑制作它的过程!)

以下是 Adobe Acrobat 中 PDF 数字签名的示例:

数字签名如何工作? 此数字签名过程屏幕截图展示了将数字签名应用于 PDF 文件的步骤之一

这是证书详细信息的快速屏幕截图,显示该证书旨在用作添加数字签名的方式。

此数字签名过程屏幕截图展示了数字签名 PDF 文件的数字签名相关信息

但是,如果您对此类过程的外观感到好奇,可以查看幕后发生的步骤。让我们考虑一个示例,说明这在 Windows PowerShell 中是如何工作的。比如,您将哈希函数(例如 SHA-256)应用于您的 PDF 文件。这将导致它吐出如下所示的随机哈希摘要:

Microsoft PowerShell 中文件散列的屏幕截图

要使用 SHA-256 哈希算法生成哈希值,请使用上面说明的命令:

               get-filehash -algorithm SHA256 [file-you-want-to-hash]

第三步:使用您的私钥加密哈希值

接下来是有趣的部分,它需要使用 PKI 文档签名证书及其相应的加密密钥。生成 PDF 文件的散列值后,您将需要使用私钥来加密散列值。此过程会创建您的 PKI 数字签名,从而确保您的文件的完整性。  

还记得我们之前分享的示例图吗?这是一个基本的说明,说明这个过程是如何建立在之前的过程之上的:

数字签名如何工作? 这个基本图说明了数字签名过程如何工作的概念

这就是数字签名过程本身。完成这两个步骤并且您拥有经过数字签名的 PDF 文件后,您可以按计划使用该文档。例如,当您将文件发送给您的客户时,您将随附一份您的公钥副本,这将在接下来的步骤中派上用场。

现在,让我们探讨您的收件人如何使用此数字签名来验证您的身份和文件的真实性。

第四步:解密加密文件或邮件的哈希值

现在,下一部分发生在后端,接收文件的用户看不到。当他们下载或收到您的数字签名 PDF 文件时,他们的服务器也会收到您的文档签名证书的公钥。他们可以使用此密钥来解密数字签名以获取对您文档的哈希值的访问权限。这将我们带入下一步……

第五步:生成一个新的哈希值并将其与文档中的哈希值进行比较

好了,最后一节就讲到如何检查文件的哈希值是否合法。当您使用 Adobe 对 PDF 进行数字签名时,此过程会在后台进行。但如果您手动执行此过程,则需要生成文件的哈希值并将其与文件的已知哈希值进行比较。

许多公司经常在其网站上提供文件校验和信息。用户可以在下一步中使用此信息,包括将他们生成的哈希值与公司提供的哈希值进行比较。

如何使用 Windows PowerShell 手动检查文件的校验和

如果您是那些自己动手的人之一,或者是不信任自动化过程的人,请不要担心。您可以自己检查哈希值。要根据已知的哈希摘要检查文件的哈希值,请在 Windows PowerShell 中使用以下命令:

需要帮助吗?联系我们的支持团队 在线客服