【密码学】聚合签名

news2024/11/24 11:28:41

        聚合签名是一种高级的数字签名技术,这种技术在多种场景下都非常有用,特别是在区块链、多方计算、分布式系统等领域中。下面让我来对它的基本概念、主要类型、实现步骤等来进行介绍。

一、聚合签名的基本概念

        聚合签名到底是什么?有那么多数字签名方法,聚合签名又到底有什么特别之处呢?

(1)定义

        聚合签名是一种能够将一组签名合并成单个签名的技术,使得验证者只需要验证一个签名就可以确认所有原始签名的有效性。

(2)优点

  • 减少存储需求:多个签名被压缩成一个签名,减少了存储空间的需求。
  • 减少带宽消耗:在网络传输时,只需要发送一个签名而不是多个签名,降低了带宽使用。
  • 简化验证流程:验证一个聚合签名比验证多个单独的签名要快得多。

二、聚合签名的主要类型

        聚合签名可以简单的理解为,把一组签名变成一个。所以各个聚合签名的不同类型的区别就在于,“一组签名”在聚合签名之前是什么样的形式或者理解成以一种怎样的形式组织在一起。

签名类型描述
标准聚合签名最基础的形式,将多个签名合并为一个签名,验证者只需验证这个签名即可确认所有原始签名的有效性。
多签名多个签名者共同签署同一份消息,生成一个签名,该签名代表所有签名者的意图。
门限签名要求至少达到一定数量的签名者参与才能生成有效的签名。
环签名隐藏签名者身份的一种特殊形式,其中签名者可以从一组可能的签名者中匿名地签署消息。

三、聚合签名的关键技术与步骤

(1)聚合签名的步骤

先看整体步骤图,再分布看文字描述

① 密钥生成

        每个签名者生成自己的私钥和对应的公钥。这通常通过安全的随机数生成器来完成,并且确保私钥保密,公钥则可以公开分享。

② 密钥聚合

        将所有的公钥聚合成为一个公钥集合。聚合的方式取决于具体的聚合签名方案。例如,在BLS聚合签名中,公钥可以通过椭圆曲线上的点加法来聚合;在Schnorr聚合签名中,通过更复杂的协议来确保公钥的聚合不会泄露任何签名者的秘密信息。

【注】这里谈到的BLS签名算法,后续我会单独出文章介绍。

③ 签名生成

        每个签名者用自己的私钥对消息进行签名。签名算法需要与所选的签名方案兼容。例如,在BLS签名方案中,签名是通过对消息哈希值进行标量乘法生成的。

④ 签名聚合

        将各个签名聚合为一个签名。这个过程也依赖于所使用的具体签名方案。例如,在BLS中,签名可以直接通过椭圆曲线上点的加法来聚合。对于其他类型的聚合签名,可能需要更复杂的协议来确保聚合的正确性和安全性。

⑤ 验证过程

        使用聚合后的公钥集合验证聚合签名。验证算法检查聚合签名是否对应于给定的消息和聚合公钥。如果验证成功,这意味着所有原始签名都是有效的,并且来自相应的签名者。

(2)关键技术细节

  • 签名者的协作:在某些聚合签名方案中,签名者之间可能需要交互以确保签名的有效聚合。例如,在MuSig中,签名者之间需要交换信息(对应下图中交换随机数)来构建最终的公钥。

Schnorr聚合签名
  • 安全性和隐私保护:聚合签名的设计需要考虑到如何防止伪造和如何保护签名者的隐私。例如,某些方案可能需要采用特殊的技术来确保签名者不能否认他们参与了签名过程。

  • 可扩展性:聚合签名的一个重要目标是提高可扩展性,即无论有多少签名者,签名验证的成本都应该是固定的或者非常低的。

  • 适应性:有些聚合签名方案允许在签名后添加更多的签名,从而形成更大的聚合签名。例如,BLS签名方案允许在任何时候向现有的聚合签名中添加新的签名。

  • 门限特性:某些聚合签名方案还具备门限特性,这意味着只有当达到一定数量的签名者参与时,签名才会被认为是有效的。

  • 审计和跟踪:某些情况下,可能需要能够审计聚合签名,以确定哪些签名者参与了签名过程。例如,在链式聚合签名中,可以追溯到最初的签名者。

四、支持聚合签名的算法方案和应用场景

(1)支持聚合签名的算法

① BLS签名方案

        BLS签名方案是最知名的聚合签名方案之一。它基于双线性配对,允许将多个签名聚合为一个单一的签名,并且可以在任何时候向现有的聚合签名中添加新的签名。

② Schnorr签名方案

        Schnorr签名方案是一种基于离散对数问题的数字签名算法,它可以被用来构建高效的聚合签名。

