Verifiable Secret Sharing
参考文献:
- Feldman P. A practical scheme for non-interactive verifiable secret sharing[C]//28th Annual Symposium on Foundations of Computer Science (sfcs 1987). IEEE, 1987: 427-438.
- Shamir Secret Sharing:https://blog.csdn.net/weixin_44885334/article/details/124640944
文章目录
- Verifiable Secret Sharing
- VSS定义
- Feldman(1987)
- 非交互 VSS 的用途
Verifiable Secret Sharing
(n,t,u)−(n,t,u)-(n,t,u)−秘密共享方案:一共nnn个参与方,任意的n′≤tn'\le tn′≤t个参与者无法恢复秘密,任意的n′≥un' \ge un′≥u个诚实参与者可以正确恢复秘密。
但是,原始的 SS 协议(比如 Shamir SS)在恢复秘密时,如果恶意参与者发送了错误的share,那么诚实参与者将几乎不会计算出正确的秘密。因为他们无法区分出正确的shares。
如果让秘密的分发者(记做 dealer)在share上签名,那么是否可以解决问题?不能。因为 dealer 也是 SS 协议的参与者,如果他被入侵了,那么就可以伪造出错误的share,让其他诚实参与者无法恢复出正确的秘密。
我们额外要求:
- 在 Share 阶段,参与者可以验证 dealer 通过隐私信道发放的 shares 是否有效。
- 在 Recover 阶段,参与者可以 check 其他参与者通过广播信道揭露的 shares 的正确性。
另外,交互式VSS协议的通信量过大,不适用于某些信道,并且无法并行。非交互式VSS:在 Share 阶段,只有一个处理器(叫做leader)发送消息,可以执行数轮通信。
VSS定义
(n,t,u)−(n,t,u)-(n,t,u)−非交互式可验证秘密共享协议,是一组概率多项式时间的算法(Share,Recover,Check,Encrypt)(Share,Recover,Check,Encrypt)(Share,Recover,Check,Encrypt):
EncryptEncryptEncrypt是加法同态的加密方案,令Y←Encrypt(α)Y \leftarrow Encrypt(\alpha)Y←Encrypt(α),其中α\alphaα是秘密
(Share,Recover)(Share,Recover)(Share,Recover)是一个(n,t,u)−(n,t,u)-(n,t,u)−秘密共享方案
- (α1,⋯,αn)←Share(α)(\alpha_1,\cdots,\alpha_n) \leftarrow Share(\alpha)(α1,⋯,αn)←Share(α)
- α←Recover(αi1,⋯,αiu)I⊆[n]\alpha \leftarrow Recover(\alpha_{i_1},\cdots,\alpha_{i_u})_{I \subseteq [n]}α←Recover(αi1,⋯,αiu)I⊆[n]
CheckCheckCheck是利用密文同态性质的校验算法,任意的参与者jjj都可以检验
Check(Y,j,αj)=1⟺Y=Encrypt(α)∧(⋯,αj,⋯)=Share(α)Check(Y,j,\alpha_j) = 1 \iff Y = Encrypt(\alpha) \wedge (\cdots,\alpha_j,\cdots) = Share(\alpha) Check(Y,j,αj)=1⟺Y=Encrypt(α)∧(⋯,αj,⋯)=Share(α)
注意,ShareShareShare中隐含着EncryptEncryptEncrypt的调用,YYY是每个αj\alpha_jαj的一部分。
Feldman(1987)
Feldman 基于 Shamir 方案,添加了基于离散对数的同态加法加密算法,给出了第一个非交互式的 VSS 方案。
原始论文为了用模拟器证明安全性,对方案的描述十分复杂。下面结合其他介绍VSS的文章,给出更简洁的描述。
Share 阶段:
选定素域乘法群或者椭圆曲线加法群GGG,其上的离散对数问题是困难的(注意,剩余类加法群的离散对数问题是简单的)。令ggg是生成元。
dealer iii 拥有秘密α\alphaα,利用 Shamir 方案随机选择ttt次(注意不同表述里的ttt是否取等)多项式
f(x)=a0+∑i=1taixif(x) = a_0 + \sum_{i=1}^{t} a_i x^i f(x)=a0+i=1∑taixi
其中常数项为a0=αa_0 = \alphaa0=αdealer 对它的t+1t+1t+1个系数加密,使用的加密算法为
ga←Encrypt(a)g^a \leftarrow Encrypt(a) ga←Encrypt(a)它是明文加法群和密文乘法群之间的群同态,单向性基于离散对数问题。
计算多项式系数的密文(可以叫做承诺,commitment),
c0=ga0,c1=ga1,⋯,ct=gatc_0 = g^{a_0},c_1 = g^{a_1}, \cdots, c_{t} = g^{a_t} c0=ga0,c1=ga1,⋯,ct=gat通过广播信道发送给所有参与者。
dealer 利用 Shamir 方案,生成 shares,
{(x1,f(x1)),⋯,(xn,f(xn))}←Share(α)\{(x_1,f(x_1)),\cdots,(x_n,f(x_n))\} \leftarrow Share(\alpha) {(x1,f(x1)),⋯,(xn,f(xn))}←Share(α)然后通过隐私信道,将αj:=(xj,f(xj))\alpha_j:=(x_j,f(x_j))αj:=(xj,f(xj))发送给参与者jjj
每个参与者都可以检验自己的 share 的有效性,
c0⋅c1xj⋅c2xj2⋅⋯⋅ctxjt==Encrypt(f(xj))c_0 \cdot c_1^{x_j} \cdot c_2^{x_j^2} \cdot \cdots \cdot c_t^{x_j^t} == Encrypt(f(x_j)) c0⋅c1xj⋅c2xj2⋅⋯⋅ctxjt==Encrypt(f(xj))
Recover 阶段:
足够多的参与者通过广播信道披露自己的 shares,(xj,f(xj))(x_j,f(x_j))(xj,f(xj))
每个参与者都自行验证这些 shares 的有效性,
c0⋅c1xj⋅c2xj2⋅⋯⋅ctxjt==Encrypt(f(xj))c_0 \cdot c_1^{x_j} \cdot c_2^{x_j^2} \cdot \cdots \cdot c_t^{x_j^t} == Encrypt(f(x_j)) c0⋅c1xj⋅c2xj2⋅⋯⋅ctxjt==Encrypt(f(xj))每个参与者选出至少t+1t+1t+1个有效的 shares,利用 Shamir 方案的拉普拉斯插值算法,恢复出秘密α\alphaα
易知,只要t+u≤nt+u \le nt+u≤n那么就可以 Recover 秘密,Shamir 协议中u=t+1u=t+1u=t+1。因此,Feldman 协议可以抵挡至多(n−1)/2(n-1)/2(n−1)/2个恶意敌手的攻击。通信复杂度为O(nk)O(nk)O(nk),计算复杂度为O((nlogn+k)⋅nklogk)O((n\log n+k)\cdot nk\log k)O((nlogn+k)⋅nklogk),其中kkk是安全参数。
另外,对于通信信道的假设也可以弱化:
- 隐私信道:点对点隐私信道的花费很大。如果事先进行密钥交换,那么任意一个完整网络(complete network,任意两点之间有通路即可)就够了,发送给jjj的 share 被加密。
- 广播信道:广播信道这个假设过强。利用十字军协议(拜占庭协议的弱化版),那么也不再需要广播信道,不过此时只有t<n/3t<n/3t<n/3。如果使用签名消息,那么可以再提升回t<n/2t < n/2t<n/2。
非交互 VSS 的用途
- 在任意完整网络上,搭建起同步广播信道:第rrr轮消息被 Share 给每个人后,再一起 Recover 同时得到这个消息。
- 每个参与者都可以并行地充当 dealer,并行地分发秘密。
- 已经证明,在非广播信道上运行非交互 VSS,可以实现快速的常数时间拜占庭协议。
Verifiable Secret Sharing相关推荐
- verifiable secret sharing可验证的秘密共享
1. secret sharing秘密共享 1.1 secret sharing definition 在Adi Shamir 1979年论文<How to share a secret> ...
- 私钥分割 — Shamir Secret Sharing
在做区块链应用的时候,最常碰到的一个问题就是,怎么保管私钥,怎么让使用者方便,但又同时是安全的.第一个想法就是备份密钥(不论是passphrase/keystore/私钥),但是如果把使用者密钥(加密 ...
- SECRET SHARING STEP BY STEP
In this blog article I will show the different types of secret sharing methods especially the common ...
- Additive secret sharing 加性秘密共享(加法,乘法,向量乘法)
目录 前言 Additive secret sharing Secure addition Secure multiplication Secure vectorization 前言 本文前一部分主要 ...
- 秘密分享(Secret Sharing)
秘密共享(Secret Sharing,SS)是1979年由Shamir和Blakey提出的,并在此之后40多年秘密共享被广泛认识和深入的研究. 秘密共享著名的(t,n)阈值方案如图所示:设秘密s被分 ...
- A Verifiable Secret Shuffle of Homomorphic Encryptions学习笔记
A Verifiable Secret Shuffle of Homomorphic Encryptions为Jens Groth 2010年论文,提出了多个算法: 基于a commitment co ...
- 密钥分享Secret Sharing介绍
上一篇文章介绍了混淆电路(Garbled Circuit),参与双方通过传输加密电路实现安全计算.理论上各种计算都可以用这种方法实现.对于各种纯粹由位运算(就是AND.OR.XOR这些)组成的算法(如 ...
- [3th of series ABE] Shamir‘s Secret Sharing
Abstract This blog is going to discuss Shamir's Secret Sharing Scheme. 1. Polynomial Interpolation 给 ...
- Swap 2 Secrets via Homomorphic Properties of Shamir Secret Sharing
The Description of the problem I have 2 secrets denoted as s 1 , s 2 s_1, s_2 s1,s2 and they are i ...
最新文章
- 如何为项目配置网关并且测试、实战
- H264分辨率解码概述
- PyCairo 后端
- MySQL8的inodb参数设置_MySQL8.0自适应参数innodb_dedicated_server
- HH SaaS电商系统的商品销售分区功能模块设计
- axis2接收json_AXIS2 如何返回JSON数据
- 关于API和SDK的理解
- web.xml 配置
- PSU更新之后是否更改数据库版本号呢
- 每天一个linux命令:du 与 df
- 转:HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)...
- Android权限管理 1
- 解决微信扫码下载的两个方法
- Hoeffding不等式的证明
- 产品体验报告:百度贴吧
- 9008 能 解锁BL_【Android取证】一部锤子手机引起的解锁事件
- 行思工作室官网移动端前端开发笔记
- 手把手教你选Google Play ASO关键词(附实用工具)
- vue uni-app 裁剪图片(裁剪头像)插件vue-image-cropper
- SandHook 第三弹 - 性能优化 Xposed 模块 阻止 VM Inline