Skip to content

Feldman VSS 可验证的秘密分享

Feldman VSS 是一个常见的可验证秘密共享方案,由 Paul Feldman 提出(参见其论文:「A Practical Scheme for Non-interactive Verifiable Secret Sharing」)它在 Shamir 秘密共享 之上结合了同态加密方案。

伽罗法域

有限域

这里的域(Field)的定义是有如下特性的集合:

  • 定义了加法和乘法
  • 集合内的元素经过加法和乘法计算,结果仍然在集合内
  • 计算符合交换率、结合率、分配率
  • 加法和乘法有单位元素(所有的集合内的值都有对应的负数,所有集合内非零值都有倒数)

举个例子,我们常见的实数集是域,但整数值不是域(因为除了 1,其它数的倒数都不是整数)。

具有有限个元素的域就是有限域(下文以 GF 表示,GF 是 Galois Field 的缩写,这个名字纪念发明者 Evariste Galois)。这里有一个 有限域计算简述 本部分内容来自此文章。

GF(3) 是定义了模 3 加法和乘法的有限域,有三个元素:0、1、2。两个计算示例:

1+2=3\mod 3=0

2×2=4\mod3=1

(以上两个计算分别说明了 1、2 互为「负数 a+b=0」,2 是 2 的「倒数 a\cdot b = 0」)

有限域加法:

➕ 0 1 2
0 0 1 2
1 1 2 0
2 2 0 1

有限域乘法:

✖️ 0 1 2
0 0 0 0
1 0 1 2
2 0 2 1

GF(4):不是有限域

➕ 0 1 2 3
0 0 1 2 3
1 1 2 3 0
2 2 3 0 1
3 3 0 1 2
✖️ 0 1 2 3
0 0 0 0 0
1 0 1 2 3
2 0 2 0 2
3 0 3 2 1

GF(4)并不是有限域的存在,因为它并不能满足所有有限域的定义要求,因为元素 2 没有倒数, 2n\mod4 \ne 1。

Feldman VSS

Feldman 可验证秘密分享,这里有一个 常见数学符号表 可助你理解文中出现的公式,本部分文章内容来自 「对可验证秘密共享的简单介绍」,如果没理解或者想做些拓展阅读可以去原文看一下。

示例

* 本示例旨在解析对承诺的验证过程,并不满足论文中的安全要求,不要参考

选择参数 p = 17, q = 8, g = 3,满足 q|{p-1},秘密值 K = 9,门限值 t=2

选取随机多项式 P(x) = K×x^0 + 5×x^1 + 7×x^2 \mod q,其中两个随机数 a1 = 5,a2 = 7 \in Z_q

则秘密共享

v_0 = P(0) = 9×0^0 + 5 × 0^1 + 7 × 0^2 \mod 8 = 1

v_1 = P(1) = 9×1^0 + 5 × 1^1 + 7 × 1^2 \mod 8 = 5

v_2 = P(2) = 9×2^0 + 5 × 2^1 + 7 × 2^2 \mod 8 = 7

给出的承诺为

c_0 = g^{K}\mod p = 3^9 \mod 17 = 14

c_1 = g^{a_1}\mod p = 3^{5} \mod 17 = 5

c_2 = g^{a_2}\mod p = 3^7 \mod 17 = 11

然后我们可以验证承诺

g^{v_1} \mod p= 5

c_0×c_1^{1^1}×c_2^{1^2} \mod p = 5

g^{v_1} \mod p = c_0 × c_1^{1^1}×c_2^{1^2} \mod p

由此,我们可以对共享内容的一致性进行验证,保证其内容是遵循方案协议的,剩下 recover 部分跟 Shamir 秘密分享是一样的了。

Comments

lili

lili Guest ·v1

Feldman中的q不是应该是个素数吗

奶爸

奶爸 Guest ·v1

@lili 本文旨在拿出实际例子,用小学数学展示计算步骤,你应该去看论文的定义和证明过程。

Commenting as a guest. A nickname is required; email is optional. Only new comments posted after verifying your email and signing in will appear on your profile. Existing guest comments will not be linked automatically.

Share article

Feldman VSS 可验证的秘密分享

Email X

View original ↗