短信验证码的背后
引:短信(SMS)验证码已经被各种各样的应用作为双重认证的主要手段之一,为什么还要将生物特征识别作为作为双重认证的趋势之一呢?短信验证码是否是安全的呢?如果不安全的话,背后的机制又是什么呢?本文编译自Roger Piqueras Jover的一篇文章https://queue.acm.org/detail.cfm?id=3425909,希望在选择将短信作为双重认证方式的时候,多一些考量,多一点儿思考。
早在上世纪90年代中后期,互联网开始成为了PSTN线路繁忙的主要因素之一。在接下来的十年里,互联网在线服务完全改变了社会与科技的互动。从电子邮件到电子商务,这些服务越来越多地将人们和互联网联系在一起。
虽然密码的概念在许多技术领域中很普遍,但除了银行卡的密码外,一般大众对此知之甚少,是互联网向他们介绍了密码安全的概念。从那时起,人们意识到他们必须记住密码才能访问他们的电子邮件账户、最喜欢的电子商务网站等等。
在那个时候,只需要一个密码就可以解锁一个账户,而且密码要求非常宽松。网络安全的前景远没有现在这么具有挑战性,特别是在消费者账户的安全方面。对于某些行业也有例外,例如银行业,密码要求稍微严格一些,在成为其他网站的一种选择之前,使用了主要基于 IP 地理位置的隐式双因素认证。然而,普通消费者通常只需要一个简单的密码就可以访问高度安全的数据存储库,同样的密码经常被多个账户重复使用。
如今,互联网安全需要更多的关注。电子邮件账户多年来不仅成为高度敏感和私人数据的大型储存库,也成为了互联网上数字足迹的单一故障点。例如,大多数在线服务都允许通过向用户的电子邮件帐户发送电子邮件来重置密码。因此,如果一个电子邮件帐户被入侵,许多其他帐户也可能在短期内被入侵。
随着安全威胁格局的改变,密码的使用方式及其复杂性要求发生了变化。尽管许多在线服务并没有真正遵循最佳实践,但人们普遍认为,密码应该是高度复杂的,以便最大限度地利用它们的熵,从而大大增加破解密码所需的时间。
然而,增加密码的复杂性不是正确的解决方案。密码短语被证明具有更高的熵,也更容易被记住。另一方面,强制密码轮换,再加上严格的密码复杂性策略,可能会导致更弱的密码。此外,作为一个经验法则,现在已经认识到,如果密码不存在于任何外泄凭证的公共存储库中,那么密码可能不一定需要轮换。
随着密码的安全性、可用性和易于记忆性不断面临挑战,安全行业认识到,网络账户的安全性不应该只由用户知道的东西(如密码)来保护。有点类似于银行的做法,需要用户拥有的东西(例如银行卡)和用户知道的东西(例如卡密码) ,在某些情况下还要求使用双重认证。第二重认证必须是用户拥有的东西,一个显而易见的简单选择就是用户的手机。
为在线帐户启用双因素身份验证对其安全性至关重要。每个人都应该在(至少)自己的电子邮件账户,以及存储关键和敏感数据(如信用卡号码)的其他账户中启用这个功能。加密货币交换账户通常是网络犯罪分子的目标,也应该通过多种形式的身份验证加以保护。这些账户所保护的东西具有潜在的高额货币价值,这使它们成为一个有趣的案例,用来研究什么可能是第二种形式身份验证的最佳选择。例如,短消息服务(SMS)作为第二种形式的身份验证,对于某些类型的在线账户是个好主意,但对于那些在网上交易中拥有大量加密货币的人来说,它并不是最佳选择。
基于短信的身份验证是保护在线账户安全的常用选项,而且它们肯定比单独使用密码更安全。然而,蜂窝网络的安全史表明,短信并不是一种安全的通信方式。从流氓基站到更复杂的攻击,有许多已知的方法可以在本地和远程窃听或者暴力破解文本信息。因此,对于存储具有较高财务价值的资产(如加密货币)的账户,此方法不是最可靠的方法。
基于短信的多因素身份验证的安全挑战主要有蜂窝安全缺陷、七号信令协议的利用,以及被称为SIM卡交换的简单而高效的欺诈方法。基于这些认知,我们可以判断用户的在线账户是否应该使用短信验证。
短信 vs 一次性令牌应用
对于标准的消费者在线账户,提供第二重认证的两个主要选择通常是通过短信或利用用户智能手机上应用程序生成的一次性令牌。后者更为安全,应用于高度安全和敏感的账户,但前者的使用最广泛,在某些情况下可能是一个有效的选择。然而,除了它们的安全性之外,这两种选择在便捷性性和可用性方面有着非常不同的优点和缺点——这是安全设计时需要考虑的重要因素。
应用程序生成的令牌
应用程序在用户设备上生成的一次性令牌是对在线账户实现双因素身份验证的最安全方法,无需消费者使用非标准硬件(如 RSA 令牌等,这些在企业场景中更常见)。除此之外,还有一些优点和缺点。
无论哪种选择的主要考虑因素之一都是网络连接性。应用程序生成的令牌不需要网络连接,其便利性与通过短信接收令牌的网络连接性的严格要求形成对比。虽然网络连接被认为是无处不在,但是在一些情况下,用户可能需要在超出电信网络的覆盖范围时访问一个帐户。
基于应用程序的令牌传递的另一个优点是,这些应用程序通常可以与多个在线账户一起注册和使用。然而,用智能手机应用生成令牌的主要可用性挑战在于,管理这样一个应用程序(以及它所利用的加密资料)需要额外的努力。一般来说,将智能手机备份到云端是最常用的方法,它不会将这些加密资源保存为备份数据的一部分。这些资料也不会保存在计算机未加密的本地备份上。即使在使用密码锁定本地备份时,也不是所有都与密码一起存储。例如,如果用户的智能手机丢失或被盗,甚至如果他们买了一部新手机,这可能会导致用户被锁定在他们自己的账户之外。在这些情况下,所谓的“备份代码”很重要。根据经验,在新的智能手机完全安装完毕、双重认证应用重置之前,用户永远不要擦除旧的智能手机。
短信令牌
通过短信接收的双因素身份验证令牌对于典型用户来说往往工作得很好,因为它们对用户来说很容易。不需要在用户的设备上安装应用程序,也不需要任何的备份代码管理或备份计划来处理丢失或被盗的设备。当用户得到一个新设备时,不需要重置双重认证系统,因为短信与电话号码绑定在一起,而电话号码在新设备上通常是保持不变的。
缺点是,基于短信的身份验证需要蜂窝网络的主动连接。尽管大多数基于短信的通信发生在 IP上,短信的第二重认证令牌通常是通过蜂窝网络的标准短信发送的。因此,仅有 Wi-Fi 连接是不够的,还需要有效的蜂窝连接。这在某些情况下是具有挑战性的,在这些情况下手机服务参差不齐或者网络不可用,或者连接受限于802.11网络。
尽管存在安全挑战,但基于短信的身份验证令牌是一种广泛使用的选择,目前的设备制造商都支持。例如,苹果最近在 iOS 14中宣布了一项新功能,强化了短信代码,以防止试图欺骗用户的恶意应用程序利用短信代码( https://developer.Apple.com/news/?id=z0i801mg)。
基于短信认证的安全挑战
尽管双重身份认证很方便,并且被大量的在线服务使用,但是通过短信进行双重身份认证仍然面临着巨大的安全挑战。这些技术包括对蜂窝网络协议的一些复杂威胁(要求对手靠近目标受害者)和SIM卡交换技术(尽管技术复杂度要低得多),这些技术没有范围限制,可以以接近零的成本实施。例如,移动通信系统中最大的安全威胁之一是 SIM 卡交换,这是一个系统性问题,涉及到移动运营商如何在其客户服务平台上验证用户身份。
移动电话网络安全
第一代移动网络(1G)缺乏对加密的支持,传统的2G GSM网络缺乏相互认证,采用了过时的加密算法。GSM 协议栈开放源码实现的广泛可用性导致了许多可能的 GSM 无线电链路漏洞(如图3所示)。具体来说,部署恶意的 GSM 基站并对 GSM 连接实施全面的 MITM 攻击所需的技术和工具都已经商品化了,尽管它们要求对手在物理上接近给定的目标。低成本的软件无线电和 GSM 协议栈的开源实现可用于拦截移动通信,包括了 SMS 消息。在不太严格的近距离限制下,通过在回复针对另一用户的寻呼信道消息时触发竞争条件,可以拦截 SMS 的流量。
在3G 和 LTE (Long-term Evolution)移动网络中,采用了更强大的加密算法和双向认证标准来加强保密性和认证。正因为如此,LTE 通常被认为是安全的,因为它具有相互认证和强大的加密方案。因此,保密性和认证被错误地认为已经得到了充分的保证。然而,LTE 移动网络仍然容易受到协议漏洞、位置泄露和流氓基站的攻击。
尽管有强大的用户通信和相互认证的加密保护,但是大量的控制平面(信令)消息通过 LTE 无线链路定期交换。在执行连接的认证和加密步骤之前,移动设备与任何 LTE 基站(真实的或流氓的)进行实质性的对话,这些基站用正确的广播信息为自己做广播。从移动设备的角度来看,来自基站消息的隐含信任造成了严重威胁。许多具有关键安全影响的操作在被这些隐式信任的消息触发时执行,这些消息既没有经过身份授权,也没有经过身份验证。
在大规模网络攻击的时代,最大的民用通信系统必须依赖于隐私协议,而不仅仅是基于看起来合法的基站隐式信任。反之亦然,基站隐式信任来自移动设备的所有预认证消息。
虽然一个恶意的 LTE 基站不能发动一个完整的 MITM 攻击,但是一些技术可以悄悄地将一个现代智能手机降级为一个易受攻击的 GSM 连接。所有这些技术的共同点是他们利用并滥用了这种预认证信息。
随着业界准备迎接5G 时代的到来,这种下一代移动网络的安全架构正受到严格审查。然而,目前大多数 LTE 中基于消息的预认证协议漏洞仍然适用于5G 网络。因此,鉴于目前这种移动通信系统的规范,悄悄地降低智能手机成为GSM 链路的连接仍然是可能的。通过利用这些漏洞,对手可以成功地拦截通过短信发送的双重认证令牌。
然而,通过拦截 GSM 流量从 SMS 消息中拦截令牌是技术上最复杂的选择。尽管这种攻击可以通过低成本的软件无线电和对开源工具的小修改来实施,但绝大多数通过拦截通过SMS传递的身份验证令牌进行的欺诈都利用了SS7或SIM卡交换中的漏洞。
SS7安全性
七号信令是30多年前开发的体系结构和协议。它为 PSTN 的一些功能提供带外信令支持,即呼叫建立、计费、路由和信息交换。从1988年开始,当移动运营商开始利用它进行带外信令时,该协议的安全性主要依赖于运营商之间的隐含信任。它被认为是一个封闭的可信网络,并且没有内置认证。因此,这个网络和协议的安全特性很小,取决于全球少数国家的控制或大公司的运营商。但现在情况不同了,由于移动设备的使用量急剧增加,以及过去全球移动虚拟网络运营商数量的增加,导致运营商的数量大大增加。
3GPP在20世纪90年代和21世纪初为 SS7增加了两个新的协议: MAP和 CAMEL。其目的是支持移动网络提供的一些新服务,以及为移动运营商提供的新功能。同时,MAP 提供了全局地理定位设备的服务。遗憾的是,这些新的 SS7子协议都没有添加身份验证或安全特性。
SS7中有一些关键的安全漏洞,这些漏洞可以被用来对用户进行地理定位,并在几乎任何地方拦截他们的通信,还可以通过黑客入侵的 femtocells 进入 SS7网络,在一些特殊的情况下,还可以从移动运营商那里购买访问权。更糟糕的是,利用 CAMEL 协议的漏洞可以远程拦截电话和短信。
一旦攻击者可以访问 SS7网络的入口点,就 GSM 而言,只需要一条消息就可以修改 MSC (移动交换中心)中给定目标的注册。从那一刻开始,MSC 将与攻击者取得联系。
现代 LTE 网络大部分基于 ss7的服务都迁移到 Diameter 协议。这个新协议提供了一些改进,仍然有一些漏洞,其中大部分是从 SS7 继承的缺陷,因此,类似的远程拦截呼叫和短信仍可能存在于 LTE 中。只要距离目标足够近,悄悄地将智能手机降级到安全性更低的 GSM 连接是很简单的。
利用 SS7网络及其协议中的安全缺陷是截获通过 SMS 传输的双重身份验证令牌的一种相当有效的方法。一般来说,这是一种被黑客团体所使用的攻击载体,在MITRE ATT&CK的框架内已经被考虑到,并被许多技术公司广泛采用,作为其安全体系的一部分。
SIM 卡交换
尽管短信截取技术利用了蜂窝网络协议和遗留 SS7网络中的缺陷,但 SIM 交换才是对短信通信的头号安全威胁。
如图5所示,SIM 交换攻击包括了对移动运营商的欺骗,通常是通过与客服部门的电话通话,将账户移植到新的 SIM 卡上。例如,打电话者可以声称电话在海外丢失,需要在新购置的电话和新的 SIM 卡上尽快恢复使用权。
一旦攻击者成功地将受害者的账户移植到自己 SIM 卡上,剩下的攻击就相当简单了。从那时起,攻击者将成为受害者的手机号任何电话和短信的目的地。因此,攻击者将接收到请求的任何双重身份验证令牌。
这种类型的攻击实现起来很简单,并且占据了大多数需要拦截身份验证令牌的漏洞。鉴于 SIM 卡交换攻击所需的低成本和低努力,欺诈和诈骗团伙正在设计更复杂的方法来扩大他们可以接管的账户数量。例如,SIM 交换者贿赂客服人员为他们进行交换,甚至利用恶意软件攻击呼叫中心使用的远程桌面技术。
有趣的是,基于 SIM 卡交换攻击的欺诈性网上账户收购并不复杂,而且难以缓解。对于网上银行和金融服务的普通消费者而言,SIM 卡交换可以说仍是最大的安全风险之一。
结束语
尽管短信认证非常流行且易于使用,但它可以说是双重认证中最不安全的形式之一。但是,这并不意味着它是一个保护在线帐户的无效方法。
诚然,有一些服务不应使用通过短信发送的令牌ーー例如银行和金融服务、加密货币服务,以及任何包含敏感金融信息、信用卡号码等的服务。个人电子邮件地址也属于这一类。如果电子邮件账户是用户在线数字身份的基石,那么接管电子邮件账户可能会带来毁灭性的后果。
另一方面,有许多基于短信的在线服务对普通消费者来说已经足够了ーー例如,任何不存储敏感或财务信息的普通账户,攻击者无法轻易将其货币化,从而阻止他们首先尝试接管账户。
在决定哪种多因素身份验证方法是最合适的时候,其他的变量也应该考虑进来。对于一个拥有数百万粉丝的知名个人而言,社交媒体账户的安全性影响与对于一个只有少数粉丝的账户而言是非常不同的。因此,尽管使用短信作为某些社交媒体账户的第二个认证因素是完全有效的,但对于名人的账户来说,选择一种不同的认证方式是明智的。
目前的安全形势与二十年前大不相同。无论在线账户的关键性质如何,无论选择何种方法,使用双重身份验证都应该是默认选项。随着大量泄密和其他入侵事件的发生,许多用户名和密码组合落入了不法之徒手中,使得密码攻击变得廉价且容易实现。