数字签名系列一:签名简介与RSA签名算法

article/2025/10/30 11:55:03

数字签名系列一

  • 写在前面
    • 数字签名作用
    • 数字签名发展史
    • 带属性的数字签名
    • RSA数字签名方案

写在前面

学了一年的数字签名方案,一直都在一个点进行专研,虽然还是有所收获,总感觉还差点感觉,上了一年研究生,还没有对数字签名有整体了解。导师建议我从点到面,本来想写一篇综述之类的,看了看大佬写的综述,数字签名真的种类繁多,而且自己能力有限,写综述实在不知道从哪里下手,因此就想在自己博客上写写签名那些事,争取一周更一个数字签名算法,希望通过这样子方式,可以对数字签名有较深了解,也希望可以结交志趣相投的朋友一起探讨(本人菜鸟,求抱大腿)。在这里插入图片描述

数字签名作用

数字签名,本质上就是一种签名方式。古代人以手写或者印章,指模等方式进行签名,表示自己对签名的内容了解且负有责任,当出现矛盾纷争的时候可以作为证据起到法律责任(不知为啥想到了卖身契),随着计算机发展,要求我们对数字文档进行签名认证,如何让我们的签名如同手写印章那样合法有效?数字签名技术便应运而生。
数字签名技术大多使用公钥密码机制,最简单的构造即签名者用自己私钥进行签名,任意验证者使用签名者的公钥进行验证。根据公钥密码体制可知,已知公钥求私钥是困难的,因此只要验证通过,就可以认为签名有效,因此数字签名具有保证签名者身份的真实性,签名内容完整性以及一旦验证通过,签名不可抵赖性(概括为数字签名的三个特性:真实性,完整性与不可抵赖性)。

数字签名发展史

1976年,Whitfield与Martin Hellman发表历史性文章[1],提出数字签名的概念。
1978年,发表RSA数字签名方案。RSA是一种很经典的数字签名方案,在现实生活中仍有很大的应用。迄今为止,对RSA的攻击已经很多,但都没有对它构成真正的威胁。
1978年,Rabin发表了一次性签名方案(OTS)[2]一次性签名方案实现简单,甚至可以直接用部分密钥(与身份有关)作为签名。每个密钥对仅加密1bit,安全性高。缺点是成本高,效率慢。为了提高效率,提出Merkle数字签名方案。
1984年,Elgamal发表基于离散对数问题的Elgamal数字签名算法[3]
1984年,Adi Shamir提出基于身份的密码技术(IBC),且给出了第一个基于身份的数字签名方案.基于身份的密码也称为基于标识的密码。
1986年Amos Fiat和Adi Shamir提出Fiat-Shamir变换[4],该变换可以将一大类身份认证转化为数字签名算法。(主要应用之一,可以把交互式零知识证明转化为非交互式,化简算法,提高效率,在数字签名算法中应用广泛)
1991年NIST发表数字签名算法DSA,是对Elgamal数字签名算法的变形
2002年ChoonCha,JungHee Cheon等利用双线性对构造短签名算法。
2017年NIST征集后量子公钥算法标准化工作,后量子数字签名方案不断得到重视
2008年Gentry,Peikert等人提出了第一个高效安全的格签名方案[5]
2001年,曾贵华教授提出了第一个仲裁量子签名协议(AQS)[6]

带属性的数字签名

简单功能的数字签名方案已经不能满足一些特殊需求,比如电子现金,电子选取,交通等领域应用,使得数字签名功能不断得到完善,现介绍几个带属性的数字签名技术。
(1)盲签名:1982年David Chaum提出盲签名概念。盲签名是相对于一般的数字签名而言的概念,是指签名人员虽然对某个消息签了名,但他并不知道所签消息的具体内容,也就是说对签名人而言,消息被盲化处理过。签名的有效性是指可以在消息去盲以后公开验证。
(2)多重签名:多重数字签名即为多人同时对一份数字分档进行签名。多重数字签名技术有很多应用场景,比如,夫妻共同财产的支配问题,只有两者均同意才可以进行财产支配。多重机制可用于对于签名有需求且对长度有敏感的应用。与多重签名类似的签名机制为聚合签名。聚合签名分为通用聚合签名与顺序聚合签名两种。
(3)门限签名:提到门限签名,不得不提秘密共享技术。很多门限签名都是有秘密共享机制转化而成。门限签名是普通数字签名的一个重要分支,是门限秘密共享技术和数字签名的一种结合。1991年,Desmedt-Frankel首次提出了(t,n)门限签名方案。(t,n)门限签名方案是指由n个成员组成一个签名群体,该群体有一对公钥和私钥,群体内大于等于t个合法、诚实的成员组合可以代表群体用群私钥进行签名,任何人可利用该群体的公钥进行签名验证。这里t是门限值,只有大于等于t个合法成员才能代表群体进行签名,群体中任何个或更少的成员不能代表该群体进行签名,同时任何成员不能假冒其他成员进行签名。采用门限签名方式可以实现权力分配,避免滥用职权。
…未完待续

RSA数字签名方案

