安全观察密码和信用卡,第 1 部分

Jesper M. Johansson

目录

不可行的安全建议
不可行且不正确
不能理解的建议
基于映像的站点身份验证的缺陷

最近,我应邀接受了明尼苏达大学旗下杂志的访谈。很显然,他们想在某些成功的校友身上印证某种特征,不过没有找到 – 因此他们不得不找到我顶数。采访者询问我的职业,我就试着解释了安全

基础结构软件。“这听起来太复杂了!我认为安全涉及的基本就是密码和信用卡。”她大叫道。

我对此略加思考,结论是她确实切中了要害。安全确实差不多就是密码和信用卡。至少,对最终用户是这样。而我们这些行内人的看法是:安全涉及加密算法、Kerberos 是否就比 TLS 或 NTLMv2 更好?WS* 的优点,是否应向密码哈希中加入其他元素?以及所有其他我们乐于讨论的诀窍。当然,我们自己的视角比最终用户更深入,但我们却都忽略了一件基本的事情:对于我们的客户而言,安全的内涵差不多就是密码和信用卡。

当然,我们如此热衷于讨论的秘诀和如此乐此不疲地开发的新技术都是为了保护最终用户的数据。但我仍然认为我们偏离了轨道。我们这些 IT 世界中的亚文化群之所以存在,就是为了满足委托人的特定需要,即保证数据安全的需要。其中自然包括确保 IT 资产的安全使用。这就是它的本质。

在前几期专栏中,我提到没有人会出去买一台计算机专门用来运行防病毒软件的。用户购买计算机是为了使用网上银行、玩计算机游戏、写电子邮件、做家庭作业或履行其他基本功能。同样地,没有哪个公司成立 IT 安全组而仅仅是为了让他们实现 NTLMv2。它是为了保护公司资产,使公司最大程度地安全使用其 IT 资源并实现业务目标。

为大众服务就是我们存在的意义。

因此,我必须问问我们现在是否真正地做好了“服务”。或者说,我们这些安全亚文化群实际上是不是带来了负面效果?立法者和执法者是不是在帮助我们发挥负面影响?我们实施的所有这类新技术对最终用户真正有所帮助吗?我对此心存疑虑。因此,我想研究一下全球 IT 提供商实际过大于功的几个领域。

在某些时候,总感觉我们授以用户的大部分安全建议和安全技术都是不可行的、不正确的、不能理解的或(在许多情况下)这三种情况的某种组合。在这个由三部分组成的系列中,我将研究一些我们给用户带来困惑的事例,具体而言,就是给出的建议或部署的技术包括上述的一种或几种情况。

不可行的安全建议

迷惑人们的一个最佳途径就是提供不可行的安全建议。甚至是给出个不正确的建议。图 1 说明了一则屡试不爽的、理论可行却毫无价值的建议。

fig01.gif

图 1 不可行的安全建议(单击此图像查看大图)

看看是在什么样的环境中要求您为所拥有的每个在线帐户使用不同的密码的?三十年前这种建议还有些意义。那时联网的人数不过数百,他们都是非常聪明的人,对密码没有苛求。遗憾的是,这则建议一直被保留下来,并一次又一次的重复,但已不符合当今计算机的实际使用情况。

您有多少个在线帐户?抛开那些没记住的不算,我自己就有 115 个。图 1 中的建议不仅建议我应使用 115 个不同的密码,还应每 30 到 60 天更换这 115 个密码。换句话讲,我每天应更改我的其中 2 到 4 个。(算算看:这同时意味着我一年中将使用 690 到 1380 个密码。)

或许提供该建议某些站点的技术人员能够每天提出 4 个不错的密码并短时记住 115 个当前密码,但可以确信的是,99.99 % 普通的 Web 冲浪公众都无法做到这一点。

从纯粹的理论角度来看,在不同的场合使用不同的密码实际上是正确而有意义的,每 30 到 60 天更改一次您所有的密码的建议也是如此。但此建议同时也是不可行的。考虑到用户目前使用的密码数,如果不借助任何帮助(如纸张或软件),他们完全无法执行该建议。进入下一个示例。

不可行且不正确

图 2 中所示的这则建议来自于一家全球最大银行的 Web 站点,它既不可行,又不正确。标题 "Read our password advice"(请阅读我们的密码建议)下的同样推荐 "different passwords everywhere"(不同的场合使用不同的密码)。同时还建议您 "never write them down"(切勿将其记在纸上)。

