零知识证明 – zkHack mini挑战赛第一名
Trapdoor Tech获得zkHack mini挑战赛第一名
https://www.zkhack.dev/mini.html
这次的挑战赛由两道题目组成。一道题目一个星期的挑战时间。和第一期的挑战不同,这一期的题目都是基于STARK算法。STARK算法,AIR,FRI低阶测试等等技术会在后续的文章仔细介绍。本文先总结一下这次挑战赛的两个题目的解题思路。
第一题:There's something in the AIR
https://www.zkhack.dev/puzzleM1.html
该题需要找到一种方法来骗过基于ZK-STARK和winterfell构建的投票系统。该题实现的电路逻辑如下图:
这个是典型的隐私保护的实现。通过Nullifier证明拥有私钥。
解题思路
如果用户Alice能对同一个主题(topic)完成2次有效投票,说明系统中存在一个漏洞使得:
-
证明者(prover)能产生 > 1 个的nullifier,并基于此构建证据(witness)
-
验证者(verifier)根据相应的公开输入和证据,无法分辨证明者伪造的nullifier
首先,构造nullifier是在make_signal函数中,并将其作为验证者的输入
//! - A nullifier is computed by hashing a private key together with a hash of the topic - i.e.:
//! hash(priv_key, hash(topic)) using the same Rp64_256 hash function.
let nullifier = priv_key.get_nullifier(topic);
/// Creates a nullifier for the provided topic against this private key.
///
/// A nullifier is computed simply as hash(key, topic).
pub fn get_nullifier(&self, topic: Digest) -> Digest {
let key: Digest = self.0.into();
Rescue::merge(&[key, topic])
}
但是证明者进行证据的计算过程中,使用12列的执行轨迹, 即State[12..23],来构成nullifier, 不只是私钥和主题。
// prover set the initial state
// -- nullifier section of the trace --
state[12] = Felt::new(8);
state[13] = Felt::ZERO;
state[14] = Felt::ZERO;
state[15] = Felt::ZERO;
state[16] = priv_key[0];
state[17] = priv_key[1];
state[18] = priv_key[2];
state[19] = priv_key[3];
state[20] = topic[0];
state[21] = topic[1];
state[22] = topic[2];
state[23] = topic[3];
一个合法的nullifier应包括以下3个部分
[12 13 14 15] [ 16 17 18 19 ] [ 20 21 22 23 ]
nullifier = [8 0, 0, 0, --- 私钥Priv_key----------, -----主题Topic------- ] — 在执行到第 0 步时
然而,检查验证者的程序时,发现在evaluate_transition函数中没有设置对state[12-15]的验证, 类似的验证可以参考默克尔树验证的部分。
result.agg_constraint(1, hash_init_flag, are_equal(E::from(8u8), next[0]));
result.agg_constraint(2, hash_init_flag, is_zero(next[1]));
result.agg_constraint(3, hash_init_flag, is_zero(next[2]));
result.agg_constraint(4, hash_init_flag, is_zero(next[3]));
答案
可以为state[12-15]设置不同的值来伪造nullifier,例如[16, 0, 0, 0]。
pub fn get_fake_nullifier(&self, topic: Digest) -> Digest {
let key: Digest = self.0.into();
let mut state = [Felt::ZERO; 12];
state[4..12].copy_from_slice(Digest::digests_as_elements(&[key, topic]));
state[0] = Felt::new(0 as u64);
// apply the Rescue permutation and return the first four elements of the state
Rescue::apply_permutation(&mut state);
Digest::new(state
[4..8].try_into().unwrap())
}
同时在证明者产生证据时,将state[12-15]设置为伪造的nullifier所对应的值。
Prover.build_trace()
|state| {
......
// -- nullifier section of the trace --
state[12] = Felt::new(0);
第二题:Can you turn up the heat?
https://www.zkhack.dev/puzzleM2.html
本周的题目可以说是 zkHack 有史以来最难的一道题。本题的目标是伪造 STARK 证明,需要解题者对 STARK 证明的整个逻辑步骤有较为清晰的知识。
来回顾一下题目:Alice使用 STARK 电路写了一个斐波那契数列的计算程序,能够同时生成 STARK 证明并验证。某天她收到了一个错误的证明,计算出数列的第32项等于123(实际应为832040)。但这个证明却能通过她的 STARK 验证器。现在我们想要知道该证明是如何被伪造的。
。
比推快讯
更多 >>- 九只美国现货比特币ETF今日净流出约 1200 万美元
- ETH突破3000 美元,24小时涨幅0.32%
- 币安新币挖矿上线第54期项目Notcoin (NOT)
- Binance Labs 孵化的去中心化多链交易平台 UXUY 完成 700万美元Pre-A轮融资
- 某用户花费 6500 美元买入208万枚TRUMP,现已获利870倍
- BTC短时突破62000美元
- Robinhood CEO:Wells 通知前与美SEC进行了 16 次会面 ,加密资产变得“越来越重要”
- 美SEC专员:SEC 需要创建一条“合规途径”
- 黄立成:Blur应支持tokenURI的EIP-681
- 以太坊联创:美SEC不希望ETH改变银行业格局
- Uniswap Labs将在Zora平台启动5OCKS NFT限时铸造
- 何一:一些主流媒体的文章开始走向情绪与偏见的输出,不再基于事实
- Solana链上代币化平台AgriDex完成500万美元Pre-Seed轮融资,Endeavor Ventures领投
- 灰度向Coinbase Prime地址转入约269枚BTC
- 保险巨头MassMutual已持有比特币ETF敞口
- Arcium完成550万美元战略轮融资
- 美国失业数据公布后10年期国债收益率和美元指数DXY出现下跌
- 美国至5月4日当周初请失业金人数23.1万,高于预期
- 余烬:钓鱼 1155 WBTC 事件或许会有转机
- Gnosis投资Zeal 200万美元
- 何一:币安不针对任何基金,但一直在做MM市场监控
- BTC跌破61000 USDT,24H跌幅2.05%
- DEX Xswap完成战略轮融资
- 币安回应WSJ报道:有严格的市场监督计划,绝不容忍任何市场滥用行为
- Taproot Assets协议正将稳定币和代币化资产引入比特币链上
- WSJ:DWF Labs账户在币安平台上的月交易额至少为40亿美元
- 摩根大通:SEC对Robinhood Crypto发出Wells通知不会阻碍以太坊现货ETF获批
- WSJ:币安调查人员发现DWF Labs涉嫌操纵YGG等代币价格,并在2023年进行超3亿美元清洗交易
- WSJ:币安监控团队负责人在指出DWF Labs涉嫌操纵市场后被解雇
- 台湾地区推出《洗钱防制法》,未登记虚拟资产服务提供者面临最高2年徒刑
- WSJ:币安监控团队发现DWF Labs涉嫌操纵市场
- Vitalik:引入多维执行 Gas 会在 EVM 层面带来一定的复杂性
- 比特币拓展协议Side Protocol上线激励测试网
- Coinbase国际站上AR-PERP、HBAR-PERP和THETA-PERP进入post-only模式
- LBank Labs宣布投资稳定币开发商Usual Labs
- Optimism宣布Superchain生态系统支持Layer 3
- 加密矿企Phoenix Group收购12.5%的Rekt Studios股份进军Web3游戏市场
- 博时国际与MetaComp合作将在新加坡及其他地区推广现货虚拟资产ETF
- NEAR、Nethermind和EigenLabs合作在Holesky测试网推出NEAR Fast Finality Layer
- Pantera Capital:很容易想象2025年BTC价格将达到11.7万美元
- Creder推出基于黄金的RWA DeFi产品
- Bitlayer宣布设立200万美元上币基金,支持生态项目代币上线交易平台
- 香港证监会持牌人士称金管局正研究代币化存款在银行间交收和结算等事项
比推专栏
更多 >>观点
项目
比推热门文章
- ETH突破3000 美元,24小时涨幅0.32%
- 币安新币挖矿上线第54期项目Notcoin (NOT)
- Binance Labs 孵化的去中心化多链交易平台 UXUY 完成 700万美元Pre-A轮融资
- 某用户花费 6500 美元买入208万枚TRUMP,现已获利870倍
- BTC短时突破62000美元
- Robinhood CEO:Wells 通知前与美SEC进行了 16 次会面 ,加密资产变得“越来越重要”
- 美SEC专员:SEC 需要创建一条“合规途径”
- 黄立成:Blur应支持tokenURI的EIP-681
- 以太坊联创:美SEC不希望ETH改变银行业格局
- Uniswap Labs将在Zora平台启动5OCKS NFT限时铸造