加密学习

本文详细介绍了非对称加密的基本概念与RSA算法的工作原理,包括加密与解密过程,以及数字签名的实现方式。此外,还探讨了PKI(公共密钥基础设施)在密钥管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ron Rivest, Adi Shamir 和Leonard Adleman终于在1978年提出了RSA公开密钥算法(以此三人姓名的首字母命名),是现在应用最广泛的一种非对称加密算法,这种算法的运算非常复杂,速度也很慢,主要是利用数学上很难分解两个大素数的乘积的原理。
设想你的朋友需要发送一些非常重要、非常机密的信息给你,而你跟外界的每一条通路都被监听了。那还不简单,你的朋友用DES对信息加密后传送给你不就行了,没有密钥,就算被人监听,他也不知道什么意思呀。可是问题在于你也需要密钥才能查看这些信息!你必须要知道你的朋友给信息加密的密钥才能完成对信息的接收!而你的朋友是没有一种安全的方法传递密钥给你的。如果说经常跟你通信的朋友还可以事先跟你约定好密钥,那么Internet上那么多人和机构是没有办法跟你事先就约定好的。公开密钥系统(也就是非对称加密系统)的作用就在于,此时,你可以先将加密密钥正常传送给你的朋友,让你的朋友用这个加密密钥对信息进行加密后传送给你,然后你再用解密密钥恢复信息的明文进行阅读,在这个过程中解密密钥不会以任何形式传送,只掌握在你的手中,也就是说你的朋友对信息加密后,他自己也没办法再解开进行验证。监听者得到了加密密钥,却无法得出解密密钥,也就无法查看信息的明文
PKI原理
PKI 即公共密钥体系。它利用公共密钥算法的特点,建立一套证书发放、管理和使用的体系,来支持和完成网络系统中的身份认证、信息加密、保证数据完整性和抗抵赖性。PKI 体系可以有多种不同的体系结构、实现方法和通信协议。
公共(非对称)密钥算法使用加密算法和一对密钥:一个公共密钥(公钥,public key)和一个私有密钥(私钥,private key)。其基本原理是:由一个密钥进行加密的信息内容,只能由与之配对的另一个密钥才能进行解密。公钥可以广泛地发给与自己有关的通信者,私钥则需要十分安全地存放起来。使用中,甲方可以用乙方的公钥对数据进行加密并传送给乙方,乙方可以使用自己的私钥完成解密。公钥通过电子证书与其拥有者的姓名、工作单位、邮箱地址等捆绑在一起,由权威机构(CA, Certificate Authority)认证、发放和管理。把证书交给对方时就把自己的公钥传送给了对方。证书也可以存放在一个公开的地方,让别人能够方便地找到和下载。
公共密钥方法还提供了进行数字签名的办法:签字方对要发送的数据提取摘要并用自己的私钥对其进行加密;接收方验证签字方证书的有效性和身份,用签字方公钥进行解密和验证,确认被签字的信息的完整性和抗抵赖性。
公共密钥方法通常结合使用对称密钥(单密钥)方法,由计算效率高的对称密钥方法对文件和数据进行加密。
目前在 Internet 上主要使用 RSA 公共密钥方法,密钥长度 512 或 1024 位,是广泛使用的 SSL/TLS 和S/MIME 等安全通信协议的基础。
 

传统的加密方法

传统的加密方法是加密、解密使用同样的密钥,由发送者和接收者分别保存,在加密和解密时使用,采用这种方法的主要问题是密钥的生成、注入、存储、管理、分发等很复杂,特别是随着用户的增加,密钥的需求量成倍增加。在网络通信中,大量密钥的分配是一个难以解决的问题。

