许多两因素身份验证机制都使用SMS将一次性密码短语传递给用户。那么它的安全性如何?截取包含密码的SMS消息很难吗?移动网络在SMS上使用任何形式的加密吗?
我发现了一篇有趣的文章,涉及两因素身份验证及其攻击方式。

评论

您正在谈论的是两步身份验证,而不是两个因素。出于多种原因,SMS不能成为有效的“拥有的东西”身份验证因素-但这是一个好的带外解决方案,在某些情况下确实可以提高安全性。

有趣的是,过去三年中,每年我在安全会议上都遇到不同的人,他们告诉我他们拥有或认识拥有“黑手机”的人,这些黑手机可以使用或多或少的任意网络而无需注册或检测。尽管这纯粹是轶事,但索赔的重复和流行表明其中可能存在某些道理。我想,无论算法在理论上有多安全,理论和实践都经常离婚。

#1 楼

GSM通过加密提供一些保护。移动电话和提供商(即,作为提供商网络的一部分的基站)相对于共享秘密相互认证,共享秘密对于提供商来说是已知的并且存储在用户的SIM卡中。身份验证涉及一些在代码名称“ A3”和“ A8”下已知的算法。然后,通过称为“ A5”的算法以及从A3 / A8派生的密钥和共享密钥对数据(通过无线电链路发送的数据)进行加密。

隐藏在名称为“ A5”。使用哪种算法取决于提供商,而后者又受当地法规的约束以及可以从GSM联盟获得的许可。此外,活跃的攻击者(带有伪造的基站)可能会迫使移动电话使用其他方式,不同于其他方式,并且没有多少电话能够向用户发出警告(甚至更少的用户)谁会在意的)。



A5 / 0表示“不加密”。数据未加密发送。在某些国家/地区,这是唯一允许的模式(我认为印度就是这样的国家/地区)。

A5 / 1是在欧洲和北美使用的旧的“强”算法。

A5 / 2是旧的“弱”算法,名义上适用于“那些是好朋友,但我们仍然不完全信任的国家”(在GSM规范中并未以这种方式详细说明,但这就是想法)。

A5 / 3是用于GPRS / UMTS的较新算法。

A5 / 3是一种分组密码,也称为KASUMI。它提供了体面的安全性。它有一些缺点,可能会使其“在学术上被打破”,但实际上并没有真正适用。

如本报告所述,A5 / 2确实很弱。攻击需要几分之一秒的时间,而且要经过预计算,这在PC上花费不到一个小时,并且需要几GB的存储空间(不多)。有技术细节,主要是因为GSM协议本身很复杂,但是可以假设A5 / 2层易碎。

A5 / 1较强,但不是很强。它使用64位密钥,但是算法结构较弱,并且允许进行复杂的攻击,涉及大约242.7个基本操作(请参阅我12年前写的这篇文章)。已经有许多出版物解决了这种复杂性,主要是通过进行预计算并等待算法内部状态达到特定的结构。尽管这样的出版物宣传的复杂性数字略低(大约240),但它们也有缺点,使它们难以应用,例如需要成千上万个已知的明文位。只有64个已知的明文位,原始复杂度为242.7。我十年来都没有尝试过实现它,因此可以想象,现代PC的运行速度将比我当时使用的工作站快。粗略估算,具有完全优化的代码的四核PC应该能够在一小时内破解它。

A5 / 1内部状态的大小以及A5 / 1用于加密数据的方式,也使其容易受到时间内存折衷的影响,例如彩虹表。再次,请参阅Barkan-Biham-Keller文章。假设攻击者曾经运行过一次真正的大规模计算,并存储了数TB的数据。之后,攻击的在线阶段可能会很快。详细信息非常多,这取决于您有多少存储空间,在线阶段有多少CPU能力以及准备等待结果的时间。初始计算阶段非常庞大,但在技术上是可行的(一台PC应该足够了);有一个开放的分布式项目,但是我不知道它们走了多远。

SMS拦截仍然是一个特定的场景。这不是完整的语音对话;实际交换的数据量很小,并且连接在很短的时间内就结束了。这可能会限制上面公开的攻击的适用性。此外,攻击必须快速:攻击的重点是获取以SMS形式发送的秘密密码,以便攻击者可以在普通用户之前使用它。攻击者必须快速:


服务器通常对该密码应用较短的超时时间,例如几分钟。 SMS传输大约需要几秒钟。
用户不耐心(用户从来没有耐心)。如果他在五分钟内未收到SMS,则他可能会请求一个新的SMS,然后服务器上经过深思熟虑的两因素身份验证系统将使先前的一次性密码失效。

