我参与了一个项目,该项目正在构建一个聊天机器人,用户可以通过他们的手机通过 SMS 与之通信。我们希望用户能够使用该机器人通过 SMS 为他们在我们这里的帐户执行一些基本的帐户管理任务 - 更改他们的基本计划、购买附加功能等。
我们想知道是否有任何方法可以(合理地)安全地识别发送短信的用户确实是帐户所有者?我们考虑的选项是 1) 要求提供用户信用卡的最后 4 个,以及 2) 通过电子邮件向用户发送一次性密码。
显然,这些都不能提供密封的安全性,但这里涉及的责任相当低。如果有人丢失了他们的智能手机,小偷可以使用这个聊天机器人进行的指控将是这个人最不担心的事情。万一有人的手机被盗,我们愿意承担让用户完整的必要成本。
但是,我们仍然希望使此识别过程尽可能安全。我们看到的问题:
在场景 1 中,信用卡的最后 4 个可能会留在 SMS 历史记录中,因此任何拿到手机(或安装恶意应用程序)的人都可以访问信用卡的最后 4 个并且现在可以进行身份验证。
对于场景 2,任何可以访问电话的人都可以访问电子邮件,因此与场景 1 相比并没有太大的改进。
是否有任何其他我们可以用来进行身份验证的技术可以提供比这两种方法更高的安全性?我知道没有什么是密封的,但我正在寻找好的建议。
我考虑过发送盐之类的东西,让他们计算最后 4 的哈希值,然后将其发送回去,但这太复杂了,而且对安全性的改进仍然不大。