细说秘密分享/秘密分割的几种常见表述形式

秘密分享

​ 秘密分享是庄家选择一个秘密s,并通过一种秘密分割方式π(s,r)=(s1,s2,...,sn) ,其中r是随机值,这些被分割出来的份额si被发送给不同的参与者Pi,后续满足访问结构的参与者集合(授权集合)可以恢复出秘密s,任意非授权集合都不能得到s的任何有关信息。

​ *访问结构是能够重构秘密的所有“参与者子集”构成的集合,A2{P1,P2,...,Pn}
shamir-(t,n) 门限秘密分享是经典的秘密分享方案,他是说n个参与者中任意t个及以上的参与者一起可以恢复出秘密,而不足t个参与者一起都得不到秘密的任何信息。

​ 可以从两个常见的角度出发去理解,下面分析两种角度并说明他们在本质上的统一性。

第一种角度

(t元一次方程 , xt1at1+...+xa1+a0=0):对秘密的恢复是求解t个方程组,来恢复t个未知元(at1,...,a1,a0)对秘密的分割是n个方程{at1+...+a1+a0=02t1at1+...+2a1+a0=0...nt1at1+...+na1+a0=0,这种角度因为用户拿到的份额是一整个方程而不是一个值,所以没有显示的写法去写出每个si是什么。所以这种角度虽然是最好理解的,但由于表述上差点意思,也是最少见的。而下面的函数角度和通用角度,在表述上更有优越性,常见于各类ABE论文的表述中。

第二种角度

(t-1阶函数 , f(x)=at1xt1+...+a1x+a0):对秘密的恢复是通过对t个点位的函数值进行拉格朗日插值来恢复函数的未知系数组β=(at1,...,a1,a0)对秘密的分割便是取n个点位的函数值,可以简单的取为x=(1,...,n)(s1=f(1),s2=f(2),...,sn=f(n)),其中s=f(0)=a0是秘密,是不能被分割时x0给分割出去的。当恢复出未知系数组 β=(at1,...,a1,a0),自然得到秘密s 。更一般地可写为未知系数组β和目标向量α=(0,0,...,1)的乘积s=βα 。秘密s与t个未知系数之间存在某种函数关系,根据目标向量α的不同而不同,常见的如s=a0s=i=0t1ai等等,在shamir-(t,n) 门限方案中s=a0

通用角度(矩阵形式

n×t的矩阵M,其中满足访问结构的t行组成t×t的矩阵Mt可以线性表出α,没错就是目标向量。 (如果是shamir-(t,n) 门限方案则为任意t行都应可以,任意t-1行都不可以。)

对秘密的恢复过程为用Mt线性表出α,即找到不为0的向量w=(w1,w2,...,wt),考虑矩阵为行向量构成的形式Mt=(Mt,1Mt,2...Mt,n),使得wMt=(w1,w2,...,wt)(Mt,1Mt,2...Mt,n)=i=1twiMt,i=α

*注意这里重点不在α,拥有目标向量α并不能恢复出秘密s,因为有关秘密s的向量β是未知的(只有庄家知道,想要恢复秘密的参与者不知道),重点在我们为了用Mt构成α而求得w,拥有w,可以恢复秘密s=ws ,这里不再是上面两个具体角度中的去先求出β,再结合α来恢复秘密s了,这里才是常规的流程,直接用秘密份额s来恢复s。那么庄家(知道sβ,都是由他来选的)对秘密的分割是:MtβT=(s1s2...sn)=s

也就是说αβT=(wMt)βT=wMtβT=w(MtβT)=ws
显然shamir-(t,n) 门限方案是通用表述的特殊情况,即M=(nt1...n1............2t1...211...11)β=(at1,...,a1,a0)Tα=(0,0,...,1)
此时MtβT=(f(1)f(2)...f(t))=s ,根据拉格朗日插值法我们知道这里的wi=Δi(0)=j=1,jit0jij,这样w(MtβT)=i=1twisi=i=1tΔi(0)f(i)=f(0)=s
如果我们这里取wi=Δi(1)=j=1,jit1jij,那么wMt=α=1i=1tΔi(1)f(i)=f(1)=i=1tai=s

posted @   玩剑的Fiora  阅读(434)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示