Skip to content

Commit

Permalink
0808
Browse files Browse the repository at this point in the history
  • Loading branch information
Huowuge committed Aug 8, 2024
1 parent 52bd43f commit f2b3365
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions Zemmer_ZICL1st.md
Original file line number Diff line number Diff line change
Expand Up @@ -911,6 +911,65 @@ template IsZero() {
component main {public [in]}= IsZero();
```

### 2024.08.07
没学
### 2024.08.08
# 零知识证明系统的数学表达
以下的表都不保证对,要命

## 前提

1、R:一个可以高效计算的二元运算关系,即变量x和y之间的运算关系。这种关系可以是四则运算、hash运算、椭圆曲线有限域上运算等。

2、(x, w):一个二元组,符合R运算,其中w是私有输入例如私钥,x是公开输入例如公钥。

## 步骤

存在五个算法阶段

| 算法阶段 | 生成 | 解释 |
| ---------- | -------- | ----------------------------------------------------------- |
| sysGen | 系统参数 | 生成椭圆曲线初始的系统参数:比如椭圆曲线的公式、有限域p等。 |
| commitment | 承诺 | prover选择随机数r,发送承诺C = Com(x, w; r) |
| challenge | 挑战 | verifier从特定域中选择随机数e,发送给prover |
| response | 响应 | 证明根据挑战生成响应:z = Response(x, w; e, r) |
| Verify | 验证 | verifier基于Com、验证响应 v = Verify(x, C, e, z) |

#
## zk-snarks的七个等价转化关系

等价转化的意思:将复杂问题简单化,最终转化为可以高效验证的形式。

| 关系 | 原理简述或公式 | 举例 |
| ------------------------------------------------------------ | ---------------------------------- | ---- |
| 计算关系 | y=F(ω),初始出入ω | |
| R1CS(电路约束) | 将算法用电路表达出来 | |
| 向量s与多维向量/电路向量(u~m~, v~m~, w~m~)的内积 | 多变量多项式的零点对应R1CS约束的解 | |
| 向量s与电路矩阵U,V,W的内积 | | |
| 向量s与三组多项式U(x),V(x),W(x)的线性组合运算(系数) | | |
| 目标多项式整除QAP或QSP多项式 | 构成NP问题 | |
| QAP多项式、目标多项式、商多项式的多指数运算 | 构成零知识证明 | |
| 基于这三个多项式UVW的系数计算椭圆曲线离散对数点(双线性映射) | 验证 | |

## 非交互式零知识证明和数字签名的区别

Alice:Prover/Signer。Bob:Verifier

| 阶段 || NIZKP | ECDSA signature | signature | Schnorr signature |
| ---------------- | ----- | --------------- | -------------------------------------- | ------------------- | ----------------- |
| 由私钥sk生成公钥 | Alice | Pk = sk.G | Pk = sk.G | Pk = sk.G | Pk = sk.G |
| 生成随机数r | Alice | r | r | r | r |
| 生成承诺R | Alice | R = r.G | R= r.G,其中R^x^是R的横坐标 | R = r.G | R = r.G |
| 加密消息 | Alice || m = Hash(M) mod n | m = Hash(M) | m = Hash(M) |
| 生成挑战c | Alice | c = Hash(Pk, R) | c = Hash(R, m) | c = Hash(Pk, R, m) | c = Hash(R, m) |
| 计算 | Alice | z = r + c.sk | s = r^-1^(m+R^x^.sk) mod n | z = r + c.sk | z = r + c.sk |
| 组合并传递给Bob | Alice | (R, z) | (R^x^, s) | (R, z) | (R, z) |
| 计算 | Bob | c' =Hash(Pk, R) | | c' = Hash(Pk, R, m) | R' = z.G - c.Pk |
| 验证 | Bob | z.G =R +c'.Pk | R' = (s^-1^.m).G + (s^-1^.R^x^).Pk = R | z.G = R + c'.Pk | R' = R |

r的作用:随机数,就是为了保密私钥sk的。作用等价于sk。

Tornado cash的原理是,通过zk证明知道Merkle Tree中的保密随机数r,就等于知道了私钥sk,就可以提资产了(也就是不必直接知道sk)


<!-- Content_END -->

0 comments on commit f2b3365

Please sign in to comment.