13、阈值KCDSA签名的高效可验证秘密共享新方法

阈值KCDSA签名的高效可验证秘密共享新方法

在过去的二十年里,高级密码学和网络安全技术得到了显著发展。尤其是许多密码技术被引入到多方计算问题中,以确保信息的保密性和完整性。然而,一些研究成果在实际应用中存在可行性不足的问题。

现有秘密共享方案
  • Shamir秘密共享 :该方案有一个可信的分发者,负责向每个参与者分发份额。分发者若要分发秘密α,会随机选择一个t次多项式f(x),使得f(0) = α,然后将计算得到的份额发送给参与者。t个或更多参与者可以通过插值多项式来恢复秘密α,一般表示为α ← (Q, t) → (α₁, …, αₙ)。
  • 可验证秘密共享(VSS) :在这个方案中,每个参与者都希望验证从其他参与者那里收到的信息的有效性。目前已经提出了许多VSS方案,这些方案通常对多项式的所有系数进行承诺,然后每个参与者使用承诺的信息来验证从分发者(或其他参与者)那里收到的信息。VSS方案基于计算保密性或信息论保密性。
  • 联合随机秘密共享 :在联合随机秘密共享方案中,所有参与者都充当分发者,共同选择对应于一个随机值的(t, n)阈值秘密共享的份额。所有参与者通过添加收到的部分信息来获得自己的份额,然后t个或更多参与者可以通过插值来评估秘密。每个参与者可以使用VSS来验证收到的信息的有效性。
  • 两个秘密的乘法 :给定两个在参与者之间共享的秘密α和β,计算它们的乘积αβ,同时保持原始值的秘密性。在(t, n)阈值秘密共享方案中,如果α和β分别由t + 1次多项式共享,每个参与者可以在本地将他的α和β的份额相乘,结果将是一个2t次多项式上的αβ的份额。即2t + 1个或更多参与者可以插值多项式来评估秘密αβ,此外,该方案需要联合零秘密共享来进行重新随机化过程。为了克服上述缺点,已经提出了一种新的高效协议,该协议可以在单一步骤中降低多项式的次数,并且不需要使用重新随机化多项式,但该方案需要三次联合随机秘密共享和一个(2t + 1)×(2t + 1)矩阵的逆计算,并且需要2t + 1个参与者合作来生成秘密。
  • 指数插值方案 :给定每个参与者都有秘密信息α的份额αₗ,指数插值方案是对α的指数形式进行插值,而不是对α本身进行插值。每个参与者使用Shamir秘密共享方案分发他的份额,t + 1个或更多参与者可以使用拉格朗日插值系数来插值评估秘密的指数形式。
  • 主动秘密共享方案 :在(t, n)阈值方案中,攻击者需要破坏超过t个参与者才能获取秘密,并且至少破坏n - t个份额才能破坏信息。如果秘密的生命周期很长,攻击者可能会在很长一段时间内进行攻击。因此,为了保护长期存在的秘密,我们需要定期刷新秘密。主动秘密共享方案满足了这一需求,它由三个协议组成:
    1. 私钥更新协议
    2. 份额恢复协议(包括丢失份额检测)
    3. 份额更新协议

使用主动秘密共享方案可以长时间安全地保存KCDSA签名密钥,同时其份额可以定期刷新。攻击者若要破解阈值签名方案,需要在一个时间段内破坏t个服务器,而不是在密钥的整个生命周期内进行攻击。