例如,若系统中有n个用户,其中每两个用户之间需要建立密码通信,则系统中每个用户须掌握(n-1)个密钥,而系统中所需的密钥总数为n*(n-1)/2 个。对10个用户的情况,每个用户必须有9个密钥,系统中密钥的总数为45个。对100个用户来说,每个用户必须有99个密钥,系统中密钥的总数为4950个。这还仅考虑用户之间的通信只使用一种会话密钥的情况。如此庞大数量的密钥生成、管理、分发确实是一个难处理的问题

常规密钥密码体制
所谓常规密钥密码体制,即加密密钥与解密密钥是相同的。
在早期的常规密钥密码体制中,典型的有代替密码,其原理可以用一个例子来说明:
将字母a,b,c,d,…,w,x,y,z的自然顺序保持不变,但使之与D,E,F,G,…,Z,A,B,C分别对应(即相差3个字符)。若明文为student则对应的密文为VWXGHQW(此时密钥为3)。
由于英文字母中各字母出现的频度早已有人进行过统计,所以根据字母频度表可以很容易对这种代替密码进行破译。
数据加密标准DES

DES

       数据加密标准(DESData Encryption Standard)是一种使用密钥加密的块密码,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及被怀疑内含美國國家安全局(NSA)的后门而在开始时是有争议的,因此DES因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展。

其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

1.  DES-加密算法特点:

分组比较短、密钥太短、密码生命周期短、运算速度较慢.

2.  DES-工作的基本原理

其入口参数有三个:keydatamodekey为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安性.

3.  DES算法

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,整个算法的主流程是把输入的64位数据块按位重新组合,并把输出分为L0R0两部分,每部分各长32位,其置换规则见下表:

58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,

57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,

即将输入的第58位换到第一位,第50位换到第2位,...,依此类推,最后一位是原来的第7位。L0R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3......D64,则经过初始置换后的结果为:L0=D58D50...D8R0=D57D49...D7

经过16次迭代运算后。得到L16R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算。例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如下表所示:

                   40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,

                       38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,

36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,

34,2,42,10,50,18,5826,33,1,41,9,49,17,57,25,

 

放大换位表

32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,

12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,

22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1,

 

单纯换位表

                   16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,

                   2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25,

f(Ri,Ki)算法描述图中,S1,S2...S8为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,2......8)的功能表:

选择函数Si

S1:

14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,

0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,

4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,

15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,

S2:

15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,

3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,

0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,

13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,

S3:

10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,

13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,

13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,

1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,

S4:

7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,

13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,

10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,

3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,

S5:

2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,

14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,

4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,

11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,

S6:

12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,

10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,

9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,

4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,

S7:

4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,

13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,

1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,

6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,

S8:

13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,

                            1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,

7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,

2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,

在此以S1为例说明其功能,我们可以看到:在S1中,共有4行数据,命名为0123行;每行有16列,命名为0123......1415列。

现设输入为:DD1D2D3D4D5D6

令:列=D2D3D4D5

行=D1D6

然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出。下面给出子密钥Ki(48bit)的生成算法

从子密钥Ki的生成算法描述图中我们可以看到:初始Key值为64位,但DES算法规定,其中第816......64位是奇偶校验位,不参与DES运算。故Key实际可用位数便只有56位。即:经过缩小选择换位表1的变换后,Key的位数由64位变成了56位,此56位分为C0D0两部分,各28位,然后分别进行第1次循环左移,得到C1D1,将C128位)、D128位)合并得到56位,再经过缩小选择换位2,从而便得到了密钥K048位)。依此类推,便可得到K1K2......K15,不过需要注意的是,16次循环左移对应的左移位数要依据下述规则进行:

                   循环左移位数

                            1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1

以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14......,最后一次用K0,算法本身并没有任何变化。

4.  DES-算法的应用误区

DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。

