密码学课程设计报告(5篇)

时间:2019-05-12 15:58:08下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《密码学课程设计报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《密码学课程设计报告》。

第一篇:密码学课程设计报告

密码学课程设计报告

密码学 课程设计报告

信息安全07-3班

2010年6月25日

密码学课程设计报告

目录

目录................................................................................................................2 第1章 分组密码算法DES..........................................................................3

1.1实验内容.........................................................................................3 1.2分组密码DES的基本原理.............................................................3 1.3关键算法解析.................................................................................5 1.4实验结果及分析.............................................................................5 1.5实验小结.........................................................................................6 第2章 消息摘要算法MD5.........................................................................7

2.1实验内容.........................................................................................7 2.2 MD5算法的基本原理.....................................................................7 2.3关键算法解析.................................................................................8 2.4实验结果及分析.............................................................................9 2.5实验小结.......................................................................................10 第3章 公钥密码算法RSA........................................................................10

3.1实验内容.......................................................................................10 3.2算法的基本原理...........................................................................10 3.3关键算法解析...............................................................................11 3.4实验结果及分析...........................................................................12 3.5实验小结.......................................................................................13 第4章 椭圆曲线密码算法.......................................................................14

4.1实验内容.......................................................................................14 4.2椭圆曲线密码体制概述...............................................................14 4.3椭圆曲线上运算的实现...............................................................15 4.4ECC加解密算法.............................................................................17 4.5ECC加解密算法的实现.................................................................18 4.6实验小结.......................................................................................19 第5章 结束语...........................................................................................19

附件一:DES源代码 附件二:MD5源代码 附件三:RSA源代码 附件四:ECC源代码

密码学课程设计报告

第1章 分组密码算法DES 1.1实验内容

通过实现DES算法,加深对DES算法的理解,同时学习组合密码常用的代换、移位等运算的实现。

1.2分组密码DES的基本原理

1.2.1对称加密算法

对称加密算法有时又叫做传统密码算法,加密密钥可以从解密密钥中推导出来,解密密钥也可以从加密密钥中推导出来。在大多数的对称算法中,加密密钥和解密密钥是相同的,因此也成为秘密密钥算法或者单密钥算法。它要求发送发和接收方在安全通信之前先商定一个密钥。对称算法的安全性依赖于密钥,所以密钥的保密性对通信至关重要。对称加密算法主要有分组加密和流加密两类。分组加密是指将明文分成固定商都的组,用同一密钥分别对每一组加密,输出固定长度的密文,典型代表:DES、3DES、IDEA。

1.2.2DES的加密流程

DES加密算法是分组加密算法,明文以64位为单位分成块。64位数据在64位密钥的控制下,经过初始变换后,进行16轮加密迭代:64位数据被分成左右两半部分,每部分32位,密钥与右半部分相结合,然后再与左半部分相结合,结果作为新的右半部分;结合前的右半部分作为新的左半部分。这一系列步骤组成一轮。这种轮换要重复16次。最后一轮之后,再进行初始置换的逆置换,就得到了64位的密文。

64位明文

初始置换IP16轮迭代运算逆初始置换64位密文密码学课程设计报告

DES的加密过程可分为加密处理,加密变换和子密钥生成几个部分组成。

1.加密处理过程

(1)初始变换。加密处理首先要对64位的明文按表1所示的初始换位表IP进行变换。表中的数值表示输入位被置换后的新位置。例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。

(2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为L0和R0,从L0、R0到L16、R16,共进行16轮加密变换。其中,经过n轮处理后的点左右32位分别为Ln和Rn,则可做如下定义:

Ln=Rn-1 Rn=Ln-1

其中,kn是向第n轮输入的48位的子密钥,Ln-1和Rn-1分别是第n-1轮的输出,f是Mangler函数。

(3)最后换位。进行16轮的加密变换之后,将L16和R16合成64位的数据,再按照表2所示的最后换位表进行IP-1的换位,得到64位的密文,这就是DES算法加密的结果。

2.加密变换过程

通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右半部分通过异或操作和48位的密钥结合,并分成6位的8个分组,通过8个S-盒将这48位替代成新的32位数据,再将其置换一次。这些S-盒输入6位,输出4位。

3.子密钥生成过程

密码学课程设计报告

钥通常表示为64位的自然数,首先通过压缩换位PC-1去掉每个字节的第8位,用作奇偶校验,因此,密钥去掉第8、16、24„„64位减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。

4.解密处理过程

从密文到明文的解密过程可采用与加密完全相同的算法。不过解密要用加密的逆变换,就是把上面的最后换位表和初始换位表完全倒过来变换。这里不再赘述。

1.3关键算法解析

算法实现过程中主要用到了一下几个函数:

 int CharToNum(char c)//将字符转化成数字。

 char* encrypt(char pw[],char key[],bool jiami);//加密函数

//参数:char pw[]明文,char key[]密钥,bool jiami标志为(1表示加密,0表示解密)

 char* HexToStr(char ch[])//16进制转化成字符串

 bool IsNum(char c)//判断一个字符是否是数字的形式  void LS(int n)

//密钥左移函数,参数n是左移多少位  char NumToHex(int x)

//转化成16进制

 char *StrToHex(char *ch)//字符串转化为16进制

1.4实验结果及分析

输入任意长度的字符串,计算出加密结果;对密文进行解密,得到还原出的明文和输入相同,验证了程序的正确性。

首先实现了DES的加解密功能,命令行形式运行结果如图所示:

密码学课程设计报告

然后,我把它改成了图形界面的形式,加入了程序的使用说明。改进之后的效果如图所示:

1.5实验小结

通过实现DES算法,加深了对分组密码算法的理解,对DES的加解密流程也有了更加清晰的认识。

DES算法是通过不断的混乱和扩散来实现其安全性的,所以加密算法比较复杂。在编程中,首先弄清楚加密的流程,然后知道每个函数的功能,就能够实现了。可见坚固的理论基础是实践的前提。

这次实验中,我首先用VC++ console程序实现了加解密的功能。为了美化界面,又使用MFC将程序改成了图形界面的形式。动手实践的过程也是一个不断积累经验的过程,希望能在以后的实验中不断的增强自己包括算法、应用等各方面的编程能力。

密码学课程设计报告

第2章 消息摘要算法MD5 2.1实验内容

掌握消息摘要算法的基本原理,实现用MD5对任意消息长度和文件进行计算消息摘要。

2.2 MD5算法的基本原理

2.2.1MD5算法概述

MD5是由Ron Rivest 设计的单向散列函数。MD表示消息摘要(message digest),对于输入的任意长度消息,算法产生128位的散列值(或消息摘要)。由于MD5算法的散列值计算的快速性和很高的安全强度,使它成为目前比较流行的散列算法。

2.2.2MD5算法流程

MD5算法以任意长度的信息作为输入,其处理操作包括以下几个步骤: 1)消息填充:对输入信息进行填充使信息的长度(比特数)448模512同余(长度=448mod512),填充的最高位为1,其余位为0。

