导航:首页 > 文档加密 > 公开密钥加密标准算法

公开密钥加密标准算法

发布时间:2023-10-30 10:51:26

① 公开密钥基本原理

公开密钥加密技术基本原理

现代加密技术中的加密算法都是公开的,而密钥是私有的。我们首先要对数据用加密算法进行加密,让接受方使用密钥进行解密,这样实现数据的安全传输。

加密和解密都会用到密钥,如果没有密钥就无法对加密的文件进行解密,也就是说任何人只要持有了密钥就可以解密,所以如果密钥被攻击者获得加密就失去了意义。

共享密钥加密方式 :加密和解密用同一个密钥的方式称为 共享密钥加密 (Common Key crypto system), 也被叫做 对称密钥加密 。

采用对称密钥加密的方式,必须将密钥也发给对方,不然对方无法解密。可究竟怎样才能安全的将密钥转交给对方呢?在互联网上传播时,如果通讯被监听,密钥落入攻击者之手,那加密就失去了意义。另外还得要有个办法安全的保存收的密钥。 

发送密钥就有被窃听的风险,但是不发送密钥,对方又无法解密。如果密钥能够可靠传递,那数据为什么不能可靠传递呢?

公开密钥加密方式 :公开密钥加密使用了两把 非对称 的密钥,一把叫做 私有密钥 (private key) ,另一把叫做 公开密钥 (public key).

在公开密钥加密方法中,发送方使用接受方发布的公开密钥进行加密处理,然后发送给接受方,接受方收到加密信息后,再使用自己的私有密钥进行解密。这种方式不需要发送用来解密的密钥,也就不用担心密钥被攻击者盗走的情况。

另外,要根据秘文和公开密钥把信息回复到原文是异常困难的。目前技术而言,不太现实。

② 公开密钥加密技术

