当前位置:
文档之家› 一个可公开验证秘密共享方案的安全性证明
一个可公开验证秘密共享方案的安全性证明
有 U i 才能从 h xi f (i ) 中解密出 h f (i ) 。这一子密钥加密方法具有同态性,所以任何人都可以 验证各个加密子密钥的一致性(这隐含了子密钥的一致性)。 一、初始化阶段
p , q 和 G 是公开的已知参数。 全部(或部分)成员执行某种合适的性协议(比如[14])以确 定乘法群 G 的两个独立生成元 g 和 h 。这样,无人知道 g 相对于 h 的离散对数。另外,各
X i = g f (i ) , Yi = yif (i ) .
其中的 X i ,任何人都可根据公开的、庄家对多项式 f ( x) 的各系数的承诺 C j 来计算:
X i = ∏ C ij .
j =0 t −1
j
(2)
为此,采用 Fiat 和 Shamir 的办法[15]构作此证据。对于每个 i ∈ {1, 2, L, n} ,庄家 D 选取随
S i = Yi
xi−1 mod q
(= h f (i ) ).
(5)
随后, U i 执行非交互的 DLE(h, yi ; S i , Yi ; xi ) 协议, 并将 Si 和 proofU i 一起公布, 以证明 Si 确 也就是说 U i 向所有人证明他知道 xi (但并不泄露 xi 是多少), 使 实是他从 Yi 中解密出来的。 得 yi = h xi 且 Yi = S ixi 。 (3-2) 恢复密钥:若至少有 t 个成员 U i ( i ∈ B ⊆ {1, 2, L, n} 且 | B |= t )已正确地恢复了子密钥
二、离散对数的知识证明协议
知识证明协议,尤其是基于离散对数的知识证明协议, 在现代密码学中得到了广泛应 用[12]。本节简要地回顾由 Chaum 和 Pedersen 所提出的一个著名的非交互式协议[13],我们 将其简记为 DLE( g1 , h1 ; g 2 , h2 ;α ) 协议。其中 g1 , g 2 , h1 , h2 是 q 阶乘法群 G 的四个公开生成 元( q 是素数), H 是一安全的 hash 函数。证明者 P 拥有一个秘密参数 α ∈ Z q 使得
3
机数 wi ∈R Z q 并计算:
a1i = g wi , a 2i = y i i .
w
然后利用 X i , Yi , a1i , a2i 计算公共的质询值(challenge) c 如下:
c = H ( X 1 || L || X n || Y1 || L || Yn || a11 || L || a1n || a 21 || L || a 2 n ) . ri = wi − f (i )c mod q . 至此,庄家 D 可以构作并公布如下的知识证据: PROOFD = (c, r1 , r2 , L , rn ) .
r c r c c ≡ H ( g1 h1 || g1 h2 ) .
(1)
三、Schoenmakers 的可公开验证秘密共享方案
Schoenmakers 提出的 PVSS 方案[11]由三个阶段组成, 其中使用了第二节所介绍的 DLE 协议。系统的参与者是庄家 D (Dealer, 即秘密密钥的持有者),以及群体 U (| U |= n) 中的各 个成员 U i (1 ≤ i ≤ n) 。t 是门限值。G 是阶为素数 q ( q > n )的任意乘法群, p 是大素数且有
摘
要:可公开验证的秘密共享(PVSS)是一种特殊的秘密共享体制。在这种方案中,
任何人(不一定是系统中的成员)既可以在秘密分发阶段验证庄家是否给各个成员分发了正 确的子密钥, 又能在秘密恢复阶段验证每个成员是否提供了真实的子秘密; 而且也不需要 假设庄家和各成员之间有秘密信道。 在 1999 年的美洲密码会议上, B. Schoenmakers 提出了 一个基于离散对数的 PVSS 方案。 本文从理论上证明该方案的安全性, 结果表明: 该方案中 的子密钥加密算法的安全性等价于 Diffie-Hellman 假设: 且若 Diffie-Hellman 假设成立, 则 任何 (t − 1) 个成员利用他们的子秘密都不能恢复出秘密密钥。同时, 我们还指出整个方案 的安全性显著地依赖于两个系统参数的相互独立性。 关键词:秘密共享 可公开验证秘密共享 Diffie-Hellman 假设 密码学
(3)
这里的||表示两个比特串的连接。然后,按下式计算出对各成员 U i 的应答(response) ri :
(2-3) 子密钥的验证: 任何人(当然包含各成员)都可利用公开信息 C j (0 ≤ j ≤ t − 1) 按(2)式 计算出 X i ,然后再利用公开信息 yi , Yi , ri (1 ≤ i ≤ n) 及 c 验证所有成员收到的加密子密钥是 否有效。首先计算 Z q 。庄家保密多项式 f ( x) ,计算并公布以下的承诺 C j 和加密子密钥
(encrypted shares) Yi :
Cj = g
aj
,
j = 0, 1, L, t − 1;
Yi = yif (i ) , i = 1, 2, L, n.
(2-2) 构作证据:现在,要做的就是构作知识证据,以便使各成员相信他们收到的加密子 密钥 Yi 是有效的、一致的,即满足:
一、引 言
秘密共享(Secret Sharing)是一种分发、保存、恢复秘密密钥(或其它秘密信息)的方法: 将秘密密钥拆分成一系列相互关联的秘密信息(称为子密钥或影子密钥),然后将子秘钥分 发给某群体中的各个成员;使得某些小组(授权集)中的各成员拿出他们的子密钥后,就可 利用既定的方法恢复该秘密密钥,而其他小组(非授权集)则无法恢复该密钥。秘密共享也 称为秘密分存,密钥共享或密钥分存。在现实系统中使用秘密共享方案,可以防止系统密 钥的遗失、损坏和来自敌方的攻击,减小密钥持有者(个人或服务器)的责任,同时还可以 降低敌手破译密钥的成功率。 秘密共享首先由著名密码学家 Shamir [1]和 Blakley [2]提出。Shamir 的方案简单、实用, 得到了广泛的引用。Shamir 的方案属于 (t , n ) 门限秘密共享方案,即任何不少于 t 个成员的 小组都可以恢复秘密密钥。Shamir 门限方案是完善的秘密共享[1, 3],但在 Shamir 的秘密共 享方案中有两个问题: (1) 庄家的诚实性问题:为防止庄家将错误的子密钥分发给部分或全部成员,各成员 如何验证庄家发送来的子密钥是正确的(即与其他密钥一致,从而可用来恢复秘密 密钥)? (2) 成员的诚实性问题:在恢复秘密密钥阶段,若某些恶意成员提供了假的子密钥, *
* 作为其私钥,而将 成员 U i 随机选择一 xi ∈R Z q
yi = h xi
注册为其公钥。 二、秘密分发、验证阶段 (2-1) 分发秘密:庄家 D 随机选取 s ∈R Z q ,将
S = hs ∈ G
j 1 作为秘密进行分发。为此,选取一个次数最多为 (t − 1) 的多项式 f ( x) = ∑tj− =0 a j x ,其中
2
w w (1) P 随机地选取 w ∈R Z q ,计算 a1 = g1 ,a2 = g 2 , c = H ( a1 || a 2 ) 和 r = w − αc mod q 。
然后,P 公开 proof P = (r , c) 作为他知道秘密参数 α 的证据。 (2) 利用证据 (r , c) ,V 根据以下恒等式是否成立来决定是否相信 P 知道秘密参数 α :
a1i = g ri X ic , a2i = yi i Yic .
r
(i = 1, 2, L, n)
(4)
然后验证(3)式是否成立。若成立,则表明庄家分发密钥成功,否则各成员可提出异议,庄 家 D 分发密钥失败。 三、密钥恢复阶段 (3-1) 加密子密钥脱密:利用私钥 xi ,各成员可以从加密子密钥 Yi 中计算出子密钥 Si
log g1 h1 = log g 2 h2 = α , 也即 h1 = g1α 且 h2 = g 2α .
证明者 P 使验证者 V 相信他确实拥有秘密参数 通过执行以下的 DLE( g1 , h1 ; g 2 , h2 ;α ) 协议, α 但并不泄露 α 的值是多少。
DLE( g1 , h1 ; g 2 , h2 ;α ) 协议
一个可公开验证秘密共享方案的安全性证明*
王贵林 1, 2 卿斯汉 1 马恒太 1
1) 中国科学院,信息安全技术工程研究中心,北京,100080。 2) Laboratories for Information Technology, 21 Heng Mui Keng Terrace, Singapore 119613. Email: wangguilin@
本文的研究得到国家重点基础研究发展规划 973 项目 (G.1999035810) 和国家自然科学基金项目 (60083007)的资助。 1
其他成员如何鉴别? 对这两个问题的研究,就促成了可验证秘密共享 (Verifiable Secret Sharing,简记为 VSS)。首次提出这种思想和实现方案的是文献[4],而 Feldman 的工作[5]则使这种特殊的秘 密共享方案受到了众多密码研究者的重视。随后,Pedersen [6, 7]给出了更为简洁、实用的方 案。在 Pedersen 的方案中,不仅象 Shamir 的方案中一样利用多项式分发子密钥;庄家还公 布对该多项式各系数的承诺,使得成员接到庄家分发来的子密钥时,可以利用这些承诺验 证他收到的子密钥是否正确;而在密钥恢复阶段,各参与成员也可利用同样的办法验证其 他成员所提供的子密钥是否正确。VSS 在安全多方协议的设计中起着重要作用[8]。 在 VSS 中, 如果各成员接收到的子密钥都是正确的, 则各授权集所能恢复的密钥就是 相同的;如果再假设庄家是诚实的,则该密钥就是庄家要共享的秘密密钥。但是,无论在 Shamir 的一般秘密共享方案中, 还是在 VSS 方案中, 都需要假设庄家和各成员之间有秘密 信道(private channel), 以便分发子密钥。 另外, 在秘密的分发阶段, 就算是对非交互的 VSS 来说,各成员也只知道自己所收到的子密钥是否有效,而不知道其他成员的子密钥是否有 效。克服这两个缺点的办法就是采用以下更特殊的秘密共享方案。 第一个 VSS 方案[4]具有这样的特殊性质:任何人(不一定是系统成员)都可以验证庄家 是否给各成员分发了正确的子密钥。这种秘密共享称为可公开验证秘密共享 (Publicly Verifiable Secret Sharing, 简记为 PVSS)。但第一个认识到这一特点,并由此提出可公开验 证的秘密共享这一概念的人是 Stadler[9]。正是由于在这种方案中,任何人(不一定是系统中 的成员)都可以验证各个成员是否接收到了正确的子密钥, 由此不仅解决了庄家的诚实性验 证问题; 更为重要的是, 庄家也不再需要通过秘密信道给各成员分发子密钥。 随后, Fujisaki [10] 而 Schoenmakers 在[11]中提出了最新、 和 Okamoto 提出了一个可证明安全的 PVSS 方案 。 最简洁的 PVSS 方案,并指出:与常规的 VSS 方案不同,PVSS 可用于设计新的密钥托管 系统(escrow cryptosystems)、 可撤消匿名性(revocable anonymity)的电子支付协议及电子选举 协议等。 在文献[11]中,Schoenmakers 没有对他的 PVSS 方案给出详细的安全性证明,而本文 从理论上证明了该方案的安全性:该方案中子密钥加密算法的安全性等价于 DiffieHellman 假设(而文献[11]中只给出了一个方向的结论);且若 Diffie-Hellman 假设成立,则 任何 (t − 1) 个成员利用他们的子秘密都不能恢复出秘密密钥。另外,我们还指出在选择该 方案的两个参数时,保持它们的相互独立性对整个方案的安全性是至关重要的。 第二节介绍一个离散对数知识证明协议,第三节回顾 Schoenmakers 的 PVSS 方案,第 四节给出该方案的安全性证明,而最后的第五节是结论。