背景
密码管理这个话题,可能只是一小部分关注安全、个人隐私的程序员才会关注的小众话题。为什么想聊起这个话题呢?我的一个同事最近在做了一个项目,对重点信息泄露事件进行监测,从每天的运营情况来看,每天都有数十条全球信息泄露的事件,信息泄露这种东西,看似离我们很远,实际上离我们很近。想想一阵后怕,还是信息安全的从业人员呢,个人的密码管理得好好整起啊!

我最早了解到密码管理这个话题,是大学时候看到了一个视频推荐了密码管理软件LastPass。简单来说,这款软件可以保存你所有的密码,然后在需要登陆的时候自动帮你填充密码。想象一下,当你打开爱奇艺,登陆的时候鼠标点击一下输入栏,还没开始输入账号,LastPass就帮你填充好了账号密码,直接点登陆即可,这种体验真的非常方便。
当然了,自动填充密码简化了我们的操作。但是,我认为密码管理软件最大的作用在于可以给每一个网站设置一个不同的密码,并且,可以生成一些强度比较高的密码。我们自己真能记住上百个16位英文大小写+数字+特殊字符吗?即使可以,显然也没有必要自己去记忆,为不同网站生成、保存不同的高强度密码,这是密码管理软件需要帮你做的。
我使用过的几款密码管理软件
市面上的密码管理软件非常多,也有相当多的介绍文章,常见的密码管理软件有开源的Bitwarden、广受好评的1Password、完全免费的KeePass、非常小众的LastPass、印度人开发的Enpass以及杀毒软件自带的Norton Password Manager,当然还有其他的,这里仅介绍我了解的几个。
1Password虽然我确实没用过这款软件,但一定要拿出来说,为啥?它是真的热度最高、广受好评的密码管理软件,界面优美、功能齐全。但为啥我不用?贵!!!个人订阅,3美元(差不多20块左右)一个月,一年两百块就出去了。也有各种拼车(这款软件提供家庭订阅服务),价格能搞到80块一年。但是吧,你都用密码管理软件了,反而又选择拼车这种非常不安全的方式,这不搞笑呢?相当于想治拉肚子,还给你吃巴豆,这像什么话。当然了,拼车靠不靠谱还是看人,不过,无意看到有人反应拼车账号被删,密码全部丢失的情况,想想还是算了。毕竟,贵不是它的差,是我的错。

LastPass我使用过一段时间,总体满意,但非常不爽的一点是,这款软件在Windows、Mac端都只提供了浏览器插件。这就很抽象了啊!比如我的QQ设置了一个比较复杂的密码,我自己也没记住,我现在想登陆,我只能先打开浏览器,输入复杂的主密码,查询相关的密码,最后再粘贴到QQ软件里,这么一通操作,搞得人压根就不想用这个软件了。当然了,纯粹的网站访问体验还是很好的,毕竟看网页,你还是得打开浏览器,对吧?
Norton Password Manager这是杀毒软件诺顿自带的一款密码管理软件,我个人有使用杀毒软件的习惯,虽然有像腾讯电脑管家这类免费的杀毒软件,但我还是更偏向于收费的杀毒软件,最终选择了诺顿。结果,诺顿自带了一个密码管理软件,非常类似于LastPass,都是以浏览器插件的形式存在的,使用下来体验与LastPass相似。
Enpass可能是最接近1Password的一款密码管理软件,有桌面端的软件,界面符合主流审美,能设置热键唤出(登陆QQ这种场景,热键唤出,输入PIN码,查密码,粘贴一气呵成)。也有浏览器插件和移动端的APP自动填充密码,体验下来还是挺好的。不过,Enpass最打动我的,是主打的“本地”特性。其他密码管理软件都会将你的密码同步到他们的云端,但Enpass只会将你的密码文件加密保存在本机,不会保存到其服务器。而不同设备同步密码也提供了一些曲线救国的方式,比如使用第三方的云存储服务(OneDrive、Dropbox、iCloud或者WebDAV),或者Wi-Fi局域网同步。至于Enpass的价格,订阅比1Password便宜一些,同时也支持买断。
Enpass简明指南
关于Enpass的介绍文章不太多,我在使用过程中也碰到了一些坑,所以把这些坑总结出来,以一个首次使用的视角,跟大家分享。Enpass的桌面端完全免费,但是移动端的APP,免费版本最多只支持保存25个密码。了解一款软件,第一步肯定不是傻乎乎交钱,一定是把桌面端下载下来试试看。初次打开桌面端的软件,Enpass会引导我们创建主密码,如果设置过云端同步,则可以通过云服务直接同步相关密码到本机。因为是首次使用,所以我们创建主密码。

