数字签名技术

article/2025/10/30 12:22:57

目录

一、数字签名

二、数字签名技术

2.1、基于哈希算法的数字签名与验证

2.2、基于非对称密钥加密体制的数字签名与验证

三、数字签名的作用


一、数字签名

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。

所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。

二、数字签名技术

数字签名的特点:
1、报文鉴别:
接收者能够核实发送者对报文的签名,确信该报文世发送者发送的,其他人无法伪造报文的签名。
2、报文的完整性:
接收者确信所收到的数据和发送者发送的完全一致而没有被篡改过。
3、不可否认:
发送者事后不能抵赖对报文的签名

数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。

2.1、基于哈希算法的数字签名与验证

哈希函数是一种"压缩函数",利用哈希函数可以把任意长度的输入经由散列函数算法变换成固定长度的输出,该输出的哈希值就是消息摘要,也称数字摘要。

在正式的数字签名中,发送方首先对发送文件采用哈希算法,得到一个固定长度的消息摘要( Message Digest);

再用自己的私钥对消息摘要进行签名,形成发送方的数字签名。

数字签名将作为队件和原文一起发送给接收方;接收方首先用发送方的公钥对数字签名进行解密得到发送方的数字摘要,然后用相同的哈希函数对原文进行哈希计算,得到一个新的消息摘要,最后将消息摘要与收到的消息摘要做比较。具体过程如下图所示 

2.2、基于非对称密钥加密体制的数字签名与验证

目前已有多种实现数字签名的算法,但是采用公钥算法要比采用对称加密算法更容易实现。

为了进行签名,A使用其私钥SKA对报文X进行D运算,如下图。A把经过D运算得到的密文传送给BB为了核实签名,用A的公钥进行E运算,还原出明文X

 除A外没有别人持有A的私钥,所以除A外没有别人能够产生密文DSKA(X)。这样B就相信报文是A签名发送的。以此实现报文鉴别。

其他人如果篡改了报文,但由于无法得到A的私钥SKA来对X进行加密,那么B对篡改的报文进行解密后,就会得到不可读的报文,以此判断报文的完整性。

A要抵赖曾发送过报文给BB可以XDSKA(X)出示给进行公证的第三方,第三方就很容易通过PKA去证实A确实发送X给了B,以此判断不可否认性。

这三项功能的关键点在于:第三方无法持有A的私钥SKA

上述过程仅对报文进行了数字签名,未对报文进行加密。因为截获到密文DSKA(X)并知道发送者的身份时,可通过查阅手册即可获得发送者的公钥PKA,因此可以知道报文的内容。

下图可同时实现数字签名和加密传输。图中SKASKB分别代表AB的私钥,PKAPKB分别代表AB的公钥。

三、数字签名的作用

1、防冒充(伪造):私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。 

2、鉴别身份:由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份。 

3、防篡改(防破坏信息的完整性):签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。

4、防重放:采用了对签名报文添加流水号、时间戳等技术,可以防止重放攻击。

5、防抵赖。在数字签名体制中,要求接收者返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖。

6、机密性(保密性)。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。可以对数字签名的报文进行加密。


http://chatgpt.dhexx.cn/article/KtSiAtrZ.shtml

相关文章

kettle spoon双击打开无反应

环境 windows 10、kettle 8.2、JDK 1.8 、CPU:I7-8565U、内存:16GB kettle的启动文件spoon双击之后(也试过以管理员身份运行)无反应 一、注册表修复 这个问题在网上各种搜索,查到的资料都是修改spoon里的Xms、Xmx、…

spoon工具的一些小细节问题

version7.1 1.输出乱码问题 (1)转换中的字段选择可对字段的编码做选择(此方法输出到excel可用) (2)数据库输出设置编码——>编辑——>选项,然后添加characterEncoding参数,值…

Kettle工具——Spoon、Kitchen、Pan、Carte

目录 1. Spoon 2. Kitchen和Pan (1)命令行参数 (2)例子 3. Carte Kettle里有不同的工具,用于ETL的不同阶段。主要工具如下: Spoon:图形化工具,用于快速设计和维护复杂的ETL工作…

kettle Spoon.bat启动问题

问题 启动Spoon.bat报错 解决方法 一、首先查看本机安装的jdk版本 在cmd命令窗口输入:java -version 能得到版本即为安装成功(需要配置环境) 一般为1.8,如果版本过高也会导致运行kettle出错 二、尝试修改Spoon.bat中的内存设…

kettle打开spoon.bat后无反应

主要两点 1.配置环境变量 、 2.修改spoon.bat 3.删掉 kettle根目录下E:\pdi-ce-7.1.0.0-12\data-integration\.kettle\db.cache-7.1.0-stable , 删掉db.cache-7.1.0-stable 文件 ; 以及 C:\Users\Administrator\.kettle\db.cache-7.1.0-stable , …

