本文介绍Sigma协议的交互和非交互性质,简单明了,介绍了零知识证明中常用的Fiat-Shamir变换
RSA Accumulator非成员证明,能够进行假如用Accumulator纪录一个UTXO 集合,证明某个UTXO不存在等场景。
本文描述了累加器的概念和性质,具体说明RSA累加器实现过程。可以看出Accumulator具有一些比merkle证明有优势的地方,比如聚合证明,证明大小不随着集合元素的增加而增加等。 实际应用实现中RSA累加器还会有一些前置处理操作,比如将原始数据映射到选定素数域上的值等。
Merkle树如果说有其不足之处的话,当叶子节点的数量级非常大,树层级数变多,在打开验证节点需要的merkle树证明路径也就越长,数据量就越大
本文介绍了Kate承诺在多点披露验证的情况,当然还有一种就是多个多项式在多个不同点打开验证,相信如果本文理解的话,是可以自己推出来的,不在详述了。
与上一篇初步方案相比,Kate承诺实现了多项式的隐藏和部分打开验证,实际上方法1生成的结果在zk-snark项目中称为SRS(structure reference string)或者CRS(common reference string),是承诺方P和验证方V所共有,实际选择曲线配对不是对称的,而是非对称两个群,以后说到具体的项目代码可以看得比较清楚。
目前为止的方案中, 承诺方造假的问题依然存在,仔细研究会发现问题关键在于承诺方P知道计算的输入变量r,z, 这样就有机会构造出新的多项式在r,z处取特定的值。如果P不知道r,z,就不能这样作弊了。于是Kate承诺选择在密文空间中进行计算。
Pedersen基于门限的秘密分享方案实际上采用了Pedersen承诺来构建多项式系数承诺,这一点很容易从对比其他秘密分享方案得出!
Pedersen承诺产生方式,有些类似加密,签名之类的算法。但是,作为密码学承诺重在“承诺”,并不提供解密算法,即如果只有r,无法有效地计算出隐私数据v。
本文介绍密码学承诺的含义及性质,并对哈希承诺做了说明,关于hash函数的内在机制实际是比较复杂的,我们以黑盒的角度来学习了解它的性质,在区块链&密码学中,哈希函数占据了基础且重要的位置。 比如区块链中常用的sha256,keccak等哈希算法。
不经意传输(Oblivious transfer)或者译为茫然传输是密码学中的一类协议,缩写为OT,实现了发送方将潜在的许多信息中的一个传递给接收方,但对接收方所接收信息保持未知状态。
双线性配对特性不仅可以用于签名构造,密钥协商等,还可以实现乘法的同态隐藏和校验。这一点在零知识证明项目中应用很多。另外需要说明的是,并非基于任何椭圆曲线都可以构造配对函数,对于能有效实现双线性对的椭圆曲线,称为pairing-friendly curves,例如BLS12_381曲线。
本文接着前一篇BLS密钥聚合,讲下原始的聚合密钥签名可能出现的问题,需要一些背景知识铺垫,以Schnorr签名为例来说明,对此不熟悉的可先参考相关文章:Schnorr签名与椭圆曲线
改进的密钥聚合的算法是如何防止伪签名的呢?本质上增加了公钥的可验证性
本文介紹了BLS签名简要过程及其原理,综上可以看出BLS签名过程没有使用随机数,签名结果具有确定性(与RSA,EdDSA类似,不同于ECDSA,Schnorr等)。其构建在具有双线性映射的配对函数之上。
本文介绍参与者少于门限值t时的方案,实质上是通过提高c的值来改变门限值。 需要说明的是后m个节点虽然也参与计算了,但不是和前k节点一样(生成秘密随机数,计算准备多项式),属于被动参与,不会影响最终结果。
动态秘密共享方案可有效提高长周期密钥的安全性。本文介绍了典型的Amir Herzberg实现方案,默认情况下所有参与者都参与,恢复阶段只要大于或等于门限t个参与能够周期性地更新自己的密钥部分,就能达到目的,本质上是 n 个参与者协商了一个常数项为零的 t-1 次多项式!
Feldman的方案提供了可验证的密钥分享机制,验证子密钥的正确性的关键是密钥分发者公布了承诺信息$(c_i)$,$c_i$ 绑定了多项式系数,从而使得每个参与者收到的承诺都来自同一个多项式
密钥分享技术本质上是单一密钥的拆分管理,使用n份冗余储存,保证m份分片确定的秘密。这个秘密可以是私钥,也可以扩展成其他任意信息,如资产共同管理,谜语答案,秘密遗嘱等。
本文介绍了比特币使用的多签方式,多钱类型地址 + 交易多个签名。但是如果参与者较多的话,签名数据就会倍增,占用很多存储空间,而Schnorr聚合签名则解决了这个问题,无论多少参与者,最后聚合成一个签名,跟普通的签名无样。
扫一扫 - 使用登链小程序
41 篇文章,410 学分
74 篇文章,302 学分
30 篇文章,260 学分
158 篇文章,165 学分
11 篇文章,164 学分