首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第18期->技术专题
期刊号: 类型: 关键词:
SSL简介及其安全性

作者:Charl Van Der Walt
整理:backend < mailto: backend@nsfocus.com >
主页:http://www.nsfocus.com
日期:2001-02-05

--[ SSL简介 ]----------------------------

在互联网上访问某些网站时也许你会注意到在浏览器窗口的下方会显示一个锁的
小图标。这个小锁表示什么意思呢?它表示该网页被SSL保护着。SSL全称为
"Secure Sockets Layer"(安全套接层),是一种用于网站安全连接的协议(或
技术)。所谓的安全连接有两个作用。首先是SSL可以提供信息交互双方认证对
方的身份标识。显而易见地,这对当你开始与对方交换机密信息前确切了解对方
身份是非常重要的。SSL通过数字证书的技术实现使得这一需求得以满足。另一
个是它能够使数据以不可读的格式传输,以利于在不可信网络(例如互联网)上
的安全传输需要。这种不可读格式通常由加密技术实现。本文将主要讨论SSL是
如何安全可靠地在互联网事务中应用,包括:SSL是如何工作的,为什么它能有
效地对付黑客攻击,以及有时候它又是如何帮助黑客的。


--[ 数字证书(Digital Certificates) ]----------------------------

要讨论SSL,必须了解数字证书的概念。数字证书是一种能在完全开放系统,倒
如互联网(之所以说互联网是一个开放系统,是因为我们无法控制其中的用户是
谁),中准确标识某些主体(如一个人或一个网站)的机制。一个数字证书包含
的信息必须能鉴定用户身份,确保用户就是其所持有证书中声明的用户。数字证
书由CA(Certificate Authorities)机构承认。CA是被银行、政府和其它公共
机构认可用于标识证书所有者的第三方机构。除了唯一的标识信息外,数字证书
还包含了证书所有者的公共密钥。

