信息安全技术课程设计-常用密码算法的设计与实践.doc_第1页
信息安全技术课程设计-常用密码算法的设计与实践.doc_第2页
信息安全技术课程设计-常用密码算法的设计与实践.doc_第3页
信息安全技术课程设计-常用密码算法的设计与实践.doc_第4页
信息安全技术课程设计-常用密码算法的设计与实践.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络信息安全实训任务书指导教师姓名张长伦教研室信计综合实训课程名网络信息安全学时2周一、实训目的、任务1实训目的实践环节是强化理论知识、进一步提高动手能力的重要环节。通过对信息安全综合实训课程的实践,进一步熟悉计算机网络安全的基本理论知识、熟悉信息安全实践体系,包括网络信息安全五个大块:密码算法编程实践、防火墙技术、入侵检测系统、计算机病毒防治、安全配置管理等,通过亲自动手实践,重点掌握这些技术的原理,并且在实验室网络环境下予以实现,让学生掌握信息安全实践的基本方法,提高学生实际信息安全实践能力,强化信息安全防范意识。 2实训任务密码算法是信息安全的理论基础。密码技术是保护大型通信网络上传输信息安全的惟一实现手段,是保障信息安全的核心技术,在数字签名、身份验证、授权、信息加密等方面有广泛的应用。本次实训任务课题之一是“常用密码算法的设计与实践”。本课题要求熟悉对称密码体制与非对称密码体制的流行算法的原理,并采用C+/VC/Java选择两种密码体制中的代表性算法,并学会算法对应的软件的应用。本课题需要研究的内容主要包括:(1)密码体制;(2)主流密码算法的基本原理研究;(3)密码算法编程实践(DES、IDEA、RSA、MD5等),包括对加密包CryptoAPI的分析与应用。(4)常用的加密与解密软件的应用。(PGP等)二、实训要求1小组分配:本课题由2个同学一个小组完成,对称密码算法和非对称密码算法部分各由一个同学完成。2每人需要撰写完整的信息安全综合实训报告,主要包括:一、实训目的和任务1.1实训目的1.2实训任务1.3 实训要求1.4 小组分工与本人所做的工作概述二、密码体制基本原理的研究2.1 对称密码体制及其算法2.2 非对称密码体制及其算法三、常用密码算法编程实践写出算法设计的思想、代码、注释、测试。每一部分一定要层次清晰、有较好的说明和注释。四、密码算法的应用实践以2-3种加密解密软件为例,写出该软件的实验报告及分析。每一部分一定要层次清晰、有较好的说明和注释。五、总结与提高总结自己在整个学习过程中遇到的问题,解决的方法、思路和过程。 写明自己通过信息综合实训的收获、感想等。参考文献:按参考文献格式列出1蔡红柳、何新华.信息安全技术及应用.北京:科学出版社,2004 2赖溪松,韩亮,张真诚.计算机密码学及应用。国防工业出版社,20013卢开澄.计算机密码学.清华大学出版社,2003三、实训步骤参照实训任务的要求,分步实现。1学习密码体制的基本原理;2熟悉常用的密码算法; 3对密码算法予以编程实现;4学会使用加密解密应用软件;5分步测试,记录实训结果;6. 撰写实训报告。在完成以上任务过程中,要求小组成员要有分工,明确自己的任务。每位同学负责完成其中的一部分。同时要求每位同学能够独立完成整个小组的实训,以提高能力。在撰写实训报告时,要求按照实训报告范例的格式,侧重介绍自己在整个题目中所做的工作。最后,每人提交自己的实训报告(电子稿、打印稿)。综合实训成果提交、综合实训说明书(实验报告)规范及指导提交的综合实训成果包括:每个同学提交综合实训报告(电子稿、打印稿)。课程设计说明书(实验报告)规范:1实验报告一般采用打印方式,选用A4纸、5号宋体,页边距均为20mm,行间距采用18磅。文中标题采用宋体加粗。2实验报告结构及要求(1)封面:采用学校开学初发的统一封面(2)网络信息安全实训任务书:由指导老师下达(3)目录:要求结构层次清晰,给出标题及页次。(4)正文:应按照目录所确定的顺序依次撰写,主要突出自己做的部分。设计经验总结给出实验过程中出现的典型错误、原因及解决的方法、设计感想、收获。(5)参考文献系签字: 年 月 日院签字: 年 月 日目 录第一章实训目的和任务21.1 实训目的21.2 实训任务21.3 实训要求2第二章密码体制基本原理研究22.1 密码体制概述22.2 对称密码体制及其算法22.3 非对称密码体制及其算法2第三章常用密码算法编程实践23.1 系统设计概要23.2 详细设计23.3编码23.4 集成测试2第四章密码算法的应用实践24.1 基于PGP软件的加密实验24.2 基于绿盾软件的加密实验2第五章总结与提高错误!未定义书签。第六章参考文献2第一章 实训目的和任务1.1 实训目的实践环节是强化理论知识、进一步提高动手能力的重要环节。通过对信息安全综合实训课程的实践,进一步熟悉计算机网络安全的基本理论知识、熟悉信息安全实践体系。包括网络信息安全五个大块:密码算法编程实践、防火墙技术、入侵检测系统、计算机病毒防治、安全配置管理等,通过亲自动手实践,重点掌握这些技术的原理,并且在实验室网络环境下予以实现,让学生掌握信息安全实践的基本方法,提高学生实际信息安全实践能力,强化信息安全防范意识。1.2 实训任务密码算法是信息安全的理论基础。密码技术是保护大型通信网络上传输信息安全的惟一实现手段,是保障信息安全的核心技术,在数字签名、身份验证、授权、信息加密等方面有广泛的应用。本次实训任务课题之一是“常用密码算法的设计与实践”。本课题要求熟悉对称密码体制与非对称密码体制的流行算法的原理,并采用C+/VC/Java选择两种密码体制种的代表性算法,并学会算法对应的软件的应用。本课题需要研究的内容主要包括:(1)密码体制;(2)主流密码算法的基本原理研究;(3)密码算法编程实践(DES、IDEA、RSA、MD5等),包括对加密包CryptoAPI的分析与应用。(4)常用的加密与解密软件的应用。(PGP等)1.3 实训要求本次实训密码学部分所要研究的部分包含两部分,即对称密码体制与非对称密码体制,实训要求分别对这两部分内容进行细致具体的研究并撰写实训报告。 第二章 密码体制基本原理研究2.1 密码体制概述2.1.1 密码体制密码体制也叫密码系统,是指能完整地解决信息安全中的机密性、数据完整性、认证、身份识别、可控性及不可抵赖性等问题中的一个或几个的一个系统。对一个密码体制的正确描述,需要用数学方法清楚地描述其中的各种对象、参数、解决问题所使用的算法等。完成加密和解密的算法。通常,数据的加密和解密过程是通过密码体制(cipher system)和密钥(keyword)来控制的。 密码体制必须易于使用,特别是应当可以在微型计算机使用。密码体制的安全性依赖于密钥的安全性,现代密码学不追求加密算法的保密性,而是追求加密算法的完备,即使攻击者在不知道密钥的情况下,没有办法从算法找到突破口。2.1.2 密码体制的组成通常情况下,一个密码体制由以下五个部分组成:(1) 明文信息空间M;(2) 密文信息空间C;(3) 密钥空间K;(4) 加密变换Ek : MC,其中kK;(5) 解密空间DkM,其中kK。2.1.3 密码算法和密钥密码算法也叫密码函数,是用于加密和解密的数学函数。通常情况下,有两个相关的函数,一个用作加密,另一个用作解密。如果算法本身是保密的,这种算法称为受限制算法。受限制的密码算法不可能进行质量控制或标准化,每个用户组织必须有他们自己的唯一的算法,这样的阻止不可能采用流行的硬件或软件产品。但是,窃听者却可以买到这些流行产品并学习其中的算法,进而破解密码。尽管有一定的缺陷,但是受限制的算法对低密级的应用来说还是很流行的。2.1.4 密码学体制分类现今的密码体制的技术分为私用密钥加密技术(对称加密)和公开密钥加密技术(非对称加密)。加密算法的组织结构图如图2.1.3所示。图2.1.3 加密算法组织结构图2.2 对称密码体制及其算法2.2.1 对称密码体制对称算法又称为传统的加密算法或私钥加密算法,它是一种传统密码体制。在对称加密系统中,加密密钥能够从解密密钥中推算出来,反之也是一样。对称算法要求发送者和接受者在通信之前,协商一个共同的密钥,这是对称密码体制的最大特点,即在大多数对称算法中,加密与解密的密钥是相同的。2.2.2 DES对称加密技术概述对称密码体制中较为典型的算法主要是DES加密算法,DES的中文释义为数据加密标准,该算法是由美国国家标准局提出,主要应用于银行业的电子资金转帐(EFT)领域。DES算法的加密由四部分完成,分别为:初始置换函数IP,子密钥Ki及获取,密码函数F,逆置换函数IP-1 。DES的分组长度是64位(比特)。初始置换函数IP接受长度为64位的明文输入,逆置换函数IP-1输出64位的密文。在子密钥的获取过程中,通过密钥置换获取从K1到K16共16个子密钥。子密钥用于16次的迭代运算中。DES的加解密算法完全相同,只需将子密钥的顺序相反应用即可。DES的加密流程图如图2.2.2所示。图2.2.2 DES加密流程图2.2.3 DES算法的安全性DES算法的安全性不是很高,利用计算机Internet技术就可以用穷举法找到加密的密钥。早在1993年,两位美国人给出了一个非常详细的密钥搜索机器的设计方案,它是基于并行的密钥搜索芯片,此种芯片每秒能测试5107个密钥,用5760个这样的芯片组成的系统平均1.5天即可找到密钥。由此可见该算法是较为不安全的。2.3 非对称密码体制及其算法2.3.1 非对称密码体制非对称密码体制也称公钥加密技术,该技术就是针对私钥密码体制的缺陷被提出来的。在公钥加密系统中,加密和解密是相对独立的,也就是说加密和解密会使用两把不同的密钥,加密密钥(公开密钥)向公众公开,任何人都可以使用,解密密钥(秘密密钥)只有收信人自己知道,非法的使用者根据公开的加密密钥无法推算出解密密钥,因此其可称为公钥密码体制。2.3.2 RSA对称加密技术概述RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在美国麻省理工学院开发的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA数据加密体制可以简单描述如下:(1) 生成两个大素数p和q;(2) 计算这两个大素数的乘积n=pq;(3) 计算小于n并且与n互素的整数的个数,即欧拉函数(n)=(p-1)(q-1);(4) 选择一个随机的数e满足1e16?16:len);最后就可以对密钥进行操作,调用设置子密钥函数:SetSubKey(&SubKey0, &deskey0); 设置子密钥函数 该代码的功能是对初始化好的密钥进行DES密钥扩展操作,其代码和注释如下: 首先定义密钥操作的相关变量: bool K64, *KL=&K0, *KR=&K28; 其中K为密钥,KL为分组左半部分,KR为分组的右半部分。 其次调用ByteToBit进行位转化: ByteToBit(K, Key, 64); 然后对密钥进行PC1转化: Transform(K, K, PC1_Table, 56); 查表结束后需要对密钥进行分组,然后分别进行循环左移变化并进行PC2操作:RotateL(KL, 28, LOOP_Tablei); RotateL(KR, 28, LOOP_Tablei); Transform(*pSubKey)i, K, PC2_Table, 48); 其中LOOP_Tablei是之前定义的密钥循环移位函数,前面已经对其进行了详细的阐述。整个代码进行16此迭代,同样用for循环实现。 查表置换函数 查表变化函数的功能是将所得到的数据进行查表变换,这些表就是之前定义的初始IP置换表、逆初始IP置换表、选择置换PC-1表、选择置换PC-2表、为选择函数E、置换函数P以及S盒7个静态成员变量。 函数共带有四个形参,考虑到有的表需要迭代查阅,因此考虑用for循环写它的函数体:for(int i=0; i4 & len=BI_MAXLEN/4, 素数长度不在合法范围之内! ) BigInt P_1,P_1Div2,LtP,A,Tmp; 其次,定义CWindow类中的对象,用于在窗体显示测试大素数的个数,然后调用RandVal函数,产生一个大素数,其参数为大素数P以及长度len: CWindowwnd; Next:+k; RandVal(P,len); 然后先测试小的素数,这里用for循环测试这些小素数,在循环结构中嵌套一个条件判断语句用于判断素数是否符合,若不符合则继续测试下一个:for(int i=0; iPTL; +i) SetVal(LtP,PrimeTablei); if( !A.len ) goto Next; 然后再用Lehmann方法进行素数测试,测试的方式还是用for循环嵌套条件语句进行遍历:for(i=0; i5; +i) SetVal(A,rand()+2); if( ! ( EQUAL(Tmp,1)|!Cmp(Tmp,P_1) ) ) goto Next; 最后,结束等待光标,返回值为真:wnd.EndWaitCursor()return trueb) RSA加密函数RSA加密函数是整个核心算法的主体,对文件的加密、解密过程都需要调用这个函数对字符串或文件进行处理。这里再次给出标准加(解)密函数的定义:Encrypt(char *Out,char *In,UINT len,char *KeyStr,char *ModStr)首先初始化类的对象,这里用到了大数运算库中的函数,因此需要初始化它的对象:static BigInt a,c;其次,由输入构造一个大数,调用BigInt类中的BuildBIFromByte函数,由输入构造一个大数:CHECK_MSG( BI.BuildBIFromByte(a,In,len) & a.len = n.len, 错误:RSA加密(解密)的内容过长! )然后调用加密函数,即调用大数运算库中的大数乘方取余函数实现加密的运算:CHECK( BI.PowMod(c,a,key,n) )最后处理加密后的文件,调用字符处理类中的HalfByteToByte函数,将半字节组转换成字节组:HalfByteToByte(char *Out,const char *In,UINT len)c) RSA解密函数RSA解密函数的返回值是RSA的加密函数,这是因为加密与解密的算法都是进行大数乘方的取余运算,在此就不在赘述。3.3.3 混合加密算法模块的实现a) 加密函数这里还是再次给出加密函数的定义:Encrypt(char *OutFile,char *InFile,char *RsaKeyStr,char *RsaModStr,bool Is3DES)需要说明的是,Is3DES是bool类型的,它的返回值只有两个值,返回值为真时说明需要进行三重DES加密,否则不进行三重DES加密。首先当用户单击按钮时触发这个消息事件,先在窗体上显示等待光标:/ 显示等待光标wnd.ShowWaitCursor();wnd.SetWindowCaption(RSA正在加密DES密钥.);其次调用DES算法类中的RandKeyStr函数产生一个随机的DES加密密钥,并自动进行密钥的变换:des.RandKeyStr(deskey);然后用if条件判断语句判断是否进行三重DES加密,如果是则重新生成DES密钥:if( Is3DES )des.RandKeyStr(&deskey8);再调用RSA算法中的加密函数加密DES的密钥串:mcshead.KeyLen=rsa.Encrypt(mcshead.DesKey,deskey,Is3DES?16:8, RsaKeyStr,RsaModStr),OutFile )最后用RSA加密后的密钥进行DES加密:des.Encrypt(fh_out,fh_in,deskey),OutFile )b) 解密函数解密函数与加密函数的主体基本相同,都是先调用RSA核心算法类中的解密函数进行DES的密钥解密,然后在调用DES核心算法类中的解密函数进行文件解密,这期间还需要显示等待光标。大致的函数主体如下:CHECK( RsaKeyStr & RsaModStr & OpenFile(OutFile,InFile) )FILE_CHECK_MSG( mcshead.Ver=1,OutFile,该版程序无法解密此文件。n请使用该程序的最新版。)/ 显示等待光标wnd.ShowWaitCursor();/ 解密DES密钥串int len = rsa.Decrypt(mcshead.DesKey,mcshead.DesKey,mcshead.KeyLen,RsaKeyStr,RsaModStr); / 进行DES解密 FILE_CHECK( des.Decrypt(fh_out,fh_in,mcshead.DesKey),OutFile)return true;3.3.4 文件操作模块的实现a) 模块初始化文件操作模块主要是实现文件的存储与文件的打开功能,在实现过程中调用了CWindow类中的相关函数,实现了对文件的操作。在初始化定义中为了实现文件操作定义了输入输出文件句柄:HFILEfh_out,fh_in;初始化在构造函数中二者的初值均为0。需要说明的是HFILE是Hadoop的二进制格式文件,用该类型定义的文件句柄有效的减少了内存的消耗。b) 功能函数定义 打开输入输出文件函数的实现首先判断输入文件与输出文件是否有联系,若没有联系则提示出错:CHECK_MSG( OutFile & InFile & strcmp(OutFile,InFile), 错误:无输入输出,或输入输出相同! )CHECK_MSG( (fh_in=_lopen(InFile,OF_READ)!=-1, 错误:无法打开输入文件! )其次调用CWindow类中的IsFileExist函数检测文件是否存在,若文件存在才继续下面的操作,因此这里需要用一个条件语句进行判断:if( CWindow:IsFileExist(OutFile) ) 然后调用文件输入句柄进行文件的操作,实现函数的功能。_lclose(fh_in);returnfalse; 关闭输入输出文件函数的实现关闭输入输出文件函数主要也是利用文件的输入输出句柄来实现功能,用条件语句对文件句柄调用进行判断:if( fh_in )_lclose(fh_in);if( fh_out )_lclose(fh_out); 错误处理函数的实现错误处理函数的实现主要调用了DeleteFile函数删除OutFile的文件:if(OutFile)DeleteFile(OutFile);3.4 集成测试3.4.1 系统功能界面系统主界面如图3.4.1所示图3.4.1 文件加密系统主界面3.4.2 RSA密钥串的生成(1) 大素数P的产生测试结果如图3.4.2(1)所示:图3.4.2(1)素数P的测试结果(2) 大素数Q的产生测试结果如图3.4.2(2)所示:图3.4.2(2)素数q的测试结果(3) 密钥串的产生测试结果如图3.4.2(3)所示:图3.4.2(3)密钥对的测试结果3.4.3 加密测试我们先将明文文件导入系统,然后单击“打开文件”按钮查看明文文件,测试结果如图3.4.3(1)所示: 图3.4.3(1) 加密测试结果(1) 导入文件后,再将刚才产生的RSA密钥串导入,然后单击加密按钮进行文件加密,测试结果如图3.4.3(2)所示: 图3.4.3(2) 加密测试结果(2) 加密成功在指定路径下生成密文文件,打开密文文件可以查看加密的结果,如图3.4.3(3)所示: 图3.4.3(3) 加密结果3.4.4 解密测试将加密后的文件导入,再将刚才生成的RSA密钥串导入,单击“解密”按钮,进行文件解密。需要说明的是我们这里在加密时候用的是公钥e,而解密时用的是私钥d,因此我们的加密解密符合实际情况。测试结果如图3.4.4所示:图3.4.4(1) 解密结果测试(1) 解密后在指定路径下生成解密后的文件,打开文件查看是否与原文件一致,测试结果如图3.4.4(2)所示: 图3.4.4(2) 解密结果测试(2)第四章 密码算法的应用实践4.1 基于PGP软件的加密实验PGP(Pretty Good Privacy),是一个基于RSA公匙加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。它采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。4.1.1 导出并分发你的公钥启动PGPkeys,在这里你将看到你密钥的一些基本信息,如:Validity(有效性,PGP系统检查是否符合要求,如符合,就显示为绿色)、Trust(信任度)、Size(大小)、Description(描述)、Key ID(密钥ID)、Creation(创建时间)、Expiration(到期时间)等(如果没有那这么多信息,使用菜单组里的“VIEW(查看)”,并选中里面的全部选项),如图4.1.1所示:图4.1.1 PGPKeys需要注意的是,这里的用户其实是以一个“密钥对”形式存在的,也就是说其中包含了一个公钥和一个私钥。现在我们要做的就是要从这个“密钥对”内导出包含的公钥。单击显示有你刚才创建的用户那里,再在上面点右键,选“Export(导出)”,在出现的保存对话框中,确认是只选中了“Include 6.0 Extensions”(包含6.0公钥),然后选择一个目录,再点“保存”按钮,即可导出你的公钥,扩展名为.asc导出后,就可以将此公钥放在你的网站上,或者发给你的朋友,告诉他们以后给你发邮件或者重要文件的时候,通过PGP使用此公钥加密后再发给你,这样做一是能防止被人窃取后阅读而看到一些个人隐私或者商业机密的东西,二是能防止病毒邮件,一旦看到没有用PGP加密过的文件,或者是无法用私钥解密的文件或邮件,就能更有针对性的操作了,比如删除或者杀毒。虽然比以前的文件发送方式和邮件阅读方式麻烦一点,但是却能更安全的保护我们的文件。4.1.2 使用公钥加密文件不用开启PGPkeys,直接在你需要加密的文件上点右键,会看到一个叫PGP的菜单组,进入该菜单组,选Encrypt(加密),将出现PGPshell Key Selection Dialog(PGP外壳密钥选择对话框),如图4.1.2(1)所示: 图4.1.2(1) PGP密钥选择文本输出:解密后以文本形式输出。 输入文本:选择此项,解密时将以另存为文本输入方式进行加密。 粉碎原件:加密后粉碎掉原来的文件,不可恢复。 常规加密:输入密码后进行常规加密,有点局限性。 “自解密文档”:继承于“常规加密”,此方式也经常使用到,通常加密目录下的所有文件。 在这里你可以选择一个或者多个公钥,上面的窗口是备选的公钥,下面的是准备使用的公钥,你想要使用备选窗里的哪个公钥进行加密操作,就使用双击哪个,该公钥就会从备选窗口转到准备使用窗口,已经在准备使用窗内的,如果你不想使用它,也通过双击的方法,使其转到备选窗。选择好后,点“确定”按钮,经过PGP的短暂处理,会在你想要加密的那个文件的同一目录生成一个格式为:你加密的文件名.pgp的文件,这个文件你就可以用来发送了,记得,你刚才使用哪个公钥加密的,就只能发给该公钥所有人,别人无法解密。只有该公钥所有人才有解密的私钥。如果要加密文本文件,如.txt,并且想要将加密后的内容作为论坛的帖子发布,或者要作邮件内容发布,那么,就在刚才选择公钥的窗口,选中左下脚的“Text Output”(文本输出),这样创建的加密文件将是这样的格式:你加密的文件名.asc你用文本编辑器打开的时候看到就不是没有规律的乱码了,而是很有序的格式。将“测试一下”这几个字加密后,如图4.1.2(2): 图4.1.2(2) 加密测试PGP还支持创建自解密文档,只需要在刚才选择公钥的对话框中选中“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论