IDEA加密算法在数据加密中的应用电子信息与通信工程专业综合实践.doc_第1页
IDEA加密算法在数据加密中的应用电子信息与通信工程专业综合实践.doc_第2页
IDEA加密算法在数据加密中的应用电子信息与通信工程专业综合实践.doc_第3页
IDEA加密算法在数据加密中的应用电子信息与通信工程专业综合实践.doc_第4页
IDEA加密算法在数据加密中的应用电子信息与通信工程专业综合实践.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

综合实践1实践项目名称:IDEA算法在数据加密中的应用班 级:通信工程 班姓 名: 学 号: 指导老师: 完成时间:2010-06-09摘要 摘要:通常采用加密技术来完成计算机信息资源的有效保护。1DEA算法是一种数据块加密算法,具有一流的可靠性和抗攻击能力。首先对IDEA算法进行了深入的分析和研究,并在此基础上阐述了该算法的实现原理和过程。尤其对此算法的加密过程进行了详细地描述,然后给出了实现算法的用VC语言编写的关键性源代码。关键词:加密算法 ;IDEA ;数据加密;4目 录第1章 绪论11.1 课题背景11.2 密码技术发展现状11.3本文研究内容2第2章 密码技术42.1 密码技术42.2 常见加密算法52.3 IDEA算法概述6第3章 C+基础知识731 面向对象程序设计基础知识73.2 C+基本程序结构:82.3本章小结9第4章 IDEA算法原理于实现104.1IDEA算法原理104.2 IDEA算法的编程实现124.3 本章小结16结 论17参考文献18综合实践1评价表19第1章 绪论 随着计算机网络技术的迅速发展,网上数据通信越来越频繁,由于Internet网络协议本身存在着重要的安全问题,使网上的信息传输存在巨大的安全风险问题也越来越突出。为了保证数据在网上传输时不被窃取或篡改,就有必要对数据进行加密,以保证数据的安全传输。信息加密技术作为信息安全最有效的方法之一,可通过不同的加密算法来实现,而加密算法的选取直接影响信息的安全程度。当前国际上有许多加密算法,其中DES (Data Encrypfion Standard)是发明最早的用得最广泛的分组对称加密算法,但历史上曾利用穷举攻击破解过DES 密钥,1999年,电子边境基金会EFF用22小时完成了破解工作,使DES 算法受到了严重打击,使它的安全性受到严重威胁。因为JA、,A 语言的安全性和网络处理能力较强,本文主要介绍使用IDEA (Intemation Data EncryptionAlgorithm )数据加密算法在Java环境下实现数据的安全传输。1.1 课题背景随着计算机的广泛应用和信息产业的发展,信息的安全越来越受到重视。信息安全主要是由安全协议和密码算法组成,其中密码算法是信息安全的基础和核心。所以研究和分析当今流行的密码算法对我国的信息安全有很大的现实意义。而分组加密算法是现代密码体制发展的两个发展方向之一,它具有速度快、易于标准化和便于软硬件实现等特点,因此在计算机通信和信息系统安全领域中得到了广泛的应用。1.2 密码技术发展现状密码理论和技术在信息系统的安全方面起着关键的作用。互联网的发展推动了现代密码技术的进一步发展。密码技术主要包括基于数学的密码技术和非数学的密码技术。基于数学的密码技术主要包括公钥密码、分组密码、流密码、数字签名、密钥管理、身份鉴别、消息认证、密钥共享、PKI技术等加密和认证理论及算法。非数学的密码技术主要包括量子密码、DNA密码、数字隐写技术等。现在世界上的一些大国都非常重视密码学研究。在美国国家安全局(NSA)和国家标准技术研究所(NIST)的共同推动下,20世纪70年代以来陆续建立了国家数据加密标准(D E S)和数字签名标准(DSS),去年又确定了高级加密标准算法(AES)以作为21世纪的应用基础。美国政府为了适应信息社会发展的需要,加强政府司法机构的社会管理执法的高技术支撑能力和情报部门的对抗信息战的能力,正通过NIST提出并推动着密钥托管、密钥恢复、证书授权认证、公开密钥基础设施、公开密钥管理基础设施等一系列技术手段、技术标准和相关理论基础的研究。NESSIE是由一个欧洲的信息社会委员会(IST)所提出的一个计划,是一个为期三年的计划,开始于2000年1月,这个计划的主要目的是希望能够通过一个透明、公开的程序,来选出一些经由公开召集方式所提出的密码学的算法。这些算法包括了分组密码、流密码、Hash 函数、消息认证码(MAC)、数字签名法、公钥加密算法。NESSIE 这个计划现在尚未结束,还在进行中。该计划将发展一种密码体制评估方法(包括安全性和性能评价)和支持评估的一个软件工具箱。该计划的另一个目标就是广泛传播这些工程成果并且建立一个使这些成果趋于一致的论坛。还有一个目标就是保持欧洲工业界在密码学研究领域的领先地位。国际上对在分组密码和序列密码设计和分析的理论和技术已经比较成熟。除了算法的设计之外,美国、欧洲、日本发达国家在加密算法的标准化方面做了大量的工作。我们国内的学者也设计了很多对称加密算法,但是目前的问题是,国内还没有一个统一的加密标准。可喜的是,目前有关部门正在组织对加密标准的讨论和征集。公开密钥密码理论的研究内容主要包括单向陷门函数的构造与分析、有限自动机理论及其密码分析、椭圆曲线理论以及公开密钥基础设施等。公钥密码主要是用来数字签名和密钥分配。数字签名和密钥分配在很多网络应用中必不可少。并且随着不同应用的需要,签名的种类也很多。密钥分配更是网络安全协议的主要内容,安全协议的核心在于密钥管理。目前很多国家都已经制定了自己的公钥加密标准和数字签名法。例如美国、法国、韩国、德国、新加坡、台湾等国家和地区都已经制定了自己的电子签名法。电子签名法是网络交易中支付和结算顺利进行的根本保证,因此尽快制定我国的电子签名法非常重要。目前我国的电子签名法正在有关部门的主持下进行讨论。目前,PKI技术是密码技术应用的新热点,我国也成立了专门的PKI论坛,并且在亚洲的PKI论坛上非常活跃。在国际上,Baltimore、Entrust、VerySign是三大PKI技术供应商,有非常成熟的PKI产品。基于PKI的认证已经广泛应用于电子商务的交易中,典型的安全标准是SSL、SET协议。在国内有许多安全公司都能提供自主知识产权的PKI产品。1.3 本文研究内容IDEA算法是在DES算法的基础上发展出来的,是一种使用128位密钥以64位分组为单位加密数据的分组密码算法。该文主要对IDEA算法思想进行深入的分析和研究并在此基础上阐述了改算法的实现原理和过程尤其对该算法的密钥扩展和加密过程进行了详细的描述。并在C+环境下设计、实现IDEA对称加解密算法。 第2章 密码技术2.1 密码技术 密码技术作为主动的安全技术,是提高数据信息的保密性,防止秘密数据被破析的主要技术手段。一般采取两种加密形式:对称密钥加密体系和不对称密钥加密体系。算法的选择要结合具体应用环境和系统,合理分配密钥,提高加密效率。基于这两种加密形式,派生出许多安全技术。2.1.1 对称密钥加密(保密密钥加密技术) 在对称密钥加密方法中,对信息的加密和解密都使用相同的密钥,通信双方都采用相同的加密算法并交换共享的专用密钥。通常使用的加密算法比较简便、高效,密钥简短,破译极其困难。但是传送和保管密钥是一个严峻的问题,通信双方之间要确保密钥安全交换,因而在使用对称加密技术进行数据加密的系统中还必须强化密钥管理体系。比较著名的对称加密密码算法有:美国的DES及其各种变形,如Trip le DES, GDES,NewD2ES和DES的前身Lucifer;欧洲的IDEA;日本的FEAL2N,LOKI291, Skip jack, RC4, RC5以及以代换密码和转轮密码为代表的古典密码等。在众多的常规密码中影响最大的是DES密码。2.1.2 非对称密钥加密(公开密钥加密技术) 在非对称加密体系(即公开密钥密码体系)中,密钥被分解为一对(即一把公开密钥或加密密钥和一把专用密钥或解密密钥) 。这对密钥中的任何一把都可作为公开密钥(加密密钥)通过非保密方式向他人公开,而另一把则作为专用密钥(解密密钥) 。公开密钥用于对机密信息的加密,专用密钥则用于对加密信息的解密。专用密钥只能由生成密钥对的通信方掌握,公开密钥可广泛发布,但它只对应于生成的该密钥的通信方。非对称加密的代表算法有RSA、DSA、Diffie2Hellman、背包体制、POHL IG2Hellman算法和Rabin算法,还可以在有限域上的椭圆曲线上建立RSA, EIGamal等算法。使用非对称加密方法的主要问题是运算速度较慢。2.1.3 综合加密技术(混合密码体制) 非对称密钥密码体制与传统的对称密钥密码体制相比,有其不可取代的优势。然而它的运算量却十分浩大。因此,在网络上全都用非对称密钥密码体制来传送机密信息是没有必要的,也是不现实的。在传送机密信息的网络用户双方,最好的办法是使用某个对称密钥密码体制(如DES)来加密需传递的机要信息,而同时使用RSA 等非对称密钥密码体制来传送DES的密钥。这样就可以综合发挥DES算法的高速简便性和RSA算法的方便和安全性,形成综合加密技术。2.2 常见加密算法常见用于保证安全的加密或编码算法如下:1、常用密钥算法 密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高; RC2和 RC4:用变长密钥对大量数据进行加密,比 DES 快; RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准); AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法; BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快; 其它算法,如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。 2、单向散列算法 单向散列函数一般用于产生消息摘要,密钥加密等,常见的有: MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值; SHA(Secure Hash Algorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值; MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。 CRC (Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC 并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。 3、其它数据算法 其它数据算法包括一些常用编码算法及其与明文(ASCII、Unicode 等)转换等,如 Base 64、Quoted Printable、EBCDIC 等。2.3 IDEA算法概述 国际数据加密算法IDEA是International Data Encryption Algorithm 的缩写,是1 9 9 0年由瑞士联邦技术学院来学嘉xJLai和MasseY提出的建议标准算法,称作PES(Proposed Encryption Standard)。Lai和MasseY在1 99 2年进行了改进,强化了抗差分分析的能力,改称为I D E A。它也是对6 4bit大小的数据块加密的分组加密算法,密钥长度为1 2 8位,它基于“相异代数群上的混合运算” 设计思想,算法用硬件和软件实现都很容易,且比DE S在实现上快的多。IDEA 自问世以来, 已经经历了大量的详细审查,对密码分析具有很强的抵抗能力,被认为是目前已公开的分组密码算法中较为优秀的一个,并在多种商业产品中被使用。例如I D E A 被P G P(Pretty Good Privacy)采用,仅此一点就可以使这个算法得到广泛使用。I DEA 算法是一个分组长度为64位的分组密码算法,密钥长度为1 2 8位,同一个算法既可用于加密,又可用于解密。假定穷举法攻击有效的话,那么即使设计一种每秒种可以试验1 0亿个密钥的专用芯片,并将1 0亿片这样的芯片用于此项工作,仍需l 0 l 3年才能解决问题。因此,就现在来看应当说IDEA是非常安全的。第3章 C+基础知识 C+语言是目前广泛使用的程序设计语言之一,因其特有的优势在计算机应用领域占有重要一席。C+语言是在C语言的基础上发展起来的。它包括了C语言的全部语言成分,同时又添加了尤为重要的面向对象的完全支持。31 面向对象程序设计基础知识3.1.1程序语言 本身实际上是对一个现实问题的描述;其发展的根本问题在于如何更加接近人的自然思维。(机器汇编高级语言;面向过程面向对象)。3.1.2面向对象 一种软件方法(方法学),而不仅仅限于程序设计语言,更重要的是如何看待世界。基本思想:从现实世界中客观存在的事务(对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。3.1.3面向对象程序设计语言定义:机器实现的定义。数据和操作在一起,内存块可以复制副本对象间通过函数调用实现通信;对象的继承关键要素:抽象:忽略事物的非本质特性,只注意与当前目标有关的本质特征,从而 找出事物的共性;把具有共同性质的事物划为一类,得到一个抽象的概念。封装:将一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体,也就是对象。(意义:对象集中而完整的描述并对应一个具体的事物,封装的信息隐蔽作用反映了事物的相对独立性;减少“波动效应”。副作用:增加了许多只负责读写的服务。)继承:特殊类的对象拥有其一般类的对象的全部属性与服务,称作特殊类对一般类的继承。多态:一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类 型或表现出不同的行为。(目前不要求OOPL支持)。3.1.4C+语言的来龙去脉 对C语言进行面向对象的扩展。一种混合型OOPL。C语言的一个超集,语法基本使用C的语法,引入了新的概念支持OO的特性。3.2 C+基本程序结构:2.2.1讨论C+对C的一些改进风格(1) 输入输出:cin和cout代替printf, iostream.h代替stdio.h,更加方便;(2) 注释:“/”的引入;(3) 使用const(代替无参数宏)和内联函数(代替有参数宏)代替宏定义;(4) 函数原型(更强的编译时刻的检查)和缺省参数(方便函数调用、减少错误);(5) 新的动态内存分配函数new/delete:使用上更加简单;(6) 新的换行符 endl。2.2.2内联函数inline:1) 不是用函数调用的机制,编译遇到时简单的替换而已,省去了函数调用的额外开销2) 使用宏定义的副作用:# define f (x) (x+1); 在后面使用 f(1)展开成:(x) (x+1) (1),报编译错,但容易发现参数中有表达式:# define floor(x,b) x=b?0:1,调用:if(floor(a&0x0f,0x07) / .展开成:if (a&0x0f0x07?0:1). ;&优先级低于,产生错误。难发现,好解决加括号#define band(x) (x)5 & (x)10) ? (x) : 0)下面的执行结果如何?for(int i = 4; i 11; i+) int a = i;out a = a endl t;out band(+a)= band(+a) endl;out t a = a endl; 展开后会影响到a的值(a)。这一点和函数调用不同(函数一般传值)。宏没有作用域的问题2.2.3引用:(1) 使引用和原来定义的变量一样无区别的操作内存的某一空间。(2) 最主要用途:建立函数参数传递的引用传递方式,不必使用指针;另一个用途:返回引用的函数,用于赋值运算符的左边。(3) 两种情况下引用的是 是临时变量:对常量(或const修饰的变量)的引用;引用类型和初始化时使用的变量类型不一致。(4) 定义返回引用了函数时,不要返回局部变量的引用。编译指令:不是C+的一部分,提供给编译器使用1) 嵌入指令:# include / # include “filename”;2) 宏定义:# define 宏名 替换正文;3) 条件编译指令:# if, # else, # endif, #defined ;2.3本章小结C+程序设计语言作为一种面向对象编程语言,它被编程人员广范使用。他继承了C语言的各种优点,又支持现阶段最为流行的面向对象编程思想,以用于很多领域的程序编写及算法实现。第4章 IDEA算法原理于实现4.1IDEA算法原理4.1.1 IDEA算法简介 IDEA是一种数据块加密算法,加密的数据块为64 b,密钥长度是128 b。该算法在硬件和软件上均可高速进行加解密,而且加密过程与解密过程相同,仅加密密钥与解密密钥不同,他设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥,被认为是目前世界公开的最好最安全的加密算法。虽然密码分析者能对轮数减少的变形做一些分析工作,这么长的密钥在今后若干年内应该是安全的。IDEA算法既用混乱又用扩散,他的设计原则是一种来自于不同代数群的混合运算,且这个代数群进行的运算,无论用硬件还是软件都易于实现:算法输入的64位数据被分成4个16位子分组作为第一轮的输入,总共有8轮迭代。在每一轮中,相互间进行运算同时也与6个16位的子密钥进行运算(每轮均不同),最后还与4个16位的子密钥进行输出变换,产生输出,其中共52个16位的子密钥参与运算。整个算法包括3部分:(1)子密钥的产生。输入:128 b密钥;输出:52个16 b的子密钥。(2)加密过程。输入:52个子密钥和64 b数据;输出:64 b数据。(3)解密过程。IDEA算法的加密过程与解密过程的子密钥不相同,且二者是一一对应的。4.1.2 IDEA子密钥的生成IDEA共需要52个子密钥,每一个有16 b,由128 b密钥生成。自密钥将128 b分成8组,每组16 b,得到,;将128b循环左移25位后做同样的分组得到子密钥,;再将这128b循环左移25位后做同样的分组得到子密钥,;以此类推,一直生成所有的子密钥。4.1.3 IDEA算法加密过程该算法中密钥为128 b,明文分组长度是64 b。64 b被分为4个16 b的子块:X1,X2,X3,X4作为第一轮的输入,每一轮中,将4个输入子块与6个16 b子密钥分别做模的加法、模+1的乘法、异或操作,得到4个输出作为下一轮的输入。如此共进行8轮,最后用4个子密钥作输出变换。其整体结构如图4-1所示。图4-1 加密结构图每一轮的迭代运算步骤如下:(1)x1和第1个子密钥块做乘法运算;(2)x2和第2个子密钥块做加法运算;(3)x3和第3个子密钥块做加法运算;(4)x4和第4个子密钥块做乘法运算;(5)步骤(1)和步骤(3)的结果做异或运算;(6)步骤(2)和步骤(4)的结果做异或运算;(7)步骤(5)的结果与其本身做乘法运算;(8)步骤(6)和步骤(7)的结果做加法运算;(9)步骤(8)和步骤(6)的结果做乘法运算;(10)步骤(7)和步骤(9)的结果做加法运算;(11)步骤(3)和步骤(9)的结果做异或运算;(12)步骤(2)和步骤(10)的结果做异或运算;(13)步骤(4)和步骤(10)的结果做异或运算。结果的输出为步骤(10),步骤(11),步骤(12),步骤(13)的运算结果。第8轮结束后,最后输出变换有四步:(1)x1和第1个子密钥块做乘法运算;(2)x2和第2个子密钥块做加法运算;(3)X3和第3个子密钥块做加法运算;(4)x4和第4个子密钥块做乘法运算。4.1.4 IDEA算法解密过程 IDEA算法在硬软件上均可高速进行加解密,其中的加解密子密钥关系如图4-2所示:图4-2 加解密子密钥关系图其中:一表示模的加法逆元,即-+0 mod ,表示模+l的乘法逆元,即-0 mod +l。4.2 IDEA算法的编程实现 编程实现的加解密思路是:先读入要加密的文件,统计实际文件的长度,依次分块读出数据,从文件中读出的最后一批数据,长度可能会等于o,所以要先判断,若不为0定有8 B以上的空间,将文件的长度存于最后8字节中,加解密完后将明文写入文件中。3.2.1 子密钥的生成将128 b分成8组,再循环左移25位后做16 b分组,依次类推,直到生成所需的52个子密钥。其关键代码如下:INT32 idea makekey( ULoNG32 *inkey,ULoNGl6 *outkey) *子密钥的生成*ULONG32 i,j,k;ULONGl6 Pkey一(ULONGl6)inkey;for(i=O;i6;i+)tki3;for(jo;j8;j+) *生成8组密钥*toutkeyk+j=Pkeyj;)key leftmove(inkey); *128位密钥左环移25位*for(i=O;i4;i+)outkey48+i一Pkeyi;)return SUCCESS:INT32 key leftmoVe(UL()NG32*inkey)*密钥左环移25位*ULoNG32 itmpfirst=O,itmpO;ULONG32 i;inkeyo=(inkeyo7);*取低25位,因为前面已经做了环移,原始的低7位已经移到了高位,保存*itmpfirstinkeyooxlffffff;inkeyo一oxfeoooooo; *低25位清o*for(il;i4;i+)inkeyi=(inkey7);itmpinkeyioxlf“fff;inkeyi1J=itmp;inkeyi&一oxfeoooooo; *低25位清o*)inkeyi一1I=itmpfirst;*把最高25位移到最低25位*return SUCCESS:4.2.2 实现加密的代码 将明文4个子块与6个子密钥分别做模的加法、模+1的乘法、异或操作,得到4个输出作为下一轮的输入,进行8轮迭代,再将4个子密钥做输出变换。其源代码如下:INT32 idea enc(ULONGl6*data,ULONGl6*outkey)*加密*(ULONG32 i:UL()NGl6 tmp;if(NULL一=data NULL一一outkey)return FAIL:)for(io;i48;i+一6) *8轮变换*(handle data(data,outkeyi);*轮变换函数*交换中间两个*tmpdata1;data1=data2;data2=tmp;)tmpdata1; *最后一轮不交换*data1一data2;data2一tmp;datao=MUL(datao,outkey48);*(a*b)*data1+=outkey49;data2+=outkey50;data3=MUL(data3,outkey51);return SUCCESS;4.2.3 解密过程的实现解密过程是加密过程的逆,只是子密钥不同而已,其实现的源代码如下:INT32 idea dec(ULoNGl 6*data,ULONGl 6*outkey)ULONG32 i:ULONGl6 tmp;if(NULL=data NULL一=outkey)return FAIL;)for(iO;i48;i+=6)handle data(data,outkeyi);*交换中间两个*tmp=data1;data1=data2;data2一tmp;)tmpdata1; *最后一轮不交换*data1=data2;data2=tmp;datao一MuL(datao,outkey48);data1+=outkey49;data2+=outkey50;data3=MuL(data3,outkey51);ret

温馨提示

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

评论

0/150

提交评论