零知识证明基础:数字签名

1、绪论

数字签名(Digital Signature),也称电子签名,是指附加在某一电子文档中的一组特定的符号或代码。它利用密码技术对该电子文档进行关信息提取并进行认证形成,用于标识签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造。

数字签名是非对称密钥加密技术与数字摘要技术的应用。

数字签名技术一般分为带仲裁和不带仲裁的两类。如果使用对称密钥进行数字签名,则必须使用仲裁者,非对称可以不带仲裁。

2、数字签名特点

为了满足身份认证、数据完整性和不可否认性等需求,数字签名具有以下特点:

  • 可信性;
  • 不可重用性;
  • 不可改变性;
  • 不可伪造性;
  • 不可否认性。

3、数字签名流程

数字签名流程简要介绍如下:

  • 发送方用一个哈希函数 H a s h ( ) Hash() Hash()将要发送的消息生摘要(一串数字),然后用发送方的私钥对这个摘要进行加密,这个加密后的摘要将作为消息的数字签名和消息一起发送给接收方;
  • 接收方首先用与发送方一样的哈希函数从接收到的原始消息中计算出消息摘要,接着用公钥对消息附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该消息是发送方的。
    在这里插入图片描述

使用数字签名的好处在于:

  • 确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
  • 确定消息的完整性:因为数字签名使用了哈希函数,消息如果发生稍微改变,摘要的值将发生变化。

一次数字签名涉及到一个哈希函数 H a s h ( ) Hash() Hash()、接收方的公钥、发送方的私钥。

4、基于RSA的签名方案

RSA的签名方案流程如下:

  • 1)生成公私密钥对
    ①选取两个大素数 p p p p p p,计算 n = p q n=pq n=pq n n n的欧拉函数 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n) = (p-1)(q-1) φ(n)=(p1)(q1);
    ②随机选取整数 e ( 1 < e < φ ( n ) ) e(1<e<\varphi(n)) e(1<e<φ(n))作为公钥,满足 gcd ⁡ ( e , φ ( n ) ) = 1 \gcd(e,\varphi(n))=1 gcd(e,φ(n))=1,即 e e e φ ( n ) \varphi(n) φ(n)互素;
    ③使用Euclid扩展算法计算私钥: d ≡ e − 1 m o d φ ( n ) d \equiv e^{-1} \mod \varphi(n) de1modφ(n),即 e e e 的逆元(先选择 e e e再确定 d d d的原因是:加密的重要性大于解密的重要性)。

  • 2)签名过程
    设待签名的消息为 m m m,签名者利用安全的 H a s h Hash Hash函数产生消息摘要 h = H a s h ( m ) h=Hash(m) h=Hash(m),然后计算签名: s ≡ h d m o d n s \equiv h^d\mod n shdmodn

  • 3)验证过程
    签名接收者收到消息 m m m和签名 s s s,计算消息摘要 h = H a s h ( m ) h=Hash(m) h=Hash(m),然后,检验等式 h m o d n ≡ s e m o d n h \mod n \equiv s^e \mod n hmodnsemodn。若成立,则签名有效;否则签名无效。


签名时使用 H a s h Hash Hash函数可以防止利用同态的伪造攻击,有很好的抗攻击性。
RSA签名方案存在签名可重用的问题,同一消息在不同时刻签名不应是相同的。

RSA签名方案还存在签名可重用的问题,同一消息在不同时刻签名不应是相同的。这个问题可以通过在签名中引人随机数来解决。


5、基于椭圆曲线的签名方案

基于椭圆曲线(Elliptic Curve)的签名是基于椭圆曲线的非对称密码体制在数字签名中的一个实现方案,即在椭圆曲线有限域上实现签名算法,其安全性依赖于椭圆曲线的有限域上的离散对数难题。

与RSA数字签名相比,在相同的安全强度条件下,基于椭圆曲线的签名方案签名长度短、存储空间小、计算速度快,特别适用于计算能力和存储空间有限、带宽受限、要求高速实现的场合。

基于椭圆曲线的签名方案流程如下:

  • 1)生成公私密钥对
    选择椭圆曲线 E E E一点 G ∈ E G\in E GE G G G的阶为满足安全要求的素数 n n n,即 n G = O nG=O nG=O
    选取一个随机数 d ∈ [ 1 , n − 1 ] d∈[1,n-1] d[1,n1],计算 P B P_B PB使得 P B = d G P_B=dG PB=dG,那么公钥为 ( E , n , G , P B ) (E,n,G,P_B) (E,n,G,PB),私钥为 d d d

  • 2)签名过程
    用户随机选取整数 k ∈ [ 1 , n − 1 ] k∈[1,n-1] k[1,n1],计算 k G = ( x , y ) kG=(x,y) kG=(x,y), r ≡ x m o d n r≡x\mod n rxmodn
    待签名的消息为 m m m,计算 e = H a s h ( m ) e=Hash(m) eHash(m)
    计算 s ≡ ( e + r d ) k − 1 m o d n s≡(e+rd)k^{-1} \mod n s(e+rd)k1modn,如果 r = 0 r=0 r=0 s = 0 s=0 s=0,则另选随机数 k k k,重新执行上面的过程,消息 m m m的签名为 ( r , s ) (r,s) (r,s)

  • 3)验证过程
    签名接收者收到消息 m m m和签名 ( r , s ) (r,s) (r,s);
    计算 e = H a s h ( m ) e=Hash(m) e=Hash(m)
    计算 u ≡ s − 1 e m o d n u≡s^{-1}e\mod n us1emodn, v ≡ s − 1 r m o d n v≡s^{-1}r\mod n vs1rmodn ( x 1 , y 1 ) = u G + v Q , r 1 ≡ x 1 m o d n (x_1,y_1)=uG+vQ,r_1≡x_1\mod n (x1,y1)=uG+vQ,r1x1modn
    判断 r r r r 1 r_1 r1的关系,相等则签名有效,否则无效。

