许多双因素身份验证机制使用 SMS 向用户提供一次性密码。那么它有多安全呢?包含密码的短信很难拦截吗?移动网络是否对 SMS 使用任何类型的加密?
我发现了一篇关于双因素身份验证及其可能受到攻击的方式的有趣文章。
许多双因素身份验证机制使用 SMS 向用户提供一次性密码。那么它有多安全呢?包含密码的短信很难拦截吗?移动网络是否对 SMS 使用任何类型的加密?
我发现了一篇关于双因素身份验证及其可能受到攻击的方式的有趣文章。
GSM通过密码学包括一些保护。移动电话和供应商(即作为供应商网络一部分的基站)相对于供应商已知并存储在用户的SIM卡中的共享秘密相互验证。一些代号为“A3”和“A8”的算法参与了认证。然后数据(通过无线电链路发送)使用称为“A5”的算法和从 A3/A8 派生的密钥和共享密钥进行加密。
有几种实际算法隐藏在名称“A5”下。使用哪种算法取决于提供商,而提供商又受到当地法规的限制,以及它可以从 GSM 联盟获得什么许可。此外,主动攻击者(使用假基站)可能会迫使手机使用另一种变体,这与它原本会使用的不同,并且没有多少手机会提醒用户(甚至更少的用户)谁会关心它)。
A5/3 是一种分组密码,也称为KASUMI。它提供了不错的安全性。它有一些缺点使其“在学术上被破坏”,但没有一个真正适用于实践。
如本报告所述,A5/2 确实很弱。攻击只需要几分之一秒,预计算在 PC 上花费不到一个小时,并且需要几 GB 的存储空间(不多)。有技术细节,主要是因为GSM协议本身很复杂,但可以假设A5/2层是可破解的。
A5/1 更强,但不是很强。它使用 64 位密钥,但算法结构较弱,允许进行复杂度约为2 42.7基本操作的攻击(请参阅我 12 年前写的这篇文章)。已经有几篇出版物扭转了这种复杂性,主要是通过进行预计算并等待算法内部状态达到特定结构;尽管此类出版物宣传的复杂性数字略低(大约2 40),但它们有一些缺点,使其难以应用,例如需要数千个已知的明文位。只有 64 个已知明文位,原始复杂度为2 42.7. 我已经有十年没有尝试实现它了,所以可以想象一台现代 PC 会比我当时使用的工作站更快地运行它;粗略估计,一台代码经过彻底优化的四核PC应该可以在一小时内破解它。
A5/1 内部状态的大小,以及 A5/1 用于加密数据的方式,也使其容易受到时间-内存权衡的影响,例如彩虹表。再次,请参阅 Barkan-Biham-Keller 文章。这假设攻击者运行了一次真正的海量计算,并存储了 TB 的数据;之后,攻击的在线阶段可以相当快。细节非常多,取决于你有多少存储空间,有多少 CPU 能力可用于在线阶段,以及你准备等待结果的时间。初始计算阶段很大,但技术上可行(一千台 PC 应该足够了);有一个开放的分布式项目,但我不知道他们走了多远。
短信拦截仍然是一个特定的场景。这不是完整的语音对话;实际交换的数据量很少,而且连接很短时间就结束了。这可能会限制上述攻击的适用性。而且,攻击必须要快:攻击的重点是抢夺以短信形式发送的秘密密码,让攻击者在普通用户之前就可以使用它。攻击者必须快速:
如果攻击者已经破坏了第一个身份验证因素,事情就会变得更容易(这就是我们使用双因素身份验证的原因:因为一个还不够)。在这种情况下,攻击者可能会在目标用户完全不知道的情况下发起身份验证请求,因此如果他没有收到短信,或者双重情况下,如果他收到不需要的短信(攻击者可能在深夜进行攻击;被攻击的用户只会在早上醒来时发现无根据的短信,给攻击者几个小时的时间来实施他的恶作剧)。
GSM 加密仅适用于无线电链路。在上述所有内容中,我们都集中在一个窃听手机和基站之间发送的数据的攻击者身上。所需的无线电设备似乎是现成的,并且很容易认为这种情况在实践中是适用的。然而,SMS 不仅仅从基站传送到移动电话。它的完整旅程从服务器设施开始,然后通过互联网,然后是提供商的网络,直到它到达基站——只有在那个时候,它才会被使用任何 A5 变体加密。
如何在提供商的网络内以及在提供商和希望发送 SMS 的服务器之间保护数据,超出了 GSM 规范的范围。所以任何事情都会发生。无论如何,如果攻击者是提供者,你就输了。执法机构在想要窃听人们的情况时,通常会很好地询问提供者,他们总是遵守。这就是为什么贩毒集团,尤其是在墨西哥和哥伦比亚,倾向于建立自己的细胞网络。
GSM 网络是加密的。但这当然不能使它防弹。它可以被妥协。然而,Rook(以及稍后更详细的 Thomas Pornin)描述的攻击是非常本地化的,需要付出巨大的努力才能完成。它们并非不可能,但非常困难。它需要在发送 SMS 的同时断开手机附近的 GSM 网络。网络运营商的某些人也有可能拦截 SMS。如果我们谈论的是国家安全/间谍活动,其中特定的人是目标,攻击者有非常复杂的手段和大量的资金可以花费,那么这绝对是可能的。不过,几乎同样适用于从您的硬件令牌提供程序获取种子值。
即使此 SMS 攻击成功,它也可能需要获取用户名和密码(假设 SMS 不是唯一的身份验证方法,而是第二个组件)。还有其他替代方案,用户向服务器发起 SMS 消息,服务器可以检查它是否与请求的质询/令牌匹配。服务器还可以验证始发者呼叫者 ID。当然,这也有其局限性,但如果做得好,理论上可以提供更多的保护。
如果像在大多数情况下一样,想法是通过提供 2 因素身份验证来提高安全性,那么将 SMS 添加到组合中会比标准用户名/密码显着提高它。您使用两个独立的通信通道(TCP/IP 和 GSM)这一事实使其更加安全。作为一个非常粗略的个人估计,我会说 SMS 令牌或多或少与基于硬件的令牌相当,安全方面。当然,上帝(或魔鬼)在细节中。
虽然关于加密的讨论很有趣,但我认为关键问题是:运营商是否愿意关心安全性?我担心答案是否定的。他们花钱保护 SMS 系统的动机是什么?他们甚至管理它们还是外包?他们提供哪些安全保证?你对管理服务器的人有多信任?
此外,关于这一点:如果您有 1 亿客户,并且您使重置密码的难度稍大一些,那么您的帮助台呼叫将通过屋顶。这就是为什么接管某人的帐户如此容易的原因。
此外,正如您在证书颁发机构框架中看到的那样,SMS 基础设施将成为攻击的目标。
我最近写了一篇关于通过链接总结这些要点的博客文章:http: //www.wikidsystems.com/WiKIDBlog/fraudsters-defeat-poor-risk-management-not-two-factor-authentication。从风险管理的角度来看,短信验证比密码更好,但不要指望它太久。当前的攻击目标是金融机构,但随着攻击成本的下降,还会有更多。
其他答案已经解释了 GSM 的安全性以及针对技术攻击所涉及的技术。
但是,还有许多其他攻击绕过了技术保护。
德国维基百科关于交易认证号码(通常通过短信发送)的文章列出了一些攻击:
例如,2015年在德国发生了一系列欺诈性汇款,欺诈者以客户的名义获得了一张新的SIM卡。类似的攻击以前也发生过,因此移动电话提供商改进了对订购新 SIM 卡的客户的身份验证。为了规避这种情况,诈骗者在致电电话提供商时,冒充手机商店的员工,并声称代表客户激活 SIM 卡(来源 [德语]:网上银行:Neue Angriffe auf die mTAN)。
显然,如果攻击者设法绕过它们,所有的技术保护都是无用的。