- 本文首發(fā)于我的個(gè)人博客:「程序員充電站」
- 文章鏈接:「?jìng)魉烷T」
1. 前言
在我們的生活中,有各種網(wǎng)站、應(yīng)用都需要注冊(cè)和登錄。這些網(wǎng)絡(luò)訪問(wèn)通常需要 「賬戶」 + 「密碼」 的認(rèn)證方式,于是幾乎我們每個(gè)人手上都有幾十個(gè)甚至上百個(gè)賬號(hào)。
一般而言,我們?cè)O(shè)定和記住密碼的方式,就是生日、紀(jì)念日、姓名、身份證等等核心內(nèi)容,然后再加上特定規(guī)律。甚至為了便于記憶,很多人習(xí)慣只用一個(gè)常用的密碼。這是非常危險(xiǎn)的行為。因?yàn)橹灰幸粋€(gè)網(wǎng)站出現(xiàn)安全事故,密碼被泄露,那么幾乎所有注冊(cè)過(guò)的網(wǎng)站和服務(wù)都會(huì)淪陷。但如果使用多個(gè)密碼,又很可能因?yàn)槊艽a過(guò)多,在登錄的時(shí)候出現(xiàn)賬號(hào)和密碼對(duì)應(yīng)不上的情況,極為不便。
那我們應(yīng)該怎么設(shè)置密碼,才能做到相對(duì)安全,并且方便記憶和使用呢?
2. 密碼是如何被泄露的?
在考慮如何設(shè)置密碼前,我們先來(lái)討論一個(gè)問(wèn)題:我們的密碼是如何被泄露的?
一個(gè)賬號(hào)密碼的背后,往往涉及到大量的個(gè)人信息。如果一旦被泄露或者被破解,黑客會(huì)比你爸媽更加了解你自己。
通常來(lái)說(shuō),密碼泄露的位置主要有三個(gè)地方:本地、網(wǎng)絡(luò)傳輸、遠(yuǎn)程數(shù)據(jù)庫(kù)。
舉個(gè)例子:你在瀏覽器上某網(wǎng)站上輸入了賬號(hào)和密碼,這個(gè)賬號(hào)在你登錄之前,只存在于你 本地電腦 中。一旦你點(diǎn)擊了登錄按鈕,瀏覽器就會(huì)將你的登錄名和密碼打包成為一個(gè)登錄請(qǐng)求,發(fā)送給遠(yuǎn)程服務(wù)器。這個(gè)階段,你的密碼會(huì)在 網(wǎng)絡(luò)傳輸 過(guò)程中經(jīng)歷一段非常短暫的旅程。如果你是第一次注冊(cè),那么你的密碼還將會(huì)以某種形式存儲(chǔ)在該網(wǎng)站的 遠(yuǎn)程數(shù)據(jù)庫(kù) 中。
下面來(lái)說(shuō)一下這些常見(jiàn)的密碼泄露情況:
2.1 本地泄露
本地電腦上的密碼被泄露通常是因?yàn)殡娔X中病毒,被植入了惡意木馬,鍵盤收到惡意程序監(jiān)聽(tīng),黑客會(huì)在惡意程序后臺(tái),將你的個(gè)人信息發(fā)送到黑客自己的服務(wù)器中。
過(guò)去破解密碼常用的一種手法是使用鍵盤記錄器等工具,記錄下鍵盤的每一次操作,然后在后臺(tái)發(fā)給黑客。在曾經(jīng)網(wǎng)吧最紅火的年代,經(jīng)常有人在網(wǎng)吧電腦里安裝這類工具,用于盜取網(wǎng)吧其他玩家的游戲賬號(hào)密碼,偷走游戲里的裝備,或者虛擬 Q 幣。
2.2 網(wǎng)絡(luò)傳輸過(guò)程中泄露
網(wǎng)絡(luò)傳輸中的密碼被泄露可能是因?yàn)榫W(wǎng)站沒(méi)有有效的對(duì)密碼進(jìn)行加密,導(dǎo)致密碼明文傳輸,或者非加密傳輸,黑客通過(guò)一些工具,攔截登錄請(qǐng)求包,就能直接看到你的密碼。
在 WiFi 普及之后,黑客可以采用 WiFi 中間人攻擊的方式,偽造一個(gè)與合法 WiFi 接入點(diǎn)同名的無(wú)線信號(hào),騙用戶接入后,在用戶登錄的時(shí)候,偷走用戶的賬號(hào)密碼、郵箱、手機(jī)號(hào)等信息。
2.3 遠(yuǎn)程數(shù)據(jù)庫(kù)泄露
遠(yuǎn)程數(shù)據(jù)庫(kù)中的密碼被泄露,往往是因?yàn)槲覀兯褂玫木W(wǎng)絡(luò)服務(wù)提供商不可靠,對(duì)密碼明文保存,未經(jīng)二次加密,或者加密措施有漏洞,如果服務(wù)提供商的數(shù)據(jù)庫(kù)泄露(常稱為 「拖庫(kù)」),那么我們的密碼也會(huì)變得不再安全。
之前提到兩種密碼破解方式一次只能獲取一個(gè)賬號(hào)密碼的方式,對(duì)于黑客而言效率還是太低了。所以技術(shù)高明的黑客會(huì)選擇直接入侵網(wǎng)站的服務(wù)器,直接竊取存儲(chǔ)用戶賬號(hào)信息的數(shù)據(jù)庫(kù),一次性獲取數(shù)百萬(wàn)甚至上千萬(wàn)人的信息。比如 2011 年 12 月,CSDN 網(wǎng)站遭遇拖庫(kù),600 萬(wàn)用戶的賬號(hào)密碼被明文泄露。
更嚴(yán)重的是,拖庫(kù)還會(huì)影響你在互聯(lián)網(wǎng)上的其他賬戶。這是因?yàn)楹诳驮谕蠋?kù)之后,還會(huì)進(jìn)行 「洗庫(kù)」,將你的個(gè)人信息進(jìn)行變現(xiàn),比如盜取游戲裝備和虛擬 Q 幣。或者將你的身份信息變賣給垃圾廣告公司,之后你將會(huì)不斷地收到各種推銷騷擾電話。
最后,黑客還會(huì)利用你的賬號(hào)密碼信息進(jìn)行 「撞庫(kù)」,也就是拿著你的賬號(hào)密碼,去嘗試登陸其他網(wǎng)站,如果你多個(gè)平臺(tái)使用的都是一個(gè)賬號(hào)密碼的組合。那么,所造成的信息泄露和個(gè)人價(jià)值損失將不可估量。比如當(dāng)年的網(wǎng)易郵箱數(shù)據(jù)泄露,Dropbox 密碼外泄,都會(huì)引起連鎖的賬號(hào)安全問(wèn)題。
雖然因?yàn)槠脚_(tái)原因?qū)е碌男畔踩珕?wèn)題,我們好像看似無(wú)能為力,但是一旦了解到密碼是如何被破解和泄露的,將有助于我們更好的設(shè)定自己的密碼,從而使個(gè)人的賬號(hào)密碼更加安全。
基于這三個(gè)地方的密碼泄露問(wèn)題,我有一些關(guān)于密碼安全的建議如下:
- 盡量不在公共或有潛在安全風(fēng)險(xiǎn)的設(shè)備上進(jìn)行密碼操作;
- 技術(shù)不足的情況,盡量不要越獄,對(duì)設(shè)備不進(jìn)行 Root;
- 不安裝未知來(lái)源的(盜版)軟件。
- 不使用不可信的 WiFi 網(wǎng)絡(luò),特別是公共場(chǎng)合的陌生、免費(fèi) WiFi。
- 如果可能,使用 SSL 加密訪問(wèn)網(wǎng)站;
- 保持瀏覽器在最新版本;
- 檢查網(wǎng)站證書(shū)是否可信(一般瀏覽器都會(huì)有提示)。
3. 密碼制定要求和策略
3.1 密碼制定要求
總體來(lái)說(shuō),個(gè)人的密碼安全需要遵循以下幾個(gè)簡(jiǎn)單要求:
- 密碼長(zhǎng)度最好 8 位或以上,不宜過(guò)短 / 過(guò)于簡(jiǎn)單(例如:abc12345);
- 沒(méi)有明顯的組成規(guī)律,盡量不要與個(gè)人信息相關(guān)(例如生日、身份證號(hào));
- 盡可能的使用三種以上符號(hào),比如「字母」+「數(shù)字」+「特殊符號(hào)」組合;
- 按照平臺(tái)重要程度,將密碼進(jìn)行至少三級(jí)分類:普通密碼、重要密碼、安全密碼等等。
3.2 密碼級(jí)別分類
對(duì)于不同的平臺(tái),我們應(yīng)該使用不同的密碼,以免一個(gè)平臺(tái)賬號(hào)泄密,引起連鎖的賬號(hào)安全問(wèn)題。
一個(gè)較好的做法是:對(duì)不同的平臺(tái)按照重要程度進(jìn)行分類,不同重要程度的平臺(tái)使用不同層級(jí)的密碼。
對(duì)于支付寶、微信、網(wǎng)銀等涉及財(cái)產(chǎn)安全、可以信任的、安全的平臺(tái),設(shè)定為 「安全密碼」 級(jí)別;對(duì)于常用的網(wǎng)站、論壇、博客、云盤,設(shè)定為 「重要密碼」 級(jí)別;對(duì)于偶爾登錄的論壇、網(wǎng)站,或者一次性注冊(cè)登陸的賬號(hào),可以設(shè)置為 「普通密碼」 級(jí)別。如果自己對(duì)賬號(hào)還有其他需求,還可以設(shè)置更多級(jí)別的密碼,比如臨時(shí)給朋友分享的密碼可以設(shè)置為 「臨時(shí)密碼」 級(jí)別。
通過(guò)對(duì)不同重要程度的平臺(tái)的賬號(hào)密碼進(jìn)行分級(jí),這樣至少我們?cè)谛孤兑粋€(gè)密碼的時(shí)候,不會(huì)導(dǎo)致其他級(jí)別的密碼也跟著泄露,一定程度上保證了賬號(hào)安全。
此外,建議同一級(jí)別的密碼,也不要完全相同。推薦使用「基礎(chǔ)密碼」+「網(wǎng)站名稱」+「一套密碼變化規(guī)則」組合的方式,對(duì)同一級(jí)別不同平臺(tái)的密碼進(jìn)行不同的設(shè)定。這樣,即便是一個(gè)平臺(tái)的密碼泄露了,也不會(huì)導(dǎo)致這一級(jí)別其他賬號(hào)密碼泄露。當(dāng)然,一旦發(fā)生密碼泄露,最好的做法是立即修改本級(jí)別下的所有賬號(hào)密碼。
3.3 密碼制定方法
上邊我們講了密碼級(jí)別的分類,下邊我們來(lái)講解一下某一級(jí)別密碼的具體制定方法。
首先,密碼 「被破解難易」 跟密碼的 「長(zhǎng)度和難易程度」 正相關(guān)。所以,強(qiáng)烈建議大家使用高強(qiáng)度的密碼。比如 Dr4%*DyaZoHPz^
就是一個(gè)高強(qiáng)度的好密碼,只是記下來(lái)不大容易背。
網(wǎng)絡(luò)上的大神對(duì)制定密碼的策略和記憶密碼的方法有各種獨(dú)到有效的見(jiàn)解。比如下面幾個(gè):
利用詩(shī)詞的密碼:
Fhl3yjsd10000j
—— 烽火連三月,家書(shū)抵萬(wàn)金利用順口溜的密碼:
cptbtptpbcptdtptp
—— 吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮
但是詩(shī)詞和順口溜用的知道的人多了,也變得不那么安全了。那有什么方式,才能使密碼變得既安全,又方便記憶和使用呢?
我推薦使用 「基礎(chǔ)密碼」 + 「網(wǎng)站名稱」 + 「一套密碼變化規(guī)則」 組合的方式。
1. 選取一個(gè)基礎(chǔ)密碼
首先,我們要選擇一個(gè)基礎(chǔ)密碼。這個(gè)基礎(chǔ)密碼可以是一句詩(shī)句,也可以是一句話,保證盡可能無(wú)規(guī)則。比如:「大臉貓愛(ài)吃魚(yú)」,取其拼音首字母組成密碼:dlmacy
。
2. 對(duì)基礎(chǔ)密碼進(jìn)行一些變化
接下來(lái),我們要對(duì)基礎(chǔ)密碼進(jìn)行一些變化。比如:「改變字母大小寫」、增加「特殊數(shù)字」、「特殊字符」等等。
- 改變字母大小寫后:
DLMacy
- 增加特殊數(shù)字后:
DLMacy618
- 增加特殊字符后:
DLM#acy618
經(jīng)過(guò)這些變化之后,DLM#acy618
就成為了我們的基礎(chǔ)密碼,這也是一個(gè)強(qiáng)密碼。現(xiàn)在,這個(gè)密碼的被破解難度已經(jīng)很高了,但是還不夠好,我們還可以在這個(gè)基礎(chǔ)上,增加不同網(wǎng)站的名稱,為密碼增加一些變化。
3. 不同網(wǎng)站增加變化
不同網(wǎng)站應(yīng)該增加不同的變化。比如:
-
DLM#acy*Zfb618
:中間加了*Zfb
,代表支付寶。 -
DLM#acy*Zh618
:中間加了*Zh
,代表知乎。
4. 增加密碼變化規(guī)則
上邊對(duì)不同網(wǎng)站簡(jiǎn)單增加了一些小變化,但是根據(jù)一個(gè)網(wǎng)站密碼還是可以間接猜測(cè)到其他平臺(tái)密碼(可能性較小)。如果為了更加保險(xiǎn),我們可以對(duì)「不同網(wǎng)站變化」的部分,再增加一層加密。比如對(duì)字母進(jìn)行移位運(yùn)算。假設(shè)我們自定義的規(guī)律為:(字母 - 3) % 26
,即每個(gè)字母向前移動(dòng)三位。比如 Z
向前移動(dòng)三位是 W
,h
向前移動(dòng)三位是 e
。那么 Zh
就變成了We
,Zfb
就變成了 Wcy
。這樣一來(lái),我們的密碼就變成了這樣:
-
DLM#acy*Wcy618
:支付寶密碼 -
DLM#acy*We618
:知乎密碼
到此為止,我們的密碼制定就結(jié)束了。單就密碼而言, DLM#acy*Wcy618
怎么看也不像是一個(gè)好記的密碼。我們?cè)谳斎朊艽a的時(shí)候,可以這樣提示自己:「大臉貓愛(ài)吃魚(yú)」、「特殊字符」、「字母移位」、「特殊數(shù)字」。多練幾次,自然而然就記住了這套密碼體系。
這套密碼用的是強(qiáng)密碼,不同平臺(tái)之間的密碼既有規(guī)律,又有唯一性,安全性已經(jīng)得到了保障。在輸入密碼的時(shí)候,也不需要再隨性地思考自己用的是什么密碼了。
這樣我們就得到了一套既安全,又方便記憶的密碼體系。但是似乎使用起來(lái)還不是那么方便。
因?yàn)槊看问褂玫臅r(shí)候,我們要先考慮平臺(tái)的密碼等級(jí),然后再想想自己的密碼制定規(guī)則,最后如果密碼過(guò)于復(fù)雜的話,輸入還容易出錯(cuò)。那么有什么方法,能使我們的密碼使用起來(lái)更加方便呢?
答案是:使用 「密碼管理工具」。
4. 使用密碼管理工具
說(shuō)起密碼管理工具,最原始的管理工具是:「密碼本」。就是將個(gè)人的賬號(hào)密碼記錄在某一頁(yè)紙上,好好保存起來(lái),等到忘記密碼的時(shí)候拿出來(lái)看看。這種方式看起來(lái)十分原始,但至少?gòu)奈锢砩媳WC了密碼的安全性。只要沒(méi)有人知道你的密碼本放在哪里,那么它就是安全的。當(dāng)然這種方法的缺點(diǎn)也很明顯,一個(gè)是記錄起來(lái)比較麻煩,二是使用起來(lái)也不太方便。比如說(shuō)我在公司需要登錄一個(gè)賬號(hào)密碼,結(jié)果記錄賬號(hào)密碼的本子落在了家里這種情況。
「密碼本」的升級(jí)密碼管理工具是 「電子文檔」。其實(shí)就是將以前存在紙上的賬號(hào)密碼保存在了 Excel 表格文檔中,或者一些筆記軟件類(例如印象筆記)。像 Chrome 瀏覽器中的密碼保存也可以歸為這類工具。這樣保存密碼比起上邊提到的「密碼本」來(lái)說(shuō),確實(shí)方便了不少。用的時(shí)候隨用隨查就好了。但是,缺點(diǎn)也十分明顯。賬號(hào)和密碼都是明文保存,沒(méi)有進(jìn)行二次加密。如果文件或者筆記泄露了,那么記錄的所有密碼就都泄露了。這樣反而更加不安全。
專業(yè)的事情,就應(yīng)該交給專業(yè)的人去做。 產(chǎn)品也是這樣,「密碼管理」 就應(yīng)該交給專業(yè)的 「密碼管理工具」 去做。之前我們針對(duì)不同平臺(tái)設(shè)置了不同的密碼,這些密碼想要記住也并不是一件容易事,還好現(xiàn)在有許多專業(yè)密碼管理工具可以幫助我們記住這些密碼,并且還可以進(jìn)行自動(dòng)填充,以及跨平臺(tái)使用等等。
這些常見(jiàn)的密碼管理工具有:1Password、LastPass、Enpass、KeePass、Bitwarden。
密碼管理軟件的設(shè)計(jì)思路比較一致,你可以在軟件中添加記錄自己所有的密碼,然后為軟件設(shè)置一個(gè)主密碼。你只需要掌握一個(gè)主密碼,所有其他密碼和重要信息都會(huì)被主密碼保護(hù),并且能安全快速的訪問(wèn)所有賬號(hào)密碼。同時(shí),這些軟件還增加了一些好用的功能。比如:
- 跨平臺(tái)同步:你可以在多個(gè)不同設(shè)備(Mac、Windows、Linux、iOS、Android 等)之間無(wú)縫同步。
- 自動(dòng)填充:不用再手動(dòng)輸入密碼,一鍵自動(dòng)輸入。
- 自動(dòng)生成密碼:不用自己考慮怎么制定密碼,軟件自動(dòng)生成強(qiáng)密碼。
- 附件功能:可以添加文檔/文件,以及將其他的各種會(huì)員信息、社保號(hào)碼、路由器密碼、駕照護(hù)照、證件復(fù)印件交給密碼管理器保管。
這幾個(gè)軟件具體的區(qū)別如下表所示:
工具 | 費(fèi)用 | 加密方式 | 支持平臺(tái) | 數(shù)據(jù)存儲(chǔ)位置 | 附件功能 | 同步功能 | 密碼自動(dòng)填充 |
---|---|---|---|---|---|---|---|
1Password | 個(gè)人:2.99 美元/月;家庭版:4.99 美元/月 | AES-256 算法加密 | Mac、iOS、Windows、Android 及主流瀏覽器 | 本地?cái)?shù)據(jù)庫(kù)模式 | 付費(fèi)版可添加 | 支持 iCloud、Dropbox、1Password Account 同步、WiFi 同步、保險(xiǎn)庫(kù)文件同步 | 支持 |
LastPass | 個(gè)人:3 美元/月;家庭:4 美元/月 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android、Windows Phone 及主流瀏覽器 | LastPass 美國(guó)服務(wù)器線存儲(chǔ) | 可添加附件 | LastPass 美國(guó)服務(wù)器同步 | 支持 |
Enpass | PC 端免費(fèi);手機(jī)端收費(fèi):173 元/年 | 348 元/終身 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android 及主流瀏覽器 | 本地?cái)?shù)據(jù)庫(kù)模式 | 可添加附件 | 支持 iCloud 同步、Dropbox 同步、Google Drive 同步、OneDrive 同步、WebDAV、box 同步 | 支持 |
KeePass | 免費(fèi) | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android 及主流瀏覽器 | 本地?cái)?shù)據(jù)庫(kù)模式 | 無(wú)法添加附件 | 支持 WebDAV、支持多種方式云同步(具體看軟件) | 支持 |
Bitwarden | 普通版免費(fèi);個(gè)人:10 美元/年;家庭:40 美元/年 | AES-256 算法加密 | Mac、iOS、Windows、 Linux、Android 及主流瀏覽器 | Bitwarden 服務(wù)器 | 無(wú)法添加附件 | Bitwarden 服務(wù)器同步 | 支持 |
我認(rèn)為一個(gè)最好用的密碼管理軟件,需要做的這幾點(diǎn):
- 最好使用本地?cái)?shù)據(jù)庫(kù)存儲(chǔ);
- 最好使用安全的加密手段,例如 AES-256 算法加密,端對(duì)端加密;
- 最好可以自定義云同步,而非使用軟件官方服務(wù)器存儲(chǔ);
- 跨平臺(tái)設(shè)備支持越多越好;
- 支持自動(dòng)填充;
- 使用方式要簡(jiǎn)單,體驗(yàn)要友好。
- 最好免費(fèi),其次是一次性購(gòu)買后可永久使用,最差是付費(fèi)訂閱制。
上面幾款軟件,做的最好的是 1Password,這也是用戶口碑最好的密碼管理軟件。但是 1Password 改成付費(fèi)訂閱制之后,如果想要長(zhǎng)期使用這款軟件,又是一筆不小的持續(xù)性投入。當(dāng)然如果是不差錢,追求體驗(yàn)的商務(wù)人士,優(yōu)先選擇 1Password。
1Password 之后的替代選項(xiàng)是 Enpass。Enpass 采用的是 PC 端免費(fèi),手機(jī)端收費(fèi)的模式。與 1Password 不同的是,Enpass 除了訂閱制之外,還增加了一次性購(gòu)買的服務(wù),以前便宜的時(shí)候是 9.9 美元/單一平臺(tái)終身,現(xiàn)在改成了 348 元/全平臺(tái)終身。手機(jī)端免費(fèi)版支持 25 個(gè)密碼存儲(chǔ),可以先下載體驗(yàn)一下,再考慮訂閱購(gòu)買或者直接買斷。
LastPass 免費(fèi)版不支持多設(shè)備同步。之前又因?yàn)閲?guó)內(nèi)應(yīng)用商店下架,刪除了中文語(yǔ)言,導(dǎo)致使用起來(lái)并不方便,所以不再考慮。
當(dāng)然,不考慮付費(fèi)的話,我們可以選擇 KeePass。這是一款開(kāi)源密碼管理系統(tǒng),最大的優(yōu)點(diǎn)就是完全免費(fèi),各個(gè)平臺(tái)也有不同開(kāi)發(fā)者提供的相關(guān)軟件。當(dāng)然,KeePass 的缺點(diǎn)就是有一定的上手難度,不建議新手嘗試。當(dāng)然,如果你愿意折騰,學(xué)會(huì)使用之后也會(huì)很方便。
免費(fèi)版的另一個(gè)推薦是 Bitwarden,開(kāi)源,免費(fèi),跨平臺(tái),安全,好管理。不想折騰,又想免費(fèi),還想有個(gè)良好體驗(yàn)的,可以選擇 Bitwarden。這里有個(gè)小問(wèn)題,Bitwarden 的密碼庫(kù)是存儲(chǔ)在 Bitwarden 服務(wù)器上的,雖說(shuō) Bitwarden 服務(wù)器存儲(chǔ)的密碼是經(jīng)過(guò) AES-256 算法加密的,保證了安全性,但是如果某一天 Bitwarden 倒閉了,或者服務(wù)器出問(wèn)題了,那么我們的密碼同步也可能會(huì)跟著受影響。不過(guò)好在 Bitwarden 還支持自定義部署。強(qiáng)烈建議有 NAS 或者服務(wù)器的朋友,在自己的私有服務(wù)器上部署 Bitwarden。
5. 總結(jié)
現(xiàn)在我們完成了個(gè)人密碼體系的制定和管理,既保證了賬號(hào)密碼的安全性,又保證了使用的方便性。大大提高了日常中對(duì)密碼的使用效率。
總的來(lái)說(shuō),你可以按自己記得住的規(guī)律 「設(shè)置密碼」,然后借助軟件為你 「加密保存、自動(dòng)輸入」,把應(yīng)付密碼的時(shí)間和精力省下來(lái),去做別的更有價(jià)值和意義的事情。