• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

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

JAVA web前端中文站 2年前 (2017-11-03) 905次浏览 已收录 0个评论

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

更多精彩内容请看 web 前端中文站
http://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

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


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:双因素认证(2FA)方案 TOTP 算法的实现
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址