这个问题是我之前提出的问题的后续问题 I'm trying to implement 2 factor authentication on the cheap. How would I do that?
我正在探索使用Android手机短信或机器人将针/令牌代码与用户的家庭电话或移动设备通话的想法。我正在寻找使用android,因为硬件将是便宜的,我将能够安装我没有问题的应用程序。
用户应该每天登录一次系统。该应用程序目前有75个用户。用户不能保证有手机。
我有几个问题:
这是一种可行的第二种身份验证形式吗?
有没有更便宜的方法来实现这个目标?
工作流程如下。
用户进入webapp输入用户名,选择他们想要的通知类型,短信或语音并提交。
webapp(在我的情况下是C#.net)验证用户是否存在并查找我们记录的电话号码。
网络应用会创建一个令牌,该令牌将在设定的时间内过期,并以某种方式将此信息和电话号码传达给Android设备。 (XML,文件或其他任何东西)
Android手机有一个应用程序,它检查包含文件的XML文件或文件夹,其中包含有关设定间隔的信息,并执行短信或给该人打电话,并用机器人声音告诉他们令牌。
然后,手机会通知网络用户该消息已发送或失败,并且网络应用程序会通知用户。
这是我正在思考的图片。
感谢您的任何反馈。安全不是我的强项。
答案 0 :(得分:2)
您可以为短信执行此操作,但不能用于录音。你也可能不想......但我马上就会明白这一点。
要让Android手机作为您的网络服务器代表执行操作,您可能希望在手机上启用USB调试,然后使用adb工具设置端口转发,以便Web服务器上的特定本地端口转发到手机上的端口,您将收听服务。保持该服务运行可能有点棘手,因为android实际上是围绕用户交互式应用程序设计的,但它可能是可以完成的,特别是如果您根据手机并启动其OOM杀手值设置为保护它的本机可执行文件。
您无法在今天的Android手机上播放录制的语音留言,因为通话中的音频绕过了Linux子系统,而是由其他(无线电等)处理器核心处理。您可以使用连接到环回的耳机线做某事......但这种情况变得极端。
Android手机可能不是您应用程序问题的解决方案......您将依赖于细胞网络,维护计划,而您的运营商可能会提出异议理由。
我认为考虑使用短信网关服务更合适,如果用户选择语音通知,则可能是voip网关服务。可能有人已经在为您的完整问题销售解决方案。
答案 1 :(得分:1)
原则上这听起来不错,但请记住对于这些信息给你的确切信息非常保守:你已经证明输入代码的人拥有手机,仅此而已。
结合他们也知道正确密码的事实,这通常足以确信正确的用户已经过身份验证。您只需要确保攻击者无法猜测或嗅探代码。您可以通过生成加密随机码来阻止猜测,但是您必须检查以查看嗅探SMS的难度。除了特别专注的攻击者之外,我猜得相当辛苦,但我们可能不会在这里谈论国家安全。
确保您在登录尝试失败或用户报告手机丢失或被盗时,有撤销密码/手机号码的机制。您还需要为没有手机的用户提供替代方案。
身份验证的一般口头禅:你知道的东西,你持有的东西。您知道的密码,您持有的手机。