密码学学习笔记(十六 ):Schnorr签名算法

交互式零知识证明

零知识证明(ZKP)就是不会将证据泄露给验证者的知识证明。Schnorr身份认证识别协议是一个交互式ZKP,它满足了完备性、可靠性、零知识性。所谓的交互式ZKP方案通常包含3个步骤(承诺、挑战和证明),在文献中通常被称为sigma协议。交互式协议增加了一些不可忽略的开销,因为它需要双方通过网络发送多条消息,并在双方不同时在线时会增加无法限制的延迟。因此,应用密码学领域几乎不使用交互式ZKP。

Fiat-Shamir转换可以将交互式ZKP转换为非交互式ZKP。数字签名是一种非交互式ZKP。将Fiat-Shamir转换应用于Schnorr身份识别协议,我们就可以得到Schnorr签名方案。总而言之,Schnorr签名本质上是两个值R和s,其中R是对某个秘密随机值的承诺(一般被称为nonce,因为它需要对每个签名都是唯一的),s是通过承诺R、私钥(见证x)和消息计算的值。

Schnorr识别协议

识别方案是证明人P和验证人V这两方之间的交互协议。如果协议成功,那么在协议结束时,验证者确信他正在与证明人交互,或者更准确地说,与知道与证明人公钥对应的密钥的人交互。

一个简单的例子是密码身份验证的标准协议。证明者的密钥是她的密码pw,公钥是H(pw),其中H是一个“单向”散列函数。该协议由证明方发送H(pw)组成,验证者检查这是否与存储的值匹配。虽然这对“直接”攻击是安全的,但对“窃听”攻击是不安全的,即对手可以观察到P和V之间的一些交互,然后尝试模仿P——一旦对手从一次交互中看到H(pw),他就可以在所有进一步的交互中模仿P。

在使用椭圆曲线的Schnorr识别协议中,证明者的秘密是一对(P,Q=[a]P)的离散对数a,其中P和Q是椭圆曲线E(Fq)上的点。(该系统适用于离散对数很难的任何有限阿贝尔群)为了防止窃听攻击,该协议有三轮:

公钥pk由一条椭圆曲线E(Fq)和两个r阶点P,Q∈E(Fq)组成。密钥sk是[1,r]中的一个整数,使得Q=[a]P

  • \rho选择一个随机k\overset{R}{\leftarrow}\left [ 1,r \right ] 并且将R=[k]P发送到V。
  • V随机选择一个“挑战”e\overset{R}{\leftarrow}\left [1,r \right ]并将e发送到\rho
  • \rho计算s=k+ae(mod r)并将s发送到V。

如果[s]\rho=R+[e]Q,则V接受。

初始随机值k的作用是“屏蔽”秘密a,以便在协议的后续执行中重复使用。

Schnorr签名

假设代数群G和素数阶r的元素g∈G对所有用户都是已知的。这些值(G,g,r)被称为系统参数。设h=g^{a}为用户的公钥。关于公钥h的消息m上的数字签名可以由知道私钥A的用户生成。在不知道私钥的情况下,很难计算给定公钥的签名。

非正式地说,公钥识别方案是验证方和验证方之间的协议,其中验证方有公钥pk和私钥sk,验证方有pk的副本。该协议有三个通信阶段:首先,证明者发送一个承诺s0;则验证者发送质询s1;则证明者发送响应s2。验证人接受或拒绝该证明。该协议旨在说服验证者,他们正在与知道与证明者公钥对应的私钥的用户进行通信。换言之,验证者应该确信他们正在与证明者沟通。

对于Schnorr格式[522,523],证明者具有公钥h=g^{a},其中g是素数阶r的代数群的元素,并且1≤a<r是一致随机选择的。证明者选择一个随机整数0≤k<r,计算s0=g^{k}并将s0发送给验证者。验证人向证明者发送“挑战”1≤s1<r。校准仪返回s2=k+as1(mod r)。

