问题标签 [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 投票
5 回答
4999 浏览

authentication - 如何设置一次性密码验证?

我有一个家庭网络,我可以远程访问很多。但我担心安全问题。虽然我确实有强密码,但我担心有人会获取我的密码并使用它来获得访问权限。

我听说过“一次性密码”,甚至在我的大学里使用过它们。我们只需按下设备上的一个按钮(或在手机上运行应用程序)并获得一个生成的密码,该密码可以在接下来的一分钟左右使用。

  • 我怎样才能设置这样的东西?
  • 是否有易于使用和设置的系统?
  • 有没有人玩过这些系统之一的 SDK?
  • 我可以从哪里获得入门套件?

编辑:我正在运行一个混合的 Linux 和 Windows 网络,我隐约希望使用它在两个操作系统上进行身份验证。(不,没有域控制器,但我想我可以使用 Samba 设置一个。)

0 投票
5 回答
4940 浏览

c++ - 仅存在于 RAM 中的临时文件?

我正在尝试使用 OTP 方法编写加密。为了与安全理论保持一致,我需要将纯文本文档仅存储在内存中,并且永远不会写入物理驱动器。tmpnam 命令似乎是我所需要的,但据我所知,它将文件保存在磁盘上而不是 RAM 上。

使用 C++ 是否有任何(平台无关)方法允许文件仅存在于 RAM 中?如果可能,我想避免使用 RAM 磁盘方法。

谢谢

编辑:谢谢,这对我来说只是一个学习的东西,我是加密新手,只是通过不同的方法工作,我实际上并不打算使用其中的许多方法(尤其是 OTP,因为原始文件大小增加了一倍,因为“软垫”)。

如果我完全诚实,我是一个 Linux 用户,所以放弃 Windows 并不会太糟糕,我现在正在考虑使用 RAM 磁盘,因为 FUSE 对于“学习”的东西来说似乎有点矫枉过正。

0 投票
2 回答
968 浏览

mysql - 在 mysql 中实现部分 rfc4226 (HOTP)

正如标题所说,我正在尝试在 SQL 中实现 RFC4226“HOTP:基于 HMAC 的一次性密码算法”的编程部分。我想我有一个可以工作的版本(对于一个小测试样本,它产生与代码中的 Java 版本相同的结果),但它包含一对嵌套的 hex(unhex()) 调用,我感觉可以做得更好。我受制于 a) 需要执行此算法,以及 b) 需要在 mysql 中执行,否则我很乐意查看其他执行此操作的方法。

到目前为止我得到了什么:

有没有更好(更有效)的方法来做到这一点?

0 投票
2 回答
3704 浏览

java - 使用充气城堡的 Java ME MD5 字符串 - 不能多次散列

我注意到我的很多谷歌搜索都把我带到了这里,所以我想也许我可以借用你的聪明才智:)

作为我三年级学位论文的一部分,我正在为移动设备(以及用于登录的网站)开发一次性密码生成器。

使用 org.bouncycastle.crypto.digests.MD5Digest 库,我正在获取一个字节数组(来自字符串用户输入),然后将其散列 X 次。这也称为菊花链散列字符串或加密方法。

我的问题是,如果字符串被散列一次,那么它正确地散列它,但是如果新的散列再次被散列,结果是不正确的。

请参见下面的代码:

我认为两者都是;

  1. 摘要未返回正确的字节数组
  2. 十六进制转换器错误地转换了这个

我使用以下秘密进行测试:A 具有以下 MD5 输出:

  1. 7fc56270e7a70fa81a5935b72eacbe29
  2. 8f28f2e7231860115d2a8cacba019dbe(这应该是 4cbd6d53280de25e04712c7434a70642)

非常感谢您提前提供的帮助:)

ps 我正在对照 PHP md5 检查它,这也可能是一个问题吗?

0 投票
1 回答
1515 浏览

java-me - OTP S/KEY - 种子是如何产生的,每次都是随机的吗?

我正在研究开发一种一次性密码认证系统(j2me 用于电话,php 用于服务器端)

我正在努力了解这个过程,这就是我所理解的

  1. 用户 > 将随机秘密 (S) 输入哈希 n 次
  2. 用户 > 提交 S^n 到服务器
  3. 服务器 > 保存 n 和 S^n
  4. 用户 > 生成 (S^n)-1 并提交给服务器
  5. 服务器 > 接受用户输入并再次应用散列函数 1 并根据先前存储的散列检查它

现在,通过阅读 RFC2289 (S/Key),当他们输入唯一标识符时,有一个种子会发给客户端并与用户的秘密连接起来(在第 4 步)这个种子是如何创建的,是随机的,是存储的.

0 投票
1 回答
1049 浏览

php - OTP 或 S/KEY - 将十六进制字符串转换为 6 个可读字