此外还有改进的Schnorr签名方案如:

  • MuSig是一种改进的Schnorr签名方案,用于创建多签名。
  • MSS是另一种基于Schnorr签名的方案,它可以用于构建多签名方案,在某些情况下用于构建聚合签名。

在这里简单对比一下BLS聚合签名和Schnorr聚合签名:

        BLS签名涉及双线性映射,这是一种计算密集型操作,目前还没有得到很好的硬件加速。现有的软件实现可能不够成熟,导致BLS签名的整体性能不如ECDSA(椭圆曲线数字签名算法)。

        Schnorr签名的验证方程非常直观,且没有模倒数运算,这使得它的数学基础更加简洁。为了验证聚合签名,验证者需要访问所有参与者的公钥,并将它们聚合在一起。这一步骤增加了额外的操作。Schnorr聚合签名通常需要参与者之间有额外的交互步骤,以确保签名的一致性和正确性。例如,在MuSig方案中,签名者之间需要进行多轮通信以生成一个安全的聚合签名。

签名方法签名时间/计算量验证时间/计算量安全性基础安全性等级密钥长度支持聚合签名
Schnorr快速快速离散对数问题较高256位(或更高)
BLS中等到较快中等到较快配对的椭圆曲线离散对数问题最高256位 (BLS12-381)

③ 其他签名方案

        IBS是一种允许用户使用其身份作为公钥的签名方案,虽然它主要用于身份验证,但在某些构造中也可以实现聚合签名功能。

        ASAF签名方案允许在任何时间点向现有的聚合签名中添加新的签名(支持动态添加签名),同时保证了签名的正确性和安全性。

        ASAS(自适应安全聚合签名)这类签名方案允许在不知道签名者集合的情况下动态地添加新的签名。 能做到适应性安全性和动态添加签名。

(2)聚合签名的应用场景

  • 区块链:减少区块大小,提高交易处理速度。
  • 多方安全计算:简化多方之间的交互和验证过程。
  • 分布式账本技术:降低存储和传输成本,加快共识达成速度。
  • 隐私保护:通过环签名等技术保护用户隐私。
  • 物联网:在大规模物联网部署中,聚合签名可以减少设备认证所需的通信量,特别是在资源受限的设备上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四个开源的模拟人类记忆开源库

✨ 1: Memary Memary 是一个模拟人类记忆、增强AI代理的开源Python库。 Memary 是一个模拟人类记忆来提升人工智能代理性能的工具。其核心是通过集成多个模型(如本地运行的 Llama 和 GPT 模型)以及使用知识图谱、记忆流和实体知识存储来推进 AI 代理的…

前端(HTML + CSS)学成在线项目(仿)

头部区域 banner区域 精品推荐区域,这三个区域都是版心居中 头部区域分为:logo 导航 搜索 用户四个小块 鼠标悬停 :hover效果 banner区域分为:左侧导航 背景图 右侧课程表 鼠标悬停 :hover效果 精品推荐区域 鼠标悬停 :hover效果 精…

基于MATLAB车牌图像识别的设计与实现

摘 要 车牌图像识别系统是现代智能交通管理的重要组成部分之一。车牌识别系统使车辆管理更智能化,数字化,有效提升了交通管理的方便性和有效性。 车牌识别系统主要包括了图像采集、图像预处理、车牌定位、字符分割、字符识别等五大核心部分。本文主要介绍…

顺序表-数据结构

一、结构定义 顺序表是通常是数组&#xff0c;要求数据连续存储。顺序表又分为定长顺序表和变长顺序表&#xff0c;本文实现后者。 1、头文件 #include <stdio.h> #include <stdlib.h> 2、定长顺序表 #define MAX 100 定长顺序表结构 typedef struct SqList {…

五种创建springBoot项目的方法(本质上是三种)

文章目录 1. 使用https://start.aliyun.com/的服务器URL2. 使用https://start.spring.io/3. https://start.spring.io/使用官网4. 使用https://start.aliyun.com/5. 使用maven构建springboot项目5.1 点击maven&#xff0c;什么也不选&#xff0c;点击下一步5.2 修改名称和组ID&…

c语言第十天笔记

函数的概述 函数&#xff1a; 实现一定功能的&#xff0c;独立的代码模块。我们的函数一定是先定义&#xff0c;后使用。 使用函数的优势&#xff1a; 1. 我们可以通过函数提供功能给别人使用。当然我们也可以使用别人提供的函数&#xff0c;减少代码量。 2. 借助函数可以…

《学会 SpringMVC 系列 · 参数解析器 ArgumentResolvers》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

HQChart实战教程76-自定义Y轴刻度线

HQChart实战教程76-自定义Y轴刻度线 Y轴刻度线效果图HQChart插件源码地址步骤1. 注册事件2.回调事件eventdataobj数据说明完整实例源码Y轴刻度线 在K线图上,通过绘制一些特殊的刻度线来标识状态。我们可以通过SetOption里面设置,也可以通过回调函数动态设置。本教程是使用回…

