注:以下内容参考《新编密码学》范九伦 张雪锋 侯红霞 编著
9.4 秘密共享
当系统所有信息的安全最终取决于一个主密钥时,将该主密钥交给单独一个人保管存在弊端:一是该管理员成为系统安全的关键点,若其遭遇不测或丢失密钥,系统将无法使用;二是该管理员可能主动泄露密钥,危害系统安全。
秘密共享(Secret Sharing) 能够有效解决上述问题。一种简单的方案是秘密分割(Secret Splitting):将秘密分成多份,每份交给不同的人,只有将所有份额放到一起才能重构秘密。
-
两人秘密分割:选取与秘密MM等长的随机串R,计算S=M⊕R,将S和R分别交给两人。重构时S⊕R=M。
-
n人秘密分割:选择n−1个随机比特串,与M异或产生第n个比特串,每人分一个。
缺点:恢复时需要所有份额缺一不可;庄家(分发者)可能作弊。
9.4.1 门限方案的定义
定义9.1 (t,n) 门限方案:将共享秘密K产生n个秘密份额k1,k2,...,kn,满足:
-
由任意t个份额可方便地计算出K。
-
由t−1个或更少份额无法确定K。
优点:
-
少于t个份额的泄露不会危害秘密安全
-
少于n−t个份额丢失不影响秘密恢复
-
可通过调整门限值t在安全性与易用性之间平衡
门限方案由Shamir(基于Lagrange插值)和Blakley(基于线性几何投影)于1979年分别提出。
9.4.2 Lagrange插值多项式算法(Shamir门限方案)
方案描述:
-
选择大素数p>max(n,K),K∈Zp
-
随机选择t−1次多项式

- 选取n个非零互不相同的xi∈Zp,计算ki=h(xi),将(xi,ki)作为秘密份额分发给n个共享者(xi公开,ki保密)
重构秘密:已知t个份额(xij,kij),由Lagrange插值公式:

例9.2:

