原标题:用小学数学,了解Pedersen Commitment
导言
还记得高中数学老师的口诀么?为了让学生能记下冗杂的数学公式,高中数学老师们费尽心机为咱们想出了许多“名垂青史”又朗朗上口的口诀:
奇变偶不变,符号看象限
一正、二定、三持平
正余余正符号同,余余正正符号异
……
可是…信任大部分同学都和我相同,高中数学除了口诀其他什么都记不得,以至于作业后看到杂乱的数学公式,一时间脑袋里只需数学老师的魔性口诀在回旋,想要了解数学公式背面的逻辑简直是天方夜谭,学习根据密码学的各种区块链技能时也只能望文兴叹,慨叹书到用时方恨少。
那么有没有一种密码学技能,只需简简略单的加减乘除法等小学数学常识也能看懂呢?当然有,这个技能便是Confidential Transaction与Mimblewimble的组件之一——Pedersen Commmitment(佩德森许诺)。
一些数学规矩
在解说Pedersen Commitment之前,咱们要对其间所用的数学规矩进行界说,定心,一切的数学规矩都是小学生也能看懂的。佩德森许诺满意以下界说:
1.等式两头持平。
2.结合律。
3.交流律。
4.因式分解(除法)很难,至少相对加法乘法而言
为了让小学生也能看懂,咱们对上述界说进行举例说明:
等式两头持平: 假如咱们咱们都知道5*3=5+5+5=15,以及25-10=15,那么咱们也能够很简略的得出5*3=5+5+5=15-10=30这个成果。
结合律: 关于2*3*4=24这个比如,得出(2*3)*4=2*(3*4)=24也是很简略的;关于加减法也是同理。
交流律: 已知2+3+4=9,咱们能知道2+(3+4)=(2+3)+4=9,乘法则是2*3=3*2=6
因式分解很难 :关于21*11,得出其成果为231是垂手可得的;但假如只知道231这项成果,要求出它是哪两个数字相乘,难度是直线上升的,不管对人仍是核算机而言,因式分解都比乘法或加法要困难许多。
除了了解上述界说,咱们还要具有一点点椭圆曲线密码学(ECC)的相关常识,只需知道椭圆曲线满意上述规矩,而且因式分解适当困难即可(又称为离散对数问题),其他内容网络上不计其数,这儿就不再赘述了。
什么是Pedersen Commitment?
Pedersen Commitment是密码学中许诺计划的一种,于1992年被Torben Pryds Pedersen在“Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing”一文中提出。现在Pedersen Commitment首要调配椭圆曲线密码学运用,其中心能够用一项公式表达:
C=r*G+v*H
上述公式中,C为许诺值,G、H为特定椭圆曲线上的生成点,r代表着盲因子,v则代表着原始信息。因为G、H为特定椭圆曲线上的生成点,所以r*G、v*H都能够看作是相应曲线上的公钥(r、v同理能够看作私钥),因为椭圆曲线密码学的离散对数问题,很难解出私钥内容。别的必需求分外留意的是上述一切的数值都归于整数集(都是整数)。
在之前的文章中,咱们说到了许诺计划首要意图是供给“针对两头的信息交流计划”,经过躲藏关键值来防止信息走漏。Pedersen Commitment也不破例,但不同于一般的许诺计划,其能够经过不揭穿相关信息来到达承认两头是否具有某一个相同的值。让咱们持续举例说明:
小诸和小周都想在赤壁之战运用“火攻”计谋,但互相不清楚对方是否知道“火攻”这两字信息,他们又不期望“火攻”被其他人知道。为了承认他们互相都有这项信息,他们进行了以下操作:
1、小诸和小周决议运用Pedersen Commitment计划,公式互相都知道,并敲定了G、H两项椭圆曲线生成点的值,上述内容都是对外揭露的。
2、小诸随机生成了一个数字作为自己的r值,这儿假定他运用了31这个数字;同理小周也生成了自己的r值,为50。
3、小诸和小周核算自己相应的许诺值,小诸的许诺值=31*G+火攻*H;小周的许诺值=50*G+火攻*H。
4、小诸和小周互相交流自己的许诺值,这一步尽管许诺值对外揭露了,但因为椭圆曲线的特性,其他人想经过许诺值核算出“火攻”和r值的内容是十分困难的。
5、小诸和小周互相核算许诺值的差,即:小诸许诺值-小周许诺值=(31*G+火攻*H)-(50*G+火攻*H)。
之前说到,椭圆曲线满意了交流律,结合律,等式两头持平等规矩,根据椭圆曲线的Pedersen Comitment相同也契合上述规矩,所以小诸和小周许诺值的差能够写作:31*G+火攻*H-50*G-火攻*H=(31-50)*G+(火攻-火攻)*H,因为火攻-火攻=0(这儿假定火攻转化为了相应数字),所以这项等式能够进一步简化为:小诸-小周=(31-50)*G。
6、小诸和小周此刻能够再一次进行挑选揭露二者许诺值的差,假如差值是彻底持平的,他们互相就能够确认对方知道了“火攻”这个信息;反之假如差值是不持平,也就代表着两头有一方没有具有正确的信息。
看见了吗?整个核算进程中没有杂乱的公式,两头只需经过加减乘法和简略的等式两头持平准则,即可验证互相的信息是否相同。当然,在实践使用中为了能够更好的确保隐私,G与H的值都是十分大的数字,许诺的安全性也由此转移至椭圆曲线密码学的离散对数问题上。即便攻击者知晓了许诺值,现在想要经过许诺值解出信息几乎是不可能的。
它能用在哪些地方呢?
Pedersen Commitment同其他许诺计划相同可拿来躲藏特定的信息,而且假如确认互相的信息正确无误后,Pedersen Commitment还能够省掉传统许诺计划的揭盲进程,这种特性令其比较于许诺计划而言更适合需求匿名买卖的加密钱银场景。
正如最初所言,Confidential Transaction和Mimblewimble协议都运用了Pedersen Commitment计划,Monero、Zcash、Grin与Beam等项目都或多或少的选用了Pedersen Commitment,当然光凭许诺是不能满意隐私需求的,这些项目都根据Pedersen Commitment进行了或多或少的改善,例如Grin和Beam所用的Mimblewimble协议,除了选用许诺以外,还选用了Cut-through与Coin-join等技能;Zcash还运用了Pedersen Hash与很多的ZK-SNARKs相关技能。
但总的来说,考虑到使用难度,UTXO结构比较账户结构更适合以Pedersen Commitment来施行匿名计划。
关于选用了UTXO结构的Wisdom Chain而言,Pedersen Commitment将更简略布置和施行,再加上可验证的编程规矩,将匿名计划作为规矩界说至业务中后不光能够随时调用,Pedersen Commitment自身简略易用的特性还能将其改造以适用不同的环境。信任跟着Wisdom Chain的不断进步,咱们将能看到Pedersen Commitment在Wisdom Chain上大展身手。
责任编辑: