公钥加密如何工作? |公钥加密和SSL

公钥加密,也称为非对称加密,使用两个单独的密钥而不是一个共享的密钥:公钥和私钥。公钥加密是用于互联网安全的重要技术。

Share facebook icon linkedin icon twitter icon email icon

公钥加密

学习目标

阅读本文后,您将能够:

  • 定义公钥加密
  • 了解公钥加密的工作原理
  • 了解为什么公共密钥加密对于TLS / SSL协议至关重要

什么是公钥加密?

公共密钥加密是一种使用两个不同的密钥对数据进行加密,并让其中一个密钥(公共密钥)可供任何人使用的方法。另一个密钥称为私钥。用公钥加密的数据只能用私钥解密,而用私钥加密的数据只能用公钥解密。公钥加密也称为非对称加密。它被广泛采用,尤其是对于 TLS / SSL ,这使得 HTTPS 成为可能。

什么是加密密钥?

在密码学中,密钥是用于打乱数据以便使其显得随机的一条信息;它通常是一个很大的数字,或者是一串数字和字母。当使用密钥将未加密的数据(也称为明文)放入加密算法中时,明文会从另一面看似随机数据。但是,任何拥有正确密钥解密数据的人都可以将其放回纯文本格式。

例如,假设我们有一条纯文本消息,”你好“, 然后用密钥*加密;假设密钥是" 2jd8932kd8“。使用此密钥加密后,简单的一句”你好“现在会成为密文 "X5xJCSycg14 = " ,这似乎是随机的垃圾数据。但是,通过使用相同的密钥对其进行解密,我们将能转回成”你好" 。

纯文本+密钥=密文:

你好+ 2jd8932kd8 = X5xJCSycg14 = 

密文+密钥=纯文本明文:

 X5xJCSycg14 = + 2jd8932kd8 =你好

(这是对称加密的示例,其中仅使用一个密钥。)

*使用Blowfish算法、CBC模式和Base64编码。

公钥加密如何运作?

对于初学者来说,公钥加密似乎很复杂;幸运的是,一位名为 Panayotis Vryonis 的作者做过一个比喻,大致如下。

想象一下,鲍勃和爱丽丝这两个人用一个带锁的箱子来回运送文件。通常来说锁只有两种状态:上锁和解锁。任何有钥匙的人都可以打开上锁的箱子,反之亦然。当鲍勃锁上箱子并将其运送给爱丽丝的时候,他知道爱丽丝可以使用复制的钥匙来解开箱子。从本质上讲,这就是所谓的对称加密的工作方式:一个秘钥同时用于加密和解密,对话的双方都使用相同的密钥。

现在,想象一下,鲍勃制作了一种带有特殊锁的行李箱。此锁具有三个状态,而不是两个:

  • A.锁定,钥匙一直旋转到左侧
  • B.解锁,钥匙旋转到中间。
  • C.锁定,钥匙一直旋转到右侧。
SSL Lock Analogy

该锁带有两把钥匙,而不是一把钥匙:

  • 1号钥匙只能向左转
  • 2号钥匙只能向右转

这意味着如果后备箱被锁定并且钥匙转到位置A,只有2号钥匙可以通过向右转到位置B(解锁)来解锁。如果行李箱锁定在位置C,则只有1号钥匙可以通过将锁向左转动到位置B来解锁。

换言之,两把钥匙任选其一都可以锁定箱子,但是一旦锁定后,只有另一把钥匙可以解锁箱子。

现在,假设鲍勃制作了几十个只能向右旋转的2号钥匙,然后为他认识的并且想要这把钥匙的每个人都配了一把,并将其作为他的公共钥匙。而他为自己保留了1号钥匙,作为他的私钥。这有什么作用?

  1. 爱丽丝可以通过箱子给鲍勃鲍勃发送机密数据,并确信只有鲍勃可以将其解锁。 一旦爱丽丝用从左到右旋转的公共钥匙锁定了箱子,只有可以从右到左旋转的钥匙才能解锁它。这意味着只有鲍勃的私钥才能对其进行解锁。
  2. 如果箱子是用鲍勃自己的私钥来上锁,那爱丽丝就能确信这个箱子的确来自鲍勃而不是有人冒充。 只有一把钥匙可以让箱子锁定在位置A或者说能向左旋转,那就是鲍勃的私钥。的确,任何人都可以通过只能向右旋转的公共钥匙来解锁,但这可以保证箱子的确来自鲍勃。

以此类推,在这个比喻中,纯文本信息就是箱子,密钥就等同于实体钥匙,这就是公共密钥加密的运作方式。只有私钥的所有者才能加密数据,让公钥对其进行解密;同时,任何人都可以使用公钥加密数据,但是只有私钥的所有者才能解密它。

因此,任何人都可以安全地将数据发送给私钥所有者。此外,任何人都可以验证从私钥所有者那里收到的数据确实是来自该人而非冒充者。(请参阅什么是中间人攻击? )。

TLS / SSL如何使用公共密钥加密?

公钥加密对于在互联网(通过 HTTPS)建立安全通信非常有用。网站公开共享的SSL/TLS 证书包含公钥,而私钥安装在源站,并由网站所“保有"。

TLS握手使用公共密钥加密技术对源站的身份进行身份验证,并交换用于生成对话密钥的数据。诸如RSA或Diffie-Hellman之类的密钥交换算法,使用公私钥对来协商会话密钥,一旦握手完成,会话密钥将用于对称加密。客户端和服务器能够为每个通信会话约定新的会话密钥,从而即使恶意角色识别或窃取了会话密钥之一也无法解密通信。