基于FATE的可验证秘密分享算法详解及应用场景分享:学习
内容来自“光大科技-基于FATE的可验证秘密分享算法详解及应用场景分享”
理论
基于Shamir的秘密共享方案,通过多项式插值实现。
加入可验证功能,即发送多项式系数的模数给对方作为承诺,对方通过分享值和承诺去进行验证!









秘密共享
以下内容转载自“秘密共享—隐私计算和区块链共识中的榫卯”并加入一些自己的笔记。
什么是秘密共享?
秘密共享(Secret Sharing,SS)是1979年由Shamir和Blakey提出的,并在此之后40多年秘密共享被广泛认识和深入的研究。
秘密共享著名的(t,n)阈值方案如图1所示:

图1秘密分享的结构
秘密分享分为:分享和重构两部分:
设秘密\(s\)被分成\(n\)个部分,每一部分被称为一个子秘密并由一个持有者持有,并且大于等于\(t\)个参与者所持有的子秘密可以重构(Reconstruction)秘密\(s\),而少于\(t\)个参与者所持有的子秘密无法重构秘密并且无法获得秘密\(s\)的任何信息。
实现方式
秘密共享方案的三种实现技术:
- 基于超平面几何的秘密共享,包括Blakley方案和Brickell方案;
- 基于插值多项式的秘密共享,包括经典的Shamir阈值秘密共享方案;
- Mignotte,Asmuth & Bloom提出的基于中国剩余定理的秘密共享;
基于中国剩余定理的秘密共享是在环上的运算,而Blakley & Brickell的超平面几何秘密共享方案和Shamir阈值秘密共享方案是在有限域上的运算,所以基于中国剩余定理的秘密共享和其他两个秘密共享的理论基础不尽一样。
Blakley和Brickell的超平面几何方案
来自【Blakley, G.R. Safeguarding cryptographic keys (PDF). in 1979 International Workshop on Managing Requirements Knowledge-1979】
1、Blakley的超平面几何分享
Blakley通过多维欧几里得空间来构造阈值秘密共享机制。任何\(t\)非平行\(t-1\)维超几何平面在一个t维空间中交于一点,秘密通过编码在坐标中完成秘密共享。如图3所示的三维欧几里得空间中的三个平面交于一点,秘密可以嵌入到交点的某一个坐标中。

图2 秘密分发的2维超几何平面
Blakley方案的秘密分发和秘密重构过程如下:
(1)秘密分发
构造\(n\)个\(t\)维空间中的\(t-1\)维超几何平面分发给\(n\)个参与者,其中\(n>=t\);图2是一个3维空间中的2维平面生成,一个秘密拥有者Dealer通过空间中的一个已知点\(P\)(秘密\(s\)是\(P\)的一个坐标值)的条件下生成任意多个过该点的平面。
(2)秘密重构
n个参与者中的t个参与者可以重构秘密s。如图3:任意3个参与者即可实现对共享点(包含秘密s)的重构,即三个非平行平面的交点。

图3 三维欧几里得空间中的秘密重构
在秘密共享方案中,信息率是度量秘密共享方案安全性和效率的一个重要指标。所谓秘密共享的信息率可以简单理解为秘密的信息规模与每个子秘密的信息规模的比率。
Brickell的向量方法(矢量方法)相比于Blakley超平面几何的方法能够有效提高信息率。
2、Brickell的向量分享
Brickell的秘密共享方案采用向量方法,一个秘密拥有者Dealer把秘密\(s\)嵌入到一个向量中,再通过一个矩阵把秘密共享为\(n\)个子秘密分发给\(n\)个参与者,具体方法如下:
(1)秘密分发
选择秘密\(s\)和随机向量\((y2,y3, …… ,yt)\), 生成一个\(n*t\)矩阵\(M\),\(M\)有\(n\)行,每行记为\(Mi\),任意\(t\)个行向量都是线性无关的。秘密份额为\((s1,s2,……,sn)\),每个份额是行向量\(Mi\)和列向量\((s,y2,y3, …… ,yt)\)的乘积。即\(si = Mi* (s,y2,y3, …… ,yt)\)
(2)秘密重构

其中\(M\)是一个公开参数,每行对应于一个参与者的子秘密\(si\),任意\(t\)个参与者对应矩阵\(M\)的\(t\)个行向量,这\(t\)个向量组成一个\(t*t\)的方阵,根据前面的要求任意\(t\)个行向量线性无关所以此方阵满秩,所以可以有效的求解到\((ω1,ω2,……,ωt)\)使得:

也就是任意\(t\)个\(M\)矩阵的行向量可以张成\((1,0,……,0)\)然后通过如下计算可以重构\(s\):