谈起密码算法,有的人会觉得陌生,但一提起PGP,大多数网上朋友都很熟悉,它是一个工具软件,向认证中心注册后就可以用它对文件进行加解密或数字签名,PGP所采用的是RSA算法,以后我们会对它展开讨论。密码算法的目的是为了保护信息的保密性、完整性和安全性,简单地说就是信息的防伪造与防窃取,这一点在网上付费系统中特别有意义。密码学的鼻祖可以说是信息论的创始人香农,他提出了一些概念和基本理论,论证了只有一种密码算法是理论上不可解的,那就是 One Time Padding,这种算法要求采用一个随机的二进制序列作为密钥,与待加密的二进制序列按位异或,其中密钥的长度不小于待加密的二进制序列的长度,而且一个密钥只能使用一次。其它算法都是理论上可解的。如DES算法,其密钥实际长度是56比特,作2^56次穷举,就肯定能找到加密使用的密钥。所以采用的密码算法做到事实上不可解就可以了,当一个密码算法已知的破解算法的时间复杂度是指数级时,称该算法为事实上不可解的。顺便说一下,据报道国外有人只用七个半小时成功破解了DES算法。密码学在不断发展变化之中,因为人类的计算能力也像摩尔定律提到的一样飞速发展。作为第一部分,首先谈一下密码算法的概念。
密码算法可以看作是一个复杂的函数变换,C = F M, Key ),C代表密文,即加密后得到的字符序列,M代表明文即待加密的字符序列,Key表示密钥,是秘密选定的一个字符序列。密码学的一个原则是“一切秘密寓于密钥之中”,算法可以公开。当加密完成后,可以将密文通过不安全渠道送给收信人,只有拥有解密密钥的收信人可以对密文进行解密即反变换得到明文,密钥的传递必须通过安全渠道。目前流行的密码算法主要有DESRSA,IDEA,DSA等,还有新近的Liu氏算法,是由华人刘尊全发明的。密码算法可分为传统密码算法和现代密码算法,传统密码算法的特点是加密和解密必须是同一密钥,如DES和IDEA等;现代密码算法将加密密钥与解密密钥区分开来,且由加密密钥事实上求不出解密密钥。这样一个实体只需公开其加密密钥(称公钥,解密密钥称私钥)即可,实体之间就可以进行秘密通信,而不象传统密码算法似的在通信之前先得秘密传递密钥,其中妙处一想便知。因此传统密码算法又称对称密码算法(Symmetric Cryptographic Algorithms ),现代密码算法称非对称密码算法或公钥密码算法( Public-Key Cryptographic Algorithms ),是由Diffie 和Hellman首先在1976年的美国国家计算机会议上提出这一概念的。按照加密时对明文的处理方式,密码算法又可分为分组密码算法和序列密码算法。分组密码算法是把密文分成等长的组分别加密,序列密码算法是一个比特一个比特地处理,用已知的密钥随机序列与明文按位异或。当然当分组长度为1时,二者混为一谈。这些算法以后我们都会具体讨论。
RSA算法
1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。
RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。
密钥对的产生。选择两个大素数,p 和q 。计算:
n = p * q
然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是:
ci = mi^e ( mod n ) ( a )
解密时作如下计算:
mi = ci^d ( mod n ) ( b )
RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。
RSA 的安全性。
RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。
RSA的速度。
由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。
RSA的选择密文攻击。
RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:
( XM )^d = X^d *M^d mod n
前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。
RSA的公共模数攻击。
若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:
C1 = P^e1 mod n
C2 = P^e2 mod n
密码分析者知道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 = P mod n
另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。
RSA的小指数攻击。 有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。
RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。
DSS/DSA算法
Digital Signature Algorithm
(DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(Digital SignatureStandard)。算法中应用了下述参数:
p:L bits长的素数。L是64的倍数,范围是512到1024;
q:p - 1的160bits的素因子;
g:g = h^((p-1)/q) mod p,h满足h < p - 1, h^((p-1)/q) mod p > 1;
x:x < q,x为私钥 ;
y:y = g^x mod p ,( p, q, g, y )为公钥;
H( x ):One-Way Hash函数。DSS中选用SHA( Secure Hash Algorithm )。
p, q,
g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及验证协议如下:
1. P产生随机数k,k < q;
2. P计算 r = ( g^k mod p ) mod q
s = ( k^(-1) (H(m) + xr)) mod q
签名结果是( m, r, s )。
3. 验证时计算 w = s^(-1)mod q
u1 = ( H( m ) * w ) mod q
u2 = ( r * w ) mod q
v = (( g^u1 * y^u2 ) mod p ) mod q
若v = r,则认为签名有效。
DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却作不到

③ 公开密钥法的基本思想是什么

"公开密钥" 英文对照 public - key; "公开密钥" 在工具书中的解释 1、公开密钥密码体制中的加密密钥。 查看全文 "公开密钥" 在学术文献中的解释 1、传统密钥是指加密和解密用同一个密钥,而公开密钥则是指加密用一个密钥,解密用另一个密钥,而且用一个密钥无法得到另一个密钥.其中,RSA加密算法就是一种公开密钥算法,而且可以用于数字签证,以实现对方身份的确认 文献来源 2、RAS是一种质因数分解加密算法,它将整数质数化为两组密码,一组用于加密,予以公开,称为公开密钥.一组用于解密,只有信息解密者知道,称为私人密钥 文献来源 3、密钥是一个很大的整数,一个参与者在一个公共数据库中公布一个密钥,称为公开密钥,而把另一个密钥作为秘密密钥.用一个密钥编码的报文可以用另一个密钥解码.例如,如果发送者使用秘密密钥将报文编码,接收者可以使用发送者的公开密钥将其解码 文献来源 4、非对称加密技术即用户采用两个不同的相互依赖的密钥一个称为公开密钥,另一个称为私有密钥,用于对信息的加密和解密 文献来源 5、(5)(N,E)或E称为“公开密钥.”(N,D)或D称为“私有密钥”.RSA算法的私钥(N,D)用于开发商的加密,公钥(N,E)(E=65537)在用户软件的验证部分用于解密,如果定期地更换这对密钥又将会给破解者带来破解的难度 文献来源 6、2.2基于公钥体制的安全机制公钥密码算法[2]的最大特点是采用两个相关密钥将加密和解密能力分开,其中一个密钥是公开的,称为公开密钥 文献来源 7、6)(e,n)被称为公开密钥.7)(d,n)被称为秘密密钥,相反也可.对于明文M,用公钥(e,n)加密可得到密文C.C=Memodn对于密文C,用私钥(d,n)解密可得到明文M 文献来源 8、将其中的一个密钥公开,称为“公开密钥”.另外一个密钥由密钥持有人专用,称为“私有密钥”.将消息用公开密钥加密,只有相应的私有密钥持有人才能解密,因此,该消息成为私有密钥持有人的秘密 文献来源 9、这种方式,每人都有一对密钥,其中一支称为公开密钥,而另一支称为私密密钥,当有在互连网上传送资料的需求时.就可以将公开密钥通过一定的方式传播出去 文献来源 10、其中一个公开发布,称为公开密钥,另一个由用户自己秘密保存,称为私有密钥.发送数据方用公开密钥加密,而接收方用私有密钥去解密 文献来源 11、非对称加密是加密密钥不同于解密密钥加密密钥公开称为公开密钥.解密密钥只有自己知道称为私有密钥.其帧长取10ms由2个子帧组成预视5ms以及处理时延设计单向时延35ms 文献来源 12、(12)提取证书中的“版本”信息.2.1 用RSA加密算法产生密钥对 RSA加密算法[1]是一种公钥加密算法,它是用一对密钥对数据进行加密和解密.一个密钥称为公开密钥,
记得采纳啊

