我需要在企业 SaaS 系统中验证每个用户的电话号码。而不是使用常见的“在此表单中输入 4/8 位代码”,我更愿意让用户回复一条短信,说“你好”,或者可能是每个用户的唯一消息。
我的目标是让用户更容易验证他们是否碰巧放弃了网站的入职流程。
让用户在线输入 4/8 位代码与从他们的设备发送代码或简单消息相比,有什么本质上更安全的吗?
我需要在企业 SaaS 系统中验证每个用户的电话号码。而不是使用常见的“在此表单中输入 4/8 位代码”,我更愿意让用户回复一条短信,说“你好”,或者可能是每个用户的唯一消息。
我的目标是让用户更容易验证他们是否碰巧放弃了网站的入职流程。
让用户在线输入 4/8 位代码与从他们的设备发送代码或简单消息相比,有什么本质上更安全的吗?
好问题!我将尝试分解安全模型。
让用户在线输入 4/8 位代码与从他们的设备发送代码或简单消息相比,有什么本质上更安全的吗?
虽然 SMS 作为一个整体构成了一种较弱的 2FA 方法(请参阅上述来自 The Verge 的文章),但至少前者要求攻击者对全球电信网络进行一些黑客攻击。后者被任何了解使用任何from:号码发送 SMS 的在线服务的人都轻而易举地打破了。
让我们首先说 SMS 不是传递敏感信息的安全方式。The Verge 的这篇文章似乎与我的理解非常吻合:
通过利用手机网络中的已知漏洞,该组织能够在一段时间内拦截发送到该号码的所有短信。这足以重置 Gmail 帐户的密码,然后控制 Coinbase 钱包。所需要的只是目标比特币用户的姓名、姓氏和电话号码。
Positive Technologies 能够使用自己的研究工具劫持短信,该工具利用蜂窝网络中的弱点拦截传输中的短信。该网络被称为 SS7 网络,由每个电信公司共享,以管理电话号码之间的通话和短信。有许多已知的 SS7 漏洞,虽然从理论上讲,只有电信公司才能访问 SS7 网络,但在犯罪市场上经常可以使用劫持服务。
资料来源:边缘。
因此,了解我们正在比较一个非常不安全的系统的两个变体的安全性后,让我们继续。
安全模型:为了让攻击者欺骗您的电话号码的所有权,他们需要:
摆脱这种攻击需要能够实时读取您的 SMS 消息,正如 The Verge 上面指出的那样,这很容易做到。
安全模型:为了让攻击者欺骗您的电话号码的所有权,他们需要:
乍一看,这看起来和上面的安全模型相同:“如果攻击者有 SS7 hack 并且可以阅读您的 SMS,那么他们也可以回复它们”。
但实际上这个模型要弱得多;第 2 步和第 3 步之间实际上没有耦合。有一百万个网站可以让您发送 SMS 并设置from:您想要的任何号码,因此只要攻击者知道服务器的 SMS 号码,他们就可以欺骗您的“hello”号码,即使他们无法阅读您收到的短信。
安全模型:为了让攻击者欺骗您的电话号码的所有权,他们需要:
好的,我们已经修复了耦合问题,并要求攻击者能够读取您传入的 SMS。如上所述,发送看似来自您的消息是微不足道的,所以我认为这种安全模型相当于传统的“将 SMS 代码输入网站”。
但是,您会遇到可用性问题,因为在手机键盘中正确输入代码比在计算机中输入代码要烦人得多,因此我不确定您是否在这里获得任何东西。
让用户在线输入 4/8 位代码与从他们的设备发送代码或简单消息相比,有什么本质上更安全的吗?
虽然 SMS 作为一个整体构成了一种较弱的 2FA 方法(请参阅上述来自 The Verge 的文章),但至少前者要求攻击者对全球电信网络进行一些黑客攻击。后者被任何了解使用任何from:号码发送 SMS 的在线服务的人都轻而易举地打破了。
如果您的目标只是简化验证过程,我认为要求回复消息不是一个好主意。至少,您应该记住,如果用户无法发送 SMS(例如,没有积分或用户正在漫游并且他没有购买带有发送 SMS 的计划),则无法通过验证。
此外,发送 SMS 会花费用户资金。此外,由于用户不确定它要花多少钱,他很可能会认为这是一个骗局(回想一下,有许多欺诈性网站需要电话号码才能访问“高级内容”)。