门限签名(2)——计算安全的可验证秘密共享

两种特性:①可验证,参与秘密共享方可以验证自己的秘密份额是否正确
②计算安全,不存在概率多项式复杂度算法破解,或者遵循某些数学困难假设。
因为秘密是共享的,某人的秘密份额是否正确需要和其它人的秘密份额作某些计算,实现可验证性需要所有人的信息,包裹在Hash函数中可以验证每个元素是否相等,但无法作计算,而包裹在双线性对中可以作加法、乘法计算。
用到的双线性对性质:
e ( a , P ) e ( b , P ) = e ( a + b , P ) e(a,P)e(b,P)=e(a+b,P) e(a,P)e(b,P)=e(a+b,P)
e ( a , P ) b = e ( a b , P ) = e ( a , b P ) e(a,P)^{b}=e(ab,P)=e(a,bP) e(a,P)b=e(ab,P)=e(a,bP)
e ( a P , b P ) = e ( a b P , P ) e(aP,bP)=e(abP,P) e(aP,bP)=e(abP,P)
流程:
1 随机选择 F 1 , . . . , F t − 1 F_1,...,F_{t-1} F1,...,Ft1以构建多项式 F ( x ) = S + x F 1 + . . . + x t − 1 F t − 1 F(x)=S+xF_1+...+x^{t-1}F_{t-1} F(x)=S+xF1+...+xt1Ft1 S i = F ( i ) S_i=F(i) Si=F(i)为秘密份额,分发给成员 1 , 2 , . . . , n 1,2,...,n 1,2,...,n
2 计算并公开 α 0 = e ( S , P ) \alpha_0=e(S,P) α0=e(S,P)以及 α j = e ( F j , P ) , j = 1 , 2... , t − 1 \alpha_j=e(F_j,P),j=1,2...,t-1 αj=e(Fj,P),j=1,2...,t1,这一步的用意就是你可以用 F j F_j Fj来计算并验证某些信息,但是不能得到具体值,而Hash函数不能用来计算,所以双线性对确实是一种很强大的工具,需要注意的是,Hash函数基于随机预言机假设,双线性对基于GTI(对于Tate对)假设,很多文献认为后者仍需要经历考验。
3 验证秘密份额: e ( S i , P ) = Π j = 0 t − 1 α j i j e(S_i,P)=\Pi_{j=0}^{t-1} \alpha_j^{i^j} e(Si,P)=Πj=0t1αjij
证明: e ( S + ∑ F j ⋅ i j , P ) = e ( S i , P ) e(S+\sum F_j \cdot i^j,P)=e(S_i,P) e(S+Fjij,P)=e(Si,P)
这是该体制的特点,区别于一般秘密共享的地方:可验证性
这个体制可以用来分享Hess签名中的私钥

计算安全:
wlog,假设 1 , . . . , t − 1 1,...,t-1 1,...,t1持有的信息泄露了,攻击者可以通过拉格朗日插值计算以下信息:
β i = e ( S i , P ) , i = 1 , . . . , t − 1 \beta_i=e(S_i,P),i=1,...,t-1 βi=e(Si,P),i=1,...,t1
β t = β 0 π t 0 Π j = 1 t − 1 α j π t j \beta_t=\beta_0^{\pi_{t0}}\Pi_{j=1}^{t-1}\alpha_j^{\pi_{tj}} βt=β0πt0Πj=1t1αjπtj
注意, β \beta β只是计算的跳板,因为 S 0 S_0 S0还是不知道的,直接插值少一个信息,而借助包裹了 S 0 S_0 S0的双线性对,就可以插值成功。
那么攻击者成功有两条路径:
①由 e ( S 0 , P ) e(S_0,P) e(S0,P)计算 S 0 S_0 S0
②由 e ( S t , P ) e(S_t,P) e(St,P)计算 S t S_t St,再由 S 1 , S 2 , . . . , S t S_1,S_2,...,S_t S1,S2,...,St插值得到 S 0 S_0 S0
它们的本质都是一样的,即难度等同于逆向计算双线性对,所以是计算安全的。

你可能感兴趣的:(数字签名,门限签名,秘密共享,双线性对)