④ 密钥加密方法有哪些 密钥加密方法介绍【详解】

密钥加密方法大全

密钥加密技术用于加密和解密数据。密钥是与加密算法一起用于加密某些输入(称为明文)的值。输出称为密文。密钥本质上是非常非常大的数。密钥的尺寸用位(bit)来衡量,1024位密钥代表的数是非常巨大的。在公开密钥加密方法中,密钥的尺寸越大,密文就越安全。假定有相同的输入和相同的算法,不同的密钥会生成不同的密文。

有两种大量使用的密钥加密技术:私用密钥(对称加密)和公共密钥(非对称加密)。

对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

使用对称加密技术将简化加密的处理,每个参与方都不必彼此研究和交换专用设备的加密算法,而是采用相同的加密算法并只交换共享的专用密钥。如侍渣果进行通信的双方能够确保专用密钥在密钥交换阶段未曾泄露,那么机密性和团明报文完整性就可以通过使用对称加密方法对机密信息进行加密以及通过随报文一起发送报文摘要或报文散列值来实现。

非对称密钥加密,又称公共密钥加密技术(Public Key Cryptography)是基于特地功能的数学算法。使用一个特定的公式来创建数学上相关联的两个密钥(key),但是,两个密钥之间不能推导出对方。一个密钥被用于加密信息,生成密文,另一个密钥用于解密信息,生成明文。然而,原始的密钥不能用于解密密文,因此,这种类型的加密技术被称为非对称的加密技术。公钥机制灵活,但加密老或悄和解密速度却比对称密钥加密慢得多。

在非对称加密体系中,密钥被分解为一对。这对密钥中的任何一把都可作为公开密钥(加密密钥)通过非保密方式向他人公开,而另一把则作为私用密钥(解密密钥)加以保存。私用密钥只能由生成密钥对的贸易方掌握,公开密钥可广泛发布。

⑤ 公开密钥密码体系的算法

