zkTLS: 应用驱动的非典型 ZK 技术
2025-04-29 22:36
Primus Labs
2025-04-29 22:36
订阅此专栏
收藏此文章



尽管以 zkSNARKs 为代表的 ZK 技术在区块链行业获得了前所未有的发展,但与行业预期的终极 end game 仍然相距甚远。一方面,zkRollup 对以太坊性能突破带来了一定优势,但是随着链上应用的日渐匮乏,空有基建缺乏使用的窘境无法突破。另一方面 zk 技术本身仍然没有孵化出高价值的 zk 应用——不管是隐私为核心的链上交易和机密支付,还是各类 zk +XXX (zkEmail, zkLogin, zkPassport, …),仍然是需求不明确,或者强行蹭 zk, 技术贴金,没有真正解决场景痛点。


zkTLS,作为一种新的密码学技术,乍一看大家可能觉得又是一种无甚新意的 zk + XXX 技术。事实上,zkTLS 与传统的 zkSNARKs 类技术并没有多大关系,甚至这里的 “zk” 也不是传统的零知识证明。zkTLS 主要解决互联网的数据验证和分享问题,从而帮助应用在确保数据真实可靠的前提下获得数据的价值。


什么是 zkTLS?


一个通俗的例子是,你如何向另一个人证明你的银行账户有很多钱?传统的方法是让银行为你出具资产证明。这类纸质证明带有银行的公章,带有很明确的真实性(authenticity)。


(图片来源于网络)


那么,如果问题转变成,你如何向另一个人证明你的信用分、电商消费金额、游戏时长呢?我们无法预期这些存有你个人数据的网站会为你进行单独背书,提供相关的证明服务。或者你直接通过屏幕截图也许可以让其他人信服,但是这个过程仍然会被人认为伪造,以及带来额外的敏感信息泄露的风险。


zkTLS 就是一种基于 TLS 协议的数据验证技术,能在客观上为基于互联网的任意数据提供真实性证明


最早的 zkTLS 技术产品是 TLSNotary 项目在 2015 年发布的一款产品 PageSigner,基于 Chrome 浏览器。从它的名字不难发现,TLSNotary 的初衷就是为了做一款能提供网页数据真实性证明的工具。事实上,一直到 2020 年, ChainLink 团队发表了论文 DECO,zkTLS 才逐渐进入行业视野,大家发现原来还有另一类预言机(Oracle),可以获得链下的私有数据。


客观来说,2023 年之前,zkTLS 技术在对接实际业务需求时仅仅停留在“可用”阶段,距离“好用”还相差甚远,单次证明耗时通常需要若干分钟。2023 年,有鉴于此前 zkTLS 技术在使用了安全多方计算之后在通信方面开销过高,reclaim 提出了基于代理模式(proxy mode) 的 zkTLS 技术,通过传统的 zkSNARKs 以及引入一个需要信任的代理节点,实现 TLS 数据的可验证。2023 年年中,Primus 团队(此前名为“PADO”)通过 garble-then-prove 的技术,结合 quicksilver 算法将基于安全多方计算模式的 zkTLS 技术整体性能提升了 10 倍以上,并且在代理模式里,通过用 quicksilver 算法代替传统的 zkSNARKs,将整体性能也提升了 10 倍以上。目前来看,Primus 的 zkTLS 技术在性能上基本能满足各类业务场景的需要。