如果攻击者已经破坏了第一个身份验证因素,那么事情就容易多了(这就是为什么我们使用双重身份验证的原因:因为一个因素还不够)。在这种情况下,攻击者可以在目标用户非常不了解的情况下启动身份验证请求,因此,如果他未能接收到SMS,或者两次接收到不需要的SMS,则不太可能发出任何警报(攻击者可能只能在深夜进行攻击;被攻击的用户只会在早上醒来时才发现不必要的SMS,这给了攻击者几个小时的时间以作弊。)

GSM加密仅用于无线电链接。在上述所有内容中,我们集中于一个攻击者,他们窃听了手机和基站之间发送的数据。所需的无线电设备似乎已经可用,并且很容易想到这种情况在实践中是适用的。但是,SMS不仅仅从基站传播到移动电话。它的完整过程始于服务器设施,然后经过Internet,再经过提供商的网络,直到到达基站为止-只有在那时,它才使用所使用的A5变体进行加密。

如何在提供商的网络内以及希望发送SMS的提供商和服务器之间保护数据安全,这超出了GSM规范的范围。一切顺利。无论如何,如果攻击者是提供者,那么您将输。执法机构想要窃听他人时,通常是通过向总是遵守的提供者很好地询问来做到这一点。这就是为什么毒品卡特尔(尤其是在墨西哥和哥伦比亚)倾向于建立自己的细胞网络的原因。

评论


因此,总而言之,这是可能的,而且还有一种可以进行侦听和解密的设备,对吗?但是,黑客应该位于受害者附近吗?如果是这样,只有本地黑客可以进行攻击,这使得发生这种攻击的可能性降低了。

– Paul Podlipensky
2012年2月9日下午0:28

还有一个好处-最好在睡着时关闭手机;)

– Paul Podlipensky
2012年2月9日下午0:31

请参阅维基百科文章。攻击可以在几秒钟内完成。如果是真的,请编辑您的答案

–安德烈·波塔洛夫(Andrei Botalov)
2012年3月16日上午9:08

另外,总而言之,SMS似乎是传输短时机密的合理安全手段,例如:用于两因素身份验证。攻击者必须知道您(电话)的实际位置,知道您何时有可能会收到秘密,拥有并知道如何使用最可能是非常昂贵的无线电设备,并且已经完成了一个相当复杂的项目,以“大量计算”(正确)。几乎可以肯定,攻击只会针对非常高价值的目标。

–肯尼·埃维特(Kenny Evitt)
2015年2月9日在0:24



最近看到的一种有效的攻击方法是,将新的SIM卡发送给攻击者,获取他们想要拦截的号码。从给新SIM卡供电到目标设备注意到服务中断,并设法说服提供商这不是技术故障,只有时间了。但这通常是几个小时。

– ewanm89
16-9-16 '16:34



#2 楼

GSM网络已加密。但这当然并不能使其安全。它可能会受到损害。但是,Rook(以及后面更详细的Thomas Pornin)所描述的攻击是非常本地化的,需要付出巨大的努力才能完成。它们不是不可能的,但是非常困难。它要求在发送SMS的同时断开移动电话附近的GSM网络。网络运营商处的某人也有可能拦截SMS。如果我们谈论的是国家安全/间谍活动,即以特定人员为攻击目标,而攻击者则拥有非常复杂的手段和大量金钱,那绝对有可能。但是,从硬件令牌提供者获取种子值的方法几乎相同。

即使此SMS攻击成功,也可能需要获取用户名和密码(假设SMS不是唯一的方法)身份验证,而是第二个组件)。还有其他选择,其中用户向服务器发起SMS消息,然后服务器可以检查它是否与请求的质询/令牌匹配。服务器还可以验证发起方呼叫者ID。当然,这也有其局限性,但是如果做得正确,理论上可以提供更多的保护。

如果在大多数情况下,其想法是通过提供2要素身份验证来提高安全性,然后将SMS添加到与标准的用户名/密码相比,该组合可显着改善它。您正在使用两个单独的通信通道(TCP / IP和GSM)这一事实使它已经更加安全。作为一个非常粗略的个人估计,我会说SMS令牌或多或少与基于硬件的令牌相当,这是出于安全考虑。当然,上帝(或魔鬼)在细节中。

评论


从理论上讲,验证发起方呼叫方ID可以提供更多保护吗?这里的理论比较是什么?这种优势是如何产生的?

–dionyziz
18年8月1日在21:41

#3 楼

尽管有关加密的讨论很有趣,但我认为关键问题是:是否激励运营商关心安全性?我担心答案是“否”。他们花钱保护他们的SMS系统的动机是什么?他们甚至管理它们还是将其外包?他们提供什么安全保障?您对管理服务器的人员有多信任?

