阅读本文,您可以了解GoogleAuthenticator的实现原理,并可以使用node.js实现支持GoogleAuthenticator的两步验证。这两年发现身边很多应用和网站都支持两步验证,呼吁用户使用两步验证。并且发现,除了AppleID的两步验证,其他很多两步验证都可以看到谷歌验证器(GoogleAuthenticator)。这让我很感兴趣。谷歌验证器的原理是什么?我可以自己实现类似的身份验证器吗?什么是两步验证?两步验证是指用户输入账号密码验证成功后,需要额外输入一个一次性的随机密码(一般为4-6位),服务器以此来确认登录为用户本人。两步验证的种类短信验证短信验证也是大家最熟悉最常用的两步验证,但是我觉得短信验证有以下缺点:需要支付运营商的短信费、短信到达延迟、短信永远到不了以及网站不允许您立即重新发布。相信你也有过等短信快发疯的经历吧。动态密码玩过网易游戏的同学应该都知道网易总令,还有一些银行提供的动态密码。记得第一次看到这个东西的时候,觉得很神奇。这个东西可以在不连接互联网的情况下对用户进行身份验证。其实它的实现原理和GoogleAuthenticator类似,后面会详细讲到。密码卡片在我看来,密码卡片是最反人类的设计。我以前做工行网银的时候有一个,上面有几个字符排成矩阵的形式,系统会给你一些坐标,让你根据坐标找到对应的字符,输入进去系统。?%&¥#...(*#)我没用过。不可能,这辈子都不可能用到密码卡。.两步验证的重要性两步验证从用户体验的角度来说肯定是不友好的,因为用户在登录或操作启用了两步验证的网站时,需要额外输入一串随机密码才能确认是用户自己操作。对于大多数人来说,这个操作可能会觉得多余和麻烦。比关掉它麻烦多了。我建议对于比较重要的账号,如果APP提供两步验证,最好开启。安全第一。我可以在身边举个栗子吗?2016年左右,我女朋友的AppleID被盗了。盗号者解绑她的邮箱,改用盗号者的邮箱,导致女友的iPhone被锁。黑客还发邮件勒索500元解锁。我也加了黑客qq和他砍价,我拿到了200元。最后当然是找苹果客服解锁了,提供了各种照片,收据和电话确认,花了2天时间才解锁。总体来说没有什么损失,但是给我的生活带来了一些不便。看看知乎被盗号,刷信用卡支付宝,惨不忍睹。如果被盗者开启了两步验证,即使别人知道了你的AppleID账号密码,也无法登录你的账号。此外,可能有很多用户喜欢在多个网站上使用相同的密码,这很危险。如果一个网站上的用户帐户遭到入侵,其他平台上的帐户也可能受到影响。毕竟像“某平台账号系统被盗”这样的事情也是时有发生。在这种情况下,启用两步验证也可以保护其他平台的账户不被不法分子利用。HOTP和TOTPOTP两步验证使用的密码是一次性密码(One-TimePassword,简称OTP),也称为动态密码。它是一种强认证技术,使用密码技术在客户端和服务器之间共享密钥。它是增强当前静态密码认证的一种非常方便的技术手段,是一种重要的两步验证认证技术。维基百科解释说HOTP(HMAC-BasedOne-TimePasswordAlgorithm)HOTP是基于HMAC算法生成的一次性密码,也称为事件同步动态密码。是ITEFRFC4226发布的算法规范,伪代码如下:预先设置一个密钥K,用于生成一次性密码。客户端和服务端各有一个事件计数器C,计数器值提前同步。Truncate是一种算法,可将HMAC-SHA-1生成的20字节字符串转换为若干十进制数字。TOTP(Time-BasedOne-TimePasswordAlgorithm)TOTP是HOTP的改进版,它使用时间来代替HOTP的事件计数器C,也称为时间同步动态密码。详细规范见RFC6238,伪代码:
