Shamir秘密共享 与 ElGamal门限解密

Secret sharing scheme

定义

秘密共享方案是可有效计算的是算法组 ( G , C ) (G,C) (G,C),定义为

  1. G G G:概率算法,形如 ( α 1 , ⋯   , α s ) ← R G ( s , t , α ) (\alpha_1,\cdots,\alpha_s) \leftarrow_R G(s,t,\alpha) (α1,,αs)RG(s,t,α),其中 0 < t ≤ s 0<t \le s 0<ts α ∈ S \alpha \in S αS是秘密,输出的 S K : = { α 1 , ⋯   , α s } SK := \{\alpha_1,\cdots,\alpha_s\} SK:={α1,,αs}t-out-of-s sharing of α \alpha α
  2. C C C:确定性算法,形如 α ← C ( α 1 , ⋯   , α t ) \alpha \leftarrow C(\alpha_1,\cdots,\alpha_t) αC(α1,,αt),这里的输入是任意的 t t t个秘密共享值。

请添加图片描述

正确性:对于所有可能的 S K SK SK,任意的 α ∈ S \alpha\in S αS,以及所有的大小为 t t t S K SK SK的子集,我们总是要求 C ( α 1 , ⋯   , α t ) = α C(\alpha_1,\cdots,\alpha_t) = \alpha C(α1,,αt)=α

安全性:对于子集 S ⊆ [ s ] S \subseteq [s] S[s],简记 S K [ S ] SK[S] SK[S]是由 S S S索引的共享秘密子集。我们说秘密共享方案 ( G , C ) (G,C) (G,C)是安全的,如果对于任意的 α , α ′ ∈ S \alpha,\alpha' \in S α,αS以及任意的 t − 1 t-1 t1大小的 S ⊆ [ s ] S \subseteq [s] S[s] G ( s , t , α ) [ S ] G(s,t,\alpha)[S] G(s,t,α)[S]的分布与 G ( s , t , α ′ ) [ S ] G(s,t,\alpha')[S] G(s,t,α)[S]的分布不可区分。

Shamir’s secret sharing scheme

Shamir秘密共享方案是算法组 ( G s h , C s h ) (G_{sh},C_{sh}) (Gsh,Csh),定义为

  1. G s h ( s , t , α ) G_{sh}(s,t,\alpha) Gsh(s,t,α)

    1. 选择 t − 1 t-1 t1个随机数 a 1 , ⋯   , a t − 1 ← R Z q a_1,\cdots,a_{t-1} \leftarrow_R Z_q a1,,at1RZq,定义多项式

    f ( x ) : = α + ∑ i = 1 t − 1 a i ⋅ x i ∈ Z q [ x ] f(x):= \alpha + \sum_{i=1}^{t-1} a_i \cdot x^i \in Z_q[x] f(x):=α+i=1t1aixiZq[x]

    1. 选择任意的 s s s个非零点 x 1 , ⋯   , x s ∈ Z q x_1,\cdots,x_s \in Z_q x1,,xsZq,计算 y i ← f ( x i ) ∈ Z q y_i \leftarrow f(x_i) \in Z_q yif(xi)Zq
    2. 定义 α i : = ( x i , y i ) ∈ Z q 2 \alpha_i := (x_i,y_i) \in Z_q^2 αi:=(xi,yi)Zq2,输出 ( α 1 , ⋯   , α s ) (\alpha_1,\cdots,\alpha_s) (α1,,αs)
  2. C s h ( α 1 , ⋯   , α t ) C_{sh}(\alpha_1,\cdots,\alpha_t) Csh(α1,,αt)

    1. 由于 deg ⁡ f = t − 1 \deg f = t-1 degf=t1,根据Lagrange Interpolation, t t t个点就可以唯一确定 f ( x ) f(x) f(x)
      f ( x ) : = ∑ i = 1 t ( y i ∏ j = 1 , j ≠ i t ( x − x j ) ( x i − x j ) − 1 ) ∈ Z q [ x ] f(x) := \sum_{i=1}^t \left(y_i \prod_{j=1,j \neq i}^t (x-x_j)(x_i - x_j)^{-1}\right) \in Z_q[x] f(x):=i=1t yij=1,j=it(xxj)(xixj)1 Zq[x]

    2. 由于 α = g ( 0 ) \alpha = g(0) α=g(0),因此直接计算
      λ i : = ∏ j = 1 , j ≠ i t − x j ( x i − x j ) − 1 α ← ∑ i = 1 t y i ⋅ λ i ∈ Z q \lambda_i := \prod_{j=1,j \neq i}^t -x_j(x_i - x_j)^{-1}\\ \alpha \leftarrow \sum_{i=1}^t y_i \cdot \lambda_i \in Z_q λi:=j=1,j=itxj(xixj)1αi=1tyiλiZq
      这里的 λ i \lambda_i λi叫做Lagrange coefficients

    3. 输出秘密值 α \alpha α