6、数字签名与区块链

数字签名在区块链技术中起到了核心的作用,特别是在确保交易的完整性和不可否认性方面。在区块链中每一个区块都保存了上一个区块的哈希值。

基本原理:

  • 当在区块链上发送一个交易时,首先创建一个交易的描述,包括发送者的地址、接收者的地址、金额等信息。
  • 发送者使用他们的私钥对这个交易描述进行签名,生成数字签名。
  • 交易(包括交易描述和数字签名)被发送到网络,并由网络中的其他参与者(例如比特币中的矿工)验证。

交易的验证:

  • 网络中的验证者使用发送者的公钥来验证数字签名。如果签名验证通过,这意味着交易确实来自声称的发送者并且没有被篡改。
  • 另外,验证者还会检查发送者是否拥有足够的资金来完成交易。

区块的创建:

  • 一旦交易被验证,它会被放入待打包的交易池。
  • 矿工或验证者将这些交易打包成一个新的区块。
  • 新区块包含了这些交易的信息以及前一个区块的哈希值。这种链接方式确保了所有区块的连续性和不可更改性。

区块的添加:

  • 新创建的区块会被添加到区块链上,成为链的一部分。
  • 一旦区块被添加到链上,其中的交易就被认为是已确认的,并且难以更改。因为要更改一个区块中的信息,你不仅需要更改那个区块,还需要更改它之后的所有区块,这在计算上是非常困难的。

数字签名确保了区块链上的每个交易的真实性和完整性。同时,通过将每个新区块链接到前一个区块的哈希值,确保了区块链的不可更改性和安全性。

总之,数字签名和哈希函数都是区块链安全性的基石。数字签名确保交易的真实性,而哈希函数通过连续链接每个区块来确保整个链的不可更改性。


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

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

相关文章

pyqt5 制作视频剪辑软件,切割视频

该软件用于切割视频,手动选取视频片段的起始帧和结束帧并保存为json文件。gui界面如下:包含快进、快退、暂停等功能, 代码如下: # coding=UTF-8 """ theme: pyqt5实现动作起始帧和结束帧的定位,将定位到的帧数保存json文件 time: 2024-6-27 author: cong…

详细介绍LP-SCADA系统的核心数据采集单元

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 SCADA系统的数据采集功能是其核心组成部分&#xff0c;它允许系统从各种传感器、仪器和设备中收集实时数据。以下是SCADA系统数据采集功能的详细描述&#xff1a; 传感器和…

Kotlin vs Java:深入解析两者之间的最新差异与优劣(全面指南)

文章目录 1. 概述2. 语法简洁性3. 空安全4. 扩展函数5. 协程6. 数据类7. 智能类型转换8. 默认参数与命名参数9. 无 checked exceptions10. 单例模式总结 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨…

Java对象类辨识指南:Object与Objects类的区别详解

今天在写lambda表达式时&#xff0c;用filter来做过滤判断我的结果是否为null时使用到了Objects.nonNull&#xff0c;但是敲着敲着发现不对劲&#xff0c;怎么没有nonNull方法?? 其实时我少敲了一个s&#xff0c;当时自己并没有很清楚Object和Objects两者之前的区别&#xf…

LangGPT:高质量提示词框架

题目&#xff1a;LangGPT: Rethinking Structured Reusable Prompt Design Framework for LLMs from the Programming Language作者: Ming Wang; Yuanzhong Liu; Xiaoming Zhang; Songlian Li; Yijie Huang; Chi Zhang; Daling Wang; Shi Feng; Jigang LiDOI: 10.48550/arXiv.2…

Qt自定义信号

1.Teacher类下定义信号signals: Student类下定义槽函数&#xff1a; Teacher.h #pragma once#include <QObject>class Teacher : public QObject {Q_OBJECTpublic:Teacher(QObject *parent);~Teacher(); signals:void Ask(); //老师向学生提问void Ask(QString str);…

量化投资 日周月报 2024-06-28

