作者 | 苏冠通
责编 | Aholiab、Carol
出品 | 区块链大本营、ARPA
门限签名是一种分布式多方签名协议,包含有分布式密钥生成,签名和验签算法。近几年,伴随区块链技术的快速发展,签名算法在学术研究和商业应用中获得广泛关注,尤其在安全性,易用性,可扩展性,可分布化等维度上。
因为区块链技术和签名算法之间紧密而又重要的连结,签名算法的发展和新范式的引入都将直接影响区块链网络的特性和效率。另外,由分布式账本激发的机构和个人账户密钥管理需求也催生了诸多钱包应用,这种改变甚至波及到传统企业。
无论在区块链还是传统金融机构中,门限签名方案都可带来多种场景下的安全性和隐私性提升。作为新兴技术,门限签名还在学术研究和落地探讨之中,其中仍有未被验证的安全隐患和使用不便之处。
本文将从技术原理出发,探讨密码学,区块链,安全多方计算与门限签名之间的关系。并讨论不同签名范式的优缺点,列举门限签名的应用场景,从而让读者快速了解门限签名。
生活中的密码学
在了解门限签名之前,我们应该对密码学有个大概的认知,密码学如何保护数字信息,如何在数字世界里建立一个身份。
密码学建立之初,人们希望进行安全存储和安全传输,当一个人创建了一个密钥,他就可以用对称加密算法来存储秘密,当两个人拥有同一个密钥,他们之间就可以实现安全传输,比如国王加密一个命令,将军用对应的密钥来解密。
“虎符”是古代皇帝调兵遣将用的兵符,用青铜或者黄金做成伏虎形状的令牌,劈为两半,其中一半交给将帅,另一半由皇帝保存。只有两个虎符同时合并使用,持符者即获得调兵遣将权。
但如果两个人没有安全信道可以利用,要怎么样才能让两个人创建一个共同密钥呢?这时候,密钥交换协议应运而生。
同样的,如果数字世界中,国王对人民发布了一个命令,如何证明这句话源自国王?于是数字签名协议被发明出来。而这两者都基于公钥密码算法,或者叫非对称密码算法。
对称密码算法和非对称密码算法构成了现代密码学的主要部件,这两种密码算法都有着固定的三个部分:密钥生成,加密运算,解密运算。
只关注数字签名协议的话,密钥生成过程产生了一对关联的密钥:公钥和私钥。公钥公开给所有人,私钥只保存在用户手中,代表了身份,谁拥有私钥,就拥有私钥所代表的身份。
加密算法,或者叫签名算法,使用私钥进行计算,用于对一段信息产生一个签名。
解密算法,或者叫验签算法,使用公钥进行计算,用于任何人验证签名的合法性以及信息的正确性。
区块链中的签名算法
我们把关注点放回区块链技术。区块链作为一项开拓性的技术,利用共识算法构造了分布式账本,而签名协议为区块链提供了身份信息。所有区块链上的交易信息通过签名标定了交易发起方的身份,区块链则通过特定规则验证签名确保交易信息正确,这一切都得益于签名的不可篡改和可校验性。
区块链对于密码学而言,绝不仅仅是在于它使用了签名协议,或者是基于工作量验证的共识算法使用了哈希函数。区块链的分布式网络特性为数字世界构建了一层共识和交易的基础设施,而在这之上,新型密码学协议,如安全多方计算、零知识证明、同态加密都焕发了新的活力。
比如天然适配于分布式网络的安全多方计算,可以在区块链上构建安全数据流转平台,联合机器学习等应用。而拥有特别性质的零知识证明则为可验证的匿名交易提供了可行性。这些前沿密码学协议和区块链技术之间的相辅相成将会在下一个十年推动数字世界的发展,衍生出安全数据分享,隐私保护,或者更多现在难以想象的应用。
安全多方计算和门限签名
在介绍完数字签名协议如何影响我们的生活,以及如何帮助区块链识别身份,记录交易之后,我们要提一句安全多方计算,因为从这里我们能看到门限签名是如何实现了分布式这一特征,关于安全多方计算的更多的细节请参考本专栏之前的文章,文中详细介绍了安全多方计算的技术路径,具体内容和应用场景。
安全多方计算,顾名思义,是多个参与方共同完成的一次安全计算,这里的安全是指,在一次计算中,所有的参与方都可以提供自己的隐私输入,并能从计算中得到计算结果,而无法获得其他参与方隐私输入的任何信息。
1982年,姚期智先生在提出安全多方计算这一概念时,他举了一个称为“百万富翁问题”的例子,是指两个百万富翁想知道谁更富有,而不希望别人知道自己资产的真实数额。具体而言,安全多方计算会关心以下性质:
隐私性:任何一个参与方不能获得其他参与方的任何隐私输入数据,除去能从计算结果中推断出的信息。
正确性和可验证性:计算应能保证正确执行,并且这一过程的合法性和正确性应可被参与方或者第三方验证。
公平性或健壮性:参与计算的各方,如非提前约定,应能同时获得计算结果或者无法获得结果。
假想我们利用安全多方计算去进行一次一般意义的数字签名,我们会按照如下方式进行:
密钥生成:所有未来会参与到签名过程的参与方联合在一起,执行两件事情:1)为每一个参与方生成一个秘密的私钥;2)共同计算出一个公钥用于对应这一个私钥序列。
签名算法:参与某次签名的参与方分别将自己的私钥作为隐私输入,需要签名的信息作为公共输入,进行一次联合签名运算,得到签名。在这个过程中,安全多方计算的隐私性保证了参与方并不能获得其他方的私钥信息,但都可以得到签名。正确性和健壮性保证了签名的不可伪造。
验签算法:利用对应于本次交易参与方的公钥,按照传统签名算法的验签方式即可完成。因为在验签过程中,没有“秘密输入”,这意味着不需要一次安全多方计算就可以执行验签过程,这将成为利用安全多方计算执行分布式签名的优点之一。
这种基于安全多方计算思想构造的签名协议即是门限签名,需要注意的是,我们在介绍的时候,略去了一些细节,因为安全多方计算其实是一类密码协议的统称,这类协议中,针对不同的安全假设,门限设置,有着不同的构造方式,因此,不同设置的门限签名也会有不同的性质,这里就不一一展开,而在下一节中直接以对比的方式介绍出来。
单签名,多重签名与门限签名
那么,除去门限签名,我们还可以选用什么签名方式呢?
在比特币这一区块链设计之初,最直观的想法是一个账户对应一对公私钥,所有利用私钥进行签名的信息都被认为是合法的。进一步的,无论是考虑避免将鸡蛋放在一个篮子里出现单点故障,还是引入多人管理的账户,比特币提供了多重签名功能。
多重签名可以简单的理解为每一个参与方在信息上进行一次签名,而在链上,对所有签名信息进行依次验签,当满足特定条件时,这次交易就认为是合法的,从而达成了多个私钥控制一个账户的目的。那么多重签名和门限签名之间有什么样的区别呢?
多重签名的几个掣肘之处在于以下几方面。
访问结构无法调整。如果给定了一个账户的访问结构,即哪些私钥可以完成一次合法签名,这个结构无法在后期进行调整,比如一个参与方退出或者新加入方需要调整访问结构。如果必须进行调整,则需要重新完成一次初始设置过程,这会使得公钥发生改变,同时意味着账户地址发生改变。这带来的麻烦是难以处理的。
效率问题,第一是链上的验签过程是消耗所有节点算力的,从而需要为此付出手续费,那么多重签名的验证大约相当于多次单签名。第二则是速度问题,这个线上所进行验证过程也显而易见的会更长。
需要智能合约支持以及因链而异的算法设计,因为不是天然支持的签名算法,所以很多链需要智能合约来满足对多重签名的支持,因为智能合约可能存在的漏洞,这种支持被认为存在隐患;
无匿名性,这一点不能直接称之为缺点或优点,因为对匿名性的要求是因地制宜的。这里的匿名性是指,多重签名会直接暴露交易的所有参与签名者。
那么门限签名相对应的,则提供了以下特性:
访问结构的易于调整,通过一次额外的多方安全计算,即可以将现有的私钥序列进行扩充,从而给新加入的参与方分配私钥,这个过程不会暴露旧有的和新产生的私钥,同时也不会改变公钥以及账户地址。
快捷高效,对于链上而言,门限签名所产生的签名信息与一次单签名无差异,这意味着以下几个效率的提升:a)验签过程与单签名相同,不会产生额外的手续费;b)参与签名者的信息将不可见,因为对于链上节点,每次信息都是用同一个公钥解密;c)链上无需新的智能合约来提供额外的签名算法支持。
除了以上讨论,还有一种实现分布式签名的方案是利用Shamir秘密分享,秘密分享算法是一个历史很久的技术,常被用来分片式存储信息,并可用来进行信息纠错。从多方安全计算的底层算法,到光碟的信息校验,这个技术都一直扮演了重要作用。
但是其主要问题在于,用于签名协议中时,Shamir秘密分享需要复原主私钥,而不是像多重签名或者门限签名,主私钥从来没有重建过,哪怕是在内存或者缓存中,对于至关重要的账户而言,这种短暂的重建也是不能容忍的。
门限签名的限制之处
就像其他安全多方计算算法一样,由于引入了其他参与方的存在,安全模型和传统的点对点加密传输产生了极大的区别,参与方共谋以及作恶的方式是之前算法未曾考虑过的。
因为无法限制物理实体的行为,以及作恶者被引入到了参与团体内部,多方参与的密码学协议无法获得之前密码学协议的安全强度。所以我们仍需要一段时间去开发门限签名应用,融合现有基础设施,并去测试门限签名的真正实力。
门限签名的应用场景
目前,门限签名主要在以下两个方面有所应用:
1、密钥管理
利用门限签名实现的密钥管理系统可以实现更灵活的管理方式,比如ARPA提供的企业密钥管理API,可以利用门限签名的访问结构设计不同权重和不同组合的授权方式。另外,对于新的参与实体的进入,门限签名可以快速刷新密钥,而这种操作也可以周期性的进行从而增大作恶者同时获得多个私钥的难度。最后由于对于校验方而言,门限签名与传统签名无差别,所以其可直接兼容旧有的设备,降低更新成本。ARPA的企业密钥管理模块已经支持椭圆曲线数字签名协议的ED25519参数组,未来会兼容更广泛的数字签名算法。
ARPA密钥管理解决方案架构
2、加密钱包
对于数字资产而言,相对于之前的钱包,基于门限签名的钱包因为无需重建私钥而提高了安全性,因无需将多个签名信息公开而获得了匿名性,同时相较于多重签名拥有更低的交易手续费。与密钥管理应用类似,数字资产账户的管理权也可以更灵活的调整,并可用于各种不原生支持多重签名的区块链,降低因智能合约带来的漏洞风险。
结束语
本文主要介绍了为什么需要门限签名,以及门限签名可以带来哪些有趣的性质,可以看到门限签名有着更高的安全性,更灵活的控制能力,更高效的验证过程。其实,不同的签名技术有着不同的应用场景,比如文中未提到的聚合签名,基于BLS的多重签名,都是最近新兴的签名方案,也有着各自不同的特性。
同时,也欢迎读者更多的了解安全多方计算这一领域,安全计算是密码学协议的圣杯,其能完成的事情远超过门限签名这一应用,不久的将来,安全计算或许可以在数字世界解决更多具体的应用问题。
* 关于作者
苏冠通,ARPA密码算法工程师,清华大学密码芯片博士,拥有七年密码算法和芯片设计与研究经验。对安全多方计算协议,双线性对算法,格公钥密码算法有深入研究并在相关领域有多篇论文发表。ARPA是一家专注于安全加密计算和区块链底层技术的研发的公司,其核心产品为基于安全多方计算的隐私计算平台,并提供全套区块链+安全计算解决方案。同时ARPA作为行业成员,参与起草了工信部中国信息通信研究院即将出台的安全多方计算标准。