容易看出,如果固定 x 1 , ⋯   , x s x_1,\cdots,x_s x1,,xs,那么Shamir秘密共享拥有同态加法同态标量乘法的性质。

安全性:Shamir秘密共享方案 ( G s h , C s h ) (G_{sh},C_{sh}) (Gsh,Csh)是安全的。易证,在 α , x 1 , ⋯   , x s \alpha,x_1,\cdots,x_s α,x1,,xs固定的情况下, ( a 1 , ⋯   , a t − 1 ) (a_1,\cdots,a_{t-1}) (a1,,at1)与任意的大小 t − 1 t-1 t1的子集 ( y 1 ′ , ⋯   , y t − 1 ′ ) (y_1',\cdots,y_{t-1}') (y1,,yt1)之间是双射(假设 g ′ ( x ) = α + x g ( x ) g'(x)=\alpha+xg(x) g(x)=α+xg(x) h ′ ( x ) = α + x h ( x ) h'(x)=\alpha+xh(x) h(x)=α+xh(x)在这 t − 1 t-1 t1个位置的像相同,那么这导致 g ( x ) , h ( x ) g(x),h(x) g(x),h(x)在这些位置的像相同,但它们的度数至多为 t − 2 t-2 t2,这与 g ′ ≠ h ′ g' \neq h' g=h矛盾),从而均匀选取 ( a 1 , ⋯   , a t − 1 ) (a_1,\cdots,a_{t-1}) (a1,,at1)导致 ( y 1 ′ , ⋯   , y t − 1 ′ ) ∈ Z q t − 1 (y_1',\cdots,y_{t-1}') \in Z_q^{t-1} (y1,,yt1)Zqt1的分布也是均匀随机的。

Threshold decryption

定义

