Cobo 密码知识讲堂|第一讲:门限签名的概念与应用

作者:Cobo密码学团队

随着香港开始允许散户交易数字资产,数字资产也在逐步走进每个人的生活,数字资产、数字签名等新概念层出不穷。Cobo密码知识讲堂计划推出以“门限签名”为主题的系列科普文章,旨在以深入浅出的方式,带领读者了解数字签名中门限签名的技术本质和应用原理。该系列科普文章每一篇内容相互独立又互相补充,涵盖门限签名的概念及典型应用、ECDSA 门限签名的设计及发展现状、Schnorr 门限签名的设计及发展现状、基于门限签名的账户体系构建,以及层级化门限签名设计等多个该领域的热点和难点问题,力求通过对技术研究的深层次剖析和解读,让读者对门限签名领域有更加深刻的理解。

本讲将分四个部分介绍门限签名的概念与应用:第一部分,介绍数字签名的概念与分类,阐述其基本算法组成以及具备的应用功能;第二部分,针对数字签名存在的单点失效风险引入门限签名概念,并介绍其技术优势与特征;第三部分,对门限签名和多重签名进行比较,阐述门限签名在灵活性、匿名性和可扩展性方面的优势,这也是其能够成为当今密码学领域研究热点的原因;最后,介绍门限签名在区块链领域的典型应用,展示其如何赋能不同的应用场景,并产生核心价值。

Part 1:数字签名的概念与分类

数字签名不是签名的数字化

早期社会,签署合同、文件、条约等通常使用手写签字与印章,但是当计算机网络出现之后,如何对电子文档、电子文件进行签名就成了一个亟待解决的问题,而强大的应用需求也催生了问题的解决方案——数字签名。

数字签名是一种新型不同于传统手写签名而以电子形式传输或存储的消息签名方式,并不是“手写签名的数字化”。学术层面,数字签名是指一种能为接收者验证数据完整性和确认数据发送者身份,并可由第三方确定签名和所签数据真实性的算法方案。

数字签名的五元组表示

通过对数字签名的运行原理进行抽象和形式化概括,可以得到数字签名的五元组表示,即(M,K,S,SIG,VER):

M:消息集合,一般为被签名对象的哈希摘要;

K:密钥集合,即数字签名可使用的密钥范围,一般为 256 比特随机数集合;

S:签名集合,签名算法的输出,可被验证算法验证通过;

SIG:签名算法,定义为 K×M→S,以消息和密钥为输入,输出签名;

VER:验证算法,定义为 MS{True,False},验证消息和签名的一致性,当然这个过程也需要输入签名密钥对应的公钥。

数字签名的分类

数字签名可以通过不同的维度进行分类,如基于数学难题、签名用户数量、数字签名是否可恢复、签名者对消息是否可见、签名是否支持委托等,具体见下图。

目前常见的数字签名有 Shamir 背包数字签名、Rabin 数字签名、GOST 数字签名、ElGamal 数字签名、Schnorr 数字签名、RSA 数字签名、ECDSA 数字签名、BLS 数字签名等。

Part 2:门限签名的诞生与技术特征

数字签名的阿喀琉斯之踵

阿喀琉斯是荷马史诗中的英雄,其在沙场战无不胜、无所畏惧,然而这样一个强大的战士也有他的致命弱点——脚踝,而其最终死去也是由于脚踝中箭。同样的道理也适用于数字签名,作为一个强大的密码学工具,它能够防伪造和防抵赖,但是这一切都是建立在签名私钥安全的基础之上,一旦私钥泄漏,攻击者将很容易完成身份的伪造以及非授权访问等恶意行为。

传统的数字签名方案下,签名的私钥是由单一主体掌握,通常通过加密存储或者通过硬件保护(U 盾)等方式进行存储,但是仍然具备极大的使用风险。

  • 私钥的安全性:攻击者可以通过网络攻击的方式入侵签名者计算机,即使加密存储,也能够在签名过程中在内存中抓取私钥,从而窃取签名密钥;
  • 私钥的可用性:无论是硬件还是软件存储的方式,都存在单一节点失效风险(Single Point of Failure),一旦签名私钥丢失,将无法复原。、

