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

在学习本文章之前,建议先看下web前端中文站前面写的两篇文章《双因素认证(2FA)认证方案》和《双因素认证(2FA)方案TOTP 的算法》。TOTP 很容易写,各个语言都有实现。下面我用 JavaScript 实现2fa来演示一下真实代码。

更多精彩内容请看 web前端中文站
www.lisa33xiaoq.net 可按Ctrl + D 进行收藏

首先,安装这个模块。

 $ 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

【注:本文源自网络文章资源,由站长整理发布】

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到