首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字签名的安全多方计算

数字签名的安全多方计算
EN

Cryptography用户
提问于 2019-02-23 09:00:11
回答 1查看 644关注 0票数 2

是否有任何实用的算法允许以下列方式使用公钥密码(RSA或ECC)

  1. 有N个派对。到M为止,都是恶意的对手(被信任,但被默默地接管)。对于任意N和M= 1,我都会很满意。
  2. 各方可以安全地沟通。不许偷听。
  3. 私钥K以某种方式在所有N方之间被分割和共享。就像Shamir的秘密分享一样。没有其他N-1缔约方的数据,任何一方都无法恢复K。
  4. 所有各方都收到一些数据S。
  5. 各方应该能够用K加密S (我需要数字签名),但不向恶意对手透露任何有用的信息;或者应该发现有太多的恶意对手和失败。
EN

回答 1

Cryptography用户

发布于 2019-02-23 14:42:04

下面是一个相当直截了当的方法,使用RSA:

设置阶段(假设一个可信的经销商只参与安装阶段;这样的设置没有经销商可以完成,但要复杂得多):

  • 该交易商选择一个随机的RSA公共/私有密钥区(n,e)(d)
  • 然后,经销商选择带有N约束的d_1, d_2, …, d_Nd_1 + d_2 + … + d_N \equiv d \pmod{ \lambda(n) }
  • 经销商私下将d_i发送给派对i,并发布公钥(n, e)

签名生成阶段:

  • 每一方都获得要签名的S值的副本。
  • 各方i确定地将S (可能使用PKCS #1.5签名填充,可能使用PSS使用S种子的随机性),然后将其提高到d_in的幂次,即计算sig_i = \text{Pad}(S)^{d_i} \bmod n
  • 每一方都将sig_i发送给收集器,由收集器计算sig = sig_1 \cdot sig_2 \cdot … \cdot s_n \bmod n并广播它。
  • 每个人都检查sig是否是值s的有效签名;如果不是,则检测到恶意方。

让我们通过这些要求:

  • 没有任何一方可以在没有其他d当事方数据的情况下恢复密钥N-1

如果没有所有的d_i值,您就无法重构d值。

  • 5.各方应能够用秘密密钥S (实际上是S的散列,我需要数字签名)加密d,但不向恶意对手透露d的任何有用信息。

每一方都充当计算f(x) = x^{d_i} \pmod n的甲骨文,但是如果离散日志问题很难解决,则无法从中恢复d_i

现在,恶意方可以执行拒绝服务攻击(通过不正确计算他的sig_i值)。另一方面,我相信,如果您要求N-1各方无法恢复密钥(或者生成任意签名,这实际上与恢复密钥相同),则这将始终是正确的,因此我将声明这符合您的要求。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/67548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档