公钥门限解密方案是可有效计算的算法组 Σ t h = ( G , E , D , C ) \Sigma_{th} = (G,E,D,C) Σth=(G,E,D,C),定义为

  1. G G G:概率的 t-out-of-s shared key 生成算法,形如 ( p k , s k 1 , ⋯   , s k s ) ← R G ( s , t ) (pk,sk_1,\cdots,sk_s) \leftarrow_R G(s,t) (pk,sk1,,sks)RG(s,t),输出公钥 p k pk pk,输出共享私钥 S K = { s k 1 , ⋯   , s k s } SK=\{sk_1,\cdots,sk_s\} SK={sk1,,sks}
  2. E E E:概率的公钥加密算法,形如 c ← R E ( p k , m ; r ) c \leftarrow_R E(pk,m;r) cRE(pk,m;r)
  3. D D D​:确定性的解密算法,形如 c i ← D ( s k i , c ) c_i \leftarrow D(sk_i,c) ciD(ski,c),这里的 c i c_i ci叫做部分解密值(partial decryptions
  4. C C C:确定性的组合算法,形如 m ← C ( c , c 1 , ⋯   , c t ) m \leftarrow C(c,c_1,\cdots,c_t) mC(c,c1,,ct),这里的输入是任意的 t t t个部分解密值。如果输入 t ′ > t t'>t t>t个部分解密值,可以简单忽略多余的。

正确性:对于所有可能的 ( p k , S K ) (pk,SK) (pk,SK),任意的 m ∈ M m \in M mM,以及所有的大小为 t t t S S S,我们总是要求 C ( c ,   c 1 , ⋯   , c t ) = m C(c,\, c_1,\cdots,c_t) = m C(c,c1,,ct)=m

安全性:敌手 A A A选取大小为 t − 1 t-1 t1的子集 S ⊆ [ s ] S \subseteq [s] S[s],将它发送给挑战者。挑战者执行 ( p k , s k 1 , ⋯   , s k s ) ← R G ( s , t ) (pk,sk_1,\cdots,sk_s) \leftarrow_R G(s,t) (pk,sk1,,sks)RG(s,t),发送 p k pk pk { s k i } i ∈ S \{sk_i\}_{i \in S} {ski}iS给敌手。然后敌手可以做一系列询问,挑战者固定随机值 b ∈ { 0 , 1 } b \in \{0,1\} b{0,1}

  1. Combiner query:敌手第 j j j次询问 m j ∈ M m_j \in M mjM,挑战者计算 c j ← R E ( p k , m j ) c_j \leftarrow_R E(pk,m_j) cjRE(pk,mj) c j i ← D ( s k i , c j ) , ∀ i = 1 , ⋯   , s c_{ji} \leftarrow D(sk_i,c_j),\forall i=1,\cdots,s cjiD(ski,cj),i=1,,s,然后将 c j , c j 1 , ⋯   , c j s c_j,c_{j1},\cdots,c_{js} cj,cj1,,cjs回应给敌手。
  2. Single encryption query:敌手发送 m 0 , m 1 ∈ M m_0,m_1 \in M m0,m1M,挑战者计算 c ← R E ( p k , m b ) c \leftarrow_R E(pk,m_b) cRE(pk,mb),将 c c c回应给敌手。敌手只能询问一次。

最后敌手输出 b ∗ ∈ { 0 , 1 } b^* \in \{0,1\} b{0,1},令 W b W_b Wb代表挑战者选择 b b b时敌手输出为 1 1 1的事件,我们定义敌手的优势为
t h S S a d v [ A , Σ t h ] : = ∣ P r [ W 0 ] − P r [ W 1 ] ∣ thSSadv[A,\Sigma_{th}] := |Pr[W_0] - Pr[W_1]| thSSadv[A,Σth]:=Pr[W0]Pr[W1]
我们说公钥门限解密方案 Σ t h \Sigma_{th} Σth语义安全的(semantically secure),如果对于任意的PPT敌手,其优势 t h S S a d v [ A , Σ t h ] thSSadv[A,\Sigma_{th}] thSSadv[A,Σth]的值是可忽略的。

请添加图片描述

ElGamal threshold decryption

G G G是素数 q q q阶的循环群, g ∈ G g\in G gG是生成元。令 Σ = ( E s , D s ) \Sigma = (E_s,D_s) Σ=(Es,Ds)是定义在 K × M × C K \times M \times C K×M×C上的对称加密方案。令 H : G 2 → K H: G^2 \rightarrow K H:G2K是Hash函数。那么ElGamal加密方案是算法组 Σ E G = ( G e n , E n c , D e c ) \Sigma_{EG} = (Gen,Enc,Dec) ΣEG=(Gen,Enc,Dec),定义如下:

  1. G e n ( ) Gen() Gen():选取 α ← R Z q \alpha \leftarrow_R Z_q αRZq,计算 u ← g α u \leftarrow g^\alpha ugα,输出私钥 s k : = α sk:=\alpha sk:=α,输出公钥 p k : = u pk:=u pk:=u
  2. E n c ( p k , m ) Enc(pk,m) Enc(pk,m):选取 β ← R Z q \beta \leftarrow_R Z_q βRZq,计算 v ← g β v \leftarrow g^\beta vgβ,并计算共享秘密 w ← u β w \leftarrow u^\beta wuβ和会话密钥 k ← H ( v , w ) k \leftarrow H(v,w) kH(v,w),调用对称加密算法 c ← E s ( k , m ) c \leftarrow E_s(k,m) cEs(k,m),输出密文 ( v , c ) (v,c) (v,c)
  3. D e c ( s k , ( v , c ) ) Dec(sk,(v,c)) Dec(sk,(v,c)):计算共享秘密 w ← v α w \leftarrow v^\alpha wvα和会话密钥 k ← H ( v , w ) k \leftarrow H(v,w) kH(v,w),调用对称解密算法 m ← D s ( k , c ) m \leftarrow D_s(k,c) mDs(k,c),输出明文 m m m

上述描述是对于初始版本的ElGamal方案的变体。在初始版本中,将 k ← H ( v , w ) k \leftarrow H(v,w) kH(v,w) c ← E s ( k , m ) c \leftarrow E_s(k,m) cEs(k,m)简化为 c ← m ⋅ w c \leftarrow m \cdot w cmw,将 k ← H ( v , w ) k \leftarrow H(v,w) kH(v,w) m ← D s ( k , c ) m \leftarrow D_s(k,c) mDs(k,c)简化为 m ← c ⋅ w − 1 m \leftarrow c \cdot w^{-1} mcw1,不需要Hash函数来扩展密钥。

ElGamal门限解密方案是算法组 Σ t h E G = ( G , E , D , C ) \Sigma_{thEG} = (G,E,D,C) ΣthEG=(G,E,D,C),定义为

  1. G ( s , t ) G(s,t) G(s,t):生成 ( α , u ) ← G e n ( ) (\alpha,u) \leftarrow Gen() (α,u)Gen(),计算 ( α 1 , ⋯   , α s ) ← R G s h ( s , t , α ) (\alpha_1,\cdots,\alpha_s) \leftarrow_R G_{sh}(s,t,\alpha) (α1,,αs)RGsh(s,t,α),输出 p k : = u ,   s k i : = α i pk:=u,\, sk_i:=\alpha_i pk:=u,ski:=αi

  2. E ( p k , m ) E(pk,m) E(pk,m):简单调用 ( v , c ) ← E n c ( p k , m ) (v,c) \leftarrow Enc(pk,m) (v,c)Enc(pk,m),输出密文 ( v , c ) (v,c) (v,c)

  3. D ( s k i , ( v , c ) ) D(sk_i,(v,c)) D(ski,(v,c)):令 s k i = ( x i , y i ) sk_i = (x_i,y_i) ski=(xi,yi),计算 w i ← v y i w_i \leftarrow v^{y_i} wivyi,输出部分解密值 c i : = ( x i , w i ) ∈ Z q × G c_i := (x_i,w_i) \in Z_q \times G ci:=(xi,wi)Zq×G

  4. C ( ( v , c ) ,   c 1 , ⋯   , c t ) C((v,c),\, c_1,\cdots,c_t) C((v,c),c1,,ct):令 c i = ( x i , w i ) c_i = (x_i,w_i) ci=(xi,wi),先利用 x 1 , ⋯   , x t x_1,\cdots,x_t x1,,xt计算出 λ 1 , ⋯   , λ t \lambda_1,\cdots,\lambda_t λ1,,λt,然后计算
    w ← ∏ i = 1 t w i λ i ∈ G w \leftarrow \prod_{i=1}^t w_i^{\lambda_i} \in G wi=1twiλiG
    再计算会话密钥 k ← H ( v , w ) k \leftarrow H(v,w) kH(v,w),最后解密 m ← D s ( k , c ) m \leftarrow D_s(k,c) mDs(k,c),输出明文 m m m

安全性:如果 Σ E G \Sigma_{EG} ΣEG是语义安全的,那么 Σ t h E G \Sigma_{thEG} ΣthEG是门限解密语义安全的(threshold decryption semantically secure)。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值