[闲聊] Steam Guard 手机验证器验证原理

楼主: k70709 (嘎肉)   2015-12-04 14:02:57
Steam所用代码验证器是使用非标准的TOTP
详细可以查查Google Authenticator的原理
但是Steam上因为相容旧有的验证系统(信箱)
简单解释一下 基本原理
当Steam Apps登录后,双方会自动取得共享金钥并储存下来
双方利用此共享金钥加上时间(可能用30-60秒间隔)来做计算
用户→金钥+时间→计算当前的验证码→Steam服务器端
服务器端的验证方式我不确定,不过基本上就下面二种
1.Steam 服务器端→收到验证码→验证码+时间→反推金钥→验证金钥是否正确
2.Steam 服务器端→收到验证码→(共享金钥+时间)算出验证码→比对验证码是否正确
我认为第二种可能性比较高
时差部份没问题,只要计算时用双方统一使用UTC+0的时区即可同步
手机app无网络也没关系,你已经有共享金钥+时间,只要注意时间是否有校正至标准时间
当你手机时间有误差太大时,所计算出来的验证码就会跟Steam端的验证码不符合
即使你手上的金钥是正确的,也会因为时间的关系产生出错误的验证码
另外提醒一下有用APP验证的版友们,备用代码≠救援代码
备用代码是你临时忘了带手机,要登入STEAM时用的一次性代码用完就会注销
而救援代码是你手机遗失时,要移除掉App验证时用的
救援代码取得方式
Steam Mobile的Steam Guard里取得并保存好
┌────────────┐
│≡ Steam Guard │
├────────────┤
│ S T E A M │
│□□███████□□ │
│ Steam Account │
├────────────┤
╞════════════╡
│设定 │
│Steam 行动验证器 │
├────────────┤
│My Recovery Code │
├────────────┤
│帮助 │
├────────────┤
│ │
│ │
│ │
│ │
│ │
│ │
└────────────┘
救援代码的格式为R+上五个数字
例:R12345
如果手机掉了,还能用救援代码去取消手机App验证
备用代码取得方式
请使用Steam用户端或是网页进入下面取得
https://store.steampowered.com/twofactor/manage
作者: oas (GTr)   2015-12-04 14:12:00
推~~~ 有趣~
作者: KeyFSN ( ~☼☽✩☁~ )   2015-12-04 14:25:00
hash function 通常是单向的
作者: howar31 (Howar31)   2015-12-04 15:27:00
之前刷手机忘记备份 二十几个验证器直接失效lol最后只好一家一家慢慢打电话请求解除lol
作者: abult (...)   2015-12-04 16:00:00
所以我后来用第三方的验证程式,可以直接备份不用怕重灌比较讨厌这种一定要绑自己的验证器
作者: howar31 (Howar31)   2015-12-04 16:26:00
刷机不管第几方都全洗掉呀 如果你是说自动备份到网络帐号那种 那干脆不要用验证器 跟没用一样lol
作者: abult (...)   2015-12-04 16:32:00
用1password可以仅记录在本地 也可以用dropbox同步 看需求没有一定的方式好拉 云端方便但是有可能被破 本地不小心洗掉就哭哭
作者: reader2714 (无毁的湖光)   2015-12-04 16:48:00
BZ很早就在用这东西了
作者: t77133562003 (我是一只山羊)   2015-12-04 19:25:00
MS 早就有自己的三方验证了 但是STEAM不能用
作者: Kenqr (function(){})()   2015-12-04 20:28:00
作者: march55237 (永远的御三家)   2015-12-04 20:44:00
救援其实在有备份码后就不用了 等进Steam把验证换回来即可

Links booklink

Contact Us: admin [ a t ] ucptt.com