由上述DES算法介绍我们可以看到:DES算法中只用到64位密钥中的其中56位,而第81624......648个位并未参与DES运算,这一点,向我们提出了一个应用上的要求,即DES的安全性是基于除了81624......64位外的其余56位的组合变化256才得以保证的。因此,在实际应用中,我们应避开使用第81624......64位作为有效数据位,而使用其它的56位作为有效数据位,才能保证DES算法安全可靠地发挥作用。如果不了解这一点,把密钥Key81624......64位作为有效数据使用,将不能保证DES加密数据的安全性,对运用DES来达到保密作用的系统产生数据被破译的危险,这正是DES算法在应用上的误区,留下了被人攻击、被人破译的极大隐患。

3DES:

3DES(即Triple DES)是DESAES过渡的加密算法,它使用364位的密钥对数据进行三次加密。是DES的一3DES个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES3DES更为安全。

1.    3DES - 算法介绍

Ek()Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代表密表,这样,

3DES加密过程为:C=Ek3(Dk2(Ek1(P)))

3DES解密过程为:P=Dk1((EK2(Dk3(C)))



公开密钥密码体制

1976年美国斯坦福大学的两名学者迪菲和赫尔曼提出了公开密钥密码体制的概念。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK

与传统的加密方法不同,该技术采用两个不同的密钥来对信息加密和解密,它也称为"非对称式加密方法。每个用户有一个对外公开的加密算法E和对外保密的解密算法D, 它们须满足条件: 

1DE的逆,即D[EX]]=X

2ED都容易计算。 

3)由E出发去求解D十分困难。 

从上述条件可看出,公开密钥密码体制下,加密密钥不等于解密密钥。加密密钥可对外公开,使任何用户都可将传送给此用户的信息用公开密钥加密发送,而该用户唯一保存的私人密钥是保密的,也只有它能将密文复原、解密。虽然解密密钥理论上可由加密密钥推算出来,但这种算法设计在实际上是不可能的,或者虽然能够推算出,但要花费很长的时间而成为不可行的。所以将加密密钥公开也不会危害密钥的安全。 数学上的单向陷门函数的特点是一个方向求值很容易,但其逆向计算却很困难。许多形式为Y=fx)的函数,对于给定的自变量x值,很容易计算出函数Y的值;而由给定的Y值,在很多情况下依照函数关系f(x)计算x值十分困难。例如,两个大素数pq相乘得到乘积n比较容易计算,但从它们的乘积n分解为两个大素数pq则十分困难。如果n为足够大,当前的算法不可能在有效的时间内实现。

  特点:(函数和密钥是不同的)

(1) 发送者用加密密钥 PK 对明文 X 加密后,在接收者用解密密钥 SK 解密,即可恢复出明文,或写为:

Dsk(Epk(X)) = X

  解密密钥是接收者专用的秘密密钥,对其他人都保密。

  此外,加密和解密的运算可以对调,即

Epk(Dsk(X)) = X

(2) 加密密钥是公开的,但不能用它来解密,即

Dpk(Epk(X)) != X

(3) 在计算机上可容易地产生成对的 PK  SK

(4) 从已知的 PK 实际上不可能推导出 SK,即从 PK  SK 是“计算上不可能的”。

(5) 加密和解密算法都是公开的。

非对称密钥(公钥)密码系统的出现并不会取消对称密钥(密钥)密码系统。原因就是非对称密钥密码系统是用数学函数进行加密和解密,比对称密钥密码系统要慢得多。对于大信息的加密,对称密钥密码系统还是需要的。另一方面,对称密钥密码系统在速度方面的优势也不能成为取消非对称密钥密码系统的理由。在公证、数字签名和密钥交换等方面还是需要非对称密钥密码系统的。这就表明,今天为了能够利用安全的各个方面,我们既需要对称密钥密码系统也需要非对称密钥密码系统。这两个系统是相互补充的.


数字加密主要经过以下几个过程:

1.    当信息发送者需要发送信息时,首先生成一个对称密钥,用该对称密钥加密要发送的报文;

2.    信息发送者用信息接收者的公钥加密上述对称密钥;

3.    信息发送者将第一步和第二步的结果结合在一起传给信息接收者,称为数字信封;