fig02.gif

图 2 不可行且不正确的建议(单击此图像查看大图)

这样看来,我现在有 115 个不同的密码,我还得每天创建 4 个新密码,还不能用笔将它们记下来。有那么一阵子我认为自己头脑不灵光,因为我记不住自己所有的密码。然后我发现实际上每个人都是这样子的。人类根本记不住 115 个密码。我们能记住并处理大约七大块信息 – 这是我们与生俱来的特性。如果按照 Internet 上找到大多数密码建议所述,它实际连一个密码的要求都无法满足(请参阅musanim.com/miller1956 上 George A. Miller 的文章“神奇的数字七加减二:我们信息处理量的一些限制”)。

令人遗憾的事实是在涉及到密码建议时,我们的行业却在时时误导用户。如果安全亚文化群打算告诉用户他们应在不同的场合使用不同的密码,然后我们还需要告诉他们该如何做 – 即将这些密码记录并存储在安全的地方。将它们写在纸上、使用安全的文档或使用专用工具,如 PasswordSafe (sourceforge.net/projects/passwordsafe)。面对现实吧,我们或是记下过自己的密码,或是在不同的场合使用相同的密码。实际上,最近的一项调查表明 88 % 的用户在所有需要身份验证的系统中都使用相同的密码(请参阅 msnbc.msn.com/id/24162478)。

反对记下密码的建议的确是这种趋势的一个推动因素。我们需要做的是向用户讲解如何有效地管理密码(及其他敏感数据),而不是对此信息放任自流。这样他们凭据的安全性就会提高。

不能理解的建议

在 20 世纪 60、70 和 80 年代,没有大量用户在线并使用基于 Web 的服务,前两种情况是很有效的古老建议。到目前为止还没有人十分抱怨这种建议,因为它们已是广为接受的意见。

这种建议迷惑了用户,使他们对存储其密码心存不安。如果安全专家仅对用户给出建议,而不是帮助他们完成必要的工作,那是安全专家的失误。毕竟,找出管理安全性的方法不是用户的职责。只有安全专家才胜任此工作。我们必须为我们的用户找出管理其所有在线帐户的可行方法。但由于大多数指导都只是在重复相同的过时建议,用户只好借助记事贴和电子表格记住他们的密码。

作为一种身份验证机制,密码发挥着巨大的作用。但密码的主要问题在于人们很难记住它们。IT 世界一直在发明各种新机制来替换密码或扩充密码,而不是尝试解决人性本身的问题,结果自然不尽人意。使得用户们感到更加困惑。

我上次访问某个金融服务站点时,所显示的登录屏幕上只有一个用户名文本框(请参阅图 3),让我感到非常吃惊。

fig03.gif

图 3 我在哪里键入我的密码?

我起初以为自己访问的是恶意 Web 站点。我随后迅速地验证了该站点,这一步还比较容易,因为该站点提供了证书,结果是该站点没有问题。问题在于人们已习惯于在登录某个站点同时看到两个文本字段 - 用户名和密码。这一切来源于多年来所遇到的相同常用工作流。因此当您猛然间发现某个网站仅要求您输入用户名时,事情就有了波折。此示例的缘由是提供商实施了一项使用图片识别访问站点的用户以防止仿冒攻击的技术。按照其设想,当您填完用户名后,站点会弹出一个包含可识别图片的屏幕,如图 4 所示。

fig04.gif

图 4 某些站点现在使用图片来为用户验证站点(单击此图像查看大图)

其原理为您知道每个网站会弹出什么样的图像。如果未显示正确的图像,则您可认为该站点被仿冒了。就其本质而言,这是个不错的概念。假定用户知道每个网站会弹出什么样的图像,这种策略还是颇有些意义的。

敏锐的读者会注意到图 4 中的绿色地址栏。这代表该网站使用 SSL 和扩展验证 (EV) 证书,这也是为什么地址栏是绿色的原因。同时意味着整个利用图像识别站点的假设没有任何附加价值。至少一部分最终用户还让这些图像搞得昏头涨脑了。该站点已向用户验证了自己 – 它已提供了包含公司名称、Web 站点地址和信任发行商名称的证书。而地址栏为绿色的事实又告诉我该公司还花费了三倍于 EV 证书的开销。

