DECO科普周:深度研究系列二(数据溯源和真实性)
作者:Chainlink Labs研究团队
作者:Siam Hussain
贡献者:Lorenz Breidenbach、Dahlia Malkhi、Alexandru Topliceanu、Xiao Wang, Chenkai Weng和Fan Zhang
在上一篇文章中,我们提到了证明者需要让验证者相信TLS响应是从某个特定服务器发送的。
DECO包含以下三个部分,即:证明者(Alice或简称“她”)、验证者(Bob或简称“他”)以及TLS服务器(Charlie或简称“它”)。在TLS协议中,客户端(注:在DECO中客户端就是证明者)在每一轮新的会话中会发起秘密挑战,以验证服务器的真实性。TLS是交互式协议,因此验证者需要参与协议执行才能验证数据的真实性。他会作为证明者和服务器之间的代理,记录在TLS协议中传输的字节。在之后证明数据真实性的环节中,这些字节就是证明者和验证者所知的“事实”(truth)。这里需要注意的是,TLS协议可以确保数据无法被“偷听”到,也就是说验证者无法偷听到数据。
服务器完全不知道自己参与了DECO协议。这就需要在执行时不对TLS协议做任何修改,而DECO则需要严格按照TLS协议的每一步执行。首先,证明者会生成TLS会话密钥。然后,再用这把密钥来解密TLS密文。
TLS密钥协议和绑定密钥的证明
在TLS协议一开始,证明者和服务器会使用密钥交换协议(如:Diffie–Hellman)来生成一个TLS会话密钥K,而验证者并不知道K是什么(注:否则就无法保障TLS的安全性)。不过这里存在一个安全漏洞:假如证明者在后续ZKP证明中使用假密钥K′怎么办?这是完全有可能的,因为在现代TLS协议中,加密算法中的密文可以用好几种方式解密。证明者可以将密文解密成服务器之前从来没发送过的内容,而这样做会破坏数据完整性。DECO给出的解决方案是让证明者提交一份绑定密钥的证明,以证明对会话密钥做出的承诺[K]是有效的。
之所以提出这个要求,是为了让证明者向验证者证明,会话密钥K是与验证者记录的会话一对一绑定的。要了解其底层逻辑,首先得了解TLS会话密钥是如何创建的。
我们将用[GZBW22]的TLS 1.3简化版来举例(注:为了方便大家理解,我们将省略证书验证环节,并将多个密钥统一用K来表示)。首先,证明者和服务器会生成一个共享秘密(secret),验证者看不到这个秘密,我们称之为S。然后,他们会在本地基于S计算出密钥K。在下述协议中,HMAC指散列消息认证码(Hash-Based Message Authentication Code),HKDF指HMAC密钥派生函数(HMAC Key Derivation Function),而HASH则是哈希函数。
而在这些中间环节的数值中,服务器只向证明者发送SF。证明者对收到的SF进行验证,查看是否匹配本地计算出的数值。
验证者观察并记录A、B以及SF,并同时知道g和p。他无法计算出K,因为他不知道a和b。要验证[K]是否正确,一个最直接的方式就是证明者将秘密a作为ZKP中的隐私输入来对其作出承诺。然后,证明者和验证者利用已知的数值,可以通过ZKP协议计算出[K]。这个方法虽然很安全,但成本也很高,因为公钥的执行电路(即:计算A和S的模幂)包含大量的与门(AND gates)。
[GZBW22]利用了哈希函数的抗碰撞性(collision-resistance)来优化这个电路。在优化的版本中,证明者不是对a,而是对S做出承诺,因此ZKP电路只需要包含第六到十步。由于验证者已经作为代理在记录SF,因此证明者在第八步后会打开[SF],而验证者则会将[SF]与记录的数值进行对比。哈希函数具有抗碰撞性,因此可以确保证明者无法计算出错误的S≠gab mod p并算出同样的SF值。经过这样的优化后,我们就可以避免在ZKP协议中执行公钥操作,而是只涵盖HMAC和HKDF这两项。HMAC和HKDF中计算最密集的部分就是多次哈希运算(如:SHA-256)。这个哈希函数的电路非常大,但是由于近期交互式ZKP技术取得了一定进展,因此还是可以在合理时间内完成的。
需注意的是,TLS会话中包含多个密钥,不同TLS版本的密钥数量也有所不同。TLS 1.3版包含四个密钥,handshake和appdata中两个方向各有两个密钥。第十步中的K就是从服务器到证明者的appdata密钥。第六到第十步在相反方向中也会重复一遍。在下一章以及后续文章中,我们会具体讲解服务器到证明者的appdata,即:TLS响应。本系列的最后一篇文章会详细讲解证明者到服务器的appdata,即:TLS请求。DECO还会双向验证handshake密钥。
TLS会话解密
证明者和验证者就密钥达成一致协议后,会持有对TLS会话密钥K做出的承诺[K]以及服务器发送的加密TLS响应C。证明者收到C(即:TLS客户端),而验证者则作为代理将其记录下来。在之后证明数据真实性的环节,C就是证明者和验证者都知晓的“事实”(truth)。
证明者和验证者首先会计算对TLS响应R做出的承诺[R]。要做到这一点,他们需要通过ZKP协议执行解密电路R=decrypt(K,C),其中[K]和C是输入的参数。TLS支持许多不同的密码套件,decrypt()的具体内容会根据每一轮会话所选的密码套件而有所差异。在顶层,decrypt()会基于响应的长度反复调用一个对称加密函数(如:AES-GCM-128)。在DECO与Teller的一个概念验证应用中,为了解密一个响应(即:证明者的财务报告),大约调用了1700次AES-128函数。解密一个区块(大小为126B)的AES-128电路包含6400个与门。也就是说,计算[R]需要计算对超过1000万个与门输出做出的承诺。储存这么多承诺对于内存的要求是巨大的。索性,commit-and-prove ZKP能够忘记之前的承诺,因此我们只需要储存一个AES-128电路的承诺即可,其大小不超过1GB。更重要的是,对内存的要求跟对AES-128电路的调用次数没有关系,因此也跟TLS响应的大小没有关系。
在这一步中,证明者和验证者会持有对TLS响应做出的承诺[R]。验证者相信响应是真实的,因为响应来自对加密TLS响应C的解密,而这个C是验证者作为代理记录下来的,而且他使用承诺的密钥[K]验证了计算的有效性。在下一篇文章中,我们将讲解如何解析一个已经验证过的响应。
这是Chainlink Labs研究团队发布的DECO深度研究系列的第二篇文章。欢迎查看本系列的其他文章:
文献参考
[GZBW22] Paul Grubbs、 Arasu Arun、Ye Zhang、Joseph Bonneau和Michael Walfish。
“Zero-Knowledge Middleboxes”,2022年在USENIX安全研讨会上发表。
加入Chainlink官方渠道▼
了解及集成Chainlink预言机服务请联系▼
Chainlink 官方渠道
微博: https://weibo.com/chainlinkofficial
知乎:https://www.zhihu.com/people/chainlink
中文 Twitter: https://twitter.com/ChainlinkCN
Twitter: https://twitter.com/chainlink
中文爱好者电报群:https://t.me/chainlinkfans
Telegram: https://t.me/chainlinkofficial
Discord: https://discord.gg/aSK4zew
GitHub: https://github.com/smartcontractkit/chainlink
SegmentFault:https://segmentfault.com/u/chainlink
QQ群: 6135525
合作联系: china@smartcontract.com
比推快讯
更多 >>- 灰度撤回其以太坊期货ETF申请
- 美众议院民主党拟于本周提出针对加密货币混合服务的法案
- 摩根士丹利将美联储首次降息时间的预期从7月推迟到9月
- 彭博分析师:灰度现货比特币ETF净流入可能是短期交易的结果
- 前 NFL 巨星Rob Gronkowski同意支付 190 万美元以和解 Voyager Digital 投资者诉讼
- BTC短线跌破63000美元
- Advanced Blockchain AG在瑞士成立加密风投机构ABX Ventures
- Aragon 联合创始人推出自托管钱包 Tuyo
- 美联储Neel Kashkar:今年仍有可能降息
- Solana生态DePin项目Ambient完成200万美元融资,Borderless Capital 领投
- 美国国务院拟悬赏1000万美元以获取LockBit勒索软件组织头目信息
- 分析师:Robinhood第一季度营收有望创近三年新高,加密交易收入同比增幅或达一倍以上
- MoonPay 与 BitPay 合作简化加密货币交易
- Lava Foundation 完成1100万美元融资,未来几个月将推出Lava主网和空投
- Zora网络收购NFT铸造聚合器mint.fun
- 美联储Neel Kashkar:最有可能在较长时间内维持利率不变
- 扩容解决方案提供商ZKM完成500万美元Pre-A融资,OKX Ventures 领投
- 前红杉中国合伙人曹曦旗下投资公司Monolith Management拥有超过2400万美元的贝莱德现货比特币ETF
- 美国9只现货比特币ETF 昨日增持4412枚BTC,价值约2.8亿美元
- 渣打银行:美国财政主导地位和特朗普上台或将使比特币受益
- ETH 反弹突破 3100 美元,24小时涨幅1.13%
- BTC回升至64000美元
- 过去2个月某巨鲸/机构从Flow Traders收到2,261枚BTC,价值约1.49亿美元
- 贝莱德和富达比特币ETF共拥有超42万枚BTC,价值约 270 亿美元
- CBOE向SEC提交富兰克林比特币ETF规则修改申请
- 建仓成本仅为2030美元的巨鲸拟赎回8453枚stETH,价值3017万美元
- 数据:迄今为止DeFi 漏洞已造成近 590 亿美元的损失
- SEC主席: 在发出多个Wells通知后,投资者缺乏必要的加密信息披露
- Tabi Chain将推出第1季空投活动,将分配8亿枚TABI代币
- Ethernity推出以太坊二层网络Ethernity Chain,生态由ERN提供支持
- MetaPhone完成100万美元融资
- 美联储卡什卡利:我对中性利率的估计值从2%适度上调至2.5%
- Botanix Labs获总计1150万美元融资
- QCP Capital:比特币期权交易员押注9月看涨价格将突破10万美元
- 目前丢失状态的BTC估值约为1210亿美元
- Steve Eisman:加密货币与纳斯达克指数有75%相关性
- Gary Gensler:许多加密货币根据法律都是证券
- Scroll生态项目PenPad完成新一轮融资
- 香港首批现货虚拟资产ETF资产管理规模已超24亿港元
- 美国超20%摇摆州选民将加密货币视为关键议题
- Stanley Druckenmiller已在三月大幅减持英伟达股票
- 香港金管局:基于区块链的深港跨境数据验证平台已上线试行
- 新加坡Web3平台Galaxis完成1000万美元融资
- QCP Capital获阿布扎比监管机构原则性批准
比推专栏
更多 >>观点
项目
比推热门文章
- 【比推每日新闻精选】灰度撤回其以太坊期货ETF申请;前红杉中国合伙人曹曦旗下投资公司Monolith Management持有超2400万美元的贝莱德现货比特币ETF;SEC主席: 在发出多个Wells通知后,投资者缺乏必要的加密信息披露
- 灰度撤回其以太坊期货ETF申请
- 美众议院民主党拟于本周提出针对加密货币混合服务的法案
- 【比推每日市场动态】屯币党越来越多,交易所的BTC流入量降至近十年最低!
- 摩根士丹利将美联储首次降息时间的预期从7月推迟到9月
- 彭博分析师:灰度现货比特币ETF净流入可能是短期交易的结果
- 前 NFL 巨星Rob Gronkowski同意支付 190 万美元以和解 Voyager Digital 投资者诉讼
- BTC短线跌破63000美元
- Advanced Blockchain AG在瑞士成立加密风投机构ABX Ventures
- Aragon 联合创始人推出自托管钱包 Tuyo