Hash 硬件令牌设备如何工作?

Hash 硬件令牌设备如何工作?,hash,cryptography,hmac,two-factor-authentication,one-time-password,Hash,Cryptography,Hmac,Two Factor Authentication,One Time Password,最近,我的银行给我发送了一个微型设备,它可以生成一个在执行在线交易时必须使用的唯一代码。当我按下一个特定的白色按钮时,这个设备所做的就是生成这个唯一的代码,它看起来不像是连接到远程服务器或任何类似的东西 我做了一些研究,最终在密码学领域得到了一个叫做的东西,但我还是不明白 我的问题 我的银行服务器如何知道该设备生成的代码是正确的 既然它只是每30秒生成五个随机数字,为什么服务器不验证我也决定使用的随机数字呢 这与哈希函数关系不大。加密哈希函数可能是实现的一部分,但不是必需的 实际上,它是按时间

最近,我的银行给我发送了一个微型设备,它可以生成一个在执行在线交易时必须使用的唯一代码。当我按下一个特定的白色按钮时,这个设备所做的就是生成这个唯一的代码,它看起来不像是连接到远程服务器或任何类似的东西

我做了一些研究,最终在密码学领域得到了一个叫做的东西,但我还是不明白

我的问题

  • 我的银行服务器如何知道该设备生成的代码是正确的
  • 既然它只是每30秒生成五个随机数字,为什么服务器不验证我也决定使用的随机数字呢

    • 这与哈希函数关系不大。加密哈希函数可能是实现的一部分,但不是必需的


      实际上,它是按时间间隔生成数字的,如果我按下按钮让它生成数字,它会生成数字,大约25秒后,我再按一次,当我刚按下它之后再按一次时,数字不会改变

      这是你的暗示。这是一种基于时间的伪随机或加密算法。根据时间,有一个代码。加密狗和服务器知道——或者说,可以计算——每个窗口的代码。这是一个-加密狗未连接到远程服务器。服务器可能会允许一个或两个最新的密钥,以防止在传输途中输入刚刚过期的密钥

      (尽管我最近的经验表明,在代码显示给我的5秒内,登录失败是必然的。换句话说,一些供应商对其计时窗口要求非常严格。一如既往,这是安全性和可用性之间的权衡。)

      缩略语CodesInChaos提到的是和,两种常用于双因素身份验证的算法

      维基百科是这样说的,它是加密狗的一个特殊品牌

      RSA SecurID身份验证机制由“令牌”(硬件(如USB加密狗)或软件(软令牌)组成,分配给计算机用户,并使用内置时钟和卡的工厂编码随机密钥(称为“种子”)以固定间隔(通常为60秒)生成身份验证码。每个令牌的种子都不同,在购买令牌时会加载到相应的RSA SecurID服务器(RSA Authentication Manager,以前是ACE/server)中

      我之所以选择这篇文章,是因为它有一个合理的物理描述;更高层次的文章侧重于理论而非物理实现

      这篇文章还确认,您需要对令牌保密,否则其他人可以通过知道密码来冒充您的登录,就像您一样简单

      令牌硬件设计为防篡改,以阻止反向工程。当相同算法的软件实现(“软件令牌”)出现在市场上时,安全社区已经开发了公共代码,允许用户在软件中模拟RSA SecurID,但前提是用户可以访问当前的RSA SecurID代码以及引入服务器的原始64位RSA SecurID种子文件

      但是,由于验证服务器必须预先知道令牌,因此双因素机密也容易受到源攻击。SecurID是一次引人注目的盗窃案的受害者,这起盗窃案的目标是他们自己的服务器,并最终导致对客户服务器的二次入侵


      最后,在多因素标签下的姐妹站点以及标签下的该站点上都有更多信息。

      我刚刚打开了一个旧的安全设备,并就它进行了头脑风暴

      我有一个与经过的时间有关的答案: 每个安全设备内部都有一个石英晶体,每当该晶体通电时,其生命周期就开始了(因为每个人都出生在这个世界上),并且没有一个设备是在同一个确切的时间启动的(因为在同一时刻不会产生相同的数量)因此,无论何时按下按钮,它都会通过计算经过的时间(可能是1/1000000精度的顺序,因为我的设备以15秒的间隔显示6位数字)生成一个唯一的数字,并将其转换为唯一的数字。但银行服务器如何知道我的唯一生成号码

      对银行服务器的答复: 可能银行正在计算您激活它后所用的时间;因为您必须在第一次使用时使用自己设备生成的唯一号码激活这些安全设备。因此,在一个精确的计时计算中,银行服务器知道输入的数字必须是xxx,并且随着时间的推移会发生变化


      我确信,即使您从未使用过安全设备,设备电池也会在电池寿命周期内为石英晶体供电。如果拆下电池,由于石英晶体未通电,无法生成数字,此时无法计算时间。因此,它再也不能生成相同的唯一数字。

      如果是基于时间的,则明显的选择是TOTP,如果它在每个按钮上生成,则明显的选择是HOTP。(它们本质上是一样的,前者使用时间,后者是计数器)实际上,它以基于时间的间隔生成数字,如果我按下按钮让它生成数字,它生成数字,大约25秒后,我再次按下,当我刚按下后立即再次按下时,数字不会改变。这个问题似乎与主题无关,因为它与编程无关。您可能还感兴趣的是,某些双因素身份验证方案通常会从服务器接收代码。这个想法是,如果你拥有你的手机,你很可能就是你自己。这可以使用任意数量的加密方案来确保