关于短群签名论文阅读

news2024/11/18 4:33:59

参考文献为2004年发表的Short Group Signatures

什么群签名?

        群签名大致就是由一组用户组成一个群,其中用户对某条消息的签名,改签名不会揭示是哪一个用户签署的,签名只能表明该消息确实是来自该群的签名。对于群还有一个群管理者,该管理者拥有系统私钥,就可以将用户的匿名性给取消即管理者可以知道该签名来自群中具体的那一个用户。在如今的现实生活中,群签名的应用场景还是很多的。例如,车联网。国产电车的崛起,许多电动车都有信号发射器,用来发送和接收信息。某一车辆,在驾驶时发现前方出现堵车需要减速慢行,车练就会发送该信息给附加车辆,避免造成事故发生。但这些信息可能包含车辆的位置和速度等个人信息,我们要避免在传递信息出现泄漏隐私的情况。此外,为了避免有些恶意车辆制造假消息,我们需要使用签名对该消息进行认证后才允许发送。这种情况,我们就可以使用群签名。

方案概括

        本方案的签名大小更小长度低于200字节,并且安全性和长度相等的RSA一样。方案的底层数学难题是SHD问题以及在双线性群中的线性假设问题。系统基于一个新的零知识证明知识,利用零知识证明来证明某人知道SDH问题的解。

预备知识

SDH问题

        我们说当我们给任何某人提供(g_1,g_2,g_2^{\gamma} ,... ,2^{\gamma^q}),这个人可以根据提供的信息求出(g_1^\frac{1}{\gamma +x},x)的概率是可忽略的。

决策线性问题

        简单的说当我们给任何某人提供(u^a,v^b,h^c),这个人可以根据提供的信息去判断h^c=u^av^b的概率是可忽略的。如果一个算法可以解决决策线性问题在群G_1中,那么就可以解决在该群中DDH问题。反之,则不成立。

        由决策线性问题我们可以构造一个线性加密方案,不同于ElGamal加密,该方案能够在DDH问题被攻破的情况下依旧是安全的。加密方案大致如下:

初始化:从G_1中随机选择三个生成元u,v,h作为用户公钥,用户选择私钥x,y满足u^x=v^y=h

加密:用户随机选择a,b并输出(u^a,v^b,h^{a+b}m)作为密文。

解密:将密文看成由(T_1,T_2,T_3)三部分构成,解密通过\frac{T_3}{T_1^xT_2^y}最终得到明文。

Fiat–Shamir启发式

Fiat-Shamir启发式是使用一个哈希函数将交互式的证明系统变成非交互式的证明系统。具体的如何转换的可以看看这一篇Fiat-Shamir启发式。

SDH零知识证明

        在该系统中公共信息为g_1,u,v,h \in G_1 ,g_2,w=g_2^{\gamma } \in G_2,协议证明拥有(A,x),满足A^{x+\gamma }=g_1

Alice首先使用线性加密方案将A加密得到密文的三个部分,之后向验证者Bob证明自己拥有 (α,β,x,δ1​,δ2​)的知识。这五个值满足五个关系式,以至于Alice使用五个致盲因子去计算五个R之后,可以通过五个R和三个T以及两者交互的参数使以下(1),(2),(3),(4),(5)五个式子成立,因此证明Alice拥有五个值的知识从而揭示自己拥有(A,x)。例如式子(1),由于T_1是公开的,R_1是Alice传给Bob的,Bob计算左边的式子,发现如果要让等式成立,那么Alice需要知道\alpha,才能算出r_{\alpha }+c\alpha,这就证明了Alice拥有该知识,其余类似。

        可以从以下三点的出,该协议是决策线性假设下SDH对知识的诚实验证者零知识证明。

        首先,协议计算上是正确的。再者,协议是可模拟的(可模拟性保证了协议不会泄露有关秘密值)。最后,该协议存在一个知识提取器(说明证明者不会欺骗验证者,他确实存在这么一个知识)。

