steam令牌验证码实现原理

用过steam的用户对这个问题应该比较熟悉,steam令牌相当于二次验证,当你登录陌生设备或进行交易时,需要输入令牌里的验证码进行二次验证。

我比较好奇的地方就是即使app不联网,手机令牌上的验证码也是与服务器同步的,也就是说用户断开手机的网络,输入令牌上的验证码依然可以达到二次验证的效果。

我没有接触过这方面的知识,想了解一下,望大神们可以提供一些思路。

图片描述

阅读 17.9k
2 个回答

这种令牌通常是基于TOTP实现的, 大概是这样:截断HMAC(密钥, (当前时间戳 - 初始时间戳) / 时间步))

只有在建令牌的时候,服务器和客户端协商好密钥、初始时间戳就可以了,后续客户端只需改变当前时间戳就能根据时间生成令牌。时间步设成60秒,就可以每60秒生成一个令牌。

当然,Steam的令牌还有英文字母,所以肯定不是标准的TOTP实现,原理应该差不多。

应该是根据时间计算的一个序列
令牌的使用大概需要和服务器时间相差不要太多才可以,Q Q 安全手机令牌是这样的。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题