
想知道為什么你的帳號密碼老被盜嗎?解密千萬密碼的背后
對于密碼,我們已經(jīng)知道了不少。比如,多數(shù)密碼短小、簡單、且容易破解。但我們對一個人選擇某個密碼的心理原因卻所知甚少。在本文中,我們分析了包括企業(yè)CEO、科學(xué)家在內(nèi)的1000萬人們的密碼選擇,來看看密碼背后所揭示的意義。
1000萬個小窗口
你腦海中浮現(xiàn)出的第一個超級英雄是誰?從1到10你首先會想到哪個數(shù)字?最后一個問題,你會選擇哪種鮮艷的色彩?快速想出答案,然后將它們組合成一個短語。
現(xiàn)在,輪到我們猜測這個密碼了。
是Superman7red?不對不對。那是Batman30range?如果我們都能正確地猜到每個問題的答案,那是因為人類是可預(yù)知的。而這恰恰就是密碼存在的問題。我們在選擇這些密碼時確實很小心謹(jǐn)慎,但跟已成產(chǎn)業(yè)規(guī)模且特意構(gòu)建的密碼破解軟件相比,未免小巫見大巫。比如HashCat可以在一秒時間內(nèi)猜測30萬次密碼(次數(shù)取決于哈希方式),因此即使你的密碼是Hawkeye6yellow,也遲早會被破解。
密碼之所以經(jīng)常會被猜中,是因為我們很多人會想到顯而易見的詞語、數(shù)字并將它們簡單組合。本文探索了這個概念,并借此了解當(dāng)人們以特定的順序組合詞語、數(shù)字及(希望如此)符號時,大腦是如何運作的。
我們首先選擇了兩個數(shù)據(jù)集進(jìn)行分析。
兩個數(shù)據(jù)集,幾個說明
第一個數(shù)據(jù)集我們稱之為“Gmaildump”,它是2014年9月出現(xiàn)在俄羅斯比特幣論壇上的500萬個憑證。這些憑證似乎是Gmail賬戶(有一些是Yandex.ru),但經(jīng)過進(jìn)一步的調(diào)查發(fā)現(xiàn),雖然其中的郵件地址多為有效的Gmail地址,但大多數(shù)明文密碼或者老舊不再被使用或者密碼跟郵箱地址不匹配。但WordPress.com重設(shè)了10萬個賬戶并表示還有60萬個賬戶存在風(fēng)險。盡管這些數(shù)據(jù)是在幾年時間里通過多種方式從多個地方收集起來的密碼,但對于我們的學(xué)術(shù)研究來講,絲毫沒有問題。而且這些密碼曾被Gmail賬戶擁有者使用過,即使不是他們自己在使用,并且鑒于98%的密碼不再有效,我們可以安全地一探究竟。
我們利用這些數(shù)據(jù)集回答一些人口統(tǒng)計學(xué)的問題(尤其是與密碼選擇有關(guān)的性別及年齡問題)。我們從500萬個郵件地址中提取出了包含名字及出生日期的地址。比如,如果郵件地址是John.Smith1984@gmail.com,那么我們就會解讀為男性,出生于1984年。我們從500萬個地址中解讀出了48.5萬個性別、22萬個年齡。這時候,我們就應(yīng)該想一個問題,“這些將名字跟出生日期包含在郵件地址中的人會選擇跟別人不同的密碼嗎?”因為從理論上來講答案有可能是肯定的。我們稍后分析。
如下,我們按照出生日期跟性別對用戶進(jìn)行了分類。
22萬被攻陷憑證(按出生日期分類)
48.5萬被攻陷憑證(按性別分類)
Gmail dump顯示,或者至少是將名字跟/或出生日期包含在郵件地址中的人群多為80后男性。這可能是因為這些被攻陷網(wǎng)站的人口概況導(dǎo)致的。在這個dump中查找包含“+”標(biāo)志(Gmail用戶用來追蹤站點對郵件地址的用途)的地址后發(fā)現(xiàn),大量憑證來自File Dropper、eHarmony、以及Friendster。
我們的多數(shù)結(jié)果是通過第二個數(shù)據(jù)集收集到的,詳情可參見安全咨詢Mark Burnett的網(wǎng)站。這個數(shù)據(jù)集由100萬個密碼組成,它們是在幾年的時間里從網(wǎng)絡(luò)中搜刮到的。
我們不會花費太長時間來說明這個數(shù)據(jù)集的基礎(chǔ)概念,因為之前已有不少人做過很多次這種工作。讓我們看一下這1000萬個數(shù)據(jù)中最為常用的50種密碼。然后我們再討論一些更加有趣的東西。
50種最常用的密碼
我們可以發(fā)現(xiàn),或者早就知道,這些最為常見的密碼都是網(wǎng)站要求人們創(chuàng)建密碼時,瞬間映入腦海的選擇。這些密碼極其容易記住而且對于字典攻擊來說簡直是小菜一碟。不過,現(xiàn)在使用這種密碼的人比之前要少。用戶有點意識到如何設(shè)置強密碼的問題了。比如在文本后添加一兩個數(shù)字就會讓強度提高,是不是?
“我會添加一個數(shù)字讓密碼更安全?!?/span>
42萬密碼末尾中最常用的數(shù)字(0-99)
密碼末尾最常用的數(shù)字(0-99)
密碼末尾最不常用的數(shù)字(0-99)
在這1000萬個密碼中,幾乎有50萬密碼(或42萬密碼,8.4%)以0-99的數(shù)字結(jié)尾。其中超過1/5的人選擇了1。或許他們認(rèn)為1最容易記住。也可能是因為網(wǎng)站要求在已選詞語之后添加一個數(shù)字做出的即時反應(yīng)。其他最常見的數(shù)字是2、3、12(這里的“12”是1跟2的組合,而不是單獨一個數(shù)字)、7等等。有研究顯示,當(dāng)有人讓你說出1到10中的一個數(shù)字時,多數(shù)人會說3跟7,而且人們似乎對質(zhì)數(shù)的選擇存在偏好。這可能行得通。但也有可能人們是為了用這些個位數(shù)替代曾使用過且還想繼續(xù)使用的密碼,這樣就不會“攻陷”在其他網(wǎng)站上的憑證了。
盡管存在爭議,但你可以想想,一個密碼破解高手可以輕易將一個數(shù)字或幾千個數(shù)字添加到字典里或者蠻力破解方式中。所以,一個密碼的強度就取決于它的熵。
評估密碼熵
簡單來說,密碼的熵越大,強度就越大。熵會隨著密碼長度及字符變化而增加。然而,雖然字符變化確實會影響熵的分值(以及密碼被猜到的難度),但密碼的長度更為重要。這是因為隨著密碼長度增加,數(shù)字的組合方式會呈指數(shù)式增長,因此也就難以被猜到。
48.5萬密碼長度的分類
Gmail dump中的密碼平均長度為8個字符(如password),而且男性與女性在密碼平均長度的選擇上沒有太大差別。
48.5萬個男性跟女性密碼的熵
從密碼熵的角度來講,Gmaildump的密碼平均熵為21.6。而男性跟女性在這一點上的區(qū)別也非常微小。但熵為0的密碼要多于熵超過60的密碼。
這些示例密碼以一兩個不同字符區(qū)分作為熵的范圍。一般來講,熵會隨著長度的變化而變化,不過添加數(shù)字、大寫字母及符號也會增加字符的范圍。
那么,熵是如何計算出來的?方法很多,而且效果各異。不過最為基本的假設(shè)是,只能通過嘗試字符的每種組合才會猜到密碼。但一種更加聰明的方法意識到人類對模式情有獨鐘,所以針對人類的多數(shù)密碼進(jìn)行了某些假設(shè)。隨后基于這些假設(shè)制定一些猜測密碼的規(guī)則,從從而加快破解密碼的速度。這些方法都很聰明。它們都是由Dan Wheeler創(chuàng)建的Zxcvbn而來。
簡單來說,熵構(gòu)建了一種“知識”,可以知道人們是如何在潛意識中將密碼中的模式包含到一個密碼破解高手需要確定這些模式的猜測中。比如,password的熵為37.6位。但Zxcvbn給出的分?jǐn)?shù)是0(最低最差勁的熵分?jǐn)?shù)),因為密碼破解者所用的詞匯表包含password這個詞。另外Zxcvbn也給另外一些常用密碼打分:第一眼看上去,這些密碼是隨機(jī)設(shè)置的,但熵值為0。比如qaz2wsx(在最常用的密碼中排名30)看起來非常具有隨機(jī)性是吧?但實際上它是一種鍵盤模式(從一個鍵重復(fù)“走”到另一個鍵很容易)。而Zxcvbn本身也是通過這種模式命名的。
我們從1000萬個密碼數(shù)據(jù)集中提取出了20中最常見的鍵盤模式,但并未包含123456等數(shù)字模式,因為這些模式只是一種鍵盤步法,而且它們已經(jīng)占據(jù)最常用密碼列表的半壁江山,在這里我們來看看更有趣的密碼。
在這20種鍵盤模式中,有19種如你所想的那樣可被猜到,除了最后一個Adgjmptw。你能猜到為什么會把它列到最常用的模式中嗎?
試試智能手機(jī)上從2到9的撥號薄,將每個鍵盤數(shù)字對應(yīng)的第一個字母進(jìn)行組合。這個模式引出一個有趣的問題:隨著更多的人會通過觸摸設(shè)備創(chuàng)建密碼讓選擇某些字符比使用普通的鍵盤更難,密碼選擇是如何改變的呢?
當(dāng)然,對于鍵盤模式來說,尤其是上述鍵盤模式對于密碼破解高手來講并非難事。但多數(shù)人并不會使用鍵盤模式,而是會使用古典的且經(jīng)常不安全的方式即隨機(jī)詞語來作為密碼。
1000萬密碼中最常見的詞語選擇
現(xiàn)在,你知道為什么文章開頭會猜Batman及Superman了吧:它們是這1000萬密碼數(shù)據(jù)集中最常用的超級英雄名字。但上述列表中反映出的一個重要事實是,有時候很難知道人們在選擇密碼時是基于什么考慮。比如在“顏色”列表中,black有時候可能指的是姓氏Black。為了減少這個問題的困擾,我們在統(tǒng)計上述詞語頻率時,對每個列表都進(jìn)行了單獨的研究。比如,對于“顏色”來說,只有當(dāng)密碼以顏色開頭并且以數(shù)字或記號結(jié)尾時,我們才會統(tǒng)計進(jìn)來。這樣就會避免在Alfred中統(tǒng)計red等。通過這種方式意味著我們錯過了很多合法的顏色名稱,但知道上面的列表只包含“限定詞”似乎更好。其它列表中也有各自的規(guī)則。比如,只有當(dāng)所使用的名詞跟動詞出現(xiàn)在我們平常使用的詞語中排名前1000時,我們才會統(tǒng)計它們,否則這些列表會充滿諸如password等名詞以及l(fā)ove等動詞了。
并不是說love這個詞不好,其實人們以驚人的頻率使用它作為密碼的一部分。我們在1000萬個密碼中發(fā)現(xiàn)了4萬次,在500萬個Gmail憑證中也發(fā)現(xiàn)很多。而且通過分析用戶名時,80后及90后使用的次數(shù)要比其他年代的人多。而且女性使用love的頻率是男性的兩倍。
按出生年代劃分的“Love”使用情況
土豪、高端人士們都使用哪些密碼?
Mark Burnett指出,密碼泄露極其嚴(yán)重。我們感到好奇的是,Gmail數(shù)據(jù)是如何確定高級別人群的呢?換句話說,這些被公開的密碼是誰的?我們通過Full Contact的人物API提取出一個郵件地址列表并且通過幾家主要的社交網(wǎng)絡(luò)站點如Twitter、LinkedIn及Google+運行這些地址。此外,它還提供了一些所找到的數(shù)據(jù)點如年齡、性別及職業(yè)。
我們已經(jīng)知道可從Gmaildump中找到一些高級別人士。不過我們沒有想到Full Contact會列出這么多人。
在我們所找到的7.8萬個匹配中,我們發(fā)現(xiàn)了上千名高級別人士。我們選擇了最有名的40位。有幾個點需要注意:
1、我們有意沒有指出這些人的名字。
2、公司logo只是表示這些人現(xiàn)在的工作地點,但不意味著他們在之前單位工作時也用了相同的密碼。
3、我們無法知道這些密碼最初的用途??赡苁撬麄冏约旱膫€人Gmail密碼,但作為File Dropper等網(wǎng)站密碼的可能性更大。因此,許多弱密碼并不意味著這些人現(xiàn)在在工作場所或其他場所也使用這些密碼。
谷歌確認(rèn)當(dāng)這些列表被公布時,少于2%(10萬)的密碼可能跟所使用的Gmail地址匹配。而且所有受影響的賬戶所有者被要求重設(shè)密碼。換句話說,下面的密碼雖然具有教育意義,但不再被使用。他們可能換了其它密碼,希望這些密碼更安全吧。
然而,如果這些密碼沒有被重設(shè),就更該引起人們的重視了。一些研究指出許多人會在不同的服務(wù)中使用相同的密碼。而且鑒于下表涉及一些CEO、很多記者、一名Justin Bieber及Ariana Grande天才管理公司的身居高位的人士,這個dump可能會引發(fā)一些關(guān)注。希望不會出現(xiàn)這種情況,不過現(xiàn)在這種情況也不會出現(xiàn)了。
從上面密碼中可看到,如果使用離線破解進(jìn)程,很多密碼都非常容易猜到。最強的密碼屬于一名GitHub開發(fā)人員(ns8vfpobzmx098bf4co),熵為96,密碼看起來太具有隨機(jī)性了,可能是用隨機(jī)密碼生成器或密碼管理器生成的。最弱的密碼屬于IBM一名高級管理(123456),看起來太基礎(chǔ),可能是在某個地方隨機(jī)注冊設(shè)置的。其它很多人都在復(fù)雜度及簡單度上做了平衡,看得出公司所有人非常重視密碼安全問題。
在文末,我們來說說幾個很有趣的點:
美國國務(wù)院處長使用linco1n(Lincoln)作為密碼,而Huffington Post的作家使用trustno1作為密碼。更有意思的是,這么多高級別人士所做的跟我們當(dāng)中的很多人沒有什么兩樣:將姓名、出生日期、簡單詞語跟一組數(shù)字組合成一個糟糕的密碼。但我們覺得這也是情有可原的。即使是美國總統(tǒng)奧巴馬最近也承認(rèn)自己曾使用1234567作為密碼。熵值更高的一個密碼是PoTuS.1776。然而對于一個聰明的破解者來說,這也有點太顯而易見了。
那么,你的密碼如何呢?在讀這篇文章的時候,你可能會想到自己,“會有人猜到我的網(wǎng)上銀行密碼、郵件密碼或博客密碼嗎?”如果你使用的是大的郵件提供商如Gmail,你不必太擔(dān)心你的密碼會被蠻力破解。Gmail會立即阻止非法嘗試行為。你的在線銀行密碼也得到了類似的保護(hù)。但是如果你有博客,情況就復(fù)雜了,因為攻擊者會有更多方法來入侵,所以每個人都應(yīng)該采取主動防御措施。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
訓(xùn)練與驗證損失驟升:機(jī)器學(xué)習(xí)訓(xùn)練中的異常診斷與解決方案 在機(jī)器學(xué)習(xí)模型訓(xùn)練過程中,“損失曲線” 是反映模型學(xué)習(xí)狀態(tài)的核心指 ...
2025-09-19解析 DataHub 與 Kafka:數(shù)據(jù)生態(tài)中兩類核心工具的差異與協(xié)同 在數(shù)字化轉(zhuǎn)型加速的今天,企業(yè)對數(shù)據(jù)的需求已從 “存儲” 轉(zhuǎn)向 “ ...
2025-09-19CDA 數(shù)據(jù)分析師:讓統(tǒng)計基本概念成為業(yè)務(wù)決策的底層邏輯 統(tǒng)計基本概念是商業(yè)數(shù)據(jù)分析的 “基礎(chǔ)語言”—— 從描述數(shù)據(jù)分布的 “均 ...
2025-09-19CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-19SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11