博客与新闻

亚信互联 认为创建成功的安全网络形象应该容易且负担得起。在这里,您将找到我们的最新 SSL 新闻,行业文章和新闻稿。

数字签名如何工作?了解 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 进行签名。让我们快速探索一下这个基本过程会发生什么:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如前所述,数字签名可应用于电子邮件通信、可执行文件和软件的代码以及各种类型的文件(例如 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 中使用以下命令:

               certutil -hashfile [你想要检查的文件] [哈希算法]

它看起来类似于以下示例,它确认哈希值与我们在第二步中的示例中使用的哈希值相同:

Microsoft PowerShell 中散列文件校验和过程的屏幕截图

上一篇:什么是密钥管理服务?密钥管理服务说明 [2021年11月10日]

下一篇:什么是密钥管理服务?密钥管理服务说明 [2021年11月25日]