双因素认证(2FA)方案TOTP算法的实现

TOTP 很容易写,各个语言都有实现。下面我用 JavaScript 实现2fa来演示一下真实代码。

首先,安装这个模块。

$ npm install --save 2fa

然后,生成一个32位字符的密钥。

var tfa = require('2fa');

tfa.generateKey(32, function(err, key) {
  console.log(key);
});
// b5jjo0cz87d66mhwa9azplhxiao18zlx

现在就可以生成哈希了。

var tc = Math.floor(Date.now() / 1000 / 30);
var totp = tfa.generateCode(key, tc);
console.log(totp); // 683464

总结

双因素认证的优点在于,比单纯的密码登录安全得多。就算密码泄露,只要手机还在,账户就是安全的。各种密码破解方法,都对双因素认证无效。

缺点在于,登录多了一步,费时且麻烦,用户会感到不耐烦。而且,它也不意味着账户的绝对安全,入侵者依然可以通过盗取 cookie 或 token,劫持整个对话(session)。

双因素认证还有一个最大的问题,那就是帐户的恢复。

双因素认证(2FA)方案TOTP算法的实现

一旦忘记密码或者遗失手机,想要恢复登录,势必就要绕过双因素认证,这就形成了一个安全漏洞。除非准备两套双因素认证,一套用来登录,另一套用来恢复账户。

参考链接

  • Multi-factor authentication, by Wikipedia
  • Time-based One-time Password Algorithm, by Wikipedia
  • Enabling Two-Factor Authentication For Your Web Application, by Bozhidar Bozhanov
  • simontabor/2fa, by Simon Tabor

双因素认证(2FA)方案TOTP算法的实现

: » 双因素认证(2FA)方案TOTP算法的实现

原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/252567.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论