现如今网络环境越来越复杂,黑客的攻击手段多样化,发生了越来越多的账号密码泄露事件,从而威胁到用户信息甚至财产安全。在如此复杂的安全形势下,我们需要考虑更多的是用户信息的安全问题,而用户的账户密码作为信息访问的身份入口是做好安全工作的第一步,那么如何保护用户账号密码的安全性呢?
首先要防止发生用户密码泄露。即使发生了泄露事件,如何防范使用它威胁到用户信息,也是我们需要考虑的问题。在这种场景下,即使再强壮的密码策略也无法避免安全问题的发生,因此双因素(2FA)或多因素认证(MFA)就应运而生。
其实双因素认证早在十几年前就已经开始应用,诸如短信验证码、邮件验证码、动态令牌、RSA电子动态令牌等都是双因素认证的例子。随着网络的发展,出现了诸如GoogleAuthenticator这样的在线双因素认证解决方案,不再依赖于短信、邮件、商用的动态令牌等,即可实现双因素认证。
双因素认证的方式有多种多样,这里简单介绍三种双因素认证方式:
第一种是短信验证,也是目前较为常用的,每一次认证时会生成短信验证码发送到指定手机上,输入的内容与发送的内容一致则完成认证;
第二种是认证APP,基于TOTP的加密算法,利用应用与认证APP共同持有的种子密钥,每隔30秒生成一个新的6位验证码,应用与APP之间的验证码一致则完成验证;
第三种是登录确认的方式,这种方式不需要输入验证码,而是通过登录确认点击的方式来完成双因素认证的过程,这种方式是通过公钥加密算法来确认你的身份,应用会生成一对公私钥,私钥存储在本地,公钥发送给服务端作为用户信息存储,当用户进行登录操作时,服务端会用公钥加密一段信息发送到你的设备上,只有拥有正确私钥的设备才能解密并完成二次认证。Twitter使用的就是这种方式。
今天我们要介绍的 Authy 则是基于第二种方式的双因素认证,是一种更强大更方便的解决方案,并且能够很好的兼容所有使用 Google Authenticator 的网站。
短信验证作为一种较为传统并且常用的双因素认证的方式被大多数人所采用,但是短信本身并不安全,短信消息很容被拦截。NIST 研究表明 SMS 是一种古老的协议,会存在很多潜在的安全问题,因此建议采用更安全的方式来替代短信双因素认证。今天要介绍的 Authy 不会像短信一样只有当你需要登录时才会发送验证码,它会不间断的每隔30秒生成新的验证码,意味着验证码的有效期仅为30秒,极大的保证了验证码被重复利用的风险。Authy允许将认证码备份到云端和你的其他设备上,通过你设置的密码对其进行加密。然后可以在新的设备上对备份的验证码进行恢复。即使手机丢失或者不在身边,可以使用电脑来生成验证码。
Authy这种类型的认证是基于时间一次性密码(TOTP)的加密算法。它工作的原理是,当用户在需要进行二次认证的应用上创建账户时,会同时生成一个种子密钥,该密钥通过扫描二维码的方式传递并加密存储在authy上,这样在应用和authy上均存有该种子密钥,authy利用基于TOTP的加密算法结合该种子密钥每隔30秒生成一个新的6位认证码。
那么如何使用Authy呢?首先需要下载它的APP,android用户可以从GooglePlay中下载,iPhone 和 iPad 用户从 AppleStore 中下载。这里以iPhone为例进行演示。下载完成之后打开应用,首先需要输入手机号码和邮箱地址,接着会想你的手机发送一个PIN码验证手机号码的真实性。
由于我的号码已经在PC端进行了注册和验证,因此这里选择Use existing device,在PC端的Authy应用对其进行验证即可。
登录Authy后,界面上可管理的账户还是空的,需要我们添加需要管理的账户,这里以管理Gmail账户为例,在手机端下载Gmail之后,首先需要启用Gmail的二次认证,点击设置—>账户—>管理您的Google账户—>登录和安全—>开启两步验证,按照步骤开启成功之后,即为以下界面:
开启两步验证之后,默认为短信验证码方式,使用Authy需要开启“身份验证器应用”,选择对应的手机操作系统类型,点击下一步则会出现一个二维码界面,使用Authy应用扫描该二维码会在Authy界面出现Gmail 的账号信息。
接着在下一步中输入Authy中的六位验证码并点击验证即可开启Authy双因素认证了。
以上是如何在Gmail中开启Authy双因素认证,目前支持Authy双因素认证的应用有:Facebook、Yahoo、Gmail、Amazon、Twitter、Apple、Dropbox、Evernote、Github、Instagram、Teamviewer等。
对于尚不支持Authy双因素认证的应用,Authy也提供了多种语言的接口供开发者使用(https://www.twilio.com/docs/authy),可以实现应用与Authy双因素认证很好的接入。Authy目前的双因素认证接口支持Node.js、Ruby、Java-Spring、Javaservlets、python、C#、php等。
双因素认证基于其一次性、不可猜测性、短生命周期性,加强了用户登录的安全性,即使黑客知道用户的登录名和密码,仍然无法完成登录操作,无法获取用户进一步信息,极大的保护用户信息的安全。大家可以根据自己的实际情况,选择合适的双因素认证方式。
有些企业由双因素认证转向了更加安全的三因素认证,即在你知道什么(你的密码)、你拥有什么(如手机)的基础上,加上了你是谁(面部识别、红膜扫描或者指纹探测等),随着科技的发展,这也是目前安全领域重要的发展方向。
*本文作者:yuegui_2004,转载请注明来自 FreeBuf.COM
来源:freebuf.com 2018-08-02 14:00:42 by: yuegui_2004
请登录后发表评论
注册