首页 > 编程知识 正文

如何实现数字签名,数字签名加密解密过程

时间:2023-05-05 16:08:50 阅读:59062 作者:1438

数字签名系列前写的数字签名作用带数字签名发展史属性的数字签名RSA数字签名方案

写在前面

学习了一年的数字签名方案,一直在一个方面进行专业研究,但还是有成果的。 好像还没感觉到。 当了一年研究生,对数字签名还没有整体了解。 导师向我提出了点对点的建议。 本来想写综述之类的,但是读了一下大人物写的综述,发现数字签名种类真的很多,而且自己能力有限,所以不知道从哪里着手写综述。 因此,我想在自己的博客上写签名的事,完成一周一次的数字签名算法。 通过这样做,我们可以深入了解数字签名,并愿意与私人朋友一起讨论(

数字签名作用数字签名,本质上是一种签名方式。 古人通过手写、印章、指纹等方法进行签名,表明自己知道签名的内容并负有责任,在矛盾和纠纷发生时能够作为证据履行法律责任。 随着计算机的发展,要求对数字文档进行签名认证。 如何使我们的签名像手写印章一样合法有效呢? 数字签名技术应运而生。

数字签名技术大多使用公钥密码的结构,结构最简单的签名者用自己的私钥进行签名,任意的验证者用签名者的公钥进行验证。 根据公钥加密方案,众所周知公钥很难求出私钥,只要验证成功,签名就会被认为是有效的,因此数字签名具有保证签名人身份的真实性、签名内容的完整性,以及如果验证成功,签名的不可否认性(完整性、完整性、不可否认性三个

数字签名发展史1976年,Whitfield和Martin Hellman发表了历史性文章[1],提出了数字签名的概念。

1978年,发表了RSA数字签名方案。 RSA是一个非常经典的数字签名方案,在现实生活中仍然有很大的应用。 到目前为止,对RSA的攻击已经很多,但对此并没有构成真正的威胁。

1978年,Rabin宣布一次性签名方案[2]一次性签名方案实现简单,部分与身份相关的密钥也可以直接用作签名。 每个密钥对只加密1位,安全性很高。 缺点是成本高,效率慢。 为了提高效率,提出Merkle数字签名方案。

1984年,Elgamal推出了基于离散对数问题的Elgamal数字签名算法[3]

1984年,Adi Shamir提出了基于身份的加密技术(IBC ),并提供了第一种基于身份的数字签名方案。 基于id的密码也称为基于id的密码。

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)多重签名)多重数字签名是指多人同时在一个数字文件上签名。 多重数字签名技术有很多应用场合,如夫妻共同财产的支配问题,只有两者同意才能进行财产支配。 多个机制可用于需要签名且对长度敏感的APP应用。 与多重签名相似的签名机制是聚合签名。 聚合签名有通用聚合签名和逐次聚合签名两种。

(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)=(p−1)(q−1),其中 φ ( n ) varphi (n) φ(n)是欧拉函数。
(3)随机选取整数e<Z,1 φ ( n ) varphi (n) φ(n)作为私钥,要求满足 ( e , φ ( n ) ) = 1 left ( e,varphi left ( n right ) right )=1 (e,φ(n))=1
(4)采用完美的小白菜算法计算公钥e,使得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.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。