基本构建模块
  • 使用哈希函数的VSS :一般来说,基于Feldman或Pedersen秘密共享方案的VSS可以让参与者检查从其他参与者那里收到的份额的有效性,但计算量较大。Feldman方案仅保证秘密的计算安全性,而Pedersen方案保证共享秘密的信息论保密性。为了降低计算复杂度,我们提出了一种使用哈希函数的VSS。该协议可以使用哈希函数验证收到的份额的正确性,但不能证明承诺的值是从次数最多为t且f(0) = s的多项式f(x)中获得的。
    • 共享阶段
      1. 选择两个t次随机多项式:
        • (f(x)=a_0 + a_1x + \cdots + a_tx^t),其中(a_i\in Z_q)
        • (g(x)=b_0 + b_1x + \cdots + b_tx^t),其中(b_i\in Z_q)
      2. 计算以下值:
        • (\alpha_i = f(i)),(\beta_i = g(i))
        • 计算(H(\alpha_1, \cdots, \alpha_n))和(H(\beta_1, \cdots, \beta_n))
        • 计算(\gamma_i = \alpha_i + \beta_i\ mod\ q)
      3. 广播((\alpha_i, \beta_i))
    • 重建阶段
      1. 收集t + 1个以上的份额。
      2. 插值(\hat{f}(x))和(\hat{g}(x))。
      3. 计算(\hat{\alpha}_i = \hat{f}(i))和(\hat{\beta}_i = \hat{g}(i))。
      4. 检查以下方程:
        • (H(\hat{\alpha}_1, \cdots, \hat{\alpha}_n) \stackrel{?}{=} H(\alpha_1, \cdots, \alpha_n))
        • (H(\hat{\beta}_1, \cdots, \hat{\beta}_n) \stackrel{?}{=} H(\beta_1, \cdots, \beta_n))
          如果测试通过,则恢复的秘密被认为是(\hat{f}(0));否则,使用公布的信息检查以下方程以识别错误的参与者:
        • (\prod_{i = 1}^{n} H(\alpha_i) \stackrel{?}{=} H(\prod_{i = 1}^{n} \alpha_i))

以下是该过程的mermaid流程图:

graph TD;
    A[共享阶段] --> B[选择随机多项式f(x)和g(x)];
    B --> C[计算αi和βi];
    C --> D[计算H(α1, ..., αn)和H(β1, ..., βn)];
    D --> E[计算γi];
    E --> F[广播(αi, βi)];
    F --> G[重建阶段];
    G --> H[收集t + 1个以上份额];
    H --> I[插值f^(x)和g^(x)];
    I --> J[计算α^i和β^i];
    J --> K[检查方程];
    K --> L{测试通过?};
    L -- 是 --> M[恢复秘密为f^(0)];
    L -- 否 --> N[检查方程识别错误参与者];
  • 基于Pedersen VSS的联合无条件安全RSS :该方案在共享阶段使用哈希函数检查收到的数据的有效性,然后在重建阶段使用Pedersen VSS验证广播的份额的有效性。即如果没有发生故障,参与者在共享阶段不需要进行指数运算。

    • 共享阶段
      1. 每个参与者选择两个随机多项式:
        • (f_l(x)=a_{l0} + a_{l1}x + \cdots + a_{lt}x^t)
        • (g_l(x)=b_{l0} + b_{l1}x + \cdots + b_{lt}x^t)
      2. 计算值(\alpha_{l,m} = f_l(m))和(\beta_{l,m} = g_l(m))。
      3. 计算并广播两个值:
        • (H(\alpha_{l,1}, \cdots, \alpha_{l,n}))和(H(\beta_{l,1}, \cdots, \beta_{l,n}))
      4. 向其他参与者发送(\alpha_{l,m})和(\beta_{l,m}),同时从其他参与者那里接收(\alpha_{m,l})和(\beta_{m,l})。
      5. 使用验证方程检查收到的值的正确性:
        • (H(\alpha_{l,m}, \beta_{l,m}) \stackrel{?}{=} H(\alpha_{m,l}, \beta_{m,l}))
          如果测试通过,则进行下一步;否则,检查以下方程。如果测试不通过,参与者打开他的份额并停止协议。
        • (\prod_{n = 0}^{t} H(\alpha_{l,m}) \stackrel{?}{=} H(\prod_{n = 0}^{t} \alpha_{l,m}))
      6. 计算自己的份额:
        • (v_l = \sum_{m = 1}^{n} \alpha_{l,m})
        • (h_l = \sum_{m = 1}^{n} \beta_{l,m})
    • 重建阶段
      1. 每个参与者广播值(h_l, v_l)。
      2. 每个参与者使用以下方程检查收到的(h_l, v_l):
        • (\prod_{m = 0}^{t} H(v_m) \stackrel{?}{=} H(\prod_{m = 0}^{t} v_m))
      3. 收集通过上述测试的(t + 1)个份额。
      4. 插值(\hat{v}(x))、(\hat{h}(x))、(\hat{f}(x))和(\hat{g}(x)),并计算(\hat{f}(l))和(\hat{g}(l))。
      5. 再次检查以下方程:
        • (\prod_{m = 0}^{t} H(\hat{v} m) \stackrel{?}{=} H(\prod {m = 0}^{t} \hat{v}_m))
      6. 将(\hat{v}(0))作为秘密信息传递。
  • 承诺份额乘法的ZK证明

    • 交互式ZK证明 :证明者想要向验证者证明他知道如何打开这些承诺,并且他所知道的C的打开值确实是他在A和B中承诺的值的乘积。具体步骤如下:
      1. 证明者随机选择d和s,向验证者发送消息V = g^d,其中d ∈ Z_q。
      2. 验证者随机选择一个数字e,e ∈ Z_q,并发送给证明者。
      3. 证明者计算值y和w:
        • y = d + eβ
        • w = s + eσ
      4. 验证者检查方程:
        • g^w = V * A^e
          证明者也可以用类似的方法向验证者证明他知道β的多项式表示。证明者还需要证明他知道αβ的多项式表示,并且指数是两个已知秘密的乘积。
    • 非交互式ZK证明 :提出了基于计算保密性和信息论保密性的非交互式ZK证明。以基于计算保密性的非交互式ZK证明为例,步骤如下:
      1. 随机选择g, c。
      2. 计算V₀ = g^g,A = g^α,B = g^β,C = g^αβ。
      3. 计算e = H(V₀ || A || B || C)。
      4. 计算y = g + eβ,w = s + eσ。
      5. 验证方程:
        • g^w = V₀ * A^e
        • g^y = B^e
        • C = A^β

以下是交互式ZK证明的步骤表格:
|步骤|证明者|验证者|
|----|----|----|
|1|随机选d, s,发V = g^d| - |
|2| - |随机选e,发e给证明者|
|3|计算y = d + eβ,w = s + eσ| - |
|4| - |检查g^w = V * A^e|

KCDSA签名

KCDSA(韩国认证数字签名算法)是韩国的标准数字签名算法。KCDSA由公共信息p、q、g、公钥y和私钥x组成,其中:
- p:一个大素数,长度为512 + 256i,i = {0, …, 6}。
- q:p - 1的一个素因子,长度为128 + 32j,j = {0, …, 4}。
- g:阶为q(模p)的基元素。
- x:签名者的私钥,x ∈ Z_q。
- y:签名者的公钥,y = g^x mod p。
- H:抗碰撞哈希函数,输出长度为q。
- Z:签名者认证数据的哈希值。

签名对为(c, s),其中Z是验证者的证书。KCDSA的签名生成过程和验证过程如下:
- 签名生成
- k ∈ Z_q随机选取
- r = (g^k mod p) mod q
- e = H(m || r || Z)
- s = (k - xe) mod q
- 签名验证
- u₁ = (se)⁻¹ mod q
- u₂ = (re) mod q
- v = (g^u₁ * y^u₂ mod p) mod q
- 检查v = r

以下是KCDSA签名生成和验证的mermaid流程图:

graph TD;
    A[签名生成] --> B[随机选k];
    B --> C[计算r];
    C --> D[计算e];
    D --> E[计算s];
    E --> F[签名对(c, s)];
    F --> G[签名验证];
    G --> H[计算u1];
    H --> I[计算u2];
    I --> J[计算v];
    J --> K{检查v = r?};
    K -- 是 --> L[签名有效];
    K -- 否 --> M[签名无效];
鲁棒阈值KCDSA协议

该协议由密钥分发阶段和签名分发阶段组成。
- 分布式密钥对生成阶段
1. 分发私钥x :参与者使用Pedersen - VSSH生成对应于秘密x的份额,x在Z_q中均匀分布,多项式次数为t。
2. 计算并广播公钥y = g^x mod p
- 参与者使用Pedersen - VSSH生成一个随机值a,a在Z_q 中均匀分布,多项式次数为t。
- 参与者生成常数项为0的2t次随机多项式,将份额记为{e₁, …, eₙ}。
- 参与者l广播vₗ = (xₗ + aₗ + eₗ) mod q,使用Mult - ZK。
- 参与者l进行以下计算:
- 插值v = (ax) mod q
- 计算v⁻¹ = (ax)⁻¹ mod q
- 计算y = g^x = g^(ax * (ax)⁻¹) = (g^ax)^(ax)⁻¹ mod p
-
分布式签名阶段
1.
生成N :参与者使用Pedersen - VSSH生成一个在Z_q中均匀分布的秘密值N,多项式次数为t。
2.
执行联合零秘密共享 :参与者生成常数项为0的2t次随机多项式,将生成的份额记为{f₁, …, fₙ}。
3.
计算值
- 插值z = g^N mod p
- e = H(m || z || Z)
4.
生成s = (N - xk) mod q
- 参与者l使用Mult - ZK计算sₗ = (Nₗ - xₗkₗ + fₗ) mod q
- 插值s = (N - xk) mod q
5.
输出签名对(u, v)作为消息M的签名 *

可以证明,提出的KCDSA签名是一个(t, n)鲁棒阈值协议,如果参与者数量n ≥ 2t + 1,它可以容忍多达t个窃听和停止故障。这种新的可验证秘密共享方案和乘法协议可以应用于任何阈值密码系统,为密码学的实际应用提供了更高效和安全的解决方案。

阈值KCDSA签名的高效可验证秘密共享新方法

鲁棒阈值KCDSA协议的优势与应用场景

鲁棒阈值KCDSA协议具有显著的优势,使其在实际应用中具有广泛的前景。

  • 安全性增强 :该协议能够容忍多达t个窃听和停止故障,只要参与者数量n ≥ 2t + 1。这意味着即使部分参与者出现故障或被攻击,系统仍然能够正常运行并保证签名的安全性。例如,在一个分布式的认证系统中,多个服务器作为参与者共同完成签名过程,即使其中一些服务器被恶意攻击或出现故障,整个系统依然可以生成有效的签名,确保数据的完整性和真实性。
  • 可扩展性 :协议的设计允许动态添加或移除参与者,而不需要重新分发所有的秘密份额。这使得系统可以根据实际需求灵活调整参与者的数量,适应不同规模的应用场景。比如,在一个不断发展的区块链网络中,可以根据节点的加入和退出,灵活调整参与签名的节点数量,而不会影响整个系统的正常运行。
  • 应用场景广泛 :阈值签名方案在公共密钥基础设施(PKI)中的认证机构(CA)有着重要的应用。在CA中,每个签名系统都有一个与公钥对应的共享私钥,通过阈值签名方案可以确保私钥的安全性,同时多个参与者共同生成签名,提高了系统的可靠性和可用性。此外,该协议还可以应用于分布式金融系统、物联网设备的认证等领域,为这些领域的安全通信和数据交互提供保障。
技术挑战与解决方案

