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

简介:

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


image

使用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指南可以帮助您创建出各种牢固的应用程序,并能防御未来出现的各种验证方面的攻击。

本文转自d1net(转载)

相关文章
|
11月前
|
开发工具
链游开发的成本考量因素解析
链游开发的成本考量因素解析
|
3月前
|
安全 物联网 物联网安全
物联网设备的安全性评估与测试:技术深度解析
【7月更文挑战第7天】物联网设备的安全性评估与测试是保障物联网系统安全运行的重要环节。通过实施全面的安全性评估与测试,可以发现并修复设备中存在的安全漏洞和风险,提高整体安全防护能力。然而,由于物联网设备的多样性和复杂性以及安全标准与监管的缺失等挑战,测试工作需要不断创新和优化。未来,随着技术的不断进步和实践的深入,物联网设备的安全性评估与测试将更加完善和高效。
|
5月前
|
物联网 区块链 vr&ar
提升安卓应用性能的实用策略未来交织:新兴技术趋势与跨领域应用探索
【5月更文挑战第27天】 随着智能手机成为日常生活不可或缺的一部分,用户对移动应用的性能要求也日益提高。对于安卓开发者而言,优化应用性能是确保用户体验和市场竞争力的关键。本文将深入探讨提升安卓应用性能的有效策略,包括内存管理、UI渲染优化、多线程处理以及应用架构设计等关键技术点,并结合实际案例分析其实施过程与效果。通过这些策略,开发者可以显著减少应用卡顿、加快响应速度,并最终在激烈的市场竞争中占据有利地位。 【5月更文挑战第27天】 随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)、虚拟现实(VR)等正逐渐渗透到社会的各个层面,重塑着商业模式、工作流程乃至日常生活。本文将深入探讨这些技
|
12月前
|
存储 运维 容灾
带你读《多媒体行业质量成本优化及容灾方案白皮书》1. 成本优化概述
带你读《多媒体行业质量成本优化及容灾方案白皮书》1. 成本优化概述
383 0
|
云安全 算法 安全
阿里云风险识别服务有哪些优势?
阿里云风险识别服务有哪些优势?
332 0
|
云安全 安全 数据处理
云计算暴露数据处理缺乏和安全实践标准缺陷
云计算用户正在将他们对云计算的关注重点从云优势向云劣势转移。毕竟云的优势是显而易见的,比如快速扩展和配置的能力,但是本文探讨的重点是云计算缺失的部分,毕竟这些不足正在呈增长态势。 云计算缺乏数据处理和安全实践的标准,甚至没有关于厂商是否有责任告知用户他们数据存储地点的规定。
780 0