【问题标题】:Calculate shares of a secret (LSS) in GO计算 GO 中的秘密 (LSS) 份额
【发布时间】:2021-03-21 16:39:16
【问题描述】:

Python 有一个charm-crypto 框架,它在secretutil 类中实现。 通过使用这个类,我们可以将一个秘密分成几部分。然后我们可以使用这个类中定义的所有其他函数来重构我们的秘密。

例如:

给定一个字符串策略 P(例如 CONDITION1 和 CONDITION2 或 CONDITION3),我们可以使用 createPolicy 方法来解析字符串并创建一个策略对象:

policy_object = createPolicy(CONDITION1 and CONDITION2 or CONDITION3) => ((CONDITION1 and CONDITION2) or CONDITION3)

然后我们可以利用 calculateSharesList 方法创建一个秘密的共享,例如:

sharesOfASecret = calculateSharesList(someSecret, policy_object)

最后但并非最不重要的一点是,我们可以使用determines whether a given set of attributes satisfies the policyprune 方法和计算给定策略字符串属性的不同系数的getCoefficients 方法。

那么,GO 是否存在任何 LSS 插件?或者对如何在 GO 中实现上述内容有任何想法?

简而言之,我需要实现的是:

  1. 给函数一些策略作为字符串
  2. 该函数构造一个策略对象(charm-crypto:createPolicy()
  3. 然后使用策略对象来计算秘密的份额(charm-crypto:calculateSharesList()

然后进行解密:

  1. 另一个函数将一些属性和策略作为输入
  2. 该函数检查属性是否满足策略(charm-crypto:prune()
  3. 计算策略的系数(charm-crypto:getCoefficients()
  4. 重建秘密

【问题讨论】:

    标签: go cryptography


    【解决方案1】:

    George,我认为您遇到的是 Threshold Secret Sharing 的想法,这恰好是您详细提到的内容的背后。为了在任何语言中实现这一点,我建议您使用 Berry Shoenmakers,它是 Secret Sharing 的详细、高级和全面的版本:

    A Simple Publicly Verifiable Secret Sharing Scheme and its Application to Electronic Voting

    但是,您想要实现的目标可以是:

    Various Implementations of Shamir's Secret Sharing Scheme

    还有一个方案的 Go 实现,您可以在开始执行任务之前完成它。

    Cavaet:小心,你如何生成你的秘密和调整。 :D

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 1970-01-01
      • 2021-07-25
      • 2010-12-02
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多