什么是数字签名?(数字签名与信息摘要又有什么关系?)

news2024/11/17 21:43:08

        在上一篇博文【什么是信息摘要】结尾我给出了一个结论:“看来单纯的信息摘要技术还不能保证信息的完整性,即不能确定信息是否被篡改”,由此并引出了“数字签名”的概念。上一篇博文的地址在下面,没看的小伙伴可以看一下(大概耗时4分钟)。

什么是信息摘要?_韦_恩的博客-CSDN博客信息摘要就是原数据通过某个算法生成的一个固定长度的单向Hash散列值(PS:常用来生成信息摘要的算法有MD5与SHA算法)。固定长度得意思就是不论原文内容多大,其生成的信息摘要都是固定长度的。单向的意思是过程不可逆,即只能通过原始数据生成Hash散列值,而Hash散列值无法生成原始数据。这是因为Hash生成过程会对原始数据造成破坏。因此信息摘要不能用来做加密。但是他是不是就一无是处了呢?并不是! 相信看过我本专题【RSA原理1】的同学都不会陌生上面的图片,该图片就体现了信息摘要的作用,即用来https://blog.csdn.net/qq_42539194/article/details/128212173

目录

1.数字签名为什么能有效的证明信息没有被篡改?

2.什么是数字签名?

3.数字签名还有什么用?

4.关于数字签名的奇怪问题


1.数字签名为什么能有效的证明信息没有被篡改?

在上一篇博文中讲到一个例子:

        当甲向乙发送一个数据A的同时也发送这个数据生成的信息摘要a,当乙收到甲发送的数据A时,利用这个数据A自己再生成一个信息摘要b,随后将自己生成的信息摘要b与甲发送过来的信息摘要a进行对比,利用信息摘要的特点可知,若a=b完全一致就代表信息没有被篡改。

        但是若丙在中间截获数据A的时候也截获到了信息摘要a,并将他俩一起篡改后(改为信息C与信息摘要c)发送给乙,乙拿着C自己生成信息摘要d,很明显c一定等于d。那么乙就无法判断甲发送的数据是否被篡改了。

       那么数字签名是如何保证的呢?很简单,用到了 非对称加密思想。甲用自己的私钥对数据的A的信息摘要a进行加密得到a1(这个过程叫做数字签名),随后将数据A与a1发送给乙;乙收到后先对数据A进行hash计算得到信息摘要b,随后用甲的公钥对a1进行解密得到了原信息摘要a,此时a与b相等与否就准确的证明了信息是否被篡改(这个过程叫数字签名验证)。完美的解决了此前说的问题。

        试想一下,中间出现了丙截获了信息A与加密后的信息摘要a1,同时也获得了甲的公钥。于是乎丙把信息A改成了信息C,也生成了新的信息摘要c,但是因为丙没有甲的私钥,无法对自己生成的信息摘要c模拟甲进行数字签名。假设丙用自己的私钥对c进行数字签名。那由于公钥私钥的严格对应关系,乙收到信息后是无法用甲的公钥解密的,很明显就知道了信息被篡改了!

2.什么是数字签名?

        通过1的例子我想大家已经知道了,所谓“数字签名”就是用信息发送者自己的私钥对信息摘要进行加密,对应的也就衍生出了“数字签名验证”,即接收者用发送者的公钥对加密数字签名的解密并得到原始信息摘要的过程。如图所示:

 3.数字签名还有什么用?

身份认证:在数字签名中,用户的公钥是其身份的标志,当使用私钥签名时,如果接收方或验证方用其公钥进行验证并获通过,那么可以肯定,签名人就是拥有私钥的那个人,因为私钥只有签名人知道。

防止抵赖:数字签名即可以作为身份认证的依据,也可以作为签名者签名操作的证据。要防止接收者抵赖,可以在数字签名系统中要求接收者返回一个自己签名的表示收到的报文,给发送者或受信任第三方。如果接收者不返回任何消息,此次通信可终止或重新开始,签名方也没有任何损失,由此双方均不可抵赖。