2)添加消息长度:将用64位表示的初始信息(填充前)的位长度附加在步骤I的结果后(低位字节优先)。如果初始长度大于64,仅使用该长度的低64位。这样,该域所包含的长度值为初始信息长度模64的值。前两步的结果将产生一个长度为512整数倍比特的信息。经扩展的信息表示成512bit的分组序列Y0,Y1,,YL1,扩展信息的长度等于512L。

3)初始化MD5的缓存:使用一个128bit的缓存来存放该散列算法的中间及最终结果。该缓存表示为4个32bit的寄存器(A,B,C,D),这些寄存器被初始化为如下32bit长的整数:A=67452301;B=EFCDAB84; C=48BADCFE;D=10325476。这些值以小数在前的格式存储,即字的低位字节放在低地址字节上。

4)以分组为单位进行消息处理:算法的核心是包含4个“循环”的压缩函数。4个循环有相似的结构,但每次循环使用不同的原始逻辑函数,在说明中分别表示为F、G、H和I。每一循环都以当前的I在处理的512bit分组(q)和128bit的缓存值ABCD为输入,然后更新缓存的内容。每个循环还使用一个64元素表T064的四分之一,该表通过正弦函数构建。T的第i个元素(表示为Ti)的值等于232abssini的整数部分值,其中i的单位是弧度。因为abssini是0到1之间的数,因此每个T的元素值均能用32bit表示。这个表提供了一个“随机化”的32bit模式集,它将消除输入数据的任何规律性。第四次循环的输出加到第一次循环的输入(CVq)上产生CVq1。

Y密码学课程设计报告

5)输出:所有L个512bit的分组处理完成后,最后一个输出即为产生的消息摘要。

2.3关键算法解析

关键步骤:对二进制文件计算消息摘要  读取第一行,计算消息摘要;

 每次读取后将该行加到已经计算的消息摘要之后,对这个整体再计算消息摘要;

 重复该过程,直至将整个文件的内容全部读取完;  最后得到的消息摘要就是整个文件的消息摘要。

 文件的操作:

 打开文件:在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是: void open(const char* filename,int mode,int access);参数: filename:要打开的文件名,mode:要打开文件的方式,access:打开文件的属性。

 关闭文件:打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,如:file1.close();就把file1相连的文件关闭。

 清除文件标志:重复使用ifstream文件指针时,应该在文件关闭后,使

密码学课程设计报告

用ifstream.clear(),否则可能会引起文件打开失败的错误。此外,读到文件最后一行时,如果想继续读取文件前面的数也应该,采用clear()函数清除文件末尾标志。 getline函数

getline是string类对象的成员函数,属于string IO 操作,用于读取整行文本。函数原型:getline(cin,str);参数:cin:输入流,str:string对象

getline函数从输入流的下一行读取,并保存读取的内容到str中,但不包括换行符。和输入操作符cin不同的是,getline要在输入第二个字符串后用cout输出str字符串显示的是第一个字符串,之后继续对getline操作,cout才显示第二个字符串。

2.4实验结果及分析

主要功能:

1、对任意长度的字符串计算消息摘要;

2、对任意格式的文件计算消息摘要。

对任意长度的字符串计算消息摘要

对任意格式的文件计算消息摘要

密码学课程设计报告

2.5实验小结

在此次实验中,掌握了消息摘要算法的基本原理,实现了用MD5对任意消息长度和文件进行计算消息摘要。

这次实验最大的收获是学会了getline函数以及对二进制文件的一些操作,总结了ofstream和ifstream的一些详细用法,希望在以后需要用到文件I/O操作的时候可以熟练运用。

第3章 公钥密码算法RSA 3.1实验内容

编程实现RSA算法,加深对RSA算法以及公钥密码体制的理解。

3.2算法的基本原理

3.2.1RSA算法描述

RSA密码是一种应用广泛的公钥密码,它的安全性基于大整数分解的困难性,RSA密码既可用于加密,又可用于数字签名。对RSA的加解密算法描述如下:

(1)密钥的产生

 独立地选取两大素数p和q(各100~200位十进制数字);  计算 n=p×q,其欧拉函数值(n)=(p-1)(q-1);  随机选一整数e,1e<(n),gcd((n), e)=1;  在模(n)下,计算e的有逆元d=e-1 mod (n);

 以n,e为公钥。私钥为d。(p, q)不再需要,可以销毁。

(2)加密

将明文分组,各组对应的十进制数小于n,对每个明文分组m,做加密运算:c=me

mod n。

(3)解密

对密文分组的解密运算: m=cd mod n 3.2.2安全性分析

 RSA的安全性是基于分解大整数的困难性假定(尚未证明分解大整数是NP问题);

 如果分解n=p×q,则立即获得(n)=(p-1)(q-1),从而能够确定e的模(n)乘法逆d;

 由n直接求(n)等价于分解n。

密码学课程设计报告

3.2.3RSA的实现

1)大素数的产生  试除法  费马法

 Rabin-Miller算法

(未通过检测的整数一定是合数,但并非所有通过检测的整数都是素数,实用最广泛,是一种概率算法)2)求乘法逆元:扩展的欧几里得算法

3)快速指数计算:(利用反复平方乘算法,每次乘法运算后就取模)3.3关键算法解析

3.3.1主要函数说明

本算法的实现过程中主要用到以下函数,在此进行说明。1)素性测试:bool IsPrime(long e)函数

用户输入大素数p和q,采用试除法进行测试输入的是否是素数,如果测试不通过则重新输入。

2)欧几里得算法:int Euclid(int a,int n)该函数用来求两数的最大公约数。用户根据提示选择公钥e输入,调用函数int Euclid(int a,int n)求e和f(n)的最大公约数,如果最大公约数是1,则e和f(n)互素,e可以作为公钥,否则给出提示重新输入。

3)扩展的欧几里得算法:double extenEuclid(double a,double n)该函数用来求e的模j(n)乘法逆d,d是私钥。

4)快速指数计算:double quickindex1(double a,double m,double n)利用反复平方乘算法,每次乘法运算后就取模。用于加解密运算:c=me mod n,m=cd mod n。

3.3.2关键代码分析

篇幅所限,仅在此叙述计算a^b mod n的算法和快速取模指数算法。该算法的基本原理和过程如下:

密码学课程设计报告

该算法的具体代码及分析如下:

3.4实验结果及分析

运行程序,根据提示输入明文字符串,程序先将明文转换成ASCII码形式。密钥生成:根据提示输入两个素数p和q,程序进行素性测试,如果p和q不是素数,提示重新输入。根据提示输入公钥e。这样就产生出一对密钥:公钥(e,n)和私钥(d,n),其中n=p*q。

加密部分:用公钥将ASCII码加密成密文并输出到屏幕上。

解密部分:用私钥将密文进行解密计算,输出解密后的ASCII码形式的一串数字。最后将ASCII码转换成字符串。

程序运行结果显示,解密后得到的结果与输入的明文相同,验证了程序的正确性。

密码学课程设计报告

3.5实验小结

(1)这次实验中,用VC编码成功的实现了RSA算法。本程序中使用到了一些算法,在实现过程中需要将多门课程的知识综合运用。

(2)通过动手编码,我对RSA的算法流程有了更深刻了理解。RSA算法比较简单,容易理解和实现,所以RSA作为公钥密码应用非常广泛。但是由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

