关于短群签名论文阅读

参考文献为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.mzph.cn/news/764289.shtml

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

相关文章

Spring Boot 3 极速搭建OAuth2认证框架

本篇环境 Java 17Spring Boot 3.2.3Spring Authorization Server 1.2.3开发工具 SpringToolSuite4Spring Boot 3.2.3 需要JDK 17及之上的版本。 项目初始化 项目可以使用Spring的初始化器生成, 也可以创建一个Maven类型的项目。 项目创建后的目录结构如下: 项目配置 使用 …

几个常用的控件(2)

目录 一、单选按钮Radiobutton和RadioButtonList 1、Radiobutton控件 (1)button控制方式 (2)Radiobutton控制方式 2、RadiobuttonList控件 二、列表框ListBox和下拉列表DropdownList 1、ListBox 2、DropdownList 三、面板…

【Java】二叉搜索树

文章目录 一、搜索树二、使用代码实现一棵二叉搜索树1.查找2.插入3.删除(重点) 总结 一、搜索树 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值…

练习 12 Web [极客大挑战 2019]BabySQL

本题复习:1.常规的万能语句SQL查询,union联合查询,Extractvalue()报错注入 extractvalue(1,concat(‘0x7e’,select(database())))%23 我一开始挨着试,感觉都无效 直到报错注入,查到了库名‘geek’ 尝试查表名&…

重新配置node.js,npm,环境变量

起因是检查最近收到的一些朋友分享给我的各种资料,什么前端,后端,java,go,python等语言,想着将一个模拟QQ音乐的一个源代码进行跑通,看看有什么特别之处。如下图 出现了node环境路径问题,参考链接 https:/…

使用CSS3画出一个叮当猫HTML源码

我们经常使用PS或者Flash制作动画&#xff0c;本文则介绍了如何用CSS3画出个叮当猫&#xff0c;实现过程很有趣&#xff0c;感兴趣的朋友可以参考一下 首先&#xff0c;先把HTML结构搭建好&#xff1a; <div class"wrapper"> <!--叮当猫整体--> <di…

是德科技keysight N1912A双通道功率计

181/2461/8938产品概述&#xff1a; Keysight(原Agilent) N1912A P系列双通道功率计可提供峰值、峰均比、平均功率、上升时间、下降时间、最大功率值、最小功率值以及宽带信号的统计数据。 Keysight(原Agilent) N1912A P系列双通道功率计, 可提供峰值、峰均比、平均功率、上升…

Redis安装详细教程

Redis安装详细教程 文章目录 Redis安装详细教程前言一、windows下安装Redis1、下载地址2、启动redis服务3、连接redis 二、Linux下安装Redis&#xff1a;直接安装1、下载并安装 三、Linux下安装Redis&#xff1a;Docker中安装 前言 一、windows下安装Redis 1、下载地址 官方下…

Unity发布webgl之后打开PDF文件,不使用js,不和浏览器交互

创建一个按钮&#xff0c;然后点击就会打开 在webgl下要使用这样的路径拼接&#xff0c;不然就会报错。 btnBook.onClick.AddListener(() >{var uri new System.Uri(Path.Combine(Application.streamingAssetsPath "/Books", "文档.pdf"));Debug.Log…

PyTorch深度学习:如何实现遥感影像的自动化地物分类?

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

从零开始学Spring Boot系列-集成Kafka

Kafka简介 Apache Kafka是一个开源的分布式流处理平台&#xff0c;由LinkedIn公司开发和维护&#xff0c;后来捐赠给了Apache软件基金会。Kafka主要用于构建实时数据管道和流应用。它类似于一个分布式、高吞吐量的发布-订阅消息系统&#xff0c;可以处理消费者网站的所有动作流…

[音视频学习笔记]七、自制音视频播放器Part2 - VS + Qt +FFmpeg 写一个简单的视频播放器

前言 话不多说&#xff0c;重走霄骅登神路 前一篇文章 [音视频学习笔记]六、自制音视频播放器Part1 -新版本ffmpeg&#xff0c;Qt VS2022&#xff0c;都什么年代了还在写传统播放器&#xff1f; 本文相关代码仓库&#xff1a; MediaPlay-FFmpeg - Public 转载雷神的两个流程…

Flutter动画(一)Ticker、Animate 原理

在任何系统的UI框架中&#xff0c;动画原理都是类似的&#xff0c;即&#xff1a;在一段时间内&#xff0c;快速地多次改变UI外观&#xff1b;由于人眼会产生视觉暂留&#xff0c;所以最终看到的就是一个“连续”的动画。 Flutter中对动画进行了抽象&#xff0c;主要涉及 Anim…

后端前行Vue之路(一):初识Vue

1.Vue是什么 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方…

如何用pytorch调用预训练Swin Transformer中的一个Swin block模块

1&#xff0c;首先&#xff0c;我们需要知道的是&#xff0c;想要调用预训练的Swin Transformer模型&#xff0c;必须要安装pytorch2&#xff0c;因为pytorch1对应的torchvision中不包含Swin Transformer。 2&#xff0c;pytorch2调用预训练模型时&#xff0c;不建议使用pretr…

【python】python3基础

文章目录 一、安装pycharm 二、输入输出输出 print()文件输出&#xff1a;格式化输出&#xff1a; 输入input注释 三、编码规范四、变量保留字变量 五、数据类型数字类型整数浮点数复数 字符串类型布尔类型序列结构序列属性列表list &#xff0c;有序多维列表列表推导式 元组tu…

基于python+vue网络相册设计与实现flask-django-nodejs-php

网络相册设计与实现的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff0…

CentOS/RHEL 6.5 上 NFS mount 挂起kernel bug

我本身有四台机器做WAS集群&#xff0c;挂载nfs&#xff0c;其中随机一台客户端计算机端口关闭释放将进入不良状态&#xff0c;对 NFSv4 挂载的任何访问都将挂起&#xff08;例如“ls&#xff0c;cd 或者df均挂起”&#xff09;。这意味着没有人并且所有需要访问共享的用户进程…

深度学习图像处理02:Tensor数据类型

上一讲深度学习图像处理01&#xff1a;图像的本质&#xff0c;我们了解到图像处理的本质是对矩阵的操作。这一讲&#xff0c;我们讲介绍深度学习图像处理的基本数据类型&#xff1a;Tensor类型。 在深度学习领域&#xff0c;Tensor是一种核心的数据结构&#xff0c;用于表示和…

复旦大学MBA:iLab项目探寻科技创新 助力企业出海

2024年2月底&#xff0c;新一轮复旦MBA iLab商业咨询项目&#xff08;以下简称iLab项目&#xff09;正式拉开序幕。      科创大时代&#xff0c;如何于变局中创新突破、绘就商业“蓝图”&#xff1f;怎样把握ESG投资机遇&#xff0c;创造可持续发展的未来&#xff1f;如何…