读书频道 > 安全 > 深入浅出密码学——常用加密技术原理与应用
6.1 对称密码学与非对称密码学
2012-09-26 14:22:39     我来说两句 
收藏    我要投稿   
本书拥有的诸多特征使得它成为密码学从业者和学生独一无二的资源—本书介绍了绝大多数实际应用中使用的加密算法,并重点突出了它们的实用性。对于每种加密模式,我们都给出了最新的安全评估和推荐使用的密钥长度...  立即去当当网订购

在本章可以看到,非对称算法(即公钥算法)与诸如 AES 或DES 的对称算法完全不同。绝大多数公钥算法都基于数论函数,这一点与对称密码大不相同—对称密码的目标通常是让输入和输出之间不存在紧凑的数学描述关系。尽管人们常用数学结构来描述对称密码内的小型分组,比如 AES 中的 S- 盒,但这并不意味着整个密码形成了一个紧凑的数学描述。

1. 回顾对称密码学

为了理解非对称密码学的基本原理,首先我们需要回顾一下基本对称加密方案,如图6-1 所示。


 

一个对称系统必须满足以下两个属性:

(1)  加密和解密使用相同的密钥。

(2)  加密函数和解密函数非常类似( 在DES 中,加密函数和解密函数基本相同) 。

图6-2 显示了对称密码学的一个简单模拟。假设有一个锁非常强壮的保险箱,只有Alice和Bob 拥有该锁的密钥。对消息加密的动作可以看作是将消息放在保险箱里。为了读取该消息,即对消息解密,Bob 需要使用他的密钥打开保险箱。


 

现代对称算法都非常安全快速,并被广泛使用,比如AES 或3DES。然而,对称密码方案也存在一些缺点,下面将对此进行讨论。

密钥分配问题  Alice 和Bob 必须使用一个安全的信道建立密钥。请记住,消息传递所使用的通信链路是不安全的,所以,尽管直接在该信道上传输密钥是最简单的密钥分配方式,但却是不可取的。

密钥个数   即使解决了密钥分配问题,我们还可能需要处理大量的密钥。在拥有n 个用户的网络中,如果每对用户之间都需要一个单独的密钥对,则整个网络需要的密钥对数是:


 

且每个用户都需要安全地存储n − 1 个密钥。即使对于中型的网络而言,比如一个拥有2000名员工的公司,也需要生成 4 百万个密钥对,并且每个密钥对都必须通过安全信道进行传输。关于这个问题的更多讨论可以参见第13.1.3 节( 处理对称密码网络中的密钥有几种巧妙的方法,详细的内容在第 13.2 节介绍;然而,这些方法或多或少存在一些问题,比如单点故障等) 。

对Alice或Bob 的欺骗没有防御机制  Alice和Bob 能力相同,因为他们拥有的密钥相同。因此,对于那些需要防止Alice或Bob 欺骗( 与预防像Oscar的外部攻击者不同) 的应用而言,对称密码学是不能使用的。例如,在电子商务应用中证明Alice的确发送了某个消息( 比如在线购买平板电视) 是非常重要的。如果只使用对称密码学,Alice在生成订单后又改变了主意,她总是可以说是该电子采购订单是提供商 Bob 伪造的。这种预防行为称为不可否认性,并可以通过非对称密码学实现,详细内容将在第 10.1.1 节中讨论。本书第 10章将要介绍的数字签名也可以提供不可否认性。

2. 非对称密码学的基本原理

为了克服这些缺点,Diffie、Hellman和Merkle 基于以下思路提出了改革性的建议:加密者( 在本例中指的是Alice)用来加密消息的密钥没有必要保密。重要的部分在于,接收者Bob 只有使用密钥才能解密。为了实现一个这样的系统,Bob 公开了一个众人皆知的加密密钥。此外,Bob 还拥有一个用于解密的匹配密钥。因此,Bob 的密钥k 由两部分组成:公开部分kpub 和保密部分kpr

图6-3 显示了这样一个系统的简单模拟,此系统的工作方式与街角旧邮箱的工作方式非常类似:每个人都可以向该邮箱投信( 即加密) ,但是只有拥有私人钥匙( 密钥) 的人才可以取信(即解密)。假设有一个拥有此功能的密码体制,公钥加密的一个基本协议如图6-4 所示。



 

从上面的协议可以看出,尽管可在不使用安全信道建立密钥的情况下加密消息,但如果想要使用类似AES 的算法加密,我们仍然不能交换密钥。然而,对此协议的简单修改就能使它支持密钥交换。我们需要做的就是使用公钥算法加密一个对称密钥,比如AES 密钥。一旦Bob 解密了该对称密码,双方就都可以使用对称密码来加密和解密消息。图6-5 显示了一个基本的密钥传输协议,为了方便说明,其中使用的对称密码为 AES(当然,这个协议也可以使用其他任意对称算法)。图6-5 所示协议比图6-4 所示协议优胜之处在于,负载是使用对称密码加密的,这将比非对称算法更快。

从目前的讨论可知,非对称密码学看上去是一种实现安全应用非常适合的工具。现在的问题仍然是如何构建一个公钥算法。第7 章、第8 章和第9 章介绍了大多数具有实用性的非对称方案,它们都来自于同一个公共原理,即单向函数。单向函数的正式定义如下:

定义6.1.1  单向函数

函数f () 是一个单向函数,仅当:

1. y = f (x) 在计算上是容易的,且
2. x= f-1(y) 在计算上是不可行的。


 

显然,上面的形容词“容易的”和“不可行的”并不很准确。用数学术语来说,如果一个函数可以用多项式时间衡量( 即它的运行时间是一个多项式表达式) ,则说明它在计算上是容易的。为了能用于实际密码方案,y = f (x)的计算必须足够快,而且不会给应用带来慢到不可接受的执行时间。逆函数x= f-1(y)必须是计算密集型的,这意味着即使使用目前已知的最好的算法,在任何合理的时间周期内( 比如10000 年) 评估该计算也是不可行的。

实际公钥方案中常使用两种主流的单向函数。第一个就是整数分解问题,它是RSA 的基础。给定两个大素数,计算它们的乘积非常容易;但是将它们的乘积分解因式却是非常困难的。实际上,如果每个素数对应的十进制数字都超过150 位,则即使使用数千台PC运行多年也不可能因式分解得到乘积。另一个得到广泛使用的单向函数为离散对数问题,这个问题不是很直观,将在第8 章中予以介绍。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:概述
下一篇:6.2.1 安全机制
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站