密码学
文章平均质量分 67
介绍密码学相关算法与实现
孙绿如叶~
这个作者很懒,什么都没留下…
展开
-
Hashing to the Curve
原创 2023-05-12 08:50:23 · 73 阅读 · 0 评论 -
Poseidon Hash
之前我们介绍了zk友好的哈希函数,今天我们介绍另一种zk友好的哈希函数PoseidonPoseidon采用 sponge/squeeze 结构,该结构吸纳万物并生成固定大小的输出,内部有一个状态Ss1s2...st,初始状态为0,状态S可分为外部状态和内部状态,即rrate和ccapacityps:内部状态是不透明的,也不是输出的一部分,这对安全至关重要。原创 2023-04-19 15:01:03 · 753 阅读 · 0 评论 -
BLS签名中与0相关的漏洞
在密码中最有趣的数字是什么?当然是0因为0乘以万物都等于0本文章主要讨论BLS签名中与0相关的漏洞(PS:本文最后简单回顾下BLS签名和BLS聚合签名)原创 2023-03-29 16:17:10 · 341 阅读 · 0 评论 -
海棉结构sponge construction
海绵结构是一类具有有限内部状态的算法,可以将任意有限长的输入消息变成任意长度输出的消息摘要,其结构如下,其中。海棉结构,或称海绵哈希,是当前密码学中一种重要构造结构,如当前sha-3采用的即是海绵结构。函数顺序迭代吸收消息,通常情况下,输入消息不是分组长度的整数倍,因此还要进行填充操作。海绵结构其计算过程主要分为两个部分:abaorbing和squeezing。在squeezing过程中,根据输出长度来输出哈希值,每输出一个值,都要利用。在abaorbing过程中,函数来更新内部状态。原创 2022-11-25 10:31:20 · 1218 阅读 · 0 评论 -
Shamir秘密共享的同态性质
一.加法同态Shamir 秘密共享天然具有加法同态性质,即对于多个(t,n)Shamir 秘密共享生成的秘密份额相加是对应秘密值和的秘密份额,并且此过程中的门限值始终为t(d个t-1次多项式相加其结果依然是t-1次),因此t个对应秘密值和的秘密份额可以恢复对应秘密值。MPC协议之BGW算法中的加法运算巧妙利用了此加法同态性质实现了秘密值和的安全多方计算。初始化阶段d个秘密分发者分别选取t-1多项式,分别为n个参与者进行秘密份额分发:F(x)j=sj+F1jjx+...+F(t−1)jxt−1,j=原创 2022-05-10 16:11:42 · 1496 阅读 · 0 评论 -
基于Pedersen承诺的可验证秘密共享方案: Pedersen VSS
传统(t,n)门限秘密共享方案并未考虑参与者和秘密分发者可能出现的恶意行为:当重构秘密时,不诚实的参与者发送错误的秘密份额当份额分发时,秘密分发者分发错误的秘密份额为解决上述欺骗问题,可验证秘密共享(VSS: VerifiableSecret Sharing)最早于1985年被提出,该方案通过参与方间的交互来验证密钥份额的合法性,随后又提出了非交互式VSS方案 ,但早期的非交互式VSS方案依赖于可信第三方,于是随后又诞生了一批不依赖于第三方的非交互式VSS,Pedersen VSSS即是原创 2022-05-09 18:26:23 · 3238 阅读 · 0 评论 -
基于RSA的t-out-of-n OT协议
在1-out-of-2 不经意传输协议(OT)中,发送方(sender)有两个秘密输入(X0,X1),接收方(receiver)有一个选择比特σ\sigmaσ∈\in∈{0,1},双 方执行完协议之后,receiver得到输出Xσ\sigmaσ,sender不知道receiver的输入比特σ\sigmaσt-out-of-n OT 协议是指sender 将 n 个秘密消息加密后发送给receiver,receiver方只能恢复其中t个消息与1-out-of-2 OT相比,t-out-of-n OT 更具原创 2021-12-22 10:49:52 · 1040 阅读 · 0 评论 -
安全多方计算之BGW算法
BGW协议由Ben-Or等人于1988年提出来的,是早期支持多方安全计算的协议之一,其算法原理是基于Shamir秘密共享机制,BGW协议支持加法、数乘以及乘法运算Shamir秘密共享原理可参考:shamir算法原理Shamir秘密共享算法实现可参考:shmir算法实现基于Shamir秘密共享机制的MPC原理其实很简单,看下面例子:WXYZ分别拥有秘密abcd,现在想秘密计算abcd的和,可以这样做,W将a分成四份,分别将a2/a3/a4发送给XYZ,XYZ执行同样操作;然后W计算a1+b1+c1+d原创 2021-11-19 15:42:17 · 5912 阅读 · 0 评论 -
shamir秘密共享 go语言实现
算法原理参考:shamir 秘密共享大素数p的选取,这里选取的是128bit大素数func prime128Bit() *big.Int { p := big.NewInt(2) p.Exp(p, big.NewInt(127), nil) p.Sub(p, big.NewInt(1)) return p}Share和Polynomial 结构体定义,Share结构体定义了参与者拥有的秘密(x,y), Polynomial结构体定义了多项式,多项式的「知识」即该多项式的系数,知道多原创 2021-11-10 15:59:16 · 1262 阅读 · 3 评论 -
同态加密:Paillier算法
Paillier算法简介本文参考https://zhuanlan.zhihu.com/p/259282416,纠正了一点错误,推理过程更加详细。证明:因为λ=lcm(p−1,q−1)λ = lcm(p-1,q-1)λ=lcm(p−1,q−1)所以p−1∣λ,q−1∣λ=>λ=a(p−1)=b(q−1)p-1|λ ,q-1|λ => λ = a(p-1) = b(q-1)p−1∣λ,q−1∣λ=>λ=a(p−1)=b(q−1)由费马小定理可得gλ=g原创 2021-07-15 15:36:44 · 1807 阅读 · 4 评论 -
Naor-Pinkas茫然传输协议
茫然传输(0T)协议最早在1981年提出,作为密码学领域的一个基础协议,在安全两(多)方计算领域有着广泛应用。 OT协议是一个涉及两个参与方的协议,即发送方S和接收方R。 在最初的1-out-of-2茫然传输()协议中,发送方有两个秘密输入,接收方有一个选择比特。双 方执行完协议之后,接收方得到输出。 安全性要求发送方不能知道接收方的选择信息,且接收方仅得到自己选择的值。 更一般性,可扩展为1-out-of-n()和尼k-out-of-n(...原创 2021-01-28 14:48:50 · 1474 阅读 · 1 评论 -
Shamir 门限秘密共享
Shamir 门限秘密共享 1979年,Shamir[1]第一次提出了基于拉格朗日插值法的秘密共享策略。Shamir的方法实现简单,且为完备理想方案,是目前研究与应用最广泛的秘密共享策略。 具体实现如下: 字密钥生成阶段 步骤1:分发者随机构造t-1次多项式,其中秘密, 步骤2: 分发者随机选取n个元素,并计算 密钥分发 ...原创 2021-01-26 15:16:23 · 3423 阅读 · 4 评论