实验编号:
实验七
实验名称:
RSA
算法数字签名
实验内容描述:
通过实验实例了解
RSA
算法数字签名。
实验设计与实现:
1
、
RSA
数字签名体制:
RSA
算法中数字签名技术实际上是通过一个
Hash
函数来实现的。数字签名的特
点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同
的文件将得到不同的数字签名。
一个最简单的
Hash
函数是把文件的二进制码相累加,
取最后的若干位。
Hash
函数对发送数据的双方都是公开的。
只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签
名和验证的文件传输过程如下:
(1)
发送方首先用
Hash
函数从原文得到数字签名,然后采用公开密钥体系用发
达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文
后面;
(2)
发送一方选择一个秘密密钥对文件进行加密,
并把加密后的文件通过网络传
输到接收方;
(3)
发送方用接收方的公开密钥对密秘密钥进行加密,
并通过网络把加密后的秘
密密钥传输到接收方;
(4)
接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;
(5)
接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;
(6)
接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;
(7)
接收方用得到的明文和
Hash
函数重新计算数字签名,并与解密后的数字签
名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时
使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数
字签名和经过计算的数字签名必然是不相同的。这就提供了一个安全的确认发送方
身份的方法。
2
、
RSA
数字签名体制的基本算法表述:
(1)
体制参数
假设用户甲使用如下的参数
:
大合数
n=p1*p2
,其中
p1
和
p2
是大素数;
用户甲将公开模数
n
和公钥
e
,而将
p1
,
p2
与私钥
d
严格保密。
(2)
签名算法
假设用户甲对数据
M
∈
Zn
进行签名,计算
S=Sig(M)=Md mod n
并将
S
作为用户甲对数据
M
的数字签名附在数据
M
后。
(3)
验证算法
假设用户乙需要验证用户甲对数据
M
的签名
S
,
用户乙计算
M’=Sdmod n
并判断
M’
是否等于
M
,如果
M’=M
,则说明签名
S
确实是用户甲所产生的,否则,签名
S