公开密钥算法是在1976年由当时在美国斯坦福大学的迪菲(Diffie)和赫尔曼(Hellman)两人首先发明的(论文New Direction in Cryptography)。但目前最流行的RSA是1977年由MIT教授Ronald L.Rivest,Adi Shamir和Leonard M.Adleman共同开发的,分别取自三名数学家的名字的第一个字母来构成的。
1976年提出的公开密钥密码体制思想不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥(e),另一个为解密密钥(d),且不可能从其中一个推导出另一个。自1976年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的, 一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题, 这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今已有数千年的历史了。
公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。 公钥加密算法中使用最广的是RSA。RSA使用两个密钥,一个公共密钥,一个专用密钥。如用其中一个加密,则可用另一个解密,密钥长度从40到2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密解密的开销也大,所以要在安全与性能之间折衷考虑,一般64位是较合适的。RSA的一个比较知名的应用是SSL,在美国和加拿大SSL用128位RSA算法,由于出口限制,在其它地区(包括中国)通用的则是40位版本。
RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。 通常信息安全的目标可以概括为解决信息的以下问题:
保密性(Confidentiality)保证信息不泄露给未经授权的任何人。
完整性(Integrity)防止信息被未经授权的人篡改。
可用性(Availability)保证信息和信息系统确实为授权者所用。
可控性(Controllability)对信息和信息系统实施安全监控,防止非法利用信息和信息系统。
密码是实现一种变换,利用密码变换保护信息秘密是密码的最原始的能力,然而,随着信息和信息技术发展起来的现代密码学,不仅被用于解决信息的保密性,而且也用于解决信息的完整性、可用性和可控性。可以说,密码是解决信息安全的最有效手段,密码技术是解决信息安全的核心技术。
公用密钥的优点就在于,也许你并不认识某一实体,但只要你的服务器认为该实体的CA是可靠的,就可以进行安全通信,而这正是Web商务这样的业务所要求的。例如信用卡购物。服务方对自己的资源可根据客户CA的发行机构的可靠程度来授权。目前国内外尚没有可以被广泛信赖的CA。美国Natescape公司的产品支持公用密钥,但把Natescape公司作为CA。由外国公司充当CA在中国是一件不可想象的事情。
公共密钥方案较保密密钥方案处理速度慢,因此,通常把公共密钥与专用密钥技术结合起来实现最佳性能。即用公共密钥技术在通信双方之间传送专用密钥,而用专用密钥来对实际传输的数据加密解密。另外,公钥加密也用来对专用密钥进行加密。
在这些安全实用的算法中,有些适用于密钥分配,有些可作为加密算法,还有些仅用于数字签名。多数算法需要大数运算,所以实现速度很慢,不能用于快的数据加密。以下将介绍典型的公开密钥密码算法-RSA。
RSA算法很好的完成对电文的数字签名以抗对数据的否认与抵赖;利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,比如PGP(PrettyGoodPrivacy)加密系统,它是一个工具软件,向认证中心注册后就可以用它对文件进行加解密或数字签名,PGP所采用的就是RSA算法。由此可以看出RSA有很好的应用。

⑥ 典型加密算法包括

1、对称加密算法

对称加密算法是指加密和解密采用相同的密钥,是可逆的(即可解密)。AES加密算法是密码学中的高级加密标准,采用的是对称分组密码体制,密钥长度的最少支持为128。

AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界使用。

2、非对称加密

非对称加密算法,又称为公开密钥加密算法。它需要两个密钥,一个称为公开密钥 (public key),即公钥,另一个称为私有密钥 (private key),即私钥。

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。

3、Hash 算法

Hash 算法特别的地方在于它是一种单向算法,用户可以通过 Hash 算法对目标信息生成一段特定长度的唯一的 Hash 值,却不能通过这个 Hash 值重新获得目标信息。因此 Hash 算法常用在不可还原的密码存储、信息完整性校验等。

⑦ 什么是公钥密码算法


20世纪70年代,美国学者Diffie和Hellman,以及以色列学者Merkle分别独立地提出了一种全新的密码体制的概念。Diffie和Hellman首先将这个概念公布在1976年美国国家计算机会议上,几个月后,他们这篇开创性的论文《密码学的新方向》发表在IEEE杂志信息论卷上,由于印刷原因,Merkle对这一领域的贡献直到1978年才出版。他们所创造的新的密码学理论,突破了传统的密码体制对称密钥的概念,竖起了近代密码学的又一里程碑。



不同于以前采用相同的加密和解密密钥的对称密码体制,Diffie和Hellman提出了采用双钥体制,即每个用户都有一对选定的密钥:一个是可以公开的,另一个则是秘密的。公开的密钥可以像电话号码一样公布,因此称为公钥密码体制或双钥体制。
公钥密码体制的主要特点是将加密和解密的能力分开,因而可以实现多个用户的信息只能由一个用户解读;或只能由一个用户加密消息而由多个用户解读,前者可以用于公共网络中实现保密通信,而后者可以用于认证系统中对消息进行数字签名。
公开密钥密码的基本思想是将传统密码的密钥一分为二,分为加密密钥Ke和解密密钥Kd,用加密密钥Ke控制加密,用解密密钥Kd控制解密。而且由计算复杂性确保加密密钥Ke在计算上不能推导出解密密钥Kd。这样,即使将Ke公开也不会暴露Kd,也不会损害密码的安全。于是便可以将Ke公开,而只对Kd保密。由于Ke是公开的,只有Kd是保密的,因此从根本上克服了传统密码在密钥分配上的困难。