微服务之SpringAMQP详解

目录 前言 1. 概述 2. Basic Queue简单队列模型 2.1 消息发送 2.2 消息接收 2.3 总结 3. WorkQueue模型 3.1 消息发送 3.2 消息接收 3.3 测试 3.4 消费预取限制 3.5 总结 4. 发布、订阅 5. Fanout 5.1 声明队列和交换机 5.2 消息发送 5.3 消息接收 5.4 测试 5…

SpringBoot集成阿里百炼大模型(初始demo) 原子的学习日记Day01

文章目录 概要下一章SpringBoot集成阿里百炼大模型&#xff08;多轮对话&#xff09; 原子的学习日记Day02 整体架构流程技术名词解释集成步骤1&#xff0c;选择大模型以及获取自己的api-key&#xff08;前面还有一步开通服务就没有展示啦&#xff01;&#xff09;2&#xff0c…

遗传算法与深度学习实战——生命模拟与进化论

遗传算法与深度学习实战——生命模拟与进化论 0. 前言1. 模拟进化1.1 代码实现1.2 代码改进 2. 达尔文进化论3. 自然选择和适者生存3.1 适者生存3.2 进化计算中的生物学 小结系列链接 0. 前言 生命模拟通过计算机模拟生物体的基本特征、遗传机制、环境互动等&#xff0c;试图模…

KMZ格式详解,javascript写入读取KMZ示例

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

myeclipse 2020 下载 安装 汉化

1&#xff0c;解压 myeclipse 2020 压缩包到当前目录下&#xff1a; 点击此处蓝色字体下载压缩包 提取码 k3x9 2&#xff0c;鼠标右键 点击 myeclipse 2020.exe 选择 以管理员身份运行 &#xff1a; 3&#xff0c;等待加载&#xff1a; 4&#xff0c;点击 Next &#xff1a; 5…

【数学建模】2024华数杯A题思路(已完成)

视频预览&#xff1a; 2024华数杯A题已完成 作品连接&#xff1a;https://mbd.pub/o/bread/ZpmWmJxu 文章目录 一、题目二、分析三、代码示例 一、题目 机器臂是一种自动化装置&#xff0c;广泛应用于工业生产、精密操作、危险环境作业和物流等领域。关节角路径的优化设计对于…

Transformer在生成细胞数据上的应用

来自&#xff1a;scTranslator: A pre-trained large generative model for translating single-cell transcriptome to proteome 工程地址&#xff1a;https://github.com/TencentAILabHealthcare/scTranslator 在scTranslator中&#xff0c;有3个阶段&#xff1a;paired bu…

【xilinx】XCZU1CG-1SBVA484I FPGA 的 VCC_PSBATT 引脚的正确电压范围是多少?

我正在做一个涉及 XCZU1Cg-1SBVA484I FPGA IC 的项目。对于 PSBATT 部分&#xff0c;根据 DS925 文档&#xff0c;提到 VCC_PSBATT 电压范围为 1.2V ~ 1.5V。但在同一文档中&#xff0c;注释部分规定&#xff1a;Vcc_psbatt 最高可接受 1.89V。 根据 UG1085 文档&#xff0c;使…

HarmonyOS 习题(二)

1、在类Web开发范式自定义组件创建后&#xff0c;加入到Page组件树时&#xff0c;会触发以下哪一项回调。 A&#xff09;Onlnit B&#xff09;OnAttached C&#xff09;OnLayoutReady D&#xff09;OnDetached 答案&#xff1a;B 分析: onlnit:自定义组件初始化生命周期回调&a…

HTML常用标签和CSS的运用

目录 1.HTML标签 1.1 文档结构标签 1.2 文本格式标签 1.3 列表标签 1.4 链接和媒体标签 1.5 表格标签 1.6 表单标签 1.7 分区和布局标签 1.8 元数据标签 2.css样式 2.1 字体样式 2.2 文本样式 2.3 背景样式 2.4 边框样式 2.5 间距样式 2.6 宽度和高度 2.7 显示…

NLP——Transfromer 架构详解

Transformer总体架构图 输入部分&#xff1a;源文本嵌入层及其位置编码器、目标文本嵌入层及其位置编码器 编码器部分 由N个编码器层堆叠而成 每个编码器层由两个子层连接结构组成 第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接 第二个子层连接结构包…

音质提升秘籍:专业音频剪辑软件汇总

现在欣赏传输音频文件比以前简单多了&#xff0c;这些音频的质量也影响了听众的体验与感受。所以使用一些靠谱的音频剪辑工具处理音频能让你的音频文件呈现更好的效果。 1.福昕音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ 这是一款电脑端软件。别看…