有关此的更多信息:如果您拥有1亿客户,并且您重置密码的难度稍有增加,则服务台呼叫将大打折扣。这就是为什么可以很容易地接管某人的帐户的原因。
此外,就像您在证书颁发机构框架中所看到的那样,SMS基础结构将成为攻击的目标。

我最近写了一篇博客文章,概述了这些要点和链接:http://www.wikidsystems.com/WiKIDBlog/fraudsters-defeat-poor-risk-management-not-two-factor-authentication 。从风险管理的角度来看,SMS身份验证比密码更好,但不要长期使用它。当前的攻击针对的是金融机构,但是随着攻击成本的下降,还会有更多。

#4 楼

其他答案已经说明了GSM的安全性以及涉及技术攻击的技术。
但是,还有许多其他攻击绕过了技术保护。
德国维基百科上有关交易身份验证号的文章(其中经常通过短信发送)列出一些攻击:

偷窃或秘密访问受害者的手机
在手机上安装恶意软件,尤其是在使用智能手机的情况下。
移动服务提供商
使用社交工程来规避系统,例如:

获取消息的访问权限
从服务提供商处获取新的SIM卡
移植将电话号码转移到另一个帐户(SIM交换骗局)



例如,2015年德国发生了一系列欺诈性汇款,欺诈者获得了新的客户姓名下的SIM卡。以前也发生过类似的攻击,因此手机提供商改善了订购新SIM卡的客户的身份验证。为了避免这种情况,欺诈者在致电电话提供商时冒充了一家手机店的员工,并声称代表客户激活SIM卡(来源[德语]:网上银行:Neue Angriffe auf die mTAN)。
显然,如果攻击者设法绕过它们,那么所有技术保护都将无用。

评论


确实。这种欺诈行为称为“ SIM卡交换”,并且具有自己的Wikipedia条目:en.wikipedia.org/wiki/SIM_swap_scam

–传真
20年7月15日在12:02

@传真:谢谢,编辑为答案。

–sleske
20/07/16在13:22

#5 楼

如果服务具有XSS,SQL注入或传输层保护不足等常见漏洞,则多因素安全系统毫无价值。无论您使用哪种身份验证系统,这些漏洞都可能导致帐户或信息泄露。

话虽如此,如果您离受害者很近,就可以进行非常讨厌的攻击。例如,如果您的受害者正在使用GSM运营商,则攻击者可以使用RainbowTable破坏GSM并拦截SMS消息。如果您控制受害者的网络,则可以使用SSLStrip或SSLSniff之类的工具来攻击HTTP登录门户。

“记住我”是邪恶的。 SMS多因素身份验证的某些实现(例如Google的实现)可让您为设备保驾30天。这只是一个永久性cookie,可作为身份验证令牌使用30天。如果您拥有受害者机器,则可以获取此cookie并将其用于身份验证。无法安全地实现“记住我”功能。

基于硬件的加密令牌很难破解。实际上,这是从SMS获得的进步,因为这是您拥有的令牌,应该很难妥协。在大多数情况下都是如此,除非您当然使用RSA的硬件令牌。

#6 楼

最近,许多手机应用程序请求访问SMS消息,而用户由于对应用程序感兴趣而允许访问该消息。这样,与在移动网络上拦截SMS相比,攻击的难度降低了。

评论


假设用户使用的是现代智能手机设备,那么截至2018年,这已经相当有限。

–杰夫·阿特伍德
18年5月26日在0:09

#7 楼

我知道这并不能直接回答您的问题,但是我希望它能解决一些问题:

如果实现正确,我将不会非常担心SMS拦截。这是因为一次性SMS身份验证器为实时警报潜在的攻击提供了绝佳的机会。如果身份验证程序被拦截,您很有可能会立即意识到它并迅速做出反应。

如果您在尝试启动的身份验证会话中拦截了SMS,那么请使用以下两种方法之一事情应该发生:


如果您首先成功进行身份验证,则攻击者的尝试应该失败。这是因为系统应拒绝身份验证器重用尝试。在这种情况下,攻击将完全受阻。
如果攻击者设法首先进行身份验证,则由于身份验证器的重用,您的身份验证尝试将失败。系统还应通知您这是失败的原因。此时,您应该采取一切必要的措施来重新保护您的帐户。能够快速执行此操作将限制攻击的潜在影响。

如果攻击者在您未启动身份验证的情况下尝试进行身份验证,则应收到以下警告:您将收到一条短信,告知您没有要求。几乎没有什么实用的方法可以使某人秘密地截取发送到您手机的SMS,而您又不会收到它,或者很快就注意到其他问题。

