在我们的生活中,有各种网站、应用都需要注册和登录。这些网络访问通常需要 「账户」 + 「密码」 的认证方式,于是几乎我们每个人手上都有几十个甚至上百个账号。
一般而言,我们设定和记住密码的方式,就是生日、纪念日、姓名、身份证等等核心内容,然后再加上特定规律。甚至为了便于记忆,很多人习惯只用一个常用的密码。这是非常危险的行为。因为只要有一个网站出现安全事故,密码被泄露,那么几乎所有注册过的网站和服务都会沦陷。但如果使用多个密码,又很可能因为密码过多,在登录的时候出现账号和密码对应不上的情况,极为不便。
那我们应该怎么设置密码,才能做到相对安全,并且方便记忆和使用呢?
在考虑如何设置密码前,我们先来讨论一个问题:我们的密码是如何被泄露的?
一个账号密码的背后,往往涉及到大量的个人信息。如果一旦被泄露或者被破解,黑客会比你爸妈更加了解你自己。
通常来说,密码泄露的位置主要有三个地方:本地、网络传输、远程数据库。
举个例子:你在浏览器上某网站上输入了账号和密码,这个账号在你登录之前,只存在于你 本地电脑 中。一旦你点击了登录按钮,浏览器就会将你的登录名和密码打包成为一个登录请求,发送给远程服务器。这个阶段,你的密码会在 网络传输 过程中经历一段非常短暂的旅程。如果你是第一次注册,那么你的密码还将会以某种形式存储在该网站的 远程数据库 中。
下面来说一下这些常见的密码泄露情况:
本地电脑上的密码被泄露通常是因为电脑中病毒,被植入了恶意木马,键盘收到恶意程序监听,黑客会在恶意程序后台,将你的个人信息发送到黑客自己的服务器中。
过去破解密码常用的一种手法是使用键盘记录器等工具,记录下键盘的每一次操作,然后在后台发给黑客。在曾经网吧最红火的年代,经常有人在网吧电脑里安装这类工具,用于盗取网吧其他玩家的游戏账号密码,偷走游戏里的装备,或者虚拟 Q 币。
网络传输中的密码被泄露可能是因为网站没有有效的对密码进行加密,导致密码明文传输,或者非加密传输,黑客通过一些工具,拦截登录请求包,就能直接看到你的密码。
在 WiFi 普及之后,黑客可以采用 WiFi 中间人攻击的方式,伪造一个与合法 WiFi 接入点同名的无线信号,骗用户接入后,在用户登录的时候,偷走用户的账号密码、邮箱、手机号等信息。
远程数据库中的密码被泄露,往往是因为我们所使用的网络服务提供商不可靠,对密码明文保存,未经二次加密,或者加密措施有漏洞,如果服务提供商的数据库泄露(常称为 「拖库」),那么我们的密码也会变得不再安全。
之前提到两种密码破解方式一次只能获取一个账号密码的方式,对于黑客而言效率还是太低了。所以技术高明的黑客会选择直接入侵网站的服务器,直接窃取存储用户账号信息的数据库,一次性获取数百万甚至上千万人的信息。比如 2011 年 12 月,CSDN 网站遭遇拖库,600 万用户的账号密码被明文泄露。
更严重的是,拖库还会影响你在互联网上的其他账户。这是因为黑客在拖库之后,还会进行 「洗库」,将你的个人信息进行变现,比如盗取游戏装备和虚拟 Q 币。或者将你的身份信息变卖给垃圾广告公司,之后你将会不断地收到各种推销骚扰电话。
最后,黑客还会利用你的账号密码信息进行 「撞库」,也就是拿着你的账号密码,去尝试登陆其他网站,如果你多个平台使用的都是一个账号密码的组合。那么,所造成的信息泄露和个人价值损失将不可估量。比如当年的网易邮箱数据泄露,Dropbox 密码外泄,都会引起连锁的账号安全问题。
虽然因为平台原因导致的信息安全问题,我们好像看似无能为力,但是一旦了解到密码是如何被破解和泄露的,将有助于我们更好的设定自己的密码,从而使个人的账号密码更加安全。
基于这三个地方的密码泄露问题,我有一些关于密码安全的建议如下:
总体来说,个人的密码安全需要遵循以下几个简单要求:
对于不同的平台,我们应该使用不同的密码,以免一个平台账号泄密,引起连锁的账号安全问题。
一个较好的做法是:对不同的平台按照重要程度进行分类,不同重要程度的平台使用不同层级的密码。
对于支付宝、微信、网银等涉及财产安全、可以信任的、安全的平台,设定为 「安全密码」 级别;对于常用的网站、论坛、博客、云盘,设定为 「重要密码」 级别;对于偶尔登录的论坛、网站,或者一次性注册登陆的账号,可以设置为 「普通密码」 级别。如果自己对账号还有其他需求,还可以设置更多级别的密码,比如临时给朋友分享的密码可以设置为 「临时密码」 级别。
通过对不同重要程度的平台的账号密码进行分级,这样至少我们在泄露一个密码的时候,不会导致其他级别的密码也跟着泄露,一定程度上保证了账号安全。
此外,建议同一级别的密码,也不要完全相同。推荐使用「基础密码」+「网站名称」+「一套密码变化规则」组合的方式,对同一级别不同平台的密码进行不同的设定。这样,即便是一个平台的密码泄露了,也不会导致这一级别其他账号密码泄露。当然,一旦发生密码泄露,最好的做法是立即修改本级别下的所有账号密码。
上边我们讲了密码级别的分类,下边我们来讲解一下某一级别密码的具体制定方法。
首先,密码 「被破解难易」 跟密码的 「长度和难易程度」 正相关。所以,强烈建议大家使用高强度的密码。比如 Dr4%*DyaZoHPz^
就是一个高强度的好密码,只是记下来不大容易背。
网络上的大神对制定密码的策略和记忆密码的方法有各种独到有效的见解。比如下面几个:
Fhl3yjsd10000j
—— 烽火连三月,家书抵万金cptbtptpbcptdtptp
—— 吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮但是诗词和顺口溜用的知道的人多了,也变得不那么安全了。那有什么方式,才能使密码变得既安全,又方便记忆和使用呢?
我推荐使用 「基础密码」 + 「网站名称」 + 「一套密码变化规则」 组合的方式。
首先,我们要选择一个基础密码。这个基础密码可以是一句诗句,也可以是一句话,保证尽可能无规则。比如:「大脸猫爱吃鱼」,取其拼音首字母组成密码:dlmacy
。
接下来,我们要对基础密码进行一些变化。比如:「改变字母大小写」、增加「特殊数字」、「特殊字符」等等。
DLMacy
DLMacy618
DLM#acy618
经过这些变化之后,DLM#acy618
就成为了我们的基础密码,这也是一个强密码。现在,这个密码的被破解难度已经很高了,但是还不够好,我们还可以在这个基础上,增加不同网站的名称,为密码增加一些变化。
不同网站应该增加不同的变化。比如:
DLM#acy*Zfb618
:中间加了 *Zfb
,代表支付宝。DLM#acy*Zh618
:中间加了 *Zh
,代表知乎。上边对不同网站简单增加了一些小变化,但是根据一个网站密码还是可以间接猜测到其他平台密码(可能性较小)。如果为了更加保险,我们可以对「不同网站变化」的部分,再增加一层加密。比如对字母进行移位运算。假设我们自定义的规律为:(字母 - 3) % 26
,即每个字母向前移动三位。比如 Z
向前移动三位是 W
,h
向前移动三位是 e
。那么 Zh
就变成了We
,Zfb
就变成了 Wcy
。这样一来,我们的密码就变成了这样:
DLM#acy*Wcy618
:支付宝密码DLM#acy*We618
:知乎密码到此为止,我们的密码制定就结束了。单就密码而言, DLM#acy*Wcy618
怎么看也不像是一个好记的密码。我们在输入密码的时候,可以这样提示自己:「大脸猫爱吃鱼」、「特殊字符」、「字母移位」、「特殊数字」。多练几次,自然而然就记住了这套密码体系。
这套密码用的是强密码,不同平台之间的密码既有规律,又有唯一性,安全性已经得到了保障。在输入密码的时候,也不需要再随性地思考自己用的是什么密码了。
这样我们就得到了一套既安全,又方便记忆的密码体系。但是似乎使用起来还不是那么方便。
因为每次使用的时候,我们要先考虑平台的密码等级,然后再想想自己的密码制定规则,最后如果密码过于复杂的话,输入还容易出错。那么有什么方法,能使我们的密码使用起来更加方便呢?
答案是:使用 「密码管理工具」。
说起密码管理工具,最原始的管理工具是:「密码本」。就是将个人的账号密码记录在某一页纸上,好好保存起来,等到忘记密码的时候拿出来看看。这种方式看起来十分原始,但至少从物理上保证了密码的安全性。只要没有人知道你的密码本放在哪里,那么它就是安全的。当然这种方法的缺点也很明显,一个是记录起来比较麻烦,二是使用起来也不太方便。比如说我在公司需要登录一个账号密码,结果记录账号密码的本子落在了家里这种情况。
「密码本」的升级密码管理工具是 「电子文档」。其实就是将以前存在纸上的账号密码保存在了 Excel 表格文档中,或者一些笔记软件类(例如印象笔记)。像 Chrome 浏览器中的密码保存也可以归为这类工具。这样保存密码比起上边提到的「密码本」来说,确实方便了不少。用的时候随用随查就好了。但是,缺点也十分明显。账号和密码都是明文保存,没有进行二次加密。如果文件或者笔记泄露了,那么记录的所有密码就都泄露了。这样反而更加不安全。
专业的事情,就应该交给专业的人去做。 产品也是这样,「密码管理」 就应该交给专业的 「密码管理工具」 去做。之前我们针对不同平台设置了不同的密码,这些密码想要记住也并不是一件容易事,还好现在有许多专业密码管理工具可以帮助我们记住这些密码,并且还可以进行自动填充,以及跨平台使用等等。
这些常见的密码管理工具有:1Password、LastPass、Enpass、KeePass、Bitwarden。
密码管理软件的设计思路比较一致,你可以在软件中添加记录自己所有的密码,然后为软件设置一个主密码。你只需要掌握一个主密码,所有其他密码和重要信息都会被主密码保护,并且能安全快速的访问所有账号密码。同时,这些软件还增加了一些好用的功能。比如:
这几个软件具体的区别如下表所示:
工具 | 费用 | 加密方式 | 支持平台 | 数据存储位置 | 附件功能 | 同步功能 | 密码自动填充 |
---|---|---|---|---|---|---|---|
1Password | 个人:2.99 美元/月;家庭版:4.99 美元/月 | AES-256 算法加密 | Mac、iOS、Windows、Android 及主流浏览器 | 本地数据库模式 | 付费版可添加 | 支持 iCloud、Dropbox、1Password Account 同步、WiFi 同步、保险库文件同步 | 支持 |
LastPass | 个人:3 美元/月;家庭:4 美元/月 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android、Windows Phone 及主流浏览器 | LastPass 美国服务器线存储 | 可添加附件 | LastPass 美国服务器同步 | 支持 |
Enpass | PC 端免费;手机端收费:173 元/年 | 348 元/终身 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android 及主流浏览器 | 本地数据库模式 | 可添加附件 | 支持 iCloud 同步、Dropbox 同步、Google Drive 同步、OneDrive 同步、WebDAV、box 同步 | 支持 |
KeePass | 免费 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android 及主流浏览器 | 本地数据库模式 | 无法添加附件 | 支持 WebDAV、支持多种方式云同步(具体看软件) | 支持 |
Bitwarden | 普通版免费;个人:10 美元/年;家庭:40 美元/年 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android 及主流浏览器 | Bitwarden 服务器 | 无法添加附件 | Bitwarden 服务器同步 | 支持 |
我认为一个最好用的密码管理软件,需要做的这几点:
上面几款软件,做的最好的是 1Password,这也是用户口碑最好的密码管理软件。但是 1Password 改成付费订阅制之后,如果想要长期使用这款软件,又是一笔不小的持续性投入。当然如果是不差钱,追求体验的商务人士,优先选择 1Password。
1Password 之后的替代选项是 Enpass。Enpass 采用的是 PC 端免费,手机端收费的模式。与 1Password 不同的是,Enpass 除了订阅制之外,还增加了一次性购买的服务,以前便宜的时候是 9.9 美元/单一平台终身,现在改成了 348 元/全平台终身。手机端免费版支持 25 个密码存储,可以先下载体验一下,再考虑订阅购买或者直接买断。
LastPass 免费版不支持多设备同步。之前又因为国内应用商店下架,删除了中文语言,导致使用起来并不方便,所以不再考虑。
当然,不考虑付费的话,我们可以选择 KeePass。这是一款开源密码管理系统,最大的优点就是完全免费,各个平台也有不同开发者提供的相关软件。当然,KeePass 的缺点就是有一定的上手难度,不建议新手尝试。当然,如果你愿意折腾,学会使用之后也会很方便。
免费版的另一个推荐是 Bitwarden,开源,免费,跨平台,安全,好管理。不想折腾,又想免费,还想有个良好体验的,可以选择 Bitwarden。这里有个小问题,Bitwarden 的密码库是存储在 Bitwarden 服务器上的,虽说 Bitwarden 服务器存储的密码是经过 AES-256 算法加密的,保证了安全性,但是如果某一天 Bitwarden 倒闭了,或者服务器出问题了,那么我们的密码同步也可能会跟着受影响。不过好在 Bitwarden 还支持自定义部署。强烈建议有 NAS 或者服务器的朋友,在自己的私有服务器上部署 Bitwarden。
现在我们完成了个人密码体系的制定和管理,既保证了账号密码的安全性,又保证了使用的方便性。大大提高了日常中对密码的使用效率。
总的来说,你可以按自己记得住的规律 「设置密码」,然后借助软件为你 「加密保存、自动输入」,把应付密码的时间和精力省下来,去做别的更有价值和意义的事情。