通常,密码管理软件都会有一个主密码,主密码一被别人盗取了,咱所有密码就都泄露了,所以我们一般都会把主密码设置的非常复杂。虽然一些软件能设置PIN码,用于简化我们频繁输入主密码的操作,但Enpass有一个挺好的功能——密钥文件。即生成一个密钥文件,在解锁密码库时,需要使用我们的主密码加上密钥文件,双重验证,才能打开。这样就方便了呀,我们把密钥文件保存在本机的一个你自己才知道的路径下,在加上一个不那么麻烦的主密码,既安全又方便。创建密钥文件需要在我们设置主密码的时候进行相关设置,注意在下图这一步点击Advanced,会有密钥文件的相关设置。

主密码设置完成之后,就进入了主界面,主界面还是比较简洁的,左上角像云朵一样的图形表示云端同步的相关设置,下方首次使用提示我们登陆(反正桌面端免费,注册下没毛病),右上角分别时锁定密码库、生成一个密码、软件设置以及菜单按钮。

关于浏览器插件,我们点击右上角的菜单按钮,选择Install Browser Extensions
,之后,按照提示,即可安装浏览器插件。

安装成功后,可以在浏览器的工具栏上看到Enpass浏览器插件的图标。

关于设备间同步,Enpass支持如Onedrive等非常多的云服务,也支持WebDAV、WiFi局域网的同步方式。这里我选择使用坚果云进行同步,坚果云提供了WebDAV的接口,并且稳得超乎想象。坚果云的WebDAV需要我们通过网页登陆坚果云,在账户信息->安全选项
中,可以进行WebDAV权限的设置。

设置好坚果云的WebDAV权限后,返回Enpass的客户端,点击主界面左上角云朵一样的图标,在右侧选择Set up Sync
,选择WebDAV
,填写相关信息即可(PS:下图中的暗色主题,可以在Enpass的设置中进行选择)。

Ok,截至目前,基本的设置已经完成了,我们可以正常使用Enpass了,访问一个网站,第一次登陆Enpass会提示保存密码,第二次登陆的时候,Enpass会弹出自动填写的选项,单击即完成自动填写。

APP端,因为前面进行了同步的相关设置,这里可以直接选择从云端同步。但是同步需要桌面端设置的主密码和密钥文件,给手机传密钥文件比较麻烦,其实不用将密钥文件复制到手机上,可以扫描密钥文件二维码设置。首先在桌面端,设置->Vaults
中,选择相应的密码库:

之后,点击右上方的三个小点,就能看到密钥文件的二维码了(这玩意儿我真是一通找,最后翻到了官方英文的说明,我用你个软件还得自学英文呗)。

紧接着在APP上,直接进行同步的相关设置,根据提示,扫码扫码就能添加密钥文件。

聊到这里,先说说APP的第一个坑,APP上免费版只能保存25条密码,如果我们PC端记录了超过25条密码,APP端无论如何都无法同步的,甚至于新建一个密码都不行。请相信不是你手机的问题,不是网盘的问题,就是没交钱。其实到这里,Enpass设置过程中的坑基本上已经探完了,Enpass APP内进行一些设置,都很好找,开放一些权限,即可使用Enpass APP给其他APP自动填充。
关于购买,又是另一个坑。想起来其实可笑,一款软件能做到购买都是坑的吗?还真是,我也是犹豫了很久才决定400块买断这款软件。Enpass官方的购买渠道是FastSpring,这玩意儿在付完款之后是不会自动跳转的,并且邮件的通知有1-2个小时的延迟(我是买了Typora的授权,才知道这个事儿的,Typora的授权也是付款后延迟了好久),我在付完款后看没动静,愣了许久,我被骗了?

其实,付款后,可以给Enpass的售后发邮件,售后的邮箱:support@enpass.io,售后会给你相应的回复,拿起我蹩脚的英文,发邮件吧。

最后关于2FA(Two-factor authentication),这东西到底有啥用呢?不探求原理,说白了,国外的一些网站为了保护账户安全提供了2FA(国内大多都用手机验证码了),即在登陆网站的时候,除了输入密码,还需要二次认证。常见的2FA是基于时间,每隔一段时间会刷新一个密码的TOTP。常见支持2FA的软件有Microsoft Authenticator、Google Authenticator等等。Enpass也支持2FA,这里以github为例做一个简单的说明。在github的Settings->Account security
中,开启2FA功能,之后这一步选择默认,点击continue
。

在接下来这一步,出现了二维码,Enpass这里应该是不支持扫二维码的(反正我是不想找了),点击enter this text code
会出现一段字符。

将上述字符复制到Enpass的One-time code
字段中,保存后,就能在Enpass看到刷新的2FA密码了。

尾巴
其实,密码管理软件只是工具,选择任何一款都没问题,重要的是要有安全意识,为不同网站设置不同的密码,毕竟你咋知道谁家的网站又被人拖库了?