4.    信息接收者使用自己的私钥解密被加密的对称密钥,再用此对称密钥解密被发送方加密的密文,得到真正的原文。


数字签名
 

加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。   

数字签名主要经过以下几个过程

1.    信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;

2.    信息发送者使用自己的私钥签名信息摘要;

3.    信息发送者把信息本身和已签名的信息摘要一起发送出去;

4.    信息接收者通过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。


发送者A用其秘密解密密钥SKA对报文X进行运算,将结果DSKA(X)传送给接收者B。B用已知的A的公开加密密钥得出EPKA(DSKA(X))=X。因为除A外没有别人能具有A的解密密钥SKA,所以除A外没有别人能产生密文DSKA(X)。这样,报文X就被签名了。 用私钥加密发送给对方。对方只能用自己的公钥打开。以实现核实发送者对报文的签名。
 
假若A要抵赖曾发送报文给B。B可将X及DSKA(X)出示给第三者。第三者很容易用PKA去证实A确实发送消息X给B。反之,如果是B将X伪造成X',则B不能在第三者面前出示DSKA(X')。这样就证明B伪造了报文。可以看出,实现数字签名也同时实现了对报文来源的鉴别。
  
但是上述过程只是对报文进行了签名。对传送的报文X本身却未保密。因为截到密文DSKA(X)并知道发送者身份的任何人,通过查问手册即可获得发送者的公开密钥PKA,因而能够理解报文内容。则可同时实现秘密通信和数字签名。SKA和SKB分别为A和B的秘密密钥,而PKA和PKB分别为A和B的公开密钥。

数字签名和数字加密区别:

数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。

数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。

数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。

另外,数字签名采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。

栗子

基于公开密钥的加密过程:

比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:

Bob将他的公开密钥传送给Alice。

Alice用Bob的公开密钥加密她的消息,然后传送给Bob。

Bob用他的私人密钥解密Alice的消息。

基于公开密钥的认证过程:

身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。

还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用密钥对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:

Alice用她的私人密钥对文件加密,从而对文件签名。

Alice将签名的文件传送给Bob。

Bob用Alice的公钥解密文件,从而验证签名。

RSA

1.概述

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。 RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。

       2.算法

RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。

密钥对的产生。选择两个大素数,。计算:

n = p * q

然后随机选择加密密钥e,要求 e  ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足

e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )

其中nd也要互质。数en是公钥,d是私钥。两个素数pq不再需要,应该丢弃,不要让任何人知道。

加密信息 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 运算。

3RSA 的安全性。

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。

 

4RSA的速度。

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

5RSA的选择密文攻击。

RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )^d = X^d *M^d mod n

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

6RSA的公共模数攻击。

若系统中共有一个模数,只是不同的人拥有不同的ed,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1e2,公共模数是n,则:

C1 = P^e1 mod n

C2 = P^e2 mod n

密码分析者知道ne1e2C1C2,就能得到P

因为e1e2互质,故用Euclidean算法能找到rs,满足:

r * e1 + s * e2 = 1

假设r为负数,需再用Euclidean算法计算C1^(-1),则

( C1^(-1) )^(-r) * C2^s = P mod n

另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对ed,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n

7RSA的小指数攻击。

有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是ed都取较大的值。



密钥的管理
 
对称密钥加密方法致命的一个弱点就是它的密钥管理十分困难,因此它很难在电子商务的实践中得到广泛的应用。在这一点上,公开密钥加密方法占有绝对的优势。不过,无论实施哪种方案,密钥的管理都是要考虑的问题。当网络扩得更大、用户增加更多时尤其如此。一家专门从事安全性咨询的公司Cypress Consulting的总裁CyArdoin说:“在所有加密方案中,都必须有人来管理密钥。”
 
目前,公认的有效方法是通过密钥分配中心KDC来管理和分配公开密钥。每个用户只保存自己的秘密密钥和KDC的公开密钥PKAS。用户可以通过KDC获得任何其他用户的公开密钥。
 