Shamir的阈值秘密共享方案
来自【Shamir, A., how to share a secret. 1979】
Shamir秘密共享是目前应用最为广泛的阈值秘密共享技术,Shamir的方案的秘密分发和秘密重构过程如下:
(1)秘密分发
Dealer要共享一个秘密\(s\),分给\(n\)个参与者,其中任意\(t\)个参与者可以重构秘密\(s\),寻找一个\(t-1\)次多项式:

其中\(a_0=s\),Dealer为每一个参与者任意选择非0的\(xi\)计算\(si=f(xi)\),把\(si\)作为子秘密发送给参与者\(i\)。
(2)秘密重构
任何大于等于\(t\)个参与者通过其子秘密\(si\)和\(xi\)通过拉格朗日插值定理可以恢复上面多项式\(f(x)\),并且令\(x=0\)实现秘密\(s\)的重构。

进一步对shamir秘密分享过程进行分析,可以发现在秘密分享阶段的计算:

把以上的多项式用线性方程组的视角打开来看,是一个范德蒙德矩阵和一个列向量\((a0,a1……,at-1)\)乘积,其中范德蒙德矩阵和Brickell方案中的矩阵M是对应的。

因此,Shamir秘密共享是Blakley & Brickell方案中的特例,正因为范德蒙德矩阵的特殊性,线性无关性(\(xi\)不相等的任意\(t\)阶方阵都是满秩的)和构造简单,所以大多数方案应用Shamir秘密共享,如果需要把Shamir秘密秘密共享应用到一般模式可以考虑把范德蒙德矩阵用一般矩阵替代。
基于中国剩余定理的秘密共享
什么是中国剩余定理(CRT)?
物不知数问题:
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
CRT:

使用CRT解“物不知数问题”:

基于CRT的秘密共享:

举例:

可验证的秘密共享
在秘密共享中,为了解决参与者想验证Dealer是否欺骗自己以及Dealer如何证明自己没有欺骗参与者的问题,提出了可验证的秘密共享(Verifiable Secret Sharing,VSS),Feldman VSS 是一种基于Shamir秘密共享构造的可验证秘密共享方案。
(1)秘密分发
Dealer要共享一个秘密\(s\),分给\(n\)个参与者,其中任意\(t\)个参与者可以重构秘密\(s\),寻找一个\(t-1\)次多项式,

其中\(a_0=s\),Dearler为每一个参与者任意选择非0的\(xi\)计算\(si=f(xi)\)为\(i\)的子秘密发送给参与者\(i\).同时,Dealer计算\(A_j=g^{a_j}\),其中\(j=0,1,2……,t-1\)并公开这些参数。
(2)秘密验证
参与者收到秘密\(si\)后验证\(si\)的有效性,即通过验证以下等式是否成立:

其中\(A_j=g^{a_j}\) .
补充
分布式可验证秘密共享
在以上所有的方案中Dealer是一个知道秘密的实体。Joint Feldman VSS方案既能实现上述的可验证的秘密共享又能去掉Dealer,即一种无可信第三方的可验证秘密共享方案(Distributed Verifiable Secret Sharing,DVSS)
具体过程如下:
(1)秘密分发
每一个参与者Pi选择要共享的秘密\(si=a_0\)并随机选择其他参数生成\(t-1\)次多项式:

公开参数\(A_{ik}\)并公布,对每一参与者\(P_j\)生成秘密\(si\)的子秘密\(s_{ij}=f_i(x_j)\),将\(s_{ij}\)发送给参与者\(P_j\).
(2)秘密验证
每一个参与者可以验证其他参与者发送给自己的秘密是否有效,并把所有验证通过的参与者记为集合\(Q\);
所有参与者把秘密分享验证通过集合\(Q\)内的子秘密进行加运算就得到该参与者的子秘密\(si\).
问题:如何验证秘密有效?
联邦学习的应用

这里用到Paillier加法同态性怪怪的。



