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