当然,这样的图片也是可以伪造的。如果用户可提交她自己的图片,攻击者就有多种办法大概地推断出当前所使用的图像。如果用户在每个站点都使用相同的图片,攻击者就有了一个好机会,他只需创建一个包含用户喜爱内容的站点(我将让您提出自己的示例),并要求用户提供站点验证使用的图片即可。如果用户在所有站点都使用相同的图片,这个新站点将得到用户在其他站点使用的图像,例如,她的网上银行站点。

某些站点会让您选择自己的图像,而有些则会使用照片存储库。例如,图 4 中的站点有 318 张库存照片可供选择。之前的诡计对于那些不允许用户提交自己照片的网站无法奏效。但如果用户不能选择她自己的图像,则对于那些用户不常访问的站点,用户将不大可能记住哪些图片用于哪些站点。我确实不知道自己在图 4 所示的站点上使用什么图片,但可以向您保证不是截图上所显示的那张图片。

这种基于图像的方法的问题在于攻击者可以显示 318 张图片中的任何一张或随机地选择 Flickr 中的一张照片,而许多用户都会认为该图像是正确的。如果大部分人能记得诸如哪张照片能访问哪些站点之类的事情,我们就不会发生目前仿冒和安全相关的问题了。

那么,为什么站点在已使用证书验证自身的情况下还要让用户用图片验证站点呢?为什么不只使用该证书并帮助用户了解如何验证它们呢?证书已证明了站点对用户的身份。

获得证书的过程当然要比获得用户的站点身份验证图像安全得多。如果是 EV 证书,并且您使用的是 Internet Explorer® 7 或 Firefox 3,浏览器还会在地址栏中突出显示相关的证书信息。遗憾的是,这种突出显示仅对极为昂贵的 EV 证书有效。

基于映像的站点身份验证的缺陷

图片身份验证技术存在诸多问题。首先,它使得从某个站点获取用户名变得极为容易。实际上,如果您输入错误的用户名,图 4 中所示的站点将会显示一个对话框,如图 5 所示。如果您为某个已选择了一张秘密图像的用户键入了正确的用户名,您会看到这个人的秘密图像。很显然,这种发现对于尝试获取有关某个用户信息的攻击者而言极具价值。

fig05.gif

图 5 可方便获取用户名的图像身份验证的站点

此处所示的实现类型事实上没有任何安全价值。攻击者可简单地在伪造的站点上复制该登录工作流。该伪造站点会要求输入用户名,然后将其传递给真正的站点。您甚至可在客户端上使用 AJAX 实时更新表单,产生更逼真的效果。此外,如果合法站点尚未缓解登录表单上的跨站点请求伪造攻击,AJAX 代码甚至可将请求直接提交给真正的站点,除非浏览器可缓解跨站点 XML-HTTP 请求。

现在,在结果返回后,攻击者可分析数据、提取图片并将其向最终用户显示。换句话讲,任何能向用户提供伪造登录站点的攻击者也能显示该用户的秘密图片。最终的结果就是使用基于图像的站点身份验证是完全没有任何附加价值的。图片会在向站点验证用户身份之前显示,因此,如果攻击者具有或可获取用户名称,则同样能使用该图片。

假定从未提醒用户要在提交表单前查找证书,这是一种安全的假设,因为使用基于图像的站点身份验证本身是基于相同的假设 – 从用户那里获取用户名是不困难的。另外,由于很多基于图像的站点身份验证方案对于有效用户名与无效用户名的响应是不同的,也使得获取用户名变得轻而易举。攻击者甚至可在攻击真正开始前顺便做到这一点。

最后,我们使用户产生了两种感觉:更安全或更困惑。我们花费了相当数量的股东权益实现基于图像的站点身份验证,却根本没有进一步地阻止恶意用户诱导最终用户将其凭据提交给伪造的 Web 站点。

以上就是我在本期安全观察中要与大家交流的全部内容。请在下月查看本系列的第 2 部分,我将讨论更多误导性安全措施以及不良身份验证的示例

Jesper M. Johansson 是研究安全软件的软件架构师,还是《TechNet 杂志》的特约编辑。他拥有 MIS 博士学历,具有 20 多年安全方面的工作经验,同时还是企业安全方面的 Microsoft MVP。他的最新著作是《Windows Server 2008 安全资源工具包》

© 2008 Microsoft Corporation 和 CMP Media, LLC。保留所有权利;未经允许不得复制本文的部分或全部内容。