(3)程序实现过程中总结了很多技巧,比如使用了vector,体会到C++编程中适时的使用STL是很方便的;而且平方乘算法中将十进制转换为二进制的方法也很巧妙。

密码学课程设计报告

第4章 椭圆曲线密码算法

4.1实验内容

编程实现椭圆曲线上的基本运算,实现椭圆曲线上的加解密,加深对椭圆曲线算法以及公钥密码体制的理解。

4.2椭圆曲线密码体制概述

4.2.1椭圆曲线简介简介

同RSA)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。椭圆曲线公钥密码所依赖的数学难题是定义在有限域的椭圆曲线上的离散对数问题。它是利用有限域上的椭圆曲线有限群代替基于离散对数问题密码体制中的有限循环群所得到的一类密码体制。

4.2.2椭圆曲线上的运算规则

椭圆曲线命名的原因是因为它是由三次方程描述的(亏格为1的特殊超椭圆曲线),它的计算类似于计算一个椭圆周长的方程。椭圆曲线是指光滑的Weierstrass方程所确定的平面曲线。设方程为:

方程中的参数取自域F上。F可以使有理数域、实数域或有限域。如果,则称椭圆曲线E定义在F上。在这个点集上按如下规则定义一个代数运算,称为加法,记为“+”(注:这里的“+”代表了很多种运算,不只是普通代数意义上的+,它的操作对象可能是字符串,乘法标量也可能是整数,分数,有理数)。设两点为椭圆曲线上任意两点,密码学课程设计报告

加法规则满足正常的加法性质,比如交换律和结合律。4.2.3椭圆曲线密码体制

椭圆曲线密码体制是建立在求椭圆曲线离散对数(ECDLP)是困难问题的基础上。椭圆曲线上P的阶是指一个最小的正整数n,满足。

椭圆曲线离散对数(ECDLP)是指:给定曲线E上阶为n的点P,若是E上的另一个点,找到一个整数m,使得

(如果m存在)。定义。在过去的10多年里,椭圆曲线离散对问题受到了众多数学家的极大关注,目前还没有发现它有哪些明显的缺点。

4.3椭圆曲线上运算的实现

4.3.1编码过程

本程序使用JAVA在JDK1.6+ECLIPSE下实现。

在Calculate.Java中建立以下2个类:

密码学课程设计报告

Point0类中定义了如下方法:

(1)方法jiafani(Point0)用于求解EC上一点P的加法逆(-P),返回该点。(2)方法jia(Point0,Point0)返回两个数的相加得到的点。

(3)方法reverse_of_e(long e,long n)是用扩展的欧几里得算法求模拟。4.3.2关键算法解析:加法规则(1)RPP:3x12a/2y1(2)RPQ:y2y1/x2x1(3)x32x1x2

y3x1x3y1 4.3.3实验结果及分析

密码学课程设计报告

4.4ECC加解密算法

密码学课程设计报告

4.5ECC加解密算法的实现

4.5.1编码过程

本程序使用JAVA在JDK1.6+ECLIPSE下实现。在ECC.java中建立以下2个类:

Point0类和Calculate中的一样,主要实现椭圆曲线上的点的基本运算。ECC的main函数中多了一些内容,实现了密钥产生、加密、解密的过程。

4.5.2实验结果及分析

按照提示输入,经过验证,Bob解密得到的明文和Alice加密前的一样,验证了程序的正确性。

密码学课程设计报告

4.6实验小结

通过编程实现椭圆曲线上的基本运算,实现了椭圆曲线上的加解密,加深了对椭圆曲线算法以及公钥密码体制的理解。

和RSA相比较,椭圆曲线密码体制可用短的多的密钥获得更高的安全性。它的密钥短、签名短,软件实现规模小,具有广泛的应用前景。

以前的几次实验都是使用VC完成的,而本次实验使用Java语言完成,感觉相比较来说Java语言更加简洁,方便使用,体会到了两种语言的不同。动手实践的能力得到提高,感觉自己收获很多。

第5章 结束语

密码学课程设计给我留下了太多记忆深刻的东西,学到了很多课本上学不到的知识。感谢给予我帮助的老师和同学们,你们是我不断进步的最坚定的支持。

首先,我能够运用密码学、信息安全数学基础、数据结构等学科所学的知识,并结合网络、图书馆搜集的各种各样的材料,进行分析取舍、综合运用。通过亲自编码实践,对各种密码算法的具体实现流程,以及它们的优缺点有了更深刻的认识。编程能力也在积累中提高。

其次,这次课程设计使我有了一次通过理论联系实际,来解决实际问题的经历,它培养了自己分析问题,解决问题的能力,以及上网检索信息的能力。其实学到的知识其实是次要的,重要的是我们探索知识的过程,这个过程便是一个人自主学习能力的体现,它将影响着我今后的发展。

最后,这次课程设计激发了我对密码学的浓厚兴趣。我认识到一分耕耘、一分收获,学习是一个不断积累的过程,而人生也是如此。所以,心怀梦想,脚踏实地,每一步都要小心翼翼又无比坚定的走下去,就一定会有所收获。

第二篇:密码学课程设计报告

课 程 设 计 报 告

题目: 密码学课程设计

课程名称: 密码学课程设计

专业班级: 信安1904班

学 号: U201912177

姓 名: 段帅杰

指导教师: 路松峰老师

报告日期: 2021/10/12

教师评语:

分数:

网络空间安全学院

目录

一、设计过程 1

1.1 SPN实现 1

1.2线性分析 2

1.3差分分析 3

1.4 SPN增强 4

1.5 RSA参数计算 5

1.6模重复平方 6

1.7中国剩余定理 7

1.8 PKCS7 8

1.9彩虹表 9

二、实验心得 10

三、对课程设计内容和过程的建议 11

一、设计过程

1.1 SPN实现

(1)设计内容

按照课本给出的的S盒和P盒以及密钥编排方案来实现分组密码SPN加解密。有两个输入,分别是32比特的密钥和16比特的明文。要正确输出密文和对明文最后一比特取反解密得到的明文。加密过程主要包括三个部分:代换,置换和轮密钥异或。

(2)设计过程

算法所注意的问题:加密与解密主要在于密钥编排顺序不同,算法过程基本相同。最后一轮没有经过P盒。

解决这道题最直接的思路就是开数组及进行运算,但这样显然速度不够快。后来摒弃这种做法,采用位运算,速度快了不少而且这种做法方便快读快写的程序实现。但还是有几个数据点过不了oj,后面打了一个65536的表,将时间提高至1100ms左右。最后采用了快写才将时间稳定在700ms左右。

(3)小结

采用打表的方式程序速度确实有提高,但是程序很臃肿。程序中还有些算术运算并没有转换为位运算。

“"

图1-1 SPN实现oj结果图示

1.2线性分析

(1)设计内容

线性分析是一种已知明文的分析方法,基于S盒逼近,需要大量的明密文对。oj上给了8000对明密文对。并且只对最后一轮子密钥进行分析。在密钥生成算法固定的情况下,获得最后一轮子密钥可以为分析别的密钥提供可能。遍历可能的密钥空间并进行计数,结束后正确的密钥计数值接近1/2±ϵ,并且应该在一定范围内对计数值较大的可能密钥进行验证。

