RSA数字签名
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
完整地,验证算法可以表述如下:
Ver(M,S)=(M=Sdmod n) true:false
如果(M=Sdmod n )为真,则表达式的值为true,否则表达式的值为false。
(4)实现过程
RSA数字签名体制的实现过程如图1所示。发送方用户甲发送报文M时,先用自己的私钥d1对报文进行加密,产生密文d1(M);再用接收方用户乙的公钥e2进行第二次加密,产生密文e2(d1(M))。接收方用户乙收到密文后,先用自己的私钥d2进行第一次解密,还原出密文d1(M),即d2(e2(d1(M)))=d1(M);再用发送方用户甲的公钥e1进行第二次解密,得到明文P,即e1(d1(M))=M。
RSA数字签名体制必须同时使用收。发双方的私钥d1和公钥e1才能获得原文(明文),也才能完成发送方的身份认证和接收方无法伪造或篡改报文的功能。因为只有发送方才有其私钥d1,所以,只要能用其公钥e1还原,发送方就无法否认所发送的报文。
3、实验过程:
流程分析:
1.甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。
(3)发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方;
(4)接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;
(5)接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;
(6)接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;
(7)接收方用得到的明文和Hash函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。这就提供了一个安全的确认发表述:
(1)体制参数
假设用户甲使用如下的参数:
密码学与信息安全技术
实验编号:实验七
实验名称:RSA算法数字签名
实验内容描述:
通过实验实例了解RSA算法数字签名。
实验设计与实现:
1、RSA数字签名体制:
RSA算法中数字签名技术实际上是通过一个Hash函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的Hash函数是把文件的二进制码相累加,取最后的若干位。Hash函数对发送数据的双方都是公开的。
只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下:
(1)发送方首先用Hash函数从原文得到数字签名,然后采用公开密钥体系用发达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面;
(2)发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方;
2.甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
3.乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。
用私钥生成数字签名:
校验数字签名:
实验结果:
实验结论:
大合数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可能是由攻击者伪造生成的。
RSA算法数字签名是个加密的过程,数字签名验证是个解密的过程。使用公钥加密、私钥解密,完成了乙方到甲方的一次数据传递,通过私钥加密、公钥解密,同时通过私钥签名、公钥验证签名,完成了一次甲方到乙方的数据传递与验证,两次数据传递完成一整套的数据交互!。
Ver(M,S)=(M=Sdmod n) true:false
如果(M=Sdmod n )为真,则表达式的值为true,否则表达式的值为false。
(4)实现过程
RSA数字签名体制的实现过程如图1所示。发送方用户甲发送报文M时,先用自己的私钥d1对报文进行加密,产生密文d1(M);再用接收方用户乙的公钥e2进行第二次加密,产生密文e2(d1(M))。接收方用户乙收到密文后,先用自己的私钥d2进行第一次解密,还原出密文d1(M),即d2(e2(d1(M)))=d1(M);再用发送方用户甲的公钥e1进行第二次解密,得到明文P,即e1(d1(M))=M。
RSA数字签名体制必须同时使用收。发双方的私钥d1和公钥e1才能获得原文(明文),也才能完成发送方的身份认证和接收方无法伪造或篡改报文的功能。因为只有发送方才有其私钥d1,所以,只要能用其公钥e1还原,发送方就无法否认所发送的报文。
3、实验过程:
流程分析:
1.甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。
(3)发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方;
(4)接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;
(5)接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;
(6)接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;
(7)接收方用得到的明文和Hash函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。这就提供了一个安全的确认发表述:
(1)体制参数
假设用户甲使用如下的参数:
密码学与信息安全技术
实验编号:实验七
实验名称:RSA算法数字签名
实验内容描述:
通过实验实例了解RSA算法数字签名。
实验设计与实现:
1、RSA数字签名体制:
RSA算法中数字签名技术实际上是通过一个Hash函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的Hash函数是把文件的二进制码相累加,取最后的若干位。Hash函数对发送数据的双方都是公开的。
只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下:
(1)发送方首先用Hash函数从原文得到数字签名,然后采用公开密钥体系用发达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面;
(2)发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方;
2.甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
3.乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。
用私钥生成数字签名:
校验数字签名:
实验结果:
实验结论:
大合数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可能是由攻击者伪造生成的。
RSA算法数字签名是个加密的过程,数字签名验证是个解密的过程。使用公钥加密、私钥解密,完成了乙方到甲方的一次数据传递,通过私钥加密、公钥解密,同时通过私钥签名、公钥验证签名,完成了一次甲方到乙方的数据传递与验证,两次数据传递完成一整套的数据交互!。