# 什么是零知识加密？

By [Bing](https://paragraph.com/@crybit) · 2023-02-16

---

> 本文翻译自ChainLink Blog，原文链接在这里：
> 
> [https://blog.chain.link/zero-knowledge-encryption/](https://blog.chain.link/zero-knowledge-encryption/)

零知识加密可确保云存储和密码管理等服务间的端到端数据安全和隐私。

加密基础知识
======

尽管当今的加密技术依赖于普通人可能无法理解的复杂数学公式和方程，但加密背后的基本概念却是非常简单的。

加密是将信息（数据）转换为特殊代码的过程，以防止未经授权访问该信息。

> 未加密的消息称为明文。一旦加密，它们就变成了密文。

一个容易理解的例子是**凯撒密码**——也被称为\*\*“移位密码”\*\*——如下所述：

> 考虑这么一句明文消息：“THIS IS A BLOG”。
> 
> 我们将使用【**右移两位**】来加密此消息。这就意味着“A”变成“C”，“B”变成“D”，如果我们走到字母表的末尾，它会绕回起点，这样“Z”就变成“B”。
> 
> 因此，加密后的密文消息为：“VJKU KU C DNQI”。

加密密钥
====

**加密是给信息上锁，密钥就是锁的钥匙🔑。**

加密密钥用于加密或解密消息。

在上面的凯撒密码示例中，发送方和接收方必须事先创建加密密钥。               

对称加密
====

凯撒密码是对称加密的一个例子，即发送方和接收方使用相同的密钥来加密和解密消息。为了使这种类型的加密有效，双方必须都知道密钥（【**右移两位**】）是什么，并且密钥应该难以猜测或窃取。

![在对称密钥加密中，相同的密钥用于加密和解密消息。](https://storage.googleapis.com/papyrus_images/bf9435900ba28a686542d3cbda87fc046771e6322364a5840b0abf24fae7df91.png)

在对称密钥加密中，相同的密钥用于加密和解密消息。

非对称加密
=====

今天的大多数互联网都以非对称加密为基础，也称为公钥加密。加密密钥以数学上相关的对（公钥和私钥）的形式生成。使用非对称加密的主要好处是任何人都可以使用公钥加密消息，但只有拥有私钥的人才能解密消息。

![在非对称密钥加密中，使用不同的密钥来加密和解密消息。](https://storage.googleapis.com/papyrus_images/c9ced0772c0d3e62ff33fbba89384dad7d5aa02eb7b5221c096356153cb9f005.png)

在非对称密钥加密中，使用不同的密钥来加密和解密消息。

这个方便的功能与对称对应功能一起广泛使用，以支持互联网安全，目前在 HTTPS 等协议以及范围广泛的电子邮件服务、区块链、消息传递应用程序等中使用。

零知识加密是如何工作的？
============

互联网上的所有主要应用程序、网站和服务都不同程度地采用了加密。现有的加密协议，如高级加密标准（AES）和传输层安全（TLS）被广泛使用，并已成为互联网应用和服务的标准。

> **零知识加密不是一个特定的加密协议，而是一个专注于最大程度保护用户数据隐私和安全的【过程】**。

> 为了使服务真正实现零知识，用户的数据必须在**离开设备之前**、**传输过程中**以及**存储在外部服务器上时**进行加密。

这是因为现代加密技术在阻止未经授权的参与者解码加密数据方面通常非常有效。使用蛮力方法破解现代加密在功能上是不可能的。

但是，为了便于使用和 UX 优势，许多服务提供商还持有用户的加密密钥——引入了一个额外的故障点，这对恶意行为者很有吸引力，因为服务提供商通常持有许多用户密钥。当服务提供商共享加密密钥的知识时，有很多好处（也有坏处），但这也意味着用户以外的其他人可以解密数据——这使得它不是零知识。

> 关于服务是否提供零知识加密的关键问题是：谁知道加密密钥？它应该只是用户。

使用零知识证明进行身份验证
=============

大多数零知识云存储提供商都有用户熟悉的简单用户体验——**输入密码即可访问帐户**。

**但是如果服务提供商不知道或存储您的密码，那么他们如何验证密码是否正确？**

答案是零知识证明，它使服务提供商能够验证用户是否知道加密密钥/密码，而无需用户透露密钥本身。这解决了身份验证问题，但仍然需要各种加密协议来保护数据在移动、上传、下载和存储时的安全。

客户端加密
-----

客户端加密意味着**数据在传输到外部服务器之前在发送方进行加密**。在零知识加密的上下文中，这意味着数据在**用户与服务提供商通信之前就已加密**——这使得服务提供商实际上不可能在不知道加密密钥的情况下解密数据，即使他们正在托管它。

传输中加密
-----

传输中加密可在传输过程中保护您的数据。简而言之，当上传或下载某些信息（无论是消息、文件还是其他类型的数据）时，传输中加密可确保在传输过程中没有人可以闯入并查看消息。

传输中加密协议的行业标准是 TLS。

静态加密
----

无论数据是存储在个人计算机上还是云服务器上，静态加密都是指对存储在任何位置的数据进行加密。

静态加密协议的行业标准是 AES，特别是 AES-256。

零知识加密的优缺点
=========

使用具有零知识加密的服务会带来各种好处和坏处。

### 零知识加密的优点

在数据隐私和安全方面，零知识加密是无与伦比的。因为只有用户可以访问加密密钥，所以没有其他人可以解密和查看他们的数据。

这在云存储和密码管理服务中最有用，在这些服务中，服务器端（即外部服务器）的黑客攻击或利用可能会导致用户隐私受到严重侵犯。通过实施零知识加密设计，服务提供商的责任更小，因为任何外部攻击仍然不会泄露用户数据，同时用户更加放心，即使在服务器攻击的情况下，他们的数据也受到保护。

> 底线是：如果用户想要保护其数据的隐私和安全，同时仍将其托管在外部服务器上以便于数据管理，没有比零知识加密更好的选择了。

### 零知识加密的缺点

**_无法恢复加密密钥_**

零知识加密设计的一个局限性是，如果用户无法访问其加密密钥或忘记密码，则通常无法再访问其数据。服务提供商无法提供恢复服务，因为他们不知道加密密钥。

抵消此限制的一种方法是让用户能够预先创建恢复密钥，但这通常是一次性使用的——在用户第一次使用此选项后恢复再次成为问题。

### 速度慢

零知识加密设计保证每一步的安全和隐私。提供完全零知识加密保证的服务提供商通常比安全性较低的同行慢，因为安全传输和存储用户数据需要更多的工作。

### 减少的应用程序功能集

服务提供商经常使用用户数据来创建量身定制的体验。例如，Apple 的照片应用程序将自动浏览用户的照片，以创建精选的体验和回顾。

由于提供零知识加密设计的服务提供商无法访问用户的任何数据，因此他们无法构建需要用户数据来创建更好、更方便的用户体验的功能。

即使对于简单的功能也是如此，**例如在完全打开之前预览图像、文件和文件夹的能力**。

结论
==

通过正确的设计，提供零知识加密解决方案的服务提供商本质上正在用数学保证取代基于品牌的承诺。用户不必信任零知识云存储提供商或密码管理器来保证他们的数据安全——他们的数据由于实施而安全。

这种形式的密码保证是 Web3 的真正意义所在，云存储和密码管理提供商中的零知识加密设计只是一个开始。区块链和扩展的零知识证明设计超越了零知识加密设计的局限性，保护了用户的数据隐私、主权和安全，同时仍然实现了创新社会从开放数据流中看到的财富。

More
====

*   [Zero-knowledge proofs explained](https://blog.chain.link/what-is-a-zero-knowledge-proof-zkp/)
    
*   [Blockchain explained](https://chain.link/education-hub/blockchain)
    
*   [Smart contracts explained](https://chain.link/education/smart-contracts)

---

*Originally published on [Bing](https://paragraph.com/@crybit/ODEJ05es97aFXYi9Uicw)*
