中国领先的IT技术网站
|
|

除了双因素:如何使用U2F来改善应用安全

使用2FA(双因素身份认证)曾被视为是对此的补救方法,但其方法已被发现有着黑客可利用的漏洞,而应对此挑战的办法则比较昂贵的。幸运的是,还有一个双因素身份认证的替代方案:通用第二要素认证,或称U2F,它正是应用程序开发人员所需一个的开源方案。

作者:陈峻编译来源:51CTO.com|2017-02-08 19:10

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


【51CTO.com快译】您还记得过去在用双因素身份验证之前,只使用一个用户名和密码就能被认为是安全的好时光吗?事实上,其实从来都不是那样的。在少年时的朱利安·阿桑奇(Julian Assange)闯入五角大楼之前,甚至在互联网广为传播到世界各地之前,人们就在使用暴力密码攻击去攻破了一个个系统。美剧《黑客军团》里的Mr. Robot就运用社交工程破解了其视为目标的大多数人的账户。

除了双因素:如何使用U2F来改善应用安全

使用2FA(双因素身份认证)曾被视为是对此的补救方法,但其方法已被发现有着黑客可利用的漏洞,而应对此挑战的办法则比较昂贵的。幸运的是,还有一个双因素身份认证的替代方案:通用第二要素认证,或称U2F,它正是应用程序开发人员所需一个的开源方案。

双因素身份认证的问题

在转为使用双因素身份认证之前,通过检查各种单因素身份认证的基线挑战来做好准备是很重要的。根据对主要服务提供商,如Adobe、Twitter、Linkedin和雅虎的攻击上升趋势所显示,仅用密码和安全问题的方式会将用户暴露于黑客面前。

由于用户不断重复使用某个秘密这一事实,密码本身成了一个最大问题。黑客们深谙这一点,所以一旦他们破解并窃取了一个帐户的身份验证凭证,他们则会尝试着以此潜入受害者的其他服务。如果用户选择使用了弱的密码机制,则黑客完全可以使用到Kali Linux的Crunch工具或是其它现成的密码破解工具。

既然单因素身份认证是不安全的,那么2FA(双因素身份认证)一定可靠吗?实际上,2FA的实施也有其自身局限性。例如,当您的双因素身份认证依赖于通过短信方式发送的一个验证码的话,骗子则可以通过利用社会工程学骗取用户的电话以获取之。而如果通过使用智能手机来作为第二种认证因素的话,也会有其它的风险。例如我们需要保护应用程序在逻辑上远离各种恶意软件。

实施双因素身份认证的另一个挑战在于价格方面。像谷歌或Facebook这样拥有数十亿用户的公司是无法实施昂贵且复杂的解决方案的。例如为它们所服务的每个用户提供一个唯一的令牌或智能卡,这都将是一笔非常昂贵的开销。那么,如何才能有效且划算的实施2FA呢?我们可以考虑“通用第二要素认证”,或称U2F。

U2F是如何工作的

由谷歌和Yubico所共同创建的U2F(通用第二要素认证)开启了认证的新标准。它允许用户安全且即时地使用一个设备去访问多个在线服务,而不需要安装特殊的设备驱动程序或客户端软件。通过使用U2F,您可以使用一个令牌来认证许多个服务。

U2F要求用户使用一个支持U2F标准的钥匙令牌(如USB类型)设备和浏览器。而钥匙设备的功能是作为一个安全令牌,让用户登录到多个支持U2F的在线服务上,那些服务包括了定制的应用程序。目前Chrome和Firefox都已支持U2F。

U2F标准协议的初探

Yubico定义U2F为:“一个具有挑战-响应协议的扩展,它提供网络钓鱼和MitM(中间人攻击)保护,特定应用程序的密钥,设备克隆检测和设备认证功能。”该协议的控制旨在对已知的和新的攻击予以防护。它使用的是非对称加密,也称公钥加密算法,其中私钥驻留在Yubikey设备之中。客户端上的浏览器内也开启了对挑战、处理和应用程序ID之类的适当控制(如下图所示)。

如何在您的网站上实现U2F

想让您的网站访问者以U2F的方式进行双因素身份认证相对来说是比较容易的,另外Yubico也提供了开发人员指南。您有三种选择,其中最简单的路径是使用Yubico的U2F的验证服务器(u2fval)。它通过一个简单的基于JSON的REST API提供了U2F的注册和认证,所以您不需要对应用程序的代码做太多的修改。此外,它还能对例如Wordpress这样流行的内容管理系统平台,以插件的形式提供“开箱即用”式的支持。所有的代码都是开源的,并且能在Github上获取到。

如何用u2fval来进行U2F的实施

如前所述,采用带有U2F的双因素身份认证的最简单方法是使用Yubico的U2F验证服务器(u2fval)。如果您正在Linux或Mac OS系统上做开发,其安装是很容易的。您只需使用如下这个pip命令:

sudo pip install
u2fval

您还可以使用其它的Python或Github安装命令。

简单的配置是需要的,但是服务器并不需要一个数据库。您还必须配置每一个客户端,以及它所进行的身份认证方式。不幸的是,这已经超出了u2fval的范畴,所以您需要独立地实现它。

U2F的潜在安全问题

既然U2F式的双因素身份认证协议依赖于浏览器上客户端级别的验证,那么潜在的攻击就可能来自驻留于浏览器本身的安全漏洞。所以U2F的安全性取决于谷歌、Mozilla等其它公司在其浏览器上应用该协议的良好程度。

此外,如果您使用的是U2F验证服务器,那么请记住,REST API的调用需要进行服务器级别的强验证控制。如果API的验证不能被安全地开发和验证,您可以会受到服务器端的攻击。同时,由于U2F依赖于一个数据库,因此所有通过路径/etc/yubico/u2fval/u2fval.conf这一配置文件的访问都应该受到限制。而且,因为在Apache服务器上部署u2val服务器时,有一个选项是使用mod_wsgi,那么在Apache中监控将来可能出现的漏洞,对于防护未来出现的攻击来说是至关重要的。

鉴于身份验证的控制完全掌握在开发人员的手中,我建议大家应该保持谨慎的态度。要知道,一个对于U2F的劣质应用实施将会导致客户端身份认证上的各种安全错误。

U2F的未来

U2F式的双因素身份认证协议是建立在强安全的理念之上的。它在通过诸如Gmail、Github和Facebook等服务传播双因素身份认证的方面有着非常有希望的未来。当然组织要想采用之,则必须首先有一个适当的安全软件开发生命周期。

它的成功实施取决于您是如何编程与集成其它所需组件的。这包括您验证客户的方式,和对数据库的访问设置。运用安全的DevOps的方法,并遵循OWASP指南可以帮助您创建出各种牢固的应用程序,并能防御未来出现的各种验证方面的攻击。

原文标题:Beyond two-factor: How to use U2F to improve app security,作者:Johanna Curiel

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. 认知指纹:颠覆性的身份认证技术
  2. 不可不知的网络身份认证技术
  3. 移动安全身份认证厂商及产品盘点
  4. 如何着手构建应用安全程序?
【责任编辑:蓝雨泪 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

非常网管——网络应用

在网络应用越来越复杂的今天,传统的网络应用已经不能满足企业和用户的需要,这就对网络管理员、信息管理部门提出了更高的要求。本书介绍了...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Python最火的编程语言