通过 SMS 对用户进行身份验证

信息安全 验证 密码
2021-08-30 21:15:25

我参与了一个项目,该项目正在构建一个聊天机器人,用户可以通过他们的手机通过 SMS 与之通信。我们希望用户能够使用该机器人通过 SMS 为他们在我们这里的帐户执行一些基本的帐户管理任务 - 更改他们的基本计划、购买附加功能等。

我们想知道是否有任何方法可以(合理地)安全地识别发送短信的用户确实是帐户所有者?我们考虑的选项是 1) 要求提供用户信用卡的最后 4 个,以及 2) 通过电子邮件向用户发送一次性密码。

显然,这些都不能提供密封的安全性,但这里涉及的责任相当低。如果有人丢失了他们的智能手机,小偷可以使用这个聊天机器人进行的指控将是这个人最不担心的事情。万一有人的手机被盗,我们愿意承担让用户完整的必要成本。

但是,我们仍然希望使此识别过程尽可能安全。我们看到的问题:

在场景 1 中,信用卡的最后 4 个可能会留在 SMS 历史记录中,因此任何拿到手机(或安装恶意应用程序)的人都可以访问信用卡的最后 4 个并且现在可以进行身份​​验证。

对于场景 2,任何可以访问电话的人都可以访问电子邮件,因此与场景 1 相比并没有太大的改进。

是否有任何其他我们可以用来进行身份验证的技术可以提供比这两种方法更高的安全性?我知道没有什么是密封的,但我正在寻找好的建议。

我考虑过发送盐之类的东西,让他们计算最后 4 的哈希值,然后将其发送回去,但这太复杂了,而且对安全性的改进仍然不大。

3个回答

听起来您正在寻找的是“带外”代码或令牌。这意味着您想要一些物理上拥有电话的人无法访问的东西。所以电子邮件和谷歌身份验证器之类的东西都出来了。

我假设用户将(至少)通过网络浏览器进行首次帐户设置,让他们输入聊天机器人稍后会提示他们输入的“SMS PIN”怎么样?

这类似于使用他们信用卡号码的最后 4 位数字,因为它将在他们的 SMS 历史记录中,并且电话窃贼可以向您的聊天机器人收费。让我对 CC 数字感到紧张的是,为了方便您的服务,您正在增加用户身份被盗的风险。

正如您在问题中指出的那样:如果用户的手机被盗并且攻击者越过了锁定屏幕,他们无论如何都会沉没。您真正要防止的是有人通过SMS 欺骗号码从另一部手机冒充您的用户在这方面,电子邮件一次性密码或预设密码将为您提供所需的安全性。from:

一个小的移动应用程序是不可能的吗?

它将处理所有传入和传出的消息(当然是相关消息),它将删除所有发送和接收的消息(来自应用程序)。它需要一个密码才能访问,用户每次都必须输入该密码。也许还有一些基本的消息加密?

作为一个额外的好处,它将增加可用性,因为它可以使用提示创建 SMS,而不必记住正确的缩写和消息格式。

除非发生一些奇怪的事情,比如切换到机器人呼叫而不是 SMS 之类的东西,否则这似乎是用户必须处理的一个问题。如果您确实无法使用 SMS 进行身份验证,那么您在处理攻击者的物理访问方面几乎无能为力。

也许,确保在每条身份验证消息后提醒用户使用强电话密码,并删除他们与聊天机器人的文本历史记录。

每个人说这并不是一个真正的解决方案,但如果攻击者具有物理访问权限并且可以通过手机本身的密码,那么存在比向您的聊天机器人收费更大的问题。

就像迈克建议的那样,尽量不要使用 cc 数字进行身份验证,这只是不好的做法。