作者:Jeremy Cook
公钥加密的工作原理
在数字时代的大部分时间里,人们很容易理所当然地认为,我们可以在合理的隐私预期下向世界各地的人们发送私密信息。我们也相信,信息会原封不动地到达目的地。但是,在一个任何人都可以发表任何东西或声称自己是任何人的世界里,我们能相信我们的在线交流是真实、安全的吗?
实现在线安全的最关键技术之一是公钥加密,也称为非对称加密。该技术的基本思想是发送方使用接收方提供的公共加密密钥对信息进行加密。接收方使用他们独特的(且秘密的)相应私钥来解密该信息。
但从概念上讲,这是如何工作的呢?如果用公钥来加密信息,为什么不能用同样的公钥来解密信息呢?我们将深入探讨这一问题,但首先,让我们打个比方:
公钥-私钥对和单向函数
您可以把公钥加密想象成一个位置已知的上锁邮箱。该地址是公开的“密钥”。邮箱的所有者绝不共享他们的私密(字面意思)密钥来解锁。任何人都可以向邮箱发送消息,但只有所有者可以阅读这些消息。
在线锁定是通过一个单向数学函数完成的。该函数允许用公钥加密数据,但不能用同一公钥解密新编码的数据。
公钥不能用于从锁定的邮箱中取出信件。只有使用对应的私钥才能获得里面的信件。
公钥加密如何用于双向通信?
更进一步,考虑人员 A 希望与人员 B 进行安全通信的问题。这可以通过以下方法实现:
- A 生成并共享公钥 Ax;生成并保存私钥 Ay
- B 生成并共享公钥 Bx;生成并保存私钥 By
- A 用公钥 Bx 将待发送的消息 A1 加密为 A1e,并将该加密消息发送给 B。然后,B 用私钥 By 将消息 A1e 解密回 A1
- B 用公钥 Ax 将待发送的回复 B1 加密为 B1e,并将该加密消息发送给 A。然后,A 用私钥 Ay 将消息 B1e 解密为 B1。
这里重要的一点是,私钥从不共享,而公钥可以公开共享,因为它们不能对同一条消息进行加密和解密。消息被加密传输后,即使加密实体也不能查看消息中的内容,因为它没有私钥。
发件人验证
虽然没有私钥就无法读取加密的消息,但任何人都可以用您的公钥为您的私钥加密消息。回到邮箱的类比,如果一个信任的朋友可以在您上锁的邮箱中投下一张便条,那么垃圾邮件供应商、骗子和其他不速之客也可以。某人甚至可以在信封上写上一个值得信任的伙伴的名字——也许声称他正处于危险的境地,需要一大笔现金、苹果礼品卡、克鲁格金币或其他资产。
在这里,邮箱类比开始失效;但是,公钥加密允许进行发件人验证。为实现这一过程,A 和 B 生成一个公钥和私钥对,用于双向验证通信。然后,每条消息都被加密两次:一次用发件人的私钥,另一次用收件人的公钥。既要保护通信又要验证通信:
- A 使用私钥 Ay 加上公钥 Bx 对要发送的消息 A2 加密为 A2e。
- B 使用公钥 Ax 解密消息 A2e,验证 A2e 是用私钥 Ay 生成的,从而验证发件人的身份。然后,B 使用私钥 By 进一步将该消息解密成可用数据。
因此,最初生成的相同密钥对既可用于基本的非对称通信,也可用于经验证的非对称通信。根本的区别在于,在每条消息的基本非对称交换中总共只需要使用两个密钥;为了验证,每条消息总共需要使用三个密钥。
请注意,公钥本身不是单向函数,而是用作单向函数的输入,以正确加密数据。
虽然本文广泛讨论了人类负责加密/解密数据,但这些操作不一定要由人类直接启动。TLS/SSL 等支持安全网站浏览的协议使用非对称加密。这种类型的加密对区块链的运作至关重要。
非对称使对称成为可能
在 20 世纪 70 年代非对称加密出现之前,对称密钥加密(即传输的每一方都需要相同类型的规则来交换消息)是防止通信被拦截的方法。在互联网时代,您可能永远不会与和您交换信息的人或非人类实体发生物理接触(公开传递密钥会带来安全风险),对称加密困难重重。
与此同时,对称加密在许多情况下仍然是可取的。TLS/SSL 协议使 Web 上的 HTTPS 成为可能,它使用非对称加密来传递对称加密“会话”密钥。然后,会话密钥用于通过对称加密促进两个实体之间的私密通信。
从实际角度来看,使用公钥加密等技术的强大安全性使我们能够在合理的隐私预期下进行在线通信。这也使 Alexa 和 Google Home 等智能设备能够保持安全,建立信任,确保个人活动不会被恶意或不必要的方式共享。
在 Arrow.com 寻找身份验证器等安全解决方案产品,包括下面我们的一些热门产品。