陈宏彬的博客

密码管理二三事

今天跟大家聊聊密码,先说几件关于密码的事:

  1. 前天下午手机突然罢工,作为“没手机会死”一族,在处理完手头上的事后,立马奔向 Apple Store 寻求帮助。在 Genius Bar 排队等待的时候,看到前面一对夫妻在找工作人员刷机,刷机的原因是“早上起来的时候发现指纹解锁没法用了,平常用指纹解锁习惯了,慢慢的也忘记了手机的密码,连续输入几次都错误后,手机就被锁住了 !”
  2. 一个多月前(2016年12月10日)京东被爆疑似其12个G数据遭泄露 , 这些数据包括用户名、密码、邮箱、QQ号、电话号码、身份证等信息。虽然京东官方最终给了个说法:12G的用户信息泄露是真的,但是已经修复,受此影响的绝大部分用户也都对自己的账户进行了安全升级。

经京东信息安全部门依据报道内容初步判断,该数据源于2013年Struts 2的安全漏洞问题,当时国内几乎所有互联网公司及大量银行、政府机构都受到了影响,导致大量数据泄露。京东在Struts 2的安全问题发生后,就迅速完成了系统修复。

  1. 2015年10月份, 网易邮箱过亿数据泄露 , 在这次事件中受影响比较严重的是 iPhone 用户,不法分子通过用户绑定网易邮箱的 Apple ID 将 iPhone 锁成砖,然后敲诈勒索,要你交钱解锁。

“你的 Apple ID已被锁定,恢复解锁请加QQ888888 或拨打13888888888。”

“手机已丢失,请登录www.xxxxx.com查看方案。”

“我这边收到一部手机,你看下是不是你的,加QQ”

“要回 Apple ID 解锁只要888元”

移动互联网发展至今,我们每个人的生活基本离不开手机!时间上,从早上睁开眼睛的那一秒到晚上闭上眼睛的那一刻手机基本都不离手。场景上,从出行、到购物、到娱乐、到工作等等,生活和工作的方方面面都已经互联网化。

随之而来的也有了一堆的账号和密码:手机开机密码、微信账号和密码、微信支付密码、淘宝账号和密码、支付宝支付密码、银行卡密码等等等。基本只要你想使用一个服务,就要注册一个账号,然后就伴随着一个密码。

如此之多的账号密码,如何才做好设置和管理呢?日常中一般有以下几种办法:

  1. 统一账号和密码,不管注册啥东西,账号统一为:xxx000xxx@qq.com 密码统一为:12345678 或者 19891109(生日)。像银行卡和支付密码需要6位数字的就统一为:891109(生日);
  2. 每注册一个账号就会有一个单独的密码,有时候账号也各不一样,同时凭借自己的记忆力去记录这些;
  3. 拿个本子,或者创建个 Excel 或者用印象笔记等其它类似工具,一个一个记录下来,要用的时候再翻出来查找。

对于第一种方法,让我们先来看看下面这张图

2016年最常见密码排行

这图是国外安全团队 Keeper 公布的 2016 年最常见密码排行榜(等同于最弱密码排行榜)里的前十个常见密码,相信有不少图省事、懒得记住复杂密码的用户中招!根据他们的调查,排位第一名的就是 123456 这个密码,竟然有高达 7% 的互联网用户使用!

那么这种使用密码的弊端是什么呢?先让我们来认识一个概念:拖库撞库

拖库是指黑客盗取了网站的数据库。

撞库是指黑客用拖库获得的用户名和密码在其它网站批量尝试登陆,进而盗取更有价值的东西。由于一些用户在多个网站用相同的用户名和密码,所以撞库是有一定成功率的。

似乎还是有点抽象!我们拿一开始的网易邮箱泄露事件来举个例子:

Apple ID 是使用 iPhone 或者 Mac 必备的东西,国内很多人用户都是用网易邮箱来开通和绑定 Apple ID ,我自己的 Apple ID 就是用网易邮箱的。黑客利用网易邮箱的漏洞获取了用户数据,这些数据包括用户的邮箱账号和邮箱密码,这个叫拖库。当黑客获得了这些账号和密码之后,利用人们习惯使用相同账号和密码去注册各种服务的习惯,使用程序脚本批量去各个网站尝试登入,在网易这个事件上,黑客有针对性的将这些账号作为 Apple ID 去登入,一旦登入就利用 iPhone 上查找 iPhone 功能锁住 iPhone,然后向用户敲诈勒索,这个叫撞库

当然,在撞库这个事情上,黑客也会利用刚才说的常见的密码去碰撞。

总结下:在注册各种服务时,使用简单的密码或在各个服务使用相同的账号密码,是件很危险的事情。

不过,现在稍微有点责任感的网站都不会允许你使用简单的密码,一般都要求密码超过8位数,然后需要有字母、数字和符号等组合。

对于第二种和第三种方法,其实只要密码不要太简单,那么被黑客利用拖库撞库方式给破解的几率就很小了。但是痛点在于如下几点:

  1. 时间久了却总是会遇到想不起账号或密码的情况;
  2. 用本子或者 Excel 记录的,经常会遇到本子不见了、Excel 文件找不到了等窘境,或者人在外面,本子或者 Excel 不在身边等等,还有一点就是一旦这些本子或者 Excel 被别人看到了,就容易产生密码泄露;
  3. 用印象笔记等类似笔记本工具记录的可能还好些,这里也得承认,这是我曾经常用的方式,同样的,因为是明文保存的,这些内容被人看到后就容易产生密码泄露。

