Skip to main content
Surveillance
Self-Defense

加密的核心概念

最后更新: January 01, 2025

This page was translated from English. The English version may be more up-to-date.

在某些情况下,加密可以自动完成且操作简单。但加密技术也可能存在漏洞。理解越深入,就越能规避此类风险。在开始前,建议先阅读《关于加密,我应该了解什么?》指南(如果您尚未阅读的话)。

本指南将探讨“传输中加密”的五大核心概念:

  • 密码与密钥
  • 对称与非对称加密
  • 私钥与公钥
  • 人员身份验证(公钥指纹)
  • 网站身份验证(安全证书)

密码与密钥

首先,我们来了解一下基本术语:

加密是通过数学运算将信息转化成乱码的过程,使其仅能通过特定知识(即“解密”)进行还原。该过程涉及密码和密钥。

密码是计算机在加密和解密时遵循的规则集合(算法)。加密和解密必须严格遵循相同的步骤和规则。

密钥是指导密码如何加密和解密的信息单元,也是理解加密技术的核心概念之一。

单密钥还是多密钥?

对称加密使用单密钥来完成加密和解密。

早期加密形式多采用对称机制。例如凯撒大帝所使用的“凯撒密码”使用“位移三位”作为加密和解密密钥,即字母“A”变为“D”。以位移三位来加密“ENCRYPTION IS COOL”得到的是“HQFUBSWLRQ LV FRRO”,随后使用相同密钥即可还原原文。

如今,对称加密法依然使用广泛,常见形式包括依赖复杂数学运算来增加加密强度的“流密码”和“分组密码”。现代加密技术采样多重混淆步骤,确保在没有有效密钥的情况下难以还原原始内容。高级加密标准 (AES) 等现代对称加密算法兼具高强度与高效率。

对称加密广泛用于文件加密、磁盘分区加密、全盘加密等计算机加密,以及密码管理器等数据库加密领域。解密这些对称加密的信息时通常需要输入密码,因此我们建议使用高强度密码

如果信息仅供一个人访问,则单密钥模式非常适合。但其局限性在于:如需和远程联系人分享加密信息,该怎么办?如果无法与联系人当面共享密钥,该怎么办?如何通过开放网络向此人安全传递密钥?

非对称加密(也称公钥加密)解决了这一困境。该技术采用双密钥机制:私钥(用于解密)公钥(用于加密)。

                                   

对称加密

                                   

                                   

非对称加密

                                   

                                   

  • 快速

                                   

                                   

  • 缓慢

                                   

                                   

  • 低算力需求

                                   

                                   

  • 高算力需求

                                   

                                   

  • 适合任意长度的消息

                                   

                                   

  • 适合短消息

                                   

                                   

  • 需共享密钥进行加密和解密

                                   

                                   

  • 无需共享解密密钥,仅需共享用于加密的“公钥”

                                   

                                   

  • 无法用于身份验证

                                   

                                   

  • 可用于身份验证

                                   

传输中数据加密常结合使用这两种机制。

非对称加密私钥与公钥

私钥和公钥是通过数学算法相关联的配对密钥组。就好比,一块石头破成两半,只有它们才能严丝合缝地拼在一起。没有其他石头可以做到。公钥和私钥文件大致相同,本质上是由大数字组成的计算机编码。

尽管称为“公钥”,它实际上并不具备用来打开任何东西的功能,而是更类似于“数据锁”。如需深入了解有关公钥和私钥的信息,请参阅我们的《公钥密码学深度解析》

                                   

公钥是可以自由分发或公开发表的文件。如果某人需要发送端到端加密通信,将需要接收方的公钥。如今,支持端到端加密的现代通讯软件通常会自动完成此过程。

                                   

 

                                   

                                   

                                   

私钥则用于解密信息。因为有了私钥就能读取加密信息,因此必须严格加以保护。此外,私钥还可用于数字签名,以认证文件来源。

                                   