公开密钥密码满足的条件
根据公开密钥密码的基本思想,可知一个公开密钥密码应当满足下面三个条件:



  1. 解密算法D和加密算法E互逆,即对所有明文M都有,D(E(M,Ke),Kd)=M。
  2. 在计算上不能由Ke推导出Kd。
  3. 算法E和D都是高效的。

条件1是构成密码的基本条件,是传统密码和公开密钥密码都必须具备的起码条件。
条件2是公开密钥密码的安全条件,是公开密钥密码的安全基础,而且这一条件是最难满足的。目前尚不能从数学上证明一个公开密钥密码完全满足这一条件,而只能证明它不满足这一条件。
条件3是公开密钥密码的工程实用条件。因为只有算法E和D都是高效的,密码才能实用。否则,密码只有理论意义,而不能实际应用。
满足了以上三个条件,便可构成一个公开密钥密码,这个密码可以确保数据的秘密性。然而还需要确保数据的真实性,则还需满足第四个条件。
4.对于所有明文M都有E(D(M,Kd),Ke)=M。
条件4是公开密钥密码能够确保数据真实性的基本条件。如果满足了条件1、2、4,同样可以构成一个公开密钥密码,这个密码可以确保数据的真实性。
如果同时满足以上四个条件,则公开密钥密码可以同时确保数据的秘密性和真实性。此时,对于所有的明文M都有D(E(M,Ke),Kd)= E(D(M,Kd),Ke)=M。
公开密钥密码从根本上克服了传统密码在密钥分配上的困难,利用公开密钥密码进行保密通信需要成立一个密钥管理机构(KMC),每个用户将自己的姓名、地址和公开的加密密钥等信息在KMC登记注册,将公钥记入共享的公开密钥数据库。KMC负责密钥的管理,并对用户是可信赖的。这样,用户利用公开密钥密码进行保密通信就像查电话号码簿打电话一样方便,再也不需要通信双方预约密钥,因此特别适合计算机网络应用,而且公开密钥密码实现数字签名容易,所以特别受欢迎。
下图是公钥密码体制的框图,主要分为以下几步:



  1. 网络中要求接收消息的端系统,产生一对用来加密和解密的密钥,如图中的接收者B,产生一对密钥PKB,SKB,其中PKB是公开钥,SKB是秘密钥。
  2. 端系统B将加密密钥(图中的PKB)存储在一个公开的寄存器或文件中,另一密钥则被保密(图中个SKB)。
  3. A要想向B发送消息m,则使用B的公开钥加密m,表示为 c=EPKB[m] 其中,c是密文,E是加密算法。
  4. B收到密文c后,用自己的秘密钥SKB解密,表示为 m=DSKB[c] 其中,D是解密算法。因为只有B知道SKB,所以其他人无法对c解密。

这就是公开密钥的原理~


(转载需向本人获取权限)

⑧ 公开密钥密码体制的RSA算法简介

正是基于这种理论,1978年出现了着名的RSA算法。这种算法为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

⑨ 公钥密码系统及RSA公钥算法

公钥密码系统及RSA公钥算法

本文简单介绍了公开密钥密码系统的思想和特点,并具体介绍了RSA算法的理论基础,工作原理和具体实现过程,并通过一个简单例子说明了该算法是如何实现。在本文的最后,概括说明了RSA算法目前存在的一些缺点和解决方法。

关键词:公钥密码体制 , 公钥 ,私钥 ,RSA

§1引言

随着计算机联网的逐步实现,Internet前景越来越美好,全球经济发展正在进入信息经济时代,知识经济初见端倪。计算机信息的保密问题显得越来越重要,无论是个人信息通信还是电子商务发展,都迫切需要保证Internet网上信息传输的安全,需要保证信息安全。信息安全技术是一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,它的主要任务是研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。其中,信息安全的核心是密码技术。密码技术是集数学、计算机科学、电子与通信等诸多学科于一身的交叉学科。它不仅能够保证机密性信息的加密,而且能够实现数字签名、身份验证、系统安全等功能。是现代化发展的重要科学之一。本文将对公钥密码系统及该系统中目前最广泛流行的RSA算法做一些简单介绍。

§2公钥密码系统

