您当前的位置:   首页 > 新闻中心
公私钥对在密码学中的工作原理:5个常见示例
发布时间:2023-12-29 09:26:34   阅读次数:

image.png


私钥-公钥对在 IT 环境中以多种方式使用(加密、身份验证、数字签名等)。但它们的使用方式对于每个用例来说都有很大不同。这可能会让您想知道:这一切到底是如何在“幕后”运作的?


如果您想了解每个用例的具体使用方式,请参阅以下五个不同用例的概述


公钥加密,私钥解密——对吗?

简短的回答?不总是。是的,在大多数用例中,公钥用于加密数据,而其相应的私钥用于解密秘密。但是,某些流程也存在例外情况。我们将在以下部分中为您分解所有这些,看看五个非常常见的用例:

  • SSL/TLS (HTTPS)

  • 代码签名

  • 文件签署

  • 电子邮件签名

  • 电子邮件加密


1. SSL/TLS 连接期间公钥-私钥对如何工作

当您使用 HTTPS 访问安全网站时,每个连接都以称为 TLS 握手的过程开始。此过程涉及使用公钥加密(即非对称加密)来交换敏感信息,然后在会话的其余部分切换到对称加密。


为什么要费力去切换呢?因为对称加密比公钥加密需要更少的计算能力。尽管我们谈论的是极短的时间(即毫秒),但它对于大规模数据加密(即对于具有较高网络流量的大型组织)来说更有效。


要加密您网站的连接,您需要在服务器上安装SSL/TLS 证书。它还要求客户端和服务器进行自我介绍并交换基本信息以创建安全的加密会话。这种来回过程称为 TLS 握手,大多数浏览器支持两种类型:TLS 1.2(最常见)和 TLS 1.3。


以下概述了 TLS 1.2 握手过程的工作原理:

  • 当客户端(浏览器)连接到服务器(网站)时,双方会交换有关它们支持的加密过程的某些协议。客户端发送一个大的随机素数(称为“客户端随机数”)。

  • 服务器将其SSL/TLS 证书和公钥以及“服务器随机”值(是的,与客户端随机值相同的概念)发送到客户端(浏览器),该值可以与客户端随机值结合使用以创建对称会话密钥。

  • 客户端检查服务器的证书并使用服务器的公钥对其发送回服务器的对称密钥值进行加密。(具体细节根据使用的密钥交换算法而有所不同。)

  • 双方使用其交换的数据来计算对称会话密钥(即共享会话密钥)。

  • 客户端检查服务器的消息验证码 (MAC)以确保握手未被篡改。

  • 双方使用共享会话密钥来创建安全、对称的加密连接。


image.png

图片说明:该图显示了 TLS 1.2 握手期间客户端和 Web 服务器之间的交互。它还显示了服务器公钥的交换,它如何从不共享私钥,以及服务器和客户端如何使用该加密密钥对最终创建一个共享会话密钥,用于会话的其余部分。


当涉及TLS 1.3 握手时,过程有所不同,特别是在密钥交换过程方面。我们的想法是将一切简化为一次往返。


但基本概念保持不变:公钥-私钥对用于安全地交换用于实际数据加密的对称密钥。


2. 代码签名如何使用私钥和公钥来保护可执行文件和代码

让我们考虑一下公钥-私钥对在软件安全中的使用。保护代码、软件、可执行文件等的过程涉及开发人员或发布者使用代码签名证书向其软件可执行文件添加数字签名。此过程使用加密密钥和函数(即散列和加密)来对创建资产的开发人员/发布者进行身份验证,并验证文件或代码自签名以来未被修改。


还记得在本文开头我们说过,公钥加密和私钥解密的情况并不总是如此吗?这就是我们所指的。


但从每个密钥的使用方式和时间来看,这个过程是什么样的呢?

  • 开发人员将哈希函数(即哈希算法)应用于他们的软件/代码。这将创建固定长度的哈希摘要(即哈希值)。

  • 他们使用私钥来加密生成的哈希摘要。根据行业代码签名基准要求,此密钥必须存储在安全设备上,例如安全令牌或硬件安全模块 (HSM) 。

  • 然后,开发人员使用其代码签名证书创建数字签名并向软件应用时间戳(注意:时间戳是可选的,但建议使用)。

  • 他们的数字签名软件在分发或发布时附有开发人员的公钥和证书。


image.png

图片说明:该插图详细说明了代码签名的工作原理以及一半的公私密钥对的作用。


那么,公钥在哪里发挥作用呢?在客户端发生的软件验证过程中:

  • 最终用户下载该软件。他们的浏览器或操作系统 (OS) 检查数字签名,以确保其有效、可信且未被更改。

  • 他们的系统会将开发人员的公钥应用于摘要以对其进行解密。然后,它将原始哈希摘要与系统创建的哈希摘要进行比较,看看是否匹配。

  • 如果哈希值匹配,那么他们就获胜了。如果这些值不存在,Windows 操作系统和浏览器将警告用户您的软件不应被信任。


image.png

图片说明:当用户下载或尝试安装数字签名的软件或代码时,分解公钥在代码签名验证过程中的作用的插图。


3. 如何使用公私密钥对对文档进行数字签名

当我们谈论文档签名时,我们并不是在谈论签署手写签名的电子形式。(这很容易被欺骗!)相反,我们指的是将您的可验证数字身份标记到数字文件(Word 文档、PDF 等)中,以便人们知道它是真实的并且没有被更改。


image.png

图片说明:该插图显示了数字签名(中和右)和电子签名(左)之间的区别。