首先,A向KDC申请公开密钥,将信息(A,B)发给KDC。KDC返回给A的信息为(CA,CB),其中,CA=DSKAS(A,PKA,T1),CB=DSKAS(B,PKB,T2)。CA和CB称为证书(Certificate),分别含有A和B的公开密钥。KDC使用其解密密钥SKAS对CA和CB进行了签名,以防止伪造。时间戳T1和T2的作用是防止重放攻击。
 
  最后,A将证书CA和CB传送给B。B获得了A的公开密钥PKA,同时也可检验他自己的公开密钥PKB。
 
PKI的主要目的是通过自动管理密钥跟证书,可以为用户建立起一个安全的网络运行环境,使用户可以在多种应用环境下方便的使用加密和数字签名技术,从而保证网上数据的机密性,完整性,有效性。
 
数据的机密性是指数据在传输过程中不能被非授权者偷看
数据的完整性是指数据在传输过程中不能被非法的窜改
数据的有效性是指数据不能被随便否认
 
一个有效的PKI系统必须是安全的,透明的,用户在获得加密和数字签名服务时,是不需要详细了解PKI怎样管理证书和密钥的。
 
密钥是一种用来加密或解密信息的值,即使算法是公开的,也不会破坏其安全性,因为数据如果没有密钥则无法读取。
 
PKI 是一种新的安全技术,它由公钥加密技术,数字证书,证书发放机构(CA),注册权威机构(RA)等基本成分共同组成。
 
数字证书用于internet intranet extranet 上的用户身份验证
 
CA是一个可信任的实体,它根据CA颁发策略负责发布,更新和吊销证书
 
注册权威机构RA 接受用户的请求,负责将用户的有关申请信息存档备案,并存储在数据库中,等待审核,并将审核通过的证书请求发送给证书颁发机构。RA分担了CA的部分任务,管理更方便。
 
比较成熟的对称加密 DES 3DES IDEA
 
非对称加密的特点
密钥是成对出现的,这两个密钥互不相同,两个密钥可以互相机密和解密
不能根据一个密钥来推算得出另一个密钥
公钥对外公开,私钥只有私钥的持有人才知道
私钥应该由密钥的持有人妥善保管
 
接收方生成一对密钥(公钥和私钥),并将公钥向外传递公开
得到该公钥的发送方使用接收方的公钥,对信息进行加密后,再发送给接受方
接受方受到信息后,再用自己的私钥对信息进行解密
 
非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长,速度慢,它不适合对文件加密,而只适合用于少量数据进行加密。因为,在实际应用中,将非对称加密和对称加密混合使用。
 
发送方用对称加密的方法,将文件加密后传给对方
发送方再将对称密钥(即发送方和接受方应该共同拥有的密钥)通过非对称加密的方法加密后传给对方
接收方使用私钥解密得到对称密钥
用对称密钥解密去解读对称加密的密文,从而得到明文信息
 
公认的非对称加密算法是 RSA 算法
 
我发给的人。确保不被别人所得到。是利用加密算法
给我的人。我确定是这个人发的。用的是数字签名。有不可抵赖性
 
HASH算法也称为杂凑算法,这是一个简单的不可逆过程。HASH算法在确保文件的完整性和不可更改性上也有和好的用途。
 
输入一个长度不固定的字符串,返回一串固定长度的字符串,又称为HASH值,通常也称为杂凑值(HASH Value)
 
每一个消息输入单项杂凑函数中,将产生一个杂凑值,这个杂凑值可以保证输入消息的唯一性(不同杂凑值表示不同输入消息)
 
如果通过一个不安全的传输通道的消息在传输前的杂凑值和消息经传输后的杂凑值相同,那么可以认为接受到的信息在很高的概率上与发送消息是相同的,从而可以保证传输消息的完整性
 
