零知识证明学习(四)— zkSNARKs(引入密码学)

zkSNARK-密码学基础本节主要讲解zkSNARK涉及到的密码学知识。因为上一部分介绍的,证明者知道一些值,可能会恶意伪造证明。所以我们需要考虑在不破坏协议的前提下,对某些值能够进行模糊计算操作。同态加密同态加密的目的允许对一个值进行加密,并能够对这种加密进行算术运算。实现加密同态性的方法有很多种,我们将简要介绍一种简单的方法。这里我们选一个基数去加密我们设计的明文,例如,我们设基数为5,去加密一个数字5:53=1255^3 = 12553=125,因此,125就是明文3加密的结果。模运算:a
摘要由CSDN通过智能技术生成

zkSNARK-密码学基础

本节主要讲解zkSNARK涉及到的密码学知识。因为上一部分介绍的,证明者知道一些值,可能会恶意伪造证明。所以我们需要考虑在不破坏协议的前提下,对某些值能够进行模糊计算操作。

同态加密

同态加密的目的允许对一个值进行加密,并能够对这种加密进行算术运算。实现加密同态性的方法有很多种,我们将简要介绍一种简单的方法。

这里我们选一个基数去加密我们设计的明文,例如,我们设基数为5,去加密一个数字5: 5 3 = 125 5^3 = 125 53=125,因此,125就是明文3加密的结果。

模运算:a mod b:设 a , b ∈ Z a,b \in \mathbb{Z} a,bZ b > 0 b>0 b>0,如果 q , r ∈ Z q,r \in \mathbb{Z} q,rZ满足 a = q b + r a=qb+r a=qb+r,且 0 ≤ r < b 0 \le r<b 0r<b,则定义:a mod b := r.

小例子:日常我们生活时钟,17点对应的几点? 17 mod 12 =5 对应下午5点 生活中还能找到许多小例子

我们将同态加密和模运算结合。例如;
5 1 = 5 ( m o d   7 ) 5 2 = 4 ( m o d   7 ) 5 3 = 6 ( m o d   7 ) 5^1=5(mod \,7) \quad 5^2=4(mod \,7) \quad 5^3=6(mod \,7) 51=5(mod7)52=4(mod7)53=6(mod7)
不同指数但有相同结果:
5 5 = 3 ( m o d   7 ) 5 11 = 3 ( m o d   7 ) 5 17 = 3 ( m o d   7 ) 5^5=3(mod \,7) \quad 5^{11}=3(mod \,7) \quad 5^{17}=3(mod \,7) 55=3(mod7)511=3(mod7)517=3(mod7)

因此我们可以联想的离散对数难题,如果给你一个密文,以及一个基元,很难找到对应的明文。大部分现在密码学都是基于离散对数难题来进行构造。该方案的所有同态性质都保留在模域内:
e n c r y p t i o n : 5 3 = 6 ( m o d   7 ) m u l t i p l i c a t i o n : 6 2 = ( 5 3 ) 2 = 5 6 = 1 ( m o d   7 ) a d d i t i o n : 5 3 × 5 2 = 5 5 = 3 ( m o d   7 ) encryption: \quad 5^3 = 6(mod\,7)\\ multiplication: \quad 6^2=(5^3)^2 = 5^6=1(mod\,7)\\ addition: \quad 5^3 \times 5^2 = 5^5 = 3(mod\,7) encryption:53=6(mod7)multiplication:62=(53)2=56=1(mod7)addition:53×52=55=3(mod7)

本文中,我们声明加密函数: E ( v ) = g v ( m o d   n ) E(v)=g^v(mod \ n) E(v)=gv(mod n),其中表示我们想要加密的值。

加密多项式

结合上述同态加密,我们现在可以用一个随机值x去加密计算多项式,并相应地修改零知识协议。

假设多项式方程为 p ( x ) = x 3 − 3 x + 2 x p(x) = x^3-3x+2x p(x)=x33x+2x,我们可以确定该多项式的系数分别为:1,-3,2。因为同态加密并不允许对一个加密的值取幂,所以我们连同需要加密值的幂次一起加密,分别为: E ( x ) , E ( x 2 ) , E ( x 3 ) E(x),E(x^2),E(x^3) E(x),E(x2),E(x3),所以我们计算加密的多项式如下:
E ( x 3 ) 1 ⋅ E ( x 2 ) − 3 ⋅ E ( x ) 2 = ( g x 3 ) 1 ⋅ ( g x 2 ) − 3 ⋅ ( g x ) 2 = g 1 x 3 ⋅ g − 3 x 2 ⋅ g 2 x = g x 3 − 3 x 2 + 2 x E(x^3)^1 \cdot E(x^2)^{-3} \cdot E(x)^2=(g^{x^3})^1 \cdot(g^{x^2})^{-3} \cdot (g^x)^2=\\ g^{1x^3} \cdot g^{-3x^2} \cdot g^{2x}=g^{x^3-3x^2+2x} E(x3)1E(x2)3E(x)2=(gx3)1(gx2)3(gx)2=g1x3g3x2g2x=gx33x2+2x
通过这样的运算,我们得到了多项式在未知 x x x处的加密求值。这是一个非常强大的机制,而且由于同态性,同一个多项式在加密空间中的加密求值总是相同的。

现在我们更新我们前面介绍的协议版本,对于幂次为 d d d的多项式:

  • 验证者
    • 抽取一个随机值 s s
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值