基于RSA的数字签名实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 基于RSA的数字签名实现
一、实验目的
掌握RSA算法的基本原理,通过用RSA算法对实际数据进行加密和解密来深刻了解RSA的运行原理。对数字签名有所了解,理解和掌握SHA–512算法,以及如何利用RSA和SHA–512算法来实现数字签名。
二、实验原理
1. RSA算法简介
公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中出现的问题.另外,随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗也成为非常重要的问题.数字签名可以起到身份认证,核准数据完整性的作用.目前关于数字签名的研究主要集中基于公钥密码体制的数字签名.
公钥密码体制的特点是:为每个用户产生一对密钥(PK和SK);PK公开,SK保密;从PK推出SK是很困难的;A,B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息.加密后的信息可通过任何不安全信道发送.B收到密文信息后,用自己私钥解密恢复出明文.
RSA公钥密码体制到目前为止还是一种认可为安全的体制. RSA算法和用RSA算法实现数字签名的理论,以及它们在实际应用中的实现.
1、RSA算法
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密钥对。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互换使用,即:
A=B^e2 mod n;B=A^e1 mod n;
2.RSA数字签名算法的理论描述
RSA数字签名算法的过程为:A对明文m用解密变换作: s Dk (m)=md mod n,其中d,n为A的私人密钥,只有A才知道它;B收到A的签名后,用A的公钥和加
密变换得到明文,因: Ek(s)= Ek(Dk (m))= (md)e mod n,又de1 mod (n)即de=l(n)+1,根据欧拉定理m(n)=1 mod n,所以Ek(s)=ml(n)+1=[m(n)]em=m mod n.若明文m和签名s一起送给用户B,B可以确信信息确实是A发送的.同时A也不能否认送给这个信息,因为除了A本人外,其他任何人都无法由明文m产生s.因此RSA数字签名方案是可行的.
但是RSA数字签名算法存在着因计算方法本身同构造成签名易被伪造和计算时间长的弱点,因此实际对文件签名前,需要对消息做SHA–512变换. SHA–512函数是一种单向散列函数,它将任意长度的消息压缩成512位的消息摘要.应用SHA–512的单向性(即给定散列值,计算消息很难)和抗碰撞性(即给定消息M,要找到另一消息M' 并满足两者的散列值很难),可以实现信息的完整性检验.另外该函数的设计不基于任何假设和密码体制而直接构造,执行的速度快,是一种被广泛认可的单向散列算法.
3. RSA数字签名算法的实现
RSA数字签名算法,包括签名算法和验证签名算法.首先用SHA–512算法对信息作散列计算.签名的过程需用户的私钥,验证过程需用户的公钥.A用签名算法将字符串形式的消息处理成签名;B用验证签名算法验证签名是否是A对消息的签名,确认是A发送的消息;消息没有被攥改过;A一定发送过消息.
1 签名算法
签名算法包括三步:消息摘要、计算、RSA加密.
消息摘要计算. 消息在签名前首先通过SHA–512计算,生成512位的消息摘要,对摘要作RSA计算. 用加密算法,采用签名者的私钥加密消息摘要,得到加密后的字符串.加密算法中使用的加密块为01类型.
2 验证签名算法
验证签名算法包括两步:RSA解密得签名者的消息摘要,验证者对原消息计
算摘要,比较两个消息摘要.验证签名的过程输入为消息,签名者的公钥,签名;输出为验证的结果,即是否是正确的签名.
RSA解密. 签名实际是加密的字符串.采用签名者的公钥对这个加密的字符串解密.解密的结果应为5128位的消息摘要.在解密过程中,若出现得到的加密块的类型不是01,则解密失败.签名不正确.
消息摘要计算和比较. 验证者对消息用SHA–512算法重新计算,得到验证者自己的消息摘要.验证者比较解密得到的消息摘要和自己的消息摘要,如果两者相同,则验证成功,可以确认消息的完整性及签名确实为签名者的;否则,验证失败.
三、实验环境
运行Windows操作系统的PC机,具有C#(Windows)或Java语言编译环境。
四、实验内容和步骤
a)理解RSA、SHA–512加密算法的原理,RSA算法的实现分为:生成密钥,
加密,解密.
b)编程实现RSA算法,在此基础上对各项功能按步骤进行综合,实现RSA
数字签名功能。
五、实验报告要求
1.给出RSA、SHA–512算法过程。
2.对一个消息首先生成摘要,提交程序流程图和执行结果。
3. 生成RSA的公钥和私钥,给出所生成的公钥和私钥及有关数据的值和计算方法。
六、时间安排
估计四个学时。其中检查时间为一个学时。