本文介绍的这些知识点是理解plookup的基础
本文介紹了BLS签名简要过程及其原理,综上可以看出BLS签名过程没有使用随机数,签名结果具有确定性(与RSA,EdDSA类似,不同于ECDSA,Schnorr等)。其构建在具有双线性映射的配对函数之上。
Pedersen基于门限的秘密分享方案实际上采用了Pedersen承诺来构建多项式系数承诺,这一点很容易从对比其他秘密分享方案得出!
目前为止的方案中, 承诺方造假的问题依然存在,仔细研究会发现问题关键在于承诺方P知道计算的输入变量r,z, 这样就有机会构造出新的多项式在r,z处取特定的值。如果P不知道r,z,就不能这样作弊了。于是Kate承诺选择在密文空间中进行计算。
改进的密钥聚合的算法是如何防止伪签名的呢?本质上增加了公钥的可验证性
RSA Accumulator非成员证明,能够进行假如用Accumulator纪录一个UTXO 集合,证明某个UTXO不存在等场景。
与上一篇初步方案相比,Kate承诺实现了多项式的隐藏和部分打开验证,实际上方法1生成的结果在zk-snark项目中称为SRS(structure reference string)或者CRS(common reference string),是承诺方P和验证方V所共有,实际选择曲线配对不是对称的,而是非对称两个群,以后说到具体的项目代码可以看得比较清楚。
本文接着前一篇BLS密钥聚合,讲下原始的聚合密钥签名可能出现的问题,需要一些背景知识铺垫,以Schnorr签名为例来说明,对此不熟悉的可先参考相关文章:Schnorr签名与椭圆曲线
双线性配对特性不仅可以用于签名构造,密钥协商等,还可以实现乘法的同态隐藏和校验。这一点在零知识证明项目中应用很多。另外需要说明的是,并非基于任何椭圆曲线都可以构造配对函数,对于能有效实现双线性对的椭圆曲线,称为pairing-friendly curves,例如BLS12_381曲线。
本文主要介绍plookup算法的思路
本文介绍Sigma协议的交互和非交互性质,简单明了,介绍了零知识证明中常用的Fiat-Shamir变换
本文继续讲sigma协议相关的引申和应用!
本文介绍了Kate承诺在多点披露验证的情况,当然还有一种就是多个多项式在多个不同点打开验证,相信如果本文理解的话,是可以自己推出来的,不在详述了。
盲签名可以看成结合普通签名的变种,实现特殊的应用。RSA方案简单易解,实际代码工程是要有额外一些处理的,可能需要填充等。
Merkle树如果说有其不足之处的话,当叶子节点的数量级非常大,树层级数变多,在打开验证节点需要的merkle树证明路径也就越长,数据量就越大