9.4.3 基于线性几何投影的门限方案(Blakley方案)
将共享秘密映射到 t 维空间中的一个点,每个秘密份额是一个包含该点的t−1维超平面。t个超平面的交点唯一确定该点。
9.4.4 高级门限方案
-
加权门限方案:给重要人物分配更多份额。例如,总经理持2份,副总经理持1份,规定3份可恢复秘密。
-
多团体门限方案:在两个或多个团体间共享秘密,限定每个团体必须提供的最少份额数。
-
防欺骗门限方案:检测庄家或共享者的欺骗行为。
-
防止庄家作弊:要求庄家公布承诺值;或通过大量辅助多项式验证h(x)的次数。
-
防止共享者作弊:通过公平恢复方案(如Tompa-Woll方案、Lin-Harn方案)使欺骗者成功概率降至1/L。
-
习题9 解答
9-1 为什么要进行密钥管理?密钥的种类有哪些?
解答:
密钥管理的原因:Kerckhoffs原则指出密码系统安全仅取决于密钥的保密。密钥是系统中的脆弱点,密钥管理影响系统的安全性、可靠性和有效性。
密钥种类(从管理角度):
-
初始密钥:由用户选定或系统分配,长期有效
-
会话密钥:一次通信使用的数据加密密钥,短期
-
密钥加密密钥:用于加密传输中的其他密钥
-
主密钥:层次最高,保护密钥加密密钥
9-2 密钥管理的生命周期包括哪些阶段?
解答:
共12个阶段:用户登记 → 系统和用户初始化 → 密钥材料安装 → 密钥生成 → 密钥登记 → 密钥使用 → 密钥材料备份 → 密钥存档 → 密钥更新 → 密钥恢复 → 密钥撤销 → 密钥销毁
9-3 下面协议的目的是将会话密钥K安全地发送给A和B,其中K+和K分别是KDC与 A、B的共享密钥。
(1)A 任选 NA,发送消息(IDA || IDB || NA)给 KDC。
(2)KDC 计算 EKTA(K || IDB || NA ‖ EKTB (K‖ IDA)),并发送给 A。
(3)A解出NA、K和EKTB(K|IDA),验证NA正是自己在(1)中所选取的之后,将EKTB(K II IDA)转发给 B。
(4)B解出K,再任选 NB,计算 EK(NB)并发送给 A。
(5)A用K解密收到的EK(NB),记解密结果为 NB',再计算 EK(NB'-1)并发送给 A。
(6)B用K解密收到的EK(NB'一1),记解密结果为NB'',若NB''=NB-1,则成功分配会话密钥 K。
请解答:
(1) NA的作用
NA是一次性随机数(Nonce),用于:
-
保证消息的新鲜性,防止重放攻击
-
将KDC的响应与A的请求绑定,使A能验证响应是针对自己请求的
(2) 攻击者获得旧会话密钥K后如何冒充A
攻击者可以:
-
截获步骤(3)中A发送给B的EKTB(K∥IDA)
-
用已知的旧K解密该消息,获得KTB(或直接获得相关信息)
-
冒充A与KDC通信,或在后续通信中伪装成A与B交互
9-4 Diffie-Hellman协议中如何实施中间人攻击
解答:
攻击者MIM截获A发送的YA,用自己的YM冒充发送给B;截获B发送的YB,用自己的YM冒充发送给A。结果:
-
A与MIM共享密钥K1=g^(XAXM)
-
B与MIM共享密钥K2=g^(XBXM)
-
MIM可解密A发给B的消息,用K2加密后转发给B;对B的消息同理
9-5 在Diffie-Hellman密钥交换协议中,设素数p=11,g=2是模p的本原根
(1) 假如用户A的公开密钥YA=9,请给出他的秘密密钥XA
解离散对数:2^XA≡9 (mod11)
-
2¹=2,2²=4,2³=8,2⁴=16≡5,2⁵=10,2⁶=20≡9
-
故XA=6
(2) 如果另一用户B的公开密钥YB=3,请计算A与B的共享密钥K。
K=YB^XA mod p=3⁶ mod 11=729 mod 11=3
(或K=YA^XB mod p,先求XB:2^XB≡3⇒XB=8,9⁸ mod 11=3)
9-6 在Shamir 门限方案中,设t=3,n=5,p=17,5个秘密份额分别是 8、7、10、0、11,从中任选3个,构造插值多项式并求出共享密钥K。
已知:t=3,n=5,p=17,份额:8, 7, 10, 0, 11(对应x=1,2,3,4,5)
选x=1,2,4对应的份额k1=8,k2=7,k4=0重构:
b₁=(−2)/(1−2)⋅(−4)/(1−4)=8/3 mod 17
b₂=(−1)/(2−1)⋅(−4)/(2−4)=−2≡15
b₄=(−1)/(4−1)⋅(−2)/(4−2)=1/3 mod 17
3在模17下的逆为6(3×6=18≡1),故1/3≡6,8/3≡8×6=48≡48−34=14
K=8×14+7×15+0×6 mod 17=112+105=217 mod 17=217−12×17=217−204=13
答案:K=13
9-7 公钥密码中公钥和私钥的安全性要求
解答:
-
私钥Kd :必须确保秘密性 (不能泄露),同时确保完整性 和真实性(不被篡改或替换)。因为私钥用于解密和签名,泄露或篡改将导致机密性丧失或签名伪造。
-
公钥Ke :不要求秘密性(可公开),但必须确保真实性和完整性。因为攻击者可能伪造公钥冒充合法用户。公钥的真实性通常通过公钥证书保证。
9-8 公钥证书的作用
解答:
公钥证书由证书管理机构(CA)颁发,将用户的身份信息与其公钥绑定,并由CA数字签名。作用:
-
保证公钥的真实性:验证CA签名即可确认公钥属于声称的用户
-
防止中间人攻击:攻击者无法伪造有效证书
-
支持离线验证:用户可预先获取CA公钥,之后无需在线查询即可验证对方公钥
9-9 基于(2,20)门限方案的保险箱密码管理
(1) 所有管理员诚实时,至少需要多少人?
解答 :至少需要2人。因为(2,20)门限方案规定任意2个份额即可恢复秘密。
(2) 有1个不诚实时,至少需要多少人?
解答 :至少需要3人。因为不诚实的管理员可能提供假信息,需要多一人提供冗余信息,通过多数一致或验证机制排除错误份额。
(3) 保险箱只能试一次时,至少需要多少人?
解答 :至少需要20人(全部)。因为只能试一次,必须确保重构的密码绝对正确。在不诚实管理员存在的情况下,唯一可靠的方式是所有管理员同时在场,共同验证和恢复秘密,排除任何伪造可能。
注:以上内容的理解和计算,如果有任何错误,希望各位读者和大佬指出改正,非常感谢!!!