然后验证人检查是否满足:

如果是这种情况,则接受该证明。换言之,如果验证人接受证明,则证明人已经成功地向验证人识别了自己。 

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

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

相关文章

django框架向DRF框架演变过程详解

一、Django框架实现项目查询接口 主要知识点&#xff1a; Django框架视图函数 1、在 Django 项目中创建一个应用&#xff08;如果还没有创建&#xff09;&#xff1a; python manage.py startapp projects 2、在项目的 models.py 文件中定义项目模型 from django.db impor…

【C++】-stack和queue的具体使用以及模拟实现(dqeue的介绍+容器适配器的介绍)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Java八股文总结(二)

Java八股文总结&#xff08;续&#xff09; 接上篇笔记&#xff1a;Jhttps://blog.csdn.net/weixin_44780078/article/details/130192373 文章目录 Java八股文总结&#xff08;续&#xff09;六、MySql 相关1. InnoDB 与 MyISAM 的区别&#xff1f;2. 为什么 InnoDB 存储引擎表…

JavaFx 用户界面控件2——ListView

1.列表显示ListView 下面是一个JavaFX ListView的示例代码和使用方法&#xff1a; public class ListViewExample extends Application {Overridepublic void start(Stage primaryStage) {// 创建一个可观察的列表&#xff0c;用于存储ListView中的数据ObservableList<Str…

【MongoDB】SpringBoot整合MongoDB

【MongoDB】SpringBoot整合MongoDB 文章目录 【MongoDB】SpringBoot整合MongoDB0. 准备工作1. 集合操作1.1 创建集合1.2 删除集合 2. 相关注解3. 文档操作3.1 添加文档3.2 批量添加文档3.3 查询文档3.3.1 查询所有文档3.3.2 根据id查询3.3.3 等值查询3.3.4 范围查询3.3.5 and查…

UML与SYSML的关系

UML与SysML的联系 UML&#xff08;统一建模语言&#xff09;和SysML&#xff08;系统建模语言&#xff09;是两种与建模相关的语言&#xff0c;它们之间存在联系和区别。 SysML的图分类如下图所示。 联系 SysML是基于UML的&#xff0c;它重用了UML 2的子集&#xff0c;并提…

wordpress后台的路径都是空白,进不了后台怎么办?

主题或插件冲突&#xff1a;某些主题或插件可能与其他已安装的主题或插件不兼容&#xff0c;导致登录页面显示为空白。您可以通过禁用所有插件和将主题更改为默认主题来查看是否解决了问题。如果解决了问题&#xff0c;则可以逐个重新启用插件以找出是哪个插件造成冲突。 PHP错…

CGT Asia嘉年华|3D细胞培养与类器官研发峰会10月广州召开

类器官指利用成体干细胞或多能干细胞进行体外三维&#xff08;3D&#xff09;培养而形成的具有一定空间结构的组织类似物&#xff0c;是近10年来干细胞领域发展最快的研究热点之一。2022年&#xff0c;FDA 通过现代化法案 2.0&#xff0c;批准全球首个完全基于“类器官芯片”研…

Win11中的Swapfile.sys

除了 pagefile.sys 和 hiberfil.sys 文件外&#xff0c;在系统根目录会多出一个 swapfile.sys 虚拟内存文件。Windows 10/8 系统为什么会同时使用 SWAP 交换文件和 Page 页面文件呢&#xff1f; 其实 swapfile.sys 文件目前只被用来交换 Universal App (其实就是Metro App)的个…

java ajax

1.ajax定义:异步刷新技术 2.ajax语法 3.ajax实战 在不需要点击刷新按钮时&#xff0c;达到局部刷新的效果&#xff0c;如下图所示 步骤一&#xff1a;创建工程/包/js 步骤二&#xff1a;数据库/表创建 步骤三&#xff1a;实体类 步骤四&#xff1a;UserDao package cn.kgc…

