【问题标题】:Using SMS as an authentication factor for a website使用 SMS 作为网站的身份验证因素
【发布时间】:2010-10-27 00:28:55
【问题描述】:

这个问题是我上一个问题的后续问题
I'm trying to implement 2 factor authentication on the cheap. How would I do that?

我正在探索使用安卓手机发送短信或机器人向用户的家庭电话或移动设备发送密码/令牌代码的想法。我正在考虑使用 android,因为硬件很便宜,而且我可以毫无问题地安装我制作的应用程序。

用户应该每天登录系统一次。该应用程序目前有 75 个用户。不保证用户有手机。

我有几个问题:
这是一种可行的第二种身份验证形式吗?
有没有更便宜的方法来实现这一点?

工作流程如下。

用户进入 webapp 输入用户名,选择他们想要的通知类型,短信或语音并提交。

webapp(在我的例子中是 C# .net)验证用户是否存在并查找我们记录的电话号码。

Web 应用程序会创建一个令牌,该令牌将在设定的时间内过期,并以某种方式将此令牌和电话号码传达给 Android 设备。 (XML、文件或其他任何东西)

Android 手机有一个应用程序,该应用程序检查 XML 文件或包含文件的文件夹,其中包含设置间隔的信息,并执行 SMS 或打电话给该人,并用机器人声音告诉他们令牌。

然后手机会通知 webapp 消息已发送或失败,webapp 会通知用户。

这是我在想的图片。

感谢您的任何反馈。安全不是我的强项。

【问题讨论】:

  • 嗯,我觉得你的场景有点不清楚。因此,用户登录后,您的手机会向他们的手机发送一条消息。然后到底发生了什么?用户输入该消息?
  • 哦,是的,我对那部分有点呆滞。手机向用户的手机发送该令牌,然后用户使用令牌及其凭据登录。

标签: android authentication mobile-phones


【解决方案1】:

您可以对 SMS 执行此操作,但不能对录音执行此操作。你也可能不想……但我马上就会讲到。

要让安卓手机作为你的网络服务器的代理做事,你可能想在手机上启用usb调试,然后使用adb工具设置一个端口转发,以便网络服务器上的特定本地端口转发到电话上的一个端口,在那里您将有一个服务监听。保持该服务运行可能有点棘手,因为 android 确实是围绕用户交互应用程序设计的,但它可能是可以做到的,特别是如果你 root 手机并启动一个本机可执行文件并设置其 OOM 杀手值来保护它。

您无法在当今的 Android 手机上将录制的语音消息播放到通话音频中,因为通话中的音频会绕过 linux 子系统,而是由其他(无线电等)处理器内核处理。您可以使用连接到环回的耳机线来做一些事情……但这已经变得极端了。

Android 手机可能无法解决您的应用程序问题……您将依赖手机网络、维护计划,而您的运营商可能会提出一些反对理由。

我认为考虑使用短信网关服务会更合适,如果用户选择语音通知,可能还会使用 voip 网关服务。可能有人已经在出售您的完整问题的解决方案了。

【讨论】:

  • 我找不到任何反馈耳机,看来我将不得不调查 voip 服务。再次感谢。
  • 这不是我希望你能买到的那种东西,而是你必须制造它——可能来自耳机连接器并在耳机和麦克风之间使用一个小电容器。我想你可能还需要一个 32 欧姆的电阻跨过耳机触点或用于检测的东西。不过,我认为 SMS 和 VOIP 网关比手机服务计划更适合您。
【解决方案2】:

这在原则上听起来不错,但请记住要非常保守地确定这会为您提供哪些信息:您已经证明输入代码的人拥有手机,仅此而已。

结合他们也知道正确密码的事实,这通常足以确信正确的用户已通过身份验证。您只需要确保攻击者无法猜测或嗅探代码。您可以通过生成加密随机代码来防止猜测,但您必须检查以了解嗅探 SMS 的难度。除了特别敬业的攻击者之外,我猜得相当困难,但大概我们这里不是在谈论国家安全。

确保您有在登录尝试失败或用户报告手机丢失或被盗时撤销密码/手机号码的机制。您还需要为那些没有手机的用户提供替代方案。

认证的一般准则:你知道的东西,你持有的东西。你知道的密码,你持有的手机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 2017-10-14
    • 2014-02-14
    • 2018-12-31
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2018-04-11
    相关资源
    最近更新 更多