ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:1.48MB ,
资源ID:670506      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/670506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(整理密码学课设报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

整理密码学课设报告.docx

1、整理密码学课设报告一 实验目的通过课程设计,使学生进一步熟悉密码算法以及算法安全性的基本概念和原理;培养学生将密码理论和技术应用于实际的能力,使学生具备实施数据加/脱密和基本的密码分析的能力。二 实验内容及基本要求2.1、分组密码SPN的编程实现加密:输入初始加密密钥和一串有意义的字符串,显示相应的加密结果;线性分析:通过对明密文对的线性分析,破解出初始加密密钥;差分分析:通过对明密文对的差分分析,破解出初始加密密钥;设计用户界面,界面要有加密选择,线性与差分分析选择,输入密钥与明文栏以及密文显示栏;2.2、RSA的加/解密及快速加/解密 编制或网上下载大素数生成算法,产生二个大素数p和q;

2、编写RSA的加/解密过程和快速加/解密过程; 通过调用时钟对二种加/解密方法的时间开销进行测试; 设计用户界面,界面要有加/解密方式选择,快速方式与一般方式的选择及时间开销显示。2.3、随机性检测密文的随机性反映了密码的强度,通过设计随机性测试算法或运用工具对SPN生成的密文进行随机性检测,来测试SPN的密码强度。三 实验原理3.1、分组密码SPN (1)迭代密码迭代密码的核心是一个密钥编排方案和一个轮函数密钥编排方案对密钥k进行变换,生成Nr个子密钥(也叫轮密钥),记为k1,k2,.,kNr轮函数g是一个状态加密函数,以ki为密钥对当前状态wr-1进行变换,输出新的状态值wr,即g(wr-1

3、,ki)=wr;轮函数是单射函数,存在一个逆变换g-1,有g-1(wr,ki)=wr-1迭代密码的加密为将密钥k编排成Nr个轮密钥k1,k2,.,kNr,将明文x定义为初始状态w0,经过Nr轮变换得到wNr为密文y,即w0=x, w1=g(w0,k1), w2=g(w1,k2), .wNr-1=g(wNr-2,kNr-1), wNr=g(wNr-1,kNr)y=wNr迭代密码的解密为将密文y定义为初始状态wNr,经过Nr轮逆变换得到w0为明文x,即y=wNr, wNr-1=g-1(wNr,kNr),wNr-2=g-1(wNr-1,kNr-1).w1=g-1(w2,k2), w0=g-1(w1,

4、k1),x=w0(2)代替-置换网络(Substitution-Permutation Network)代替-置换网络(Substitution-Permutation Network)是一种简单的迭代密码。处理的明文单元和状态值长度为lm,轮函数g包括两个核心变换代替和置换,分别记为s和p,有s : 0,1l 0,1lp : 1,2,.,lm 1,2,.,lm 在进行轮函数变换前,先用轮密钥和状态值进行异或(称为白化)(3)SPN密码体制设计设l,m,Nr是正整数,P=C=0,1lmK(0,1lm)Nr+1是由初始密钥k用密钥编排算法生成的所有可能的密钥编排方案集合,一个密钥编排方案记为(k

5、1,k2,.,kNr+1)状态值w长度为lm,记为w1,w2,.,wlm;w可以看成m个长度为l的子串连接而成,记为w=w,w,.,w,其中w=w(i-1)l+1,w(i-1)l+2,.,w(i-1)l+l加密过程使用如下算法描述:w0=xfor r=1 to Nr-1 ur=wr-1kr / 白化 for i=1 to m vr=s(ur) / 代替 wr=(vrp(1),vrp(2),.,vrp(lm) / 置换uNr=wNr-1kNrfor i=1 to m vNr=s(uNr) / 代替y=vNrkNr+1 / 白化return y具体加密过程如图3.1所示: 图3.1 SPN加密过程

6、示例(4)线性密码分析线性密码分析,是通过分析S盒的线性特性,从而发现明文比特、密文比特和密钥比特之间可能存在的线性关系,如果S盒设计不当,这种线性关系会以较大的概率存在,称为概率线性关系。线性密码分析一种已知明文攻击方法,已知x和y,确定k或k的部分比特。其中,S盒的选择对SPN的安全性影响巨大,假设一个S盒按如下规则设计,见图3.2图3.2 S盒示例可以发现其实是将输入进行了循环左移,如图3.3图3.3 输入输出线性关系示例这种输入输出关系是一种”线性关系”。采用已知明文攻击方法,如果掌握了足够多的明-密文对,即可求出轮密钥ki,进而根据轮密钥编排方案反向推导出加密密钥k。线性密码分析思路

7、为找到足够多的明文-密文对,对可能的密钥进行穷举,计算相关随机变量的偏差,正确的密钥作用下,偏差的绝对值最大不需要对全部密钥空间进行穷举,只需要对随机变量有影响的密钥比特进行穷举,这些密钥比特称为候选子密钥具体算法如下:线性攻击(T, T, s-1)for (L1,L2)=(0,0) to (F,F) / L1,L2表示候选子密钥k5和k5 CountL1,L2=0 / 每个候选子密钥分配一个计数器并初始化为0for each (x,y) T for (L1,L2)=(0,0) to (F,F) v4 = L1y v4 = L2y u4 = s-1(v4) u4 = s-1(v4) z = x

8、5x7x8u46u48u414u416 / 计算随机变量值 if z=0 CountL1,L2 +; max = -1for (L1,L2)=(0,0) to (F,F) CountL1,L2 = | CountL1,L2 - T/2 |if CountL1,L2 max max = CountL1,L2 maxkey = (L1,L2)/ maxkey即为所求子密钥(4)差分密码分析通过分析明文对的差值对密文对差值的影响来恢复某些密钥比特的分析方法,分析两个输入的异或和两个输出的异或之间的线性关系。构造若干个明文串对,每对明文的异或结果相同,观察相应的密文异或结果。差分分析是一种选择明文攻击

9、方法,比线性分析更早提出,分析效果略差于线性分析。仍以“循环左移”S盒为例假设两个输入分别是x=1010和x*=1101则相应的输出是y=0101和y*=1011输入的异或为x=xx*=0111输出的异或为y=yy*=1110可以发现不论x和x*如何变化,只要它们的异或是0111,相应输出的异或都是1110,(x,y)被称为一个差分如果S盒是线性的,整个SPN也会是线性的,明文和密文的差分也会是线性的差分分析的优势在于,分析过程基本可以忽略密钥的干扰作用。差分密码分析思路找到足够多的四元组(x,x*,y,y*),其中x=xx*固定不变。对可能的密钥进行穷举,计算相关差分的扩散率,正确的密钥作用

10、下,扩散率应最大和线性分析一样,不需要对全部密钥空间进行穷举,只需要对候选子密钥进行穷举即可。具体算法如下:差分攻击(T, T, s-1)for (L1,L2)=(0,0) to (F,F) / L1,L2表示候选子密钥k5和k5 CountL1,L2=0 / 每个候选子密钥分配一个计数器并初始化为0for each (x,x*,y,y*) T if (y=y* and y=y*) / 只考虑y和y=0 for (L1,L2)=(0,0) to (F,F) v4 = L1y v4 = L2y u4 = s-1(v4) u4 = s-1(v4) (v4)*= L1(y)* (v4)* = L2(

11、y)* (u4)* = s-1(v4) *) (u4)* = s-1(v4)*)(u4)=u4(u4)* (u4)=u4(u4)* if (u4)=0110 and (u4) = 0110 CountL1,L2 +; max = -1for (L1,L2)=(0,0) to (F,F) if CountL1,L2 max max = CountL1,L2 maxkey = (L1,L2) / maxkey即为所求子密钥3.2、RSA的加/解密及快速加/解密非对称密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在非对称密码算法的两个密钥中,一个是用于加密的