要说明公钥密码系统,首先来了解一下不同的加密算法:目前的加密算法按密钥方式可分为单钥密码算法和公钥密码算法。

2.1.单钥密码

又称对称式密码,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都必须获得这把钥匙,并保持钥匙的秘密。

单钥密码系统的安全性依赖于以下两个因素:第一,加密算法必须是足够强的,仅仅基于密文本身去解密信息在实践上是不可能的;第二,加密方法的安全性依赖于密钥的秘密性,而不是算法的秘密性,因此,我们没有必要确保算法的秘密性(事实上,现实中使用的很多单钥密码系统的算法都是公开的),但是我们一定要保证密钥的秘密性。

从单钥密码的这些特点我们容易看出它的主要问题有两点:第一,密钥量问题。在单钥密码系统中,每一对通信者就需要一对密钥,当用户增加时,必然会带来密钥量的成倍增长,因此在网络通信中,大量密钥的产生﹑存放和分配将是一个难以解决的问题。第二,密钥分发问题。单钥密码系统中,加密的安全性完全依赖于对密钥的保护,但是由于通信双方使用的是相同的密钥,人们又不得不相互交流密钥,所以为了保证安全,人们必须使用一些另外的安全信道来分发密钥,例如用专门的信使来传送密钥,这种做法的代价是相当大的,甚至可以说是非常不现实的,尤其在计算机网络环境下,人们使用网络传送加密的文件,却需要另外的安全信道来分发密钥,显而易见,这是非常不智是甚至是荒谬可笑的。

2.2公钥密码

正因为单钥密码系统存在如此难以解决的缺点,发展一种新的﹑更有效﹑更先进的密码体制显得更为迫切和必要。在这种情况下,出现了一种新的公钥密码体制,它突破性地解决了困扰着无数科学家的密钥分发问题,事实上,在这种体制中,人们甚至不用分发需要严格保密的密钥,这次突破同时也被认为是密码史上两千年来自单码替代密码发明以后最伟大的成就。

这一全新的思想是本世纪70年代,美国斯坦福大学的两名学者Diffie和Hellman提出的,该体制与单钥密码最大的不同是:

在公钥密码系统中,加密和解密使用的是不同的密钥(相对于对称密钥,人们把它叫做非对称密钥),这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。

为了说明这一思想,我们可以考虑如下的类比:

两个在不安全信道中通信的人,假设为Alice(收信者)和Bob(发信者),他们希望能够安全的通信而不被他们的敌手Oscar破坏。Alice想到了一种办法,她使用了一种锁(相当于公钥),这种锁任何人只要轻轻一按就可以锁上,但是只有Alice的钥匙(相当于私钥)才能够打开。然后Alice对外发送无数把这样的锁,任何人比如Bob想给她寄信时,只需找到一个箱子,然后用一把Alice的锁将其锁上再寄给Alice,这时候任何人(包括Bob自己)除了拥有钥匙的Alice,都不能再打开箱子,这样即使Oscar能找到Alice的锁,即使Oscar能在通信过程中截获这个箱子,没有Alice的钥匙他也不可能打开箱子,而Alice的钥匙并不需要分发,这样Oscar也就无法得到这把“私人密钥”。

从以上的介绍可以看出,公钥密码体制的思想并不复杂,而实现它的关键问题是如何确定公钥和私钥及加/解密的算法,也就是说如何找到“Alice的锁和钥匙”的问题。我们假设在这种体制中, PK是公开信息,用作加密密钥,而SK需要由用户自己保密,用作解密密钥。加密算法E和解密算法D也都是公开的。虽然SK与PK是成对出现,但却不能根据PK计算出SK。它们须满足条件:

①加密密钥PK对明文X加密后,再用解密密钥SK解密,即可恢复出明文,或写为:DSK(EPK(X))=X

②加密密钥不能用来解密,即DPK(EPK(X))≠X

③在计算机上可以容易地产生成对的PK和SK。

④从已知的PK实际上不可能推导出SK。

⑤加密和解密的运算可以对调,即:EPK(DSK(X))=X