(2)设计过程

首先使用书中给出的线性分析链,分析出第5轮第2、4部分的密钥。再选择新的偏差较大的线性分析链,在第2、4部分密钥已知的基础上分析出第1、3部分的密钥。接着在已知起始密钥低16位的基础上,穷举高16位密钥对给出的8000个明密文对进行验证。由于在加密过程中进行了5轮的S代换和P置换,其实相同明文在不同密钥下得到相同密文的概率极低,因此并没有验证8000个明密文对是否对应,而仅验证了3个判断密钥是否合适。

程序有两层主循环,第一层主循环遍历可能的第5轮第2、4部分密钥,第二层在已知第5轮第2、4部分密钥的基础上生成并遍历可能的第5轮第1、3部分密钥,同时穷举高16位密钥并进行验证。

(3)小结

为了提高速度,程序中同样采用了打表。但是在oj上仍然差了300ms,最后是开启了03优化才能全部通过(开启这个优化通过oj,算不上很完美)。

#pragma GCC optimize(3,”Ofast“,”inline“)

”“

图1-2 线性分析oj结果图示

1.3差分分析

(1)设计内容

实验目的是实现对SPN网络的差分密码分析。差分密码与线性密码分析相似。主要区别在于它将两个输入的异或与其相对应的两个输出的异或相比较,是一种选择明文攻击。差分攻击的基础是一个非均匀的输出分布。和线性分析进行类似的计数操作并在计数值一定范围内对密钥进行验证。

(2)设计过程

首先使用书中给出的差分链分析出第5轮第2、4部分的密钥。再选择新的差分链分析出第5轮第1、3部分密钥,然后穷举高16位密钥情况,并验证密钥正确性。

与线性分析不同的是,由于差分分析中可以找到一条第5轮仅包含第1、3部分且偏差很大的差分链,因此不需要在已知第5轮第2、4部分的基础上进行差分分析,也因此减小了部分时间开销。

代码实现流程为:快速读入数据并存入数组中;根据已有的明密文对分别对第5轮第2、4部分和第1、3部分进行差分分析,记录每一种密钥对应的count值。在一定范围内遍历第5轮第2、4部分和第1、3部分密钥,穷举高16位密钥并验证正确性,得到正确密钥后快速输出密钥。

(3)小结

程序提交oj的时候最后一个测试点偶尔会出现超时的情况。

”“

图1-3 差分分析oj结果图示

1.4 SPN增强

(1)设计内容

对原始SPN进行改进,自定义密钥长度,分组长度,S盒,P盒等信息,对输入比特流进行加密使输出能够通过oj的随机数检测标准。

(2)设计过程

相比于之前的SPN,做了些改动。采用CBC模式,随便设置一个初始向量,并且将密钥增加到128位,SPN加密长度增加到64位,使用自定义的P盒。这样才通过了随机性检测。

(3)小结

这道题不像之前的题目卡时间那么难受,虽然安全性相比于最初的SPN有所提高,但是真正应用的话,安全性还是不行。

”“

图1-4 SPN增强oj结果图示

1.5 RSA参数计算

(1)设计内容

实验目的是自己利用gmp库提供的大整数基本运算来实现求逆和最大公因数,输出RSA参数d,并检查RSA参数的合法性。

(2)设计过程

首先是利用vcpkg在主机vs2019上搭建好了运行环境。实现了素性检测,gcd的求解以及求逆等过程。主要遇到的问题是在验证安全性上,判断参数是否正确。首先e不能太小,主要为了提高计算的难度;p和q间隔不能太小;p-1和q-1不能太光滑,即gcd(p-1,q-1)应该比较小,经过询问和验证,这个值大概在20以内。

(3)小结

这个实验主要熟悉了gmp库提供的大整数相关的基本函数运算。比较麻烦的是需要自己摸索测试方法,探索p和q的间隔,(p-1)和(q-1)的最大公因数大小等。在运行速度上倒是没遇到什么大问题。

”“

图1-5 RSA参数计算oj结果图示

1.6模重复平方

(1)设计内容

实验目的是利用gmp库提供的加法,减法,乘法,模运算等基本运算来自己实现expmod(a,e,n)。

(2)设计过程

这道题逐步计算就行,需要注意的是递归或者普通的循环是行不通的。为了加快运行速度,要尽量减少循环次数。

(3)小结

这道题主要还是gmp库提供的函数的应用。

”“

图1-6模重复平方 oj结果图示

1.7中国剩余定理

(1)设计内容

实验内容:正确计算c^d(modpq)。利用1.5中的求逆运算从加密密钥e计算解密密钥d。

利用1.6中实现的模幂运算和中国剩余定理计算c^d(modpq)。

(2)设计过程

这道题主题要是与前面两题的结合,使用p,q并运用中国剩余定理解密。为了加快速度解决的问题:

1.避免重复计算,用变量将不会改变的值保存好,避免不必要的计算。

2.在求解模幂时,将解密指数d模除以p-1和q-1,加速计算。

(3)小结

虽然经过改进,运行时间有所提高,但是最后一个测试点还是压着边过的。

”“

图1-7中国剩余定理oj结果图示

1.8 PKCS7

(1)设计内容

PKCS#7是PKI中用于消息加密的语法标准。可以用于给拥有公钥的用户发加密邮件、传送加密文件等。实验目的是解开PKCS#7包装,获取明文消息。

(2)设计过程

这道题首先是查找PKCS#7的相关知识,了解它的用途。算是对上学期所学知识的综合应用的一个实例。然后利用openssl库提供相关的函数进行解密。

(3)小结

这道题时间并不是问题。还是比较轻松的。

”“

图1-8 PKCS7 oj结果图示

1.9彩虹表

(1)设计内容

有一些链头和链尾,每条链从链头开始,依次调用了10000次SHA1和R函数得到链尾。

实验目的是从这些链中找到SHA1值对应的口令。

(2)设计过程

在程序中定义了UnitSHA1函数来寻找SHA1,通过findstr函数判断是否恰当。为了加快运行速度,程序中同样采用了快读快写以及位运算等。

(3)小结

这道题虽然时间限制提高至2000ms,但最后有几个测试点还是开了03优化才过的。

”“

图1-9 彩虹表oj结果图示

二、实验心得

这次试验包含了SPN加解密及其分析,RSA参数,模重复平方,中国剩余定理,PKCS7,彩虹表等九个实验的内容。在实验过程中,要到了许许多多的问题。主要有以下几点:

 SPN的位运算,最初因为对位运算不够熟悉并没有想着用位运算来实现SPN的加解密,多走了很多弯路。

密码分析问题,线性分析和差分分析否需要自己依据原理来找到最理想的链,而且需要先对概念原理有个清楚的认知,这就迫使我再次回顾密码学课本和网课上的知识点。

运行时间问题,为了缩短运行时间,采取了很多办法。比如打表,快读快写,在某些不改变的变量前面加const,在常用的变量前加register,算术运算转变为位运算等等。实在过不了的开启了02,03优化。

