原文作者:@Web3_Mario
在探索新的项目方向时,笔者接触到了一种全新的技术栈——zkTLS。经过深入研究后,将学习心得整理成文,与读者分享。zkTLS是一种结合零知识证明(ZKP)和传输层安全协议(TLS)的前沿技术,主要应用于Web3领域。其核心价值在于,通过链上智能合约验证链下HTTPS数据的真实性,而无需依赖第三方信任。这种真实性包含三个维度:数据来源的合法性、数据未被篡改以及数据时效性的保障。借助这一密码学机制,链上智能合约能够可信地访问链下Web2 HTTPS资源,从而打破数据孤岛。
为了更好地理解zkTLS的价值,我们需要先了解TLS协议的基本原理。TLS(传输层安全协议)是一种用于网络通信中加密、认证和确保数据完整性的协议,旨在保护客户端(如浏览器)与服务器(如网站)之间的数据传输安全。
对于非网络开发背景的读者来说,可能会注意到一些网站域名以“https”为前缀,而另一些则使用“http”。主流浏览器通常会对后者提示“不安全”,而前者有时会出现“您的链接不是私密链接”或“HTTPS证书错误”的警告。这些提示的原因就在于TLS协议是否正常工作。
具体而言,HTTPS协议是在HTTP协议的基础上引入TLS协议,从而保证信息传输的隐私性和完整性,并使服务器端的真实性可验证。HTTP协议本身是明文传输的,且无法验证服务器端的真实性,这带来了以下安全性问题:
TLS协议正是为解决这些问题而设计的。需要说明的是,有些读者可能听说过SSL协议,实际上TLS协议是基于SSL 3.1版本开发的,只是由于商业原因更名,但两者一脉相承。因此,在某些语境下,这两个术语可以互换使用。
TLS协议解决上述问题的主要思路包括:
接下来,我们简要讲解基于TLS协议的HTTPS数据交互过程。整个过程分为两个阶段:握手阶段(Handshake)和数据传输阶段。
1. 客户端发送ClientHello:
客户端(如浏览器)向服务器发送ClientHello消息,内容包括:
其目的是让服务器了解客户端的加密能力,并准备安全参数。
2. 服务器发送ServerHello:
服务器响应ServerHello消息,内容包括:
其目的是让客户端确认服务器身份,并协商安全参数。
3. 客户端验证服务器:
客户端执行以下操作:
其目的是确保服务器可信,并生成会话密钥。
4. 开始加密通信:
客户端和服务器使用协商好的会话密钥进行加密通信:
通过上述四步操作,HTTPS协议有效解决了HTTP协议的安全性问题。然而,这项广泛应用于Web2网络的基础技术却给Web3应用开发带来了挑战,尤其是在链上智能合约需要访问链下数据时。由于链上虚拟机环境要求所有数据具备可回溯性,以确保共识机制的安全性,因此通常不会开放外部数据调用能力。
尽管如此,开发者发现DApp对链外数据的需求依然存在,于是预言机(Oracle)项目应运而生,例如Chainlink和Pyth等。它们通过充当链上与链下数据的中继桥,打破了数据孤岛现象。同时,为了保证中继数据的可用性,这些Oracle项目普遍采用PoS共识机制,即通过提高作恶成本来防止中继节点提供错误信息。例如,若希望在智能合约中访问BTC在Binance、Coinbase等中心化交易所的加权价格,则需要依靠这些Oracle将链下数据汇总并传输到链上存储。
然而,基于Oracle的数据获取方案存在两个主要问题:
为解决上述问题,zkTLS技术应运而生。其核心思路是通过引入零知识证明(ZKP)算法,使链上智能合约作为第三方,直接验证某个节点提供的数据是否来源于特定HTTPS资源,且未经篡改。这样便能避免传统Oracle因共识算法带来的高昂成本。
有读者可能会问,为什么不直接为链上虚拟机环境内置Web2 API调用能力?答案是不可行的。链上环境需要保持封闭数据的原因在于确保所有数据的可追溯性,即在共识过程中,所有节点对某一数据或执行结果的准确性有统一的评估逻辑。这是完全去信任环境下的关键保障。然而,Web2数据难以构建这种统一的评估逻辑,因为不同节点可能因网络延迟等原因获得不同的结果,从而为共识带来困难。此外,HTTPS协议依赖的TLS协议安全性基于客户端生成的随机数和密钥共享参数,但链上环境是公开透明的,若让智能合约维护这些关键数据,将暴露隐私。
zkTLS采用了一种全新的方法,通过密码学保护替代传统Oracle基于共识机制为数据提供可用性的高昂成本,类似于L2中的ZK-Rollup对OP-Rollup的优化。具体而言,通过引入零知识证明,对链下中继节点请求HTTPS资源的结果、相关CA证书验证信息、时序证明以及基于HMAC或AEAD的数据完整性证明进行计算生成Proof,并在链上维护必要的验证信息及算法。这使得智能合约在不暴露关键信息的情况下,仍能验证数据的真实性、实效性和来源可靠性。
这种技术方案的最大优势在于降低了Web2 HTTPS资源达成可用性的成本,激发了许多新需求,特别是在降低长尾资产的链上价格获取、利用Web2权威网站实现链上KYC以优化DID(去中心化身份)、以及Web3游戏架构设计等方面。当然,zkTLS对现有Web3企业也带来了冲击,尤其是主流预言机项目。为此,Chainlink、Pyth等行业巨头积极跟进相关研究,试图在技术迭代中保持主导地位,同时催生了新的商业模式,例如从按时间收费转向按用量收费、Compute as a Service等。
综上所述,zkTLS技术为Web3领域提供了全新的可能性。读者在进行产品设计时,不妨关注zkTLS的发展动态,并尝试将其整合到业务创新和技术架构中,或许能够找到新的突破方向。