文章 深度学习在量化交易中的应用:在BigQuant量化交易平台的文章中,探讨了深度学习在量化交易中,特别是在因子挖掘方面的应用。文章提到,随着传统线性模型的潜力逐渐枯竭,非线性模型逐渐成为量化交易的主要探索方向。深度学习因其对非线性关系的拟合能力,在量化交易中展现…

qmt量化交易策略小白学习笔记第52期【qmt编程之商品期货数据】

qmt编程之获取商品期货数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 主力合约生成规则 每个品种只有一个主连合约。主连合约于下一个交易日进行指向切换&#xff0c;切换前主连合约不变…

Unity Animator 运行时修改某个动画状态的播放速度

1.添加动画参数&#xff0c;选择需要动态修改速度的动画状态 2.在属性面板种设置速度倍速参数

HarmonyOS ArkUi ArkWeb加载不出网页问题踩坑

使用 使用还是比较简单的&#xff0c;直接贴代码了 别忘了配置网络权限 Entry Component struct WebPage {State isAttachController: boolean falseState url: string State title: string Prop controller: web_webview.WebviewController new web_webview.WebviewCont…

自定义注解+AOP形式监控接口调用日志

目的&#xff1a; 通过自定义注解&#xff0c;在需要监控接口调用输出日志的类或方法上&#xff0c;加上自定义注解&#xff0c;实现无侵入式接口监控。 实现&#xff1a; idea结构 1、导入pom <dependency><groupId>org.aspectj</groupId><artifactI…

ASUS/华硕天选Air 2021 FX516P系列 原厂win10系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…

FTP 文件传输协议:概念、工作原理;上传下载操作步骤

目录 FTP 概念 工作原理 匿名用户 授权用户 FTP软件包 匿名用户上传下载实验步骤 环境配置 下载 上传 wget 授权用户上传下载步骤 root用户登录FTP步骤 监听 设置端口号范围 修改用户家目录 匿名用户 授权用户 FTP 概念 FTP&#xff08;File Transfer Prot…

JAVA设计模式-大集合数据拆分

背景 我们在做软件开发时&#xff0c;经常会遇到把大集合的数据&#xff0c;拆分成子集合处理。例如批量数据插入数据库时&#xff0c;一次大约插入5000条数据比较合理&#xff0c;但是有时候待插入的数据远远大于5000条。这时候就需要进行数据拆分。数据拆分基本逻辑并不复杂&…

毅速丨金属3D打印是制造业转型升级的重要技术

随着科技的进步&#xff0c;金属3D打印技术已成为制造业升级的重要驱动力。它以其独特的优势&#xff0c;正引领着制造业迈向新的未来。 金属3D打印技术的突破&#xff1a; 设计自由。金属3D打印能制造任意形状和结构的零件&#xff0c;为设计师提供了无限的创意空间。 快速制…

idea配置外置gradle

下载gradle包&#xff0c;解压 https://gradle.org/install/#manually 创建一个本地仓库 mkdir /Users/caidingnu/save/gradle-8.5/gradlerep如果需要全局适应 gradle&#xff0c;环境变量自行配置 配置阿里云仓库 路径&#xff1a; /Users/caidingnu/save/gradle-8.5/init.…

ONLYOFFICE8.1-------宝藏级别桌面编辑器测评

简介 ONLYOFFICE 8.1 是一个功能强大的办公套件&#xff0c;提供了一系列广泛的功能&#xff0c;用于文档管理、协作和沟通。它包括用于创建和编辑文本文档、电子表格、演示文稿等的工具。ONLYOFFICE 8.1 的一些关键特性包括&#xff1a; 1. 协作&#xff1a;ONLYOFFICE 8.1 允…

51单片机STC89C52RC——11.1 蜂鸣器播放音乐

目录 目的/效果 一&#xff0c;STC单片机模块 二&#xff0c;蜂鸣器 2.1 介绍 2.2 板子位置电路图 2.3 发声原理 2.4 音符和频率 三&#xff0c;创建Keil项目 四&#xff0c;代码 4.1 乐谱代码 4.1.1 《义勇军进行曲》 4.1.2 《天空之城》 4.1.3 《小美满》 4.1.…

安防监控视频平台LntonAIServer视频监控管理平台裸土检测算法技术核心和应用场景

LntonAIServer裸土检测算法是一种基于人工智能技术的创新解决方案&#xff0c;旨在实现对裸土地表的自动识别。以下是对该算法的详细分析&#xff1a; 技术基础&#xff1a; 1、该算法利用深度学习和计算机视觉技术&#xff0c;通过捕捉视频或图像中的关键信息&#xff0c;如…

快手主播李香周助力推动 K-beauty风潮谈背后成功秘诀

近年来&#xff0c;互联网的迅速发展和SNS社交媒体的普及&#xff0c;人们通过网络可以随时随地对自己感兴趣的自由畅谈和学习。而直播带货更是作为一种依托于互联网兴起的新型营销方式&#xff0c;凭借其价格优势和新颖的介绍方式为消费者带来了十分便捷的购物体验。 本期采访…