虽然鲁棒阈值KCDSA协议具有很多优势,但在实际应用中也面临一些技术挑战,以下是一些常见的挑战及相应的解决方案。

  • 计算复杂度 :协议中的一些操作,如多项式插值、指数运算等,计算复杂度较高,特别是在参与者数量较多的情况下,会影响系统的性能。为了解决这个问题,可以采用优化的算法和数据结构,减少不必要的计算。例如,使用快速多项式插值算法,降低插值的时间复杂度。同时,可以利用并行计算技术,将计算任务分配到多个处理器或节点上,提高计算效率。
  • 通信开销 :协议需要参与者之间进行大量的信息交换,包括份额的分发、广播和验证等,这会导致较大的通信开销。为了减少通信开销,可以采用压缩技术对传输的数据进行压缩,减少数据的传输量。此外,可以优化通信协议,减少不必要的消息传递,提高通信效率。例如,采用广播聚合技术,将多个参与者的广播消息合并成一个消息进行传输,减少广播的次数。
  • 故障处理 :在实际应用中,可能会出现参与者故障、网络故障等问题,影响协议的正常运行。为了应对这些故障,可以设计完善的故障检测和恢复机制。例如,在协议中设置心跳机制,定期检测参与者的状态,及时发现故障参与者。当发现故障参与者时,可以采用备份机制,使用备份的参与者代替故障参与者,确保协议的继续执行。
未来发展趋势

随着密码学技术的不断发展和应用需求的不断增加,鲁棒阈值KCDSA协议也将不断发展和完善。以下是一些可能的未来发展趋势。

  • 与新兴技术的融合 :随着区块链、物联网等新兴技术的发展,鲁棒阈值KCDSA协议可以与这些技术进行深度融合,为这些领域提供更安全、高效的签名解决方案。例如,在区块链网络中,阈值签名可以用于共识机制,提高区块链的安全性和可扩展性。在物联网设备中,阈值签名可以用于设备的认证和数据的加密传输,保障物联网的安全运行。
  • 量子抗性研究 :随着量子计算技术的发展,传统的密码学算法面临着被破解的风险。因此,研究具有量子抗性的阈值签名协议是未来的一个重要发展方向。可以采用基于格密码学、编码密码学等量子抗性的密码学算法,设计具有量子抗性的鲁棒阈值KCDSA协议,确保在量子时代的安全性。
  • 隐私保护增强 :在实际应用中,用户对隐私保护的要求越来越高。未来的鲁棒阈值KCDSA协议可以进一步增强隐私保护功能,例如采用零知识证明、同态加密等技术,在保证签名有效性的同时,保护用户的隐私信息。
总结

鲁棒阈值KCDSA协议通过提出新的可验证秘密共享方案和基于非交互式ZK证明的两个秘密的乘法协议,为阈值KCDSA签名提供了一种高效、安全的解决方案。该协议在安全性、可扩展性等方面具有显著优势,能够应用于多种实际场景。虽然在实际应用中面临一些技术挑战,但通过采用优化的算法和机制,可以有效解决这些问题。未来,随着密码学技术的不断发展,鲁棒阈值KCDSA协议有望与新兴技术深度融合,进一步提升其性能和安全性,为信息安全领域做出更大的贡献。

以下是鲁棒阈值KCDSA协议的整体流程mermaid流程图:

graph TD;
    A[鲁棒阈值KCDSA协议] --> B[分布式密钥对生成阶段];
    B --> C[分发私钥x];
    B --> D[计算并广播公钥y];
    A --> E[分布式签名阶段];
    E --> F[生成N];
    E --> G[执行联合零秘密共享];
    E --> H[计算值];
    E --> I[生成s];
    E --> J[输出签名对(u, v)];

以下是技术挑战与解决方案的表格:
|技术挑战|解决方案|
|----|----|
|计算复杂度高|采用优化算法和数据结构,利用并行计算技术|
|通信开销大|采用压缩技术,优化通信协议|
|故障处理|设计故障检测和恢复机制,采用备份机制|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值