参考文献:
- [KW93] Karchmer M, Wigderson A. On span programs[C]//[1993] Proceedings of the Eigth Annual Structure in Complexity Theory Conference. IEEE, 1993: 102-111.
- [CDM00] Cramer R, Damgård I, Maurer U. General secure multi-party computation from any linear secret-sharing scheme[C]//International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Heidelberg: Springer Berlin Heidelberg, 2000: 316-334.
- [GPSW06] Goyal V, Pandey O, Sahai A, et al. Attribute-based encryption for fine-grained access control of encrypted data[C]//Proceedings of the 13th ACM conference on Computer and communications security. 2006: 89-98.
- [Bei11] Beimel A. Secret-sharing schemes: A survey[C]//International conference on coding and cryptology. Berlin, Heidelberg: Springer Berlin Heidelberg, 2011: 11-46.
文章目录
- Secret-Sharing Schemes
- Access Structure
- Two Definitions
- Constructions of SSS
- Shamir’s Threshold Secret-Sharing Scheme
- Undirected s-t-Connectivity
- Ito, Saito, and Nishizeki’s Constructions
- The Monotone Formulae Construction
- The Monotone Span Programs Construction
- Multi-Linear Secret-Sharing Schemes
- Lower Bounds on the Size of the Shares
- Appilcation
[Bei11] 做了 SSS 的详细调查,描述了一些构造方法(都是 LSSS),并总结了 shares 规模的下界。
Secret-Sharing Schemes
Access Structure
秘密分享协议(SSS)是定义在某个访问结构上的,由它来控制哪些秘密重构是有效的或者无效的。一般地,人们只考虑 “单调的” 访问结构。
首先,我们定义 Access Structure,
我们说 B ⊆ A B \subseteq \mathcal A B⊆A 是极大非授权集(maximal unauthorized set),如果添加任意的 p ∈ { p 1 , ⋯ , p n } \ B p \in \{p_1,\cdots,p_n\}\backslash B p∈{p1,⋯,pn}\B 都会使得 B ∪ { p } B \cup\{p\} B∪{p} 是授权的。我们说 T ⊆ A T \subseteq \mathcal A T⊆A 是极小授权集(minimal authorized set),如果任意的子集 T ′ ⊊ T T'\subsetneq T T′⊊T 都是非授权的。注意区分极大(maximal)最大(maximum)以及极小(minimal)最小(minimum)。
其次,我们定义 Distribution Scheme,
定义这个分发协议的 information ratio(信息比),
max 1 ≤ j ≤ n log ∣ K j ∣ log ∣ K ∣ \frac{\max_{1\le j\le n} \log |K_j|}{\log |K|} log∣K∣max1≤j≤nlog∣Kj∣
定义这个分发协议的 average information ratio(平均信息比),
∑ j = 1 n log ∣ K j ∣ n log ∣ K ∣ \frac{\sum_{j=1}^n \log |K_j|}{n\log |K|} nlog∣K∣∑j=1nlog∣Kj∣
有时候,也使用术语 information rate(信息率)表示它的倒数。英文中,ratio(比)表示分子和分母之间不存在包含关系,rate(率)表示分子已经包含在了分母中。
Two Definitions
现在,我们给出 SSS 的两种定义,它们是等价的,只是在不同场景下的便利性存在区别。
基于概率,定义:
基于香农熵,定义:
Constructions of SSS
Shamir’s Threshold Secret-Sharing Scheme
Shamir’s SSS 大约是最著名的方案了,它基于拉格朗日插值。给定 t-out-of-n 访问结构,
A t = { B ⊆ { p 1 , p 2 , ⋯ , p n } : ∣ B ∣ ≥ t } \mathcal A_t = \{B \subseteq \{p_1,p_2,\cdots,p_n\} : |B| \ge t\} At={B⊆{p1,p2,⋯,pn}:∣B∣≥t}
其中 1 ≤ t ≤ n 1\le t\le n 1≤t≤n。注意恰好 t t t 个参数方能否重建秘密,在不同的文章中采用的是不同的。
设置 secrets 以及 shares 的范围是有限域 F q , q > n \mathbb F_q, q > n Fq,q>n,初始配置 α 1 , ⋯ , α n ∈ F q \alpha_1,\cdots,\alpha_n \in \mathbb F_q α1,⋯,αn∈Fq 是不同的非零公开值。某个 dealer 持有秘密 k ∈ F q k \in \mathbb F_q k∈Fq,它随机选择 a 1 , ⋯ , α t − 1 ← F q a_1,\cdots,\alpha_{t-1} \gets \mathbb F_q a1,⋯,αt−1←Fq,定义次数 t − 1 t-1 t−1 的多项式:
P ( x ) = k + ∑ i = 1 t − 1 a i x i P(x) = k + \sum_{i=1}^{t-1} a_i x^i P(x)=k+i=1∑t−1aixi
计算 s j = P ( α j ) s_j = P(\alpha_j) sj=P(αj) 分发给参与者 p j p_j pj
对于某个授权集合 B ∈ A t B \in \mathcal A_t B∈At,它们持有至少 t t t 个点值对 ( α j , s j ) (\alpha_j,s_j) (αj,sj),使用 Lagrange’s interpolation theorem 容易唯一地恢复出 P ( x ) P(x) P(x)
可以证明 Shamir’s SSS 是完美正确的、完美隐私的。它的 shares 的大小和 secret 大小相同。
Undirected s-t-Connectivity
The s-t connectivity problem for undirected graphs:给定一张无向图 G = ( V , E ) G=(V,E) G=(V,E),确定两个点 s , t ∈ V s,t \in V s,t∈V 是否位于同一个连通分量(connected component,极大的连通子图)。这个问题是 PPT 可解的。
Benaloh and Rudich 考虑了 m m m 个点的完全图 G = ( V , E ) G=(V,E) G=(V,E),其中 V = { v 1 , ⋯ , v m } V=\{v_1,\cdots,v_m\} V={v1,⋯,vm} 以及 E = { ( v i , v j ) : i < j } E=\{(v_i,v_j): i<j\} E={(vi,vj):i<j}。我们将 n = ( m 2 ) n=\binom{m}2{} n=(2m) 个参与者 p i j p_{ij} pij 关联到各个边,把某个包含从 v 1 v_1 v1 到 v m v_m vm 路径的边集作为一个授权集,它们的收集是 A u s t c o n \mathcal A_{ustcon} Austcon
设置 secrets 以及 shares 的范围是有限加群 H H H。某个 dealer 持有秘密 k ∈ H k \in H k∈H,它随机选择 r 2 , ⋯ , r m − 1 ← H r_2,\cdots,r_{m-1} \gets H r2,⋯,rm−1←H,设置 r 1 = k r_1=k r1=k 以及 r m = 0 r_m=0 rm=0,然后计算 s i j = r j − r i , ∀ i < j s_{ij}=r_j-r_i, \forall i<j sij=rj−ri,∀i<j 作为各个参与方的 shares
对于某个授权集合 B ∈ A u s t c o n B \in \mathcal A_{ustcon} B∈Austcon,它们包含了一条从 v 1 v_1 v1 到 v m v_m vm 的路径,把这些边对应的 shares 累加起来,
( r 1 − r j ) + ( r j − r i ) + ⋯ + ( r k − r m ) = r 1 − r m = k (r_1-r_j) + (r_j-r_i) + \cdots + (r_k-r_m) = r_1-r_m = k (r1−rj)+(rj−ri)+⋯+(rk−rm)=r1−rm=k
可以证明 Undirected s-t-Connectivity 是完美正确的、完美隐私的。它的 shares 的大小和 secret 大小相同。
Ito, Saito, and Nishizeki’s Constructions
Ito, Saito, and Nishizeki 定义了 SSS for general access
structures,并给出了 SSS for every monotone access structures 的一种构造方法。
设置 secrets 的范围是布尔值 { 0 , 1 } \{0,1\} {0,1}。某个 dealer 持有秘密 k ∈ { 0 , 1 } k \in \{0,1\} k∈{0,1},对于任意的单调访问结构 A \mathcal A A 中的每一个授权集 B = { p i 1 , ⋯ , p i l } B=\{p_{i_1},\cdots,p_{i_l}\} B={pi1,⋯,pil},
- 随机选择 r 1 , ⋯ , r l − 1 ← { 0 , 1 } r_1,\cdots,r_{l-1} \gets \{0,1\} r1,⋯,rl−1←{0,1},计算 r l = k ⊕ r 1 ⊕ ⋯ ⊕ r l − 1 r_l = k \oplus r_1 \oplus \cdots \oplus r_{l-1} rl=k⊕r1⊕⋯⊕rl−1
- 将 r j r_j rj 分发给 p i j ∈ B p_{i_j} \in B pij∈B,参与方将这些 shares 按照 B ∈ A B \in \mathcal A B∈A 组织起来
对于某个授权集合 B ∈ A B \in \mathcal A B∈A,参与者取出它索引的 r j r_j rj,计算
r 1 ⊕ ⋯ ⊕ r l − 1 ⊕ r l = k r_1 \oplus \cdots \oplus r_{l-1} \oplus r_l = k r1⊕⋯⊕rl−1⊕rl=k
可以证明这个 SSS for every monotone access structures 是完美正确的、完美隐私的。某个参与者的 share 大小是它位于 A \mathcal A A 中多少个授权集内。一种简单的优化是:dealer 只对访问结构中的 minimal authorized sets 分发秘密,此时某个参与者的 share 大小是它位于 A \mathcal A A 中多少个极小授权集内。
对于 n / 2 n/2 n/2-out-of- n n n 访问结构(它是单调的),每个参与者都持有 ( n − 1 n / 2 − 1 ) = Θ ( 2 n / n ) \binom{n-1}{n/2-1}=\Theta(2^n/\sqrt n) (n/2−1n−1)=Θ(2n/n) 比特的 share,指数长(这比 Shamir’s SSS 差得多)。换句话说,只有一小部分的单调访问结构是可以被高效处理的(efficiently realize a family of access structures)。
The Monotone Formulae Construction
Benaloh and Leichter 推广了 Ito, Saito, and Nishizeki’s Constructions,他们基于 monotone formulae(单调公式)构造了 SSS。这所谓的单调公式是指 a formula with OR and AND gates without negations and without negated variables
为了高效地描述 access structure,他们将它视为一个布尔函数:
- 给定某集合 B ⊆ { p 1 , ⋯ , p n } B \subseteq \{p_1,\cdots,p_n\} B⊆{p1,⋯,pn},它的 characteristic vector 是 v B ∈ { 0 , 1 } n v_B \in \{0,1\}^n vB∈{0,1}n 满足 v B [ j ] = 1 ⟺ p j ∈ B v_B[j]=1 \iff p_j \in B vB[j]=1⟺pj∈B
- 给定任意的访问结构 A \mathcal A A,定义布尔函数 f A : { 0 , 1 } n → { 0 , 1 } f_{\mathcal A}: \{0,1\}^n \to \{0,1\} fA:{0,1}n→{0,1},满足 f A ( v B ) = 1 ⟺ B ∈ A f_{\mathcal A}(v_B)=1 \iff B \in \mathcal A fA(vB)=1⟺B∈A
- 由于访问结构 A \mathcal A A 是单调的,因此 f A f_\mathcal A fA 是一个单调公式
为了消除访问结构中的 redundant parties(那些不属于任何一个 minimal authorized sets 的参与者),他们递归地把两个较小的访问结构上的 SSS 组合起来。首先,给定两个访问结构 A 1 , A 2 \mathcal A_1, \mathcal A_2 A1,A2,我们定义:
-
访问结构 A 1 ∨ A 2 = { B : ( B ∈ A 1 ) ∨ ( B ∈ A 2 ) } \mathcal A_1 \vee \mathcal A_2 = \{B: (B \in \mathcal A_1) \vee (B \in \mathcal A_2)\} A1∨A2={B:(B∈A1)∨(B∈A2)}
-
访问结构 A 1 ∧ A 2 = { B : ( B ∈ A 1 ) ∧ ( B ∈ A 2 ) } \mathcal A_1 \wedge \mathcal A_2 = \{B: (B \in \mathcal A_1) \wedge (B \in \mathcal A_2)\} A1∧A2={B:(B∈A1)∧(B∈A2)}
-
给定单调公式 f A 1 , f A 2 f_{\mathcal A_1}, f_{\mathcal A_2} fA1,fA2,容易验证 f A 1 ∨ A 2 = f A 1 ∨ f A 2 f_{\mathcal A_1 \vee \mathcal A_2} = f_{\mathcal A_1} \vee f_{\mathcal A_2} fA1∨A2=fA1∨fA2 以及 f A 1 ∧ A 2 = f A 1 ∧ f A 2 f_{\mathcal A_1 \wedge \mathcal A_2} = f_{\mathcal A_1} \wedge f_{\mathcal A_2} fA1∧A2=fA1∧fA2
现在,我们假设已经存在了两个 SSS 协议 Σ i \Sigma_i Σi 分别关于 A i \mathcal A_i Ai,假设 secret 范围是加群 K = Z m K=\mathbb Z_m K=Zm,各个参与者的 shares 范围分别是 K a i j K^{a_{ij}} Kaij,这里 a i j a_{ij} aij 是维度, i ∈ { 1 , 2 } i \in \{1,2\} i∈{1,2} 指示的哪个 SSS, j ∈ [ n ] j \in [n] j∈[n] 指示的哪个 party,定义 a j = a 1 , j + a 2 , j a_j = a_{1,j}+a_{2,j} aj=a1,j+a2,j
某个 dealer 持有秘密 k ∈ K k \in K k∈K,它根据两个协议 Σ i \Sigma_i Σi 去构造新的 SSS 协议,
- 构造 A 1 ∨ A 2 \mathcal A_1 \vee \mathcal A_2 A1∨A2 的 SSS 协议:独立地使用 Σ i \Sigma_i Σi 分发 k k k,此时参与者的 shares 范围是 K a j K^{a_j} Kaj。重构过程是平凡的。
- 构造 A 1 ∧ A 2 \mathcal A_1 \wedge \mathcal A_2 A1∧A2 的 SSS 协议:随机选择 k 1 ← K k_1 \gets K k1←K,计算 k 2 = k − k 1 ( m o d m ) k_2 = k-k_1 \pmod{m} k2=k−k1(modm),分别使用 Σ i \Sigma_i Σi 分发 k i k_i ki,此时参与者的 shares 范围是 K a j K^{a_j} Kaj。重构过程中,首先分别重构 k 1 , k 2 k_1,k_2 k1,k2,然后再计算 k = k 1 + k 2 ( m o d m ) k=k_1+k_2 \pmod{m} k=k1+k2(modm)
- 某个授权集 B ∈ A B \in \mathcal A B∈A 的最基本 SSS 协议:可以使用 Ito, Saito, and Nishizeki’s Constructions
可以证明这个 SSS 是完美正确的、完美隐私的。虽然 Benaloh and Leichter’s Constructions 可以高效地处理比 Ito, Saito, and Nishizeki’s Constructions 所能高效处理的 mauch richer 的族,但是大多数的访问结构族所对应的单调公式都是指数长的,因此 shares 也是指数大的。
The Monotone Span Programs Construction
上述的四种构造全都是线性的,也就是分发协议 Σ = ⟨ Π , μ ⟩ \Sigma=\langle\Pi,\mu\rangle Σ=⟨Π,μ⟩ 是一个线性映射,这被称为 Linear Secret-Sharing Scheme(LSSS)。
Karchmer and Wigderson 使用 Monotone Span Program(单调张成程序,MSP)来表述 LSSS,
根据 Monotone Span Program 可以构造出 LSSS,
具体的构造方式为:
也就是说,任意的 LSSS 都是把 secret 以及一些 random 组成的向量乘以某一个矩阵(使得 MSP 计算 access structure 对应的单调公式),再将得到的向量的各个分量作为 shares,按照对应的标签分发给不同的参与方。后续人们证明了 Monotone Span Program 以及 LSSS 其实是等价的。
Multi-Linear Secret-Sharing Schemes
上述的 LSSS 以及 Monotone Span Program 分发的是单个秘密,可以将它们推广到多个秘密,具有更好的信息比(但是 shares 规模会增大一些)。
首先定义 Multi-Target 版本的单调张成程序:
然后用它来构造 Multi-Linear SSS 协议,具体的构造和 LSSS 的完全一样。
Lower Bounds on the Size of the Shares
我们将某个参与者称为 non-redundant party,如果它出现在了至少一个极小授权集内。Karnin 等人证明了每一个非冗余参与者 p j p_j pj 它们的 shares 的熵至少是 secret 的熵,即 H ( S j ) ≥ H ( S ) H(S_j) \ge H(S) H(Sj)≥H(S)。那么可以得到一个较弱的下界:
Csirmaz’s Lower Bound 给出了信息比的更强下界,
对于 LSSS,总存在某个访问结构,使得信息比是指数大的,
Appilcation
[CDM00] 证明了:基于任意的 LSSS 都可以构建出 verifiable secret sharing(VSS)以及 secure multi-party computation(MPC)
[GPSW06] 证明了:假如存在一个实现某访问结构的 LSSS,那么就可以构建出 Key-Policy Attribute Based Encryption(KP-ABE)