简单易懂的网络求生指南:密码和账户篇

在互联网上生存,必须关注账户和密码安全。这篇文章是网络求生指南系列的第一篇,简单讲述了如何使用不同的密码、生成和存储密码、选择好记又安全的密码等,并使用两步验证等方式保护账户的安全。做到以上这些并不需要太多精力,但也能保证相当的安全性。如果您对于账户安全尤为重视,相信您在本文中也能找到一些继续提高安全性的方式。

一、尽可能不重复使用密码

每个网站都有一定的风险,不同的网站风险不同。要随时记住:在任何网站上的密码,都随时有可能泄露。即使密码泄露,合理的安全措施也可以尽量减少损失。

青色旋律建议每个网站使用不同密码。如此一来,那么即使密码被公布了,那么也只需修改那个网站的密码即可。在最坏的情况下,其他人也只能获取那一个网站的数据和权限。

当然,人的记忆力是有限的,所以不可能每个网站的密码都单独记忆。青色旋律建议记住三个以内的密码即可,其他密码则可以保存在其他媒介中,例如密码管理服务、存储设备或者移动设备中。这样需要一个主密码来管理所有子密码,如果主密码泄露仍然会导致严重后果,但合理规避了网站被黑所带来的风险,如下所述。

二、合理存储密码

对于需要存储的密码,首先青色旋律建议使用尽可能强的随机密码。假如不需要记忆这个密码,当然是越强越好,越随机越好啦。最好是 32 位以上的字母、数字、特殊符号等混合的密码并且强度能够通过某些检验。如果网站本身对密码的长度或者字符集有限制,那么就使用其提供的全部字符集、最大长度即可。一旦密码生成之后,就无须记录这些限制。

使用存储密码可以保证每个网站都使用不同的密码。但哪些密码应该存储,而哪些密码应该记忆呢?首先,如果使用密码管理服务,那么主密码是必须记忆的。同理,如果使用存储设备、移动设备或者专用的加密设备,建议使用加密存储并牢记其密钥。其余的密码,都不是必须记忆的。为了方便起见,可以记住一两个常用服务的密码。

此外,青色旋律强烈建议不要在任何网站上使用主密码,因为主密码丢失的后果非常严重,几乎相当于所有网站的密码都泄露。如果有条件的话,主密码在任何时候都不要通过网络传输,更不要在不可靠的设备上输入。如果使用设备存储密码,那么获取某网站的子密码这一操作可以在本地完成。使用移动设备则更为便捷,哪怕需要在陌生的环境登录,也可以取出手机轻松完成,避免了使用不可信设备解密带来的风险。

假如使用的是在线密码管理工具,则主密码不可避免地需要在网络上传输。但也可以使用多个在线密码工具来分担风险,而且每个在线管理工具本身的密码也可以使用设备存储来减轻记忆负担。

三、使用两步验证

两步验证对于账户安全是非常必要的。当密码被键盘记录器记录、经不安全的传输信道泄露、遭受中间人攻击或钓鱼、数据库泄露时,两步验证能提供最后的一层防范。两步验证使用两种信息,其中一种一般是密码,而另一种是用户本人拥有的东西或者知道的情报。

用户本人拥有的东西包括手机短信(实质上是拥有 SIM 卡这种智能卡片)、数字令牌、验证卡片、证书等。其中数字令牌不一定需要专门的设备,一个简单的应用也可以实现。其本质是生成一个和时间以及某个密钥相关的数字。服务器和客户端持有相同密钥、并且较准了时间的前提下,双方的生成算法就会生成相同的数字,而无须进行通信。因此,无须迷信银行等机构提供的所谓安全设备,一般来说那些并没有任何特殊之处。如果需要的话,自己也可以实现这类算法。

证书的原理与上述基本相同。证书使用公、私钥算法,其中使用公钥加密的信息只有私钥可以解密,而私钥签名的信息只要有公钥即可验证。因此,公钥完全可以公开,而私钥则必须严格保护。一些验证卡片或者智能芯片上也会存储私钥。

总而言之,大部分拥有的东西实质上是拥有一个密钥。因此,在移动设备上安装的数字令牌应用,如 Google Authenticator 风险会大一些,因为手机被攻破的情况下密钥可能会泄露。而其他应用如果提升了权限(利用漏洞或者 ROOT),也可以获取密钥。一个不联网的专用数字令牌设备相对而言安全一些,但也不是绝对的。

手机短信本身并全不是加密的。运营商可以随时查看短信内容,而且手机短信也有一定的可能被窃听。给 SIM 卡设置密码有助于防范手机失窃导致的安全问题,但对其他情况无能为力。

此外,安全问答也可以作为两步验证的一种。有一些问题很少会在网络上上传、即使身边的人也很难提起,例如童年的好友等,有助于增加安全性。但如果密码是存储的话,其实差别并不是很大。

四、选一个好记又安全的密码

首先,如果您可以记忆一个 32 位随机数字字母字符的密码,不会轻易遗忘,那么可以无视掉这一节。如果不能的话,推荐选择一个好记又安全的密码。