由于私钥是需重点保护的设备文件,建议对存储私钥的设备进行密码保护和加密。有关具体操作,请参见我们的高强度密码设备加密指南。

                                   

公钥

                                   

                                   

私钥

                                   

                                   

  • 可广泛传播(易于通过互联网分享)

                                   

                                   

  • 需严密保护

                                   

                                   

  • 发送方需要公钥来加密信息

                                   

                                   

  • 用于解密使以对应公钥加密的信息

                                   

                                   

  • 以“公钥指纹”形式用于身份验证

                                   

                                   

  • 用于数字签名,藉此对发送方进行身份验证

                                   

某种程度上,信息传输如同寄送明信片。下图左侧示例中,发送者书写“你好!:-)”的明文信息,然后发送给接收者。该信息并未加密,途中的任一传递者均可阅读。

而右侧展示的明信片中,发送者与接收者之间传递的信息已加密。虽然传递的内容仍是“你好!:-)”,但对外界而言只是一串混乱的密文。

这一过程是如何实现的?发送者获取了接收者的公钥,将信息加密后定向至该公钥,并附上数字签名以证明信息的来源。

需注意:元数据(收发双方的身份、发送接收时间、传输路径等)仍然可见。外界可知收发双方使用加密进行通信,但无法解读具体内容。

您的加密通信对象是谁?他们宣称的身份是真实的吗?

您可能会产生疑问:“我明白,公钥能让他人向我发送加密信息,而私钥可以让我能读取这些信息。但若有人假冒我的身份呢?如果有人生成新的公钥和私钥并冒充我,怎么办?”

这正是公钥密码学的核心价值:提供通信双方的身份验证机制。我们来更深入地解析一下私钥的功能。

私钥不仅能让您读取他人发送至公钥的加密信息,还能为您向他人发送的信息生成不可伪造的数字签名,这相当于声明“此信息确由本人发出”。

接收者将看到信息附带的数字签名,并将其与您的公钥信息进行对比。

下面我们来看看实际的运用情况。

人员身份验证:公钥指纹

任何信息的传递都依赖参与者的诚信。例如,我们默认邮递员不会篡改邮件内容,也相信不会有他人拦截信件,打开并修改,然后再伪装成原样送达。但此类风险是客观存在的。

加密信息同样面临被篡改的风险。公钥密码学通过核对数字身份与现实身份,提供了防篡改验证手段。

公钥文件本身是大段文本,其人类可读的简化形式称为密钥指纹。

在计算机安全领域,“指纹”一词有多重含义。

此处特指“密钥指纹”,是一串诸如“65834 02604 86283 29728 37069 98932 73120 14774 81777 73663 16574 23234”的字符序列,可用于唯一且安全地验证网络通信方的私钥真实性。

部分应用将此信息转换为二维码,便于设备间互扫验证。

通过“指纹验证”可确认数字身份与现实身份的一致性。如需了解该技术的实际操作,可尝试 SignalWhatsApp 的验证功能。

指纹验证的最佳方式是线下当面验证。如果您能够与好友亲自会面,可以将您的公钥指纹与其设备存储的信息进行逐字比对。尽管冗长的字符串(如“342e 2309 bd20 0912 ff10 6c63 2192 1928”)的核对过程非常繁琐,却是确保通信安全的关键环节。若无法当面验证,可通过其他安全渠道(如另一款端到端加密通讯工具)交换指纹。

公钥指纹验证虽能大幅提升身份可信度,但并非万无一失。若私钥遭复制或被盗(如设备感染恶意软件或遭物理窃取),攻击者可利用相同指纹伪装身份。因此,私钥“失窃”后需生成新的公钥和私钥对,并将新的公钥指纹告知联系人。

总结:公钥加密能力

总体而言,公钥加密的三大核心能力为:

机密性:使用公钥密码学加密的信息可确保信息仅目标接收者可解读。

真实性:使用公钥密码学加密的消息的接收方可通过发送者的公钥来验证信息的真实来源。