第三方库的安装与链接,在采用了许多方法无果后,采用了vcpkg库管理工具实现了gmp,gmssl,openssl等的安装与链接,减少了许多配置的麻烦。

密码学课程知识的回顾,过了一个暑假,部分密码学的细节知识有所遗忘,为了完成这次实验,需要重新学习一遍。这种回顾知识的机会自高中结束以来很少有了。上学期主要进行理论学习,这次试验弥补了实践的缺失。

总的来说,这次课设给我留下了深刻印象。自己写的代码不能正常运时的焦虑感是做其他实验没有的。大部分问题都要重新回顾之前的密码学知识。通过网上搜索相关概念,询问老师和同学解决。有些细节问题也会与同学交流讨论。这次实验让自己对密码学的认识和自己的编程能力上升了一个台阶。

三、对课程设计内容和过程的建议

希望能够在完成人数适当的时候进行一次讲解,这样可以让没有方向的同学知道如何着手,也可以让已经完成的同学进行思路的比对,有所改进。小范围讨论和统一讲解同样重要。

希望oj上的时间增加一点,因为时间而卡在一道题上过不去的滋味并不好受。而且实验是在锻炼我们的思考问题和实践的能力。如果时间太少的话,就只能参考别人的思路来缩短运行速度,同质化严重。不利于学生独立思考,写出各种各样的程序。我们写的程序最终也不会进行应用,更重要的是锻炼,纠结于几百毫秒反而降低了学生的热情。

在课设结束后发出参考样例方便有需要的同学进行改进。

希望实验课能越来越好,通过实验来吸引更多对密码学有兴趣的人。

第三篇:密码学学习心得

“密码学”学习心得

密码可破!人类的智慧不可能造成这样的密码,使得人类本身的才智即使运用得当也无法破开它!

———爱伦·坡所

在我们的生活中有许多的秘密和隐私,我们不想让其他人知道,更不想让他们去广泛传播或者使用。对于我们来说,这些私密是至关重要的,它记载了我们个人的重要信息,其他人不需要知道,也没有必要知道。为了防止秘密泄露,我们当然就会设置密码,保护我们的信息安全。更有甚者去设置密保,以防密码丢失后能够及时找回。密码”一词对人们来说并不陌生,人们可以举出许多有关使用密码的例子。现代的密码已经比古代有了长远的发展,并逐渐形成一门科学,吸引着越来越多的人们为之奋斗。

一、密码学的定义

密码学是研究信息加密、解密和破密的科学,含密码编码学和密码分析学。密码技术是信息安全的核心技术。随着现代计算机技术的飞速发展,密码技术正在不断向更多其他领域渗透。它是集数学、计算机科学、电子与通信等诸多学科于一身的交叉学科。使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确证性,防止信息被篡改、伪造和假冒。目前密码的核心课题主要是在结合具体的网络环境、提高运算效率的基础上,针对各种主动攻击行为,研究各种可证安全体制。

密码学的加密技术使得即使敏感信息被窃取,窃取者也无法获取信息的内容;认证性可以实体身份的验证。以上思想是密码技术在信息安全方面所起作用的具体表现。密码学是保障信息安全的核心;密码技术是保护信息安全的主要手段。本文主要讲述了密码的基本原理,设计思路,分析方法以及密码学的最新研究进展等内容

密码学主要包括两个分支,即密码编码学和密码分析学。密码编码学对信息进行编码以实现信息隐藏,其主要目的是寻求保护信息保密性和认证性的方法;密码分析学是研究分析破译密码的学科,其主要目的是研究加密消息的破译和消息的伪造。密码技术的基本思想是对消息做秘密变换,变换的算法即称为密码算法。密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。

二、密码学的发展历程

密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。

1.古代加密方法(手工阶段)

源于应用的无穷需求总是推动技术发明和进步的直接动力。存于石刻或史书中的记载表明,许多古代文明,包括埃及人、希伯来人、亚述人都在实践中逐步发明了密码系统。从某种意义上说,战争是科学技术进步的催化剂。人类自从有了战争,就面临着通信安全的需求,密码技术源远流长。

古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。

我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。

比如:我画蓝江水悠悠,爱晚亭枫叶愁。秋月溶溶照佛寺,香烟袅袅绕轻楼 2.古典密码(机械阶段)

古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。3.近代密码(计算机阶段)

密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。计算机和电子学时代的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机的高额费用。总之,利用电子计算机可以设计出更为复杂的密码系统

20世纪中叶以前, 由于条件所限, 密码技术的保密性基于加密算法的秘密, 因此称之为古典密码体制或受限的密码算法。尽管古典密码体制受到当时历史条件的限制, 没有涉及非常高深或者复杂的理论, 但在其漫长的发展演化过程中, 已经充分表现出了现代密码学的两大基本思想一“ 代替” 和“换位” , 而且还将数学的方法引人到密码分析和研究中。这为后来密码学成为系统的学科以及相关学科的发展莫定了坚实的基础。

密码学真正成为科学是在19世纪末和20世纪初期,由于军事、数学、通讯等相关技术的发展,特别是两次世界大战中对军事信息保密传递和破获敌方信息的需求,密码学得到了空前的发展,并广泛的用于军事情报部门的决策.小结

从以上密码学的发展历史可以看出,整个密码学的发展过程是从简单到复杂,从不完美到完美,从具有单一功能到具有多种功能的过程。这是符合历史发展规律和人类对客观事物的认识规律的。而且也可以看出密码学的发展受到其它学科如数学、计算机科学的极大促动。这说明,在科学的发展进程中,各个学科互相推动,互相联系,乃至互相渗透,其结果是不断涌现出新的交叉学科,从而达到人类对事物更深的认识。从密码学的发展中还可以看出,任何一门学科如果具有广泛的应用基础,那么这个学科就能从中汲取发展动力,就会有进一步发展的基础。

我们这个社会已进入了信息时代,随着数据库技术和计算机网络应用的不断深入,信息的安全传输也有着广阔的应用前景。虽然密码可以追溯到古代,但密码作为一门学科还非常年轻,还有着更进一步的发展要求。

三、密码学的基础知识

密码学(Cryptogra phy),现代准确的术语为“密码编制学”,简称“编密学”,与之相对的专门研究如何破解密码的学问称之为“密码分析学”。密码学是主要研究通信安全和保密的学科,密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。一个密码系统完成如下伪装:加密者对需要进行伪装机密信息(明文)进行伪装进行变换(加密变换),得到另外一种看起来似乎与原有信息不相关的表示(密文),如果合法者(接收者)获得了伪装后的信息,那么他可以通过事先约定的密钥,从得到的信息中分析得到原有的机密信息(解密变换),而如果不合法的用户(密码分析者)试图从这种伪装后信息中分析得到原有的机密信息,那么,要么这种分析过程根本是不可能的,要么代价过于巨大,以至于无法进行。

在计算机出现以前,密码学的算法主要是通过字符之间代替或易位实现的,我们称这些密码体制为古典密码。其中包括:易位密码、代替密码(单表代替密码、多表代替密码等)。这些密码算法大都十分简单,现在已经很少在实际应用中使用了。由于密码学是涉及数学、通讯、计算机等相关学科的知识,就我们现有的知识水平而言,只能初步研究古典密码学的基本原理和方法。但是对古典密码学的研究,对于理解、构造和分析现代实用的密码都是很有帮助。以下介绍我们所研究的古典密码学。

