不对称加密技术的研究汇编.docx
- 文档编号:11445023
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:16
- 大小:93.25KB
不对称加密技术的研究汇编.docx
《不对称加密技术的研究汇编.docx》由会员分享,可在线阅读,更多相关《不对称加密技术的研究汇编.docx(16页珍藏版)》请在冰豆网上搜索。
不对称加密技术的研究汇编
毕业论文
课题名称:
不对称加密技术研究
学院:
继续教育学院
学生姓名:
刘邓
学号:
016509201862
专业:
计算机网络
指导老师:
熊文军
2013年3月12日
目录
不对称加密技术的研究3
【摘要】3
【关键词】3
一.不对称加密概述4
二.不对称加密的优点与缺点6
(一).不对称加密的优点6
(二).不对称加密的缺点6
三.不对称加密的应用7
(一).RSA算法7
(二).椭圆曲线算法12
四.不对称加密技术的未来14
(一).NP完全性14
参考文献:
16
不对称加密技术的研究
【摘要】
不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。
在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。
本论文对非对称加密技术的探讨分为四大块:
1.不对称加密技术的基本原理。
2.不对称加密技术的优点与缺点。
3.不对称加密技术的应用。
4.不对称加密技术的未来。
【关键词】
不对称加密,RSA,NP完全性,素数,公钥,私钥
一.不对称加密概述
非对称加密发展
1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。
相对于”对称加密算法”这种方法也叫做“非对称加密算法”。
非对称加密的定义
与对称加密算法不同,非对称加密算法需要两个密钥:
公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密的特性
非对称加密算法实现机密信息交换的基本过程是:
甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。
经典的非对称加密算法如RSA加密算法等安全性都相当高.
非对称加密的典型应用是数字签名。
采用双钥密码系统的加密方法,在一个过程中使用两个密钥,一个用于加密,另一个用于解密,这种加密方法称为非对称加密,也称为公钥加密,因为其中一个密钥是公开的(另一个则需要保密)。
实现非对称加密的原理
基本原理
加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。
不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。
显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。
由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。
广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。
以不对称加密算法为基础的加密技术应用非常广泛。
与对称加密的不同
与对称加密算法不同,非对称加密算法需要两个密钥:
公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:
甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。
经典的非对称加密算法如RSA算法等安全性都相当高
2.不对称加密的优点与缺点
(1).不对称加密的优点
加密,理论上是不存在一个完全不会被破解的算法,因为只要你有充足的时间(这里的充足基本上在我们一辈子时间是无法达到的)是可以用穷举法来破解的。
一般说一个加密算法安全,是指在人生有限的时间内是无法破解的,(至少要大于100年)。
由于不对称加密技术例如,RSA,其基本的原理是利用了大素数寻找容易,但是想分解由两个大素数相乘的积相当困难的原理来实现的,以现有的电脑技术,只要密钥长度大于500位,那么在有生之年的时间内是无法破解的,,所以,不对称加密技术的安全性是非常值得信赖的。
(2).不对称加密的缺点
1.由于为了确保不对称加密的安全性。
一般密钥的选择都是选择一个非常大的大素数。
由于受到素数产生技术的限制,因而很难做到一次一密。
2.分组长度太大,为保证安全性,公钥至少也要600位以上,使运算代价很高。
尤其是速度较慢,较对称密码算法慢几个数量级,并且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
三.不对称加密的应用
(一).RSA算法
1.RSA算法的历史
RSA公钥加密算法是1977年由RonRivest、AdiShamirh和LenAdleman在(美国麻省理工学院)开发的。
RSA取名来自开发他们三者的名字。
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
RSA算法基于一个十分简单的数论事实:
将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
2.RSA算法定义
RSA公开密钥密码体制。
所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。
加密算法E和解密算法D也都是公开的。
虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
这就使加密的计算量很大。
为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。
对方收到信息后,用不同的密钥解密并可核对信息摘要。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
3.RSA深入解释
RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。
即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。
RSA的缺点主要有:
A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
B)分组长度太大,为保证安全性,n至少也要600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
目前,SET(SecureElectronicTransaction)协议中要求CA采用2048bits长的密钥,其他实体使用1024比特的密钥。
C)RSA密钥长度随着保密级别提高,增加很快。
下表列出了对同一安全级别所对应的密钥长度。
保密级别
对称密钥长度(bit)
RSA密钥长度(bit)
ECC密钥长度(bit)
保密年限
80
80
1024
160
2010
112
112
2048
224
2030
128
128
3072
256
2040
192
192
7680
384
2080
256
256
15360
512
2120
这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。
它易于理解和操作,也很流行。
算法的名字以发明者的名字命名:
RonRivest,AdiShamir和LeonardAdleman。
早在1973年,英国国家通信总局的数学家CliffordCocks就发现了类似的算法。
但是他的发现被列为绝密,直到1998年才公诸于世。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密钥对。
其中(n,e1)为公钥,(n,e2)为私钥。
[1]
RSA加解密的算法完全相同,设A为明文,B为密文,则:
A=B^e1modn;B=A^e2modn;
e1和e2可以互换使用,即:
A=B^e2modn;B=A^e1modn;
4.RSA安全性
RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。
假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。
目前,RSA的一些变种算法已被证明等价于大数分解。
不管怎样,分解n是最显然的攻击方法。
现在,人们已能分解多个十进制位的大素数。
因此,模数n必须选大一些,因具体适用情况而定。
5.RSA的速度
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。
速度一直是RSA的缺陷。
一般来说只用于少量数据加密。
RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。
6.的选择密文攻击
RSA在选择密文攻击面前很脆弱。
一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。
然后,经过计算就可得到它所想要的信息。
实际上,攻击利用的都是同一个弱点,即存在这样一个事实:
乘幂保留了输入的乘法结构:
(XM)^dmodn=X^d*M^dmodn
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。
但从算法上无法解决这一问题,主要措施有两条:
一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-WayHashFunction对文档作HASH处理,或同时使用不同的签名算法。
7.RSA的公共模数攻击
若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。
最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那么该信息无需私钥就可得到恢复。
设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:
C1=P^e1modn
C2=P^e2modn
密码分析者知道n、e1、e2、C1和C2,就能得到P。
因为e1和e2互质,故用Euclidean算法能找到r和s,满足:
r*e1+s*e2=1
假设r为负数,需再用Euclidean算法计算C1^(-1),则
(C1^(-1))^(-r)*C2^s=Pmodn
另外,还有其它几种利用公共模数攻击的方法。
总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。
解决办法只有一个,那就是不要共享模数n。
RSA的小指数攻击。
有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有
所提高。
但这样作是不安全的,对付办法就是e和d都取较大的值。
8.RSA加密算法的缺点
1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
2)安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。
目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。
然后,经过计算就可得到它所想要的信息。
实际上,攻击利用的都是同一个弱点,即存在这样一个事实:
乘幂保留了输入的乘法结构:
(XM)d=Xd*Mdmodn
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。
但从算法上无法解决这一问题,主要措施有两条:
一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-WayHashFunction对文档作HASH处理,或同时使用不同的签名算法。
除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.
3)速度太慢,由于RSA的分组长度太大,为保证安全性,n至少也要600bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
目前,SET(SecureElectronicTransaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。
为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:
单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。
9.已公开的攻击方法
针对RSA最流行的攻击一般是基于大数因数分解。
1999年,RSA-155(512bits)被成功分解,花了五个月时间(约8000MIPS年)和224CPUhours在一台有3.2G中央内存的CrayC916计算机上完成。
2002年,RSA-158也被成功因数分解。
2009年12月12日,编号为RSA-768(768bits,232digits)数也被成功分解。
北京时间2月15日上午消息,据《纽约时报》周二报道,欧美数学家和密码学家偶然发现,目前被全世界广泛应用的公钥加密算法RSA存在漏洞。
他们发现,在700万个实验样本中有2.7万个公钥并不是按理论随机产生的。
也就是说,或许有人可以找出产生公钥的秘密质数。
该研究项目是由美国独立密码学家JamesP.Hughes和荷兰数学家ArjenK.Lenstra牵头的。
他们的报告称:
“我们发现绝大多数公钥都是按理论产生的,但是每一千个公钥中会有两个存在安全隐患。
”
报告称,为防止有人利用该漏洞,有问题的公钥已从公众访问的数据库中移除。
为确保系统的安全性,网站需要在终端做出改变。
10.RSA的数论知识
RSA用到的公式和定理
一、数和互为素数
任何大于1的整数a能被因式分解为如下唯一形式:
a=p1p2…pl(p1,p2,…,pl为素数)
二、模运算
①{[a(modn)]×[b(modn)]}modn≡(a×b)(modn)
②如果(a×b)=(a×c)(modn),a与n互素,则
b=c(modn)
三、费马定理
若p是素数,a与p互素,则
a^(p-1)=1modp
四、欧拉定理
欧拉函数φ(n)表示不大于n且与n互素的正整数的个数。
当n是素数,φ(n)=n-1。
n=pq,p,q均为素数时,则φ(n)=φ(p)φ(q)=(p-1)(q-1)。
对于互素的a和n,有a^φ(n)=1(modn)
(2).椭圆曲线算法
1.椭圆曲线
椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程y2+a1xy+a3y=x3+a2x2+a4x+a6所确定的平面曲线。
若F是一个域,ai∈F,i=1,2,…,6。
满足式1的数偶(x,y)称为F域上的椭圆曲线E的点。
F域可以式有理数域,还可以式有限域GF(Pr)。
椭圆曲线通常用E表示。
除了曲线E的所有点外,尚需加上一个叫做无穷远点的特殊O。
2.椭圆曲线加密(ECC)
在椭圆曲线加密(ECC)中,利用了某种特殊形式的椭圆曲线,即定义在有限域上的椭圆曲线。
其方程如下:
y2=x3+ax+b(modp)
这里p是素数,a和b为两个小于p的非负整数,它们满足:
4a3+27b2(modp)≠0其中,x,y,a,b∈Fp,则满足式
(2)的点(x,y)和一个无穷点O就组成了椭圆曲线E。
3.椭圆曲线离散对数问题ECDLP
椭圆曲线离散对数问题ECDLP定义如下:
给定素数p和椭圆曲线E,对Q=kP,在已知P,Q的情况下求出小于p的正整数k。
可以证明,已知k和P计算Q比较容易,而由Q和P计算k则比较困难,至今没有有效的方法来解决这个问题,这就是椭圆曲线加密算法原理之所在。
4.椭圆曲线算法与RSA算法的比较
椭圆曲线算法与RSA算法的比较
椭圆曲线公钥系统是代替RSA的强有力的竞争者。
椭圆曲线加密方法与RSA方法相比,有以下的优点:
(1)安全性能更高如160位ECC与1024位RSA、DSA有相同的安全强度。
(2)计算量小,处理速度快在私钥的处理速度上(解密和签名),ECC远比RSA、DSA快得多。
(3)存储空间占用小ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,所以占用的存储空间小得多。
(4)带宽要求低使得ECC具有广泛得应用前景。
ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。
比如SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。
4.不对称加密技术的未来
(1).NP完全性
1.NP完全
在计算复杂度理论的世界中,NPC问题,又称NP完全问题或NP完备问题,是NP(非决定性多项式时间)中最难的决定性问题。
因此NP完备问题应该是最不可能被化简为P(多项式时间可决定)的决定性问题的集合。
许多人推测若任何NPC问题得到多项式时间的解法,那此解法就可应用在所有NP问题上。
更详细的定义容下叙述。
一个NPC问题的例子是子集合加总问题,题目为
给予一个有限数量的整数集合,找出任何一个此集合的非空子集且此子集内整数和为零。
意即:
S是一个包括若干整数的集合,找出任一一个S′?
S且
这个问题的答案非常容易验证,但目前没有任何一个够快的方法可以在合理的时间内(意即多项式时间)找到答案。
只能一个个将它的子集取出来一一测试,它的时间复杂度是Ο(2n),n是此集合的元素数量。
2.NPC的正式定义
一个决定性问题C若是为NPC,则代表它对NP是完备的,这表示:
1它是一个NP问题,且
2其他属于NP的问题都可归约(reducible)成它。
可归约在此意指对每个问题L,总有一个多项式时间多对一变换,即一个决定性的算法可以将实例l∈L转化成实例c∈C,并让c回答Yes当且仅当此答案对l也是Yes。
为了证明某个NP问题A实际上是NPC问题,证明者必须找出一个已知的NPC问题可以变换成A。
本定义得到一个结论,就是若上述的C有一个多项式时间可解的算法,则我们可以将所有的NP问题降到P之中。
这个定义是史提芬·古克[1]所提出。
虽然NPC这个词并没有出现在这篇论文上任何地方。
在这个资讯科学会议上,资讯科学家激动地讨论NPC问题是否可以在一个确定型图灵机上以多项式时间求解。
JohnHopcroft总结与会众人的共识,认为由于没有人能对某一命题提出驳倒对方的证明,此问题不会于现在解决。
此命题就是知名的
P和NP相等吗?
。
尚未有人能提出证明,说明NPC问题是否能在多项式时间中解决,使得此问题成为著名的数学中未解决的问题。
位于美国麻省剑桥市的“克雷数学研究所”(ClayMathematicsInstitute,简称CMI)提供了一百万美金奖金给任何可以证明P=NP或P≠NP的人。
一开始很难相信NPC问题是实际存在的,但著名的古克-李芬定理说明了一切(由LeonidLevin与Cook独立证出SAT问题是NPC问题,简化过但依旧艰深的证明在此)。
在1972年,RichardKarp证明有好几个问题也是NPC(请见卡普的二十一个NP完全问题),因此除了SAT问题外,的确存在着一整类NPC问题。
从古克开始,数千个问题借由从其他NPC问题变换而证实也是NPC问题,其中很多问题被搜集在Garey与Jonhon于1979年出版的书之中。
满足条件2(无论是否满足条件1)的问题集合被称为NP-hard。
一个NP-hard问题至少跟NPC问题一样难。
有一类问题已经被证明属于NP-hard但不属于NP,即,这类问题至少与NP-complete一样难,但这类问题又不属于NP(自然也不属于NP-complete)。
例如围棋的必胜下法,就是这样一个问题。
3.拆衷的解法
目前为止,所有已知解NPC问题的算法需要依照资料数量而定的超多项式(superpolynomial)时间,目前也不知道是否有任何更快的算法存在。
因此要在输入资料量大的时候解决一个NPC问题,通常我们使用下列的手段来解:
∙近似算法:
这类算法可以快速发现离最佳解在一定差距内的次佳解。
∙乱输算法:
此类算法可提供一乱数产生的输入资料,让本质上解答分布均匀的受测程式可以有良好的求解效率。
对于解答分布不均匀的程式,则可以降低乱数程度以改变输入资料。
∙特例:
此算法可以在题目呈献某些特殊情况时快速得解。
参数化复杂度可视为广义的此类算法。
∙启发式算法:
这种算法在许多时候可以产生理性解答(即运用评比或线索找出解),但无法保证它效率的良莠与解答的好坏程度。
一个启发式算法的例子是用在图着色问题以O(nlogn)的贪婪算法找次佳解,用在某些编译器的暂存器配置阶段上,此技术又叫图着色全域暂存器配置。
每顶点视为一变量,每边代表两变量同时使用的情况,颜色则代表配置给每一变量的暂存器编号。
由于大多数的RISC机器拥有大量通用暂存器,因此启发式算法很适合用来解这类题目。
4.其他变换法
依照上述NPC的定义,所谓的变换其实是多项式时间多对一变换的简称。
另一种化约法称为多项式时间图灵规约。
若我们提供一个副函式(subroutine)可以在多项式时间解出"Y",又可写出呼叫此副函式的程式并在多项式时间解出问题"X",代表我们可以将"X"多项式时间图灵变换成"Y"。
相较起来,不同处在于多对一变换只能呼叫上述副函式一次,且副函式的回传值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 不对称 加密 技术 研究 汇编