首页 > 科技 > 正文

签名算法是什么 数字签名算法实现方法

2022-04-12 14:53:41来源:泪雪网  

签名算法是指数字签名的算法。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是通过一个单向函数,对要传送的信息进行处理得到的用以认证信息来源,并核实信息在传送过程中是否发生变化的一个字母数字串。应用最为广泛的三种签名算法是:Rabin 签名、DSS 签名、RSA 签名。

基本概念

签名算法是指数字签名的算法。数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。

数字签名是通过一个单向函数,对要传送的信息进行处理得到的用以认证信息来源,并核实信息在传送过程中是否发生变化的一个字母数字串。数字签名提供了对信息来源的确定并能检测信息是否被篡改。数字签名要实现的功能是我们平常的手写签名要实现功能的扩展。平常在书面文件上签名的主要作用有两点,一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。采用数字签名,也能完成这些功能:

(1)确认信息是由签名者发送的;

(2)确认信息自签名后到收到为止,未被修改过。

数字签名算法有映象式和印记式两类。由于印记式的签名速度和验证速度比映象式快得多,因此印记式数字签名算法更为实用。

实现方法

实现数字签名有很多方法,数字签名采用较多的是公钥加密技术,同时应用最为广泛的三种是:Hash 签名、DSA 签名、RSA 签名。

对称密钥密码算法进行数字签名

对称密钥密码算法所用的加密密钥和解密密钥通常是相同的,即使不同也可以很容易地由其中的任意一个推导出另一个。在此算法中,加、解密双方所用的密钥都要保守秘密。

Lamport 发明了称为 Lamport.Difle 的对称算法:利用一组长度是报文的比特数(n)两倍的密钥 A,来产生对签名的验证信息,即随机选择 2n 个数 B,由签名密钥对这 2n 个数 B 进行一次加密交换,得到另一组 2n 个数 C。

发送和接收的方式如下:

(1)发送

发送方从报文分组 M 的第一位开始,检查 M 的第 i 位:

M 的第 i 位为 0 时,取密钥 A 的第 i 位;M 的第 i 位为 1 时,取密钥 A 的第 i+1 位。

直至报文全部检查完毕,所选取的 n 个密钥位形成了最后的签名。

(2)接收

接受方对签名进行验证,从第一位开始依次检查报文 M:

M 的第 i 位为 0 时,签名中的第 i 组信息是密钥 A 的第 i 位;M 的第 i 位为 1 时,签名中的第 i 组信息为密钥 A 的第 i+1 位。

直至报文全部验证完毕后,就得到了 n 个密钥,由于接受方发送验证信息 c,所以可以利用得到的 n 个密钥检验验证信息,从而确认报文是否是由发送方所发送。

Hash 签名

单向函数的概念是计算起来相对容易,但求逆却非常困难。也就是说,已知 X,我们很容易计算 f(X)。但已知 f(X),却难于计算出 X。

单向 Hash 函数有很多名字:压缩函数、缩短函数、消息摘要、指纹等。单向 Hash 函数 H(M)对一则任意长度的消息进行处理,返回一个具有固定长度 m 的散列值 h:

h=H(M),其中 h 的长度为 m=H(M)具有以下属性:

(1)给定 M,很容易计算出 h,这表现了函数的快速性;

(2)给定 h,很难计算出满足 H(M)=h 的 M,这表现了函数的单向性;

(3)给定 M1,很难找到一则消息 M2,使得 H(M1)=H(M2);

(4)h=H(M),h 的每一比特都与 M 的每一比特有关,并有高度敏感性。即每改变 M 的一比特,都将对 h 产生明显影响;

(5)Hash 函数除了信息 M 自身之外,应该基于发信方的秘密信息对信息 M 进行确认;

(6)输入数据 M 没有长度限制;

(7)对输入任何长度的 M 数据能够生成该输入报文固定长度的输出。

责任编辑:hnmd003

相关阅读

相关阅读

精彩推送

推荐阅读