完整性:一般来说,使用公钥密码学签名或加密的信息无法被篡改。这意味着,任何修改(包括网络故障导致的意外中断)都将导致解密或验证失败。

网站与服务身份验证:安全证书

您可能会产生疑问:“我可以验证公钥指纹,但如何验证网站真实性?如何确认访问的是真实网站而非钓鱼网站?如何确保我与某项服务的连接未遭劫持?”

使用传输层加密时,计算机会自动验证服务的公钥真实性及加密目标正确性,此过程依赖“安全证书”。

下图为某通用浏览器显示的 SSD 安全证书示例。点击浏览器地址栏的 HTTPS 锁形图标或选项面板,可查看证书详情。

电脑上的浏览器通过 HTTPS 与网站建立加密连接时,网站通常使用安全证书向浏览器证明其为真实站点,且连接安全,未遭篡改。浏览器会检查域名(如 www.duckduckgo.com、www.wikipedia.org ssd.eff.org)的公钥证书。证书旨在确认个人或网站公钥的真实性,从而确保安全通信。

但您的电脑如何知晓所访问网站的真实公钥呢?

现代浏览器和操作系统内置受信证书颁发机构 (CA) 列表。这些 CA 的公钥在您下载浏览器或购买电脑时已预先捆绑。CA 在验证域名(例如 www.example.com)所有权后签发网站公钥证书。浏览器访问 HTTPS 网站时,会检查证书是否由受信 CA 签发,相当于第三方认证网站身份。

但此验证仅证明网站安全证书由 CA 签发,并不保证网站内容安全。CA 验证仍存在局限性——CA 无法验证网站的诚信度。例如,使用 HTTPS 的“安全”网站也可能托管欺诈内容或恶意软件。请阅读我们关于恶意软件和钓鱼攻击的指南以增强防范意识。

有时,您可能会遇到证书相关的错误信息,这常见于酒店或咖啡馆网络强制跳转登录页,或证书系统管理失误。但也有少数情况是由于黑客、窃贼、警察或间谍机构入侵了加密连接。遗憾的是,区分此类具体原因极为困难。

建议在涉及账户或敏感信息的网站出现证书警告时立即终止访问。

综合运用:对称密钥、非对称密钥与公钥指纹

以传输层安全握手为例

使用传输层加密时,电脑浏览器与正在访问的网站服务器协同使用对称与非对称算法。

下面我们用实例说明这些原理如何协同工作:在您访问 HTTPS 网站 https://ssd.eff.org/ 时,会发生什么?

在访问使用 HTTPS 的网站时,浏览器与网站服务器会进行一系列非常快速的交互,称为“握手”。即,您的浏览器(如 Google Chrome、Mozilla Firefox、Tor Browser 等)与网站 (https://ssd.eff.org) 的托管服务器进行通信。

在握手过程中,浏览器与服务器先向对方发送信息,以确认双方是否共享加密算法偏好(即“密码套件”)。您可将其想象成浏览器与 ssd.eff.org 服务器之间的快速对话:双方询问彼此已知且应采用的加密方法,并协商首选加密方案。

对话示例如下:“我们双方是否都支持 RSA(非对称算法)与 AES(对称算法)组合?是,采用此组合。若此加密算法组合不适用,我们还有哪些备选加密算法?”

 

接下来,您的浏览器将使用非对称加密:发送公钥证书至 ssd.eff.org 服务器,以验证您的身份真实性。网站服务器核验此公钥证书与您的公钥匹配,以防您的连接遭到恶意拦截。

身份确认后,网站服务器将使用对称加密:生成新的对称密钥文件,然后对您的浏览器公钥进行非对称加密,并回传至您的浏览器。您的浏览器以私钥解密该文件。

对称密钥验证成功后,您的浏览器和网站服务器以此加密后续通信。这一系列交互过程称为传输层安全 (TLS) 握手。握手成功后,您与ssd.eff.org 建立安全连接,浏览器地址栏显示“https://ssd.eff.org”

如需深入探索密钥验证机制,请参阅此指南