网站通常会向手机号码发送验证码以进行验证。这安全吗?如果它不安全,有没有更好的选择?
基于手机号码的验证安全吗?
如果它不安全,有没有更好的选择?
它对于某些威胁模型是安全的,并且是可访问性与攻击面的最佳权衡。要拦截 SMS,您必须对消息的路由或接收它的设备进行一些控制。
如果没有在运营商级别提供特权信息/洞察力,SMS 是可用的最佳身份验证方法,尽管它存在缺陷,包括说服用户在收到代码时将代码发送给第三方。
如果您需要对身份和在线用户之间的某种联系进行更强有力的确认,您可能需要一些不是电话的东西。邮寄与显示给用户的代码配对的硬件令牌更安全,但成本更高且速度更慢。Fido2 支持防止重放,但不允许电话号码的稀缺感,因为大多数人不会花钱注册大量电话号码,除非您进入认证签名并打开一个整体新的蠕虫罐...
这些“更强大”的解决方案中的每一个都解决了不同的问题,并增加了公司、最终用户或两者的额外成本和复杂性负担。SMS 仍然是公众最容易实现的目标。
最初这个问题不是关于 SMS 验证(例如密码恢复或 MFA),而是关于电话号码的验证。这回答了这个问题。
验证的目的不是验证号码的所有权,而只是对其进行访问。验证订阅的所有权是合法的,需要法律文件。父母通常拥有子女的订阅、员工的工作场所等。此外,无需验证所有权,因为用例与访问权限相关。
您要求比 SMS 更好的验证,但 SMS 是可用的最简单的验证,因为没有多少方法既绑定到号码又可供用户访问。好吧,系统可以打电话给用户,机器人可以告诉秘密,但这并没有增加任何东西,因为电话也可以被监听。对于听力受损的人来说,这也将是一场噩梦。
另一方面,实际上并不需要更强的身份验证,因为其目的是防止错误输入号码,从而可能导致用户无法使用 MFA。从网站的角度来看,如果您接受短信通知甚至广告,验证也可能是为了避免向第三方发送不必要的消息。
对这些验证系统的攻击已经存在了几年(至少)。
下面是它的工作原理:
攻击者冒充账户持有人呼叫目标机构并请求服务。
另一名协同工作的攻击者称受害者冒充同一机构的代表,调查可能的账户欺诈行为。
机构要求攻击者验证身份。攻击者一然后尝试使用挖掘的信息进入 SMS 验证阶段。攻击者二然后告诉目标期望验证码作为帐户解析过程的一部分。
目标从机构收到有效的短信,然后将其转发给攻击者二。代码被传递给攻击者,攻击者向该机构进行身份验证并进行交易。