SDH知识签名

        通过 Fiat-Shamir 启发式从知识证明获得的签名通常称为知识签名。签名方案如下:

        公钥包含哈希函数H,群G_1G_2的生成元g_1,g_2,以及G_1中的随机生成元u,v,hw=g_2^{\gamma } \in G_2

        私钥就是SDH对(A,x)满足A^{\gamma +x}=g_1

        签名:首先根据SDH零知识证明即协议一计算出(T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5)然后计算哈希值c=(M,T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5)。之后使用c去执行协议中第三部分的计算获得s_\alpha ,s_\beta ,s_x,s_{\delta_1},s_{\delta_2}。构造签名为\sigma =(T_1,T_2,T_3,c,s_\alpha ,s_\beta ,s_x,s_{\delta_1},s_{\delta_2})

        验证:验证者使用方程(1-5)重新推导R1、R2、R3、R4和R5(由公钥以及签名中T_i

最后建议使用重新推到的算出的哈希值能否等于之前的c。

 理解来看因为\widetilde{R_i}的计算是满足(1-5)的公式,而R_i也是满足(1-5)的公式,因此两者具有相同的数学属性和关系,因此,输入相同值的哈希函数才会相同。

群签名方案

         主要的思路就是零知识证明。假设Alice就是签名者,然后发布了一个知识签名,利用了Fiat-Shamir启发式,将交互式变成了非交互式,这样签名过程完全是由签名者来操作的。验证者Bob收到签名后,可以通过签名中的内容验证验证Alice确实有相关知识,并且通过计算出的参数和原本签名中的一些参数以及公钥中的参数的一个哈希会得到相同的一个哈希,这是验证的一个思路。

安全性

        我们说如果有一个敌手能攻破我们的方案,那么我们就可以利用敌手去解决DL问题。

        给与模拟器线性加密公钥u,v,h,模拟器生成群签名密钥生成算法的公钥其余部分,然后,他向敌手提供公钥以及用户的私钥。模拟器拥有一个哈希表用来存储每次敌手询问的内容和对应的哈希值以便如果相同的询问,模拟器给敌手的回答是一致的。

        通过提供两个序列i_0,i_1和消息M,敌手来请求其完全匿名挑战。模拟器通过两个用户私钥A_{i_0},A_{i_1},来请求其不可区分挑战。(敌手如果能解决完全匿名那么我们就可以根据敌手的输出来区分私钥,其中私钥是被嵌入在线性密文中的是作为信息加密中的消息)模拟器根据挑战者选择的某一个序号的A_{i_i}生成(T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5,c,s_\alpha ,s_\beta ,s_x,s_{\delta_1},s_{\delta_2})的副本,并将c=(M,T_1,T_2,T_3,R_1,R_2,R_3,R_4,R_5)如果出现冲突的情况则终止,之后模拟器返回有有效签名给敌手。因为敌手可以攻破方案即他知道签名是哪个用户签的,那么模拟器就可以根据敌手的输出而输出来区分线性加密密文。对于SDH问题和匿名性的关系是,我们任意给一个x_i去计算g_1^{1/\gamma +x_i}是困难的,而后者就是用户密钥,我们说如果知道用户的密钥其实就知道了是哪一个用户。

撤销性

        对于撤销机制,我们需要一个撤销权威去发布一个撤销列表,列表中包含被撤销用户的类私钥信息(g_2^{1/\gamma +x_i},x_i),其中可以通过同构映射到G_1中就变成了该用户的私钥因此我这里说他是类私钥。撤销表会给所有的签名者和验证者,用于更新公钥信息以便以后去验证签名。我们让y=\prod _{i=1}^{\gamma }(\gamma +x_i)那么\bar{g_1}=g_1^{\frac{1}{y}},\bar{g_2}=g_2^{\frac{1}{y}},\bar{w}=(\bar{g_2})^{\gamma }。文中给出了撤销一个用户的例子如下图。

        对于未撤销的用户可以自身私钥和撤销列表信息更新私钥,而撤销用户计算不会信公钥对应的私钥,因此保证了撤销机制。如果撤销用户可以算出私钥那么就可以解决SDH问题,所以是不存在的。

排他性 

        群组中的任何成员,甚至群组管理员(被赋予追踪密钥的实体)也不能代表其他用户生成签名。因此,没有用户会因为他未曾生成的签名而被诬陷。排除性的一个更强的概念,在这个概念中,即使是发放用户密钥的实体也不能代表用户伪造签名。使用了一个协议(称为JOIN)来为新用户发放密钥。在协议结束时,密钥发放者并不知道赋予用户的完整私钥,因此无法伪造用户的签名。我们的群签名方案可以通过类似的机制扩展以提供强排除性。用户和密钥发放者参与一个JOIN协议,在协议结束时用户ii拥有一个三元组(A_i,x_i,y_i),使得A_i^{\gamma +x_i}h_1^{yi}=g_1​,这里h_1​是某个公共参数。y_1由用户选择,并对密钥发放者保密。

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

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

相关文章

VTK9.2.0+Qt5.14.0 绘制点云

背景 为了显示结构光重建后的点云,开发QT5.14.0VTK9.2.0的上位机软件,用于对结构光3D相机进行控制,并接收传输回来的3D数据,显示在窗口中。 配置QT和VTK VTK9.2.0下载源码,用Cmake编译,编译好的VTK9.2.0…

Nacos介绍和Eureka的区别

Nacos(全称为 Alibaba Cloud Nacos,或简称为 Nacos)是一个开源的分布式服务发现和配置管理系统。它由阿里巴巴集团开发并开源,旨在帮助开发人员简化微服务架构下的服务注册、发现和配置管理。 1、Nacos 提供了以下主要功能&#…

短视频矩阵系统----源头开发

短视频矩阵源码技术开发要求及实现流程: 短视频矩阵开发要求具备视频录制、编辑、剪辑、分享等基本功能,支持实时滤镜、特效、音乐等个性化编辑,能够实现高效的视频渲染和处理。开发流程主要包括需求分析、技术选型、设计架构、编码实现、测试…

Binance labs孵化的Swan Chain明牌空投测试网零撸教程

简介:Swan Chain 是一个 Layer2云计算网络,可以将数据、计算、带宽和支付集成到一个套件,为Web3项目提供全面的解决方案。 相关概念:云计算、layer2、infrastructure 融资信息:项目在去年获得bi’an领投的300万美元融…

Flask 与小程序 的图片数据交互 过程及探讨研究学习

今天不知道怎么的&#xff0c;之前拿编程浪子地作品抄过来粘上用好好的&#xff0c;昨天开始照片突的就不显示了。 今天不妨再耐味地细细探究一下微信小程序wxml 和flask服务器端是怎么jpg图片数据交互的。 mina/pages/food/index.wxml <!--index.wxml--> <!--1px …

深度学习知识【CSPNet网络详解】

CSPNet的贡献 1.增强了CNN的学习能力&#xff0c;能够在轻量化的同时保持准确性。 2.降低计算瓶颈。 3.降低内存成本。 CSPNet介绍 在神经网络推理过程中计算量过高的问题是由于网络优化中的梯度信息重复导致的。CSPNet通过将梯度的变化从头到尾地集成到特征图中&#xff0c…

Golang案例开发之gopacket抓包三次握手四次分手(3)

文章目录 前言一、理论知识三次握手四次分手二、代码实践1.模拟客户端和服务器端2.三次握手代码3.四次分手代码验证代码完整代码总结前言 TCP通讯的三次握手和四次分手,有很多文章都在介绍了,当我们了解了gopacket这个工具的时候,我们当然是用代码实践一下,我们的理论。本…

如何在linux环境上部署单机ES(以8.12.2版本为例)

ES安装&#xff08;以8.12.2版本为例&#xff09; 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…

002_avoid_for_loop_in_Matlab避免使用for循环

避免使用for循环 在程序设计思想中&#xff0c;循环是一个很有力的工具。在循环中&#xff0c;计算机很轻松地重复执行相同的操作。循环是汇编之上的编程中最重要的概念之一。Matlab的循环有两个语言构造&#xff0c;一个是for循环&#xff0c;另一个是while循环。在Matlab中&…

Git原理及使用

1、Git初识 Git是一种版本控制器: 对于同一份文件,做多次改动,Git会记录每一次改动前后的文件。 通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 注意: Git其实只能跟踪⽂本⽂件的改动,⽐如TXT⽂件,⽹⻚,所有的程序代码…

基于docker配置pycharm开发环境

开发过程中&#xff0c;为了做好环境隔离&#xff0c;经常会采用docker来进行开发&#xff0c;但是如何快速将docker中的环境和本地开发的IDE链接起来是一个常见问题&#xff0c;下面对其进行简单的总结&#xff1a; &#xff08;1&#xff09;前期准备 开发环境docker和工具p…

【练习】双指针算法思想

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Java算法&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 1. 移动零 1.1 题目描述 1.2 讲解算法原理 1.3 编…

STM32 AD单通道函数设计

单片机学习&#xff01; 目录 文章目录 前言 一、ADC配置步骤 二、详细步骤 2.1 开启RCC时钟 2.2 配置GPIO 2.3 配置多路开关 2.4 配置ADC转换器 2.5 开启ADC电源 2.6 ADC进行校准 2.6.1 复位校准 2.6.2 等待复位校准完成 2.6.3 开始校准 2.6.4 等待校准完成 三、启动AD转换函数…

数据结构大合集06——树与二叉树的相关函数运算算法

函数运算算法合集06 1、树的基本运算1.1 树的存储结构1.1.1 双亲存储结构1.1.2 孩子链存储结构1.1.3 孩子兄弟链式存储结构 2、二叉树的顺序存储2.1 二叉树顺序存储的结构体2.2 顺序存储的基本思路 3、二叉树的链式存储3.1 二叉树的链式存储的结构体3.2 链式存储的基本算法3.2.…

docker镜像复制与常见命令

一、前言 最近通过阿里的镜像仓库远程拉取镜像&#xff0c;发现以前的版本不见了&#xff0c;拉取了最新的镜像&#xff0c;有发现版本不配问题。那么想使用老版本的镜像那就要从别的环境获取。于是就需要进行离线镜像复制&#xff0c;打包&#xff0c;上传&#xff0c;重新导入…

时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测

时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测 目录 时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现BiTCN-GRU双向时间卷积神经网络结…

Tkinter 一文读懂

Tkinter 简介 Tkinter&#xff08;即 tk interface&#xff0c;简称“Tk”&#xff09;本质上是对 Tcl/Tk 软件包的 Python 接口封装&#xff0c;它是 Python 官方推荐的 GUI 工具包&#xff0c;属于 Python 自带的标准库模块&#xff0c;当您安装好 Python 后&#xff0c;就可…

AI新工具(20240322) 免费试用Gemini Pro 1.5;先进的AI软件工程师Devika;人形机器人Apptronik给你打果汁

✨ 1: Gemini Pro 1.5 免费试用Gemini Pro 1.5 Gemini 1.5 Pro是Gemini系列模型的最新版本&#xff0c;是一种计算高效的多模态混合专家&#xff08;MoE&#xff09;模型。它能够从数百万个上下文Token中提取和推理细粒度信息&#xff0c;包括多个长文档和数小时的视频、音频…

R语言逻辑回归与lasso模型

一、数据描述 数据集heart_learning.csv与heart_test.csv是关于心脏病的数据集&#xff0c;heart_learning.csv是训练数据集&#xff0c;heart_test.csv是测试数据集。 变量名称变量说明age年龄sex性别&#xff0c;取值1代表男性&#xff0c;0代表女性pain 胸痛的类型&#x…

SQLiteC/C++接口详细介绍sqlite3_stmt类(十二)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十一&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十三&#xff09; 48、sqlite3_stmt_isexplain sqlite3_stmt_is…