From f2b3365c5749db4ecc33018c7544bc184b28d4b2 Mon Sep 17 00:00:00 2001 From: Huowuge <68574153+Huowuge@users.noreply.github.com> Date: Thu, 8 Aug 2024 23:34:43 +0800 Subject: [PATCH] 0808 --- Zemmer_ZICL1st.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/Zemmer_ZICL1st.md b/Zemmer_ZICL1st.md index c848168..1c78bcd 100644 --- a/Zemmer_ZICL1st.md +++ b/Zemmer_ZICL1st.md @@ -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)