1.对称与非对称密钥加密比较

非对称密钥加密(用接收方的公钥进行加密)解决了密钥协定与密钥交换问题,但并没有解决实际安全结构中的所有问题。具体地说,对称与非对称密钥加密还有其他一些差别,各有所长。下表总结一下这些技术的实际用法:

特征

对称密钥加密

非对称密钥加密

加密/解密使用的密钥

加密/解密使用的密钥相同

加密/解密使用的密钥不相同

加密/解密速度

很快


得到的密文长度

通常等于或者小于明文长度

大于明文长度

密钥协定与密钥交换

大问题

没问题

所需密钥数与消息交换参与者个数的关系

大约为参与者个数的平方,因此伸缩性不好

等于参与者个数,因此伸缩性好

用法

主要用于加密/解密(保密性),不能用于数字签名(完整性与不可抵赖检查)

可以用于加密/解密(保密性)和用于数字签名(完整性与不可抵赖检查)

上表显示了对称与非对称密钥加密各有所长,也都有需要改进的问题。非对称密钥加密解决了伸缩性和密钥协定与密钥交换问题,但速度慢,而且产生比对称密钥加密更大的密文块,因此使用的密钥比对称密钥加密大,算法更复杂。

2.两种加密机制的组合

组合这两种加密机制,要达到下列目标:

(1)解决方案完全安全。

(2)加密/解密速度要快。

(3)生成的密文长度要小。

(4)伸缩性要好,不能引入更多的复杂性。

(5)要解决密钥发布问题。

在实际中,对称与非对称密钥加密结合起来,提供了相当高效的安全方案,工作如下,这里假设A是发送方,B是接收方。

(1)A的计算机利用DES、IDEA与RC5之类的对称密钥加密算法加密明文消息(PT),产生密文消息(CT),如下图所示:

非对称加密 能根据秘钥来反推公钥么_非对称


这个操作使用的密钥(K1)称为一次性对称密钥,用完即丢弃。

(2)用对称密钥加密明文(PT)。现在要把一次性对称密钥(K1)发送给服务器,使服务器能够解密密文(CT),恢复明文消息(PT)。这又到密钥交换问题了,这里要用一个新的概念,A要去第一步的一次性对称密钥(K1),用B的公钥(K2)加密K1。这个过程称为对称密钥的密钥包装,如下图所示:

非对称加密 能根据秘钥来反推公钥么_数字信封_02


我们可以看到对称密钥K1放在逻辑箱中,用B的公钥(K2)封起来。

(3)现在,A要密文CT和已加密的对称密钥一起放在数字信封(digital envelope)中,如下图所示:

非对称加密 能根据秘钥来反推公钥么_数字信封_03


(4)这时A将数字信封(包含密文T)和用B的公钥包装的对称密钥(K1)用基础传输机制(网络)发送给B,如下图所示:

非对称加密 能根据秘钥来反推公钥么_非对称_04


这里没有显示数字信封的概念,假设数字信封包含两个项目。

(5)B接收并打开数字信封,B打开信封后,收到密文CT和用B的公钥包装的对称密钥(K1),如下图所示:

非对称加密 能根据秘钥来反推公钥么_加密算法_05


(6)B可以用A所用的非对称密钥算法和自己的私钥(K3)解密逻辑盒,其中包含B的公钥包装的对称密钥(K1),如下图所示:

非对称加密 能根据秘钥来反推公钥么_非对称加密 能根据秘钥来反推公钥么_06


这样,这个过程的输出是一次性对称密钥K1。

(7)最后,B用A所用的对称密钥算法对称密钥K1解密密文(CT),这个过程得到明文PT,如下图所示:

非对称加密 能根据秘钥来反推公钥么_加密算法_07

这个基于数字信封的过程之所以有效,原因如下:
(a)首先,用对称密钥加密算法和一次性会话密钥(K1)加密明文(PT)。对称密钥加密算法速度快,得到的密文(CT)通常比原先的明文(PT)小。如果这时使用非对称密钥加密算法,则速度很慢,对大块明文更是如此。另外,输出密文(CT)也会比原先的明文(PT)大。
(b)用B的公钥包装的对称密钥(K1),由于K1长度小(通常是56或者64位),因此这个非对称密钥加密过程不会用太长时间,得到的加密密钥不会占用太大空间。
(c)这个机制解决了密钥交换问题,同时不失对称密钥加密算法和非对称密钥加密算法的长处。
但是还有问题没有解决。B怎么知道A用了哪种对称或非对称密钥加密算法?B要知道这个信息之后才能用相同算法进行相应解密。实际上,A发送给B的数字信封包含这个信息。
在实际中对称与非对称密钥加密算法就是这样结合使用的。数字信封是相当有效的技术,可以从发送方向接收方传输消息,达到保密性。