首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猜测一个HOTP/TOTP秘密需要多少已知的时间/结果组合?

猜测一个HOTP/TOTP秘密需要多少已知的时间/结果组合?
EN

Security用户
提问于 2017-06-20 09:00:02
回答 2查看 2.3K关注 0票数 7

当只知道结果时,我想到了“恢复”、“确定”、“猜测”、“计算”或“复制”HOTP/TOTP的秘密。

如果我们可以在不知道实际秘密的情况下查看HOTP/TOTP代码的实时创建。

  1. 为了“猜”密匙,需要多少已知的结果(时间和6位码的组合)?
  2. 那么,为了重用密钥并验证产生的输出,我们成功地恢复密钥的可能性有多大?
  3. 是否有如何实现这一目标的(代码)示例?
EN

回答 2

Security用户

回答已采纳

发布于 2017-06-20 12:20:08

看看HOTP (TOTP只是一个基于时间的特例)是如何计算的。它使用的是基于哈希函数的HMAC,或者是SHA1、SHA2 (或者在最坏的安全情况下使用MD5 )的秘密种子和一些计数器。它以PIN的形式返回部分结果。

当攻击拦截PIN时,您正在试图找出一个未知长度的秘密种子。

基于哈希函数的定义,它是不可逆的(除非它被破坏)。即使您拥有整个哈希,也不能简单地逆转操作。但是你有6到8个小数。你也不知道它们在什么地方适合更长的小数字符串--这也是根据最后一个字节而改变的)。

那么你有什么选择呢?最简单的方法可能是强行强制所有可能的种子值(例如32B十六进制字符串),并将它们与被截获的数据进行比较。这可以与TOTP一起工作,因为您还可以知道生成它的时间(30多个时间框架)。但是在HOTP中,你不知道计数器是什么(除非你能拦截所有的PIN)。

我想说,检察官办公室的优势在于其算法的复杂性和使用的简单性。我没有给出为什么这很难的证据,但我希望答案总结了你的问题,并回答了为什么你不能简单地这样做。

票数 6
EN

Security用户

发布于 2020-02-02 00:17:36

我读到的一篇博客文章有一个一步一步的指南,用于强制执行base32编码的共享秘密.所使用的技术只需要两个OTP代码+时间戳。

总之,您需要枚举(通过暴力)可能用于生成每个代码的许多可能的共享秘密。比较这两个列表,您将只看到一个可能生成两个代码的共享秘密。

强行执行128位的秘密是不可能的,但是(同样,从内存中) base32值的标准和编码异常的模糊性意味着大多数秘密实际上要短得多--足以强制执行。例如,一个具有16个字符的基32编码秘密,解码时仅为80位.

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/162348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档