无论如何,这一切都会变得毫无意义。浏览器中的人攻击。

另外,由于大多数SMS身份验证实现将SMS身份验证器用作第二个因素,所以我真的会更担心第一个身份验证因素是如何受到损害的。如果不是通过裸露的社会工程学来完成,则可能是通过某种浏览器或操作系统的利用导致了系统上的按键记录程序。这样,无论采用哪种身份验证方法,我们都不会在浏览器中采取很多措施有效地导致全面破坏。

评论


“几乎没有什么实用的方法可以使某人秘密地拦截发送到您手机的SMS,而您又不会收到它,或者很快就注意到其他问题。”危险的建议-内部攻击或社会工程攻击(请参阅我的答案)确实可以使攻击者拦截SMS。即使浏览器完全受损(例如German ChipTAN),良好的两因素身份验证也可以提供一定的保护。

–sleske
16-10-28在15:02

#8 楼

每个人(甚至是Schneier吗?)似乎都缺少一件至关重要的作品:
如果您的手机丢失/被盗,则因为您的SIM卡在里面,所以您已经在敬酒了!
让我惊讶的是,没有人据我所知,似乎似乎已经注意到了这一点,但是SMS的事实是它甚至不需要您访问手机上的数据。
即使电信已加密,即使您的手机已锁定并加密,如果启用了SMS或基于呼叫的身份验证并且您的手机被盗,那么您将完全敬酒,直到您设法找到一种方法来使提供商停用SIM卡(并向法律报告)
攻击者从字面上需要不到1分钟的时间即可取出您的SIM卡并将其放入另一部手机中以获取短信,因此,到您报告问题时,他几乎可以肯定有机会尝试了十几遍,然后关闭了手机,或者只是放回手机,以致无法追踪他。
你唯一的运气如果使用SMS 2FA,攻击者不知道您的用户名,或者您的SIM卡已被安全锁定以防在其他手机中使用:


如果手机在丢失时处于开机状态或被盗,很可能是它写在登录屏幕上的某个地方,或者会在某个时候作为通知弹出。


如果您只是被抢劫了并且设法关闭了手机, ID或信用卡可能与您的手机一起使用,在这种情况下,您可能很难在Google上猜到或找到您的用户名或电子邮件。如果您的手机处于开机状态,那么(1)仍然有风险。


如果攻击者以某种方式知道您,那么您几乎肯定是举杯了。
说,您在外出午餐时将手机放在桌子上,然后有人来交换SIM卡,获取SMS并将其交换回来。如果没有人在看,只需几分钟。


因此,尽管您可能会担心有人试图用类似Stingray的设备或通过渗透电话提供商的设施来拦截您的通信,但事实是,中间人对大多数人而言并不是真正的风险。真正的风险在于终点-即您。丢失电话,无论您的密码或加密强度如何,基于电话和SMS的验证都会完全对您不利。

评论


抱歉,这对我来说没有意义。问题是关于2FA-“ 2”表示除其他功能(通常是用户名+密码)之外还使用SMS。因此,尽管窃取SIM卡是访问第二因素的一种方式,但您仍然需要用户名+密码。因此,对我来说,这个答案可以归结为“您可以通过获取某人的SIM卡来拦截SMS”,这是事实,但显而易见。

–sleske
17年9月8日在9:27

是的,如果您使用用于接收SMS的同一电话登录并进行业务,则大多数安全性都会丢失。事实上,大多数德国银行都明确禁止在单个电话上使用SMS身份验证和在线银行业务-如果您的电话受到损害,则应该使用计算机(或其他电话)进行实际的银行业务。

–sleske
17年9月8日在9:29

@sleske:当您告诉Google忘记密码时,您是否看到Google的所作所为?它需要您的2FA SMS号码并提出建议。我正是这个意思。任何攻击者都可以像这样重置您的密码。而且我不知道您为什么在德国谈论商务电话。我说的是普通人-消费者。在严格性方面比德国更典型(除非另有说明,通常为美国)。

–user541686
17年9月8日在9:52



@sleske :(请注意,我不仅在谈论Google。我敢肯定,我也看到过其他公司也在这样做。Google只是这里的一个突出例子。)

–user541686
17年9月8日在10:15

是的,Google允许您通过短信恢复帐户。但这不是2FA,因为您只需要电话。问题是关于2FA,根据定义,它不仅需要SMS。我要指出的是:您写的是对的,但没有回答所提出的问题。顺便说一句,我真的很好奇什么是“典型的严格性”,以及为什么德国没有代表性。

–sleske
17年9月8日在11:19