门限签名——鸡蛋从不放在一个笼子里

门限签名正是解决数字签名私钥中心化控制安全性风险的方案。其核心思路是私钥不再由单个节点掌握,而是拆分为多个碎片并由多个节点掌握,从而实现私钥的高安全性和可用性。具体而言,门限签名是普通数字签名“门限化”后的结果,它将签名的权力分散到一组节点,只需超过门限值数量的节点合作,即可完成签名的生成。因此可以认为普通数字签名算法的签名过程是“中心化”的,而门限签名算法的签名过程是“分布式”的。

门限签名的算法构成

门限签名算法生成的签名和普通签名算法是一致且不可区分的,二者签名验证过程相同。因此对于门限签名算法,关注的重点在于其密钥生成过程 KeyGen 和签名过程 TSig。一个(t,n)门限签名算法包含以下两个过程:

KeyGen:以安全参数作为输入,输出签名公钥 pk 和 n 个私钥碎片(sks1,sks2,…,sksn)。每个私钥碎片 sksi 仅被节点 Pi 掌握,且 n 个私钥碎片共同构成签名私钥 sk 的(t,n)秘密分享。需要注意的是,sk 只是理论存在,不会在密钥生成或者签名过程中出现;

TSig:以待签名的消息和不少于 t 个私钥碎片作为输入,输出一个合法签名。

Part 3:门限签名与多重签名的比较与优势

除门限签名外,另一个防止单点失效的方式即为多重签名(Multi-signature)。朴素来讲,在多重签名机制下,签名的公钥不再是一个,而是有多个公钥,只有收集超过门限值个数的签名才算签名成功。虽然多重签名能够在一定意义上实现和门限签名等效的应用价值,但是门限签名仍然在灵活性、匿名性和可扩展性三个方面具备优势。以下将从区块链角度去阐述这三方面优势:

灵活性(Flexibility)

多重签名在实现账户的多方管理过程中,其灵活性显著低于门限签名,具体体现在两方面:首先,多重签名机制下签名者的公钥以及其他信息共同决定账户地址,一旦账户的控制逻辑发生变化(如增加或者减少签名者),那么账户地址就会发生变化,需要将资金从旧账户地址转移到新账户地址,灵活性较低;其次,在比特币中,多重签名的公钥数量是有上限要求的,因此超过上限数量的多方账户管理场景,无法使用多重签名。

而在门限签名机制下,签名者身份的变化会体现为账户私钥份额的重新分配和生成(Reshare),账户地址并不会发生变化;同时,门限签名中的 n 和 t 可以任意设置,不存在任何限制,可以支撑任意场景需求。

匿名性(Anonymity)

区块链的一个核心特征即为匿名性,即链上账户地址与现实身份无法一一对应。然而,多重签名的使用会导致用户匿名性的急剧降低,具体体现在两个方面:首先,链上账户地址虽然与现实身份无法一一对应,但是其相关的交易是公共可见的,而多重签名机制下,每个签名者的公钥都是暴露出来的,因此不同的账户就会通过公共的签名者进行关联,导致账户隐私和匿名性的破坏;其次,多重签名公钥集合的暴露,以及完整交易的所附的签名个数,能够有效推导出该账户的控制逻辑,甚至可以根据账户行为与现实业务进行挂钩,降低了匿名性。

而在门限签名机制下,其最终生成的交易和普通交易数据结构一致且不可区分,而签名的过程则是在链下完成,并不会导致任何匿名风险。

可扩展性(Scalability)

在多重签名机制下,最终的区块链交易上需要附上所有签名者的数字签名,因此交易大小和签名者的数量是呈线性增长关系的。因此,控制逻辑(如签名者数量增加)越复杂,那么最终的交易的数据量就越大。这一特征导致两个后果:首先,区块链交易费是与交易大小挂钩的,因此使用多重签名会导致交易费升高,增加其使用成本,对于一些高频业务场景,并不适配;其次,交易占用空间的提升也会额外增加整个区块链的运行载荷,间接降低系统运行效率。

