嘟嘟社区

关于谷歌二步验证


本帖最后由 ChenYFan 于 2021-11-3 14:15 编辑

我双手赞同。

首先,我自己经历过这件事情。在学校公共电脑上登陆谷歌账号,退出后没有清理,然后另一位同学也登陆了,直接把我的书签历史甚至密码同步到了他的账号!我当时吓得魂不守舍,后来才意识到谷歌有二步验证这个东西。

谷歌的验证是基于totp,简单点说就是根据一个固定密码和时间生成的临时密码。这不同于手机验证!国内的手机验证私钥是不给的,你必须要保持手机带在身边才能保证登陆。而谷歌给了密钥,这样你只要根据密钥和时间就可以计算(也可以口算),甚至不需要连接网络。所以,谷歌的二步验证可以不用手机!bitwarden

可能有人会抱怨,开二步有啥用。

安全是最主要的原因。但我推荐的一个重要原因是开了这玩意就不要手机邮箱验证了!这对我一个不能带手机的学生党非常有用(

这是一段js计算二步的模块

  1. import jsSHA from "jssha";
  2. const totp = (key) => {
  3.     function dec2hex(s) { return (s < 15.5 ? ‘0’ : ”) + Math.round(s).toString(16); }
  4.     function hex2dec(s) { return parseInt(s, 16); }
  5.     function base32tohex(base32) {
  6.         var base32chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
  7.         var bits = "";
  8.         var hex = "";
  9.         for (var i = 0; i < base32.length; i++) {
  10.             var val = base32chars.indexOf(base32.charAt(i).toUpperCase());
  11.             bits += leftpad(val.toString(2), 5, ‘0’);
  12.         }
  13.         for (var i = 0; i + 4 <= bits.length; i += 4) {
  14.             var chunk = bits.substr(i, 4);
  15.             hex = hex + parseInt(chunk, 2).toString(16);
  16.         }
  17.         return hex;
  18.     }
  19.     function leftpad(str, len, pad) {
  20.         if (len + 1 >= str.length) {
  21.             str = Array(len + 1 – str.length).join(pad) + str;
  22.         }
  23.         return str;
  24.     }
  25.     var key = base32tohex(key);
  26.     var epoch = Math.round(new Date().getTime() / 1000.0);
  27.     var time = leftpad(dec2hex(Math.floor(epoch / 30)), 16, ‘0’);
  28.     var shaObj = new jsSHA("SHA-1", "HEX");
  29.     shaObj.setHMACKey(key, "HEX");
  30.     shaObj.update(time);
  31.     var hmac = shaObj.getHMAC("HEX");
  32.     var offset = hex2dec(hmac.substring(hmac.length – 1));
  33.     var otp = (hex2dec(hmac.substr(offset * 2, 8)) & hex2dec(‘7fffffff’)) + ”;
  34.     otp = (otp).substr(otp.length – 6, 6);
  35.     return otp
  36. }
  37. export default totp

复制代码

我之前也写了一个基于cfworker 密码存储与二步的软件,安全性没有得到可靠的验证,请大佬破解,如果有必要可以开源

https://passlesstest.baipiao1.workers.dev/login

如果想看源代码,请将回复github用户名,我将特邀

hcyme 发表于 2021-11-3 14:09
就怕国内收不到,其他影响不大

我说的很明白了,和手机无关,你只要拿到密钥,手算都行

是的,赶紧一起用1pssword管理你的全部密码吧

https://hostloc.com/thread-909999-1-1.html

就怕国内收不到,其他影响不大

hcyme 发表于 2021-11-3 14:09
就怕国内收不到,其他影响不大

收不到? 这个不依赖网络只是计算而已吧

我是用验证器输临时密码验证的
个**验,谷歌开了两步验证,总给我发给设备验证,安卓没有GMS,直接收不到,ios玄学收到,有时很快,有时上午发的,下午才收到,
这狗日的谷歌,我明明设置了手机号码验,它非要给我发到手机设备上,还不能选手机号码

bigbigboss 发表于 2021-11-3 14:12
收不到? 这个不依赖网络只是计算而已吧

有一次可能ip比较脏,立马要我用手机验证,开了手机直接点击就过了,完全没有明白,不是短信也不是验证码。

cherbim 发表于 2021-11-3 14:18
个**验,谷歌开了两步验证,总给我发给设备验证,安卓没有GMS,直接收不到,ios玄学收到,有时很快,有时上 …

你可能选择手机验证,我指的是totp。开了totp就没必要用手机了

现在网站都应该提供开启两步验证的功能,虽然繁琐,但这是一个在多数时候能够保护隐私的方法

louiejordan 发表于 2021-11-3 14:23
现在网站都应该提供开启两步验证的功能,虽然繁琐,但这是一个在多数时候能够保护隐私的方法 …

是的,据我使用体会,国内外面向程序员和虚拟币的大网站都有二步