小结

像绝大多数领域的科学知识一样,密码学在完整的科学体系建立起来之前,古典密码学仅限于一些简单代替和置换算法,当然,这代替和置换如果经过了几次算法的加密就会一样复杂多变,而现代的算法经过科学体系的整理与发展,更加的完善一些复杂算法的应用和各种应用协议的产生。而由于网络的出现以及发展,未来的密码学也必定向这个方向发展。例如网络签名,网上银行的安全,个人邮件信息的保护,都很迫切需要密码学的支持,推动密码学的发展.四、密码学的作用

现代密码学研究信息从发端到收端的安全传输和安全存储,是研究“知己知彼”的一门科学。其核心是密码编码学和密码分析学。前者致力于建立难以被敌方或对手攻破的安全密码体制,即“知己”;后者则力图破译敌方或对手已有的密码体制,即“知彼”。人类有记载的通信密码始于公元前400年。古希腊人是置换密码的发明者。1881年世界上的第一个电话保密专利出现。电报、无线电的发明使密码学成为通信领域中不可回避的研究课题。

1.用来加密保护信息

利用密码变换将明文变换成只有合法者才能恢复的密文,这是密码的最基本功能。信息的加密保护包括传输信息和存储信息两方面,后者解决起来难度更大。

2.采用数字证书来进行身份鉴别

数字证书就是网络通讯中标志通讯各方身份信息的一系列数据,是网络正常运行所必须的。现在一般采用交互式询问回答,在询问和回答过程中采用密码加密,特别是采用密码技术的带CPU的职能卡,安全性好,在电子商务系统中,所有参与活动的实体都需要用数字证书来表明自己的身份,数字证书从某种角度上说就是“电子身份证”。3.数字指纹

在数字签名中有重要作用的“报文摘要”算法,即生成报文“数字指纹”的方法,近年来备受关注,构成了现代密码学的一个重要侧面。4.采用密码技术对发送信息进行验证

为防止传输和存储的消息被有意或无意的篡改,采用密码技术对消息进行运算生成消息的验证码,附在消息之后发出或信息一起存储,对信息进行验证,它在票房防伪中有重要作用。5.利用数字签名来完成最终协议

在信息时代,电子数据的收发使我们过去所依赖的个人特征都将被数字代替,数字签名的作用有两点,一是因为自己的签名难以否认,从而确定了文件已签署这一事实;二是因为签名不易仿冒,从而确定了文件时真的这一事实。

五、密码学的前景

量子密码学

量子密码体系采用量子态作为信息载体,经由量子通道在合法的用户之间传送密钥。量子密码的安全性由量子力学原理所保证。所谓绝对安全性是指:即使在窃听者可能拥有极高的智商、可能采用最高明的窃听措施、可能使用最先进的测量手段,密钥的传送仍然是安全的。通常,窃听者采用截获密钥的方法有两类:一种方法是通过对携带信息的量子态进行测量,从其测量的结果来提取密钥的信息。但是,量子力学的基本原理告诉我们,对量子态的测量会引起波函数塌缩,本质上改变量子态的性质,发送者和接受者通过信息校验就会发现他们的通讯被窃听,因为这种窃听方式必然会留下具有明显量子测量特征的痕迹,合法用户之间便因此终止正在进行的通讯。第二种方法则是避开直接的量子测量,采用具有复制功能的装置,先截获和复制传送信息的量子态。然后,窃听者再将原来的量子态传送给要接受密钥的合法用户,留下复制的量子态可供窃听者测量分析,以窃取信息。这样,窃听原则上不会留下任何痕迹。但是,由量子相干性决定的量子不可克隆定理告诉人们,任何物理上允许的量子复制装置都不可能克隆出与输入态完全一样的量子态来。这一重要的量子物理效应,确保了窃听者不会完整地复制出传送信息的量子态。因而,第二种窃听方法也无法成功。量子密码术原则上提供了不可破译、不可窃听和大容量的保密通讯体系。

现代密码学与计算机技术、电子通信技术紧密相关。在这一阶段,密码理论蓬勃发展,密码算法设计与分析互相促进,出现了大量的密码算法和各种攻击方法。而且如今“密码学”不仅用于国家军事安全上,而且更多的集中在实际生活中。如在生活中,为防止别人查阅你的文件,可将文件加密;为防止窃取你的钱

财,可在银行账户上设置密码等。随着科学技术的发展和信息保密的需求,密码学的应用将融人到人们的日常生活中。基于密码学有着坚实的应用基础,可以相信,密码学一定能不断地发展,不断地完善,从而会给全人类提供更加安全的各种服务,让我们祝福这一天的到来吧!

随着科学技术的迅猛发展,人们对信息安全和保密的重要性认识不断提高,在信息安全中起着举足轻重作用的密码学也就成为信息安全中不可或缺的重要部分。在今天,密码学仍然是信息技术非常重要的组成部分,它还在多个方面发挥着重要作用。比如对于用户的认证,对于信息的认证,信息的安全以及存储的安全等,但这些对于密码学而言,它需要同其他组件配合,比如管理软件等。密码学是和技术相关。作为一项技术本身有演进的需要,同时还要适应跟它相配合的技术组件发展的需要,要适应用户的新需求以及其他的新应用。密码学同信息技术所包括的组件一样,一直在发展变化中,这就需要我们要不断地发展密码学,使密码学能够适应其他应用的需求,同其他技术的进步齐头并进。信息安全有着众多基础研究的领域,这些基础研究构成了密码学的基础,也构成了通信、安全软件等系统的基础。当我们在实施一个工程项目的时候,不能仅靠一个细分领域技术就能把这个项目完成。

六、学习密码学的感悟

1.密码学家的人生价值

密码学家,也许不为人知。但他们的工作却在我们的生活中发挥 着巨大的作用。他们在现代社会中有着不可替代的作用。有人认为密码学家就像一个黑客,但他们有着本质的不同。黑客是盗取密码保护的信息以获取利益,而密码学家从事的是基础理论研究,是为了评估密码算法的安全性,找到其漏洞,以设计出更安全的密码算法。

我觉得,对于密码学家来说,其实有两重意义上的生命:一是生物意义上的生命,二是学术意义上的生命。两种生命往往并不同步。有的人,生物意义上的生命还活着,学术意义上的生命已经死了。这种情况在我们周围越来越常见。目前充斥着大量名为成果,实为名利敲门砖的所谓学术,没有任何新意和创见,前脚迈出印刷厂,后脚就进造纸厂,白耗费了财力,还增加了环境污染。有的人,生物意义上的生命死了,学术意义上的生命还活着。我想,密码学家就是这样的一类人,他们的研究成果,大到保卫国家,小到维护个人的利益,我想这是他们人生价值的最好体现。

2.总结与体会