音频数据分割单独处理后再拼接出现跳跃间断点的处理方法

+hezkz17进数字音频系统研究开发交流答疑 1如图所示 问题1: 对于一个81920字节的音频文件,如果是分割成小块4096输入(无重叠,均分),在频域上做去噪算法,每4k数据返回到时域上再拼接成80k的处理结果文件,发现处理结果有异常有跳跃间断点,像是频谱泄露?分割也需要有重…

计算机网络 day9 DNAT实验

目录 DNAT DNAT策略的典型应用环境 DNAT策略的原理 在网关中使用DNAT策略发布内网服务器 DNAT实验&#xff1a; 实验环境&#xff1a; DNAT网络规划拓扑图&#xff1a; 步骤&#xff1a; 1、创建linux客户端Web网站&#xff08;go语言&#xff09;&#xff0c;实现Web服…

如何快速爬取国内985大学学术学报pdf文件

背景 最近&#xff0c;在爬取关于国内985大学的学报时&#xff0c;我注意到大部分大学学报站点格式都采用相似的形式&#xff0c;并且PDF链接都使用自增的ID。然而&#xff0c;我也发现了一个问题&#xff0c;即大多数PDF链接的ID并不是连续的。现在我将向你分享一些方法&…

15 大模型训练 内存优化

先看GPU结构&#xff0c;我们常说显存的时候&#xff0c;说的一般就是Global memory 训练的过程中&#xff0c;我们为了反向传播过程&#xff0c;必须将中间的结果&#xff08;激活值&#xff09;存储下来。 在训练的过程中&#xff0c;那些会消耗内存呢&#xff1f; model we…

web-报错注入

必要的函数 rand select rand(0) from hackbiao; rand(0)&#xff1a;生成以0开头的随机数&#xff0c;生成的数量与字段下数据的条数相等。如果i没有这个地段的话&#xff0c;就会自己形成一个新的字段打印出来。 count和group by grouip by在进行排序的时候&#xff0c;会…

【分布式应用】Ceph的实战应用

目录 一、创建 CephFS 文件系统 MDS 接口1.1服务端操作1&#xff09;在管理节点创建 mds 服务2&#xff09;查看各个节点的 mds 服务3&#xff09;创建存储池&#xff0c;启用 ceph 文件系统4&#xff09;查看mds状态&#xff0c;一个up&#xff0c;其余两个待命&#xff0c;目…

SpringCloud(五)Gateway 路由网关

一、路由网关 官网地址&#xff1a;https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/ 我们需要连接互联网&#xff0c;那么就需要将手机或是电脑连接到家里的路由器才可以&#xff0c;而路由器则连接光猫&#xff0c;光猫再通过光纤连接到互联网&a…

对 Jenkins+ANT+Jmeter 接口测试的实践

目录 1、前言 2、框架与数据准备 3、脚本设计 4、整理测试报告 1、前言 JenkinsANTJMeter是一种常见的接口测试实践方案&#xff0c;可以实现自动化的接口测试和持续集成。Jenkins是一个流行的持续集成工具&#xff0c;ANT是一个构建工具&#xff0c;而JMeter是一个功能强大…

JS逆向系列之猿人学爬虫第18题-jsvmp - 洞察先机

文章目录 目标网址加密参数分析Python 实现往期逆向文章推荐目标网址 https://match.yuanrenxue.cn/match/18题目标着难度是困难级别,主要还是vmp保护的JS代码调试困难,理清逻辑就会变得简单了 加密参数分析 请求第一页时没有加密参数,从第二页开始,url会携带t和v两个参数…

240. 搜索二维矩阵 II

题目描述&#xff1a; 主要思路&#xff1a; 利用矩阵中的单调性进行搜索。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int nmatrix.size(),mmatrix[0].size();int in-1,j0;while(i>0&&j<m){if(m…