《密码协议》课程笔记(5) 门限密码协议
门限密码
- 动机:有时候,只有一方控制的访问是不可取的(密钥的所有权仅属于一方是不合理的),因此密钥的所有权需要分布给多方(群签名、给一个组织发消息)
- 门限密码:面向组的密码学,在多个参与方中分发密码。例如,10个人有数字签名私钥,但签名需要7人以上的参与——秘密共享方案是基础
秘密共享方案
- 将秘密分成多份,有足量的份数时,秘密可以被重建,否则不能重构秘密或其中任何部分——
(t,l)
秘密分享方案将一个秘密分割为l
份,至少t
个才能重构,t
称为断点(breaking point) - 类似多项式:多项式f的阶为
t-1
,则需要t
个多项式上的点才能确定f(0)
- 一旦t个人通信,恶意内部人员可以获得密钥——需要一个能解密和签名但不泄露密钥的系统
- (举了一个例子说明了)将一个比特串直接分成两块或更多块不是共享秘密的安全方法,并且不适用于长度为1的串
- 对于秘密比特\(s\),选择一个随机的比特\(r\),并设置shares \(s_1=s\bigoplus r\),\(s_2=r\),此时\(s_1\)和\(s_2\)不会泄露\(s\),并且\(s_1\bigoplus s_2=s\)
- 如果\(r\)是均匀分布的,则\(Pr(s_1=0)=Pr(r=s)=1/2\)(r和s独立,并且r=1和r=0概率均为1/2),因此\(s_1\)和\(s_2\)都是均匀分布(\(s_2=r\))
- 进一步,可以随机选择\(l-1\)个比特\(r_i\),计算\(s_1=s\bigoplus r_1\bigoplus ... \bigoplus r_{l-1},s_2=r_1,...,s_l=r_{l-1}\)
- 具有参与者\(P_1,...,P_l\)的秘密共享方案包含:分发协议(一个协议使得deal D分享一个秘密s,每个参与者获得一个share \(s_i\)),重建协议(一个协议使得秘密s能够通过任何一组合格参与者的秘密片段恢复,这里参与者是\(P_1,...,P_l\)的子集)——所有这种子集构成的集合称为access structure
- 安全需求(满足安全需求的秘密共享方案称为perfect)
- 符合条件的参与者集可以通过shares确定s
- 不符合条件的参与者集都不能通过shares确定关于s的任何信息
(t,l)门限密码
access structure定义为:
shamir's threshold scheme:
\(F_p\)为p阶有限域,\(p>l\),分享的秘密\(s\in Z_p\)
秘密分发:分发者D选择一个\(t\)阶随机多项式\(a(x)\in_R Z[x]\),\(a(0)=s\),分发\(s_i=a(i),i=1,..,n\)
秘密重构:利用拉格朗日插值法恢复
是perfect的(少于t人参与重构时,任何\(a(0)\)都是可能的)
只能抵抗被动攻击(如果分发者发给参与者的碎片是不正确的,参与者无法察觉,并且如果重构时某个参与者唯一不用正确的碎片,他可以从其他参与者的正确碎片恢复秘密),安全性依赖于方案中各方诚实执行协议,诚实执行后不合格参与者不能推断出关于秘密的信息
抵御主动攻击的秘密共享方案——可验证的秘密共享(verifiable secret sharing, VSS)方案——抵御主动攻击:分发时,分发者向部分或全部参与者发送不正确的碎片,并且重构时,参与者提交不正确的碎片
Feldman's VSS
shamir方案的推广;\(p\)为大素数,\(<g>\)为p阶循环群,\(s\in Z_p\)
分发:
分发者选取一个多项式\(a(x)=s+a_1x+...+a_{t-1}x^{t-1},a_j\in Z_p\),将\(s_i=a(i)\)分发给参与者,计算并广播承诺\(B_j=g^{a_j},0\leq j<t\)
参与者验证下式是否成立,以检查分发者是否诚实
重建:执行shamir门限秘密分享方案即可;如果少于t个参与者能够重构原始秘密,意味着\(s=log_gh\)被求解,因此离散对数问题是困难的假设下,少于t个参与者不能计算秘密——计算安全
Pedersen‘s VSS
shamir+承诺,信息论安全(由于是Pederson commitment)
\(<g>\)为素数p阶循环群,h为群里的随机元素,因此没人知道离散对数\(log_gh\)
分发:
- 分发者随机选择两个多项式:\(a(x)=a_0+a_1x+...+a_{t-1}x^{t-1},a_j\in Z_p\)和\(b(x)=b_0+b_1x+...+b_{t-1}x^{t-1},b_j\in Z_p\),\(a_0=s\),碎片\(s_i=(a(i),b(i))\)
- 分发者广播承诺值\(C_j=g^{a_j}h^{b_j}\)
重建:
参与者验证:
执行shamir门限秘密分享的重构算法,以恢复秘密
方案中,承诺与秘密相关的只有\(C_0=g^sh^{b_0}\),而对任意的\(\hat s\in Z_p\),都有唯一的\(\hat b\in Z_p\)使得\(C_0=g^{\hat s}h^{\hat b}\),因此\(C_0\)没有泄露s的任何信息
如果分发者知道\(log_gh\),则可以作弊