本章方案由4个子协议组成,分别为系统初始化协议、秘密分发协议、秘密份额的验证协议和秘密重构协议。
(1)系统初始化协议。设 G 1 为素数阶的加法群(这里为椭圆曲线群),阶为 q ; P 和 Q 为 G 1 的两个生成元,且任何人都不知道 ( n 满足 Q = np );设 G 2 为 q 阶乘法群,且存在双线性映射 e : G 1 × G 1 → G 2 能被有效计算; G 1 和 G 2 上的离散对数( G 1 上是椭圆曲线离散对数)都是难解的;秘密 S ∈ G 1 。
(2)秘密分发协议。分发协议的5个步骤如下。
① 秘密分发者 D 公布秘密 S 的承诺 。
② 秘密分发者 D 选取 G 1 [ x ]上次数最多为 t -1的秘密多项式 F ( x )= S + xF 1 +…+ x t-1 F t-1 满足 S = F (0)(这里 x t-1 F t-1 表示在椭圆曲线群 G 1 上 x t-1 个 F t-1 相加),并计算 S i = F ( i ), i =1,…, n 。
③ 秘密分发者 D 随机选取 g 1 ,…, g t-1 ∈ R ,并广播 C i = C ( F i , g i )= e ( F i + g i Q , P ), i =1,…, t -1。
④ 设 g ( x )= r + g 1 x +…+ g t-1 x t-1 , D 计算 r i = g ( i ), i =1,…, n 。
⑤ 秘密分发者 D 秘密发送( S i , r i )给 P i , i =1,…, n 。
(3)秘密份额的验证协议。 P i 接收到( S i , r i )后,验证秘密份额的正确性,即
(4)秘密重构协议。当至少 t 个参与者 B ( B ⊂ P 且| B |≥ t )提供各自的秘密份额( S i , r i )后,即可利用Lagrange插值多项式计算出秘密( S , r ),即
其中, 为插值系数, 。可利用公开信息 C 0 验证( S , r )的正确性,即 C 0 = e ( S + rQ , P )。