零知识证明密码学基础
强烈推荐新火科技的公开课!,本文只是对知识的简单罗列,细节教学点下方链接!
分享一下在学习过程中遇到的密码学组件(一)
强烈推荐新火科技的公开课!,本文只是对知识的简单罗列,细节教学点下方链接!
新火公开课
HASH函数
将任意长度的消息映射为一个固定长度(256bit)的随机数,此数被称为消息摘要
性质
[1] 单向性:已知哈希值 Y,无法在多项式时间内计算出哈希原象 X;
[2] 弱抗碰撞性:已知(X, Y),无法在多项式时间找到 X’,使得 Y=Hash(X’);
[3] 强抗碰撞性:攻击者无法寻找X ,X‘,满足X!=X’ ,hash (X ) = hash (X) ;
[4] 压缩性:通常是将 512bit 的数据压缩为 256bit;不足 512bit 则填充。
[5] 随机性:输出的 Y 是 256bit 的 0/1 字符串是随机的;
[6] 可重复性:如果输入 x1=x2,则输出的哈希值 Y1=Y2。
SHA3 - blake
由瑞士的 Aumasson 等人设计,采用了 HAIFA 算法迭代结构,其中的压缩算法基于 ChaCha流密码,内部结构采用 Davies-Meyer 模式,在压缩函数中,采用模余 322 加法运算与 XOR运算,实现计算的非线性。针对 MD5 结构弱点,BLAKE 算法的压缩函数中加入随机盐(salt)与计数器整个算法具有良好安全性,且是主流哈希算法中速度最快的。
SHA3-Keccak
采用了海绵结构,在预处理后进入吸入阶段,即将x传入算法并处理,然后进入挤出节点,产生固定长度的输出。
公钥加密与数字签名
群
- 定义:一个集合G,满足
- 非空
- 二元运算:能够进行加法或者乘法运算。
- 封闭性: 经过运算后的结果还在集合中
- 结合律
- 单位元e:加法情况下 a+e=e+a=a,乘法情况下:ae=ea=a。
- 逆元:每个元素 a 都有逆元,记为 a ^-1,
(1)加法情况下:a+ a^ -1= a^-1+a=e,
(2)乘法情况下:a * a^-1= a^-1*a=e
-
生成元: 指一个群中能够生成整个群的元素。生成元的作用是保持群的结构不变,也就是说,如果我们对群中的元素进行一些操作(如加法、乘法等),只要操作中不改变生成元的值,那么最终得到的结果仍然是群中的元素。
-
满足交换律的群也叫做阿贝尔群
公钥加密
- 公钥PK = g^ SK,基于离散对数困难(DL)问题
- 离散对数困难问题(DL): 已知生成元g和公钥PK,不能在多项式时间内求私钥sk
- 计算性 Diffie-Hellman 困难问题(CDH):(离散对数困难问题的变形),已知g,g^a, gb,求gab是困难的。
椭圆曲线群
椭圆曲线群与素数群,几乎相同,仅仅是底层表达细节不一样,导致计算速度不一样。在相同的安全性等级,需要的私钥长度更小。
公钥加密
ELGAMAL加密
- 基于素数群 的Elagamal加密
- 基于素数群的Hashed EIGamal加密
3. 基于椭圆曲线群的 ElGamal 加密
更多的加密请看新火给的文档
数字签名
双线性映射
BLS签名
BLS聚合签名
BLS批量验证
BBRO签名
ZSS签名
BB短签名
Schnorr签名
实际上:零知识证明就是数字签名的进一步扩展。
如果扩展可忽略,则零知识证明≈数字签名
如果扩展非常多,则零知识证明就是 zkSNARK,成为了一个新工具。
EdDSA 签名算法
门罗币环签名
验证的时候顺序是4,5,1,2,3 所以被称为环签名!
更多推荐
所有评论(0)