对称式加密技术和非对称式加密技术.docx
- 文档编号:29156302
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:23
- 大小:1.53MB
对称式加密技术和非对称式加密技术.docx
《对称式加密技术和非对称式加密技术.docx》由会员分享,可在线阅读,更多相关《对称式加密技术和非对称式加密技术.docx(23页珍藏版)》请在冰豆网上搜索。
对称式加密技术和非对称式加密技术
1、引言
信息是一种资源,也是一种财富。
在现代社会中,信息处理和通信技术日益发展,保护信息的安全,特别是保护重要信息的安全,已成为国际社会普遍关注的重大问题。
现在越来越多的软式是收费软件,比如瑞星,卡巴斯基等等。
这就需要用到序列号了。
但是现在越来越多的软件被破解,严重影响了其开发公司的经济利益,于是就需要给这个序列号加密才行。
保护知识产权,抵制盗版软件,是目前中国软件业所面临的迫切问题。
可是,尽管国家一再加大力度,打击非法软件出版物,扶持正版软件,但实际效果并不理想。
眼见着无孔不入的盗版软件对软件市场的侵害,更多的软件商选择了购买加密产品或者加密技术来保护自己的软件。
本课题的实现,可以使所使用的软件更加安全,有效的维护软件开发公司的利益,以及抑制软件的破解,打击盗版,支持正版。
验证一个软件只能允许在一台机器上面使用,如果到另外一台机器必须获取另外的新的机器激活码。
可以有效的保护软件公司的软性资产,让软性资产在用户使用的时候变成有形资产。
1.1加密的由来
加密作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。
当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。
近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。
最广为人知的编码机器是GermanEnigma机,在第二次世界大战中德国人利用它创建了加密信息。
此后,由于AlanTuring和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。
当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。
随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥就是在这个基础上产生的。
1.2加密的概念
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。
该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
1.3加密的理由
当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。
而且这种不安全性是互联网存在基础——TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。
为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。
加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。
一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。
通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是Root用户或Administrator用户,那后果将是极为严重的。
2、加密技术分析
下面介绍两种加密方法:
对称式加密技术和非对称式加密技术。
2.1对称式加密技术
2.1.1描述
对称算法(symmetricalgorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。
而在大多数的对称算法中,加密密钥和解密密钥是相同的。
所以也称这种加密算法为秘密密钥算法或单密钥算法。
它要求发送方和接收方在安全通信之前,商定一个密钥。
对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。
特点分析:
对称加密的优点在于算法实现后的效率高、速度快。
对称加密的缺点在于密钥的管理过于复杂。
如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有N个用户进行对称加密通信,如果按照上述方法,则他们要产生N(N-1)把密钥,每一个用户要记住或保留N-1把密钥,当N很大时,记住是不可能的,而保留起来又会引起密钥泄漏可能性的增加。
常用的对称加密算法有DES,DEA等。
2.1.2对称加密算法分析
对称加密算法的分类:
对称加密算法可以分成两类:
一类为序列算法(streamalgorithm):
一次只对明文中单个位(有时为字节)加密或解密运算。
另一类为分组算法(blockalgorithm):
一次明文的一组固定长度的字节加密或解密运算。
现代计算机密码算法一般采用的都是分组算法,而且一般分组的长度为64位,之所以如此是由于这个长度大到足以防止分析破译,但又小到足以方便使用。
一、DES加密算法简介(DataEncryptionStandard)
1973年5月15日,美国国家标准局(NBS)在“联邦注册”上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。
IBM提交了一个候选算法,它是IBM内部开发的,名为LUCIFER。
在美国国家安全局(NSA)的“指导”下完成了算法评估之后,在1977年7月15日,NBS采纳了LUCIFER算法的修正版作为新的数据加密标准。
原先规定使用10年,但由于新的加密标准还没有完成,所以DES算法及其的变形算法一直广泛的应用于信息加密方面。
(本文将在第四部分具体介绍DES算法及应用,并编写相应加密代码。
)
二、AES算法
DES算法是全世界最广泛使用的加密算法。
最近,就在2000年10月,它在其初期就取得的硬件方面的优势已经阻碍了其发展,作为政府加密技术的基础,它已由“高级加密标准”(AES)中包含的另一种加密算法代替了。
AES是指定的标准密码系统,未来将由政府和银行业用户使用。
AES用来实际编码数据的加密算法与以前的DES标准不同。
AES算法的标准是:
1AES应该可以公开定义。
2AES应该是对称的块密码。
3AES应该设计成密钥长度可以根据需要增加。
4AES应该可以在硬件和软件中实现。
6将根据以下要素评价符合上述要求的算法:
具有安全性(密码分析所需的努力)、计算效率、内存需求、硬件和软件可适用性、简易性、灵活性
三、IDEA加密算法
1、算法简介:
IDEA算法是InternationalDataEncryptionAlgorithmic的缩写,意为国际数据加密算法。
是由中国学者朱学嘉博士和著名密码学家JamesMassey于1990年联合提出的,当时被叫作PES(ProposedEncryptionStandard)算法,后为了加强抵抗差分密码分,经修改于1992年最后完成,并命名为IDEA算法。
2、算法的安全性分析:
安全性:
IDEA的密钥长度是128位,比DES长了2倍多。
所以如果用穷举强行攻击的话,那么,为了获得密钥需要次搜索,如果可以设计一种每秒能搜索十亿把密钥的芯片,并且采用十亿个芯片来并行处理的话,也要用上年。
而对于其他攻击方式来说,由于此算法比较的新,在设计时已经考虑到了如差分攻击等密码分析的威胁,所以还未有关于有谁发现了能比较成功的攻击IDEA方法的结果。
从这点来看,IDEA还是很安全的。
四、总结
几种算法的性能对比见表2-1
表2-1
算法
密钥长度
分组长度
循环次数
DES
56
64
16
三重DES
112、168
64
48
AES
128、192、256
128
10、12、14
IDEA
128
64
8
速度:
在200MHz的奔腾机上的对比见表2-2
表2-2
C++
DJGP(++pgcc101)
AES
30.2Mbps
68.275Mbps
DES(RSAREF)
10.6Mbps
16.7Mbps
3DES
4.4Mbps
7.3Mbps
五、安全性
1990年以来,特制的"DESCracker"的机器可在几个小时内找出一个DES密钥。
换句话说,通过测试所有可能的密钥值,此硬件可以确定用于加密信息的是哪个密钥。
假设一台一秒内可找出DES密钥的机器(如,每秒试255个密钥),如果用它来找出128-bitAES的密钥,大约需要149万亿年。
2.2非对称加密技术
2.2.1描述
非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷被提出来的。
在公钥加密系统中,加密和解密是相对独立的,加密和解密会使用两把不同的密钥,加密密钥向公众公开,谁都可以使用,解密密钥只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,故其可称为公钥密码体制。
如果一个人选择并公布了他的公钥,另外任何人都可以用这一公钥来加密传送给那个人的消息。
私钥是秘密保存的,只有私钥的所有者才能利用私钥对密文进行解密。
2.2.2目的和意义
(1)解决大规模网络应用中密钥的分发和管理问题
采用分组密码、序列密码等对称密码体制时,加解密双方所用的密钥都是秘密的,而且需要定期更换,新的密钥总是要通过某种秘密渠道分配给使用方,在传递的过程中,稍有不慎,就容易泄露。
公钥密码加密密钥通常是公开的,而解密密钥是秘密的,由用户自己保存,不需要往返交换和传递,大大减少了密钥泄露的危险性。
同时,在网络通信中使用对称密码体制时,网络内任何两个用户都需要使用互不相同的密钥,只有这样,才能保证不被第三方窃听,因而N个用户就要使用N(N–1)/2个密钥。
采用公钥密码体制,N个用户只需要产生N对密钥。
由此可见,只有公钥密码才能方便、可靠地解决大规模网络应用中密钥的分发和管理问题。
(2)实现网络中的数字签名机制
对称密钥技术由于其自身的局限性,无法提供网络中的数字签名。
这是因为数字签名是网络中表征人或机构的真实性的重要手段,数字签名的数据需要有惟一性、私有性,而对称密钥技术中的密钥至少需要在交互双方之间共享,因此,不满足惟一性、私有性,无法用做网络中的数字签名。
相比之下,公钥密码技术由于存在一对公钥和私钥,私钥可以表征惟一性和私有性,而且经私钥加密的数据只能用与之对应的公钥来验证,其他人无法仿冒,所以,可以用做网络中的数字签名服务。
2.2.3RSA公钥加密技术
RSA是Rivest,Shamir,Adleman提出基于数论的非对称密钥体制。
RSA是建立在大整数分解的困难上的,是一种分组密码体制。
RSA建立方法如下:
首先随机选两个大素数p,q,计算n=p•q;计算欧拉函数φ(n)=(p-1)(q-1);任选一个整数e为公开加密密钥,由e求出秘密解密密钥加密/解密:
将明文分成长度小于位的明文块m,加密过程是:
c=E(m,e)=modn解密过程是:
m=D(c,d)=modn。
一、RSA公钥密码体制的安全性分析
RSA的安全性依赖于大整数的因式分解问题。
实际上,人们推测RSA的安全性依赖于大整数的因式分解问题,但谁也没有在数学上证明从c和e计算m需要对n进行因式分解。
可以想象可能会有完全不同的方式去分析RSA。
然而,如果这种方法能让密码解析员推导出d,则它也可以用作大整数因式分解的新方法。
最难以令人置信的是,有些RSA变体已经被证明与因式分解同样困难。
甚至从RSA加密的密文中恢复出某些特定的位也与解密整个消息同样困难。
二、RSA算法工作原理
首先,找出三个数,p,q,r,其中p,q是两个相异的质数,r是与(p-1)(q-1)互质的数......p,q,r这三个数便是privatekey接著,找出m,使得rm==1mod(p-1)(q-1).....这个m一定存在,因为r与(p-1)(q-1)互质,用辗转相除法就可以得到了.....再来,计算n=pq.......m,n这两个数便是publickey编码过程是,若资料为a,将其看成是一个大整数,假设a=n的话,就将a表成s进位(s<=n,通常取s=2^t),则每一位数均小于n,然后分段编码......接下来,计算b==a^mmodn,(0<=b若p,q是相异质数,rm==1mod(p-1)(q-1),a是任意一个正整数,b==a^mmodpq,c==b^rmodpq,则c==amodpq证明的过程,会用到费马小定理,叙述如下:
m是任一质数,n是任一整数,则n^m==nmodm<证明>因为rm==1mod(p-1)(q-1),所以rm=k(p-1)(q-1)+1,其中k是整数因为在modulo中是preserve乘法的(x==ymodzandu==vmodz=>xu==yvmodz),所以c==b^r==(a^m)^r==a^(rm)==a^(k(p-1)(q-1)+1)modpq
(1)如果a不是p的倍数,也不是q的倍数时:
则a^(p-1)==1modp(费马小定理)=>a^(k(p-1)(q-1))==1modpa^(q-1)==1modq(费马小定理)=>a^(k(p-1)(q-1))==1modq所以p,q均能整除a^(k(p-1)(q-1即a^(k(p-1)(q-1))==1modpq即a^(k(p-1)(q-1))==1modpq=>c==a^(k(p-1)(q-1)+1)==amodpq
(2)如果a是p的倍数,但不是q的倍数时:
则a^(q-1)==1modq(费马小定理)=>a^(k(p-1)(q-1))==1modq=>c==a^(k(p-1)(q-1)+1)==amodq=>q|c-a因p|a=>c==a^(k(p-1)(q-1)+1)==0modp=>p|c-a所以,pq|c-a=>c==amodpq
(3)如果a是q的倍数,但不是p的倍数时,证明同上
(4)如果a同时是p和q的倍数时:
则pq|a=>c==a^(k(p-1)(q-1)+1)==0modpq=>pq|c-a=>c==amodpq
这个定理说明a经过编码为b再经过解码为c时,a==cmodn(n=pq)但我们在做编码解码时,限制0<=a 三、RSA的安全性 RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。 假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。 目前,RSA的一些变种算法已被证明等价于大数分解。 不管怎样,分解n是最显然的攻击方法。 现在,人们已能分解多个十进制位的大素数。 因此,模数n必须选大一些,因具体适用情况而定。 四、RSA的速度 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上一倍,无论是软件还是硬件实现,速度一直是RSA的缺陷。 一般来说只用于少量数据加密。 3、具体设计 本设计是用FLASH8.0开发的,开发出来后,就是以.FLA为后缀的FLASH文档,然后用FLASH导出为以.SWF为后缀的FLSH影片。 但是仍然不是以.EXE为后缀的可执行文件。 3.1设计介绍 本课程设计是用FLASH8.0开发出来的,生产以.SWF为后缀的FLASH文档,然后用MDM这个软件生成以.EXE为后缀的可执行文件。 本课程设计的目的就是: 验证一个软件只能允许在一台机器上面使用,如果到另外一台机器必须获取另外的新的机器激活码。 可以有效的保护软件公司的软性资产,让软性资产在用户使用的时候变成有型资产。 本课程设计分为2个窗口,即高强度加密后的注册页面窗口,如图3-1所示;还有获取本机注册码窗口,如图3-2所示: 3-1高强度加密后的注册页面 图3-2获取本机注册码 当点击高强度加密后的注册页面窗口里的获取机器码按钮时,在机器码这个文本栏中,就会显示本机的机器码,如图3-3所示: 图3-3显示本机注册码 当点击获取本机注册码窗口里的获取按钮时,在注册码获取的文本栏中,就会显示本机的注册码,如图3-4所示: 图3-4获取本机注册码 当把获取的注册码正确的输入到高强度加密后的注册页面窗口里的注册码文本栏里,然后点击后面的输入确认按钮,就会显示输入正确的提示,如图3-5所示: 图3-5输入正确 当在高强度加密后的注册页面窗口里的注册码文本栏里输入错误的注册码或者空注册码时,就会给出输入出错,请重新输入的提示,如图3-6所示: 图3-6出错提示 3.2设计的代码 on(release,keyPress" p=mdm.System.getHDSerial("c"); t=parseInt(p,16) vara=t b=6578716976 c=a*b varmyEncryptedData=mdm.Encryption.encryptString(c); if(c==d){ o="输入正确,允许进入" }else{o="输入错误.请重新输入"; }} on(release,keyPress" p=mdm.System.getHDSerial("c"); t=parseInt(p,16) vara=t } on(release){ a=""; b=""; c=""; d=""; o=""; 具体思路是: 先读取硬盘ID,然后把硬盘的ID转换成十六进制得到t,在把t赋值给a,然后把a做一个乘法加密,得到c,最后用调用MDM。 ENCRYPTION方法,进行混杂模式加密。 4、DES算法深入研究 4.1具体分析 4.1.1DES的工作方式 DES将消息分成64位(即16个十六进制数)一组进行加密。 DES使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是16个十六进制数(或64位)。 但是,由于某些原因(可能是因为NSA给NBS的“指引”),DES算法中每逢第8位就被忽略。 这造成密钥的实际大小变成56位。 编码系统对“强行”或“野蛮”攻击的抵抗力与其密钥空间或者系统可能有多少密钥有直接关系。 使用的位数越多转换出的密钥也越多。 密钥越多,就意味着强行攻击中计算密钥空间中可能的密钥范围所需的时间就越长。 从总长度中切除8位就会在很大程度上限制了密钥空间,这样系统就更容易受到破坏。 DES是块加密算法。 这表示它处理特定大小的纯文本块(通常是64位),然后返回相同大小的密码块。 这样,64位(每位不是0就是1)有264种可能排列,DES将生成其中的一种排列。 每个64位的块都被分成L、R左右两块,每块32位。 4.1.2DES算法使用步骤 (1)创建16个子密钥,每个长度是48位。 根据指定的顺序或“表”置换64位的密钥。 如果表中的第一项是"27",这表示原始密钥K中的第27位将变成置换后的密钥K+的第一位。 如果表的第二项是36,则这表示原始密钥中的第36位将变成置换后密钥的第二位,以此类推。 这是一个线性替换方法,它创建了一种线性排列。 置换后的密钥中只出现了原始密钥中的56位。 (2)接着,将这个密钥分成左右两半,C0和D0,每一半28位。 定义了C0和D0之后,创建16个Cn和Dn块,其中1<=n<=16。 每一对Cn和Dn块都通过使用标识“左移位”的表分别从前一对Cn-1和Dn-1形成,n=1,2,...,16,而“左移位”表说明了要对哪一位进行操作。 在所有情况下,单一左移位表示这些位轮流向左移动一个位置。 在一次左移位之后,28个位置中的这些位分别是以前的第2、3……28位。 通过将另一个置换表应用于每一个CnDn连接对,从而形成密钥Kn,1<=n<=16。 每一对有56位,而置换表只使用其中的48位,因为每逢第8位都将被忽略。 (3)编码每个64位的数据块。 64位的消息数据M有一个初始置换IP。 这将根据置换表重新排列这些位,置换表中的项按这些位的初始顺序描述了它们新的排列。 我们以前见过这种线性表结构。 使用函数f来生成一个32位的块,函数f对两个块进行操作,一个是32位的数据块,一个是48位的密钥Kn,连续迭代16次,其中1<=n<=16。 用+表示XOR加法(逐位相加,模除2)。 然后,n从1到16,计算Ln=Rn-1Rn=Ln-1+f(Rn-1,Kn)。 即在每次迭代中,我们用前一结果的右边32位,并使它们成为当前步骤中的左边32位。 对于当前步骤中的右边32位,我们用算法fXOR前一步骤中的左边32位。 要计算f,首先将每一块Rn-1从32位扩展到48位。 可以使用选择表来重复Rn-1中的一些位来完成这一操作。 这个选择表的使用就成了函数f。 因此f(Rn-1)的输入块是32位,输出块是48位。 f的输出是48位,写成8块,每块6位,这是通过根据已知表按顺序选择输入中的位来实现的。 我们已经使用选择表将Rn-1从32位扩展成48位,并将结果XOR密钥Kn。 现在有48位,或者是8组,每组6位。 每组中的6位现在将经历一次变换,该变换是算法的核心部分: 在叫做“S盒”的表中,我们将这些位当作地址使用。 每组6位在不同的S盒中表示不同的地址。 该地址中是一个4位数字,它将替换原来的6位。 最终结果是8组,每组6位变换成8组,每组4位(S盒的4位输出),总共32位。 f计算的最后阶段是对S盒输出执行置换P,以得到f的最终值。 f的形式是f=P(S1(B1)S2(B2)...S8(B8))。 置换P根据32位输入,在以上的过程中通过置换输入块中的位,生成32位输出。 解密只是加密的逆过程,使用以上相同的步骤,但要逆转应用子密钥的顺序。 DES算法是可逆的。 4.1.3算法的安全性分析 在知道一些明文和密文分组的条件下,从理论上讲很容易知道对DES进行一次穷举攻击的复杂程度: 密钥的长度是56位,所以会有2的56次方种的可能的密钥。 在1993年的一年一度的世界密码大会上,加拿大北方电信公司贝尔实验室的MichaelWiener描述了如何构造一台专用的机器破译DES,该机器利用一种每秒能搜索5000万个密钥的专用芯片。 而且此机器的扩展性很好,投入的经费越多则效率越高。 用100万美元构造的机器平均3.5小时就可以破译密码。 如果不用专用的机器,破译DES也有其他的方法。 在1994年的世界密码大会上,M.Matsui提出一种攻克DES的新方法--"线性密码分析"法。 它可使用平均个明文及其密文,在12台HP9000/735工作站上用此方法的软件实现,花费50天时间完成对DES的攻击。 如前所述DES作为加密算法的标准
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对称 加密 技术