《2015密码学课设报告》由会员分享,可在线阅读,更多相关《2015密码学课设报告(36页珍藏版)》请在金锄头文库上搜索。
1、课 程 设 计 报 告题目 SPN和RSA密码算法的快速实现与安全性分析 课程名称: 密码学基础 专业班级: 信息安全1302班 学 号: 姓 名: 指导教师: 报告日期: 2015年9月4日 计算机科学与技术学院任务书课程设计内容包括以下七个方面:1. 实现密码学基础上的示例SPN,包括加密和解密。2. 对以上SPN分别进行线性和差分分析,猜测出全部32位初始密钥。3. 加强以上SPN的安全性,自己设计一个新的SPN。4. 选择一个10M的没有任何随机性的文件(如全部为0),选择一种对称加密算法的工作模式进行加密,将密文用于随机性测试,将简单SPN和加强SPN的测试结果进行对比。5. 实现R
2、SA参数的生成(素性检测)。6. 实现模重复平方算法,蒙哥马利算法以及运用中国剩余定理,分别在不同的条件下完成加密和解密,比较效率的异同。7. 用改进的SPN和RSA设计出一个文件加密方案并实现。课程设计编程语言:C+;课程设计开发环境:VS2013。目录1 课题背景12 系统设计22.1 简单SPN的设计(课本实例)22.2 简单SPN的线性、差分分析32.3 安全性更好的SPN52.4 随机性检测62.5 RSA参数的生成72.6 实现RSA算法并比较效率102.7 文件加密133 系统实现与总结分析153.1 简单SPN153.2 简单SPN的线性差分分析163.3 安全性更好的SPN1
3、83.4 随机性检测203.5 RSA参数的生成223.6 实现RSA算法并比较效率233.7 文件加密284 实验感想315 参考文献326 附录3311 课题背景随着信息化世界的发展,网络已深深地介入每一个人的生活,在数据量如此庞大的情况下,数据的安全性,完整性,可靠性等问题就被提上议程。密码学的历史源远流长,而今天我们所研究的正是基于计算机技术的密码技术,密码技术是信息安全技术的核心,它主要由密码编码技术和密码分析技术两个分支组 成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进 行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取机
4、密 信息或进行诈骗破坏活动。目前人们将密码理论与技术分成两大类,一类是基于数学的密码理论与技术,包括公钥密码、分组密码、序列密码、认证码、数字签名、Hash 函数、身份 识别、密钥管理、PKI 技术、VPN 技术等;另一类是非数学的密码理论与技术,包括信息隐 藏、量子密码、基于生物特征的识别理论与技术等。本文主要对前者进行了实践研究。分组密码:美国早在 1977 年就制定了自己的数据加密标准DES。随着 DES 的出现,人们对分 组 密 码 展开了深入的研究和讨论。现已有大量的分组密码,如 DES 的各种变形、IDEA 算法、 SAFER 系列算法、RC 系列算法、Skipjack 算法、Ri
5、jndael 算法、FEAL 系列算法、REDOC 系列算法、LOKI 系列算法,CAST 系列算法、Khufu、Khafre、MMB、3-WAY、TEA、MacGuffin、 SHARK、BEAR、LION、CA.1.1、CRAB、Blowfish、GOST、SQUARE、MISTY,等等。公钥密码:自从 1976 年公钥密码的思想提出以来,国际上已经提出了许多种公钥密码体制,如基 于大整数因子分解问题的 RSA 体制和 Rabin 体制、基于有限域上的离散对数问题的 Diffie-Hellman 公钥体制和 ElGamal 体制、基于椭圆曲线上的离散对数问题的 Diffie-Hellman
6、 公钥体制和 ElGamal 体制、基于背包问题的 Merkle-Hellman 体制和 Chor-Rivest 体制、基于 代数编码理论的 MeEliece 体制、基于有限自动机理论的公钥体制等等。分组密码分析:分组密码分析技术伴随着分组密码的发展也得到了空前的发展。已有很多分 20 通 信 学 报 2002 年 组密码分析技术,如强力攻击(包括穷尽密钥搜索攻击、字典攻击、查表攻击、时间-存储权 衡攻击)、差分密码分析、差分密码分析的推广(包括截段差分密码分析、高阶差分密码分析、 不可能差分密码分析)、线性密码分析、线性密码分析的推广(包括多重线性密码分析、非线 性密码分析、划分密码分析)、
7、差分-线性密码分析、插值攻击、密钥相关攻击、能量分析、 错误攻击、定时攻击等等。2 系统设计2.1 简单SPN的设计(课本实例)2.1.1 设计思想SPN的是一种将明文划分为固定长度的分组再分别进行加密的算法,对每一组明文的加密过程中,要经过多轮密码变换的处理,由一个初始密钥通过某种密钥编排方案产生用于每一轮的轮密钥,每一轮密码变换都是经过了相同的处理,如与轮密钥异或,S盒代换,P盒置换等,而解密则是加密的逆过程,对于S盒和P盒都要作相应的逆处理,因此实现算法的核心就在于实现S盒和P盒。加解密对象采用整型,以整数的每一个二进制位上的0或1表示分组中的01串。代替-置换网络是一种简单的迭代密码,
8、处理的明文单元和状态值长度为 lm 。轮函数g包括两个核心变换代替和置换,分别记为 s和p,有 s : (0,1)l (0,1)l , p : 1,2,.,lm 1,2,.,lm.在进行轮函数变换前,先用轮 密钥和状态值进行异或。 SPN密码体制定义如下: 设 l,m,Nr 是正整数,P=C=0,1lm。 K(0,1lm)Nr+1 是由初始密钥 k 用密钥 编排算法生成的所有可能的密钥编排方案集合,一个密钥编排方案记为 (k1,k2,.,kNr+1) .状态值w长度为lm,记为 w1,w2,.,wlm ; w可以看成m个长度为l的子串连接而成,记为 w=w1,w2,.,wm. 其中 wi =
9、w(i1)l+1,w(i1)l+2,.,w(i1)l+l . 其中最后一轮不进行置换,加密的开始和结尾均是异或运算。 2.1.2 设计结构S盒:const int sub16 = 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 ;由于S盒是4位一组进行代换,因此在S盒变换前应对数据进行再分组,每一组为4位。所有组分别进行了代换以后再组合到一起作为输出。如下:for (int i = 0; i NUM_TEAM; i+)tempi = subtempi;tempi = tempi (NUM_TEAM-i-1) input output)f
10、or (i = 0; i input1output1input2output2)for (i = 0; i 256; i+)if (d_substitution(output1 tempi) d_substitution(output2 tempi)&0x0f0f) = 0x0606)+counti;其中input1,input2为明文,output1,output2为密文,两个明文之间有着固定的差分关系,if语句内的内容表示将两个密文通过候选密钥进行解密得到最后一轮代换的输入以后,若存在固定的差分关系(相对于明文的差分关系最可能的)则候选密钥频数加一。穷举密钥求解出余下的密钥:上述线性分析和差分分析方法在明密文对足量的情况下可以求出一定比特的密钥子集,而对于求解所有32位初始密钥的余下子密钥,则采用暴力求解的方法,取出明密文对中的一到两对,用余下密钥的候选密钥结合已经猜测出的密钥分别对明文进行加密,若能得到相应的密文,则可以判断出正确密钥的所在。线性分析暴力求解:for (i = 0; i 65536; i+)generate_key(temp_key, (i 16) | analyze_key);if (SPN(input, temp_key) = output)break;其中