《2022年RSA数字签名算法密码 .pdf》由会员分享,可在线阅读,更多相关《2022年RSA数字签名算法密码 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验 2 基于 RSA 的数字签名实现一、实验目的掌握 RSA算法的基本原理,通过用 RSA算法对实际数据进行加密和解密来深刻了解 RSA的运行原理。对数字签名有所了解,理解和掌握 MD5算法,以及如何利用 RSA和 MD5算法来实现数字签名。二、实验原理公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中出现的问题.另外,随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗也成为非常重要的问题.数字签名可以起到身份认证,核准数据完整性的作用.目前关于数字签名的研究主要集中基于公钥密码体制的
2、数字签名.公钥密码体制的特点是:为每个用户产生一对密钥(PK 和 SK);PK 公开,SK 保密;从 PK 推出 SK 是很困难的;A,B 双方通信时,A 通过任何途径取得B 的公钥,用 B的公钥加密信息.加密后的信息可通过任何不安全信道发送.B 收到密文信息后,用自己私钥解密恢复出明文.RSA 公钥密码体制到目前为止还是一种认可为安全的体制.RSA 算法和用 RSA算法实现数字签名的理论,以及它们在实际应用中的实现.1、RSA 算法RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA 的算法涉及三个参数,n、e1、e2。其中,
3、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=Be1 mod n;B=Ae2 mod n;e1 和 e2 可以互换使用,即:A=Be2 mod n;B=Ae1 mod n;2、RSA 数字签名算法的理论描述RSA 数字签名算法的过程为:A 对明文 m 用解密变换作:s Dk(m)=md mod
4、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 数字签名算法存在着因计算方法本身同构造成签名易被伪造和计算
5、时间长的弱点,因此实际对文件签名前,需要对消息做 MD5 变换.MD5 函数是名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 3 页 -一种单向散列函数,它将任意长度的消息压缩成128 位的消息摘要.应用 MD5 的单向性(即给定散列值,计算消息很难)和抗碰撞性(即给定消息 M,要找到另一消息M 并满足两者的散列值很难),可以实现信息的完整性检验.另外该函数的设计不基于任何假设和密码体制而直接构造,执行的速度快,是一种被广泛认可的单向散列算法.3、MD5 算法的实现算法描述:对 MD5 算法简要的叙述可以为:MD5 以 512 位分组来处理输入的信息,且每一分组又被划分为16 个
6、 32 位子分组,经过了一系列的处理后,算法的输出由四个32 位分组组成,将这四个32 位分组级联后将生成一个128 位散列值。在 MD5 算法中,首先需要对信息进行填充,使其字节长度对512 求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即 N*64+56个字节(Bytes),N 为一个正整数。填充的方法如下,在信息的后面填充一个1 和无数个0,直到满足上面的条件时才停止用 0 对信息的填充。然后,在在这个结果后面附加一个以64 位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512
7、,即长度恰好是512 的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。MD5 中有四个32 位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0 x01234567,B=0 x89abcdef,C=0 xfedcba98,D=0 x76543210。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512 位信息分组的数目。将上面四个链接变量复制到另外四个变量中:A 到 a,B 到 b,C 到 c,D 到 d。主循环有四轮(MD4 只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c 和 d 中的其中三个作一
8、次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c 或 d 中之一。最后用该结果取代a、b、c 或 d 中之一。MD5 的安全性MD5 相对 MD4 所作的改进:1.增加了第四轮;2.每一步均有唯一的加法常数;3.为减弱第二轮中函数G 的对称性从(X&Y)|(X&Z)|(Y&Z)变为(X&Z)|(Y&(Z);4.第一步加上了上一步的结果,这将引起更快的雪崩效应;5.改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似;6.近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应。各轮的位移量互不相同。RSA数字签名算
9、法的实现RSA 数字签名算法,包括签名算法和验证签名算法.首先用 MD5 算法对信息作散列名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 3 页 -计算.签名的过程需用户的私钥,验证过程需用户的公钥.A 用签名算法将字符串形式的消息处理成签名;B 用验证签名算法验证签名是否是A对消息的签名,确认是 A发送的消息;消息没有被攥改过;A 一定发送过消息.1 签名算法签名算法包括三步:消息摘要计算,RSA加密.消息摘要计算.消息在签名前首先通过MD5 计算,生成 128 位的消息摘要digest.对摘要作 RSA计算.用加密算法,采用签名者的私钥加密消息摘要,得到加密后的字符串.加密算
10、法中使用的加密块为01 类型.2 验证签名算法验证签名算法包括两步:RSA解密得签名者的消息摘要,验证者对原消息计算摘要,比较两个消息摘要.验证签名的过程输入为消息,签名者的公钥,签名;输出为验证的结果,即是否是正确的签名.RSA 解密.签名实际是加密的字符串.用 3.5 所述的解密算法,采用签名者的公钥对这个加密的字符串解密.解密的结果应为 128 位的消息摘要.在解密过程中,若出现得到的加密块的类型不是01,则解密失败.签名不正确.消息摘要计算和比较.验证者对消息用 MD5 算法重新计算,得到验证者自己的消息摘要.验证者比较解密得到的消息摘要和自己的消息摘要,如果两者相同,则验证成功,可以
11、确认消息的完整性及签名确实为签名者的;否则,验证失败.三、实验环境运行 Windows 操作系统的 PC 机,具有 C#(Windows)或 Java 语言编译环境。四、实验内容和步骤a)理解 RSA、MD5 加密算法的原理,RSA 算法的实现分为:生成密钥,加密,解密.b)编程实现 MD5 算法,实现 RSA 算法,在此基础上对各项功能按步骤进行综合,实现 RSA 数字签名功能。五、实验报告要求。1.给出 RSA、MD5 算法过程。2.对一个消息首先生成摘要,提交程序流程图和执行结果。3.生成 RSA 的公钥和私钥,写出所生成的公钥和私钥及有关数据的值和计算方法。六、估计四个学时。其中检查时间为一个学时。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 3 页 -