而门限签名则完全没有这一顾虑,因为其最终的输出结果和普通数字签名是一致的,只是在签名过程中需要各节点进行相关的通信和计算。

具体而言,门限签名机制下,交易的数据结构中仍然只包含一个签名,和普通交易并无区别,因此交易费较低,也不会给区块链系统增添额外的负担。

Part 4:门限签名在区块链领域中的应用

保障区块链账户安全

近年来,以比特币为代表的加密数字货币得到了迅速发展,并作为一种新兴的支付手段逐渐进入普通人的生活。与传统支付系统不同,加密数字货币系统不存在中心化的运营机构,所有支付操作都是通过从账户发送带数字签名的交易完成。因此,加密货币账户的安全等价于签名私钥的安全,私钥的泄露会直接导致账户内资产被窃取。然而用户加密数字货币账户的安全正在遭受巨大威胁:黑客通过发送带木马的邮件控制用户电脑,窃取账户私钥,然后发送交易将其中的加密货币转移到交易所出售牟利。因此,保障加密数字货币账户安全已经迫在眉睫。

门限签名算法是保障加密数字货币账户安全的有效手段。用户账户私钥不再由单一节点生成和保存,而是由 n 个节点合作生成一个账户地址,每个节点保存账户私钥的一个碎片。发送交易时,由其中一个节点构造交易内容并发送其他节点。然后所有节点运行门限签名算法,合作生成交易的合法签名。最终由某个节点将带签名交易广播到区块链网络中即可。攻击者需要对至少 t 个节点攻击成功才能够恢复账户私钥。用户可以根据实际需求灵活确定节点总数 n 和安全门限 t 的取值。因此,门限签名算法能够有效提高加密数字货币账户的安全性。

跨链资产锁定

跨链技术能够使得数字资产在不同区块链上自由流动,打破不同区块链之间信息孤岛。跨链过程中一个重要前提是“资产守恒”,即当数字资产从一条区块链转移到另一条区块链上时,原区块链的数字资产需要锁定。为保证去中心化,资产锁定往往是由一组节点完成,只有超过一定数量节点合作才能够完成解锁。

对于以太坊、EOS 等支持智能合约的区块链而言,仅需将资产锁定的逻辑编写为智能合约,用户将资产转入这一特定合约即可完成锁定。而对于比特币等不支持智能合约的区块链而言,资产锁定依赖于建立一个多方托管的锁定账户,用户将资产转入这一账户即可完成锁定。

正如第三部分介绍,虽然多重签名也能完成账户的多方托管,但是门限签名在灵活性、匿名性和可扩展性方面的优势,更加适合跨链资产锁定场景。灵活性方面,n 和 t 的取值可以任意设置,满足不同的场景需求;匿名性方面,门限签名算法生成的锁定账户与普通账户数据结构和使用方式完全相同,合法的签名并不能暴露参与签名过程节点的信息;可扩展性方面,每笔交易和普通交易一致,仅需携带一个数字签名,降低了交易费用。

共识机制的设计

在拜占庭类(BFT)的共识协议中,共识节点需要对所要共识的内容进行投票,投票超过一定比例(如三分之二),即为达成共识。算法过程中,“投票”需要对投票者身份进行核验,且要防止重放攻击,而采用的解决方案即为对共识内容进行数字签名,然后广播。分析整个共识过程,其核心逻辑和门限签名是非常吻合的,即超过一定门限值节点认可,即为共识/签名成功。因此,与其共识节点需要在网络中收集足够数量的签名信息,不如基于门限签名构造一个共同的公钥,然后每个共识节点掌握一个私钥碎片,认可共识内容即用私钥碎片计算得到签名碎片,超过门限值数量的共识节点参与即可获得完整的数字签名。这种设计模式可以有效降低共识结果所占用的空间。

Book Demo