密码学充满了神秘性,让我对她产生了浓厚的兴趣和好奇。最近的这次人类战争中,即二战,认识到密码和情报是一件事情。而在当代密码学跟数学,计算机只是一个大背景,因为信息将会以网络为媒介,所以现代密码学更多的是以数字化的信息而非纸质为研究对象。所以密码学归根结底是数学问题,计算能力是数学的一个方面,高性能的计算机可以成为国力的象征,分析情报就是一方面。数学研究等一些自然基础学科的研究才是国家实力的坚定的基石,才是一个自然科学的学生的理想所在。数学研究很广泛,而密码学涉及很有限,大多与计算机学科相关,如离散数学。从数学的分类包括:数论、近世代数、矩阵论、域论,以及其它结合较为紧密地理论:信息论、编码论、量子学、混沌论。

密码学还有许许多多这样的问题。当前,密码学发展面临着挑战和机遇。计算机网络通信技术的发展和信息时代的到来,给密码学提供了前所未有的发展机遇。在密码理论、密码技术、密码保障、密码管理等方面进行创造性思维,去开辟密码学发展的新纪元才是我们的追求。

北京科技大学

班级: 计1102

姓名:杨勇 学号: 41155047

第四篇:密码学技术读书笔记

关于密码学技术读书笔记

一.密码学的介绍

密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。

密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。二.密码学的发展历史

密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。1.古代加密方法(手工阶段)

古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。

公元前400年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。这是最早的密码技术。

我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载。2.古典密码(机械阶段)

古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。3.近代密码(计算机阶段)

密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。

第五篇:现代密码学 学习心得

密码学(Cryptology)一词源自希腊语“krypto's”及“logos”两词,意思为“隐藏”及“消息”。它是研究信息系统安全保密的科学。其目的为两人在不安全的信道上进行通信而不被破译者理解他们通信的内容。

从几千年前到1949年,密码学还没有成为一门真正的科学,而是一门艺术。密码学专家常常是凭自己的直觉和信念来进行密码设计,而对密码的分析也多基于密码分析者(即破译者)的直觉和经验来进行的。1949年,美国数学家、信息论的创始人 Shannon, Claude Elwood 发表了《保密系统的信息理论》一文,它标志着密码学阶段的开始。同时以这篇文章为标志的信息论为对称密钥密码系统建立了理论基础,从此密码学成为一门科学。由于保密的需要,这时人们基本上看不到关于密码学的文献和资料,平常人们是接触不到密码的。1967年Kahn出版了一本叫做《破译者》的小说,使人们知道了密码学。20 世纪70年代初期,IBM发表了有关密码学的几篇技术报告,从而使更多的人了解了密码学的存在。但科学理论的产生并没有使密码学失去艺术的一面,如今,密码学仍是一门具有艺术性的科学。1976年,Diffie和 Hellman 发表了《密码学的新方向》一文,他们首次证明了在发送端和接收端不需要传输密钥的保密通信的可能性,从而开创了公钥密码学的新纪元。该文章也成了区分古典密码和现代密码的标志。1977年,美国的数据加密标准(DES)公布。这两件事情导致了对密码学的空前研究。从这时候起,开始对密码在民用方面进行研究,密码才开始充分发挥它的商用价值和社会价值,人们才开始能够接触到密码学。这种转变也促使了密码学的空前发展。

最早的加密技术,当属凯撒加密法了。秘密金轮,就是加解密的硬件设备可以公用,可以大量生产,以降低硬件加解密设备的生产与购置成本。破译和加密技术从来就是共存的,彼此牵制,彼此推进。错综复杂的加解密演算法都是为了能够超越人力执行能力而不断演变的。Kerckhoffs原则、Shannon的完美安全性、DES算法、Rijndael算法……<>一文,正如密码学的里程碑,伫立在密码学者不断探索的道路上,作为一种跨越,作为一种象征。

文章大致翻译:

一、摘要:随着远程通信的发展,特别是计算机网络的发展,密码学面临着两大难题:⒈可靠密钥的传输通道问题。⒉如何提供与手写签名等效的认证体系。为了解决这些问题,文中提出了公钥密码算法和公钥分配算法,并且把公钥密码算法经过变换成为一个单向认证算法,来解决有效认证问题。此外还讨论了密码学中各种问题之间的相互关系,陷门问题,计算复杂性问题,最后回顾了密码学发展的历史。

二、常规密码体系:这一部分主要介绍了密码学的一些基本知识,如密钥、加密、解密,算法的无条件安全与计算性安全,三种攻击法,即唯密文攻击、已知明文攻击、选择明文攻击。需要指出的是,本文给出了密码学的一个定义:研究解决保密和认证这两类安全问题的“数学”方法的学科。还有一点需要指出的是,根据Shannon的理论:无条件安全的算法是存在的,但由于其密钥过长而不实用,这也是发展计算上安全的算法的原因。

三、公钥密码学:公钥密码学主要包括两部分:公钥密码算法和公钥分配算法。公钥密码算法是指定义在有限信息空间{M}上的,基于算法{Ek }和{Dk }的可逆变换

Ek:{M}-> {M}

Dk:{M}-> {M}

满足下列条件:

⑴对任给K∈{K},Ek是Dk的互逆变换

⑵对任意的K∈{K}和M∈{M},用Ek和Dk进行加密和解密是

容易计算的⑶对几乎所有的K∈{K},从Ek推出Dk在计算上是不可行的⑷对任意的K∈{K},从K计算Ek和Dk是可行的这里K是用以产生Ek和Dk的随机数。性质⑶保证了可公开Ek而不损害Dk的安全性,这样才保证了公钥密码算法的安全性。

以加密二值n维向量为例,加密算法是乘一个n×n可逆矩阵,解密则乘其逆矩阵,所需运算时间为n。此可逆矩阵可通过对单位矩阵做一系列的行和列的初等变换得到,而其逆矩阵是经过逆序的行和列的逆变换得到。但是矩阵求逆只需要n的时间,密码分析者用时与正常解密用时之比是n。虽然这个例子并不实用,但对解释公钥密码算法是有用的。一个更实用的方法是利用机器语言的难懂性,把加密算法编译成机器语言公布,而解密算法保密,分析者要理解机器语言的全部运算过程是很困难的,所以要破解是困难的,当然此算法必须足够的复杂以免通过输入和输出对来破解。

公钥分配算法是基于求对数再取模计算上的困难。令q是一个素数,在有限域GF(q)上任取q,计算Y= a*mod(q),其中a是GF(q)上的一个固定基元。则 X= log 【Y*mod(q)】。a

不难得出由X计算Y是较容易的,约需要计算2×log2q次乘法;然而从Y得出X是困难的,x

32因为需q/2次运算。这样对每一个用户,从[1,2,„,q-1]中随机的选一个q,计算出Yi=a* mod q,并将Yi公布,Xi保密。那么当用户i和j通信时,使用Kij=a

公共密钥。此密钥用户i通过j公布的Yj 得到,即Kij= YjXiXiXj Xi*mod q作为他们的XiXj *mod q=(a)*mod q= aXjXi *mod q得到。用户j的计算同理。对于第三方要获得此密钥就必须计算,而这在计算上是不可行的,从而达到了在公共信道上分配私钥的效果。

