shamir秘密共享算法_原创丨BLS算法的魔幻之处——秘钥共享与阈值签名

摘要:在以太坊未来的 Casper 实现中,有非常多的验证者都要对区块签名,加密货币签名算法BLS 的脱颖而出自有它的道理。

ff236ed827701db69ce8b06873b001d7.png

加密货币签名算法BLS (Boneh-Lynn-Sacham)是一种可以实现签名聚合和密钥聚合的算法(即可以将多个密钥聚合成一把密钥,将多个签名聚合成一个签名)。

在以太坊未来的 Casper 实现中,有非常多的验证者都要对区块签名,要保证系统的安全性,同时节约存储空间,就需要用到这类签名聚合的算法。

此前,Stepan Snigirev写过一篇关于BLS的文章,很好地解释了BLS背后的基础知识和数学。文章中Stepan还解释了BLS的一些属性(例如可聚合)和用例以及如何使用聚合签名来实现简单的阈值方案。

相比于其他签名算法(如ECDSA),BLS可以说是纯粹的魔法!

BLS拥有着独一无二的属性。此外,本文还将着重介绍一种分布式密钥共享方案和一个基于BLS的阈值签名方案。

提出的方案在链上产生单个公钥和签名,并且在发送到m-of-n地址或稍后交易输出时,不需要存储关于公钥共享或签名者的元信息。

事实上,它与任何普通的1对1地址或消费没有什么区别,但由于附加作用,它改善了隐私性。

BLS的一些特质

在众多签名算法中,BLS具有一些非常独特的属性。如果没有这些(属性),后来提出的秘钥共享方案也是不存在的。

换句话说,如果BLS没有这些属性,我们甚至不会知道其将如何运作。

聚合性

此前,我们对BLS聚合的特点做了详细的阐述,在此我们要着重关注的是,使用BLS,可以聚合所有类型的基元(密匙、公钥、签名),而结果总是另一个有效的基元。

例如,如果聚合两个密钥,结果则是一个新的有效密钥。如果聚合密钥的两个对应的公钥,结果则将是一个新的公钥,且该公钥与之前聚合的密钥的公钥相匹配。

如果使用之前聚合的两个密钥和相同的哈希来创建的两个签名,那么新签名也将针对聚合的公钥进行验证。已经聚合的基元还可以进一步聚合,独立于聚合的顺序之外。

我们甚至可以这样概括。对于任何一组给定的密钥、公钥和签名元组,在其中一个基元上执行的任何操作,都可以在其他基元上重复相同的操作,并获得一个相互关联的新元组。

此外,如果操作嵌套更加复杂,其会更加适用。在这个方面,ECDSA算法就不可能做到。例如,多项式求值和插值可以与任何BLS原语一起使用,包括签名(非常难实现且受ECDSA限制),该特性将会允许一些很有趣的事情发生,之后我们会具体说明。

独特性和确定性

BLS签名是惟一且和确定的。这意味着,对于任何给定的公钥和消息对,都只存在一个有效的签名。不可能存在两个不同的签名去验证相同的公钥和消息的情况。

与ECDSA相比,这是非常不同的,在ECDSA中,使用签名的随机性可能会导致相同公钥和消息对应的签名数量不可计数。

当涉及到包含BLS签名的其他消息时,其会产生积极的影响。比如“交易比特币”这种消息总是会产生相同的哈希值,并且不可能修改签名,消息是仍然有效的,但结果(哈希值)却不同。

如果将BLS用于加密货币,该特性将具有重大意义。它将一次性地修复交易延展性,而不需要特定的延展性修复。与ECDSA相比,BLS已经具有许多优势,而可塑性修复只是其中一种“免费”附加的功能。

此外,在BLS原语执行的每个操作都是确定的。这意味着,使用相同的输入可以重复一个操作。

例如,从一对密钥和哈希消息中创建签名,则生产的签名始终相同。这在一定程度上与BLS的唯一性有关,但也有一些其他含义。

确定性甚至适用于操作嵌套复杂的情况,其将允许非常有趣的用例和模式存在,其中最有趣的模式可能就是基于共享密钥的阈值签名。

Shamir的秘密共享与BLS

BLS描述的属性已经足够吸引人,但真正的魔力才刚刚开始。

Shamir(著名密码学专家)的秘密共享(Secret Sharing)是一种阈值方案,它已经为人所知很长一段时间,如果操作正确,它被证明是安全的。

Secret Sharing允许获取一个秘密并从中创建一组“秘密共享”。共享的秘密不会泄漏关于原始秘密的任何信息,因此它本身是无用的。只有收集到足够的信息(m-of-n),才有可能从其中恢复原始秘密。

如果一个人只知道其中的一部分m-1,他仍旧会毫无头绪。秘密可以是任何由整数表示的东西,包括任意二进制或文本数据,或者更重要:秘钥。

简单来说,Shamir的Secret Sharing就是使用多项式求值去创建秘密共享,然后使用多项式插值来恢复原始秘密(具体概念可以在网络上搜索),在这里我们就不多做解释。

利用Secret Sharing已经开发出一些应用程序,然而,将其应用于加密公共秘钥,尤其是ECDSA,则仍存在一些问题。

从m-of-n组密钥共享中恢复密钥的人将获得原始密钥,使用ECDSA无法避免这种情况,因为要创建签名,需要拥有完整的密钥。

如果你是唯一的参与者,并且使用此方案将您的密匙划分为多个密匙共享,并希望将其存储在不同的位置,那么这在一定程度上是可以实现的。但当您的计算机在恢复时受到某种程度的危害,密钥就会处于危险之中,就会出现问题。

然而,对于BLS,情况就不同了。创建密钥共享与使用ECDSA的方法相同。不同之处在于,生成的密钥共享也是有效密钥,其可用于签署消息并创建有效的签名。这些签名只是“签名”共享,并且仅针对密钥共享的公钥进行验证。所以,光靠这些是没用的,没有人能用它们做任何事情。

神奇之处在于,如果你在m-of-n中采用签名共享,并执行与通常处理秘密共享相同的多项式插值,你将恢复一个新签名,该签名与使用原始密钥时创建的签名可能相同。但如果使用ECDSA,这将无法实现,因为你不能对签名执行任何有意义的操作。

这意味着,原始的密钥再也不会被观测到,你可以将密钥共享保留在原来的位置,而不必为了签署一条消息又一次临时复制它们。相反,你可以在不同的计算机、硬件钱包或其他设备上对消息进行多次签名,然后在一台计算机上收集签名共享,以便恢复最终签名。

下篇我们将对BLS算法如何应用于加密货币以及其表现情况做着重阐述。

翻译:共享财经Lam 责任编辑:Alian

(本文系共享财经原创翻译,转载请注明出处及作者)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值