过去的一周,我大部分的时间都花在了**【提升账户安全性】**上面。
也许有很多人和我一样,所有的网站都用同样的密码,所有的安全问题都用同样的答案,只因为【好记】。
虽然听过某某网站数据库泄露的事件,但是总觉得这种事情离自己太遥远,【真的有人会盗取我这种无名小卒的密码】?
然而在新公司工作了四个月,我发现外籍同事们对【个人隐私】的重视程度比我高出好多好多,他们不会轻易去扫二维码,不会在社交网站暴露自己的隐私信息(比如我之前发布的关于看病的文章,有很多发票的截图,他们觉得这种信息挂在网上超级不安全)。
而究其根本原因,在于他们非常担心**【Identity Theft(身份盗窃)】**,也就是如果有人知道我的基本信息和一些隐私信息,可以假装成为我,打电话给客服去修改我的账户密码, 或者盗取我的账户资金。
我一开始听到他们对我的善意提醒,也只是一笑而过(固执地认为根本不会有人花时间去盗取我的信息);但是几次三番下来,我也开始**【慎重考虑】**自己的账户安全性问题了。
尤其是当我把自己常用的邮箱地址输入到 https://haveibeenpwned.com/ 这个网站之后,惊人地发现,我的这个邮箱以及我的常用密码,早就被泄漏了……
同时,这个网站还会告诉你,你的信息是被哪个网站泄露的,有哪些信息被盗取了。
比如我可以看到,我的邮箱地址,姓名,密码,用户名,都被这个叫做“Chegg”的网站泄露出去了= =
而我非常清楚,我的常用密码就那么几个,如果这个网站的密码泄露了,也就是说,别人可以用同样的用户名和密码去尝试登陆不同的网站,去盗取我更多的信息(包括住址,电话,甚至银行卡……)。
首先,我们要知道,任何一个要求你注册的网站,都会有自己的数据库,用来保存用户的注册信息。
也就是说,你每次登陆这个网站的时候,网站会根据你输入的用户名和密码,去对比在数据库中储存的用户名密码,假如匹配成功,你就成功登陆了。
这个看似简单的过程,其实是有很多漏洞的。
假如网站开发人员没有把账户安全性放在一个很高的级别,甚至在不加密的情况下,直接把你的邮箱和密码存在他们的数据库里,那么该网站的工作人员,只要能够登陆进这个内部的数据库,就能够看到你所有的信息。
而如果有一个心术不正的工作人员,在离职之前拷贝了一份包含用户名密码的表格,拿到黑市贩卖的话,你的信息就这样赤裸裸的被暴露了。
作为用户,我们没法确认每个网站的数据库安全级别,也没法知道网站工作人员是否有职业操守。
我们能做的,就是不要用同一个密码,在不同的网站注册账号。
因为只要有一个网站的数据被泄露了,你所注册过的所有网站,都有被盗号的风险。
关于密码管理,市面上已经有不少公司在做这块业务,比如 LastPass,1Password,但是……所有在线密码管理器的问题在于,你的主密码(Master Password),还是需要存在服务提供商的数据库里面的。
比如你的 LastPass 账户密码,是存在LastPass 的数据库里面的,假如他们公司的某员工泄露了用户信息,那。。就比较悲剧了(虽然说几率很小,但也不是完全没有可能)。
假如我们可以把所有的密码存在自己的数据库里面,安全性是不是大大提高了呢?
经过朋友推荐,我还真的找到了一个理想的密码管理器,在这里就跟大家分享一下我目前是如何进行密码管理的。
首先,我选择的是一个叫做 KeePass 的开源项目,https://sourceforge.net/projects/keepass/, 可能普通人不太在乎一个项目是开源还是闭源,但是在程序员的世界里,如果一个项目是开源的,也就是说所有人都可以看到这个程序的运作原理是怎样的,对项目的代码质量要求更高,也就意味着更加安全。
其次,因为是开源项目,我们可以保证 KeePass 没有偷偷地把你的密码上传到别人的数据库里面搞个备份,所有的密码都是保存在一个单独的文件里面的,你对这个【私人密码数据库】有着 100%的控制权。
最后,KeePass 支持跨平台,你可以在 https://keepass.info/download.html 这个页面里面找到适合不同操作系统的软件。
我经过了一番挑选和尝试之后,在 Windows 平台下选择的是 KeePass(免费),在 MacOS 和 iPhone 里面使用的是 StrongBox(分免费版和付费版,付费版可以终身买断,包括指纹+面部识别功能)。
下载好了相关的软件之后,我们就可以开始创建私人密码管理数据库啦!
以下步骤以 MacOS 下的 Strongbox 为例。
Cmd+N,创建一个新的数据库文件。
选择一个数据库格式(我选的是 KeePass 2)。
给这个文件设置一个密码(Master Credential)。
注意!!!!!KeePass 的核心机制是,如果你的 Master 密码丢了,没有任何备用方案可以帮你打开这个数据库,请务必把你的 Master 密码记在一个安全的地方!!!!一切因为遗失 Master 密码而造成的损失 Luna 不负责哦~
建议:不要用自己的常用密码,用一个长句子而不是一些个人信息的组合来创建这个密码。
比如你喜欢看《经济学原理》这本书,你可以把密码设为 JingJiXuEyuanlizhenbang(经济学原理真棒)。
当然还有一些很重要的密码创建规则,比如越长的密码越难破解,采用大小写字母+数字+特殊符号的组合,你都可以用在这个 Master 密码上,确定了密码之后,请一定一定要把这个密码记下来!!!一旦遗失这个密码,你再也没有可能打开这个数据库了!
👇 下面这篇文章是关于如何创建一个自己能记住但是黑客很难破解的密码的,有兴趣的可以看下。
https://theintercept.com/2015/03/26/passphrases-can-memorize-attackers-cant-guess/
给这个文件增加一个 Key File(随便什么文件都行,但是千万不能丢了……)。
同时,你还可以通过增加 Key File 来提升安全性,也就是你不光要记得自己的 master 密码,还必须持有这个 Key File,两者同时满足,才能打开这个数据库。
比如这里我随便找了张电脑里面的图片作为 Key File,确定了 Key File 之后务必要保证这个文件不会丢!!
如果你同时选择了密码+Key File 的组合,两者是缺一不可的!也就是说,如果你只记得 Master 密码,没用!如果你只有 Key File,没用!必须两个都有才行!!
给这个数据库取个名字,保存在你的电脑里。
打开刚才保存的那个数据库文件。
打开这个 sample entry 之后,你可以看到,每一个密码都是通过这样的形式保存在你的数据库里面的,你可以通过添加文件夹进行分组,也可以给每个 key 取名字,最重要的部分是 username 和 password。
KeePass 提供了自动生成密码的服务,这样你就可以把每个账号的密码设置的不一样。
就算某网站的数据库泄露了,也只会影响你在那个网站的信息。
因为你的密码都是自动生成的,买到你数据的人,没有办法用同样的密码去登录你在别的网站的账户,也就保证了你账户的安全性。
通过采用下面这种随机生成的**【无意义的强密码】**,我可以大大提高自己的账户安全性。
你可以通过调整 settings 来选择生成不同长度和不同组合的密码(有些网站会限制密码长度,比如最多 16 位……但这个真的很扯,因为密码长度决定了密码破解时间的长短,破解一个最最复杂的 16 位密码耗时也比一个没那么复杂的 17 位密码要短)。
开始创建你的第一个密码 entry 吧~编辑之后千万别忘了保存哦!
登录网站的时候,只需要双击复制这个 entry 的密码,粘贴到登录框中即可。
对于我来说,因为平时常用的设备比较多,所以这个私人密码数据库需要在不同的设备上都能够打开,并且打开的时候是最新的数据库文件(也就是最近一次保存的那个版本)。
我现在的做法是,把数据库文件(test.kdbx)保存在网盘里面,只要设备能够联网,就能同步到最新的版本。
因为 KeePass 的机制是,只要没有 Master 密码,拿到数据库文件也没有用,所以就算存在网盘也不会有太大的风险。
另外,我同时设置了 Master 密码和 Key File,Key File 和数据库分别存在不同的地方,这样也进一步增强了安全性。
在认清【自己的常用密码早就不安全】这个事实之后,我选择了 KeePass 作为我的密码管理器。
接下来要做的,就是更新自己已有账户的密码了(这个工作量还是蛮大的……)。
因为我大部分的密码都存在 Chrome 浏览器里面,而且我意外地发现,Google 提供账户密码的安全性分析服务,所以我可以直接找到自己曾经登录过的网站,进行密码修改。
如果有读者和我一样使用 Chrome 保存密码的话,可以参考下面的步骤:
看到了密码报告之后,就可以到每个网站去 update 密码以及其他的信息了。
你可以选择只用 KeePass,清空所有的 Chrome password,我目前没有这么做(还是有点懒得输密码)。
不过我的 Google 账号添加了各种安全措施,其他的重要账户也都加了 Two-factor Authentication.
我把自己曾经使用/正在使用的网站的安全性分为三个级别:
根据不同的安全级别,我会进行不同的操作,以下是针对**【警戒级】**账户的操作步骤:
如果你和我一样,习惯于用一个密码在不同的网站进行注册的话,看完这篇文章,建议你可以做下面几件事:
这个礼拜,改了将近两百个网站的密码之后,我发现有些之前注册过的网站已经倒闭了(数据库有没有卖掉暂时不知道)。
我意识到,在这个网络时代,我们的私密信息是否会被泄露,其实都掌握在数据库管理员和网站所有者的一念之间。
所以,一方面 IT 从业人员需要把用户的隐私放在心上,遵守职业操守;另一方面,用户也需要提高防范意识,在给出私密的个人信息之前,多个心眼,尽量降低未来可能发生的损失。