目前分组密码所采用的整体结构可分为Feistel结构(例如CAST—256、DEAL、DFC、E2等)、SP网络(例如Safer+、Serpent等)及其他密码结构(例如Frog和HPC)。加解密相似是Feistel型密码的一个实现优点,但它在密码的扩散似乎有些慢,例如需要两轮才能改变输入的每一个比特。SP的网络结构非常清晰,S一般被称为混淆层,主要起混淆作用。P一般被称为扩散层,主要起扩散作用。在明确S和P的某些密码指标后,设计者能估计SP型密码抵抗差分密码分析和线性密码分析的能力。SP网络和Feistel网络相比,可以得到更快速的扩散,但是SP密码的加/解密通常不相似。 paper51.com
目前对分组密码安全的讨论主要包括差分密码分析、线性密码分析和强力攻击等。从理论上讲,差分密码分析和线性密码分析是目前攻击分组密码的最有效的方法,而从实际上说,强力攻击是攻击分组密码最可靠的方法。到目前为止,已有大量文献讨论各种分组密码的安全性,同时推出了譬如截断差分分析、非线性密码分析及插值攻击等多种分析方法。自AES候选算法公布以后,国内外许多专家学者都致力于候选算法的安全分析,预计将会推出一些新的攻击方法,这无疑将进一步推动分组密码的发展。 http://www.paper51.com 1.3 本课题研究的意义 paper51.com 标准化是工业社会的一个基本概念,它意味着生产规模化、降低成本、方便维修和更换为了实现非相关团体之间的保密通信,加密体制的标准化是必要的。分组密码由于其固有特点,已经成为标准化进程的首选体制。 内容来自论文无忧网 www.paper51.com
信息安全的最大特点之一是自主性,因而其核心技术——密码学的研究与开发应当是一种本土性的科学。对于有些产品,可以通过外方引进来解决由于技术落后而带来的问题。然而对于安全产品,除非能完全确信它在硬件和软件上没有陷门,否则,贸然使用可能带来不可预测的后果。而要做到软硬件上的确认通常是十分困难的。因此,最明智的方法是依靠自己的力量并汲取现有的先进经验进行研究、设计和开发。 paper51.com 为了维护通信安全、打击犯罪,1993年4月,美国政府宣布了一项新的建议,该建议倡导联邦政府和工业界使用新的具有密钥托管功能的联邦加密标准。该建议称为托管加密标准(escrowed encrytion standard,EES),又称C1ipper建议。其目的是为用户提供更好的安全通信方式,同时允许政府机构在必要情况下进行监听。EES系统中嵌入了分组加密算法Sk -ipjack,尽管目前对该系统和算法有许多争议,但从维护国家通信安全的角度,这项建议是有积极意义的。 paper51.com 在区域通信系统中,用户较多,他们的地位、作用都不相同,所流通的信息的重要性也不可能完全相同,因此他们要求得到的安全保护等级也不应该相同。由此可见,研究多安全级密码算法非常必要。迭代分组密码(所谓选代分组密码就是以迭代一个简单的轮函数为基础的密码,即通过选择某个较简单的密码变换,在密钥控制下以迭代方式多次利用它进行加密变换,例如Feistel型密码就是一种选代密码,是分组密码的典型代表,其数学思想简单而灵巧。特别是在相同的轮函数之下,迭代次数的不同即代表了安全强度的不同级别。 http://www.paper51.com 在Internet/Intranet中随着通信量和业务种类的增加,对安全认证和保密业务的需求日益迫切。比如,PGP(Pretty Good Privacy)就是一种广泛应用于Internet中E-mail系统的一种安全技术方案,它也可以用于其他网络中。PGP的安全业务包括机密性、认证性、不可抵赖性等,其中的机密性就是利用分组密码算法IDEA来保证的。另外,分组密码的工作模式可提供一些人们所需要的其他密码技术,比如流密码技术和杂凑技术等。 paper51.com
1.4 本课题的研究方法 http://www.paper51.com 研究相关资料,理解Misty1算法的原理,并参考学习使用其他编程语言编写的基于此算法的加密软件的代码。深入学习Java编程语言,熟悉其编写程序的流程。然后尝试用Java来实现Misty1算法,能对数据进行加密和解密。对程序进行测试,对测试结果进行分析研究,进而对程序进行改进,对关键算法代码进行尽可能的优化,最终得到一个在windows运行的可以用指定密钥对文件进行MISTY1加密并可解密的完整应用程序。 内容来自www.paper51.com
2 Misty1算法描述 内容来自论文无忧网 www.paper51.com MISTY1算法是用128位密钥对64位数据进行不确定轮回的加密。它在设计时就采用了经证实可以抵抗密码微分分析和线形分析的安全理论,而且它实现了在硬件环境和软件环境下都比较高的加密速度。算法可以分为两部分,一部分是密钥的产生部分,另一部分是数据随机化部分。密钥产生部分根据128位的输入密钥,产生128位的扩展密钥。数据随机化部分输入64位的数据进行混合,也就是所谓的加密。 http://www.paper51.com 2.1 秘钥产生部分 内容来自www.paper51.com
K为输入密钥,K’为扩展密钥,K和K’都是128位,扩展密钥是由函数FI从K,1,... K,8中产生,并存储在K,9,..., K,16中。Ki代表K的一个元素,1≤i≤8,每个的长度为16位;然后Ki被认为作输入到FI,Ki+1作为FI模的密钥。FI模的输出是16位的K,i,1≤i≤8,K9=K1(图2-1) 内容来自论文无忧网 www.paper51.com 内容来自www.paper51.com 图2-1 密钥产生 copyright paper51.com K=K1‖K2‖K3‖K4‖K5‖K6‖K7‖K8 内容来自www.paper51.com for i=1 to 8 do 内容来自www.paper51.com K,i=FI(Ki,Ki+1) copyright paper51.com
K,= K,1‖K,2‖K,3‖K,4‖K,5‖K,6‖K,7‖K,8 内容来自www.paper51.com 2.2 数据随机化部分 内容来自论文无忧网 www.paper51.com 数据随机化部分使用了两种函数,FO和FL,函数FO调用函数FI。密钥扩展部分也使用函数FI。FI函数使用两个S盒,S7和S9。 copyright paper51.com 2.3 函数描述2.3.1 FI函数 http://www.paper51.com
FI函数将16位输入分为两部分L0和R0(图2-2) 内容来自www.paper51.com
paper51.com 图2-2 FI函数 内容来自www.paper51.com FI的输入为: 内容来自www.paper51.com X16= L0‖R0 内容来自论文无忧网 www.paper51.com KIij=KIijL‖KIijR 内容来自论文无忧网 www.paper51.com FI则定义为: 内容来自www.paper51.com R1=S9[L0]∧(00b‖R0) 内容来自论文无忧网 www.paper51.com L1=R0 内容来自www.paper51.com
R2=S7[L1]∧(truncate(R1))KIijL paper51.com R3=S9[L2]∧(00b‖R2) copyright paper51.com L3=R2 http://www.paper51.com Y16=L3‖R3 内容来自论文无忧网 www.paper51.com |