数字化契约如何守护?解析聚合签名的妙用

2020-07-30 11:27 栏目:经验之谈 来源:网络整理 查看()

如何高效地存储和验证海量数字签名数据?多方签名可以通过数据聚合来压缩吗?如果每个参与者使用不同的私钥对不同的消息进行签名,聚合签名技术还能得到支持吗?使用集合签名技术有哪些值得警惕的风险?

随着经济数字化转型的深入,以区块链技术为代表的多方合作技术逐渐普及,如何验证承载多样化价值的数据的有效性已经成为全行业的普遍需求。满足这一需求的关键是引入各种数字合同,支持合同中数字签名的有效验证是关键。

海量数据带来了海量的数字合同,而海量的数字合同又进一步带来了海量的数字签名,这不可避免地受到数字签名数据快速增长和验证效率不断下降的影响。

以区块链应用为例,一般来说,在区块链节点的协商过程中,所有节点都需要对整个块进行签名,并在块中存储相关数据,如块数据、节点公钥和签名数据。随着应用程序使用量的增加,与签名相关的存储数据将不断增加。与传统应用不同,链上的数据只是理论上的增加,而海量签名带来的海量数据给数据存储、网络传输和签名验证带来了巨大的负担。

在保证海量签名数据可验证性的前提下,如何实现聚合和压缩数字签名数据的具体技术?聚合签名在提高系统效率的同时是否会带来额外的风险?看看这篇文章,一个接一个地分析它们。

聚合签名的效率

典型的数字合同一般包括三个部分:消息原始数据、公钥和签名。用户通过公钥确认签名者的身份,并通过数据确认合同内容,从而验证数字合同的有效性。

相应地,聚合签名的主要设计目标是将多个签名数据压缩并合并成单个聚合签名。验证者通过所有签名相关数据和公钥的列表来验证单个集合签名。如果验证通过,效果相当于独立验证所有相关签名并全部通过。

一般来说,聚合签名生成的签名数据(不包括消息原始数据和公钥列表)具有固定大小的特点,即无论有多少个原始签名,聚合签名数据的大小总是不变的。

聚合签名可以有效降低验证过程中的存储空间和网络流量成本,特别是对于签名频率较低但验证频率较高的业务场景。

回到区块链节点共识的应用场景,目前联盟链共识大多采用ECDSA签名算法。对于块数据,每个节点用自己的私钥生成一个独立的数字签名,并将其广播给其他节点。其他节点验证签名并将其写入下一个数据块。

这样,当一致性节点的数量较大时,存储在每一轮一致性块中的签名数据将不断增加,从而占用存储空间。每当一个新节点加入网络并需要同步历史块时,大量的签名数据将对网络带宽构成巨大的挑战。

聚合签名方案可以在一定程度上解决上述问题。与直接保存多个独立签名相比,使用聚合签名技术后,每个节点将收集其他节点广播的聚合签名片段,然后聚合并保存签名片段。这样,当新节点加入时,同步历史块只需要下载聚合的签名数据,大大减少了对网络带宽的占用。

数字化契约如何守护?解析聚合签名的妙用

除了提高数据存储和传输的效率之外,当聚集的数字签名的数量足够大时,签名验证的计算效率也可以在理论上得到提高。集合签名方案的实际性能与其具体的构造方式密切相关。作为例子,我们将介绍施诺尔和BLS最常用的集合签名的构造细节。

2.施诺尔和BLS合计签名建设

根据不同的聚合能力以及是否支持由不同消息生成的签名的聚合,可以将常见的聚合签名方案分为

同一报文中只能聚合不同的签名,即甲、乙、丙三方签署同一份合同甲,期间生成的三个签名可以合并为一个聚合签名。典型的构造方案是Schnorr集合签名,通常称为多重签名方案。

不同报文中使用的不同签名可以聚合,即甲方签订合同甲,乙方签订合同乙,丙方签订合同丙,三个不相关的签名可以合并成一个聚合签名。其典型的建设方案是BLS集合签名。

施诺尔集合签名

Schnorr集合签名可以看作是椭圆曲线上一种数字签名方案的扩展,其基本构造模式如下:

数字化契约如何守护?解析聚合签名的妙用

使用Schnorr聚合签名的交互过程如下:

数字化契约如何守护?解析聚合签名的妙用

值得注意的是,与经典的数字签名相比,Schnorr聚合签名具有更多的交互式随机数和聚合签名过程,并且这里的所有签名都签名相同的消息。

BLS综合签名

与Schnorr聚合签名不同,BLS聚合签名还引入了双线性映射,它具有以下特征:

数字化契约如何守护?解析聚合签名的妙用

该特征是BLS聚合签名聚合多个不相关数字签名的关键,其基本构造模式如下:

数字化契约如何守护?解析聚合签名的妙用

使用BLS聚合签名的交互过程如下:

数字化契约如何守护?解析聚合签名的妙用

BLS聚合签名通过引入双线性映射,打破了签名对应的消息必须相同的限制,从而灵活地支持各种签名聚合需求。同时,BLS在聚合过程中交互较少,不需要交换随机数,可以有效降低网络传输带来的性能损失。

然而,双线性映射带来了神奇的功能,但它也增加了计算成本。然而,已知的双线性映射结构是复杂的,并且其计算性能在工程实现中慢几个数量级。

施诺尔集合签名和BLS集合签名各有优势。就聚合能力而言,BLS更胜一筹,就计算性能而言,施诺尔更胜一筹。两者的详细比较和使用注意事项将在下一节中展开。

3.集合签名使用中的注意事项

集合签名的性能

集合签名的主要设计目标是压缩签名数据,节省数据存储和网络传输的成本。对于现有的计算机系统,输入/输出时间消耗通常是关键的性能瓶颈,因此这种优化通常可以提高验证大量签名数据的整体吞吐量。

通常,假设安全参数(见第三种理论)是256位。对于Schnorr聚合签名,其典型签名数据是一个聚合点和一个恒定大小为64字节的数字。对于BLS聚合签名,其典型签名数据是椭圆曲线上的一个压缩点,其大小恒定为33字节。

除了吞吐量之外,验证数字签名的延迟通常是一个重要的性能指标,但这不是聚合签名的强度。以下是一些基于开源代码的性能比较结果。

数字化契约如何守护?解析聚合签名的妙用

对于Schnorr聚合签名,虽然其签名验证的理论复杂度低于ECDSA签名,但其性能并没有显著提高,因为在验证过程中需要使用公钥列表进行聚合;另一方面,在签名过程中,Schnorr聚合签名具有更多的交互过程,其性能接近但不如ECDSA签名。

对于BLS聚合签名,由于复杂的双线性映射,其计算性能明显低于ECDSA签名。同时,双线性映射缺乏相应的硬件加速,软件优化也不太成熟,有待于进一步完善。

集合签名的民族化

支持国家加密是当前密码技术应用的热点方向。然而,中国密码行业标准化技术委员会发布的标准并没有明确定义所提出的集合签名算法。

根据现有的国家秘密技术规范,我们需要提取聚合签名所需的加密原语,并基于标准方案对其进行修改和构造,如下所示:

椭圆曲线公钥密码算法

消息摘要算法

施诺尔和BLS的集合签名都在设计过程中提供了理论证明。即使——聚合了大量签名,单个聚合签名的安全性也等同于聚合前的经典数字签名。

然而,与原始的经典数字签名相比,传统的数字签名只能进行单边计算,聚合签名的计算过程涉及多方交互。一旦参与聚合的任何一方有意实施邪恶,它就与不安全的工程实现不谋而合,这将不可避免地导致额外的安全风险。

以Schnorr聚合签名为例,为了降低交互成本,一些工程实现在密钥随机数交互过程中通过预计算来初始化随机数。但是,如果攻击者不遵守协议,将恶意的特殊数据构造为随机数,则可能导致其他用户的密钥泄露。

类似地,对于BLS聚合签名,为了提高计算效率,一些工程实现使用不安全曲线组合来构造双线性映射,从而破坏了聚合签名算法的整体安全性并暴露了用户密钥。

防范这些安全风险的关键是聚合签名的工程实现应严格遵循论文或标准中的算法流程和推荐参数设置,并记住不要引入严重的安全风险以优化性能。

一般来说,聚合签名提供了一种解决方案,以节省验证过程中的存储空间和网络流量,并提高批量数字签名的验证性能。

不同的聚合签名对于不同的数据量和不同的业务领域具有独特的优势。基本技术选择可参考下图:

数字化契约如何守护?解析聚合签名的妙用

没错:大规模的合同验证是不能胜任的,聚合签名是一键解决方案!

通过聚集和压缩多个用户生成的签名,聚集签名极大地提高了存储、传输和验证数字签名的效率,使得海量数字合同中的海量数字签名能够得到有效验证。

除了本文介绍的Schnorr和BLS集合签名,还可以基于双线性映射、同态加密或同态构造其他集合签名方案,其中著名的方案有C1集合签名和IBAS基于身份的集合签名。根据具体的业务需求,选择合适的方案可以显著提高数字签名的使用效率和系统的整体可扩展性。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发