spoon.bat打不开或者打开闪退 | 解决办法

1.查看jdk版本,这里jdk必须为1.8及以上,强烈推荐使用jdk1.8,因为jdk1.9和jdk10对于spoon来说都不太稳定,因此最好使用jdk1.8; 查看jdk版本方法:winR再输入cmd然后按回车进入终端界面。 然后在终端输入&…

kettle的图形工具(Spoon)简单介绍

kettle(ETL)的简单使用 最近刚接手一个新项目,接触了一个叫kettle的工具,这玩意可以用在数据同步,数据清洗,跨数据源等问题,而且不需要写代码,简单易懂。 以下来源百度百科&#xf…

Spoon系列-概要

Spoon系列-概要 概要相关资源主要功能可构建 AST(Abstract Syntax Tree)静态代码分析(Static Code Analysis) 代码重写转换(Transform) 概要 可对Java 源代码进行分析,重写,转换的开源工具。支持Java13。 相关资源 Source&…

Spoon图形操作

Spoon图形操作 一、 Kettle的导入导出1.1 csv、txt(02、03)1.2 xlsx(Excel)(04)1.3 XML(05)1.4 json(06)1.5 SQL1.5.1 MySQL基础语法1.5.2 Spoon中的数据库操作(08) 1.6 CDC操作(Change Data Capture)(09、10)1.6.1 基于时间戳的CDC1.6.2 基于自增序列的CDC数据导入1.6.3 基于触…

kettle Spoon 的简单使用

Spoon分享 Kettle Spoon简介 ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,了解并掌握一种e…

基于kettle部署图形化界面(spoon)

最近使用kettle部署windows,mac、linux服务遇到的坑做一个总结。 1、mac、linux部署: 1⃣️拉取docker镜像 docker pull hiromuhota/webspoon 2⃣️创建并运行docker容器 docker run -d -p 8080:8080 hiromuhota/webspoon --name webspoon --restar…

数据导入与预处理——1.初步熟悉kettle-Spoon

文章目录 数据文件1.导入2.导出3.分发与复制 提示:以下是本篇文章正文内容,为初步使用spoon软件进行数据的导入导出步骤。 数据文件 1.导入 数据文件的导入 首先建立csv文件格式如下: 打开kettle新建转换: 从输入中找到对应的…

kettle运行spoon.sh启动图形化界面报错处理

一、问题描述: 安装kettle成功后运行spoon.sh显示如下报错: 二、原因分析: 没有安装Xmanager 三、解决方案: 1.下载Xmanager软件,安装教程参考 Xmanager 6标准版详细安装教程_小祥V5的博客-CSDN博客_xmanager安装教程…

问题:Spoon.bat启动不起来

问题:使用kettle进行数据迁移时,Spoon.bat死活启动不起来,尝试各种办法。 运行环境:windows7 64位,jdk1.8及以上,且环境变量配置ok。 检验:cmd->java -version,可以查看。环境变…

Macox kettle安装启动报错:一个未预期的错误发生在Spoon: probable cause:在停止Spoon前,请先关闭其它spoon窗口!

Macox kettle安装启动报错:一个未预期的错误发生在Spoon: probable cause:在停止Spoon前,请先关闭其它spoon窗口! 最近需要从oracle导一批数据到mysql,需要用到kettle,于是下载了mac版的kettle工具,基本步骤如下&…

Kettle spoon 工具实战分享

今天给大家带来一款ETL工具kettle spoon的实践分享 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。 Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提…

Springboot+Kettle(Spoon)

Springboot集成kettle实战 介绍项目截图javakettle实战代码1 pom.xml2 kettleUtil3 业务层方法a 资源库业务b 转换的相关业务c 完整代码 介绍 kettle就不介绍了,Web界面极其简单、丑陋,生产环境无法投入使用.所以这篇实战内容是springboot结合kettle的web端执行已经…

spoon新手入门教程

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工…

集线器、交换机与路由器有什么区别?

转发自:https://mp.weixin.qq.com/s/YXWBw3aFTSEFvkg_oN9eQA 我相信我们都玩过一款特别火的游戏:帝国时代。小时候想要玩帝国时代,需要到软件城购买盗版光盘安装(大概3块钱一张左右的样子,当时已经觉得很便宜了&#…

集线器和中继器

首先要明白,集线器和中继器两者都属于物理层的设备。物理层设备和其他层次的设备(如:交换机、网桥、路由器)最大的区别在于:集线器和中继器工作在同一个网段下的,而交换机、路由器等设备是工作在不同网段下的。 网段:…