防重放攻击:重放攻击(Replay Attacks),是计算机世界黑客常用的攻击方式,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。在数字签名中,如果采用了对签名报文加盖时戳等或添加流水号等技术,就可以有效防止重放攻击。

多重加密:手写签字的文件一旦丢失,文件信息就极可能泄露,但数字签名可以加密要签名的消息,只是要稍加改动。即用接收方的公钥加密,即可保证信息机密性。(数字信封)

4.关于数字签名的奇怪问题

问1:A向B发送消息,B如何知道消息是谁发送的?B知道了是A发送的消息,但是A抵赖怎么办?

        为了防止这个问题的发生,A发送信息给B之前,会先用自己的私钥对信息加密,之后发送给B,B拿到消息后,使用A的公钥即可解密,这就证明了消息是A发送的。换句话说,B用谁的公钥解密成功了,就证明了消息是谁发送的。

 问2:既然用的还是非对称加密技术,那为什么加密解密要改个名字叫数字签名与数字验证呢?

        因为数字签名的发送的东西并不是保密的,网络中任何人都可以利用公钥进行解密。他只是确定身份用的。而传统的非对称加密往往传输的是保密的东西,所以叫加密解密更贴切。

问3:为什么是对信息摘要进行非对称加密解密,而不是对原始数据进行加密解密呢?

        因为非对称加密解密技术并不适合对大量信息使用,因为其密钥太长、加密效率太低。而常用的信息摘要生成算法如MD5、SHA生成的散列值分别是128与160位的信息摘要,其体量较小,故对信息摘要进行非对称加密是合理的。

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

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

相关文章

CSDN第13次竞赛题解与总结

前言 2022/12/7 CSDN第13次竞赛「人民邮电出版社 & CSDN」联合主办。 本次奖品为《计算之魂》: 系统地讲解了计算机科学的精髓,不仅有助于了解计算机科学,更有助于了解 IT 产业的技术特点、培养一些特殊的思维方式、掌握信息时代特殊的…

开源web自定义表单有哪几个特点?

目前,市场正在蓬勃发展中,作为企业,采用传统表单的弊端也逐渐显现出来,面临比较大的问题就是办公效率得不到提升。在各行各业正积极筹备朝着数字化方向转型的背景下,采用开源web自定义表单可以弥补传统表单弊端&#x…

windows系统“彻底”隐藏任务栏

项目概况及目标 因某项目所需,要实现win10系统上任务栏的“彻底”隐藏。此处任务栏隐藏要求无键盘操作无法唤出。 方案一、任务栏设置 我们都知道,在任务栏设置中可以通过更改自动隐藏任务栏选项来实现任务栏的隐藏显示。 但是该方案的隐藏会在鼠标经…

论文速读系列一:VoteNet、CBGS、BirdNet、StarNet、STD

如有错误,恳请指出。 参考网上资料,对一些经典论文进行快速思路整理 文章目录1. VoteNet2. CBGS3. BirdNet4. StarNet5. STD参考网上资料,对一些经典论文进行快速思路整理 1. VoteNet paper:《Deep Hough Voting for 3D Object …

【正点原子FPGA连载】第三十章 基于OV5640的PL以太网视频传输实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第三十章 基于OV…

TextMeshPro源码移植-替换掉PackageManager

因为工作需要,使用类似美术字的效果 TextMeshPro支持各种效果,效能也可以(到底这个可以到底是多可以,效率有多高,反正都是传说,哥也不知道),唯一缺点就是不支持多语言 只要你的项目…

Pandas使用手册

Pandas是一款快速,强大,灵活且易于使用的开源数据分析和操作工具, 建立在Python编程语言之上。 Pandas 前言Pandas是一款快速,强大,灵活且易于使用的开源数据分析和操作工具,建立在Python编程语言之上。 一…

[附源码]JAVA毕业设计食品销售网站(系统+LW)

[附源码]JAVA毕业设计食品销售网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

Pig4Cloud之登陆验证(一)客户端认证处理