12、密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证手段,是现代密码学最重要的发明。RSA密码体制是目前为止最成功的非对称密码算法,它是在1977年由Rivest、Shamir和Adleman提出的第一个比较完善的非对称密码算法。它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。虽然它的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。RSA算法描述如下:(1

13、)公钥选择两个互异的大素数p和q,n是二者的乘积,即n=pq,使(n)=(p-1)(q-1)为欧拉函数。随机选取正整数e,使其满足gcd(e, (n) =1,即e和(n) 互质,则将(n,e)作为公钥。(2)私钥求出正数d,使其满足ed=1(mod(n),则将(n,d)作为私钥。(3)加密算法对于明文M,由C=Me(mod n),得到密文C。(4)解密算法对于密文C,由M=Cd(mod n),得到明文M。如果窃密者获得了n、e和密文C,为了破解密文必须计算出私钥d,为此需要先分解n。为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024位,更重要的场合不小于2048位。3.

14、3、随机性检测随机性测试方法对于一个用DES加密产生的密文序列,分别以下面三种情况设计测试随机性工具(1)0和1在密文中所占比例(2) 00、01、10、11在密文中所占比例(3) 000、001、010、011、100、101、110、111在密文中所占比例四 实验过程5.1、分组密码SPN 5.1.1 SPN加密(一)数据结构选用该部分首先确定选用数据结构,我选用C#中的List类型来存储切分后的明文单元与加密后的密文单元以及用于显示的string单元,因为List这种数据结构在添加元素的时候类似于C语言中的链表,动态存储,这样就适应了明文大小不确定的特点,避免了申请固定存储空间大小带来的麻烦。对于S盒与P盒,我采用一维数组的数据结构来存储相关信息。具体声明如下:st

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1