我试图在我的android应用程序中为登录添加OTP功能。我使用node.js作为后端。现在,我首先考虑生成像math.random()这样的随机数。
我可以轻松地在服务器端生成OTP,并将它们存储在我的MongoDB数据存储库中,然后当用户进入OTP时我将匹配它们,但是现在我遇到了这些用于OTP的预构建模块--这个Speakeasy。
HOTP/TOTP有两种方法。我是问为何有人会使用这两个数字而不使用随机数字,我的意思是HOTP/TOTP的用途是甚麽?如果有人在任何应用程序/网站上设计了OTP功能,请告诉我。
更新在服务器端的任何安卓设备上进行OTP认证的一般方法是什么,我指的是像zomato、Airbnb这样的应用程序,它们是如何对用户进行OTP验证的?
发布于 2022-10-18 23:47:27
这些OTP证明“我拥有这个产生OTP的设备。”
从最广泛的意义上说,这可能是一种涉及甚至连互联网接入都没有的设备的声明。HOTP和TOTP是可以脱机使用的算法。设备和服务器都独立地生成代码:
code = f(shared secret, common info)该共享秘密只需设置一次,例如,在设置双因素身份验证时,必须将其放入硬件dongle或在QR代码中扫描。常见的信息是服务器和dongle都可以确定每次登录的时间,例如您以前登录的次数或当前的时间和日期。
使用实际的随机数将要求您的服务将该随机数传递给设备。如果你正在开发一个拥有智能手机的受众,这并不是一个太疯狂的想法。例如,谷歌的双因素认证支持向您的手机发送通知,您只需单击一个按钮即可登录。
还有一件事,一个实际的考虑因素:使用像TOTP这样的现有方案可以使任何试图对系统的安全性进行推理的人更加容易。如果他们已经理解了TOTP,他们可以继续检查您正在构建的系统的其他部分。
https://stackoverflow.com/questions/34476188
复制相似问题