再总结下:利用本子或 Excel 或其他笔记类 App 记录账号密码时,因为是明文保存所以容易产生人为的泄露。

讲了这么多,那么密码到底该如何管理呢?这里我将密码管理分为两个部分:密码设置和密码记录。

首先,说说密码设置。这里不免要问到一个问题:什么样的密码是好密码?

我个人认为一个好的密码需要符合以下这几点:

  1. 密码长度在8位或以上,越长越好;
  2. 使用英文、数字,且英文包含大小写,如果允许,请务必尽可能加上特殊符号 (如 !@#$%^ 等);
  3. 密码没有明显的规则和组成规律;
  4. 最好自己能轻易记住,但别人看起来是毫无意义的乱码。

看完上述几点后,是不是觉得特别的恐怖,你只是想注册个账号、设定个密码,然后安安静静的享受下服务而已,却要弄得如此的复杂和痛苦!

为了解决用户的这些痛苦,伟大的产品经理为我们提供了两种安全且简单便捷的方案:

  1. 手机号+动态验证码;
  2. 利用微信、QQ、微博等第三方应用提供的第三方登入机制(简单说就是用微信、QQ、微博注册登入其它服务或应用)。

目前,基本上我们身边能够接触的产品都已经采用了上述两种方式。

第一种方式的安全性在于验证码是动态的,每次都不一样,只有拿到你的手机才能够获得验证码,才能登入你的账号,在很大程度上账号是相当安全的,美团外卖、饿了么等都有支持该方式。

第二种方式有个相关技术专有名词:OpenID

OpenID是一个去中心化的网上身份认证系统。对于支持OpenID的网站,用户不需要记住像用户名和密码这样的传统验证标记。取而代之的是,他们只需要预先在一个作为OpenID身份提供者(identity provider, IdP)的网站上注册。OpenID是去中心化的,任何网站都可以使用OpenID来作为用户登录的一种方式,任何网站也都可以作为OpenID身份提供者。OpenID既解决了问题而又不需要依赖于中心性的网站来确认数字身份

微信、QQ 和微博即为 OpenID 身份提供者的网站,经过多年的技术积累和沉淀,这些公司(尤其是腾讯,看看你在一台陌生的手机上登入微信时,都要做哪些操作,你就知道他们在用户账户安全上花了多少心思了!)在用户安全技术上的积累是值得我们大家信赖的。同时,我们每个人基本都有微信、QQ和微博,采用这种方式登入相较于第一种,更为的安全和可靠。在这里推荐大家,在注册一些服务应用时,能用微信注册登入的就用微信注册登入!

除了上述这两种外方式,还有一种方式,就是利用市面上成熟、稳定、安全的密码管理软件,这些管理软件都会自动的帮你生成一个复杂、无规律、难以破解的密码,你只要将它复制填入到密码栏即可。

如下图所示的,是由著名的密码管理软件 1Password 生成的一串密码。从图中可以看到,我们还可设置密码的长度、几个数字以及几个符号等。在这里强烈推荐大家使用 1Password

1Password

对于 Mac 用户来说,系统默认提供了一个密码管理软件:钥匙串(keychain)。当你使用 Safari 注册时,会提示使用 Safari 建议的密码,如下图:

钥匙串

说完设置密码后,让我们说说:密码记录

密码记录的需求我想应该就是:安全和便捷。之前说的记在本子上、记在 Excel 里、记在印象笔记上等等,要么就是不够安全,要么就是不够便捷。在这里我想目前最好的解决方案就是利用市面上成熟的密码管理软件了。

其实,在说密码设置的时候,我们已经涉及到了记录密码这事儿,在上面所说的1Password 和 Mac 系统钥匙串(keychain) 均有记录账号和密码的功能,它们就是理想的安全和便捷的密码管理软件。

在这里再次强烈强烈推荐大家使用 1Password

简单介绍下 1Password:

  1. 1Password 是来自加拿大开发商 agilebits 的一款跨平台(Windows,Mac,Android,iPhone,iPad)密码管理应用,甚至是个人大部分信息管理应用,在业界知名已久。1Password 使用的是 AES(advanced encryption standard)256 位加密;
  2. 所有的个人信息都由且只由一个主密码(Master Password)看管,除了设置这个主密码的人,任何人都无法开启,包括应用程序开发商。所以保证这个密码的安全性够高,并且牢牢记住就够了;
  3. 1Password 保存的所有数据都在本地,它提供的 iCloud 、Dropbox 网络云同步数据也是加密后才同步。假如 iCloud 或者 Dropbox 有什么意外,这些数据都是如上所述加密的,只能被主密码(Master Password)开启。

简单说就是:在你的手机、电脑上安装一个 1Password 软件,设置一个 1Password 的主密码,然后将你所有注册的网站的账号和密码、银行卡的卡号和密码等等信息都可记录在上面,你只需要记住并保存好这个主密码即可。

每次要登录的时候,使用主密码登入 1Password 找到相应的账号和密码,然后复制粘贴到相应的位置即可登入。当然,利用系统的各种特性,实际上你只需要输入主密码,选择相应的账号,然后 1Password 就会自动的帮你填充账号和密码了。

看完这些,我想你的第一反应应该是:好复杂啊!!!但是,我想说的是,在数字信息化时代,为了让自己的信息安全点,必要的麻烦是值得的!