问题标签 [one-time-password]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

hmac - 在基于hmac的一次性密码实现中,如何保证客户端和服务器之间的计数器同步?

我们正在尝试实现一种基于 hmac 的一次性密码协议,以便通过我们的 api 对用户进行身份验证。

这个想法是针对私钥和增量计数器加密用户的唯一标识符(uid)。然后为下一次调用增加计数器。

然后在服务器端,使用私钥和计数器解密,得到用户标识符(uid)。

这工作正常。由于计数器,每个调用都是完全唯一的(一次)。

但是,我们将如何处理计数器的同步?如果客户端生成请求,为下一次调用增加计数器并发送请求,但服务器处于脱机状态并且从未接收到请求,或者存在互联网连接问题并且请求从未通过 - 现在服务器并且客户端与彼此的计数器不同步。

这是“您应该知道是否已提交请求”的情况吗?即我们可以从服务器添加一个响应标头来说明计数器是否已增加,并且只有当它增加时,我们才会在应用程序中增加计数器......但同样可以反过来说 - 我们可以发送一个请求,服务器接收到它,增加它自己的计数器并发送一个响应,但是在服务器处理它的请求时互联网连接已经中断,并且应用程序永远不会收到响应,永远不会增加它的计数器,因此两者都超出了再次同步。

感谢您能给我的任何见解。

0 投票
1 回答
9077 浏览

c - 在 C 中实现 hmac sha1

我正在尝试一小段会生成 Hmac-sha1 的代码。我被要求使用 OpenSSL 库自己编写 hmac 实现以进行 SHA1 计算。在为算法“维基”之后,这是我下面的内容。我使用了带有 RFC 2246 指定测试值的输入:

使用我使用 RFC2104 中的示例完成的以下代码,我可以根据需要获取 COUNTER = 0 的值,但是当 COUNTER 值设置为其他值(如上面的 2,3 等)时,HMAC SHA1 与上述值不匹配在 RFC 2246 中。另外一个问题是,如果我使用 memcpy 和 memset 而不是 bzero 或 bcopy,代码会显示一个不同的(错误的)Hmac Sha1 值,它与 COUNTER = 0 值不匹配。请解释为什么会出现这种奇怪的行为?

0 投票
1 回答
4806 浏览

java - OTP & SMS-Gateway 实施涉及哪些步骤和过程

我正在从事一个将用作安全汇款应用程序的项目。我正在使用springhibernatejpos。在汇款期间,我必须从服务器向用户的手机发送 OTP,作为响应,用户必须输入OTP

所以我的问题是实现这一目标涉及哪些过程和多少步骤,我已经用谷歌搜索以及在 stackoverflow 上进行搜索,但未能理解整个机制。我不想使用AT commonds和 sms 你应该知道通过/通过 http 发送或更好的介质。

请帮助我了解整个机制,该做什么和不该做什么现在是我的首要任务并且必须实施。

0 投票
1 回答
945 浏览

javascript - javascript中的TOTP库

我目前正在开发一些客户端 - 服务器应用程序。我需要使身份验证过程更安全,所以我想使用 TOTP。客户端应用程序是用 phonegab 编写的,所以我需要一些稳定可靠的 javascript 库。我在 github 上找到了一些,从 jBoss 社区找到了 aerogear-otp-js。

Aerogear-otp-js 看起来不错,但它是唯一的初始版本,所以我认为在生产环境中使用它不是一个好主意。我还需要设置按键之间的间隔,这不是 aerogear 中的选项。那么你能推荐我一些好的图书馆吗?

0 投票
1 回答
1553 浏览

java - 将 32 位长十六进制转换为 6 位数字 OTP

如何将以下 32 位 HEX 转换为 6 位十进制?

MD5:9d10f0693b9d8e6c32c33d1e9be377b5

我对某些字段进行了哈希处理以获得上述内容。但是,我需要生成 6 位 PIN。

0 投票
1 回答
642 浏览

java - 带有时间限制的 OTP 概念

方案一:

哈希(用户名、密码和 nowtime())

*nowtime() 定义为:

方案 B:

哈希(用户名、密码和 nowtime())

*程序 B 执行循环(最多 15 秒),每个 nowtime() 定义为:

尽管两个程序的时间匹配,但由相同哈希函数产生的 OTP 是不同的。我不需要代码,请帮助我了解 2 个程序之间的同步时间。

0 投票
1 回答
948 浏览

node.js - 使用 NodeJS 的金雅拓 OTP 令牌

是否有任何 NodeJS 模块允许我针对 Gemalto IDProve 100 OTP 令牌进行身份验证?我有一个来自亚马逊的,我认为这个设备的美妙之处在于它不需要连接到服务器:你只需将 2 个连续的代码输入到你自己的自定义服务器中,一个算法就可以不断地对此进行身份验证设备:http ://www.gemalto.com/products/easy_otp_token/#

如果没有 NodeJS 模块,是否有任何 .NET 或其他语言的示例,您可以在其中读取这两个值并拥有可以验证未来代码的算法?

谢谢!

0 投票
3 回答
275 浏览

php - 此 php 代码中有任何安全漏洞吗?

我在这个站点上找到了以下代码的结构,我现在正在使用它,所以我只想知道是否有任何可以从该代码中利用的安全漏洞,是否可以改进或者是否可以改进我不应该使用任何不推荐使用的元素。

我将通过 SMS 将以下内容用于 OTP 代码。

初学者

0 投票
2 回答
409 浏览

c# - 类似 SecurID 的 Web 服务身份验证

我正在开发一个在 Azure 上运行的非常小的 ASP.NET ASHX Web 服务,我想保护它。它必须能够在没有用户交互的情况下工作,所以我想只是将一些加密的密钥传递给请求。但后来我想,以防万一,我可能应该不断地进行那个关键的改变。

到目前为止,我的想法是每 60 秒在客户端和服务器上以相同的方式生成一个密钥,对其进行哈希处理,并将其用作密钥。

但是,我遇到了一些我不确定如何处理的事情。如果它每 60 秒更改一次,并且客户端在第 59 秒生成密钥,然后服务器响应请求的时间超过 1 秒,则它的密钥不会有所不同,并且请求将被拒绝。

有什么好的方法来处理这种情况......也许密钥每 60 秒更改一次,但在更改后的几秒钟内是好的?

我意识到可能还有其他方法可以保护服务,但出于一些原因,我已经排除了客户端证书之类的东西,总的来说,我可以接受它非常简单。我只是希望它比不变的密码更简单。

想法?

0 投票
1 回答
1448 浏览

php - PHP one-time password?

I've been struggling around about learning how HOTP (counter-based HOTP codes for Android Google Authenication ). I've found this code, which has the ability to share a secret key between the server and client ( Mobile APP ).

This Output the following -

Now my problem is that I can not manage for above code to work properly on both Client and Server side. I've used the same Secret key print $i."\t".($a=oath_hotp("**mysecretvalue**",$i)); The output is completely different. Please note this is counter based which means there is no time sync like TOTP.

I've doubled check my secret code on my android phone and server side. What could be wrong? Please note I'm not really familiar with PHP security. So if the above does not work with Google's Authentication please provide me with a place to start with.

Thank You