从上述条件可看出,公开密钥密码体制下,加密密钥不等于解密密钥。加密密钥可对外公开,使任何用户都可将传送给此用户的信息用公开密钥加密发送,而该用户唯一保存的私人密钥是保密的,也只有它能将密文复原、解密。虽然解密密钥理论上可由加密密钥推算出来,但这种算法设计在实际上是不可能的,或者虽然能够推算出,但要花费很长的时间而成为不可行的。所以将加密密钥公开也不会危害密钥的安全。

这种体制思想是简单的,但是,如何找到一个适合的算法来实现这个系统却是一个真正困扰密码学家们的难题,因为既然Pk和SK是一对存在着相互关系的密钥,那么从其中一个推导出另一个就是很有可能的,如果敌手Oscar能够从PK推导出SK,那么这个系统就不再安全了。因此如何找到一个合适的算法生成合适的Pk和SK,并且使得从PK不可能推导出SK,正是迫切需要密码学家们解决的一道难题。这个难题甚至使得公钥密码系统的发展停滞了很长一段时间。

为了解决这个问题,密码学家们考虑了数学上的陷门单向函数,下面,我们可以给出它的非正式定义:

Alice的公开加密函数应该是容易计算的,而计算其逆函数(即解密函数)应该是困难的(对于除Alice以外的人)。许多形式为Y=f(x)的函数,对于给定的自变量x值,很容易计算出函数Y的值;而由给定的Y值,在很多情况下依照函数关系f (x)计算x值十分困难。这样容易计算但难于求逆的函数,通常称为单向函数。在加密过程中,我们希望加密函数E为一个单项的单射函数,以便可以解密。虽然目前还没有一个函数能被证明是单向的,但是有很多单射函数被认为是单向的。

例如,有如下一个函数被认为是单向的,假定n为两个大素数p和q的乘积,b为一个正整数,那么定义f:

f (x )= x b mod n

(如果gcd(b,φ(n))=1,那么事实上这就是我们以下要说的RSA加密函数)

如果我们要构造一个公钥密码体制,仅给出一个单向的单射函数是不够的。从Alice的观点来看,并不需要E是单向的,因为它需要用有效的方式解密所收到的信息。因此,Alice应该拥有一个陷门,其中包含容易求出E的你函数的秘密信息。也就是说,Alice可以有效解密,因为它有额外的秘密知识,即SK,能够提供给你解密函数D。因此,我们称一个函数为一个陷门单向函数,如果它是一个单向函数,并在具有特定陷门的知识后容易求出其逆。

考虑上面的函数f (x) = xb mod n。我们能够知道其逆函数f -1有类似的形式f (x ) = xa mod n,对于合适的取值a。陷门就是利用n的因子分解,有效的算出正确的指数a(对于给定的b)。

为方便起见,我们把特定的某类陷门单向函数计为?。那么随机选取一个函数f属于?,作为公开加密函数;其逆函数f-1是秘密解密函数。那么公钥密码体制就能够实现了。

根据以上关于陷门单向函数的思想,学者们提出了许多种公钥加密的方法,它们的安全性都是基于复杂的数学难题。根据所基于的数学难题,至少有以下三类系统目前被认为是安全和有效的:大整数因子分解系统(代表性的有RSA)、椭园曲线离散对数系统(ECC)和离散对数系统(代表性的有DSA)。

§3 RSA算法

3.1简介

当前最着名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的着名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。

RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性:

1)已有确定一个数是不是质数的快速算法;

2)尚未找到确定一个合数的质因子的快速算法。

3.2工作原理

1)任意选取两个不同的大质数p和q,计算乘积r=p*q;

2)任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。

3)确定解密密钥d:d * e = 1 molo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出d。

4)公开整数r和e,但是不公开d;

5)将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:

C = Pe molo r

6)将密文C解密为明文P,计算方法为:

P = Cd molo r

然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

3.3简单实例

为了说明该算法的工作过程,我们下面给出一个简单例子,显然我们在这只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大的多得多。

例:选取p=3, q=5,则r=15,(p-1)*(q-1)=8。选取e=11(大于p和q的质数),通过d * 11 = 1 molo 8,计算出d =3。

假定明文为整数13。则密文C为

C = Pe molo r

= 1311 molo 15

= 1,792,160,394,037 molo 15

= 7

复原明文P为:

P = Cd molo r

= 73 molo 15

= 343 molo 15

= 13

因为e和d互逆,公开密钥加密方法也允许采用这样的方式对加密信息进行"签名",以便接收方能确定签名不是伪造的。