读者可以查阅相关的基准测评了解更多的 zkTLS 的性能情况 (https://hackmd.io/@-fI_Eu_rR8qs02aOhOPWNg/HkRyz5OF1g)


zkTLS 技术分类

通常来说,zkTLS 实现网页数据的真实性验证,依赖于一个第三方 Attestor。Attestor 类似观察者,通过“阅读” TLS 协议的执行过程中的请求和响应消息,来确保用户的数据(来自于服务器的响应消息)确实来自于指定的数据源(注:这里的数据源指服务器域名以及相关的 API endpoint)。


TLS 协议一般分为两个阶段:握手和会话。在握手阶段,客户端和服务端通过一系列的通讯交互,共同计算出会话密钥用于下一阶段的加密通讯。在会话阶段,客户端将请求消息发送给服务端,服务端随之返回响应消息,所有的消息都由会话密钥进行加密处理,确保没有第三方可以窃取。


zkTLS 根据核心技术组件的不同,主要分为两大类,基于安全多方计算(MPC)的和基于代理的技术。


MPC 模式

MPC 模式主要依赖于安全多方计算的使用。在 MPC 方案中,Attestor 和 Client(客户端) 通过 两方计算(2PC)协议 来模拟 TLS 握手中的客户端部分。这意味着在握手阶段结束后,客户端不会直接获得完整的会话密钥。只有当 Attestor 收到 响应密文 后,它才会将 密钥份额 发送给客户端,使其能够解密所有密文。


「小知识:MPC 即安全多方计算,一般为两方参与(即 2PC)或者三方及以上参与(称为 MPC)。不管是 2PC,还是 MPC,都要求参与各方保证自己的计算输入不被其他方获得,同时能协作完成某一个指定的计算任务,例如多人一起计算出平均工资而不泄漏任何一人的薪资情况,或者多个数据提供者在不泄漏各自数据资源的条件下一起参与完成 AI 模型训练。」



MPC 模式的直观流程如下:


1.握手阶段:

Client 和 Attestor 运行 2PC 协议,共同计算会话密钥。在此过程中,Client 和 Attestor 仅持有会话密钥的各自份额,而非完整密钥。


2.请求加密:

Client 和 Attestor 再次运行 2PC 协议,计算加密后的请求数据。


3.响应处理:

Client 接收 数据源 返回的响应密文,并将其转发给 Attestor。


4.密钥解封与验证:

Attestor 将 密钥份额 发送给 Client,使其获得完整的会话密钥。Client 使用该密钥解密响应,并向 Attestor 证明密文有效,且满足协议设定的安全属性。需要注意的是,Client 和 Attestor 并不会使用 2PC 协议来解密响应密文,解密由 Client 在获得完整密钥后独立完成。


Proxy 模式

代理模式下,Attestor 作为代理,在 Client(客户端) 和 Data Source(数据源) 之间转发所有 TLS 交互数据(包括握手信息和加密通信数据)。TLS 协议结束时,Client 需要向 Attestor 以零知识方式(ZK)证明 密文的有效性。


Proxy 模式的设计动机消除 MPC-TLS 中的 2PC 协议,因为 2PC 是计算开销最大的部分,通过减少计算复杂度,提高了协议的整体执行效率。



zkTLS 能给我们带来什么?

zkTLS 的核心价值主要是可验证性。


在此之前,并没有很好的方法在无需信任的条件下,支持用户提供可信的个人数据。这种可验证性有着广泛的灵活度和实用性,包括:

  • 数据源无侵入:数据源并不会感知到它正在与一套全新的 zkTLS 协议交互,而仅会遵循传统 TLS 协议的运行逻辑。这意味着 zkTLS 在理论上可以广泛接入所有底层基于 TLS 协议的数据源或者 API 服务,尽管异常频次的交互仍可能触发数据源端的风控策略。
  • 通用性:所见皆可证,理论上任意的网页数据,不管是公开的,还是私人的,敏感或者不敏感的,都可以通过 zkTLS 的方式由 Attestor 鉴证后获得
  • 链无关:zkTLS 纯粹是基于密码学的链下行为,其协议输出通常是一段带有 Attestor 签名的数据,可以在链下验证,也可以上链后在智能合约里进行验证。
  • 隐私友好:基于零知识证明的特质,对于需要分享的敏感信息,zkTLS 可以支持最小化披露。简单来说,对于 TLS 协议返回的响应消息,可以对其中的可计算数据(数值类型)定制相关的约束条件,例如年龄大于 18,余额不低于 10000 等,并将相关的计算证明结果体现在输出数据里。


zkTLS 的应用案例

你可能会想,基于 zkTLS 的数据共享的可能使用案例是什么?以下是我们认为值得探索的一些想法:



  • 低抵押贷款:通过 zkTLS 提供链下的信用评分、银行余额、收入和其他财务数据的证明,可以允许借贷协议提供更优的资本利用效率。


  • 链下身份验证:获得传统机构的用户 KYC 信息,并在链上金融协议中使用。


  • P2P 交易: 我们可以创建一个点对点的数字化商品市场。一方面,买家可以通过 zkTLS 技术证明其完成了商品所有权的变更,这包括电子票,域名,游戏道具,甚至法定货币;卖家可以通过智能合约控制代币的转让。


  • AI Agent:借助 zkTLS,我们可以确保 AI Agent 的行为完全是可靠的。这包括验证社交媒体上具有市场影响力的 agent 的言论,以及解锁 AI 交易机器人和 AI 参与 DAO 治理,降低流程中的信任成本。


  • 粉丝证明:例如允许用户提供粉丝身份的证明, 并从 KOL/ 艺术家那里获得相关的奖励。


  • 社交账户打赏 / 支付:可以允许任何人将加密资产发送给一个或者多个社交账户,而无需知道对方的钱包地址。另一方面,用户需要通过 zkTLS 提供相关的社交账户证明,来领取其名下的代币。


  • 社交登陆: 通过 zkTLS 验证用户的社交平台账号拥有权,开发一种全新的登录机制。用户能够使用任意网页服务提供商的账号完成登录,而无需依赖特定的 Google 或 Meta 账户。

价值数据验证和计算新范式

zkTLS 代表的不仅是 Web2 数据在 Web3 生态中的可用性提升,更是数据所有权的转变。过去受限于平台的数据,如今可以自由流动、受隐私保护,并具备可编程性。这一演进让用户不再只是被动接受者,而是数据的真正掌控者。


随着 zkTLS 的采用加速,我们将见证数据的可验证性带来的组合效应——更多可验证的数据支撑更强大的应用。另一方面,这些可验证数据在应用间传递价值,将引发一个新的问题,如何对这些关键数据进行计算,并确保计算结果的正确性。


事实上,对链上敏感数据的计算通常借助于全同态加密(FHE)等更加复杂的密码学技术。 Primus 通过对全同态加密算法结合零知识证明进行重新设计,提出了 zkFHE(可验证全同态加密)协议,支持免信任的链上数据机密计算,正在将 zkTLS 这一横跨不同赛博空间的数据验证技术,进一步拓展到数据计算领域,为解锁更多的创新应用创造可能性。


本文作者: Xavier (https://x.com/Xavier_bham), co-founder@Primus Lab, 密码学博士,拥有 10 年以上 MPC/ZK 等隐私研究经验。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Primus Labs
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开