在某一特定的时间内,无法查找经HASH操作后生成特定HASH值的原报文。
也无法查找两个经HASH操作后生成相同HASH值的不同报文
 
HASH 算法常用的有SHA 和 MD5
 
数据加密只能保证所发送的数据的机密性,确不能完全保证数据的完整性和不可抵赖性,即不能保证数据在传递过程中不被人篡改和不被人冒名顶替发送。
 
数字签名提供了身份验证和数据完整性,使接受方可确认该发送方的身份标识,并证实消息在传递过程中内容没有被篡改。这样可以防止某个消息的发送方试图通过替换另一个用户的身份发送消息。
 
消息有签发者即发送方自己签名发送,签名者不能否认或难以否认
消息自签发到接受这段过程中未曾做过修改,签发的消息是真实的。
 
数字签名页可以用于时间戳,即可以同时签署消息发送的时间。用户可以用他的私钥签名消息和生成时间戳,证实该消息在某一段时间中存在。数字签名同样可以用来确认某一公钥属于某人。因为对消息进行数字签名时,可以产生一个代表该消息的消息摘要。该消息摘要通过发送方的私钥加密的,接受方可以使用发送方的公钥进行解密。
 
发送方签名某个消息时,将创建一个消息摘要(用HASH算法)
发送方用自己的私钥加密消息摘要
将消息摘要做为消息的附件和消息一起发送给接收方
当接收方收到消息后,就用该发送方的公钥解密此消息摘要
同时,接受方再用发送方的公钥解密消息,然后用同样的算法创建出一个新的消息摘要,并将他与解密的消息摘要进行比较。
如果两个消息摘要互相匹配,则可保证完整性,签名就会认为是有效的。
 
过程
 
发送方
 
1 原文+随机密钥(对称)--用随机密钥加密原文
 
2 原文+HASH 算法--消息摘要
 
3 随机密钥(对称)+接受方的公钥--只有接受方的私钥才能打开取得对称密钥
 
4 消息摘要+发送方私钥--接受方用发送方公钥解开取得摘要消息
 
以上四个过程最后生成了 加密数据和加密的摘要消息
 
接受方
 
1 首先用自己的私钥解开发送过来的加密的对称密钥
 
2 取得对称密钥就可以解开加密的原文
 
3 用发送方的公钥解开加密的消息摘要
 
4 用解开的原文用同样的HASH算法算出一个消息摘要
 
5 对比传过来的在发送方的消息摘要和现在接受的文章的消息摘要是否匹配。匹配则说明信息没有被改动过。
 
其中使用了对称密钥 非对称的公钥 私钥 还有HASH 算法
 
数据经过了加密。如果想解开数据就必须有接受方的私钥。可是私钥是不传输的。所以很难破解数据。但是这个加密是使用接受方的公钥加密的。而公钥是公开的。所以有人可以采用接受方的公钥再伪造数据部分。这样和数据摘要一起发给接受方。因为是采用接受方公钥所加密的。所以接受方可以打开被篡改的数据。可是这种篡改的数据再经过HASH算法无法跟发送过来的消息摘要相同。从而被证明是篡改的或被有损的。而因为消息摘要是用发送方的私钥来加密的。如果要伪造就必须有发送方的私钥。而发送方的私钥也是不在网络上传送的。这样只有得到双方的私钥才能伪造。
 
数字签名一般不采用非对称加密算法 RSA等。而是发送方对整个数据进行变换,得到一个值,将其作为消息摘要和签名,接受者使用发送者的公钥对消息摘要进行解密运算。如果其结果与原摘要一致,则此数字签名有效,证明对方的身份是真实的。一般数字签名中使用的加密算法有HASH算法,安全的HASH算法等。再HASH算法中,目前比较多的是MD5。
 
接受方还必须有一个机制,以确保密钥对是属于真正的发送者的。而不是属于没个发送方的模仿者的。这是通过受信任的第三方颁发的证书来完成的,该证书证实了公钥所有者的身份标识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值