有趣的是:数字签名是电子签名的一种,但并非所有类型的电子签名都是数字签名。有点困惑?如果您想了解有关电子签名和数字签名之间差异的更多信息,请查看我前同事的文章。现在,回到当前的主要话题……


您现在可能已经猜到,要对文档进行数字签名,您必须拥有文档签名证书。那么,公钥和私钥在这件事中扮演什么角色呢?坦率地说,这与我们之前描述的代码签名过程中私钥的作用类似:

  • 文档创建者将哈希函数应用于其 Word 或 PDF 文件。这将创建哈希摘要或哈希值。

  • 他们应用私钥来加密文件的哈希摘要。与代码签名过程非常相似,您的文档签名密钥也必须存储在安全设备(令牌、HSM 等)或密钥保管库中。

  • 然后,文件所有者使用其文档签名证书来创建数字签名。他们还可以选择向文件添加时间戳。

  • 数字签名的文档现已可供使用。


image.png

图片说明:此图说明了如何使用文档签名私钥来帮助为 Microsoft Office 文档和 PDF 创建数字签名。


  • 当最终用户下载文件时,他们的设备将检查其数字签名。

  • 他们的系统会将开发人员的公钥应用于摘要以对其进行解密。然后,他们将原始哈希摘要与系统创建的哈希摘要进行比较,看看是否匹配。


现在,是时候换档并继续签署电子邮件通信了。


4. 公私密钥对如何使电子邮件签名成为可能

电子邮件签名是一个过程,使电子邮件发件人能够证明他们发送了电子邮件并且该消息不是来自冒名顶替者。此过程使用电子邮件签名证书(也称为客户端身份验证证书),他们将其安装到设备上或导入到电子邮件客户端。


image.png

图片说明:我的 Windows 证书管理器中安装的电子邮件签名和客户端身份验证证书的示例屏幕截图。


那么,这个电子邮件签名过程是什么样的,以及公钥-私钥对在哪里适合这个等式?

  • 对电子邮件进行数字签名时,发件人会对消息应用哈希函数/算法。

  • 发送者应用其私钥来加密该哈希摘要/值以创建数字签名。

  • 发件人将其电子邮件签名证书和公钥附加到出站电子邮件中。这共同创建了数字签名块。


image.png

图片说明:代码签名过程如何工作以及加密密钥在对电子邮件进行数字签名时发挥作用的屏幕截图。


收到消息后:

  • 电子邮件收件人使用发件人的公钥来解密电子邮件的哈希摘要。

  • 接收者会将其与他们生成的哈希值进行比较,看看是否匹配。

  • 如果匹配,则收件人可以确信电子邮件是真实的。


要了解有关证书签名电子邮件的更多信息,请联系揽阁信息,我们将帮助您了解如何在 Outlook 中导入和使用 S/MIME 证书。


5. 公私密钥对如何实现安全、加密的电子邮件通信

电子邮件加密是在用户点击“发送”按钮之前随机扰乱电子邮件内容(文字、图像/图形、附件等)以将其转换为不可读形式的过程。但是,它不加密电子邮件标头信息。


加密电子邮件类似于将秘密的编码消息密封在安全的集装箱内;这样,在运输途中或在到达地点(在电子邮件服务器上)时就不会被查看。这就是为什么它有时被称为端到端加密,因为它从一个端点到另一个端点都受到保护。


那么,就如何使用公私密钥对而言,这个过程是什么样的呢?是时候稍微改变一下事情了。(注意:电子邮件收件人和发件人都必须在其设备上安装电子邮件签名证书。)

  • 电子邮件收件人必须将其公钥发送给电子邮件发件人。

  • 然后,电子邮件发件人将起草一封电子邮件并添加所有附件。

  • 当电子邮件发件人加密电子邮件时,他们将使用电子邮件收件人的公钥来执行此操作。

  • 电子邮件加密后,他们会将其发送给收件人。

  • 当电子邮件收件人收到电子邮件时,他们的电子邮件客户端将使用收件人的私钥来解密邮件。这将解读该消息以便可以阅读。


image.png

图片说明:该插图演示了电子邮件加密的工作原理以及在此过程中如何使用公钥和私钥。


想要了解有关如何发送加密电子邮件的更多信息?我们在这篇文章中为您介绍了该内容,引导您完成在三个主要电子邮件平台上的流程。


让我们总结一下

尽管您不需要了解公钥加密中如何使用公钥-私钥对的复杂性,但学习肯定没有坏处。加密密钥对于与互联网安全相关的一切都至关重要。无论是保护提交到网站的敏感数据的安全,还是保护电子邮件、文档和文件的机密性和完整性,如果没有公私密钥对的安全性,公钥加密就不可能存在。


公钥-私钥对有助于实现以下功能:

  • 身份验证——这可以归结为数字身份验证和验证。它使某人能够知道另一个实体(即网站、电子邮件发件人、软件发行商、文档创建者等)是合法的。

  • 数据完整性——公私密钥对与散列和加密等加密过程相结合,使证明消息和文件准确性的数字签名成为可能。

  • 不可否认性——这需要验证数据来自相关方,并且不是来自未经验证的来源,只要私钥保持安全。


最后一句话引出了我们的下一点。数字信任的基础是公钥密码学,是互联网安全的核心。如果您不能相信网站、软件开发人员、文档创建者或电子邮件发件人的身份是合法的,那么您如何相信您向他们发送或接收的任何数据都是安全且可信的?你不能。这就是为什么保护私钥的安全至关重要。


我们希望本文强调安全管理和存储私钥的重要性。通过保护这些关键资产的安全,您可以防止您(和您的客户)的所有敏感数据落入坏人之手。


揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609