第一个数字签名方案,我选择了比较经典的RSA数字签名。在介绍这个签名之前,首先想先介绍一下RSA加解密算法:
RSA公钥算法(基于大整数分解难题)
(1)选取两个不同大素数p,q
(2)计算n=pq, φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi (n)=\left ( p-1 \right )\left ( q-1 \right ) φ(n)=(p1)(q1),其中 φ ( n ) \varphi (n) φ(n)是欧拉函数。
(3)随机选取整数e作为公钥,要求满足 ( e , φ ( n ) ) = 1 \left ( e,\varphi \left ( n \right ) \right )=1 (e,φ(n))=1
(4)采用欧几里得算法计算私钥d,使得ed=1mod φ ( n ) \varphi (n) φ(n)
e,n是公钥,d是私钥。p,q, φ ( n ) \varphi (n) φ(n)可销毁不可公开
RSA签名算法
最简单的RSA签名算法即私钥签名,公钥验证,具体流程如下:
(1)密钥对的产生(e,d),把e传输给验证者。
(2)对消息M进行处理,求其摘要,公开摘要算法。
(3)用户用自己私钥对摘要进行加密处理后,把摘要以及原文发送给验证者
(4)验证者用对方公钥进行解密,得到摘要,计算M的摘要,看看两个摘要是否一致,一致签名成功,否则失败。
这次就先介绍到这里,如有错误望指正!

参考文献
[1] Diffie W., Hellman M. (1976) New Directions in
Cryptography. IEEE Transactions on Information Theory.
22 (6): 644.
[2]Rivest R., Shamir A., Adleman L. (1978) A Method
for Obtaining Digital Signatures and Public-Key
Cryptosystems. Communications of the ACM. 21 (2):
120–126
[3]ElGamal T. (1985) A Public Key Cryptosystem and
a Signature Scheme Based on Discrete Logarithms.
Advances in Cryptology. CRYPTO 1984. Lecture Notes in Computer Science, vol 196. Springer, Berlin,
Heidelberg.
[4]Fiat A., Shamir A. (1987) How To Prove Yourself:
Practical Solutions to Identification and Signature
Problems. Advances in Cryptology — CRYPTO’ 86.
CRYPTO 1986. Lecture Notes in Computer Science, vol
263. Springer, Berlin, Heidelberg.
[5] Craig Gentry, Chris Peikert, Vinod Vaikuntanathan. Trapdoors for hard lattices and new cryptographic constructions. In the 40th Annual ACM Symposium on Theory of Computing. ACM, 2008, 197-206.
[6]Zeng G, Keitel C H. Arbitrated quantum-signature scheme[J]. Physical Review A, 2002, 65(4): 042312.


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

相关文章

密码学---数字签名和认证协议---数字签名标准

数字签名标准 DSS的基本方式RSA签名过程DSS签名过程 数字签名算法DSA全局公钥用户私钥x用户公钥y用户为待签消息选取的秘密数k签名过程验证过程 数字签名标准(Digital Signature Standard,DSS)是美国公布的联邦信息处理标准,采用SHA和一种新的签名技术的…

数字签名与签名验证过程

1.1 生成数字签名 1 利用RSA算法生成公钥、私钥。私钥由密钥持有者自主保存,公钥可对外发布。 2 准备好待签名的文档。 3 利用哈希算法(HASH),生成待签名文档的摘要。(文档摘要) 4 利用签名者的私钥&am…

什么是数字签名?其安全性从何而来?

一、数字签名简介 数字签名是基于公钥密码体制(非对称密钥密码体制)的。 1.1.基本特征 数字签名必须保证以下三点: 报文鉴别——接收者能够核实发送者对报文的签名;报文的完整性——接收者不能伪造对报文的签名或更改报文内容。…

数字签名的工作原理

数字签名是公钥基础结构的基础部分。当我们说PKI时,一般想到的是数字证书,证书颁发机构(CA),银行使用的Key,以及SSL通信等等。 数字证书,一般都是成对存在的,包含证书的公钥,和证书…

网络安全之数据加密和数字签名技术

一、计算机网络面临的安全性威胁和解决办法 1、计算机网络上的通信面临以下两大类威胁:被动攻击和主动攻击,如下图所示: 2、解决办法,由上图可知: 对于主动攻击,可以采取适当措施加以检测。 对于被动攻击…

一文了解数字签名、数字证书、自签证书

参考 关于自签SSL证书的一些小知识汇总 对于ssl中的pem文件和key 文件的理解 openssl 生成证书 ca.pem client.pem server.pem SSL:证书文件 数字证书原理 数字签名是什么? 数字签名和数字证书的原理解读(图文) 数字签名和数字证书有哪些区别与联…

数字签名算法实现

一、实验目的   掌握利用Hash算法对要传送信息提取消息摘要的方法,理解数字签名的作用及数字签名算法的工作原理,了解多种非对称加密算法都可以用来设计数字签名算法。综合运用前面实验掌握的知识和技术,利用C语言或Java语言设计并实现数字…

数字签名——

数字签名和公钥加密的区别 公钥加密: Alice采用Bob的公钥对消息加密,传给Bob,Bob用自己的私钥解密 数字签名: Alice采用自己的私钥对消息m签名,Alice将消息m和签名发送给Bob收到m和签名后,Bob用Alice的公钥来验证签名的有效性 数…

安全技术 数字签名

(一)介绍 数字签名是一种将相当于现实世界中的盖章、签字的功能在计算机世界中进行实现的技术。使用数字签名可以识别篡改和伪装,还可以防止否认。 通过消息认证码,我们可以识别消息是否被篡改或者发送者身份是否被伪装&#xf…

数字签名技术简介

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是非对称密钥加密技术与数字摘要技术的应用数字签名机制作为保障网络信息安全的…

数字签名技术

目录 一、数字签名 二、数字签名技术 2.1、基于哈希算法的数字签名与验证 2.2、基于非对称密钥加密体制的数字签名与验证 三、数字签名的作用 一、数字签名 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串&…

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 基于触…