在区块链共识和隐私保护中的应用
被称为革命性的第三代加密货币的Cardano(ADA)的共识算法Ouroboros和致力于利用区块链打造一款具备无限扩容能力的自治分布式云计算网络项目Dfinity中的共识算法都不约而同的选择了分布式可验证的秘密共享技术。在信任环境、分布式结构上,区块链的共识节点和分布式可验证秘密的参与者都恰分的对应,这样分布式可验证秘密共享的特征在区块链共识中得到充分的展现,能恰到好处的解决区块链共识算法的吞吐率和资源浪费的问题。
在日趋严格的隐私保护政策下,各种隐私保护算法被提出,其中联邦学习和共享学习最为突出,其内部的安全层都有采用了秘密共享技术实现隐私保护的技术方案。在联邦学习中,基于秘密共享的逻辑回归模型中利用了秘密共享的加法同态性,数据拥有者将秘密共享给多方,在秘密共享的场景下,将明文的计算转换为子秘密的计算,实现了隐私保护,蚂蚁金服的共享学习框架中也采用秘密共享技术作为隐私保护实现的技术之一。
参考
1、Shamir密钥分享算法简析
2、基于中国剩余定理的秘密共享
基于FATE的可验证秘密分享算法详解及应用场景分享:学习的更多相关文章
- 基于python中staticmethod和classmethod的区别(详解)
例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A(object): def foo(self,x): print "executing foo ...
- 机器学习经典算法详解及Python实现--基于SMO的SVM分类器
原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector ...
- kmp算法详解
转自:http://blog.csdn.net/ddupd/article/details/19899263 KMP算法详解 KMP算法简介: KMP算法是一种高效的字符串匹配算法,关于字符串匹配最简 ...
- [转] KMP算法详解
转载自:http://www.matrix67.com/blog/archives/115 KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段. 我们这里说的K ...
- 【转】AC算法详解
原文转自:http://blog.csdn.net/joylnwang/article/details/6793192 AC算法是Alfred V.Aho(<编译原理>(龙书)的作者),和 ...
- KMP算法详解(转自中学生OI写的。。ORZ!)
KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段. 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法.KMP算法是拿来处理字符串匹配的.换句 ...
- Tarjan算法详解
Tarjan算法详解 今天偶然发现了这个算法,看了好久,终于明白了一些表层的知识....在这里和大家分享一下... Tarjan算法是一个求解极大强联通子图的算法,相信这些东西大家都在网络上百度过了, ...
- 安全体系(二)——RSA算法详解
本文主要讲述RSA算法使用的基本数学知识.秘钥的计算过程以及加密和解密的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 1.概述 ...
- 安全体系(三)——SHA1算法详解
本文主要讲述使用SHA1算法计算信息摘要的过程. 安全体系(零)—— 加解密算法.消息摘要.消息认证技术.数字签名与公钥证书 安全体系(一)—— DES算法详解 安全体系(二)——RSA算法详解 为保 ...
- 八大排序算法详解(动图演示 思路分析 实例代码java 复杂度分析 适用场景)
一.分类 1.内部排序和外部排序 内部排序:待排序记录存放在计算机随机存储器中(说简单点,就是内存)进行的排序过程. 外部排序:待排序记录的数量很大,以致于内存不能一次容纳全部记录,所以在排序过程中需 ...
随机推荐
- 国产化UOS适配
配置本地iso镜像为apt源 把镜像放到目录下 /home/gaohongyu/debian/uniontechos-server-20-enterprise-1030-arm64.iso 创建目录 ...
- 简单但实用,RTC时钟使用指南
合宙Air201快速入门-RTC实时时钟使用示例- 本教程教你通过使用脚本代码,实现Air201内置RTC实时时钟同步时间.获取时间.设置时间等功能,可根据实际需求灵活应用. 我们先了解一些相关基础知 ...
- AT开发HTTP应用:Air780EP低功耗4G模组
已经写了一篇基于Air780EP模组AT开发的FOTA远程升级指南,有客户朋友询问能否讲讲HTTP应用部分?本期特别安排--涵盖HTTP基本应用流程.GET/POST/SSL请求示例.断点续传.常 ...
- php 如何实现 git diff
无意间想到这个问题,如何用php来实现git diff,如果实现了这个功能,岂不是能够使用php对在线编辑文件的功能做更进一步的优化和提升? 查了一下还真有这样的库,话不多说,开始执行 compose ...
- js之模块导入与导出:export、export default、module.exports、exports
前两者export.export default可为一组,是es6的规范,和import匹配,import是es6中的语法标准:后两者module.exports.exports可为一组,是commo ...
- Kibana之基本使用
介绍kibana经常使用的功能 查询: # 查询内容不为空的数据,并返回总数量 GET mp_article/_search?rest_total_hits_as_int=true { "q ...
- 基本ROP
ret2text [NewStarCTF 2023 公开赛道]ret2text (64) execve本身并不是一个后门函数. 实际上,execve是一个标准的系统调用函数,用于在 Linux和类 U ...
- MapStruct 入门
介绍(What?Why?How?) What? MapStruct is a code generator that greatly simplifies the implementation of ...
- 鸿蒙UI开发快速入门 —— part11: 鸿蒙计算器开发实践
1.前言 经过我们前面10章的学习,我们基本上可以开发出一个简单的APP了,为了巩固学习的内容,我们先开发一个计算器APP来连个手(文末有源代码),界面如下: 包含基本的计算器运算功能 支持一键清空, ...
- 连续6年夺冠 6项细分领域第一,中电金信持续领跑中国银行业IT解决方案市场
7月9日,工信部赛迪顾问发布<2023年度中国银行业IT解决方案市场分析报告>(简称<报告>).中电金信以7.38%的市场份额再度蝉联2023中国银行业IT解决方案市场份额 ...