TwKit

推文

@blmario669 · 2026-10-09 16:16

🔥干货科普分享(你知道 ZK 和 FHE 具体说的是啥吗?) 最近其实隐私概念开始陆续被一些 NFT 项目拿来做文章了。 比如之前比较火的 Zcash 生态的 NFT 项目 @zec_bit ,以及基于 Zama FHE 方案的 @FungoLabs 其实很多人只知道 ZK、FHE 是两种隐私相关的密码学方案,但对它们其实并不了解,我之前恰好写过这两方面的文章,也有过一些浅浅的研究,可以借这个机会聊聊。 我尽量用大家都能看懂的人话,把 ZK 和 FHE 的原理解释清楚。(建议收藏) ──────────────────────────────── 1/ ZK:零知识证明 ZK 全称 Zero-Knowledge,之前其实我更习惯叫它 ZKP,也就是 Zero-Knowledge Proof。 上两轮周期我接触过很多 ZK 类项目,一般能玩得动 ZK 的开发团队,都有点东西,开发起来很复杂。 所谓零知识证明,就是你想向对方证明某件事情是真的,但又不希望把背后的秘密或者原始数据暴露给对方。 比如说: 你想向银行申请贷款,银行要求你的存款必须超过 100 万美元,但你不想告诉银行自己具体有多少钱,也不想公开账户信息。 这个时候就可以使用 ZK。 你可以向银行提供一个数学证明,银行通过验证这个证明,就可以确认你的存款确实超过了 100 万美元。 整个过程中,银行并不知道你具体有多少钱,却可以确认你符合贷款条件。(这里有个前提,就是你用于生成证明的存款数据,本身必须来自可信的银行凭证) 那么更深入一些,ZK 的实现我觉得可以简单理解为三个步骤: ✅ 第一步:把需要证明的事情,转化成一套数学规则,也就是电路。 比如上面的例子,就是设计一套规则:要求证明者确实拥有可信的存款凭证,并且凭证里的余额超过 100 万美元。 这个电路本质上是由大量数学约束组成的计算逻辑,这个就比较复杂了。 ✅第二步:通过证明系统生成一份零知识证明,也就是我们说的 ZKP。 常见的零知识证明技术有 zk-SNARK、zk-STARK(不止这两种),它们是几类不同的证明技术,当然不同系统的复杂程度也不一样。 证明者把自己的秘密数据和公开条件输入证明系统,通过大量数学运算,最终生成一份可以被验证的密码学证明。 ZK 属于一种比较消耗计算资源的方案,尤其是生成证明通常需要消耗比较多的计算资源,这个就看你用的什么证明系统了,不过验证证明往往可以相对高效地完成。 ✅ 第三步:验证这份证明。 银行只需要按照验证规则检查 ZKP 是否有效。 如果证明有效,就可以确认相应的数学条件成立。 ZK 的安全性建立在密码学数学难题、证明系统的可靠性以及电路设计正确的基础上。 在这些前提成立的情况下,想要凭空伪造一份有效证明,在计算上几乎超级难。 当然,ZK 在我们行业主要的另一个用例是提高效率。 比如 L2 方案里的 ZK Rollup,就是在链下完成大量交易计算,再通过证明让以太坊验证计算结果,从而提高效率、降低成本。 代表性项目包括: @zksync 、最近涨的贼猛的 @Starknet 、 @aztecnetwork 、 @Scroll_ZKP 、 @LineaBuild 、 @taikoxyz 等等吧。 ──────────────────────────────── 2/ FHE:全同态加密 FHE 全称中文叫全同态加密。 其实我个人认为,FHE 要比 ZK 更复杂。 它本身在实际工程中,要对大量加密数据持续进行复杂计算,技术难度和计算开销通常都很高,目前的探索其实还处于相对早期的阶段。 所谓 FHE,就是让一份数据即便处于加密状态,别人仍然能够直接对它进行计算,而不需要知道原始数据是什么。 我们还是用上面那个贷款的例子。 这次银行不仅要求你的存款超过 100 万美元,还需要根据你的收入、存款、负债等数据计算信用评分,决定最终给你多少贷款额度。 但你不希望银行掌握自己的完整财务情况。 这个时候也可以使用 FHE。 就是你先把自己的财务数据全部加密,再把加密后的数据交给银行。 银行虽然看不到你的原始数据,但仍然可以直接对这些加密数据进行计算,最终得到一份加密的信用评分。 然后你通过自己的密钥把计算结果解密,就能得到正确的评分。如果银行需要这个结果来审批贷款,还可以通过授权等方式获取最终评分。 那么 FHE 到底是怎么实现的? 我们同样分成几个步骤: ✅ 第一步:先通过特殊的加密算法,把原始数据变成密文。 比如你有两个数字,10 和 20。 经过 FHE 加密以后,别人看到的就不再是 10 和 20,而是两份无法直接看懂的密文。 ✅ 第二步:利用同态加密的数学特性,直接对密文进行计算。 传统加密技术一般需要先把数据解密,才能正常进行计算。 但 FHE 不需要,它通过特殊的数学结构,让密文上的运算能够对应到原始数据上的运算。 比如: 原始数据是:10 + 20 = 30 加密数据则是:密文 A + 密文 B = 密文 C 虽然别人不知道 A 和 B 分别代表什么,但是按照 FHE 的运算规则计算以后,最终把密文 C 解密,就能够得到 30。 ✅第三步:处理密文计算过程中产生的噪声。 很多 FHE 方案基于格密码学,在加密过程中会引入一定的数学噪声,以此保证数据的安全性。 但是随着密文不断进行加法、乘法等运算,这些噪声也可能不断积累。 如果噪声超过一定范围,最后就可能无法正确解密。 所以,FHE 需要通过一系列数学技术控制噪声,有些方案还会使用一种叫做自举的技术。 你可以把它理解成,在不暴露原始数据的前提下,给密文进行一次刷新,让它能够继续参与后面的计算。 因为这些复杂的加密运算和噪声管理机制,所以 FHE 的计算成本会远远高于直接处理明文数据。 所以 FHE 的主要技术挑战之一,是如何把它的计算成本降下来,让它能够真正进入大规模的商业应用。 (目前说自己在 FHE 上大规模采用的项目,都 TM 是吹牛逼) 💡 FHE 里面还有一个概念:全同态和半同态 同态加密并不只有 FHE 这一种,按照计算能力的不同,大致可以分成三类: 第一类:部分同态加密(PHE),也经常被笼统地叫作半同态。 它只能支持特定类型的计算。 比如有的只能对密文做加法,有的只能做乘法,无法像普通计算机一样同时灵活处理各种运算。 但是因为支持的计算比较简单,所以在特定应用中,性能和实现成本往往更有优势。 第二类:有限同态加密(SHE)。 它比部分同态更进一步,可以同时支持一定程度的加法和乘法。 但是由于计算过程中会积累噪声,能够连续执行的计算深度受到限制。 第三类:全同态加密(FHE)。 它在理论上可以支持任意可计算的函数,通过自举等技术突破有限计算深度的限制。 也就是说,它不仅能够进行简单的加减乘法,还能通过组合基础运算来完成更加复杂的计算任务。 当然,计算能力越灵活,通常也意味着需要付出更大的计算资源和性能成本。 所以并不是所有场景都必须使用 FHE,很多只需要简单加密运算的业务,用部分同态或者有限同态方案反而可能更合适。 ──────────────────────────────── 所以相对来说: ZK 其实解决的是可信验证问题: 上面的例子是,我不告诉你自己有多少钱,但可以通过数学证明,让你确认我的存款超过 100 万美元。 FHE 解决的是隐私计算问题: 即我不告诉你自己的收入、存款和负债,但是你仍然可以在看不到原始数据的情况下,帮我计算出信用评分。 一个侧重于证明,一个侧重于计算。 它俩其实并不冲突,甚至可以结合使用。 比如通过 FHE 对加密数据进行计算,再结合 ZK 等可验证计算技术,证明计算过程符合规定的规则。 既可以保护数据隐私,也可以进一步解决计算结果是否可信的问题。 以后嘴撸 ZK 或者 FHE 相关项目以前,先整明白是啥,不然你就是不懂装懂!!!

曝光 535 · 评论 24 · 点赞 19 · 书签 3 · 曝光/时 29.905723552259065