前端登陆 handleLogin() {this.$refs.loginForm.validate(valid > {if (valid) {this.$store.dispatch("LoginByUsername", this.loginForm).then(() > {this.$router.push({path: this.tagWel.value});}).catch(() > {this.refreshCode();});}});}看一下L…

HTML制作一个汽车介绍网站【大学生网页制作期末作业】

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Big Faceless:PDF Viewer for JAVA Crack

PDF Viewer是一个可以显示PDF文档的Swing组件。针对不需要完整 API 的客户,Viewer 可以作为 Applet、应用程序或通过 Java Web Start 安装,或嵌入到 Swing 应用程序中。 Big Faceless PDF Library 是一个用于创建、编辑、显示和打印 Acrobat PDF 文档的…

TI Lab_SRR学习_2 天线布局和系统设计

AWR1642具有2个发射天线和4个接收天线。天线布局如下图所示。两根发射天线Tx1和Tx2间距为2lamda,接收天线之间的间距为lamda/2。 下面以TI SRR这个案例为例,讲解根据上述的天线布局如何进行设计。 SRR既要看得远又要分辨率高,设计上采用了多模式雷达的设计思想,具有两种工…

文献阅读(194)Multi-packet Bypassing

文章目录题目:Stay in your Lane: A NoC with Low-overhead Multi-packet Bypassing时间:2022会议:HPCA研究机构:乔治华盛顿大学、GIT 本篇论文的主要贡献: 新的流控制算法FastFlow,用于在非重叠路径上无…

UNIAPP实战项目笔记49 支付成功页面的布局

UNIAPP实战项目笔记49 支付成功页面的布局 实际案例图片 显示确认支付成功页面布局 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式 代码 payment-success.vue部分 <template><view class"payment-success&…

Docker的安装 与 环境配置 及 阿里云镜像仓库配置、常用命令等

目录 一、Docker简介 Docker的应用场景 Docker 的优点 1、简化程序 2、避免选择恐惧症 3、节省开支 Docker的架构 Docker 和虚拟机的区别 下图是虚拟机的体系结构&#xff1a; 下图是Docker的体系结构&#xff1a; 二、Centos7安装Docker 【安装】 安装条件&#x…

实用于单片机的C++字符串切割匹配算法

前几天写GPS模块串口程序的时候遇到了一点小问题&#xff0c;GPS模组上传的数据量大且结构复杂&#xff0c;单片机中又没有上位机中的字符切割函数&#xff0c;琢磨了半天自己写了个切割函数。 本算法中兼具匹配和切割的功能&#xff0c;可以匹配指定的标志并按照指定分隔符将指…

Springboot 使用 Mybatis 启动失败排查定位

收获 当遇到项目启动失败&#xff0c;却没有错误日志打印出来的时候&#xff0c;试试在 run 方法上加个 try-catch&#xff0c;即可捕获到异常 Mybatis 的别名扫描路径不要指定的太宽泛&#xff0c;有可能会出现 Bean 名冲突&#xff0c;导致初始化失败 联想到之前碰到的问题…

无影云电脑——云上安全办公

文章目录无影云桌面介绍安装新手体验特点区别改变无影云桌面 介绍 阿里云无影云桌面&#xff08; Elastic Desktop Service&#xff09;的原产品名为弹性云桌面&#xff0c;融合了无影产品技术后更名升级。它可以为您提供易用、安全、高效的云上桌面服务&#xff0c;帮助您快速…

微信小程序的生命周期概览

IntersectionObserver 用于监听元素是否进入视口&#xff08;与视口是否存在相交&#xff09;&#xff0c;在图片懒加载等场景中被广泛应用&#xff0c;不过除了这个基础的用法&#xff0c;他还有更强大的能力。 使用场景 目前已知的 IntersectionObserver 常用使用场景包括&…

Jenkins-pipeline语法

Pipeline概念 Pipeline是将一个命令/程序/进程的输出发送到另一个命令/程序/进程&#xff0c;进行进一步处理 Pipeline的代码定义了整个构建过程 基本的Pipeline语法格式 声明式的pipeline语法格式 所有的声明都必须包含在pipeline{}中 块只能有节段&#xff0c;指令&#x…