有很多人会认为越复杂难记的密码越安全,但事实不完全如此。密码本身的安全性可以有很多种评估的方式,但其中比较好的一个标准是穷举所需的次数。这个指标在可以无限重试的前提下非常有意义。此外,这还适用于网站数据库被盗、密码的哈希值泄露的情况以及加密存储设备被盗的情况。

然而,攻击者有时并不会从 aaaaaa 开始,逐个尝试到 zzzzzz, 而是直接尝试常见的密码或者密码构成方式。例如,他们会逐个尝试最受欢迎的1000个密码,或者是常见的 5000 个英文单词。对于每个英文单词,往往他们还会尝试常见的变形。以 piano 为例,常见变形有 Piano(大写)、P1anoPian0(数字替换)、 p!ano(特殊符号替换),以及以上的组合。假如每个字符都可能不替换或者常见替换,那么对于这个词语而言,有 2*3*2*3*3=108 种可能,不到 2**7. 估算一下,对于大部分英文单词(2**16)做常见变换,一共也只需 2**23 次尝试而已,这个数字相当危险。哪怕算上不同的常见构筑方式以及少量额外的字符,仍然可能被暴力破解。因此,青色旋律不建议使用此类构成密码方式。虽然这样的密码确实够长、有各类字符、很难记,却未必安全。

相比而言,假如只从2000个常见英文单词中随机选取4个单词,就有 2000**4 ,约 2**44 种可能。即使知道构成方式,也不太容易被暴力破解。并且,随机选取的4个单词也可以通过联想记忆法等牢记。这样选取的密码虽然足够安全,但缺点是没有数字和特殊字符,可能无法通过网站的安全性校验。青色旋律推荐在后面加上固定的一串字符即可,例如 Abc1@3 ,并不会造成记忆负担。即使每个人都用 Abc1@3 (也就是说,是公开的固定元素)也不会有任何问题,因为仍然需要对四个单词进行 2*44 次穷举。

注意,这种方式选取的单词必须是完全随机的,否则可能性会减少,更容易遭受字典和穷举攻击。例如,I love playing piano 可能就不是一个好的选择,因为这只有主语(大概率 I)、表示观点的动词(love/hate/like/dislike/..)和兴趣三种要素,最多也不会超过 2**20 种可能。而且,别认为密码学分析猜不到这种方式哦。许多人会花很多心思去研究泄露的密码中的常见模式,然后把几种常见模式都枚举一下就好啦。真正安全的密码构成方式未必罕见,但具体选取上有很多可能性,即使别人知道构成方式,也会因为可能性太多而无法暴力破解。

因此,假如碰巧随机出的四个单词能构成一句常见的句子或者有显而易见的关联,最好重新随机一次。虽然使用的方式是随机的,但用另外一种方式也能简单枚举出来当然也不行。完全随机字符的存储密码同理,假如随机出的是 00000...000 那和没随机没任何区别啦。

以上内容灵感来源于 xkcd 的漫画,地址是 https://xkcd.com/936/ 严格而言,此类强度分析应该使用信息论的专业术语(如熵),但此处为了简明易懂,使用了通俗语言。

总之,以这种方式生成的密码可以满足好记又安全的特性,适用于主密码等必须安全但又需要记忆的情况。假如是上述的存储密码,还是使用随机密码比较好,因为 32 位的随机字符密码大约有 2**160 种可能,远远超过了规律构筑的情况。在网站上使用时,基本上可以免疫被暴力穷举或者数据库泄露的情况。注意随机密码并不是说随便想的或者随手敲的就可以……最好使用安全的随机数生成器生成在字符集内的随机字符串。如果不清楚,请上网找一个离线且安全的随机密码生成器,或者使用密码管理器自带的随机生成功能。

当然,如果某些网站存储的是明文密码,或者用的加密算法比较弱,那么神都拯救不了他们了……当然也有可能运气不好,随机密码和一个常见密码哈希值相同,不过概率太低,可以不考虑。

五、注意最薄弱的环节

访问账户不止有密码一种方式。首先,很多网站都支持社交账户登录,那么假如社交账户被盗,那么多强的密码也没用了。其次,正常的网站都支持找回密码功能,而找回密码一般是使用邮件和短信,那么假如常用邮箱被盗,那么大部分账户就都……

首先讨论用其他账户登录的情况。很多人认为这样无须密码,是最安全的,至少和主账户一样安全。这样的说法其实也没错,但是其实应该更全面的考虑。在这样的情况下,主要风险来源于主账户所在服务器的数据库泄露、主账户所在的服务器被控制和主账户密码泄露。主账户密码泄露的情况之前讨论过,相当于把鸡蛋放在一个篮子里,两个网站等于一个网站,风险没有隔离。如果很多网站都使用同一个主账户登录,后果更为严重。如果主账户所在的数据库泄露,也只是有密码哈希被破解的风险,参考以上的说明即可。此外,主账户的服务器如果被控制(俗称被黑),那么当然也就能获取了从账户的所有资料和权限。