四、单向认证:现有的认证体系只能保证不被第三方冒名顶替,但不能解决发送者和接收者之间的冲突,为此引入单向函数的概念,即对定义域中的任意x,f(x)是容易计算的,但对几乎所有的值域中的y,求满足y= f(x)的x在计算上是不可行的。例如已知多项式p(x)和x,求y =p(x)是容易的,但若已知y 求出x 是困难的。值得注意的是,这里的计算上不可逆与数学中的不可逆是完全不同的(数学上的不可逆可能是有多个原像)。

公钥密码算法可用来产生一个真正的单向认证体系。当用户A要发信息M给用户B时,他用其保密的解密密钥解密“M”并传给B,B收到时用A公布的加密密钥 “加密”此消息从而得到信息M。因为解密密钥是保密的,只有A发送的消息才具有这样的性质,从而确认此信息来源于A,也就建立了一个单向认证体系。

Leslie Lamport 还提出另一种单向信息认证方法,它是应用在k维二值空间上的单向函数f到其自身的映射来实现的。若发送者发送N比特的信息m,他要产生2N个随机k维二值向量x1,X1,x2,X2,„„xn , Xn ,并保密,随后把这些向量在f下的像y1,Y1,y2,Y2,„„yn , Yn,发送给接收者。当发送信息m=(m1,m2 ,„,mN)时,m1=0发送x1,m1 =1发送X1,依次类推。接收者把收到的信息用f映射之,若为y1则 m1=0,Y1则m1 =1,如此下去便得到了m。由于函数f的单向性,接收者无法从y推出x,因此就无法改动接收到的任何收据。当然在N比较大时这种方法的额外开销是很大的,为此有必要引入单向映射g,用来把N比特的信息映射成n比特(n约为50),但这里要求g有比一般的单向函数更强的性质。

五、问题的相关性和陷门:

⒈一个对已知明文攻击安全的密码算法能产生一个单向函数。设 :{P}->{K}是这样的一个算法,取P=P0。考虑映射f:{K}->{C}定义为f(x)=Sx(P0),则f是一个单向函数,因为要由f(x)得到x和已知明文攻击是等价的(即已知P=P0和SK(P0)求不出K)。Evans还提出过另一种方法,他用的映射是

f(x)=Sx(X),这增加了破解的难度,但这个单向函数却破坏了对已知明文攻击安全的要求。⒉一个公钥密码算法可用来产生一个单向认证体系。这一点在(四)中已经讨论过了。⒊一个陷门密码算法可用来产生一个公钥分配算法。所谓陷门密码算法是指只有知道陷

门信息才能正确还原明文,不掌握陷门信息要破解出明文在计算上是不可行的。比如A要和B建立公共私钥,A任选一个密钥,用B公布的含有陷门信息的加密密钥加密之,并将密文发送给B,B由保密的陷门信息解密得到此密钥,于是A和B建立了公共的私钥。不难发现公钥密码算法是一个陷门单向函数。

六、计算复杂度:现代密码算法的安全性是基于计算上的不可行性,因此就有必要对计算复杂度进行研究。在确定型图灵机上可用多项式时间求解的问题定义为P类复杂度,在非确定型图灵上可用多项式时间求解的问题定义为NP类复杂度,显然NP包括P。Karp还定义了一个NP完全集,即如果NP完全集中的任何一个问题属于P 类,则NP中的所有问题都属于P。现在大多数的加密算法用的是NP完全集中的问题。关于密码分析的难度有如下定理:一个加密和解密算法若是能在P时间内完成的,那么密码分析的难度不会大于NP时间。

七、历史回顾:

密码学的发展经历了早期的加密过程保密,到60年代对明文攻击安全的算法,到现在算法公开的基于计算复杂度的算法,可见其发展趋势是秘密性越来越弱的。并且随着许多曾经被证明为安全的算法被相继攻破,密码安全性的分析也经历了早期的纯数学证明到后来的密码分析攻击,再到计算复杂度分析。这里还有一个有趣的现象就是密码分析方法大多是由专业人事发现的,而密码算法则主要是由非专业人员提出的。

对于这篇经典之作,我的认知显得很是粗陋。要想真正读通这篇巨作,恐怕自己还需要修炼些时日。但是,加密解密已经渗入到如今这个电子化信息化的生活中来,又无时无刻不在感受着密码学带来的快感。

信息安全技术作为一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。21世纪是信息时代,信息的传递在人们日常生活中变得非常重要。如:电子商务,电子邮件,电子政务,银行证券等,无时无刻不在影响着人们的生活。这样信息安全问题也就成了最重要的问题之一。在信息交换中,“安全”是相对的,而“不安全”是绝对的,随着社会的发展和技术的进步,信息安全标准不断提升,因此信息安全问题永远是一个全新的问题。信息安全的核心是密码技术。如今,计算机网络环境下信息的保密性、完整性、可用性和抗抵赖性,都需要采用密码技术来解决。公钥密码在信息安全中担负起密钥协商、数字签名、消息认证等重要角色,已成为最核心的密码。

Diffie和Hellman的经典算法,影响直至今日,各种新兴算法的形成、多次地被引用。

经典犹在,密码学新的开拓仍旧在继续,仍旧令人期待。

下载密码学课程设计报告(5篇)word格式文档
下载密码学课程设计报告(5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    密码学大作业NMAP

    Nmap的学习与使用 赵彦喆3110102884 信通1106 一:Nmap扫描原理: 1网络扫描软件Nmap (1)简介 Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪 服务......

    应用密码学论文

    数学科学学院 数学与应用数学一班110414000 某某某 应用密码学论文 这个学期我通过对应用密码学的学习,深刻地体会到应用密码学的魅力,也认识到随着科学的发展,应用密码学越......

    高频课程设计报告

    一 设计课题名称 单边带调制解调电路的设计 二 课程设计目的、要求与技术指标 2.1 课程设计目的 (1) 巩固所学的相关理论知识; (2) 掌握电子系统的一般设计方法; (3) 会运用multisim......

    课程设计报告

    学 期:2014-2015-2 作 业:课程设计社会调研报告 班 级:社会工作131 学 号:1325012029 姓 名:蒋叶青 指导老师:钱雪飞老师 一.简介 时间:2015.5.26-5.28 地点:中国杭州......

    课程设计报告(范文)

    一. 设计题目 WFS-601面包电话制作 二. 主要内容 1、 分析面包电话机的功能,了解面包电话机的构造 2、 完成面包电话机的焊接,要求焊点符合焊接要求。电话要实现接听与呼叫以及......

    密码学总结(共五则)

    班级:信息111姓名:刘秉森学号:201112030119 1 引言 1.1信息安全的重要性 信息安全技术作为一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,研究计算机系统和通信网......

    现代密码学考试总结

    密码主要功能: 1. 机密性:指保证信息不泄露给非授权的用户或实体,确保存储的信息和传输的信息仅能被授权的各方得到,而非授权用户即使得到信息也无法知晓信息内容,不能使用。 2.......

    车站课程设计报告

    华东交通大学课程设计报告 车站信号控制系统课程设计报告 课题:基于AUTOCAD的电路图绘制及联 锁表制作 学院:轨道交通学院 专业: 交通设备信息工程 班级:姓名:学号:华东交通大......