ama*_*rma 5 android one-time-password node.js
我正在尝试在我的android应用中添加用于登录的OTP功能。我正在使用node.js作为后端。现在,首先我想到了生成像这样的随机数math.random()。
我可以在服务器端轻松生成PTP,并将它们存储在MongoDB数据存储中,然后在用户输入OTP时将它们匹配,但是现在我遇到了这些OTP的预构建模块,这是一个Speakeasy https://www.npmjs .com / package / speakeasy。
HOTP / TOTP有两种类型的方法。我问为什么有人会使用这两个而不是随机数呢?我的意思是HOTP / TOTP的用途是什么?如果有人在任何应用程序/网站中设计了OTP功能,请赐教。
更新 在服务器上的任何Android设备上进行OTP身份验证的一般方法是什么,我的意思是像zomato,Airbnb这样的应用程序如何对用户进行OTP验证?
这些 OTP 证明“我拥有这个生成 OTP 的设备”。
从最广泛的意义上讲,这可能是涉及甚至无法访问互联网的设备的声明。HOTP 和 TOTP 是可以离线使用的算法。设备和服务器均独立生成代码:
code = f(shared secret, common info)
Run Code Online (Sandbox Code Playgroud)
该共享秘密只需设置一次,例如,在设置双因素身份验证时,将其放入硬件加密狗中或以二维码扫描。公共信息是服务器和加密狗在您每次登录时都可以确定的信息,例如您之前登录的次数或当前时间和日期。
使用实际的随机数需要您的服务将该随机数传送到设备。如果您正在为拥有智能手机的受众进行开发,那么这并不是一个太疯狂的想法。例如,谷歌的双因素身份验证支持向您的手机发送通知,您只需单击按钮即可允许登录。
还有一件事,一个实际的考虑:使用像 TOTP 这样的现有方案可以让任何试图推断系统安全性的人变得更容易。如果他们已经了解 TOTP,他们可以继续检查您正在构建的系统的其他部分。
| 归档时间: |
|
| 查看次数: |
601 次 |
| 最近记录: |