邮箱找回密码的情况则更为简单,邮箱被盗则账户可能被重置密码。因此,邮箱的密码一定不能成为薄弱环节,甚至邮箱的密码必须更强来规避风险。使用多个邮箱也可以合理地降低风险,但假如都只是把邮件转发到某个邮箱的话,那也没有任何价值。使用客户端来收取多个邮箱的邮件倒是不失为一种不错的策略,不过客户端上就需要存储密码了,必须是可信的设备并且加上磁盘加密才足够安全。

如果可能的话,接收通知和找回密码的邮箱最好不要设置成同一个。当然,并不是所有网站都支持这样的配置。也有一种办法是注册多个邮箱,但使用过滤器,只转发不带有 password 或者 recovery 字样的邮件到常用邮箱,也算是一种不错的策略。假如常用邮箱被盗,切记第一时间登录所有其他邮箱取消转发,然后根据转发记录,再次重置掉那些被别人重置的账户密码(假如有的话)。

至于短信找回密码……其实根本不安全,但假如敌人不是政府、运营商或者持有一定通信监听技术的组织或者个人……还算勉强可以接受吧。

顺便一提,正常的找回密码都是发送一个链接,然后点击可以重置密码。如果有的网站找回密码是把密码原文发送到邮箱……那么说明那个网站存储了明文密码,安全性极低,千万不要在那个网站上存储任何重要数据。

总而言之,从安全性而言,统一登录的安全性和使用在线密码管理工具类似、风险也类似。如果使用完全本地的密码存储,不建议使用统一登录。如果使用在线密码管理工具,且社交账户的密码足够强的话,其实统一登录对安全性影响不大。找回密码的邮箱也可以像在线密码管理工具那样,多注册几个,可以有效降低风险。

六、注意通信安全

首先,如果网站没有使用 HTTPS,最好还是别登录了吧。如果因为工作需要之类的,一定要用那个网站……首先一定一定不能使用和其他网站相同的密码,其次尽量在自己信任的网络环境登录。如果证书有错误或者过期,一定不能点忽略错误,更不能登录。输入密码前看清网址,有可能是钓鱼网站。特别注意钓鱼网站也可能有合法的 HTTPS 证书,不要看到绿色就以为安全。

大部分支持 HTTPS 的网站,在使用 HTTP 访问时会重定向到 HTTPS. 这个行为很方便,但有一些隐患。在已经登录的情况下,第一次访问 HTTP 时 cookie 会送出,从而导致监听者可以获取 cookie. 当然,中间人也可以劫持网页,返回点奇怪的东西而不是跳转。网站拥有者可以使用 HSTS 技术来强制 HTTPS 等,但作为用户并没有办法严格避免这种问题。安装 HTTPS Everywhere 浏览器扩展可以防止浏览器在某些网站发出 HTTP 请求。扩展会直接修改请求到对应的 HTTPS 网址,大大增强了安全性,但只适用于已经收录的网址。

不安全的渠道上,不要传输密码或者交换私密的信息。不安全的渠道上也没有办法确认对方的身份,请谨防诈骗。关于如何进行加密通话,敬请期待《简单易懂的网络求生指南:通信安全和隐私》篇。

啊,顺便……如果您的设备上有 Symantec 或者 CNNIC 证书的话,还是赶紧删了吧。毕竟这两个机构喜欢 不经过网站所有者申请就颁发证书 。也就是说,这些机构可以让任何人声称自己是任何其他网站。假如在陌生的网络环境下,DNS 如果被劫持,则可能会出现访问 https://www.google.com, 证书无错误,是绿色图标,但其实访问的是其他人的服务器的情况。关于如何在各个设备各个浏览器上删除这些证书,请参考网上的教程。此外,在登录重要的账户时,也可以查看证书链的详情,看看证书链上是否有这些机构。并不是说这些机构颁发的所有证书都不可靠,但假如和平时不同就很可疑。例如, Google 的证书并不是以上机构发布的,如果在证书链中看到了奇怪的机构,那应该就是假的。

七、总结

以上就是一些简单的安全建议和说明了。这其中大部分建议其实不难实施,但带来的安全性收益还是不错的。至少,可以试着去使用个密码管理软件或者服务来自动生成密码,并不麻烦。其他的建议还包括选用好记又安全的密码、启用两步验证等等。此外,也要多留意通信安全,尤其是网站的证书。做到这些事情并不会花太多时间,也不会太麻烦,反而可能可以方便很多。一般而言做到这些就已经足够安全生存啦,但在以上的基础上,如果您不嫌麻烦的话,也可以使用多个邮箱或者多个密码管理软件来分担风险,或者搭建自己的加密存储解决方案以提高安全性。之后的《简单易懂的网络求生指南:加密与存储》会详细介绍。

这次就说到这里啦,下次再见~


知识共享许可协议 本作品是青色旋律原创作品,采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。转载请注明来自 青色旋律,链接至 此页面 并使用相同授权协议。如需更宽松的授权协议,请联系青色旋律。