怎么样别把别人的电脑黑了(如何防止账号被黑)
两家著名的美国互联网公司----Twillo和Cloudflare----被攻击了,前者还被攻破了。这两家都不是普通公司,技术很强,都采用了"双因素认证",但还是被有效攻击了。它们事后披露了一些细节,我觉得值得谈一下,聊聊怎么保护账号安全。
首先,有一点应该是共识:密码是不安全的,一定要启用双因素认证。
大部分的互联网密码都已经泄漏了。地下的黑产出售很全的数据库,一查邮箱或手机号,密码就出来了。你不妨认定,自己的密码已经泄漏了。如果为每个网站设置不一样的密码,情况可能会好一点,但也无法保证某个账号就是安全的。
任何一个重要账号,都应该打开"双因素认证"(twofactorauthentication,简写2FA),即除了密码,再多一种认证。即使如此,也必须非常小心,因为"双因素认证"也可能被破解。
一种常见的"双因素认证"就是密码+短信。每次登录时,除了密码,还会发一个短信验证码。它的风险在于短信是不加密的,而且国内有过不少案例,罪犯拿着伪造的身份证去挂失,办了一个相同号码的SIM卡,顺利收到验证码。
另一种新兴的"双因素认证"是密码+人脸识别。它的风险在于,国内的很多方案采用身份证照片与人脸比对,这很不安全。已经有新闻报道,银行的人脸识别被破解,储户的存款被转走。
公认较安全的"双因素认证"是密码+TOTP时间码。你在手机安装一个专门App(比如GoogleAuthenticator或Authy),输入网站提供的密钥,就会每30秒生成一个6位时间码。
但是,上面说的的安全事件,恰恰就是TOTP时间码被攻破了。下面就来说说,这是怎么发生的。
事情的起因是,Twilio和Cloudflare的员工,在下班后或者休息日收到了一条手机短信。下面就是两家公司公布的短信截图。
大意是,公司日程有调整或者你的登录信息过期了,请点击链接,到后台查看。它给出了一个公司名称加"sso"或者"okta"这样的钓鱼域名,警惕性不高的员工就会点击。
读者可能会问,攻击者如何得知员工的手机号码。这在美国不是难事,LinkedIn网站上就往往可以查到。
员工点击链接以后,就会进入钓鱼网站(下图),跟真正的登录页一模一样。只要填入用户名和密码,它们就立刻泄漏,脚本自动把它们发送到服务器。
但是,这两家公司都开通了"双因素认证",光有密码还进不去后台,所以钓鱼网站会把你引导到TOTP时间码的页面。
这时,只要你输入了时间码,它就自动发送给攻击者。由于时间码的有效期只有30秒,这次攻击最绝的地方在于,攻击者是实时攻击,只要一拿到时间码,就立刻在真正的登录页输入,从而进入后台。
可以这样说,大部分公司的双因素认证,都会被这种方式攻破。但是,Cloudflare这一次没有被攻破,原因是他们的后台没有采用时间码,而是采用了物理密钥(下图)。只有把物理密钥插入计算机,才能登录后台。攻击者拿不到物理密钥,自然就无法攻破。
所以,这个事件的教训就是,目前最安全的认证方法应该是密码+物理密钥。事实上,从很早以前,银行就给客户发物理密钥,进行大额转账。如果你有条件,可以考虑使用,很多大网站都已经支持物理密码,比如GitHub(下图)。
问题在于,物理密钥的价格较高,便宜的也要一两百元人民币,普通用户不可能购买。好在WebAuthentication技术正在推广,它允许把手机当作物理密钥,或者网站可以调用本机的指纹识别(或人脸识别)进行认证。
对于大多数人来说,目前阶段如果没有物理密钥,保护账户安全的最佳实践无非就是这么几点:坚持使用双因素认证,不同网站使用不同密码,不在可疑网址输入密码。