参考文献:

  1. 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.
  2. 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,让其他诚实参与者无法恢复出正确的秘密。

我们额外要求:

  1. 在 Share 阶段,参与者可以验证 dealer 通过隐私信道发放的 shares 是否有效。
  2. 在 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):

  1. EncryptEncryptEncrypt是加法同态的加密方案,令Y←Encrypt(α)Y \leftarrow Encrypt(\alpha)Y←Encrypt(α),其中α\alphaα是秘密

  2. (Share,Recover)(Share,Recover)(Share,Recover)是一个(n,t,u)−(n,t,u)-(n,t,u)−秘密共享方案

    1. (α1,⋯,αn)←Share(α)(\alpha_1,\cdots,\alpha_n) \leftarrow Share(\alpha)(α1​,⋯,αn​)←Share(α)
    2. α←Recover(αi1,⋯,αiu)I⊆[n]\alpha \leftarrow Recover(\alpha_{i_1},\cdots,\alpha_{i_u})_{I \subseteq [n]}α←Recover(αi1​​,⋯,αiu​​)I⊆[n]​
  3. 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 阶段

  1. 选定素域乘法群或者椭圆曲线加法群GGG,其上的离散对数问题是困难的(注意,剩余类加法群的离散对数问题是简单的)。令ggg是生成元。

  2. 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∑t​ai​xi
    其中常数项为a0=αa_0 = \alphaa0​=α

  3. 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​

    通过广播信道发送给所有参与者。

  4. 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

  5. 每个参与者都可以检验自己的 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 阶段

  1. 足够多的参与者通过广播信道披露自己的 shares,(xj,f(xj))(x_j,f(x_j))(xj​,f(xj​))

  2. 每个参与者都自行验证这些 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​))

  3. 每个参与者选出至少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((nlog⁡n+k)⋅nklog⁡k)O((n\log n+k)\cdot nk\log k)O((nlogn+k)⋅nklogk),其中kkk是安全参数。

另外,对于通信信道的假设也可以弱化:

  1. 隐私信道:点对点隐私信道的花费很大。如果事先进行密钥交换,那么任意一个完整网络(complete network,任意两点之间有通路即可)就够了,发送给jjj的 share 被加密。
  2. 广播信道:广播信道这个假设过强。利用十字军协议(拜占庭协议的弱化版),那么也不再需要广播信道,不过此时只有t<n/3t<n/3t<n/3。如果使用签名消息,那么可以再提升回t<n/2t < n/2t<n/2。

非交互 VSS 的用途

  1. 在任意完整网络上,搭建起同步广播信道:第rrr轮消息被 Share 给每个人后,再一起 Recover 同时得到这个消息。
  2. 每个参与者都可以并行地充当 dealer,并行地分发秘密。
  3. 已经证明,在非广播信道上运行非交互 VSS,可以实现快速的常数时间拜占庭协议

Verifiable Secret Sharing相关推荐

  1. verifiable secret sharing可验证的秘密共享

    1. secret sharing秘密共享 1.1 secret sharing definition 在Adi Shamir 1979年论文<How to share a secret> ...

  2. 私钥分割 — Shamir Secret Sharing

    在做区块链应用的时候,最常碰到的一个问题就是,怎么保管私钥,怎么让使用者方便,但又同时是安全的.第一个想法就是备份密钥(不论是passphrase/keystore/私钥),但是如果把使用者密钥(加密 ...

  3. SECRET SHARING STEP BY STEP

    In this blog article I will show the different types of secret sharing methods especially the common ...

  4. Additive secret sharing 加性秘密共享(加法,乘法,向量乘法)

    目录 前言 Additive secret sharing Secure addition Secure multiplication Secure vectorization 前言 本文前一部分主要 ...

  5. 秘密分享(Secret Sharing)

    秘密共享(Secret Sharing,SS)是1979年由Shamir和Blakey提出的,并在此之后40多年秘密共享被广泛认识和深入的研究. 秘密共享著名的(t,n)阈值方案如图所示:设秘密s被分 ...

  6. A Verifiable Secret Shuffle of Homomorphic Encryptions学习笔记

    A Verifiable Secret Shuffle of Homomorphic Encryptions为Jens Groth 2010年论文,提出了多个算法: 基于a commitment co ...

  7. 密钥分享Secret Sharing介绍

    上一篇文章介绍了混淆电路(Garbled Circuit),参与双方通过传输加密电路实现安全计算.理论上各种计算都可以用这种方法实现.对于各种纯粹由位运算(就是AND.OR.XOR这些)组成的算法(如 ...

  8. [3th of series ABE] Shamir‘s Secret Sharing

    Abstract This blog is going to discuss Shamir's Secret Sharing Scheme. 1. Polynomial Interpolation 给 ...

  9. 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 ...

最新文章

  1. 如何为项目配置网关并且测试、实战
  2. H264分辨率解码概述
  3. PyCairo 后端
  4. MySQL8的inodb参数设置_MySQL8.0自适应参数innodb_dedicated_server
  5. HH SaaS电商系统的商品销售分区功能模块设计
  6. axis2接收json_AXIS2 如何返回JSON数据
  7. 关于API和SDK的理解
  8. web.xml 配置
  9. PSU更新之后是否更改数据库版本号呢
  10. 每天一个linux命令:du 与 df
  11. 转:HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)...
  12. Android权限管理 1
  13. 解决微信扫码下载的两个方法
  14. Hoeffding不等式的证明
  15. 产品体验报告:百度贴吧
  16. 9008 能 解锁BL_【Android取证】一部锤子手机引起的解锁事件
  17. 行思工作室官网移动端前端开发笔记
  18. 手把手教你选Google Play ASO关键词(附实用工具)
  19. vue uni-app 裁剪图片(裁剪头像)插件vue-image-cropper
  20. SandHook 第三弹 - 性能优化 Xposed 模块 阻止 VM Inline

热门文章

  1. css3宽度变大动画_14种动画让你轻松掌握各种流量计工作原理
  2. 计算机应用技术综评,VB学生综合测评系统--毕业论文.doc
  3. 混子科研狗 组会日记(2022.3.16)
  4. Unity UI UGUI
  5. 真实的生活比戏剧更残酷
  6. 新浪微博id的62进制转换
  7. anndroid6.0锁屏壁纸
  8. GStreamer编程笔记
  9. VBA 将Excel工作簿中所有表格进行一键排版
  10. 陕师大计算机考研856真题,2017年陕西师范大学计算机科学学院856数据结构与程序设计考研题库...