“灵活”k 出 n 签名的设计与分析
1. 引言
在签名方案中,“灵活”的 k 出 n 签名具有独特的优势。当新的阈值 k′ < k 时,无需额外计算即可生成新的签名,因为 (k, n)-阈值环签名是 k 个独立的 (1, n)-环签名的组合。此前已有一些阈值环签名方案具备特殊属性,如恒定大小的环签名、可个体关联的阈值环签名、可追踪的环签名、可分离的阈值环签名、基于短签名的环签名、基于身份的环签名以及无证书环签名方案等,但尚未有能提供阈值 k 灵活性的 (k, n)-环签名方案。
2. 预备知识
2.1 灵活 (k, n)-环签名方案框架
灵活 (k, n)-环签名方案由三个算法 (G, S, V) 组成:
-
密钥生成算法 G
:(pkj, skj) ← G(1λj),这是一个概率多项式时间算法,输入安全参数 λj,输出实体 Uj 的公钥/私钥对 (pkj, skj)。
-
签名算法 S
:{σ1, · · · , σn} ← Sk,n(m, SKk, L),概率多项式时间算法,输入消息 m、k 个私钥集合 SKk 和包含对应 SKk 的 n 个公钥集合 L,输出消息 m 的 (k, n)-环签名 σ = {σ1, · · · , σn}。每个 σi(1 ≤ i ≤ n)是同一消息 m 的 (1, n)-环签名。
-
验证算法 V
:1/0 ← V(m, ˘σt, L),确定性多项式时间算法,输入消息 m、t 个 (1, n)-环签名的子集 ˘σt(t ≤ k)和 n 个公钥集合 L,分别返回 1 或 0 表示接受或拒绝阈值为 t 的环签名。
2.2 安全定义
环签名的安全性包括签名者模糊性和不可伪造性两个方面:
-
签名者模糊性
:设 L = {pk1, · · · , pkn} 是 n 个公钥的集合,每个公钥按 (pki, ski) ← G(1λi) 生成。(k, n)-环签名方案提供无条件的签名者模糊性,即给定 (skL, L, m, σ)(其中 skL 和 L 定义同 2.1 节,m 是消息,σ 是签名算法生成的有效签名),任何无界敌手 A 输出 ski ∈ SKk 的 i 的概率为 k/n。这保证了即使所有私钥都被披露,也无法确定 n 个可能签名者中哪 k 个实际联合生成了 (k, n)-环签名。
-
不可伪造性
:通过模拟器 Sim 和敌手 A 之间的模拟游戏定义。Sim 生成 n 个公钥集合 L 给 A,A 可根据自适应策略查询以下预言机:
-
腐败预言机 CO
:输入公钥 pki ∈ L,返回对应私钥 ski。
-
短期公钥生成预言机 SGO
:输入公钥集合 L,返回每个签名阶段 {pk1, · · · , pkn} 的短期公钥 Z = {z1, · · · , zn},每次运行协议生成的短期公钥集合相互独立。
-
短期私钥腐败预言机 SCO
:输入短期公钥 zi ∈ Z,返回公钥为 pki 的用户的对应短期私钥 ri。
-
签名预言机 SO
:输入阈值 k ∈ {1, · · · , n}、SGO 生成且未作为 SO 输入一部分的 n 个短期公钥集合 Z、|K| = k 的公钥集合 K 和消息 m ∈ M,返回公钥在 K 中的用户集合签名的有效签名 σ。
Sim 负责回复所有预言机查询,A 还可访问方案的所有哈希函数(视为随机预言机)。上述步骤可执行多项式多次,A 可自适应决定何时停止。游戏结束时,A 输出伪造的 (k, n)-环签名 σ∗、阈值 k、短期公钥集合 Z∗和消息 m。若满足以下条件,A 赢得游戏:
1. V(m, σ∗, L) = 1。
2. 短期公钥集合 Z∗ 是新鲜的,由 SGO 生成且未作为 SO 的输入。
3. L 中至多 (k - 1) 个公钥输入到 CO,或 Z∗ 中至多 (k - 1) 个对应伪造签名 σ∗ 的短期公钥输入到 SGO。
4. σ∗ 不是 SO 对包含消息 m 的任何输入的查询输出。
若任何概率多项式时间攻击敌手 A 赢得模拟游戏的概率在安全参数 λ 下可忽略不计,则灵活 (k, n)-环签名方案是不可伪造的。
3. 构建模块:Abe 等人的 1 出 n 签名方案
3.1 系统设置
系统中用户 Ui 的公钥定义为 (pi, qi, gi, yi, Hi),私钥为 xi ∈ Zqi。其中 pi, qi 是两个大素数且 qi|pi - 1,gi 是 Z∗pi 中阶为 qi 的元素,yi = gixi mod p,Hi : {0, 1}∗ → Zqi 是抗碰撞的单向哈希函数。
3.2 签名过程
设 L 是 n 个公钥的列表,签名者 Uk 用私钥 xk 生成消息 m ∈ {0, 1}∗ 的 1 出 n 签名步骤如下:
1.
初始化
:Uk 选择 αk ∈ R Zqk,计算 ak = gkαk mod pk,ck+1 = Hk+1(L||m||ak)。
2.
前向序列
:对于 j = k + 1, · · · , n - 1, 0, · · · , k - 1,Uk 选择 sj ∈ R Zqj,计算 aj ← gjsjyjcj mod pj,cj+1 ← Hj+1(L||m||aj)。
3.
形成环
:Uk 计算 sk = αk - xkck mod qk,消息 m 的签名 σ 为 σ ← (c1, s1, · · · , sn)。
3.3 验证过程
任何验证者按以下协议检查签名 σ:
- 对于 j 从 1 到 n,计算 aj = gjsjyjcj mod pi,cj+1 = Hj+1(L||m||aj)。
- 当且仅当 c1 = cn+1 时,接受 σ 为有效的 1 出 n 签名,否则拒绝。
需要注意的是,运行上述协议 k 次不能保证生成 (k, n)-环签名,因为生成的 k 个签名可能由少于 k 个实体(极端情况下甚至一个实体)生成。
4. 从 (1, n)-环签名到 (k, n)-环签名
4.1 高层概述
方案的总体思路是为每个签名者 Ui 提供额外的短期私钥/公钥对 (ri, zi),其中 zi = giri - Hi(li),li 是签名者 Ui 选择的公共值,且 Ui 选择的 li 与 Uj 选择的 lj 不同。为简单起见,1 ≤ i ≤ k 的每个 li 从 1 到 k 中选择,li 代表签名者 Ui 要闭合(签名)的第 li 个环(即第 li 个 1 出 n 签名)。签名消息需要长期和短期私钥。虽然签名者 Ui 的短期公钥 zi 在每个环中保持不变,但对应的短期私钥在每个环中不同。由于离散对数问题的难度,每个签名者 Ui 只能确定一个与 zi 相关的秘密 ri 作为短期私钥,因此每个签名者只能闭合一个环,确保每个环由不同签名者闭合,这些环的组合即为所需的 (k, n)-环签名。签名使用每个 Ui 的公钥对 (yi, zi) 在所有环中进行验证,因此用户不能在两个环中选择两个不同的短期公钥 zi 和 z′i。
4.2 灵活 (k, n)-环签名方案
- 系统设置 :与第 3 节相同。
-
签名过程 :设 L 是 n 个公钥的列表,k 个签名者集合 S 生成消息 m ∈ {0, 1}∗ 的 (k, n)-环签名步骤如下:
1. 每个签名者 Ui ∈ S 随机选择一个 1 ≤ li ≤ k 的数,且若 Ui ≠ Ui′,则 li ≠ li′。为便于描述,假设 i 从 1 到 k 时,签名者 Ui 选择 i。
2. 对于非实际签名者但公钥 pkk+1, · · · , pkn 在集合 L 中的成员 Uj(k + 1 ≤ j ≤ n),签名者集合 S 协作随机为 j 从 k + 1 到 n 选择 zj ∈ Zpj。
3. 每个签名者 Ui ∈ S 先随机选择 ri ∈ Zqi,然后计算 zi = giri - Hi(i) mod pi,并向集合 S 中的所有签名者公开 zi。
4. 基于公共知识 ZL = {z1, · · · , zn}(每个 zj 代表 Uj 的短期公钥),每个签名者 Ui ∈ S 单独执行以下步骤形成环(生成 (1, n)-环签名):- 选择 α(i,i) ∈ R Zqi。
- 计算 a(i,i) = giα(i,i) mod pi。
- 计算 c(i,i+1) = Hi+1(L||m||ZL||a(i,i))。
- 前向序列 :对于 j = i + 1, · · · , n, 1, · · · , i - 1,签名者 Ui 为第 i 个环的 Uj 计算以下参数:
- 选择 s(i,j) ∈ R Zqj。
- 计算 a(i,j) ← ((zj + Hj(i))gj)s(i,j)yjc(i,j) mod pj。
- 计算 c(i,j+1) ← Hj+1(L||m||ZL||a(i,j))。
-
闭合环
:签名者 Ui 计算 s(i,i) = (α(i,i) - xic(i,i))/(ri + 1) mod qi 闭合第 i 个环。
5. 每个 Ui (1 ≤ i ≤ k)将步骤 4 的结果 (c(i,1), s(i,1), · · · , s(i,n)) 输出给集合 S 中的签名者。
6. 签名组 S 输出步骤 5 的结果以及短期公钥集合 ZL = {z1, · · · , zn},形成消息 m 的签名 σ:
σ ← (ZL, {1≤i≤k (c(i,1), s(i,1), · · · , s(i,n))})
-
验证过程 :任何验证者按以下协议检查签名 σ:
1. 对于 i 从 1 到 k,j 从 1 到 n,计算:- a(i,j) = (zj + Hj(i))gjs(i,j)yjc(i,j) mod pj。
-
若 j ≠ n,计算 c(i,j+1) = Hj+1(L||m||ZL||a(i,j))。
2. 当且仅当对于所有 1 ≤ i ≤ k,c(i,1) = H1(L||m||ZL||a(i,n)) 时,接受 σ 为 (k, n)-环签名,否则拒绝。
5. 安全分析
5.1 一致性证明
方案的一致性指通过签名生成协议正确生成的签名应始终能被同一方案的签名验证协议接受。在本方案中,要证明一致性,只需证明对于每个 1 ≤ i ≤ k,((zi + Hi(i))gi)s(i,i)yic(i,i) mod pi = giα(i,i) mod pi。当签名正确生成时,以下推导成立:
((zi + Hi(i))gi)s(i,i)y c(i,i) i
= ((zi + Hi(i))gi)(α(i,i)−xic(i,i))/(ri+1)y c(i,i) i
= ((giri −Hi(i) + Hi(i))gi)(α(i,i)−xic(i,i))/(ri+1)y c(i,i) i
= (gri i gi)(α(i,i)−xic(i,i))/(ri+1)y c(i,i) i
= g (ri+1)(α(i,i)−xic(i,i))/(ri+1) i g xic(i,i) i
= giα(i,i)−xic(i,i)+xic(i,i)
= giα(i,i) (mod pi)
5.2 签名者模糊性和不可伪造性
当 k = 1 时,若 Abe 等人的方案在随机预言机模型中具有签名者模糊性和 EUF - ACMA 安全性,则本方案是无条件签名者模糊的,并提供针对自适应选择消息攻击的存在性不可伪造性(EUF - ACMA)。
证明思路:假设存在敌手 A 能在 k = 1 时对本方案进行存在性伪造签名或破坏签名者模糊性,构造一个概率多项式时间算法/伪造者 B,通过运行 A 并模拟 A 可查询的预言机,来破坏 Abe 等人方案的 EUF - ACMA 安全性或签名者模糊性。
模拟过程如下:
|预言机|模拟方式|
| — | — |
|短期公钥生成预言机 SGOnew|输入公钥集合 L,B 为每个 1 ≤ i ≤ n 选择 ri ∈ Zqi,计算 zi ← gri i - Hi(1) mod pi,返回 {z1, · · · , zn} 给 A,并记录 {(r1, z1), · · · , (rn, zn)} 在初始为空的 SGOnew - List 中。|
|短期私钥腐败预言机 SCOnew|输入 zi,B 从 SGOnew - List 中输出对应的 ri。|
|随机预言机 Hnew i|输入 (L′||m||ZL′||a),B 设置 m′ = m||ZL′,向自身的随机预言机 Hi 输入 (L′||m′||a),将 Hi 的输出转发给 A 作为 Hnew i 的输出。|
|签名预言机 SOnew|输入 (L′, ZL′, m)(ZL′ 在 SGOnew - List 中),B 设置 m′ = m||ZL′,向自身的签名预言机 SO 输入 L′ 和消息 m′,假设 SO 输出 σ′ = (c′ 1, s′ 1, · · · , s′ n),B 为每个 i 从 1 到 n 设置 si = s′ i/(ri + 1),设置签名 σ = (ZL′, c1, s1, · · · , sn) 并返回给 A,记录 (σ, σ′) 在 Sign - List 中。|
|揭示预言机 ROnew|输入签名 σ 由签名预言机 SOnew 生成,B 从 Sign - List 中找到对应的 σ′,向自身的揭示预言机 RO 查询,将输出的真实签名者公钥转发给 A。|
若 A 赢得游戏,通过相应转换,B 也能赢得其游戏。因此,当 k = 1 时,若存在敌手 A 能以不可忽略的概率破坏本方案的 EUF - ACMA 安全性或签名者模糊性,则可构造敌手 B 以不可忽略的概率破坏 Abe 等人方案的 EUF - ACMA 安全性或签名者模糊性。
当 k ≥ 2 时,将 (k, n)-环签名 σ 划分为 σ1, · · · , σk,其中 σi = (c(i,1), z1, · · · , zn, s(i,1), · · · , s(i,n))(1 ≤ i ≤ k),且所有 σi 共享相同的 z1, · · · , zn 值。由 k = 1 时的结论可知,每个 σi 是无条件签名者模糊的且在随机预言机模型中具有 EUF - ACMA 安全性。要证明签名 σ 是安全的 (k, n)-环签名,只需证明每个签名 σi 由不同签名者签名,即第 l 个环(签名 σl)由在步骤 (1) 中选择 l 的签名者闭合。同时,可证明给定固定的短期公钥 zi,即使知道长期私钥 xi,没有对应的短期私钥 ri 也无法闭合环。
下面用 mermaid 绘制签名过程的流程图:
graph TD;
A[开始] --> B[签名者选择 li];
B --> C[协作选择非签名者 zj];
C --> D[签名者计算 zi 并公开];
D --> E[签名者形成环];
E --> F[输出环签名结果];
F --> G[形成 (k,n)-环签名];
G --> H[结束];
综上所述,本“灵活”k 出 n 签名方案在理论上具有良好的安全性和灵活性,为签名方案的发展提供了新的思路。
“灵活”k 出 n 签名的设计与分析
6. 方案特点总结
- 阈值灵活性 :当新的阈值 k′ < k 时,无需额外计算即可生成新的签名,这一特性大大提高了签名方案在不同场景下的适应性。例如,在一些动态的签名场景中,参与者数量可能会发生变化,此时可以灵活调整阈值而无需重新进行复杂的计算。
- 多属性结合 :除了基本的匿名性和不可伪造性外,还具备多种特殊属性,如不同类型的环签名方案所拥有的特性,为不同的应用需求提供了更多的选择。
7. 与其他方案对比
| 方案类型 | 特点 | 与本方案对比 |
|---|---|---|
| 恒定大小环签名 | 签名大小恒定 | 本方案更注重阈值的灵活性,签名大小可能不恒定,但在阈值调整方面有优势 |
| 个体可关联阈值环签名 | 可确定两个环签名是否由同一签名者签署 | 本方案主要关注签名者模糊性和不可伪造性,未突出个体可关联特性 |
| 可追踪环签名 | 可限制过度匿名性 | 本方案在保证签名者模糊性的同时,未强调追踪功能 |
| 可分离阈值环签名 | 可在单个阈值环签名中使用多种公钥 | 本方案侧重于阈值的灵活调整和签名的安全性 |
| 基于短签名的环签名 | 由短签名派生而来 | 本方案有自己独特的构建方式,并非基于短签名 |
| 基于身份的环签名 | 具有基于身份的特性 | 本方案未突出基于身份的特点,更强调阈值灵活性和安全性 |
| 无证书环签名 | 避免公钥有效性检查 | 本方案未涉及无证书相关特性,重点在阈值签名的设计 |
8. 应用场景分析
- 金融交易 :在一些多方参与的金融交易中,可能需要不同数量的参与者进行签名确认。例如,在一个多方投资项目中,初始设定需要 k 个投资者签名才能生效,但在某些情况下,可能只需要 k′(k′ < k)个投资者签名即可进行一些小的调整,本方案的阈值灵活性可以很好地满足这种需求。
- 分布式系统 :在分布式系统中,不同节点之间的协作可能需要进行签名验证。当系统中的节点数量发生变化时,或者不同的操作需要不同数量的节点签名时,本方案可以灵活调整阈值,保证系统的正常运行。
9. 潜在挑战与改进方向
- 计算复杂度 :虽然在阈值调整方面有优势,但签名和验证过程可能涉及较多的计算,尤其是在签名者数量较多时。可以考虑优化算法,减少不必要的计算步骤,提高计算效率。
- 存储需求 :签名过程中需要存储一些短期公钥和签名信息,随着签名者数量和签名次数的增加,存储需求可能会增大。可以研究更高效的存储方式,减少存储开销。
下面用 mermaid 绘制方案应用流程的流程图:
graph TD;
A[应用场景选择] --> B[确定阈值 k];
B --> C[签名者参与签名];
C --> D[验证签名];
D --> E{验证是否通过};
E -- 是 --> F[应用执行];
E -- 否 --> G[重新签名或调整阈值];
G --> C;
10. 总结
“灵活”k 出 n 签名方案为签名领域带来了新的思路和方法。通过提供阈值的灵活性,结合多种安全特性,该方案在不同的应用场景中具有广泛的应用前景。虽然目前还存在一些潜在的挑战,但通过不断的研究和改进,有望进一步提高方案的性能和实用性。在未来的研究中,可以继续探索如何优化方案,使其更好地适应各种复杂的应用环境。同时,也可以考虑将本方案与其他技术相结合,创造出更强大的签名解决方案。
超级会员免费看
3260

被折叠的 条评论
为什么被折叠?