假设A和B希望通过公开密钥加密方法进行数据传输,A和B分别公开加密算法和相应的密钥,但不公开解密算法和相应的密钥。A和B的加密算法分别是ECA和ECB,解密算法分别是DCA和DCB,ECA和DCA互逆,ECB和DCB互逆。 若A要向B发送明文P,不是简单地发送ECB(P),而是先对P施以其解密算法DCA,再用加密算法ECB对结果加密后发送出去。

密文C为:

C = ECB(DCA(P))

B收到C后,先后施以其解密算法DCB和加密算法ECA,得到明文P:

ECA(DCB(C))

= ECA(DCB(ECB(DCA(P))))

= ECA(DCA(P))/*DCB和ECB相互抵消*/

=

P          /*DCB和ECB相互抵消*/

这样B就确定报文确实是从A发出的,因为只有当加密过程利用了DCA算法,用ECA才能获得P,只有A才知道DCA算法,没 有人,即使是B也不能伪造A的签名。

3.4优缺点

3.4.1优点

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对于网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码系统相对于对称密码系统最突出的优点。

3.4.2缺点

1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2)安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )d = Xd *Md mod n

前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.

3)速度太慢,由于RSA的分组长度太大,为保证安全性,n至少也要600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。

§4结束语

目前,日益激增的电子商务和其它因特网应用需求使公钥体系得以普及,这些需求量主要包括对服务器资源的访问控制和对电子商务交易的保护,以及权利保护、个人隐私、无线交易和内容完整性(如保证新闻报道或股票行情的真实性)等方面。公钥技术发展到今天,在市场上明显的发展趋势就是PKI与操作系统的集成,PKI是“Public

Key Infrastructure”的缩写,意为“公钥基础设施”。公钥体制广泛地用于CA认证、数字签名和密钥交换等领域。

公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,该算法也已经在互联网的许多方面得以广泛应用,包括在安全接口层(SSL)标准(该标准是网络浏览器建立安全的互联网连接时必须用到的)方面的应用。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。

但目前RSA算法的专利期限即将结束,取而代之的是基于椭圆曲线的密码方案(ECC算法)。较之于RSA算法,ECC有其相对优点,这使得ECC的特性更适合当今电子商务需要快速反应的发展潮流。此外,一种全新的量子密码也正在发展中。

至于在实际应用中应该采用何种加密算法则要结合具体应用环境和系统,不能简单地根据其加密强度来做出判断。因为除了加密算法本身之外,密钥合理分配、加密效率与现有系统的结合性以及投入产出分析都应在实际环境中具体考虑。加密技术随着网络的发展更新,将有更安全更易于实现的算法不断产生,为信息安全提供更有力的保障。今后,加密技术会何去何从,我们将拭目以待。

参考文献:

[1] Douglas R.Stinson.《密码学原理与实践》.北京:电子工业出版社,2003,2:131-132

[2]西蒙.辛格.《密码故事》.海口:海南出版社,2001,1:271-272

[3]嬴政天下.加密算法之RSA算法.http://soft.winzheng.com/infoView/Article_296.htm,2003

[4]加密与数字签名.http://www.njt.cn/yumdq/dzsw/a2.htm

[5]黑客中级教程系列之十.http://www.qqorg.i-p.com/jiaocheng/10.html

阅读全文

与公开密钥加密标准算法相关的资料

热点内容
人与文化pdf 浏览:621
原子币app在哪里注册的 浏览:526
php数组保存文件 浏览:224
无理的命令 浏览:508
问道手游解压失败是什么原因 浏览:776
mysql命令提示 浏览:371
apachephp中文乱码 浏览:340
pythonimportpylab 浏览:238
阿里云app服务器价格表 浏览:981
appstore怎么抢手机 浏览:845
打印服务器是什么打印队列 浏览:359
网上怎么用app办理营业执照 浏览:861
sql如何查看服务器地址 浏览:779
编译速度和系统有关吗 浏览:58
复盛制冷压缩机 浏览:982
云服务器共享手机流量 浏览:842
星界边境像素压缩 浏览:459
算法分析与设计二手 浏览:983
学编程如何配电脑 浏览:971
怎么看特征找卡密的加密方式 浏览:526