围炉网

一行代码,一篇日志,一个梦想,一个世界

多重签名、门限签名、秘密分享三种签名方式的简单比较

  •  多重签名 (Multisig)

    • 比特币原生支持

    • 使用不同密钥多次签名,每个签名之间可相互独立,是否通过验签则是通过脚本或智能合约判断每一个签名是否都通过验签。多次签名、多次验签都在链上完成。

    • 可以配置比如只需要3把中的两把钥匙来签名,或者必须要黑钥匙但同时需要另外两把中的一把钥匙来签名

  • 门限签名(Threshold signature)

    • 各子签名之间具备一定的代数结构,因而最终可以合成一个主签名,只需验证主签名即可。多次子签名在链下完成,一次合成签名在链上完成,一次验签在链上完成。但私钥在签名过程中并没有明文恢复

    • 基于ECDSA的门限签名实现较为复杂

      • ECDSA

        • 输入

          • 私钥S1

          • 消息m

        • 方法

          • 创建一组随机的临时公私钥对R=k*G  (k临时私钥,R临时公钥)

          • 定义r是R的X轴坐标(在椭圆曲线密码学中,私钥是一个整数,公钥是曲线上的点即有X轴和Y轴的坐标)

          • 计算s=k-1(H(m)+S1*r) mod n  (H(m)消息的哈希值,n是椭圆曲线的参数)

        • 输出

          • 两个数的组合 (r,s) ,

        • JVRSS (Joint Verifiable Random Secret)

          • 生成共享密钥

          • 检验共享密钥

      • Lindell17 是基于同态加密和零知识证明的两方ECSDA

      • GG18 

        • 主要思路以(3,n)门限为例,介绍一下 3 个参与者共同完成 ECDSA 签名的思路。首先把随机数k由 3 份相加组成 k=k1+k2+k3 ,把私钥 x 由 3 份相加组成 x=w1+w2+w3 。每个参与者都只有其中的一份数据:

          • k_1, w_1         # P_1 掌握,不泄露给别人

          • k_2, w_2         # P_2 掌握,不泄露给别人

          • k_3, w_3         # P_3 掌握,不泄露给别人

          • 再想方设法去构造签名数据 r,s 。

        • Key Generation 结束后,门限 t 就确定了,以后还可以改变吗?比如从 (3,4) 改为 (5,7) ?答案是肯定的,不过在 GG18 论文中没有提到这一点。具体做法是分两步:第一步,从 (3,4) 变为 3 人 additive sharing;第二步,再由 3 人的 additive sharing 变为 (5,7)

    • 门限签名算法的对比:ECDSA和Schnorr,Schnorr算法可以较方便的构造门限签名

  • 秘密共享

    • 将一个信息拆分成若干份,并根据门限策略还原原信息的技术。信息碎片之间通过一定结构或性质关联,原信息的还原是通过数学(密码)算法实现。

  • 特性比较

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

沪ICP备15009335号-2