例如,一个银行希望通过加密手段提供安全的在线银行业务。加密需要交换密
钥,这在互联网上存在很大困难,因为没有办法知道网络的另一端身份的确切
性。SSL却能够克服这一障碍,因为它不但能标识信息交换双方的身份,还包含
了加密传输所必需的密钥。当在一个网站上使用SSL来加密连接时,只需服务器
端拥有证书即可满足要求。用户端可以使用传统的用户名/口令和PIN号码结合来
标识自己的身份。在稍后的讨论中我们可以知道,SSL的第三个版本(version
3)能够让用户也用数字证书来标识自身身份。这称为“客户端认证”(client
side authentication')。这样只要正确实现了SSLv3,就能显著提高系统的安
全性。


--[ 服务器证书认证的价值 ]----------------------------

数字证书的使用允许SSL提供认证功能--保证用户所请求连接的服务器身份正
确无误。在信用卡号或PIN号码等机密信息被发送出去前让用户确切知道通讯的
另一端的身份是毫无疑问的重要的。如果用户所连接的服务器并不是其所希望的
服务器,后果将会如何?这是显而易见的。在互联网中,网站实际上是一个IP地
址--一个全球唯一的32-bit数字,但它难以记住。DNS(Domain Name System)
和其它机制用于将IP地址映射到用户容易记住的名字,例如
'www.internetbanking.com'。当用户在浏览器的地址栏输入
'www.internetbanking.com'时,一连串复杂的处理过程会确定所请求的是什么
IP地址。这个处理过程的绝大部份内容都超出了用户和网站管理员的知识或控制
范围,而且中其中有多处可能会被恶意攻击。也就是说,当用户输入
'www.internetbanking.com'时,实际上会连接到被潜在攻击者控制的网站,而
不是银行网站。

网站被攻击后所造成的后果可轻可重。试想如果攻击者建立了与银行在线业务网
站完全相同的站点,用户可能会在不知不觉中向攻击者提交其信用卡号和PIN号
码,而结果却仅仅是“技术故障,请稍后再试”。这样,攻击者就能够利用刚欺
骗得来的信用卡号和PIN号码轻松地从真实网站处偷取金钱。(攻击的方法其实
多种多样,以后再详细探讨。)

SSL试图通过将服务器域名存放到数字证书中来解决这种问题。当用户通过SSL连
接一个网站时,服务器显示含有其域名的证书。浏览器将证书中的域名与用户端
浏览器地址栏的域名相比较。任何差异都可能意味着存在安全问题,并通过一个
弹出窗口提示用户。理论上(和排除技术实现错误)这种机制非常好。然而这一
过程存在两处不完善的假设:

1、用户能够完全正确地响应(处理)弹出窗口的安全提示。
2、用户已经知道该网站拥有数字证书。

设想,有攻击者象上面讨论过那样复制了一个银行网站的拷贝。但攻击者不知道
如何欺骗SSL认证机制的简单方法,所以他干脆将SSL功能去掉。这样攻击者的伪
造银行网站没有数字证书,用户的浏览器也就不会检查地址栏域名了,而仅有的
一个不易查觉的区别是在用户端浏览器不会出现指示SSL安全连接的加锁图标。
但用户很可能并未意识到没有了安全站点图标,也因不知道访问的是攻击者伪造
站点而提交其有效的个人信息。

很明显的,SSL技术提供了有效的认证。然而大多数用户并未能正确意识到通过
SSL进行安全连接的必需性。除非越来越多的用户了解SSL和安全站点的基本知
识,否则SSL仍不足以成为保护用户网络连接的必需技术。除非用户能够充分意
识到访问站点时应该注意安全连接标识,否则现有的安全技术仍不能称为真正有
效。


--[ SSL和被保存的数据 ]----------------------------

当用户在使用SSL技术的网站中输入数据时,这些数据的状态是什么?它们是否
安全?当用户输入其信用卡号码信息,并被加密后在互联网上安全地传输到网站
时,它们是在哪里被处理的?以及是如何处理的?例如信用卡号,它是和用户名
以及其它个人详细资料一起被保存在数据库中,和/或转发到某些财政部门以便
进一步的处理。这些数据是否安全?它们所存放的地方是否安全?谁能访问这些
被保存的数据?虽然有许多很好的电子商务后端服务机构,但是攻击者仍然可能
突破并控制数据所存放的服务器(例如2000年12月Egghead网站被入侵)。事实
上,从另一个角度讲我们更应该知道的是在已经发生的信用卡号或其它信息被泄
露的事件中,攻击是如何成功的。

虽然一个网站可能使用了SSL安全技术,但这并不是说在该网站中正在输入和以
后输入的数据也是安全的。所有人都应该意识到SSL提供的仅仅是电子商务整体
安全中的一小部份解决方案。事实是带有数字证书的网站对保护用户信息安全性
方面是毫无贡献的。


--[ SSLv3和客户端证书(Client-Side Certificates) ]-------------------

在1996年对其第三版的介绍中,SSL提供了对客户端证书的支持。这意味着服务
器可以在SSL会话建立前,要求客户端(或者请求连接到服务器的机器)提供其
自身的数字证书。用户名或电子邮件地址被记录在证书中,被服务器用于检验用
户的身份标识。记住客户端的证书是被CA机构数字签名过以确认用户身份的。一
旦客户端认证被正确实现时,攻击将异常难以进行。此时攻击者是否会放弃呢?
不大可能。(攻击者从来都是不会在挑战前退缩的!)


--[ SSL和漏洞攻击 ]----------------------------

SSL在网站上的使用可能会造成管理员对其站点安全性的某些错觉。使用了SSL的
网站所可能受到的攻击和其它服务器并无任何区别,同样应该留意各方面的安全
性。简言之,加密和数字证书,SSL的主要组成,从来都无法保护服务器--它
们仅仅可以保护该服务器所收发的数据。以下例子将阐明一些SSL仍然会被攻击
的方法。


* 证书的弱点

应该提醒的是类似Verisign之类的公共CA机构并不总是可靠的。系统管理员经常
犯的错误是过于信任Verisign等的公共CA机构。例如,如果Verisign发放一个证
书说我是“某某某”,系统管理员很可能就会相信“我是某某某”。不幸的是,
对于用户的证书,公共CA机构可能不象对网站数字证书那样重视和关心其准确性。

例如,Verisign发放了一个'hackers'组织的证书,而我是其中一员
'Administrator'。当一个网站要求认证用户身份时,我们提交了
'Administrator'的证书。你可能会对其返回的结果大吃一惊的。更为严重的
是,由于微软公司的IIS服务器提供了“客户端证书映射”(Client
Certificate Mapping)功能,用于将客户端提交证书中的名字映射到NT系统的
用户帐号,在这种情况下我们就能够获得该主机的系统管理员特权!


* 暴力攻击证书

如果攻击者不能利用非法的证书突破服务器,他们可以尝试暴力攻击
(brute-force attack)。虽然暴力攻击证书比暴力攻击口令更为困难,但仍然
是一种攻击方法。要暴力攻击客户端认证,攻击者编辑一个可能的用户名字列
表,然后为每一个名字向CA机构申请证书。每一个证书都用于尝试获取访问权
限。用户名的选择越好,其中一个证书被认可的可能性就越高。暴力攻击证书的
方便之处在于它仅需要猜测一个有效的用户名,而不是猜测用户名和口令。


* 利用特洛伊木马窃取有效的证书

最后,攻击者可能试图窃取有效的证书及相应的私有密钥。最简单的方法是利用
特洛伊木马。特洛伊木马的概念和作用此处不再讨论。试想微软公司在2000年10
月因为特洛伊木马而被成功入侵,其它网站同样也存在这种安全风险。

这种攻击几乎可使客户端证书形同虚设。它攻击的是证书的一个根本性弱点:私
有密钥--整个安全系统的核心--经常保存在不安全的地方。对付这些攻击的
唯一有效方法或许是将证书保存到智能卡或令牌之类的设备中。但这并不是本文
要讨论的范围。

以上三种攻击方法暴露了安全认证概念的一些缺点。那么客户端认证是否是问题
的所在呢?我想恐怕不是。要了解更多关于认证在安全方面一些固有的问题,请
参阅Bruce Schneier and Carl Ellington写的另一些文章。


--[ SSL和IDS(入侵监测系统) ]----------------------------

IDS即Intrusion Detection System,是一种用于监测攻击服务器企图的技术和
方法。典型的IDS监视网络通讯,并将其与保存在数据库中的已知攻击“特征”
或方法比较。如果发现攻击,IDS可以提醒系统管理员、截断连接或甚至实施反
攻击等。问题在于如果网络通讯是加密的,IDS将无法监视。这反而可能会使攻
击更为轻松。

假设在一个典型的被防火墙和IDS防护的DMZ环境中,攻击者能轻松地探测被SSL
保护的网站,因为SSL对数据的加密使得IDS无法正常监测攻击。通常一台单一的
网站服务器会同时使用SSL和普通的TCP协议。由于攻击者攻击的服务器而不是网
络连接,他们可以选择任意一种途径。通过SSL途径,攻击者知道SSL加密为他们
带来的好处,这样更容易避开IDS系统的监测。


--[ 结论 ]----------------------------

不要被上面的讨论迷惑了。排除本文所描述的问题,SSL仍然不失为一套全面完
善的安全策略中有效的组成元素。然而,与网络安全的其它工具软件一样,仅使
用单一的防护软件都是无效的。以上所讨论的,和任何其它安全工具一样,仅当
有人使用它才是有效的。对SSL的过高评价有可能带来安全风险。SSL并不是什么
万能武器,它仅是网络安全工具的一种,必须和其它网络安全工具紧密结合,方
能构造出全面、完善、安全可靠的网络。


<< 完 >>
版权所有,未经许可,不得转载