如 RFC2289 (S/KEY) 中所示,将十六进制字符串转换为可读格式时必须使用的单词列表。

我该怎么做呢?

RFC 提到:

因此,一次性密码被转换为六个短(1 到 4 个字母)英文单词的序列并被接受。每个单词都是从 2048 个单词的字典中选出的;每个字 11 位,所有一次性密码都可以被编码。

阅读更多: http: //www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe

这是否意味着将十六进制转换为十进制,然后将其用作单词数组的索引。另一件事可能是使用文本编码,例如 1111 可能等于 UTF-8 编码中的 dog

在此先感谢您的帮助!

0 投票
1 回答
944 浏览

java-me - OTP S/KEY 一次性密码 - 折叠 MD5 摘要输出

我正在尝试为手机创建一次性密码生成器。在 RFC2289 中,它指定我必须折叠 MD5 的输出,我使用的是充气城堡 MD5,但我无法弄清楚如何折叠字节数组输出。

这就是我到目前为止所拥有的

0 投票
2 回答
1805 浏览

apache - 哪些一次性密码设备与 mod_authn_otp 兼容?

mod_authn_otp是一个 Apache Web 服务器模块,用于使用通过 RFC 4226 中定义的 HOTP/OATH 算法生成的一次性密码 (OTP) 进行双重身份验证。开发人员仅在其上列出了一个兼容设备(Authenex 的 A-Key 3600)网站。如果设备完全符合标准,并且允许您恢复令牌 ID,它应该可以工作。但是,如果不进行测试,很难判断设备是否完全合规。

您是否曾经尝试过使用 mod_authn_otp(或其他开源服务器端 OTP 程序)的其他设备(软件或硬件)?如果是,请分享您的经验:)

0 投票
1 回答
988 浏览

java - 关于实施一次性密码系统,我还需要了解什么?

我的任务是创建一个一次性密码 (OTP) 系统,该系统最终将用于在移动设备上创建 OTP 生成器。

我们正在考虑使用计数器使用HOTP (rfc 4226),但可能会有一些变化。我们不需要遵守 OATH。

这是我在安全/加密领域的第一次体验,所以我试图避免(并了解)让安全新手陷入困境的安全陷阱,并更好地了解我需要做什么和知道要完成什么这个任务。

除了这个一般性建议之外,我还有一些关于实施这个项目的具体问题:

即使只是使用 SHA-1,HOTP 是否仍然被认为是安全的?我的一位同事建议我们应该使用 HMAC-SHA-512。切换我们使用的底层算法看起来很容易。我应该知道这里有什么副作用吗?比如增加处理时间?

我对计数器同步感到担忧。我应该使用什么作为可能的计数器值的理智前瞻?如果用户的点击超过了我们的前瞻限制,那么恢复同步的最佳方法是什么?与相应的 OTP 一起显示和发送计数器会更容易,还是会显着削弱安全性?

我对安全存储相关信息(例如共享密钥和计数器值)的最佳实践也没有很好的理解。

当您回答时,请记住我是这个领域的新手,并且仍在努力了解行话和首字母缩略词。提前致谢。

0 投票
1 回答
461 浏览

java - Android和服务器之间的密钥不同

我正在使用 hotp 算法(RFC 4226)开发一次性密码应用程序。我有一个用于 otp 生成的 Android 应用程序(通过模拟器)和一个用于验证的服务器端应用程序。就其本身而言,两者都工作正常并通过了测试。

但是,我在我的设备上生成的密钥与我在服务器上生成的密钥不同,即使输入是硬编码的并且它们之间是相同的。这导致在设备和服务器上生成不同的一次性密码,这破坏了我生成有效一次性密码的能力。我试图弄清楚为什么会发生这种情况,如果有什么我可以做的。

服务器和设备模拟器之间的代码是相同的,用于构建 SecretKeys 并从密钥生成一次性密码。我检查了设备和服务器上 keyspecs 中的字节,它们是相同的。但是,当我从 secretKey.getEncoded() 中查看字节时,由 SecretKeyFactories(均来自 DESedeKeySpecs)生成的密钥存在细微的差异。如果我使用 DES 而不是三重 DES,我会看到类似的差异。

有趣的是,在我的Android项目中,KeySpec和生成的SecretKey中的字节是一致的(虽然被截断了),但是在服务器上,KeySpec和生成的SecretKey之间的字节偶尔会出现一对一的差异。这是正常的吗?我在使用 DES 和三重 DES 时阅读了一些关于奇偶校验位更改的内容,所以我不确定这是否是一个问题。

我也知道 Android 使用的是 Bouncy Castle,但我的服务器使用的是 SunJCE。我的理解是这不应该出现问题,我想知道这是否是使用两个不同提供程序时的已知事件。我获得 Bouncy Castle 服务器端的能力非常有限。

请给点建议和启示?