网上冲浪信息安全指北 - 账户安全
最近发现身边有些朋友好多网络平台账户都共用一个密码,然后就遭遇了撞库之类的攻击手段。后果就是一天之内多个收到多个平台的异地登录提示。作为一个程序员(没用的臭写代码的),就来分享一下自己关于账户安全的经验。
先在文首列一下我的主要观点(知道我每一条都在说什么就不必往下看了,恭喜你信息安全意识还不错):
首先要认识到平台不会保存你的密码,所以密码设置的越复杂安全性就越高
可以在所有平台采用同一种密码规则,但千万不要所有账户共用相同的密码
注意密码隔离,公网平台和私网平台通常安全性有显著差别(不理解“公网”和“私网”的可以用互联网和你的组织网络类比)
尽量不要透露密码或token
也希望网友们都能有一些基本的网络安全常识,保护好自己的虚拟财产,以及避免被冒用身份做一些不好的事。
提高密码复杂度
不要认为登录时需要输入密码就意味着平台已经掌握了你的密码。
我们日常能够用到的平台都有这样的密码安全措施:注册账户时不需要保存你输入的一串密码,而是把密码明文通过一系列运算得到的结果保存下来。登录验证时只需要把你输入的密码再运算一遍,和之前保存的结果对比即可知道密码是不是正确。这个运算过程可以看做一个函数,但从它的“函数值”是一定无法逆运算出密码明文的。
这里放一张 bcrypt 加密算法的图来对比一下密码明文,和平台所保存的密文(根据密码得出的运算结果)。上面是密码明文,下面是相应运算出的密码密文。

既然平台无法掌握你的密码,那自然是密码越复杂安全性就越高。请一定设置足够复杂的密码!虽然多数比较成熟的平台会有设备锁,但“使用复杂密码”是账户安全方面唯一一个掌握在用户手中的环节。
使用同一套密码规则
我们可能都知道,如果所有账户都使用同样的密码,就很容易遭遇“撞库”攻击:正如,我如果知道您在 A 平台使用密码 123456,那么当然可以合理推断您在 B,C,D……平台的密码都是 123456。如果这正好符合您的情况,岂不是早晚会中招?
所有账户密码相同固然很方便记忆,但是会有很大的安全隐患。不过只要再进一步:如果我在公共密码的基础上加一截平台之间不一样的前缀呢?只要前缀简短、方便记忆,再加上原来的公共密码作为新密码的一部分,就构成了既方便管理,安全性又相对较高的密码规则。
以我们熟知的公共社交平台为例,大多数对密码的要求是必须有数字、大小写字母(和特殊符号),长短要求不一。还可能会强制要求特殊符号也要达到一定数量。根据上面的思路,就可以把密码分成“前缀”、“后缀”和“主体”三部分。如图所示:

根据你的使用习惯,“前缀”可以是固定的一套字母缩写,能够标示所属平台即可;“主体”是您需要记忆的一串公共密码;如果“前缀”和“主体”部分不够满足密码的长度、特殊符号等要求,利用“后缀”部分补充即可。
注意公私密码隔离
除去公共平台账户的安全性以外,私域账户的安全也需要格外关注。因为私网在账户安全性上相比公共平台通常有显著差别。这里的“私网平台”可以指很多,包括但不限于您的校园邮箱、组织账户、较为小众的论坛等……您一定听说或见过通过钓鱼邮件之类被窃取账户的事例。
可以根据平台受众规模、软件用途、账户失窃造成的现实影响等标准对常用软件和平台分类,有助于判断相应账户应该对应到您的哪一套密码规则。(设置公私两套密码规则可以是兼顾了安全性和便捷性的选择)
市面上多数软件/平台都可以这样归类,比如:(插一句,有没有注意到大多数 APP 都有网贷功能?)
实时通讯软件
网购平台
公开交友/问答/内容平台
网银 APP
校园网、公司账户、对公账号……
(其他不知名不正规低安全性的平台,dddd……)
此外也要对“熟人作案”有一些提防,对一些能影响到现实利益的账户(比如你的研究生招生信息网、推免系统账户!),是不是要采用一套完全不同的密码规则?与别人共用的账户,是不是要注意密码不要透露额外的隐私信息(从你代练游戏账户的密码能不能推算出你其他平台的密码)?
不要透露密码或 Token
先科普一下,token 可以被看做一个有时效性的密码。也就是说 token 除了是在一段时间内有效之外,有着和密码一样的地位。除非你了解这样做的后果,否则千万不要对任何第三方软件/平台透露你的账户密码或者 token。
如果看到这里你还不知道 token 是什么,那就不要随便照着第三方软件/平台的指引,把自己的密码/token发布出去!此类行为包括但不限于网易云、QQ音乐、B站等平台代签到,各种平台刷级,游戏代练……
最后扯一句,其实经常忘记密码改密码也没什么,自己都不知道的就是最高机密了(bushi)